KR20170079427A - 불휘발성 메모리 모듈을 포함하는 메모리 시스템 및 전자 장치 - Google Patents

불휘발성 메모리 모듈을 포함하는 메모리 시스템 및 전자 장치 Download PDF

Info

Publication number
KR20170079427A
KR20170079427A KR1020150189986A KR20150189986A KR20170079427A KR 20170079427 A KR20170079427 A KR 20170079427A KR 1020150189986 A KR1020150189986 A KR 1020150189986A KR 20150189986 A KR20150189986 A KR 20150189986A KR 20170079427 A KR20170079427 A KR 20170079427A
Authority
KR
South Korea
Prior art keywords
memory
memory chips
module
ecc
chips
Prior art date
Application number
KR1020150189986A
Other languages
English (en)
Other versions
KR102407437B1 (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 KR1020150189986A priority Critical patent/KR102407437B1/ko
Priority to US15/393,844 priority patent/US9952789B2/en
Publication of KR20170079427A publication Critical patent/KR20170079427A/ko
Application granted granted Critical
Publication of KR102407437B1 publication Critical patent/KR102407437B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0634Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/02Disposition of storage elements, e.g. in the form of a matrix array
    • G11C5/04Supports for storage elements, e.g. memory modules; Mounting or fixing of storage elements on such supports
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/12Apparatus or processes for interconnecting storage elements, e.g. for threading magnetic cores
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/35Unequal or adaptive error protection, e.g. by providing a different level of protection according to significance of source information or by adapting the coding according to the change of transmission channel characteristics
    • H03M13/356Unequal error protection [UEP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction

Abstract

메모리 시스템은 불휘발성 메모리 모듈 및 메모리 컨트롤러를 포함한다. 불휘발성 메모리 모듈은 인쇄 회로 기판 상에 순차적으로 배치되고, 복수의 불휘발성 메모리 셀들을 포함하며, 동작 메모리로서 사용되는 메모리 모드 및 데이터 저장 공간으로서 사용되는 저장 모드 중의 하나로 동작하는 복수의 메모리 칩들, 및 인쇄 회로 기판 상에 배치되고, 복수의 메모리 칩들의 동작을 제어하는 모듈 컨트롤러를 포함한다. 메모리 컨트롤러는 불휘발성 메모리 모듈에 대해 기입 동작 및 독출 동작을 수행하고, 불휘발성 메모리 모듈과 송수신되는 데이터에 대해 제1 ECC 동작을 수행한다. 또한, 복수의 메모리 칩들의 동작 모드에 기초하여 복수의 메모리 칩들 및 모듈 컨트롤러 중의 하나가 복수의 메모리 칩들에 저장되는 데이터에 대해 제2 ECC 동작을 수행한다.

Description

불휘발성 메모리 모듈을 포함하는 메모리 시스템 및 전자 장치 {MEMORY SYSTEM AND ELECTRONIC DEVICE INCLUDING NON-VOLATILE MEMORY MODULE}
본 발명은 반도체 메모리 장치에 관한 것으로, 보다 상세하게는 불휘발성 메모리 모듈을 포함하는 메모리 시스템 및 전자 장치에 관한 것이다.
데이터를 저장하기 위한 반도체 메모리 장치는 크게 휘발성(volatile) 반도체 메모리 장치와 비휘발성(non-volatile) 반도체 메모리 장치로 구분될 수 있다. 휘발성 반도체 메모리 장치는 커패시터의 충전 또는 방전에 의해 데이터가 저장된다. DRAM(Dynamic Random Access Memory), SRAM(Static Random Access Memory) 등의 휘발성 반도체 메모리 장치는 전원이 인가되는 동안 저장된 데이터가 유지되며, 전원이 차단되면 데이터는 손실된다. 휘발성 메모리 장치는 주로 컴퓨터 등의 메인 메모리 장치로 사용된다.
비휘발성 반도체 메모리 장치는 전원이 차단되어도 데이터를 저장할 수 있다. 플래시 메모리 등의 비휘발성 반도체 메모리 장치는 컴퓨터, 휴대용 통신기기 등 넓은 범위의 응용 기기에서 프로그램 및 데이터를 저장하는 저장 매체로서 사용된다.
반도체 메모리 장치의 고용량화, 고속화 및 저전력화의 요구에 따라, DRAM의 고집적성과 낮은 소비 전력, 플래시 메모리의 비휘발성, SRAM의 고속 동작을 모두 구현할 수 있는 차세대 메모리 장치들이 연구되고 있다. 현재 각광을 받고 있는 차세대 메모리 장치로서는 상변화 물질을 이용하는 PRAM(Phase Change Random Access Memory), 전이금속 산화물 등의 가변저항 특성을 갖는 물질을 이용한 RRAM(Resistance Random Access Memory)과 강자성 물질을 이용한 MRAM(Magnetic Random Access Memory) 등이 있다. 차세대 메모리 장치를 구성하는 물질들의 공통점은 전류 또는 전압의 크기 및/또는 방향에 따라서 그 저항값이 가변되며, 전류 또는 전압이 차단되어도 그 저항 값을 그대로 유지하는 비휘발성 특성을 가지며 리프레쉬가 필요 없다는 것이다.
이러한 저항성 메모리 장치에서, 단위 메모리 셀은 적어도 하나의 저항 소자와 적어도 하나의 스위칭 소자로 이루어질 수 있고, 메모리 셀들에 연결된 워드라인과 비트라인의 전류 또는 전압을 제어하여 각 저항 소자의 저항값을 변경함으로써 데이터를 저장한다.
이와 같은 저항성 메모리 장치의 장점으로 인해, 최근에는 저항성 메모리 장치를 이용한 불휘발성 메모리 모듈에 대한 연구가 활발히 진행되고 있다.
상기와 같은 문제점을 해결하기 위한 본 발명의 일 목적은 다양한 모드로 동작하면서 에러 체크 및 정정(Error Check and Correction; ECC) 동작을 효과적으로 수행할 수 있는 불휘발성 메모리 모듈을 포함하는 메모리 시스템을 제공하는 것이다.
본 발명의 다른 목적은 상기 불휘발성 메모리 모듈을 포함하는 전자 장치를 제공하는 것이다.
상술한 본 발명의 일 목적을 달성하기 위하여, 본 발명의 일 실시예에 따른 메모리 시스템은 불휘발성 메모리 모듈 및 메모리 컨트롤러를 포함한다. 상기 불휘발성 메모리 모듈은 인쇄 회로 기판(Printed Circuit Board, PCB) 상에 순차적으로 배치되고, 복수의 불휘발성 메모리 셀들을 포함하며, 동작 메모리로서 사용되는 메모리 모드 및 데이터 저장 공간으로서 사용되는 저장 모드 중의 하나로 동작하는 복수의 메모리 칩들, 및 상기 인쇄 회로 기판 상에 배치되고, 상기 복수의 메모리 칩들의 동작을 제어하는 모듈 컨트롤러를 포함한다. 상기 메모리 컨트롤러는 상기 불휘발성 메모리 모듈에 대해 기입 동작 및 독출 동작을 수행하고, 상기 불휘발성 메모리 모듈과 송수신되는 데이터에 대해 제1 에러 체크 및 정정(Error Check and Correction; ECC) 동작을 수행한다. 또한, 상기 복수의 메모리 칩들의 동작 모드에 기초하여 상기 복수의 메모리 칩들 및 상기 모듈 컨트롤러 중의 하나가 상기 복수의 메모리 칩들에 저장되는 데이터에 대해 제2 ECC 동작을 수행한다.
일 실시예에 있어서, 상기 메모리 컨트롤러는, 상기 기입 동작 시, 기입 데이터에 대한 ECC 코드를 생성하고, 상기 기입 데이터 및 상기 ECC 코드를 상기 모듈 컨트롤러에 제공하고, 상기 독출 동작 시, 상기 모듈 컨트롤러로부터 독출 데이터 및 상기 ECC 코드를 수신하고, 상기 ECC 코드에 기초하여 상기 독출 데이터의 에러를 검출하고 정정할 수 있다.
상기 불휘발성 메모리 모듈은, 상기 인쇄 회로 기판 상에 배치되고, 복수의 불휘발성 메모리 셀들을 포함하는 ECC 코드 칩을 더 포함하고, 상기 모듈 컨트롤러는, 상기 기입 동작 시, 상기 기입 데이터를 상기 복수의 메모리 칩들 중의 적어도 하나에 기입하고, 상기 ECC 코드를 상기 ECC 코드 칩에 기입하고, 상기 독출 동작 시, 상기 복수의 메모리 칩들로부터 상기 독출 데이터를 독출하고, 상기 ECC 코드 칩으로부터 상기 독출 데이터에 상응하는 상기 ECC 코드를 독출하고, 상기 독출 데이터 및 상기 ECC 코드를 상기 메모리 컨트롤러에 제공한다.
일 실시예에 있어서, 상기 복수의 메모리 칩들의 상기 동작 모드는 상기 복수의 메모리 칩들의 파워-업 초기에 상기 메모리 모드 및 상기 저장 모드 중의 하나로 고정될 수 있다.
상기 메모리 컨트롤러는 파워-업 초기에 설정 정보를 상기 모듈 컨트롤러에 제공하고, 상기 모듈 컨트롤러는 상기 설정 정보에 기초하여 상기 복수의 메모리 칩들의 상기 동작 모드를 상기 메모리 모드 및 상기 저장 모드 중의 하나로 결정할 수 있다.
상기 복수의 메모리 칩들이 상기 메모리 모드로 동작하는 경우, 상기 복수의 메모리 칩들이 상기 복수의 메모리 칩들에 저장되는 데이터에 대해 상기 제2 ECC 동작을 수행할 수 있다.
상기 기입 동작 시, 상기 모듈 컨트롤러는 상기 메모리 컨트롤러로부터 기입 데이터를 수신하고, 상기 기입 데이터를 상기 복수의 메모리 칩들 중의 적어도 하나에 제공하고, 상기 복수의 메모리 칩들 각각은 상기 모듈 컨트롤러로부터 상기 기입 데이터를 수신하는 경우, 상기 기입 데이터에 대한 ECC 코드를 생성하고, 상기 기입 데이터 및 상기 ECC 코드를 내부에 포함되는 상기 복수의 불휘발성 메모리 셀들에 저장할 수 있다.
상기 독출 동작 시, 상기 복수의 메모리 칩들 중의 적어도 하나는 내부에 포함되는 상기 복수의 불휘발성 메모리 셀들에 저장된 독출 데이터 및 상기 독출 데이터에 상응하는 ECC 코드를 독출하고, 상기 ECC 코드에 기초하여 상기 독출 데이터의 에러를 검출하고 정정한 후 상기 독출 데이터를 상기 모듈 컨트롤러에 제공하고, 상기 모듈 컨트롤러는 상기 복수의 메모리 칩들로부터 수신되는 상기 독출 데이터를 상기 메모리 컨트롤러에 제공할 수 있다.
상기 복수의 메모리 칩들이 상기 저장 모드로 동작하는 경우, 상기 모듈 컨트롤러가 상기 복수의 메모리 칩들에 저장되는 데이터에 대해 상기 제2 ECC 동작을 수행할 수 있다.
상기 기입 동작 시, 상기 모듈 컨트롤러는 상기 메모리 컨트롤러로부터 기입 데이터를 수신하고, 상기 기입 데이터에 대한 ECC 코드를 생성하고, 상기 기입 데이터 및 상기 ECC 코드를 상기 복수의 메모리 칩들 중의 적어도 하나에 제공하고, 상기 복수의 메모리 칩들 각각은 상기 모듈 컨트롤러로부터 상기 기입 데이터 및 상기 ECC 코드를 수신하는 경우, 상기 기입 데이터 및 상기 ECC 코드를 내부에 포함되는 상기 복수의 불휘발성 메모리 셀들에 저장할 수 있다.
상기 독출 동작 시, 상기 복수의 메모리 칩들 중의 적어도 하나는 내부에 포함되는 상기 복수의 불휘발성 메모리 셀들에 저장된 독출 데이터 및 상기 독출 데이터에 상응하는 상기 ECC 코드를 상기 모듈 컨트롤러에 제공하고, 상기 모듈 컨트롤러는 상기 복수의 메모리 칩들로부터 수신되는 상기 ECC 코드에 기초하여 상기 독출 데이터의 에러를 검출하고 정정한 후 상기 독출 데이터를 상기 메모리 컨트롤러에 제공할 수 있다.
일 실시예에 있어서, 상기 복수의 메모리 칩들의 상기 동작 모드는 상기 복수의 메모리 칩들의 정상 동작 중에 변경될 수 있다.
상기 모듈 컨트롤러는 상기 복수의 메모리 칩들의 정상 동작 중에 상기 메모리 컨트롤러로부터 수신되는 모드 신호에 기초하여 상기 복수의 메모리 칩들의 상기 동작 모드를 결정할 수 있다.
상기 모듈 컨트롤러는 상기 복수의 메모리 칩들의 정상 동작 중에 상기 복수의 메모리 칩들의 내구성(endurance) 수준에 기초하여 상기 복수의 메모리 칩들의 상기 동작 모드를 결정할 수 있다.
상기 모듈 컨트롤러는 상기 복수의 메모리 칩들 각각에 대해 수행되는 기입 동작 및 소거 동작 중의 적어도 하나의 횟수를 카운트하여 사용 값을 생성하고, 상기 복수의 메모리 칩들 중에서 상기 사용 값이 기준 값 이상인 메모리 칩의 개수가 문턱 개수 미만인 경우 상기 복수의 메모리 칩들을 상기 메모리 모드로 동작시키고, 상기 복수의 메모리 칩들 중에서 상기 사용 값이 상기 기준 값 이상인 메모리 칩의 개수가 상기 문턱 개수 이상인 경우 상기 복수의 메모리 칩들을 상기 저장 모드로 동작시킬 수 있다.
상기 복수의 메모리 칩들의 상기 동작 모드에 무관하게, 상기 복수의 메모리 칩들이 상기 복수의 메모리 칩들에 저장되는 데이터에 대해 상기 제2 ECC 동작을 수행할 수 있다.
일 실시예에 있어서, 상기 복수의 메모리 칩들은 저장되는 데이터의 논리 레벨에 기초하여 가변되는 저항값을 갖는 복수의 저항성 메모리 셀들을 포함할 수 있다.
일 실시예에 있어서, 상기 모듈 컨트롤러는 상기 인쇄 회로 기판 상에서 상기 복수의 메모리 칩들의 중앙에 배치될 수 있다.
일 실시예에 있어서, 상기 복수의 메모리 칩들 및 상기 모듈 컨트롤러는 NVDIMM(Non-Volatile Dual In-line Memory Module) 표준에 따라 상기 인쇄 회로 기판 상에 배치될 수 있다.
상술한 본 발명의 일 목적을 달성하기 위하여, 본 발명의 일 실시예에 따른 메모리 시스템은 불휘발성 메모리 모듈 및 메모리 컨트롤러를 포함한다. 상기 불휘발성 메모리 모듈은 인쇄 회로 기판 상에 순차적으로 배치되고, 복수의 불휘발성 메모리 셀들을 포함하며, 동작 메모리로서 사용되는 메모리 모드 및 데이터 저장 공간으로서 사용되는 저장 모드 중의 하나로 동작하는 복수의 메모리 칩들, 및 상기 인쇄 회로 기판 상에 배치되고, 상기 복수의 메모리 칩들의 동작을 제어하는 모듈 컨트롤러를 포함한다. 상기 메모리 컨트롤러는 상기 불휘발성 메모리 모듈에 대해 기입 동작 및 독출 동작을 수행하고, 상기 불휘발성 메모리 모듈과 송수신되는 데이터에 대해 제1 ECC 동작을 수행한다. 또한, 상기 복수의 메모리 칩들의 동작 모드가 상기 복수의 메모리 칩들의 정상 동작 중에 변경될 수 있는지 여부에 기초하여 상기 복수의 메모리 칩들 및 상기 모듈 컨트롤러 중의 하나가 상기 복수의 메모리 칩들에 저장되는 데이터에 대해 제2 ECC 동작을 수행한다.
일 실시예에 있어서, 상기 복수의 메모리 칩들의 상기 동작 모드가 상기 복수의 메모리 칩들의 파워-업 초기에 상기 메모리 모드로 고정되는 경우, 상기 복수의 메모리 칩들이 상기 복수의 메모리 칩들에 저장되는 데이터에 대해 상기 제2 ECC 동작을 수행할 수 있다.
일 실시예에 있어서, 상기 복수의 메모리 칩들의 상기 동작 모드가 상기 복수의 메모리 칩들의 파워-업 초기에 상기 저장 모드로 고정되는 경우, 상기 모듈 컨트롤러가 상기 복수의 메모리 칩들에 저장되는 데이터에 대해 상기 제2 ECC 동작을 수행할 수 있다.
일 실시예에 있어서, 상기 복수의 메모리 칩들의 동작 모드가 상기 복수의 메모리 칩들의 정상 동작 중에 변경되는 경우, 상기 복수의 메모리 칩들의 상기 동작 모드에 무관하게, 상기 복수의 메모리 칩들이 상기 복수의 메모리 칩들에 저장되는 데이터에 대해 상기 제2 ECC 동작을 수행할 수 있다.
상술한 본 발명의 일 목적을 달성하기 위하여, 본 발명의 일 실시예에 따른 전자 장치는 불휘발성 메모리 모듈, ROM(Read Only Memory), 중앙 처리 장치(Central Processing Unit; CPU), 및 메모리 컨트롤러를 포함한다. 상기 불휘발성 메모리 모듈은 인쇄 회로 기판 상에 순차적으로 배치되고, 복수의 불휘발성 메모리 셀들을 포함하며, 동작 메모리로서 사용되는 메모리 모드 및 데이터 저장 공간으로서 사용되는 저장 모드 중의 하나로 동작하는 복수의 메모리 칩들, 및 상기 인쇄 회로 기판 상에 배치되고, 상기 복수의 메모리 칩들의 동작을 제어하는 모듈 컨트롤러를 포함한다. 상기 ROM은 상기 복수의 메모리 칩들의 동작 모드를 나타내는 설정 정보를 저장한다. 상기 메모리 컨트롤러는 상기 중앙 처리 장치의 제어 하에 상기 불휘발성 메모리 모듈에 대해 기입 동작 및 독출 동작을 수행하고, 상기 불휘발성 메모리 모듈과 송수신되는 데이터에 대해 제1 ECC 동작을 수행한다. 또한, 상기 복수의 메모리 칩들의 상기 동작 모드가 상기 복수의 메모리 칩들의 정상 동작 중에 변경될 수 있는지 여부 및 상기 복수의 메모리 칩들이 상기 메모리 모드로 동작하는지 상기 저장 모드로 동작하는지 여부에 기초하여 상기 복수의 메모리 칩들 및 상기 모듈 컨트롤러 중의 하나가 상기 복수의 메모리 칩들에 저장되는 데이터에 대해 제2 ECC 동작을 수행한다.
일 실시예에 있어서, 상기 중앙 처리 장치는 파워-업 초기에 상기 ROM으로부터 상기 설정 정보를 독출하고, 상기 메모리 컨트롤러를 통해 상기 설정 정보를 상기 모듈 컨트롤러에 제공하고, 상기 모듈 컨트롤러는 상기 설정 정보에 기초하여 상기 복수의 메모리 칩들의 상기 동작 모드를 상기 메모리 모드 및 상기 저장 모드 중의 하나로 결정할 수 있다.
상기 복수의 메모리 칩들의 상기 동작 모드가 상기 설정 정보에 기초하여 상기 메모리 모드로 고정되어 상기 복수의 메모리 칩들이 턴오프될 때까지 상기 메모리 모드로 유지되는 경우, 상기 복수의 메모리 칩들이 상기 복수의 메모리 칩들에 저장되는 데이터에 대해 상기 제2 ECC 동작을 수행할 수 있다.
상기 복수의 메모리 칩들의 상기 동작 모드가 상기 설정 정보에 기초하여 상기 저장 모드로 고정되어 상기 복수의 메모리 칩들이 턴오프될 때까지 상기 저장 모드로 유지되는 경우, 상기 모듈 컨트롤러가 상기 복수의 메모리 칩들에 저장되는 데이터에 대해 상기 제2 ECC 동작을 수행할 수 있다.
상기 복수의 메모리 칩들의 상기 동작 모드가 상기 복수의 메모리 칩들의 정상 동작 중에 변경되는 경우, 상기 복수의 메모리 칩들의 상기 동작 모드에 무관하게, 상기 복수의 메모리 칩들이 상기 복수의 메모리 칩들에 저장되는 데이터에 대해 상기 제2 ECC 동작을 수행할 수 있다.
본 발명에 따른 메모리 시스템은 불휘발성 메모리 모듈의 외부에서는 메모리 컨트롤러가 불휘발성 메모리 모듈과 송수신되는 데이터에 대해 제1 ECC 동작을 수행하고, 불휘발성 메모리 모듈은 내부적으로 복수의 불휘발성 메모리 칩들에 저장되는 데이터에 대해 제2 ECC 동작을 수행한다. 이와 같이, 본 발명에 따른 메모리 시스템은 계층적으로(hierarchically) 두 단계에 걸쳐 ECC 동작을 수행하므로, 메모리 시스템의 동작 신뢰성은 향상될 수 있다.
또한, 불휘발성 메모리 모듈에 포함되는 복수의 불휘발성 메모리 칩들이 중앙 처리 장치의 동작에 필요한 임시 데이터를 저장하는 동작 메모리로서 사용되는지 프로그램 및 데이터를 저장하는 데이터 저장 공간으로서 사용되는지 여부에 기초하여 불휘발성 메모리 모듈에 포함되는 복수의 불휘발성 메모리 칩들 및 모듈 컨트롤러 중의 하나가 상기 제2 ECC 동작을 수행함으로써, 본 발명에 따른 메모리 시스템의 전체적인 ECC 동작은 복수의 불휘발성 메모리 칩들의 동작 모드에 따라 최적화될 수 있다.
도 1은 본 발명의 일 실시예에 따른 전자 장치를 나타내는 블록도이다.
도 2는 도 1의 전자 장치에 포함되는 메모리 컨트롤러의 일 예를 나타내는 블록도이다.
도 3은 도 1의 전자 장치에 포함되는 불휘발성 메모리 모듈의 일 예를 나타내는 도면이다.
도 4는 도 3의 불휘발성 메모리 모듈에 포함되는 불휘발성 메모리 칩의 일 예를 나타내는 블록도이다.
도 5는 도 3의 불휘발성 메모리 모듈에 포함되는 불휘발성 메모리 칩의 3차원 구조의 일 예를 나타내는 도면이다.
도 6은 도 5의 불휘발성 메모리 칩에 포함되는 기판의 일 예를 나타내는 도면이다.
도 7은 도 5의 불휘발성 메모리 칩에 포함되는 불휘발성 메모리 셀 어레이 층의 일 예를 나타내는 회로도이다.
도 8은 도 7의 저항성 메모리 셀에 포함되는 저항성 소자의 일 예를 나타내는 도면이다.
도 9는 도 5의 불휘발성 메모리 칩에 포함되는 불휘발성 메모리 셀 어레이 층의 다른 예를 나타내는 회로도이다.
도 10은 도 3의 불휘발성 메모리 모듈에 포함되는 모듈 컨트롤러의 일 예를 나타내는 블록도이다.
도 11은 도 1에 도시된 전자 장치의 일 예를 나타내는 블록도이다.
도 12는 도 3의 불휘발성 메모리 모듈에 포함되는 모듈 컨트롤러의 동작을 나타내는 순서도이다.
도 13은 도 1의 전자 장치가 컴퓨팅 시스템에 응용된 예를 나타내는 도면이다.
본문에 개시되어 있는 본 발명의 실시예들에 대해서, 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 실시예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 실시예들은 다양한 형태로 실시될 수 있으며 본문에 설명된 실시예들에 한정되는 것으로 해석되어서는 아니 된다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는바, 특정 실시예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제 1, 제 2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로 사용될 수 있다. 예를 들어, 본 발명의 권리 범위로부터 이탈되지 않은 채 제 1 구성요소는 제 2 구성요소로 명명될 수 있고, 유사하게 제 2 구성요소도 제 1 구성요소로 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미이다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미인 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 일 실시예에 따른 전자 장치를 나타내는 블록도이다.
도 1을 참조하면, 전자 장치(1000)는 불휘발성 메모리 모듈(10) 및 불휘발성 메모리 모듈(10)의 동작을 제어하는 메모리 컨트롤러(IMC)(30)를 포함하는 메모리 시스템 및 중앙 처리 장치(Central Processing Unit; CPU)(20)를 포함한다.
전자 장치(1000)는 하나 이상의 불휘발성 메모리 모듈(10)을 포함할 수 있으나, 설명의 편의를 위해 도 1에는 하나의 불휘발성 메모리 모듈(10)만이 도시된다.
불휘발성 메모리 모듈(10)은 복수의 불휘발성 메모리 칩들을 포함할 수 있다. 따라서 불휘발성 메모리 모듈(10)은 전원이 차단되는 경우에도 저장된 데이터를 유실하지 않고 유지할 수 있다. 불휘발성 메모리 모듈(10)은 복수의 불휘발성 메모리 칩들을 포함하므로, 불휘발성 메모리 모듈(10)은 중앙 처리 장치(20)의 동작에 필요한 임시 데이터를 저장하는 동작 메모리로서 사용되는 메모리 모드로 동작할 수도 있고, 프로그램 및 데이터를 저장하는 데이터 저장 공간으로서 사용되는 저장 모드로 동작할 수도 있다.
도 1에 도시된 바와 같이, 메모리 컨트롤러(30)는 중앙 처리 장치(20)에 포함될 수 있다. 중앙 처리 장치(20)에 포함된 메모리 컨트롤러(30)는 집적 메모리 컨트롤러(Integrated Memory Controller; IMC)라고 불릴 수 있다.
그러나, 실시예에 따라서, 메모리 컨트롤러(30)는 중앙 처리 장치(20)와는 별도로 중앙 처리 장치(20)의 외부에 형성될 수도 있다.
메모리 컨트롤러(30) 및 불휘발성 메모리 모듈(10)을 포함하는 상기 메모리 시스템에서, 메모리 컨트롤러(30)는 불휘발성 메모리 모듈(10)과 송수신되는 데이터에 대해 제1 에러 체크 및 정정(Error Check and Correction; ECC) 동작을 수행할 수 있다. 이 경우, 불휘발성 메모리 모듈(10)은 상기 제1 ECC 동작에 따른 ECC 코드를 저장하기 위한 ECC 코드 칩을 더 포함할 수 있다.
도 2는 도 1의 전자 장치에 포함되는 메모리 컨트롤러의 일 예를 나타내는 블록도이다.
메모리 컨트롤러(30)는 중앙 처리 장치(20)와 불휘발성 메모리 모듈(10) 사이의 데이터 교환을 제어할 수 있다.
도 2를 참조하면, 메모리 컨트롤러(30)는 제어 회로(31), 버퍼 메모리(RAM)(32), 호스트 인터페이스(33), 메모리 인터페이스(34), 및 제1 ECC 엔진(35)을 포함할 수 있다.
제어 회로(31)는 상기 데이터 교환을 위한 동작을 수행할 수 있다.
버퍼 메모리(32)는 DRAM(Dynamic random access memory), SRAM(Static random access memory), PRAM(Phase random access memory), FRAM(Ferroelectric random access memory), RRAM(Resistive random access memory), 또는 MRAM(Magnetic random access memory)으로 구현될 수 있다.
버퍼 메모리(32)는 제어 회로(31)의 동작 메모리일 수 있다. 실시예에 따라서, 버퍼 메모리(32)는 메모리 컨트롤러(30)의 외부에 위치할 수도 있다.
호스트 인터페이스(33)는 중앙 처리 장치(20)와 연결되고, 메모리 인터페이스(34)는 불휘발성 메모리 모듈(10)과 연결될 수 있다. 제어 회로(31)는 호스트 인터페이스(33)를 통하여 중앙 처리 장치(20)와 통신할 수 있다.
또한, 제어 회로(31)는 메모리 인터페이스(34)를 통하여 불휘발성 메모리 모듈(10)과 통신할 수 있다.
메모리 컨트롤러(30)가 불휘발성 메모리 모듈(10)에 대해 기입 동작을 수행하는 경우, 호스트 인터페이스(33)는 중앙 처리 장치(20)로부터 불휘발성 메모리 모듈(10)에 저장될 기입 데이터를 수신하고, 제1 ECC 엔진(35)은 상기 기입 데이터에 대한 제1 ECC 코드를 생성하고, 메모리 인터페이스(34)는 상기 기입 데이터 및 상기 제1 ECC 코드를 불휘발성 메모리 모듈(10)에 제공할 수 있다. 불휘발성 메모리 모듈(10)은 상기 기입 데이터를 상기 복수의 불휘발성 메모리 칩들 중의 적어도 하나에 저장하고 상기 제1 ECC 코드를 상기 ECC 코드 칩에 저장할 수 있다.
한편, 메모리 컨트롤러(30)가 불휘발성 메모리 모듈(10)에 대해 독출 동작을 수행하는 경우, 제어 회로(31)는 커맨드 및 어드레스를 생성하고, 메모리 인터페이스(34)는 상기 커맨드 및 상기 어드레스를 불휘발성 메모리 모듈(10)에 제공할 수 있다. 불휘발성 메모리 모듈(10)은 상기 커맨드 및 상기 어드레스에 기초하여 상기 복수의 불휘발성 메모리 칩들에 저장된 독출 데이터 및 상기 ECC 코드 칩에 저장된 상기 독출 데이터에 상응하는 상기 제1 ECC 코드를 출력할 수 있다. 메모리 인터페이스(34)가 불휘발성 메모리 모듈(10)로부터 상기 독출 데이터 및 상기 제1 ECC 코드를 수신하는 경우, 제1 ECC 엔진(35)은 상기 제1 ECC 코드에 기초하여 상기 독출 데이터의 에러를 검출하고 정정하고, 호스트 인터페이스(33)는 상기 정정된 독출 데이터를 중앙 처리 장치(20)에 제공할 수 있다.
이와 같이, 메모리 컨트롤러(30)는 불휘발성 메모리 모듈(10)과 송수신되는 데이터에 대해 상기 제1 ECC 동작을 수행하므로, 상기 메모리 시스템은 메모리 컨트롤러(30)와 불휘발성 메모리 모듈(10) 사이의 데이터 송수신 과정에서 발생할 수 있는 데이터 에러를 정정할 수 있다. 따라서 상기 메모리 시스템의 동작 신뢰성은 향상될 수 있다.
한편, 불휘발성 메모리 모듈(10)은 상기 복수의 불휘발성 메모리 칩들에 저장되는 데이터에 대해 내부적으로 제2 ECC 동작을 수행할 수 있다. 따라서 불휘발성 메모리 모듈(10)은 메모리 컨트롤러(30)로부터 수신되는 상기 기입 데이터를 상기 복수의 불휘발성 메모리 칩들에 저장하는 과정 및 상기 복수의 불휘발성 메모리 칩들에 저장된 데이터를 독출하는 과정에서 발생할 수 있는 데이터 에러를 모듈 내부에서 정정할 수 있다.
도 1 및 2를 참조하여 상술한 바와 같이, 본 발명에 따른 전자 장치(1000)에 포함되는 상기 메모리 시스템에서, 메모리 컨트롤러(30)는 불휘발성 메모리 모듈(10)과 송수신되는 데이터에 대해 상기 제1 ECC 동작을 수행함으로써 메모리 컨트롤러(30)와 불휘발성 메모리 모듈(10) 사이의 데이터 송수신 과정에서 발생할 수 있는 데이터 에러를 정정하고, 불휘발성 메모리 모듈(10)은 내부적으로 상기 복수의 불휘발성 메모리 칩들에 저장되는 데이터에 대해 상기 제2 ECC 동작을 수행함으로써 메모리 컨트롤러(30)로부터 수신되는 상기 기입 데이터를 상기 복수의 불휘발성 메모리 칩들에 저장하는 과정 및 상기 복수의 불휘발성 메모리 칩들에 저장된 데이터를 독출하는 과정에서 발생할 수 있는 데이터 에러를 모듈 내부에서 정정할 수 있다. 이와 같이, 상기 메모리 시스템은 계층적으로(hierarchically) 두 단계에 걸쳐 ECC 동작을 수행하므로, 상기 메모리 시스템의 동작 신뢰성은 더욱 향상될 수 있다.
상술한 바와 같이, 불휘발성 메모리 모듈(10)은 상기 복수의 불휘발성 메모리 칩들을 포함하므로, 불휘발성 메모리 모듈(10)은 중앙 처리 장치(20)의 동작에 필요한 임시 데이터를 저장하는 동작 메모리로서 사용되는 상기 메모리 모드로 동작할 수도 있고, 프로그램 및 데이터를 저장하는 데이터 저장 공간으로서 사용되는 상기 저장 모드로 동작할 수도 있다. 불휘발성 메모리 모듈(10)에 포함되는 상기 복수의 불휘발성 메모리 칩들의 동작 모드가 전자 장치(1000)의 파워-업 초기에 상기 메모리 모드 및 상기 저장 모드 중의 하나로 고정되는지 혹은 상기 복수의 불휘발성 메모리 칩들의 정상 동작 중에 상기 메모리 모드와 상기 저장 모드 사이에서 변경되는지 여부, 및 상기 복수의 불휘발성 메모리 칩들이 상기 메모리 모드로 동작하는지 혹은 상기 저장 모드로 동작하는지 여부에 기초하여, 불휘발성 메모리 모듈(10) 내부적으로 수행되는 상기 제2 ECC 동작은 상이한 방식으로 수행될 수 있다.
불휘발성 메모리 모듈(10)에 포함되는 상기 복수의 불휘발성 메모리 칩들의 동작 모드가 전자 장치(1000)의 파워-업 초기에 상기 메모리 모드 및 상기 저장 모드 중의 하나로 고정되는지 혹은 상기 복수의 불휘발성 메모리 칩들의 정상 동작 중에 상기 메모리 모드와 상기 저장 모드 사이에서 변경되는지 여부, 및 상기 복수의 불휘발성 메모리 칩들이 상기 메모리 모드로 동작하는지 혹은 상기 저장 모드로 동작하는지 여부에 따라 불휘발성 메모리 모듈(10)이 수행하는 상기 제2 ECC 동작에 대한 상세한 설명은 도 3 내지 12를 참조하여 후술한다.
도 3은 도 1의 전자 장치에 포함되는 불휘발성 메모리 모듈의 일 예를 나타내는 도면이다.
도 3을 참조하면, 불휘발성 메모리 모듈(10)은 복수의 불휘발성 메모리 칩들(NVM)(100), ECC 코드 칩(ECC NVM)(300), 및 모듈 컨트롤러(NVM CTRL)(200)를 포함할 수 있다.
도 3에 도시된 바와 같이, 복수의 불휘발성 메모리 칩들(100)은 인쇄 회로 기판(Printed Circuit Board, PCB)(11) 상에 순차적으로 배치되고, 모듈 컨트롤러(200)는 인쇄 회로 기판(11) 상에서 복수의 불휘발성 메모리 칩들(100)의 중앙에 배치되고, ECC 코드 칩(300)은 불휘발성 메모리 모듈(10)의 일 측에 배치될 수 있다.
일 실시예에 있어서, 복수의 불휘발성 메모리 칩들(100), ECC 코드 칩(300), 및 모듈 컨트롤러(200)는 NVDIMM(Non-Volatile Dual In-line Memory Module) 표준에 따라 인쇄 회로 기판(11) 상에 배치될 수 있다.
복수의 불휘발성 메모리 칩들(100) 각각은 복수의 불휘발성 메모리 셀들을 포함할 수 있다.
일 실시예에 있어서, 복수의 불휘발성 메모리 칩들(100) 각각은 상기 복수의 불휘발성 메모리 셀들이 수직으로 적층되어 형성되는 3차원 구조를 가질 수 있다.
모듈 컨트롤러(200)는 메모리 컨트롤러(30)로부터 커맨드, 어드레스, 및 데이터를 수신하고, 복수의 불휘발성 메모리 칩들(100) 중의 적어도 하나에 상기 커맨드, 상기 어드레스, 및 상기 데이터를 제공함으로써 복수의 불휘발성 메모리 칩들(100)의 동작을 제어할 수 있다.
모듈 컨트롤러(200)와 복수의 불휘발성 메모리 칩들(100) 사이의 데이터 전송선들은 포인트-투-포인트 방식으로 연결될 수 있다. 또한, 모듈 컨트롤러(200)와 복수의 불휘발성 메모리 칩들(100) 사이의 커맨드 전송선들 및 어드레스 전송선들은 멀티-드롭 방식, 데이지-체인 방식, 또는 플라이-바이 데이지-체인 방식으로 연결될 수 있다. 실시예에 따라서, 모듈 컨트롤러(200)와 복수의 불휘발성 메모리 칩들(100) 사이의 커맨드 전송선들 및 어드레스 전송선들은 포인트-투-포인트 방식으로 연결될 수도 있다.
상술한 바와 같이, 모듈 컨트롤러(200)가 메모리 컨트롤러(30)로부터 수신되는 상기 커맨드, 상기 어드레스, 및 상기 데이터를 버퍼링하여 복수의 불휘발성 메모리 칩들(100)에 제공하므로, 메모리 컨트롤러(30)는 모듈 컨트롤러(200)의 로드만을 구동함으로써 불휘발성 메모리 모듈(10)과 인터페이스 할 수 있다. 따라서, 전자 장치(1000)는 메모리 컨트롤러(30)의 제어 하에 동작하는 복수의 불휘발성 메모리 모듈(10)들을 포함할 수 있다.
한편, ECC 코드 칩(300)은 복수의 불휘발성 메모리 셀들을 포함할 수 있다.
모듈 컨트롤러(200)는 상기 기입 동작 시 메모리 컨트롤러(30)로부터 상기 기입 데이터 및 상기 제1 ECC 코드를 수신하고, 상기 기입 데이터를 복수의 불휘발성 메모리 칩들(100) 중의 적어도 하나에 저장하고 상기 제1 ECC 코드를 ECC 코드 칩(300)에 저장할 수 있다. 또한, 모듈 컨트롤러(200)는 상기 독출 동작 시 복수의 불휘발성 메모리 칩들(100)로부터 독출 데이터를 독출하고, ECC 코드 칩(300)으로부터 상기 독출 데이터에 상응하는 상기 제1 ECC 코드를 독출하고, 상기 독출 데이터 및 상기 제1 ECC 코드를 메모리 컨트롤러(300)에 제공할 수 있다.
한편, 복수의 불휘발성 메모리 칩들(100) 및 모듈 컨트롤러(200) 중의 하나는 복수의 불휘발성 메모리 칩들(100)에 저장되는 데이터에 대해 상기 제2 ECC 동작을 수행할 수 있다. 일 실시예에 있어서, 모듈 컨트롤러(200)는 복수의 불휘발성 메모리 칩들(100)의 동작 모드가 전자 장치(1000)의 파워-업 초기에 상기 메모리 모드 및 상기 저장 모드 중의 하나로 고정되는지 혹은 복수의 불휘발성 메모리 칩들(100)의 정상 동작 중에 상기 메모리 모드와 상기 저장 모드 사이에서 변경되는지 여부, 및 복수의 불휘발성 메모리 칩들(100)이 상기 메모리 모드로 동작하는지 혹은 상기 저장 모드로 동작하는지 여부에 기초하여, 복수의 불휘발성 메모리 칩들(100)에 포함되는 제2 ECC 엔진 및 모듈 컨트롤러(200)에 포함되는 제3 ECC 엔진 중의 하나를 활성화시키고 나머지 하나를 비활성화시킬 수 있다. 이 때, 복수의 불휘발성 메모리 칩들(100)에 포함되는 상기 제2 ECC 엔진 및 모듈 컨트롤러(200)에 포함되는 상기 제3 ECC 엔진 중에서 활성화되는 ECC 엔진이 복수의 불휘발성 메모리 칩들(100)에 저장되는 데이터에 대해 상기 제2 ECC 동작을 수행할 수 있다.
도 4는 도 3의 불휘발성 메모리 모듈에 포함되는 불휘발성 메모리 칩의 일 예를 나타내는 블록도이다.
도 3의 불휘발성 메모리 모듈(10)에 포함되는 복수의 불휘발성 메모리 칩들(100) 각각은 도 4에 도시된 불휘발성 메모리 칩(100)으로 구현될 수 있다.
도 4를 참조하면, 불휘발성 메모리 칩(100)은 불휘발성 메모리 셀 어레이 블록(110), 제어 회로(120), 행(row) 선택 회로(130), 열(column) 디코더(140), 입출력 회로(150), 및 제2 ECC 엔진(160)을 포함할 수 있다. 도 4에는 본 발명의 설명에 필요한 구성만을 도시하였으며, 불휘발성 메모리 칩(100)은 어드레스 버퍼, 입출력 버퍼, 프리 디코더(pre-decoder), 그 밖의 주변 회로들을 더 포함할 수 있다.
불휘발성 메모리 셀 어레이 블록(110)은 복수의 워드 라인들(WLs)을 통해 행 선택 회로(130)와 연결되고, 복수의 비트 라인들(BLs)을 통해 열 디코더(140)와 연결될 수 있다.
불휘발성 메모리 셀 어레이 블록(110)은 복수의 워드 라인들(WLs) 및 복수의 비트 라인들(BLs)에 연결되는 복수의 저항성 메모리 셀들을 포함할 수 있다. 상기 복수의 저항성 메모리 셀들 각각은 저장되는 데이터의 논리 레벨에 기초하여 가변되는 저항값을 가질 수 있다.
일 실시예에 있어서, 불휘발성 메모리 셀 어레이 블록(110)은 데이터를 저장하는 데이터 영역 및 ECC 코드를 저장하는 코드 영역으로 구분될 수 있다. 이 경우, 상기 복수의 저항성 메모리 셀들은 데이터를 저장하는 데이터 셀들 및 ECC 코드를 저장하는 ECC 코드 셀들로 구분될 수 있다.
상기 복수의 저항성 메모리 셀들은 워드 라인들(WLs)을 통하여 연결되는 행 선택 회로(130)에 의해 선택될 수 있다.
일 실시예에 있어서, 불휘발성 메모리 셀 어레이 블록(110)은 상기 복수의 저항성 메모리 셀들이 수직으로 적층되어 형성되는 3차원 구조를 가질 수 있다.
도 5는 도 3의 불휘발성 메모리 모듈에 포함되는 불휘발성 메모리 칩의 3차원 구조의 일 예를 나타내는 도면이다.
도 5에 도시된 바와 같이, 불휘발성 메모리 칩(100)은 기판(SUB) 상에 적층되어 3차원 구조로 형성되는 복수의 불휘발성 메모리 셀 어레이 층들(MCAL1, MCAL2, MCAL3, MCAL4)을 포함할 수 있다.
복수의 불휘발성 메모리 셀 어레이 층들(MCAL1, MCAL2, MCAL3, MCAL4) 각각은 상기 복수의 저항성 메모리 셀들을 포함하는 불휘발성 메모리 셀 어레이를 포함할 수 있다. 또한, 복수의 불휘발성 메모리 셀 어레이 층들(MCAL1, MCAL2, MCAL3, MCAL4) 각각에 포함되는 상기 복수의 저항성 메모리 셀들은 데이터를 저장하는 상기 데이터 셀들 및 ECC 코드를 저장하는 상기 ECC 코드 셀들로 구분될 수 있다.
도 6은 도 5의 불휘발성 메모리 칩에 포함되는 기판의 일 예를 나타내는 도면이다.
도 6에 도시된 바와 같이, 기판(SUB)에서, 복수의 불휘발성 메모리 셀 어레이 층들(MCAL1, MCAL2, MCAL3, MCAL4)과 마주보는 중앙 영역은 상기 복수의 저항성 메모리 셀들을 포함하는 불휘발성 메모리 셀 어레이가 형성되는 메모리 셀 어레이 영역에 상응하고, 상기 중앙 영역을 둘러싸는 주변 영역은 불휘발성 메모리 칩(100)에 포함되는 제어 회로(120), 행 선택 회로(130), 열 디코더(140), 입출력 회로(150), 및 제2 ECC 엔진(160) 등과 같은 주변 회로가 형성되는 주변 회로 영역에 상응할 수 있다.
불휘발성 메모리 셀 어레이 블록(110)은 복수의 불휘발성 메모리 셀 어레이 층들(MCAL1, MCAL2, MCAL3, MCAL4) 및 기판(SUB)의 상기 중앙 영역에 형성되는 불휘발성 메모리 셀 어레이를 포함할 수 있다.
도 7은 도 5의 불휘발성 메모리 칩에 포함되는 불휘발성 메모리 셀 어레이 층의 일 예를 나타내는 회로도이다.
도 5의 불휘발성 메모리 칩(100)에 포함되는 복수의 불휘발성 메모리 셀 어레이 층들(MCAL1, MCAL2, MCAL3, MCAL4) 각각은 도 7에 도시된 불휘발성 메모리 셀 어레이 층(MCAL)으로 구현될 수 있다.
도 7을 참조하면, 불휘발성 메모리 셀 어레이 층(MCAL)에는 복수의 비트 라인들(BL0~BLm) 및 복수의 워드 라인들(WL0~WLn)이 형성될 수 있다.
불휘발성 메모리 셀 어레이 층(MCAL)은 크로스 포인트(cross-point) 구조를 가지며, 하나의 워드 라인(WL)과 하나의 비트 라인(BL)이 교차하는 지점에 하나의 저항성 메모리 셀이 형성될 수 있다.
도 7에 도시된 바와 같이, 저항성 메모리 셀(111)은 워드 라인(WL)과 비트 라인(BL) 사이에서 서로 직렬로 연결되는 저항성 소자(RE1) 및 다이오드(D1)를 포함할 수 있다.
저항성 메모리 셀(111)은 워드 라인(WL)과 비트 라인(BL) 사이의 전압에 의해 저항성 소자(RE1)의 저항 산포를 제어할 수 있다. 일 실시예에 있어서, 워드 라인(WL)과 비트 라인(BL) 사이에 일정한 전압들을 인가하여 저항성 소자(RE1)의 양단에 걸리는 전압의 크기를 조절하거나 저항성 소자(RE1)를 통하여 흐르는 전류의 크기를 조절하여 기입 동작이 수행될 수 있다.
도 8은 도 7의 저항성 메모리 셀에 포함되는 저항성 소자의 일 예를 나타내는 도면이다.
도 8을 참조하면, 저항성 소자(RE1)는 상부 전극(E1), 하부 전극(E2) 및 상부 전극(E1)과 하부 전극(E2) 사이에 형성되는 저항성 물질을 포함할 수 있다. 상부 전극(E1) 및 하부 전극(E2)으로는 탄탈(Ta) 또는 백금(Pt) 등이 사용될 수 있다. 상기 저항성 물질은 코발트 산화물 등의 전이금속 산화물(VR) 또는 GexSbyTez 등의 상변화 물질(phase change material)(GST)을 포함할 수 있다. 상변화 물질(GST)은 온도 및 가열 시간에 따라 비정질 상태(AMORPHOUS STATE) 또는 결정질 상태(CRYSTALLINE STATE)가 되며 상변화 물질(GST)의 상태에 따라 저항 값이 변화할 수 있다.
일반적으로 상변화 물질을 이용하는 PRAM(Phase Change Random Access Memory), 전이금속 산화물 등의 가변저항 특성을 갖는 물질을 이용한 RRAM(Resistance Random Access Memory)과 강자성 물질을 이용한 MRAM(Magnetic Random Access Memory)을 구분하기도 하지만, 이를 통틀어 저항성 메모리(Resistive Memory)라 칭하기로 한다. 본 발명의 일 실시예에 따른 불휘발성 메모리 칩(100)은 PRAM, RRAM, MRAM을 포함하는 다양한 저항성 메모리를 사용하여 구현될 수 있다.
도 9는 도 5의 불휘발성 메모리 칩에 포함되는 불휘발성 메모리 셀 어레이 층의 다른 예를 나타내는 회로도이다.
도 9에는 서로 연속하여 적층되는 두 개의 불휘발성 메모리 셀 어레이 층들(MCAL1, MCAL2)이 도시된다.
도 9에 도시된 바와 같이, 불휘발성 메모리 셀 어레이 층들(MCAL1, MCAL2) 각각은 크로스 포인트(cross-point) 구조를 가지며, 하나의 워드 라인(WL)과 하나의 비트 라인(BL)이 교차하는 지점에 하나의 저항성 메모리 셀이 형성될 수 있다.
도 9의 불휘발성 메모리 셀 어레이 층들(MCAL1, MCAL2) 각각에 형성되는 저항성 메모리 셀은 도 7의 불휘발성 메모리 셀 어레이 층(MCAL)에 형성되는 저항성 메모리 셀과 동일할 수 있다.
그러나, 도 9에 도시된 바와 같이, 서로 연속하여 적층되는 두 개의 불휘발성 메모리 셀 어레이 층들(MCAL1, MCAL2)은 하나의 비트 라인(BL)을 공유할 수 있다.
따라서 불휘발성 메모리 셀 어레이 블록(110)이 도 9에 도시된 불휘발성 메모리 셀 어레이 층들(MCAL1, MCAL2)을 사용하여 구현되는 경우, 불휘발성 메모리 셀 어레이 블록(110)의 크기는 효과적으로 감소될 수 있다.
다시 도 4를 참조하면, 제어 회로(120)는 불휘발성 메모리 모듈(10)에 포함되는 모듈 컨트롤러(200)로부터 커맨드(CMD) 및 어드레스(ADDR)를 수신하고, 커맨드(CMD) 및 어드레스(ADDR)에 기초하여 불휘발성 메모리 칩(100)의 기입 동작, 독출 동작, 및 소거 동작을 제어할 수 있다.
예를 들어, 제어 회로(120)는 커맨드(CMD)에 기초하여 기입 인에이블 신호, 독출 인에이블 신호, 센스 인에이블 신호 등과 같은 타이밍 제어 신호들을 생성할 수 있다. 또한, 제어 회로(120)는 어드레스(ADDR)에 기초하여 로우 어드레스(ADDX) 및 컬럼 어드레스(ADDY)를 생성할 수 있다.
제어 회로(120)는 불휘발성 메모리 칩(100)의 기입 동작, 독출 동작, 및 소거 동작을 제어하기 위해, 상기 타이밍 제어 신호들을 행 선택 회로(130), 열 디코더(140), 및 입출력 회로(150)에 제공할 수 있다. 또한, 제어 회로(120)는 로우 어드레스(ADDX)를 행 선택 회로(130)에 제공하고, 컬럼 어드레스(ADDY)를 열 디코더(140)에 제공할 수 있다.
행 선택 회로(130)는 복수의 워드 라인들(WLs)을 통해 불휘발성 메모리 셀 어레이 블록(110)과 연결될 수 있다. 행 선택 회로(130)는 로우 어드레스(ADDX)에 기초하여 복수의 워드 라인들(WLs) 중에서 기입 동작 또는 독출 동작을 수행할 하나의 워드 라인(WL)을 선택할 수 있다.
열 디코더(140)는 복수의 비트 라인들(BLs)을 통해 불휘발성 메모리 셀 어레이 블록(110)과 연결될 수 있다. 열 디코더(140)는 컬럼 어드레스(ADDY)에 기초하여 복수의 비트 라인들(BLs) 중에서 기입 동작 또는 독출 동작을 수행할 적어도 하나의 비트 라인(BL)을 입출력 회로(150)에 연결할 수 있다.
입출력 회로(150)는 센스 증폭기 및 기입 드라이버를 포함할 수 있다.
제2 ECC 엔진(160)은 모듈 컨트롤러(200)에 의해 선택적으로 활성화될 수 있다.
제2 ECC 엔진(160)이 활성화되는 경우, 기입 동작 시, 제2 ECC 엔진(160)은 모듈 컨트롤러(200)로부터 기입 데이터(DI)를 수신하고, 기입 데이터(DI)에 기초하여 제2 ECC 코드를 생성할 수 있다.
상기 기입 드라이버는 제2 ECC 엔진(160)으로부터 제공되는 기입 데이터(DI) 및 기입 데이터(DI)에 상응하는 상기 제2 ECC 코드를 각각 복수의 불휘발성 메모리 셀 어레이 층들(MCAL1, MCAL2, MCAL3, MCAL4)에 포함되는 상기 데이터 셀들 및 상기 ECC 코드 셀들에 기입할 수 있다.
한편, 독출 동작 시, 상기 센스 증폭기는 불휘발성 메모리 셀 어레이 블록(110)에 의해 형성되는 비트 라인(BL)의 전압 또는 전류를 센싱하여 독출 데이터(DO) 및 상기 제2 ECC 코드를 생성하여 제2 ECC 엔진(160)에 제공할 수 있다.
제2 ECC 엔진(160)은 상기 센스 증폭기로부터 제공되는 독출 데이터(DO) 및 상기 제2 ECC 코드에 기초하여 독출 데이터(DO)의 에러를 검출하고 정정할 수 있다. 제어 회로(120)는 제2 ECC 엔진(160)의 코드 발생 동작, 에러 검출 동작 및 에러 정정 동작을 전반적으로 제어할 수 있다.
제2 ECC 엔진(160)으로부터 출력되는 독출 데이터(DO)는 모듈 컨트롤러(200)에 제공될 수 있다.
일 실시예에 있어서, 상기 제2 ECC 코드는 패러티 체크 코드, 해밍 코드 등 잘 알려진 코드들 중 하나일 수 있다. 만약, 패리티 체크 코드의 경우에는 데이터와 패리티 체크 코드의 배타적 논리합 연산, 즉 ECC 연산의 결과가 항상 일정한 값이 되도록 설정될 수 있다. 예컨대, 홀수 패리티 시스템의 경우 ECC 연산의 결과는 항상 "1"이 될 수 있고, 짝수 패리티 시스템의 경우 ECC 연산의 결과는 항상 "0"이 될 수 있다. 제2 ECC 엔진(160)은 ECC 연산의 결과가 정해진 값 이외의 값이면 독출 데이터(DO)를 결함 데이터로 인식하고, 이를 정정하여 출력할 수 있다. 에러 정정을 위하여 코드 비트수를 많이 사용할수록 정정할 수 있는 에러의 개수는 증가하지만 셀 오버헤드(cell overhead)가 커지는 점을 고려하여, ECC 연산에 사용되는 코드 비트 수는 필요한 에러 체크 및 정정 성능에 의존하여 선택될 수 있다.
한편, 제2 ECC 엔진(160)이 비활성화되는 경우, 기입 동작 시, 상기 기입 드라이버는 모듈 컨트롤러(200)로부터 기입 데이터(DI) 및 기입 데이터(DI)에 상응하는 제3 ECC 코드(ECC_C3)를 수신하고, 기입 데이터(DI) 및 제3 ECC 코드(ECC_C3)를 각각 불휘발성 메모리 셀 어레이 층들(MCAL1, MCAL2, MCAL3, MCAL4)에 포함되는 상기 데이터 셀들 및 상기 ECC 코드 셀들에 기입할 수 있다.
또한, 독출 동작 시, 상기 센스 증폭기는 불휘발성 메모리 셀 어레이 블록(110)에 의해 형성되는 비트 라인(BL)의 전압 또는 전류를 센싱하여 독출 데이터(DO) 및 제3 ECC 코드(ECC_C3)를 생성하고, 독출 데이터(DO) 및 제3 ECC 코드(ECC_C3)를 모듈 컨트롤러(200)에 제공할 수 있다.
도 1 내지 9를 참조하여 상술한 바와 같이, 불휘발성 메모리 모듈(10)은 복수의 저항성 메모리 셀들을 포함하는 복수의 불휘발성 메모리 칩들(100)을 포함하므로, 불휘발성 메모리 모듈(10)은 중앙 처리 장치(20)의 동작에 필요한 임시 데이터를 저장하는 동작 메모리로서 사용될 수도 있고, 프로그램 및 데이터를 저장하는 데이터 저장 공간으로서 사용될 수도 있다.
일 실시예에 있어서, ECC 코드 칩(300)은 복수의 불휘발성 메모리 칩들(100) 각각과 동일한 구조를 가질 수 있다. 예를 들어, ECC 코드 칩(300)은 도 4에 도시된 불휘발성 메모리 칩(100)으로 구현될 수 있다. 따라서 ECC 코드 칩(300)은 복수의 불휘발성 메모리 칩들(100) 각각과 동일한 구조를 가지되, 복수의 불휘발성 메모리 칩들(100) 각각은 메모리 컨트롤러(30)로부터 제공되는 기입 데이터(DI)를 저장하는 용도로 사용되고, ECC 코드 칩(300)은 메모리 컨트롤러(30)로부터 제공되는 기입 데이터(DI)에 상응하는 상기 제1 ECC 코드를 저장하는 용도로 사용될 수 있다.
도 10은 도 3의 불휘발성 메모리 모듈에 포함되는 모듈 컨트롤러의 일 예를 나타내는 블록도이다.
도 10을 참조하면, 모듈 컨트롤러(200)는 모듈 제어 회로(210) 및 제3 ECC 엔진(220)을 포함할 수 있다.
제3 ECC 엔진(220)은 모듈 제어 회로(210)에 의해 선택적으로 활성화될 수 있다.
일 실시예에 있어서, 모듈 컨트롤러(200)에 포함되는 제3 ECC 엔진(220)의 정정 가능 비트 수는 복수의 불휘발성 메모리 칩들(100)에 포함되는 제2 ECC 엔진(160)의 정정 가능 비트 수보다 클 수 있다.
모듈 제어 회로(210)는 전자 장치(1000)의 파워-업 초기에 메모리 컨트롤러(30)로부터 설정 정보(CI)를 수신할 수 있다. 설정 정보(CI)는 복수의 불휘발성 메모리 칩들(100)의 동작 모드를 나타낼 수 있다.
도 11은 도 1에 도시된 전자 장치의 일 예를 나타내는 블록도이다.
도 11에 도시된 전자 장치(1000a)는 도 1에 도시된 전자 장치(1000)에서 ROM(Read Only Memory)(40)을 더 포함할 수 있다.
ROM(40)은 전자 장치(1000a)의 파워-업 초기에 복수의 불휘발성 메모리 칩들(100)을 상기 메모리 모드 및 상기 저장 모드 중에서 어떤 모드로 동작시킬지 여부를 나타내는 설정 정보(CI)를 저장할 수 있다.
중앙 처리 장치(20)는 파워-업 초기에 ROM(40)으로부터 설정 정보(CI)를 독출하고, 메모리 컨트롤러(30)를 통해 설정 정보(CI)를 불휘발성 메모리 모듈(10)에 포함되는 모듈 컨트롤러(200)에 제공할 수 있다.
모듈 컨트롤러(200)에 포함되는 모듈 제어 회로(210)는 전자 장치(1000)의 파워-업 초기에 메모리 컨트롤러(30)로부터 제공되는 설정 정보(CI)에 기초하여 복수의 불휘발성 메모리 칩들(100)의 상기 동작 모드를 상기 메모리 모드 및 상기 저장 모드 중의 하나로 결정할 수 있다.
다시 도 10을 참조하면, 모듈 제어 회로(210)는 전자 장치(1000)의 파워-업 초기에 메모리 컨트롤러(30)로부터 모드 고정 신호(FXS)를 수신할 수 있다.
모드 고정 신호(FXS)는 복수의 불휘발성 메모리 칩들(100)의 상기 동작 모드가 전자 장치(1000)의 파워-업 초기에 설정 정보(CI)에 기초하여 상기 메모리 모드 및 상기 저장 모드 중의 하나로 고정되어 전자 장치(1000)가 턴오프될 때까지 유지되는지 혹은 복수의 불휘발성 메모리 칩들(100)의 정상 동작 중에 상기 메모리 모드와 상기 저장 모드 사이에서 변경되는지 여부를 나타낼 수 있다. 예를 들어, 모듈 제어 회로(210)는, 모드 고정 신호(FXS)가 제1 논리 레벨인 경우, 복수의 불휘발성 메모리 칩들(100)의 상기 동작 모드가 전자 장치(1000)의 파워-업 초기에 설정 정보(CI)에 기초하여 상기 메모리 모드 및 상기 저장 모드 중의 하나로 고정되어 전자 장치(1000)가 턴오프될 때까지 유지되는 것으로 판단하고, 모드 고정 신호(FXS)가 제2 논리 레벨인 경우, 복수의 불휘발성 메모리 칩들(100)의 상기 동작 모드가 복수의 불휘발성 메모리 칩들(100)의 정상 동작 중에 상기 메모리 모드와 상기 저장 모드 사이에서 변경될 수 있는 것으로 판단할 수 있다.
도 12는 도 3의 불휘발성 메모리 모듈에 포함되는 모듈 컨트롤러의 동작을 나타내는 순서도이다.
도 12에는 복수의 불휘발성 메모리 칩들(100)의 상기 동작 모드가 전자 장치(1000)의 파워-업 초기에 상기 메모리 모드 및 상기 저장 모드 중의 하나로 고정되는지 혹은 복수의 불휘발성 메모리 칩들(100)의 정상 동작 중에 상기 메모리 모드와 상기 저장 모드 사이에서 변경될 수 있는지 여부, 및 복수의 불휘발성 메모리 칩들(100)이 상기 메모리 모드로 동작하는지 혹은 상기 저장 모드로 동작하는지 여부에 따른 모듈 컨트롤러(200)의 동작을 나타낸다.
도 10 및 12를 참조하면, 모듈 제어 회로(210)는 모드 고정 신호(FXS)에 기초하여 복수의 불휘발성 메모리 칩들(100)의 상기 동작 모드가 전자 장치(1000)의 파워-업 초기에 상기 메모리 모드 및 상기 저장 모드 중의 하나로 고정되는지 혹은 복수의 불휘발성 메모리 칩들(100)의 정상 동작 중에 상기 메모리 모드와 상기 저장 모드 사이에서 변경될 수 있는지 여부를 판단할 수 있다(단계 S100).
복수의 불휘발성 메모리 칩들(100)의 상기 동작 모드가 전자 장치(1000)의 파워-업 초기에 상기 메모리 모드 및 상기 저장 모드 중의 하나로 고정되는 경우(단계 S100; 예), 모듈 제어 회로(210)는 복수의 불휘발성 메모리 칩들(100)의 상기 동작 모드를 판단할 수 있다(단계 S110).
복수의 불휘발성 메모리 칩들(100)의 상기 동작 모드가 전자 장치(1000)의 파워-업 초기에 상기 메모리 모드로 고정되는 경우, 모듈 제어 회로(210)는 복수의 불휘발성 메모리 칩들(100)에 포함되는 제2 ECC 엔진(160)을 활성화시키고 모듈 컨트롤러(200)에 포함되는 제3 ECC 엔진(220)을 비활성화시킬 수 있다(단계 S200). 따라서 복수의 불휘발성 메모리 칩들(100)이 복수의 불휘발성 메모리 칩들(100)에 저장되는 데이터에 대해 상기 제2 ECC 동작을 수행할 수 있다.
이 경우, 기입 동작 시, 모듈 제어 회로(210)는 메모리 컨트롤러(30)로부터 커맨드(CMD), 어드레스(ADDR), 기입 데이터(DI), 및 기입 데이터(DI)에 상응하는 제1 ECC 코드(ECC_C1)를 수신하고, 커맨드(CMD), 어드레스(ADDR), 및 기입 데이터(DI)를 복수의 불휘발성 메모리 칩들(100) 중의 적어도 하나에 제공하고, 제1 ECC 코드(ECC_C1)를 ECC 코드 칩(300)에 저장할 수 있다. 모듈 제어 회로(210)로부터 커맨드(CMD), 어드레스(ADDR), 및 기입 데이터(DI)를 수신하는 불휘발성 메모리 칩(100)은 기입 데이터(DI)에 상응하는 상기 제2 ECC 코드를 생성하고, 커맨드(CMD) 및 어드레스(ADDR)에 기초하여 기입 데이터(DI) 및 상기 제2 ECC 코드를 각각 복수의 불휘발성 메모리 셀 어레이 층들(MCAL1, MCAL2, MCAL3, MCAL4)에 포함되는 상기 데이터 셀들 및 상기 ECC 코드 셀들에 기입할 수 있다.
한편, 독출 동작 시, 복수의 불휘발성 메모리 칩들(100) 중의 적어도 하나는 복수의 불휘발성 메모리 셀 어레이 층들(MCAL1, MCAL2, MCAL3, MCAL4)에 포함되는 상기 데이터 셀들 및 상기 ECC 코드 셀들에 각각 저장된 독출 데이터(DO) 및 독출 데이터(DO)에 상응하는 상기 제2 ECC 코드를 독출하고, 상기 제2 ECC 코드에 기초하여 독출 데이터(DO)의 에러를 검출하고 정정한 후, 독출 데이터(DO)를 모듈 제어 회로(210)에 제공할 수 있다. 모듈 제어 회로(210)는 ECC 코드 칩(300)으로부터 독출 데이터(DO)에 상응하는 제1 ECC 코드(ECC_C1)를 독출하고, 복수의 불휘발성 메모리 칩들(100)로부터 수신되는 독출 데이터(DO) 및 ECC 코드 칩(300)으로부터 독출되는 제1 ECC 코드(ECC_C1)를 메모리 컨트롤러(30)에 제공할 수 있다.
반면에, 복수의 불휘발성 메모리 칩들(100)의 상기 동작 모드가 전자 장치(1000)의 파워-업 초기에 상기 저장 모드로 고정되는 경우, 모듈 제어 회로(210)는 복수의 불휘발성 메모리 칩들(100)에 포함되는 제2 ECC 엔진(160)을 비활성화시키고 모듈 컨트롤러(200)에 포함되는 제3 ECC 엔진(220)을 활성화시킬 수 있다(단계 S300). 따라서 모듈 컨트롤러(200)가 복수의 불휘발성 메모리 칩들(100)에 저장되는 데이터에 대해 상기 제2 ECC 동작을 수행할 수 있다.
이 경우, 기입 동작 시, 모듈 제어 회로(210)는 메모리 컨트롤러(30)로부터 커맨드(CMD), 어드레스(ADDR), 기입 데이터(DI), 및 기입 데이터(DI)에 상응하는 제1 ECC 코드(ECC_C1)를 수신할 수 있다. 모듈 제어 회로(210)는 기입 데이터(DI)를 제3 ECC 엔진(220)에 제공하고, 제3 ECC 엔진(220)은 기입 데이터(DI)에 상응하는 제3 ECC 코드(ECC_C3)를 생성하여 모듈 제어 회로(210)에 제공할 수 있다. 이후, 모듈 제어 회로(210)는 커맨드(CMD), 어드레스(ADDR), 기입 데이터(DI), 및 제3 ECC 코드(ECC_C3)를 복수의 불휘발성 메모리 칩들(100) 중의 적어도 하나에 제공하고, 제1 ECC 코드(ECC_C1)를 ECC 코드 칩(300)에 저장할 수 있다. 모듈 제어 회로(210)로부터 커맨드(CMD), 어드레스(ADDR), 기입 데이터(DI), 및 제3 ECC 코드(ECC_C3)를 수신하는 불휘발성 메모리 칩(100)은 커맨드(CMD) 및 어드레스(ADDR)에 기초하여 기입 데이터(DI) 및 제3 ECC 코드(ECC_C3)를 각각 복수의 불휘발성 메모리 셀 어레이 층들(MCAL1, MCAL2, MCAL3, MCAL4)에 포함되는 상기 데이터 셀들 및 상기 ECC 코드 셀들에 기입할 수 있다.
한편, 독출 동작 시, 복수의 불휘발성 메모리 칩들(100) 중의 적어도 하나는 복수의 불휘발성 메모리 셀 어레이 층들(MCAL1, MCAL2, MCAL3, MCAL4)에 포함되는 상기 데이터 셀들 및 상기 ECC 코드 셀들에 각각 저장된 독출 데이터(DO) 및 독출 데이터(DO)에 상응하는 제3 ECC 코드(ECC_C3)를 독출하고, 독출 데이터(DO) 및 제3 ECC 코드(ECC_C3)를 모듈 제어 회로(210)에 제공할 수 있다. 모듈 제어 회로(210)는 독출 데이터(DO) 및 제3 ECC 코드(ECC_C3)를 제3 ECC 엔진(220)에 제공하고, 제3 ECC 엔진(220)은 제3 ECC 코드(ECC_C3)에 기초하여 독출 데이터(DO)의 에러를 검출하고 정정한 후, 독출 데이터(DO)를 모듈 제어 회로(210)에 제공할 수 있다. 모듈 제어 회로(210)는 ECC 코드 칩(300)으로부터 독출 데이터(DO)에 상응하는 제1 ECC 코드(ECC_C1)를 독출하고, 제3 ECC 엔진(220)으로부터 수신되는 독출 데이터(DO) 및 ECC 코드 칩(300)으로부터 독출되는 제1 ECC 코드(ECC_C1)를 메모리 컨트롤러(30)에 제공할 수 있다.
한편, 복수의 불휘발성 메모리 칩들(100)의 상기 동작 모드가 복수의 불휘발성 메모리 칩들(100)의 정상 동작 중에 상기 메모리 모드와 상기 저장 모드 사이에서 변경될 수 있는 경우(단계 S100; 아니오), 모듈 제어 회로(210)는 복수의 불휘발성 메모리 칩들(100)의 상기 동작 모드에 무관하게, 복수의 불휘발성 메모리 칩들(100)에 포함되는 제2 ECC 엔진(160)을 활성화시키고 모듈 컨트롤러(200)에 포함되는 제3 ECC 엔진(220)을 비활성화시킬 수 있다(단계 S400). 따라서 복수의 불휘발성 메모리 칩들(100)이 복수의 불휘발성 메모리 칩들(100)에 저장되는 데이터에 대해 상기 제2 ECC 동작을 수행할 수 있다.
이 경우, 기입 동작 및 독출 동작 시, 모듈 컨트롤러(200) 및 복수의 불휘발성 메모리 칩들(100)은 상기 단계 S200을 참조하여 상술한 바와 동일한 동작을 수행할 수 있다.
일 실시예에 있어서, 불휘발성 메모리 모듈(10)에 포함되는 복수의 불휘발성 메모리 칩들(100)의 상기 동작 모드는 불휘발성 메모리 칩들(100)의 정상 동작 중에 중앙 처리 장치(20)로부터의 명령에 의해 결정될 수 있다.
예를 들어, 중앙 처리 장치(20)는 불휘발성 메모리 칩들(100)의 정상 동작 중에 복수의 불휘발성 메모리 칩들(100)을 상기 메모리 모드 및 상기 저장 모드 중에서 어떤 모드로 동작시킬지 여부를 나타내는 모드 신호를 생성하고, 메모리 컨트롤러(30)를 통해 상기 모드 신호를 불휘발성 메모리 모듈(10)에 포함되는 모듈 컨트롤러(200)에 제공할 수 있다.
이 경우, 모듈 컨트롤러(200)는 상기 모드 신호에 기초하여 복수의 불휘발성 메모리 칩들(100)을 상기 메모리 모드 및 상기 저장 모드 중의 하나로 동작시킬 수 있다.
다른 실시예에 있어서, 모듈 컨트롤러(200)는 불휘발성 메모리 칩들(100)의 정상 동작 중에 복수의 불휘발성 메모리 칩들(100)의 내구성(endurance) 수준에 기초하여 복수의 불휘발성 메모리 칩들(100)의 상기 동작 모드를 결정할 수 있다.
일 실시예에 있어서, 모듈 컨트롤러(200)는 복수의 불휘발성 메모리 칩들(100) 각각에 대해 수행되는 기입(write) 동작 및 소거 동작(erase) 중의 적어도 하나의 횟수에 기초하여 복수의 불휘발성 메모리 칩들(100)의 동작 모드를 상기 메모리 모드 및 상기 저장 모드 중의 하나로 동작시킬 수 있다.
예를 들어, 모듈 컨트롤러(200)는 복수의 불휘발성 메모리 칩들(100) 각각에 대해 수행되는 기입 동작 및 소거 동작 중의 적어도 하나의 횟수를 카운트하여 사용 값을 생성할 수 있다. 모듈 컨트롤러(200)는 복수의 불휘발성 메모리 칩들(100) 중에서 상기 사용 값이 기준 값 이상인 불휘발성 메모리 칩의 개수가 문턱 개수 미만인 경우 복수의 불휘발성 메모리 칩들(100)을 상기 메모리 모드로 동작시킬 수 있다. 한편, 모듈 컨트롤러(200)는 복수의 불휘발성 메모리 칩들(100) 중에서 상기 사용 값이 상기 기준 값 이상인 불휘발성 메모리 칩의 개수가 상기 문턱 개수 이상인 경우 복수의 불휘발성 메모리 칩들(100)을 상기 저장 모드로 동작시킬 수 있다.
한편, 모듈 컨트롤러(200)는 결정된 복수의 불휘발성 메모리 칩들(100)의 상기 동작 모드를 메모리 컨트롤러(30)를 통해 중앙 처리 장치(20)에 통보할 수 있다. 이 경우, 중앙 처리 장치(20)는 결정된 복수의 불휘발성 메모리 칩들(100)의 상기 동작 모드에 기초하여 불휘발성 메모리 모듈(10)을 사용할 수 있다.
도 1 내지 12를 참조하여 상술한 바와 같이, 본 발명의 실시예들에 따른 전자 장치(1000)에 포함되는 상기 메모리 시스템에서, 메모리 컨트롤러(30)는 불휘발성 메모리 모듈(10)과 송수신되는 데이터에 대해 상기 제1 ECC 동작을 수행함으로써 메모리 컨트롤러(30)와 불휘발성 메모리 모듈(10) 사이의 데이터 송수신 과정에서 발생할 수 있는 데이터 에러를 정정하고, 불휘발성 메모리 모듈(10)은 내부적으로 복수의 불휘발성 메모리 칩들(100)에 저장되는 데이터에 대해 상기 제2 ECC 동작을 수행함으로써 메모리 컨트롤러(30)로부터 수신되는 기입 데이터(DI)를 복수의 불휘발성 메모리 칩들(100)에 저장하는 과정 및 복수의 불휘발성 메모리 칩들(100)에 저장된 독출 데이터(DO)를 독출하는 과정에서 발생할 수 있는 데이터 에러를 모듈 내부에서 정정할 수 있다. 이와 같이, 전자 장치(1000)에 포함되는 상기 메모리 시스템은 계층적으로(hierarchically) 두 단계에 걸쳐 ECC 동작을 수행하므로, 상기 메모리 시스템의 동작 신뢰성은 더욱 향상될 수 있다.
또한, 일반적으로 상기 메모리 모드에서 메모리 컨트롤러(30)로부터 복수의 메모리 칩들(100)에 저장되는 데이터의 크기는 상대적으로 작을 수 있다. 따라서 복수의 불휘발성 메모리 칩들(100)의 상기 동작 모드가 전자 장치(1000)의 파워-업 초기에 상기 메모리 모드로 고정되어 동작하는 경우, 복수의 불휘발성 메모리 칩들(100)에 포함되는 제2 ECC 엔진(160)이 활성화되고 모듈 컨트롤러(200)에 포함되는 제3 ECC 엔진(220)은 비활성화됨으로써, 복수의 불휘발성 메모리 칩들(100) 각각이 내부에 저장되는 데이터에 대해 상기 제2 ECC 동작을 수행할 수 있다.
이에 반해, 상기 저장 모드에서 메모리 컨트롤러(30)로부터 복수의 메모리 칩들(100)에 저장되는 데이터의 크기는 상대적으로 크다. 따라서 복수의 불휘발성 메모리 칩들(100)의 상기 동작 모드가 전자 장치(1000)의 파워-업 초기에 상기 저장 모드로 고정되어 동작하는 경우, 복수의 불휘발성 메모리 칩들(100)에 포함되는 제2 ECC 엔진(160)이 비활성화되고 모듈 컨트롤러(200)에 포함되는 제3 ECC 엔진(220)은 활성화됨으로써, 모듈 컨트롤러(200)가 복수의 불휘발성 메모리 칩들(100)에 저장되는 데이터에 대해 상기 제2 ECC 동작을 수행할 수 있다.
상술한 바와 같이, 모듈 컨트롤러(200)에 포함되는 제3 ECC 엔진(220)의 정정 가능 비트 수는 복수의 불휘발성 메모리 칩들(100)에 포함되는 제2 ECC 엔진(160)의 정정 가능 비트 수보다 크므로, 메모리 컨트롤러(30)로부터 복수의 메모리 칩들(100)에 저장되는 데이터의 크기가 상대적으로 작은 상기 메모리 모드에서는 복수의 불휘발성 메모리 칩들(100)에 포함되는 제2 ECC 엔진(160)을 사용하여 상기 제2 ECC 동작을 수행하고, 메모리 컨트롤러(30)로부터 복수의 메모리 칩들(100)에 저장되는 데이터의 크기가 상대적으로 큰 상기 저장 모드에서는 모듈 컨트롤러(200)에 포함되는 제3 ECC 엔진(220)을 사용하여 상기 제2 ECC 동작을 수행함으로써, 상기 메모리 시스템의 전체적인 ECC 동작은 복수의 불휘발성 메모리 칩들(100)의 상기 동작 모드에 따라 최적화될 수 있다.
한편, 복수의 불휘발성 메모리 칩들(100)의 상기 동작 모드가 복수의 불휘발성 메모리 칩들(100)의 정상 동작 중에 상기 메모리 모드와 상기 저장 모드 사이에서 변경될 수 있는 경우에는, 복수의 불휘발성 메모리 칩들(100)의 상기 동작 모드에 무관하게, 복수의 불휘발성 메모리 칩들(100)에 포함되는 제2 ECC 엔진(160) 및 모듈 컨트롤러(200)에 포함되는 제3 ECC 엔진(220) 중의 하나를 고정적으로 사용하여 상기 제2 ECC 동작을 수행할 필요가 있다. 복수의 불휘발성 메모리 칩들(100)이 상기 메모리 모드로 동작하는 경우에 정정 가능 비트 수가 상대적으로 큰 제3 ECC 엔진(220)을 사용하여 상기 제2 ECC 동작을 수행하는 경우, ECC 디코딩 속도가 느릴 수 있다. 따라서 복수의 불휘발성 메모리 칩들(100)의 상기 동작 모드가 복수의 불휘발성 메모리 칩들(100)의 정상 동작 중에 상기 메모리 모드와 상기 저장 모드 사이에서 변경될 수 있는 경우, 상기 메모리 시스템은 복수의 불휘발성 메모리 칩들(100)에 포함되는 제2 ECC 엔진(160)을 사용하여 상기 제2 ECC 동작을 수행할 수 있다.
도 13은 도 1의 전자 장치가 컴퓨팅 시스템에 응용된 예를 나타내는 도면이다.
도 13을 참조하면, 컴퓨팅 시스템(900)은 프로세서(910), 입출력 허브(IOH)(920), 입출력 컨트롤러 허브(ICH)(930), 적어도 하나의 메모리 모듈(940), 및 그래픽 카드(950)를 포함한다. 실시예에 따라, 컴퓨팅 시스템(900)은 개인용 컴퓨터(Personal Computer; PC), 서버 컴퓨터(Server Computer), 워크스테이션(Workstation), 노트북(Laptop), 디지털 TV(Digital Television), 셋-탑 박스(Set-Top Box), 음악 재생기(Music Player), 네비게이션(Navigation) 시스템 등과 같은 임의의 컴퓨팅 시스템일 수 있다.
프로세서(910)는 특정 계산들 또는 태스크들을 실행하는 특정 소프트웨어를 실행하는 것과 같이 다양한 컴퓨팅 기능들을 실행할 수 있다. 예를 들어, 프로세서(910)는 마이크로프로세서 또는 중앙 처리 장치(Central Processing Unit; CPU)일 수 있다. 실시예에 따라, 프로세서(910)는 하나의 프로세서 코어를 포함하거나, 복수의 프로세서 코어들을 포함할 수 있다. 예를 들어, 프로세서(910)는 듀얼 코어(Dual-Core), 쿼드 코어(Quad-Core), 헥사 코어(Hexa-Core) 등의 멀티 코어(Multi-Core)를 포함할 수 있다. 또한, 도 13에는 하나의 프로세서(910)를 포함하는 컴퓨팅 시스템(900)이 도시되어 있으나, 실시예에 따라, 컴퓨팅 시스템(900)은 복수의 프로세서들을 포함할 수 있다.
프로세서(910)는 메모리 모듈(940)의 동작을 제어하는 메모리 컨트롤러(911)를 포함할 수 있다. 프로세서(910)에 포함된 메모리 컨트롤러(911)는 집적 메모리 컨트롤러(Integrated Memory Controller; IMC)라 불릴 수 있다. 메모리 컨트롤러(911)는 메모리 인터페이스를 통해 메모리 모듈(940)과 연결될 수 있다. 실시예에 따라, 메모리 컨트롤러(911)는 입출력 허브(920) 내에 위치할 수 있다. 메모리 컨트롤러(911)를 포함하는 입출력 허브(920)는 메모리 컨트롤러 허브(Memory Controller Hub; MCH)라 불릴 수 있다.
프로세서(910), 메모리 컨트롤러(911) 및 메모리 모듈(940)은 도 1에 도시된 전자 장치(1000)로 구현될 수 있다. 도 1에 도시된 전자 장치(1000)의 구성 및 동작에 대해서는 도 1 내지 12를 참조하여 상세히 설명하였으므로, 여기서는 프로세서(910), 메모리 컨트롤러(911) 및 메모리 모듈(940)에 대한 상세한 설명은 생략한다.
입출력 허브(920)는 그래픽 카드(950)와 같은 장치들과 프로세서(910) 사이의 데이터 전송을 관리할 수 있다. 입출력 허브(920)는 다양한 방식의 인터페이스를 통하여 프로세서(910)에 연결될 수 있다. 예를 들어, 입출력 허브(920)와 프로세서(910)는, 프론트 사이드 버스(Front Side Bus; FSB), 시스템 버스(System Bus), 하이퍼트랜스포트(HyperTransport), 라이트닝 데이터 트랜스포트(Lightning Data Transport; LDT), 퀵패스 인터커넥트(QuickPath Interconnect; QPI), 공통 시스템 인터페이스(Common System Interface; CSI) 등의 다양한 표준의 인터페이스로 연결될 수 있다. 입출력 허브(920)는 장치들과의 다양한 인터페이스들을 제공할 수 있다. 예를 들어, 입출력 허브(920)는 가속 그래픽 포트(Accelerated Graphics Port; AGP) 인터페이스, 주변 구성요소 인터페이스-익스프레스(Peripheral Component Interface-Express; PCIe), 통신 스트리밍 구조(Communications Streaming Architecture; CSA) 인터페이스 등을 제공할 수 있다. 도 13에는 하나의 입출력 허브(920)를 포함하는 컴퓨팅 시스템(900)이 도시되어 있으나, 실시예에 따라, 컴퓨팅 시스템(900)은 복수의 입출력 허브들을 포함할 수 있다.
그래픽 카드(950)는 AGP 또는 PCIe를 통하여 입출력 허브(920)와 연결될 수 있다. 그래픽 카드(950)는 영상을 표시하기 위한 디스플레이 장치를 제어할 수 있다. 그래픽 카드(950)는 이미지 데이터 처리를 위한 내부 프로세서 및 내부 메모리 장치를 포함할 수 있다. 실시예에 따라, 그래픽 카드(950)는 입출력 허브(920) 외부에 위치할 수도 있고 입출력 허브(920)의 내부에 위치할 수도 있다. 입출력 허브(920)에 포함된 그래픽 장치는 집적 그래픽(Integrated Graphics)이라 불릴 수 있다. 또한, 메모리 컨트롤러 및 그래픽 장치를 포함하는 입출력 허브(920)는 그래픽 및 메모리 컨트롤러 허브(Graphics and Memory Controller Hub; GMCH)라 불릴 수 있다.
입출력 컨트롤러 허브(930)는 다양한 시스템 인터페이스들이 효율적으로 동작하도록 데이터 버퍼링 및 인터페이스 중재를 수행할 수 있다. 입출력 컨트롤러 허브(930)는 내부 버스를 통하여 입출력 허브(920)와 연결될 수 있다. 예를 들어, 입출력 허브(920)와 입출력 컨트롤러 허브(930)는 다이렉트 미디어 인터페이스(Direct Media Interface; DMI), 허브 인터페이스, 엔터프라이즈 사우스브릿지 인터페이스(Enterprise Southbridge Interface; ESI), PCIe 등을 통하여 연결될 수 있다.
입출력 컨트롤러 허브(930)는 주변 장치들과의 다양한 인터페이스들을 제공할 수 있다. 예를 들어, 입출력 컨트롤러 허브(930)는 범용 직렬 버스(Universal Serial Bus USB) 포트, 직렬ATA(Serial Advanced Technology Attachment; SATA) 포트, 범용 입출력(General Purpose Input/Output; GPIO), 로우 핀 카운트(Low Pin Count; LPC) 버스, 직렬 주변 인터페이스(Serial Peripheral Interface; SPI), PCI, PCIe 등을 제공할 수 있다.
실시예에 따라, 프로세서(910), 입출력 허브(920) 및 입출력 컨트롤러 허브(930)는 각각 분리된 칩셋들 또는 집적 회로들로 구현될 수도 있고, 프로세서(910), 입출력 허브(920) 및 입출력 컨트롤러 허브(930) 중에서 둘 이상의 구성요소들이 하나의 칩셋으로 구현될 수도 있다.
본 발명은 불휘발성 메모리를 사용하여 데이터를 저장하는 임의의 전자 장치에 유용하게 이용될 수 있다.
상술한 바와 같이, 본 발명의 바람직한 실시예를 참조하여 설명하였지만 해당 기술 분야에서 통상의 지식을 가진 자라면 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.

Claims (20)

  1. 인쇄 회로 기판(Printed Circuit Board, PCB) 상에 순차적으로 배치되고, 복수의 불휘발성 메모리 셀들을 포함하며, 동작 메모리로서 사용되는 메모리 모드 및 데이터 저장 공간으로서 사용되는 저장 모드 중의 하나로 동작하는 복수의 메모리 칩들, 및 상기 인쇄 회로 기판 상에 배치되고, 상기 복수의 메모리 칩들의 동작을 제어하는 모듈 컨트롤러를 포함하는 불휘발성 메모리 모듈; 및
    상기 불휘발성 메모리 모듈에 대해 기입 동작 및 독출 동작을 수행하고, 상기 불휘발성 메모리 모듈과 송수신되는 데이터에 대해 제1 에러 체크 및 정정(Error Check and Correction; ECC) 동작을 수행하는 메모리 컨트롤러를 포함하고,
    상기 복수의 메모리 칩들의 동작 모드에 기초하여 상기 복수의 메모리 칩들 및 상기 모듈 컨트롤러 중의 하나가 상기 복수의 메모리 칩들에 저장되는 데이터에 대해 제2 ECC 동작을 수행하는 메모리 시스템.
  2. 제1 항에 있어서, 상기 메모리 컨트롤러는,
    상기 기입 동작 시, 기입 데이터에 대한 ECC 코드를 생성하고, 상기 기입 데이터 및 상기 ECC 코드를 상기 모듈 컨트롤러에 제공하고,
    상기 독출 동작 시, 상기 모듈 컨트롤러로부터 독출 데이터 및 상기 ECC 코드를 수신하고, 상기 ECC 코드에 기초하여 상기 독출 데이터의 에러를 검출하고 정정하는 메모리 시스템.
  3. 제2 항에 있어서, 상기 불휘발성 메모리 모듈은, 상기 인쇄 회로 기판 상에 배치되고, 복수의 불휘발성 메모리 셀들을 포함하는 ECC 코드 칩을 더 포함하고,
    상기 모듈 컨트롤러는,
    상기 기입 동작 시, 상기 기입 데이터를 상기 복수의 메모리 칩들 중의 적어도 하나에 기입하고, 상기 ECC 코드를 상기 ECC 코드 칩에 기입하고,
    상기 독출 동작 시, 상기 복수의 메모리 칩들로부터 상기 독출 데이터를 독출하고, 상기 ECC 코드 칩으로부터 상기 독출 데이터에 상응하는 상기 ECC 코드를 독출하고, 상기 독출 데이터 및 상기 ECC 코드를 상기 메모리 컨트롤러에 제공하는 메모리 시스템.
  4. 제1 항에 있어서, 상기 복수의 메모리 칩들의 상기 동작 모드는 상기 복수의 메모리 칩들의 파워-업 초기에 상기 메모리 모드 및 상기 저장 모드 중의 하나로 고정되는 메모리 시스템.
  5. 제4 항에 있어서, 상기 복수의 메모리 칩들이 상기 메모리 모드로 동작하는 경우, 상기 복수의 메모리 칩들이 상기 복수의 메모리 칩들에 저장되는 데이터에 대해 상기 제2 ECC 동작을 수행하는 메모리 시스템.
  6. 제5 항에 있어서, 상기 기입 동작 시, 상기 모듈 컨트롤러는 상기 메모리 컨트롤러로부터 기입 데이터를 수신하고, 상기 기입 데이터를 상기 복수의 메모리 칩들 중의 적어도 하나에 제공하고,
    상기 복수의 메모리 칩들 각각은 상기 모듈 컨트롤러로부터 상기 기입 데이터를 수신하는 경우, 상기 기입 데이터에 대한 ECC 코드를 생성하고, 상기 기입 데이터 및 상기 ECC 코드를 내부에 포함되는 상기 복수의 불휘발성 메모리 셀들에 저장하는 메모리 시스템.
  7. 제5 항에 있어서, 상기 독출 동작 시, 상기 복수의 메모리 칩들 중의 적어도 하나는 내부에 포함되는 상기 복수의 불휘발성 메모리 셀들에 저장된 독출 데이터 및 상기 독출 데이터에 상응하는 ECC 코드를 독출하고, 상기 ECC 코드에 기초하여 상기 독출 데이터의 에러를 검출하고 정정한 후 상기 독출 데이터를 상기 모듈 컨트롤러에 제공하고,
    상기 모듈 컨트롤러는 상기 복수의 메모리 칩들로부터 수신되는 상기 독출 데이터를 상기 메모리 컨트롤러에 제공하는 메모리 시스템.
  8. 제4 항에 있어서, 상기 복수의 메모리 칩들이 상기 저장 모드로 동작하는 경우, 상기 모듈 컨트롤러가 상기 복수의 메모리 칩들에 저장되는 데이터에 대해 상기 제2 ECC 동작을 수행하는 메모리 시스템.
  9. 제8 항에 있어서, 상기 기입 동작 시, 상기 모듈 컨트롤러는 상기 메모리 컨트롤러로부터 기입 데이터를 수신하고, 상기 기입 데이터에 대한 ECC 코드를 생성하고, 상기 기입 데이터 및 상기 ECC 코드를 상기 복수의 메모리 칩들 중의 적어도 하나에 제공하고,
    상기 복수의 메모리 칩들 각각은 상기 모듈 컨트롤러로부터 상기 기입 데이터 및 상기 ECC 코드를 수신하는 경우, 상기 기입 데이터 및 상기 ECC 코드를 내부에 포함되는 상기 복수의 불휘발성 메모리 셀들에 저장하는 메모리 시스템.
  10. 제8 항에 있어서, 상기 독출 동작 시, 상기 복수의 메모리 칩들 중의 적어도 하나는 내부에 포함되는 상기 복수의 불휘발성 메모리 셀들에 저장된 독출 데이터 및 상기 독출 데이터에 상응하는 상기 ECC 코드를 상기 모듈 컨트롤러에 제공하고,
    상기 모듈 컨트롤러는 상기 복수의 메모리 칩들로부터 수신되는 상기 ECC 코드에 기초하여 상기 독출 데이터의 에러를 검출하고 정정한 후 상기 독출 데이터를 상기 메모리 컨트롤러에 제공하는 메모리 시스템.
  11. 제1 항에 있어서, 상기 복수의 메모리 칩들의 상기 동작 모드는 상기 복수의 메모리 칩들의 정상 동작 중에 변경되는 메모리 시스템.
  12. 제11 항에 있어서, 상기 모듈 컨트롤러는 상기 복수의 메모리 칩들의 정상 동작 중에 상기 복수의 메모리 칩들의 내구성(endurance) 수준에 기초하여 상기 복수의 메모리 칩들의 상기 동작 모드를 결정하는 메모리 시스템.
  13. 제11 항에 있어서, 상기 복수의 메모리 칩들의 상기 동작 모드에 무관하게, 상기 복수의 메모리 칩들이 상기 복수의 메모리 칩들에 저장되는 데이터에 대해 상기 제2 ECC 동작을 수행하는 메모리 시스템.
  14. 제1 항에 있어서, 상기 복수의 메모리 칩들은 저장되는 데이터의 논리 레벨에 기초하여 가변되는 저항값을 갖는 복수의 저항성 메모리 셀들을 포함하는 메모리 시스템.
  15. 제1 항에 있어서, 상기 복수의 메모리 칩들 및 상기 모듈 컨트롤러는 NVDIMM(Non-Volatile Dual In-line Memory Module) 표준에 따라 상기 인쇄 회로 기판 상에 배치되는 메모리 시스템.
  16. 인쇄 회로 기판 상에 순차적으로 배치되고, 복수의 불휘발성 메모리 셀들을 포함하며, 동작 메모리로서 사용되는 메모리 모드 및 데이터 저장 공간으로서 사용되는 저장 모드 중의 하나로 동작하는 복수의 메모리 칩들, 및 상기 인쇄 회로 기판 상에 배치되고, 상기 복수의 메모리 칩들의 동작을 제어하는 모듈 컨트롤러를 포함하는 불휘발성 메모리 모듈; 및
    상기 불휘발성 메모리 모듈에 대해 기입 동작 및 독출 동작을 수행하고, 상기 불휘발성 메모리 모듈과 송수신되는 데이터에 대해 제1 ECC 동작을 수행하는 메모리 컨트롤러를 포함하고,
    상기 복수의 메모리 칩들의 동작 모드가 상기 복수의 메모리 칩들의 정상 동작 중에 변경될 수 있는지 여부에 기초하여 상기 복수의 메모리 칩들 및 상기 모듈 컨트롤러 중의 하나가 상기 복수의 메모리 칩들에 저장되는 데이터에 대해 제2 ECC 동작을 수행하는 메모리 시스템.
  17. 제16 항에 있어서, 상기 복수의 메모리 칩들의 상기 동작 모드가 상기 복수의 메모리 칩들의 파워-업 초기에 상기 메모리 모드로 고정되는 경우, 상기 복수의 메모리 칩들이 상기 복수의 메모리 칩들에 저장되는 데이터에 대해 상기 제2 ECC 동작을 수행하는 메모리 시스템.
  18. 제16 항에 있어서, 상기 복수의 메모리 칩들의 상기 동작 모드가 상기 복수의 메모리 칩들의 파워-업 초기에 상기 저장 모드로 고정되는 경우, 상기 모듈 컨트롤러가 상기 복수의 메모리 칩들에 저장되는 데이터에 대해 상기 제2 ECC 동작을 수행하는 메모리 시스템.
  19. 제16 항에 있어서, 상기 복수의 메모리 칩들의 동작 모드가 상기 복수의 메모리 칩들의 정상 동작 중에 변경되는 경우, 상기 복수의 메모리 칩들의 상기 동작 모드에 무관하게, 상기 복수의 메모리 칩들이 상기 복수의 메모리 칩들에 저장되는 데이터에 대해 상기 제2 ECC 동작을 수행하는 메모리 시스템.
  20. 인쇄 회로 기판 상에 순차적으로 배치되고, 복수의 불휘발성 메모리 셀들을 포함하며, 동작 메모리로서 사용되는 메모리 모드 및 데이터 저장 공간으로서 사용되는 저장 모드 중의 하나로 동작하는 복수의 메모리 칩들, 및 상기 인쇄 회로 기판 상에 배치되고, 상기 복수의 메모리 칩들의 동작을 제어하는 모듈 컨트롤러를 포함하는 불휘발성 메모리 모듈;
    상기 복수의 메모리 칩들의 동작 모드를 나타내는 설정 정보를 저장하는 ROM(Read Only Memory);
    중앙 처리 장치(Central Processing Unit; CPU); 및
    상기 중앙 처리 장치의 제어 하에 상기 불휘발성 메모리 모듈에 대해 기입 동작 및 독출 동작을 수행하고, 상기 불휘발성 메모리 모듈과 송수신되는 데이터에 대해 제1 ECC 동작을 수행하는 메모리 컨트롤러를 포함하고,
    상기 복수의 메모리 칩들의 상기 동작 모드가 상기 복수의 메모리 칩들의 정상 동작 중에 변경될 수 있는지 여부 및 상기 복수의 메모리 칩들이 상기 메모리 모드로 동작하는지 상기 저장 모드로 동작하는지 여부에 기초하여 상기 복수의 메모리 칩들 및 상기 모듈 컨트롤러 중의 하나가 상기 복수의 메모리 칩들에 저장되는 데이터에 대해 제2 ECC 동작을 수행하는 전자 장치.
KR1020150189986A 2015-12-30 2015-12-30 불휘발성 메모리 모듈을 포함하는 메모리 시스템 및 전자 장치 KR102407437B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020150189986A KR102407437B1 (ko) 2015-12-30 2015-12-30 불휘발성 메모리 모듈을 포함하는 메모리 시스템 및 전자 장치
US15/393,844 US9952789B2 (en) 2015-12-30 2016-12-29 Memory systems and electronic devices including nonvolatile memory modules

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150189986A KR102407437B1 (ko) 2015-12-30 2015-12-30 불휘발성 메모리 모듈을 포함하는 메모리 시스템 및 전자 장치

Publications (2)

Publication Number Publication Date
KR20170079427A true KR20170079427A (ko) 2017-07-10
KR102407437B1 KR102407437B1 (ko) 2022-06-10

Family

ID=59226485

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150189986A KR102407437B1 (ko) 2015-12-30 2015-12-30 불휘발성 메모리 모듈을 포함하는 메모리 시스템 및 전자 장치

Country Status (2)

Country Link
US (1) US9952789B2 (ko)
KR (1) KR102407437B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190057810A (ko) * 2017-11-20 2019-05-29 에스케이하이닉스 주식회사 메모리 컨트롤러 및 메모리 모듈을 갖는 메모리 시스템 및 그 메모리 시스템에서의 데이터 처리 방법

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200092036A (ko) * 2019-01-24 2020-08-03 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US11003376B2 (en) * 2019-09-13 2021-05-11 Toshiba Memory Corporation Reconfigurable SSD storage pool

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015126518A2 (en) * 2014-02-20 2015-08-27 Rambus Inc. High performance persistent memory
US20150248935A1 (en) * 2009-02-11 2015-09-03 HGST Netherlands B.V. Apparatus, systems, and methods for operating flash backed dram module
KR20150116522A (ko) * 2014-04-07 2015-10-16 에스케이하이닉스 주식회사 휘발성 메모리, 이를 포함하는 메모리 모듈 및 메모리 모듈의 동작 방법
KR20150120558A (ko) * 2014-04-17 2015-10-28 에스케이하이닉스 주식회사 휘발성 메모리 장치, 이를 포함하는 메모리 모듈 및 메모리 모듈의 동작 방법

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1870814B1 (en) * 2006-06-19 2014-08-13 Texas Instruments France Method and apparatus for secure demand paging for processor devices
JP2006323739A (ja) 2005-05-20 2006-11-30 Renesas Technology Corp メモリモジュール、メモリシステム、及び情報機器
US7831882B2 (en) * 2005-06-03 2010-11-09 Rambus Inc. Memory system with error detection and retry modes of operation
JP4691123B2 (ja) * 2008-03-01 2011-06-01 株式会社東芝 メモリシステム
JP4675985B2 (ja) * 2008-03-01 2011-04-27 株式会社東芝 メモリシステム
US20100100797A1 (en) 2008-10-16 2010-04-22 Genesys Logic, Inc. Dual mode error correction code (ecc) apparatus for flash memory and method thereof
KR101844346B1 (ko) * 2010-11-05 2018-04-02 삼성전자주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US9569320B2 (en) * 2010-12-01 2017-02-14 Seagate Technology Llc Non-volatile memory program failure recovery via redundant arrays
JP2012252558A (ja) 2011-06-03 2012-12-20 Sony Corp 不揮発性メモリ、メモリコントローラ、不揮発性メモリのアクセス方法、およびプログラム
US9378142B2 (en) 2011-09-30 2016-06-28 Intel Corporation Apparatus and method for implementing a multi-level memory hierarchy having different operating modes
US9256493B2 (en) 2011-12-28 2016-02-09 Intel Corporation Memory module architecture
TWI459400B (zh) * 2012-04-17 2014-11-01 Phison Electronics Corp 記憶體儲存裝置、及其記憶體控制器與電源控制方法
WO2013164869A1 (en) * 2012-05-02 2013-11-07 Hitachi, Ltd. Storage system and control method therefor
TWI460586B (zh) 2012-07-05 2014-11-11 Silicon Motion Inc 資料儲存裝置與快閃記憶體操作方法
US9465731B2 (en) * 2012-12-31 2016-10-11 Sandisk Technologies Llc Multi-layer non-volatile memory system having multiple partitions in a layer
US10049037B2 (en) 2013-04-05 2018-08-14 Sandisk Enterprise Ip Llc Data management in a storage system
KR102120823B1 (ko) 2013-08-14 2020-06-09 삼성전자주식회사 비휘발성 메모리 장치의 독출 시퀀스 제어 방법 및 이를 수행하는 메모리 시스템
US9323609B2 (en) 2013-11-15 2016-04-26 Intel Corporation Data storage and variable length error correction information

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150248935A1 (en) * 2009-02-11 2015-09-03 HGST Netherlands B.V. Apparatus, systems, and methods for operating flash backed dram module
WO2015126518A2 (en) * 2014-02-20 2015-08-27 Rambus Inc. High performance persistent memory
KR20150116522A (ko) * 2014-04-07 2015-10-16 에스케이하이닉스 주식회사 휘발성 메모리, 이를 포함하는 메모리 모듈 및 메모리 모듈의 동작 방법
KR20150120558A (ko) * 2014-04-17 2015-10-28 에스케이하이닉스 주식회사 휘발성 메모리 장치, 이를 포함하는 메모리 모듈 및 메모리 모듈의 동작 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190057810A (ko) * 2017-11-20 2019-05-29 에스케이하이닉스 주식회사 메모리 컨트롤러 및 메모리 모듈을 갖는 메모리 시스템 및 그 메모리 시스템에서의 데이터 처리 방법

Also Published As

Publication number Publication date
US20170192704A1 (en) 2017-07-06
KR102407437B1 (ko) 2022-06-10
US9952789B2 (en) 2018-04-24

Similar Documents

Publication Publication Date Title
US10198221B2 (en) Methods of operating semiconductor memory devices with selective write-back of data for error scrubbing and related devices
US10929225B2 (en) Semiconductor memory devices, memory systems including the same and methods of operating memory systems
KR102434053B1 (ko) 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 이의 동작 방법
US9870293B2 (en) Memory device performing post package repair (PPR) operation
KR102424702B1 (ko) 불휘발성 메모리 모듈 및 이를 포함하는 전자 장치
US9367417B2 (en) Nonvolatile memory device including dummy wordline, memory system, and method of operating memory system
US20180150350A1 (en) Scrubbing controllers of semiconductor memory devices, semiconductor memory devices and methods of operating the same
KR20160085081A (ko) 메모리 장치의 동작 방법 및 이를 포함하는 메모리 시스템의 동작 방법
US8661317B2 (en) Memory device using error correcting code and system thereof
US8526258B2 (en) Variable resistance memory device and related method of operation
KR20170060263A (ko) 반도체 메모리 장치 및 이의 동작 방법
KR102406267B1 (ko) 불휘발성 메모리 모듈 및 이를 포함하는 전자 장치
KR102407437B1 (ko) 불휘발성 메모리 모듈을 포함하는 메모리 시스템 및 전자 장치
US20160154733A1 (en) Method of operating solid state drive
US9318164B2 (en) Semiconductor memory device with power-saving signal
US11669393B2 (en) Memory device for swapping data and operating method thereof

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant