KR20170111355A - 비휘발성 메모리 모듈의 커맨드 어드레스 스누핑 - Google Patents

비휘발성 메모리 모듈의 커맨드 어드레스 스누핑 Download PDF

Info

Publication number
KR20170111355A
KR20170111355A KR1020160036647A KR20160036647A KR20170111355A KR 20170111355 A KR20170111355 A KR 20170111355A KR 1020160036647 A KR1020160036647 A KR 1020160036647A KR 20160036647 A KR20160036647 A KR 20160036647A KR 20170111355 A KR20170111355 A KR 20170111355A
Authority
KR
South Korea
Prior art keywords
volatile memory
data
memory devices
memory device
command
Prior art date
Application number
KR1020160036647A
Other languages
English (en)
Other versions
KR102547056B1 (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 KR1020160036647A priority Critical patent/KR102547056B1/ko
Priority to TW105125716A priority patent/TW201735045A/zh
Priority to US15/244,890 priority patent/US10019187B2/en
Priority to CN201610835610.2A priority patent/CN107239408B/zh
Publication of KR20170111355A publication Critical patent/KR20170111355A/ko
Application granted granted Critical
Publication of KR102547056B1 publication Critical patent/KR102547056B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1441Resetting or repowering
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Dram (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 발명은 비휘발성 메모리 모듈 내에서 데이터 버스의 배선 수를 줄이면서 휘발성 메모리 장치들을 개별적으로 억세스할 수 있으며, 호스트로부터의 커맨드/어드레스를 스누핑하여 호스트의 파워 페일에 따른 백업 동작 시에 데이터 저장량이 많은 휘발성 메모리 장치를 우선적으로 백업할 수 있는 비휘발성 듀얼 인 라인 메모리 시스템, 메모리 모듈, 및 메모리 모듈의 동작 방법을 제공한다.
본 발명의 비휘발성 메모리 모듈은, 호스트의 메모리 콘트롤러에 의해 사용 가능한 비휘발성 메모리 모듈에 있어서, 데이터가 전송되는 데이터 버스 및 커맨드와 어드레스가 전송되는 제어 버스를 공유하는 복수의 휘발성 메모리 장치; 적어도 하나의 비휘발성 메모리 장치; 및 호스트의 파워 페일/복구에 따라 상기 복수의 휘발성 메모리 장치에 저장된 데이터를 상기 비휘발성 메모리 장치로 백업하거나 역으로 복원하는 콘트롤러를 포함하며, 상기 콘트롤러는, 상기 호스트의 메모리 콘트롤러로부터 입력되는 커맨드와 어드레스를 인식하여 상기 휘발성 메모리 장치별로 데이터 저장량을 분석하는 커맨드/어드레스 스누핑 로직; 및 상기 커맨드/어드레스 스누핑 로직의 분석 결과에 근거하여 상기 복수의 휘발성 메모리 장치 중 데이터 저장량이 많은 휘발성 메모리 장치를 우선하여 상기 비휘발성 메모리 장치로 백업하는 커맨드/어드레스 제어 로직을 포함할 수 있다.

Description

비휘발성 메모리 모듈의 커맨드 어드레스 스누핑 {COMMAND-ADDRESS SNOOPING FOR NON-VOLATILE MEMORY MODULE}
본 발명은 비휘발성 듀얼 인 라인 메모리 시스템, 메모리 모듈 및 메모리 모듈의 동작 방법에 관한 것으로, 더욱 상세하게는 배선 수를 줄이면서 콘트롤러가 휘발성 메모리 장치를 개별적으로 억세스할 수 있는 기술에 관한 것이다.
대부분의 경우에, 메모리 장치를 제어하기 위한 콘트롤러와 메모리 장치들은 1:다수로 연결된다.
도 1의 (a)와 같이 콘트롤러(100)와 메모리 장치(110_0) 간의 제어 버스(CMD/ADDR_BUS0, 커맨드와 어드레스가 전송되는 버스)와 데이터 버스(DATA_BUS0)와 콘트롤러(100)와 메모리 장치(110_1) 간의 제어 버스(CMD/ADDR_BUS1)와 데이터 버스(DATA_BUS1)가 분리되어 있는 경우에, 콘트롤러(100)는 메모리 장치(110_0)와 메모리 장치(110_1)에 완벽히 분리된 동작을 지시할 수 있다. 예를 들어, 메모리 장치(110_0)에서는 리드(read) 동작이 수행되는 도중에 메모리 장치(110_1)에서는 라이트(write) 동작이 수행될 수 있다.
도 1의 (b)와 같이 메모리 장치들(110_0, 110_1) 간에 제어 버스(CMD/ADDR_BUS)와 데이터 버스(DATA_BUS)가 공유되는 경우에는, 적어도 메모리 장치들(110_0, 110_1)을 구별하기 위한 신호들(CS0, CS1)을 전송하기 위한 라인들이 구비된다. 즉, 제어 버스(CMD/ADDR_BUS)의 신호들 중 일부의 신호들(CS0, CS1)을 전송하기 위한 라인들은 공유되지 못하고 메모리 장치(110_0, 110_1)별로 구비되어 있어야 한다. 이 경우에는 메모리 장치들(110_0, 110_1) 중 신호들(CS0, CS1)에 의해 선택된 메모리 장치가 제어 버스(CMD/ADDR_BUS)가 지시하는 동작을 수행하며, 데이터 버스(DATA_BUS)를 통해 콘트롤러(100)와 신호를 주고 받을 수 있다. 참고로, 신호들(CS0, CS1)은 커맨드 신호의 일종으로 제어 버스(CMD/ADDR_BUS)로 전달되는 신호들에 속하지만, 제어 버스(CMD/ADDR_BUS)로 전달되는 다른 신호들과는 다르게 메모리 장치들(110_0, 110_1) 마다 별도로 배정되므로 도 1에서도 별도로 도시했다.
콘트롤러와 연결되는 메모리 장치들의 개수가 증가함에 따라, 필요한 배선의 개수가 증가할 수밖에 없는데, 이는 시스템 설계의 어려움을 증가시키고 제조 비용을 증가시킨다는 문제가 있다.
미국등록특허 US 8,874,831호
본 발명은 비휘발성 메모리 모듈 내에서 데이터 버스의 배선 수를 줄이면서 휘발성 메모리 장치들을 개별적으로 억세스할 수 있으며, 호스트로부터의 커맨드/어드레스를 스누핑하여 호스트의 파워 페일에 따른 백업 동작 시에 데이터 저장량이 많은 휘발성 메모리 장치를 우선적으로 백업할 수 있는 비휘발성 듀얼 인 라인 메모리 시스템, 메모리 모듈, 및 메모리 모듈의 동작 방법을 제공할 수 있다.
본 발명에 따른 비휘발성 메모리 모듈은, 호스트의 메모리 콘트롤러에 의해 사용 가능한 비휘발성 메모리 모듈에 있어서, 데이터가 전송되는 데이터 버스 및 커맨드와 어드레스가 전송되는 제어 버스를 공유하는 복수의 휘발성 메모리 장치; 적어도 하나의 비휘발성 메모리 장치; 및 호스트의 파워 페일/복구에 따라 상기 복수의 휘발성 메모리 장치에 저장된 데이터를 상기 비휘발성 메모리 장치로 백업하거나 역으로 복원하는 콘트롤러를 포함하며, 상기 콘트롤러는, 상기 호스트의 메모리 콘트롤러로부터 입력되는 커맨드와 어드레스를 인식하여 상기 휘발성 메모리 장치별로 데이터 저장량을 분석하는 커맨드/어드레스 스누핑 로직; 및 상기 커맨드/어드레스 스누핑 로직의 분석 결과에 근거하여 상기 복수의 휘발성 메모리 장치 중 데이터 저장량이 많은 휘발성 메모리 장치를 우선하여 상기 비휘발성 메모리 장치로 백업하는 커맨드/어드레스 제어 로직을 포함할 수 있다.
상기 커맨드/어드레스 제어 로직은 상기 복수의 휘발성 메모리 장치들 중 데이터 저장량이 가장 많은 휘발성 메모리 장치를 인식하기 위한 커맨드 어드레스 레이턴시(CAL: Command Address Latency)를 제1 값으로 설정하고, 나머지 휘발성 메모리 장치의 커맨드 어드레스 레이턴시를 상기 제1 값과 상이한 제2 값으로 설정할 수 있다.
상기 제2 값은 상기 제1 값보다 크고, 상기 제2 값과 상기 제1 값의 차이는 로우 어드레스로부터 컬럼 어드레스 지연 시간(tRCD: RAS to CAS delay time) 이상일 수 있다.
상기 제2 값과 상기 제1 값의 차이는 로우 프리차지 시간(tRP: Row Precharge time) 미만일 수 있다.
상기 커맨드/어드레스 제어 로직은, 상기 비휘발성 메모리 장치의 메모리 페이지를 프로그램하는 동안에 상기 복수의 휘발성 메모리 장치들에 대하여 리프레시 사이클을 균일하게 배분하는 분배 리프레시(distributed refresh) 동작을 수행하는 로직; 새로운 비휘발성 메모리 장치의 메모리 페이지가 준비되고 라이트 되는 동안에 상기 복수의 휘발성 메모리 장치들을 완전한 동작 상태의 전력보다 낮은 저전력 모드로 동작시키는 로직; 및 상기 새로운 비휘발성 메모리 장치의 메모리 페이지가 라이트 된 이후에 상기 복수의 휘발성 메모리 장치들을 완전한 동작 상태의 전력 모드로 복구시키는 로직을 포함할 수 있다.
본 발명에 따른 비휘발성 메모리 모듈의 동작 방법은, 데이터가 전송되는 데이터 버스 및 커맨드와 어드레스가 전송되는 제어 버스를 공유하는 복수의 휘발성 메모리 장치와, 비휘발성 메모리 장치와, 호스트의 파워 페일/복구에 따라 상기 복수의 휘발성 메모리 장치에 저장된 데이터를 상기 비휘발성 메모리 장치로 백업하거나 역으로 복원하는 콘트롤러를 포함하는 비휘발성 메모리 모듈의 동작 방법에 있어서, (a) 상기 콘트롤러에서 호스트의 메모리 콘트롤러로부터 상기 복수의 휘발성 메모리 장치들로 입력되는 커맨드와 어드레스를 인식하는 단계; (b) 상기 단계(a)에서 인식된 커맨드와 어드레스를 분석하여 상기 휘발성 메모리 장치별로 데이터 저장량을 인식하는 단계; 및 (c) 호스트의 파워 페일이 감지되거나 상기 호스트의 메모리 콘트롤러로부터 백업 지시를 받는 경우, 상기 단계(b)의 분석 결과에 근거하여 상기 복수의 휘발성 메모리 장치 중 데이터 저장량이 많은 휘발성 메모리 장치를 우선하여 상기 비휘발성 메모리 장치로 백업하는 단계를 포함할 수 있다.
상기 커맨드/어드레스 제어 로직은 상기 복수의 휘발성 메모리 장치들 중 데이터 저장량이 가장 많은 휘발성 메모리 장치를 인식하기 위한 커맨드 어드레스 레이턴시(CAL: Command Address Latency)를 제1 값으로 설정하고, 나머지 휘발성 메모리 장치의 커맨드 어드레스 레이턴시를 상기 제1 값과 상이한 제2 값으로 설정할 수 있다.
상기 제2 값은 상기 제1 값보다 크고, 상기 제2 값과 상기 제1 값의 차이는 로우 어드레스로부터 컬럼 어드레스 지연 시간(tRCD: RAS to CAS delay time) 이상일 수 있다.
상기 제2 값과 상기 제1 값의 차이는 로우 프리차지 시간(tRP: Row Precharge time) 미만일 수 있다.
상기 단계(c)는, (c-1) 상기 비휘발성 메모리 장치의 메모리 페이지를 프로그램하는 동안에 상기 복수의 휘발성 메모리 장치들에 대하여 리프레시 사이클을 균일하게 배분하는 분배 리프레시(distributed refresh) 동작을 수행하는 단계; (c-2) 새로운 비휘발성 메모리 장치의 메모리 페이지가 준비되고 라이트 되는 동안에 상기 복수의 휘발성 메모리 장치들을 완전한 동작 상태의 전력보다 낮은 저전력 모드로 동작시키는 단계; 및 (c-3) 상기 새로운 비휘발성 메모리 장치의 메모리 페이지가 라이트 된 이후에 상기 복수의 휘발성 메모리 장치들을 완전한 동작 상태의 전력 모드로 복구시키는 단계를 포함할 수 있다.
본 발명의 비휘발성 듀얼 인 라인 메모리 시스템, 메모리 모듈, 및 메모리 모듈의 동작 방법에 따르면, 비휘발성 메모리 모듈 내에서 데이터 버스의 배선 수를 줄이면서 휘발성 메모리 장치들을 개별적으로 억세스할 수 있으며, 호스트로부터의 커맨드/어드레스를 스누핑하여 호스트의 파워 페일에 따른 백업 동작 시에 데이터 저장량이 많은 휘발성 메모리 장치를 우선적으로 백업할 수 있다.
도 1은 종래 콘트롤러와 메모리 장치 간의 버스 연결을 나타낸 블록도,
도 2는 휘발성 메모리 장치에서 PDA 모드 시에 모드 레지스터 셋(MRS: Mode Register Set)의 동작을 나타내는 타이밍도,
도 3은 휘발성 메모리 장치의 CAL을 설명하기 위한 타이밍도,
도 4는 본 발명의 일실시예에 따른 메모리 시스템의 블록도,
도 5는 도 4의 메모리 시스템의 동작을 도시한 순서도,
도 6은 도 5의 동작(512, 513)을 도시한 타이밍도,
도 7은 도 5의 동작(521, 522)을 도시한 타이밍도,
도 8은 휘발성 메모리 장치들(410_0, 410_1) 간의 커맨드 어드레스 레이턴시(CAL) 값의 차이(dCAL)가 tRCD 이상이고 tRP 미만인 경우의 이점을 설명하기 위한 타이밍도,
도 9는 본 발명의 일실시예에 따른 NVDIMM의 구성도,
도 10은 도 9의 다른 실시예를 보인 구성도,
도 11은 본 발명의 NVDIMM에서 백업 동작을 예시한 순서도,
도 12는 본 발명의 NVDIMM에서 복원 동작을 예시한 순서도,
도 13은 본 발명의 NVDIMM에서 파워 다운 인터럽트 동작을 예시한 순서도,
도 14는 본 발명의 다른 실시예에 따른 NVDIMM의 구성도,
도 15는 도 14의 실시예에서 백업 동작을 예시한 순서도, 및
도 16은 도 14의 실시예에서 다른 백업 동작을 예시한 순서도이다.
이하, 본 발명의 바람직한 실시예(들)에 대하여 첨부도면을 참조하여 상세히 설명한다. 우선 각 도면의 구성요소들에 참조부호를 부가함에 있어서, 동일한 구성요소들에 한해서는 비록 다른 도면상에 표시되더라도 가능한한 동일한 부호로 표기되었음에 유의하여야 한다. 또한, 하기의 설명에서는 많은 특정사항들이 도시되어 있는데, 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐 이러한 특정 사항들 없이도 본 발명이 실시될 수 있음은 이 기술분야에서 통상의 지식을 가진 자에게는 자명하다 할 것이다.
본 발명은 비휘발성 듀얼 인 라인 메모리 시스템(Non-Volatile Dual In-line Memory System)에 관한 것으로서, 메모리 모듈 내의 콘트롤러가 휘발성 메모리 장치들을 개별적으로 억세스할 수 있으면서 데이터 버스와 제어 버스를 공유하여 배선 수를 줄일 수 있는 메모리 시스템을 제공한다. 이하에서는 본 발명에 따른 비휘발성 듀얼 인 라인 메모리 시스템에 대한 이해를 돕기 위하여 세부적인 구성으로부터 전체 시스템에 이르기까지 순차적으로 설명하기로 한다.
(휘발성 메모리 장치의 PDA 모드)
먼저, 휘발성 메모리 장치의 PDA(Per DRAM Addressability) 모드와 커맨드 어드레스 레이턴시(CAL: Command Address Latency)에 대해 알아보기로 한다.
도 2는 휘발성 메모리 장치에서 PDA 모드 시에 모드 레지스터 셋(MRS: Mode Register Set)의 동작을 나타내는 타이밍도이다.
PDA 모드란, 각각의 휘발성 메모리 장치에 대해, 독립적인 모드 레지스터 셋 동작을 수행할 수 있도록 제어하는 모드이다. PDA 모드의 설정 시에, 모든 모드 레지스터 셋 커맨드는 0번 데이터 패드(DQ0)의 신호 레벨에 따라 유효성이 판단될 수 있다. 모드 레지스터 셋 커맨드의 인가 시점으로부터 라이트 레이턴시(WL = AL + CWL, WL: Write Latency, AL: Additive Latency, CWL: Cas Write Latency) 이후에, 0번 데이터 패드(DQ0)의 신호 레벨이 '0'이면 인가된 모드 레지스터 셋 커맨드는 유효한 것으로 판정되고, 0번 데이터 패드의 신호 레벨이 '1'이면 인가된 모드 레지스터 셋 커맨드는 무효한 것으로 판정되어 무시될 수 있다.
도 2를 참조하면, 시점 '201'에서 모드 레지스터 셋 커맨드(MRS)가 휘발성 메모리 장치로 인가된다. 시점 '201'로부터 라이트 레이턴시(WL=AL+CWL) 만큼의 시간이 지난 시점 '202'에서 0번 데이터 패드(DQ0)의 신호 레벨이 일정 구간 동안 '0'으로 천이한다. 따라서, 시점 '201'에서 인가된 모드 레지스터 셋 커맨드(MRS)는 유효한(valid)한 것으로 판정되고, 시점 '203'부터 tMRD_PDA(mode register set command cycle time) 동안에 모드 레지스터 셋 커맨드와 함께 입력된 어드레스(도면에 미도시)를 이용한 휘발성 메모리 장치의 설정 동작이 시작된다.
만약에, 시점 '202'에서 0번 데이터 패드(DQ0)의 신호 레벨이 '1'로 계속 유지되면, 시점 '201'에서 인가된 모드 레지스터 셋 커맨드(MRS)는 유효하지 않은(invalid) 것으로 판단되어 무시된다. 즉, 휘발성 메모리 장치의 설정 동작이 수행되지 않는다.
(휘발성 메모리 장치의 CAL)
도 3은 휘발성 메모리 장치의 CAL을 설명하기 위한 타이밍도이다.
CAL(Command Address Latency)이란, 제어 버스(CMD/ADDR_BUS)로 전달되는 제어 신호들 중 기준 신호가 되는 칩 선택 신호(CS)와 나머지 신호들 간의 타이밍 차이를 나타낸다. CAL이 설정되면 휘발성 메모리 장치는 칩 선택 신호(CS)의 활성화 시점으로부터 CAL 만큼의 시간이 지난 후에 입력되는 제어 신호들만을 유효한 것으로 인식한다. CAL의 값은 모드 레지스터 셋(MRS)에 의해 설정될 수 있다.
도 3은 CAL이 3(3클럭 주기)으로 설정된 경우의 동작을 도시하는데, 칩 선택신호(CS)가 '로우'로 활성화된 시점(301)으로부터 3클럭이 지난 시점(302)에 커맨드(CMD, 정확히는 커맨드 신호들 중 칩 선택 신호를 제외한 신호들)와 어드레스(ADDR)가 휘발성 메모리 장치로 인가된다. 그러면 휘발성 메모리 장치는 시점(302)에 인가된 커맨드(CMD)와 어드레스(ADDR)를 유효한 것으로 인식할 수 있다. 만약, 칩 선택 신호(CS)가 활성화된 시점(301)과 동일한 시점 또는 칩 선택 신호(CS)가 활성화된 시점(301)으로부터 1클럭 또는 2클럭이 지난 시점에 커맨드(CMD)와 어드레스(ADD)가 휘발성 메모리 장치로 인가된다고 하더라도 휘발성 메모리 장치는 이를 유효한 것으로 인식하지 않는다.
칩 선택 신호(CS)가 활성화된 시점들(303, 305) 이후로도 CAL(3클럭) 만큼의 시간이 지난 시점들(304, 306)에 커맨드(CMD)와 어드레스(ADDR)가 인가되므로, 이들 시점(304, 306)에 인가된 커맨드(CMD)와 어드레스(ADDR)도 휘발성 메모리 장치에 의해 유효한 것으로 인식될 수 있다.
(DIMM의 기본 구성)
도 4는 본 발명의 일실시예에 따른 메모리 시스템의 블록도로서, DIMM(Dual In-line Memory Module)의 기본적인 구성을 예시한 도면이다.
도 4를 참조하면, 메모리 시스템은 콘트롤러(400), 제1 휘발성 메모리 장치(410_0), 제2 휘발성 메모리 장치(410_1), 제어 버스(CMD/ADDR_BUS) 및 데이터 버스(DATA_BUS)를 포함할 수 있다.
제어 버스(CMD/ADDR_BUS)를 통해 콘트롤러(400)로부터 휘발성 메모리 장치들(410_0, 410_1)로 제어 신호들이 전달된다. 제어 신호들은 커맨드(CMD), 어드레스(ADDR) 및 클럭(CK)를 포함할 수 있다. 커맨드(CMD)는 다수의 신호들을 포함할 수 있다. 예를 들어, 커맨드는 액티브 신호(ACT: Active), 로우 어드레스 스트로브 신호(RAS: Row Address Strobe), 컬럼 어드레스 스트로브 신호(CAS: Column Address Strobe) 및 칩 선택 신호(CS)를 포함할 수 있다. 칩 선택 신호(CS)는 커맨드(CMD)에 포함되는 신호이지만, 휘발성 메모리 장치들(410_0, 410_1)이 동일한 칩 선택 신호(CS)를 공유한다는 것을 나타내기 위해 도면에서는 별도로 도시했다. 어드레스(ADDR)는 다수의 신호를 포함할 수 있다. 예를 들어, 어드레스(ADDR)는 멀티-비트의 뱅크 그룹 어드레스, 멀티-비트의 뱅크 어드레스 및 멀티-비트의 노멀 어드레스를 포함할 수 있다. 클럭(CK)은 휘발성 메모리 장치들의 동기된 동작을 위해 콘트롤러(400)로부터 휘발성 메모리 장치들(410_0, 410_1)로 전달될 수 있다. 클럭(CK)은 정클럭(CK_t)과 정클럭을 반전한 부클럭(CK_c)을 포함하는 디퍼런셜(differential) 방식으로 전달될 수도 있다.
데이터 버스(DATA_BUS)는 멀티 비트의 데이터(DATA0~DATA3)를 콘트롤러(400)와 휘발성 메모리 장치들(410_0, 410_1) 간에 전달할 수 있다. 휘발성 메모리 장치들(410_0, 410_1) 각각에는 데이터 버스(DATA_BUS)의 데이터 라인들(DATA0~DATA3)과 연결되기 위한 데이터 패드들(DQ0-DQ3)이 구비되는데, 이 중 특정 데이터 패드(DQ0)에는 휘발성 메모리 장치들(410_0, 410_1)마다 서로 다른 넘버의 데이터 라인(DATA0, DATA1)이 연결될 수 있다. 특정 데이터 패드(DQ0)는 제어 버스(CMD/ADDR_BUS)의 제어 신호들을 인식하기 위한 레이턴시(latency)를 설정하기 위해 사용되는 데이터 패드일 수 있다.
콘트롤러(400)는 제어 버스(CMD/ADDR_BUS)를 통해 휘발성 메모리 장치들(410_0, 410_1)을 제어하며, 데이터 버스(DATA_BUS)를 통해 휘발성 메모리 장치들(410_0, 410_1)과 데이터를 주고받을 수 있다. 콘트롤러(400)는 DIMM(dual in-line memory module) 내에 존재하며, 휘발성 메모리 장치들(410_0, 410_1)이 제어 버스(CMD/ADDR_BUS) 상의 신호들을 인식하는 레이턴시를 서로 다른 값으로 가질 수 있도록 설정하고, 이를 이용해 휘발성 메모리 장치들(410_0, 410_1) 중 원하는 메모리 장치에 억세스할 수 있다. 이에 대해서는 도 5 내지 도 7과 함께 자세히 알아보기로 한다.
제1 휘발성 메모리 장치(410_0)와 제2 휘발성 메모리 장치(410_1)는 제어 버스(CMD/ADDR_BUS)와 데이터 버스(DATA_BUS)를 서로 공유할 수 있다. 제1 휘발성 메모리 장치(410_0)와 제2 휘발성 메모리 장치(410_1)는 칩 선택 신호(CS)도 공유할 수 있다. 제1 휘발성 메모리 장치(410_0)와 제2 휘발성 메모리 장치(410_1)는 제어 버스(CMD/ADDR_BUS)로 전송되는 제어 신호들에 대한 레이턴시가 서로 다르게 설정될 수 있다. 여기서 레이턴시는 제어 버스(CMD/ADDR_BUS)의 신호들 중 레이턴시의 기준이 되는 기준신호(CS)와 나머지 신호들(CMD, ADDR) 간의 타이밍 차이를 의미할 수 있다. 제1 휘발성 메모리 장치(410_0)와 제2 휘발성 메모리 장치(410_1)가 제어 버스(CMD/ADDR)에 대한 레이턴시가 서로 다르게 설정되는 것에 의해 콘트롤러(400)에 의해 개별적으로 억세스될 수 있는데, 이에 대해서는 도 5 내지 도 7과 함께 자세히 알아보기로 한다.
도 4에서 확인할 수 있는 것과 같이, 제1 휘발성 메모리 장치(410_0)와 제2 휘발성 메모리 장치(410_1)에는 서로 간의 구별을 위한 어떠한 신호 전송 라인도 별도로 배정되지 않는다. 그러나, 콘트롤러(400)는 제1 휘발성 메모리 장치(410_0)와 제2 휘발성 메모리 장치(410_1)를 별도로 억세스할 수 있는데 이하에서는 이에 대해 알아보기로 한다.
(DIMM의 CAL 설정 기본 동작)
도 5는 도 4의 메모리 시스템의 동작을 도시한 순서도이다.
도 5를 참조하면, 메모리 시스템의 동작은 콘트롤러(400)가 제1 휘발성 메모리 장치(410_0)와 제2 휘발성 메모리 장치(410_1)의 제어 버스(CMD/ADDR_BUS)로 전송되는 제어 신호들에 대한 레이턴시를 서로 다르게 설정하기 위한 동작(510)과 제1 휘발성 메모리 장치(410_0)와 제2 휘발성 메모리 장치(410_1)에 별도로 억세스하는 동작(520)으로 나뉘어질 수 있다.
먼저, 콘트롤러(400)는 제1 휘발성 메모리 장치(410_0)와 제2 휘발성 메모리 장치(410_1)가 PDA(Per DRAM Addressability) 모드로 진입하도록 제어할 수 있다(511). 이는 커맨드(CMD)를 MRS에 대응하는 조합으로 인가하고, 어드레스(ADDR)를 PDA 모드의 진입에 대응하는 조합으로 인가하는 것에 의해 이루어질 수 있다.
PDA 모드의 진입 이후에, 제1 휘발성 메모리 장치(410_0)의 제어 버스(CMD/ADDR_BUS)에 대응하는 레이턴시, 즉 커맨드 어드레스 레이턴시(CAL: Command Address Latency), 가 '0'으로 설정될 수 있다(512). 이는 커맨드(CMD)를 MRS에 대응하는 조합으로 인가하고, 어드레스(ADDR)를 CAL을 '0'으로 설정하는 것에 대응하는 조합으로 인가하고, 커맨드(CMD)의 인가 시점으로부터 라이트 레이턴시(WL = AL+CWL) 이후에 제1 휘발성 메모리 장치(410_0)의 0번 데이터 패드(DQ0)에 대응하는 0번 데이터 라인(DATA0)의 신호를 '0'레벨로 인가하는 것에 의해 이루어질 수 있다. 도 6을 참조하면, 시점 '601'에 CAL을 '0'으로 설정하기 위한 커맨드/어드레스(CMD/ADDR)가 인가되고, 시점 '601'로부터 라이트 레이턴시(WL) 만큼의 시간이 지난 시점 '602'에 데이터 라인(DATA0)이 '0'레벨을 가지는 것을 확인할 수 있다. 시점'602'에 데이터 라인(DATA1)은 '1'의 레벨을 가지므로 제2 휘발성 메모리 장치(410_1)는 시점 '601'에 인가된 커맨드를 무시하게 된다.
제2 휘발성 메모리 장치(410_1)의 제어 버스(CMD/ADDR_BUS)에 대응하는 레이턴시, 즉 CAL(Command Address Latency),는 '3'으로 설정될 수 있다(513). 이는 커맨드(CMD)를 MRS에 대응하는 조합으로 인가하고, 어드레스(ADDR)를 CAL을 '3'으로 설정하는 것에 대응하는 조합으로 인가하고, 커맨드(CMD)의 인가 시점으로부터 라이트 레이턴시(WL = AL+CWL) 이후에 제2 휘발성 메모리 장치(410_1)의 0번 데이터 패드(DQ0)에 대응하는 1번 데이터 라인(DATA1)의 신호를 '0'레벨로 인가하는 것에 의해 이루어질 수 있다. 도 6을 참조하면, 시점 '603'에 CAL을 '3'으로 설정하기 위한 커맨드/어드레스(CMD/ADDR)가 인가되고, 시점 '603'으로부터 라이트 레이턴시(WL) 만큼의 시간이 지난 시점 '604'에 데이터 라인(DATA1)이 '0'의 레벨을 가지는 것을 확인할 수 있다. 시점 '604'에 데이터 라인(DATA0)은 '1'의 레벨을 가지므로 제1 휘발성 메모리 장치(410_0)는 시점 '603'에 인가된 커맨드를 무시하게 된다. 휘발성 메모리 장치들(410_0, 410_1)의 레이턴시 설정이 완료되면 PDA 모드가 종료될 수 있다(514).
이제, 제1 휘발성 메모리 장치(410_0)와 제2 휘발성 메모리 장치(410_1)의 CAL이 서로 다르게 설정되었으므로, 콘트롤러(400)는 칩 선택 신호(CS)의 활성화 시점에 커맨드/어드레스(CMD/ADDR)를 인가해 제1 휘발성 메모리 장치(410_0)를 억세스하거나(521), 칩 선택 신호(CS)의 활성화 시점으로부터 3클럭 이후에 커맨드/어드레스(CMD/ADDR)를 인가해 제2 휘발성 메모리 장치(410_1)를 억세스(522)할 수 있다. 도 7의 (a)와 (b)는 도 5의 동작들(521, 522)을 나타낸 타이밍도이다. 도 7의 (a)와 (b)를 참조하면, 칩 선택 신호(CS)의 활성화 시점과 동일한 시점(701, 703, 705, 707, 709, 711)에 인가된 커맨드는 제1 휘발성 메모리 장치(410_0)에 의해 인식되고, 제1 휘발성 메모리 장치(410_0)를 동작시키며, 칩 선택 신호(CS)의 활성화 시점으로부터 3클럭 이후(702, 704, 706, 708, 710, 712)에 인가된 커맨드는 제2 휘발성 메모리 장치(410_1)에 의해 인식되고, 제2 휘발성 메모리 장치(410_1)를 동작시키는 것을 확인할 수 있다. 도면에서 NOP는 아무런 동작이 명령되지 않은 Non Operation 상태를 나타낸다. 시점들(701, 702, 703, 704, 707, 708, 709, 710)에서의 동작과 같이, 제1 휘발성 메모리 장치와 제2 휘발성 메모리 장치 중 하나의 휘발성 메모리 장치만 억세스하는 것도 가능하지만, 시점들(705, 706, 711, 712)에서의 동작과 같이 칩 선택 신호(CS)의 활성화 시점에도 유효한 커맨드(CMD)를 인가하고, 칩 선택 신호(CS)의 활성화 시점으로부터 3클럭 이후에도 유효한 커맨드(CMD)를 인가하는 것에 의해, 제1 휘발성 메모리 장치(410_0)와 제2 휘발성 메모리 장치(410_1) 모두에 억세스하는 것도 가능할 수 있다.
도 4 내지 도 7에서 설명한 본 발명의 실시예에 따르면, 휘발성 메모리 장치들(410_0, 410_1)이 제어 버스(CMD/ADDR_BUS)와 데이터 버스(DATA_BUS)를 공유하지만, 제어 버스(CMD/ADDR_BUS)에 대한 서로 다른 레이턴시를 가진다. 그리고, 콘트롤러(400)는 제어 버스(CMD/ADDR_BUS)로 인가되는 신호들의 레이턴시를 변경하는 것에 의해 휘발성 메모리 장치들(410_0, 410_1) 중 억세스하기 원하는 휘발성 메모리 장치에 억세스할 수 있다. 따라서, 휘발성 메모리 장치들(410_0, 410_1)을 개별적으로 제어하기 위해 그 어떤 라인도 추가될 필요가 없다.
상기 실시예에서는 콘트롤러(400)에 의해 휘발성 메모리 장치들(410_0, 410_1)이 제어 버스(CMD/ADDR_BUS)에 대한 서로 다른 레이턴시를 가지도록 설정되는 것을 예시하였으나, 이는 예시일 뿐이며 휘발성 메모리 장치들(410_0, 410_1)이 영구적으로 서로 다른 레이턴시를 가지도록 프로그램될 수도 있다. 예를 들어, 휘발성 메모리 장치들(410_0, 410_1)의 제조시에 제어 버스(CMD/ADDR_BUS)에 대한 레이턴시가 고정될 수도 있을 것이며, 휘발성 메모리 장치들(410_0, 410_1)의 제조 후에 영구적인 설정(예, 퓨즈 회로를 이용한 설정)을 통해 휘발성 메모리 장치들(410_0, 410_1)의 제어 버스(CMD/ADDR_BUS)에 대한 레이턴시가 고정될 수도 있을 것이다.
여기서, 휘발성 메모리 장치들(410_0, 410_1) 간의 커맨드 어드레스 레이턴시(CAL) 값의 차이는 로우 어드레스로부터 컬럼 어드레스 지연 시간(tRCD: RAS to CAS delay) 이상인 것이 바람직하다. 또한, 휘발성 메모리 장치들(410_0, 410_1) 간의 커맨드 어드레스 레이턴시(CAL) 값의 차이는 로우 프리차지 시간(tRP: Row Precharge time) 미만인 것이 바람직하다. 즉, 'dCAL (CAL difference) ≥ tRCD' 이고, 'dCAL < tRP'인 것이 바람직하다. 도 8은 휘발성 메모리 장치들(410_0, 410_1) 간의 커맨드 어드레스 레이턴시(CAL) 값의 차이(dCAL)가 tRCD 이상이고 tRP 미만인 경우의 이점을 설명하기 위한 도면이다. 도 8에서는 제1 휘발성 메모리 장치(410_0)의 CAL=0, 제2 휘발성 메모리 장치(410_1)의 CAL=3로 설정되어 dCAL=3이고, tRCD=3이고, tRP=4인 것을 예시하여 설명하기로 한다.
도 8을 참조하면, 시점(801)에 칩 선택 신호(CS)가 활성화되고 커맨드/어드레스(CMD/ADDR)를 통해 액티브 동작(ACT)이 지시될 수 있다. 그러면, 제1 휘발성 메모리 장치(410_0)는 시점(801)에 액티브 동작(ACT)을 인식해 액티브 동작을 수행할 수 있다.
시점(802)에 칩 선택 신호(CS)가 활성화되고 커맨드/어드레스(CMD/ADDR)를 통해 리드 동작(RD)이 지시될 수 있다. 그러면, 제1 휘발성 메모리 장치(410_0)는 시점(802)에 리드 동작(RD)을 인식해 리드 동작을 수행할 수 있다. 또한, 시점(801)에서 칩 선택 신호(CS)가 활성화된 이후 3클럭이 지난 시점(802)에서 제2 휘발성 메모리 장치(410_1)는 커맨드/어드레스(CMD/ADDR)의 리드 동작(RD)을 인식할 수 있다. 그런데, 제2 휘발성 메모리 장치(410_1)에서는 액티브 동작이 수행된 적이 없으므로, 제2 휘발성 메모리 장치(410_1)는 커맨드/어드레스(CMD/ADDR)에 의해 지시된 리드 동작(RD)을 일리걸(illegal)로 판단하고 리드 동작을 수행하지 않을 수 있다. 만약에, dCAL이 tRCD보다 작다면, 제2 휘발성 메모리 장치(410_1)가 제1 휘발성 메모리 장치(410_0)에게 지시된 액티브 동작(ACT)을 인식하는 오동작이 발생할 수 있는데, 'dCAL ≥ tRCD' 인 경우에는 이러한 오동작을 방지할 수 있다. 또한, 시점(802)에서 칩 선택 신호(CS)가 활성화된 이후 3클럭이 지난 시점(803)에서 제2 휘발성 메모리 장치(410_1)는 커맨드/어드레스(CMD/ADDR)의 리드 동작(RD)을 인식할 수 있다. 그런데, 제2 휘발성 메모리 장치(410_1)에서는 액티브 동작이 수행된 적이 없으므로, 제2 휘발성 메모리 장치(410_1)는 커맨드/어드레스(CMD/ADDR)에 의해 지시된 리드 동작(RD)을 일리걸(illegal)로 판단하고 리드 동작을 수행하지 않을 수 있다.
시점(804)에 칩 선택 신호(CS)가 활성화되고 커맨드/어드레스(CMD/ADDR)를 통해 프리차지 동작(PCG)이 지시될 수 있다. 그러면, 제1 휘발성 메모리 장치(410_0)는 시점(804)에 프리차지 동작(PCG)을 인식해 프리차지 동작을 수행할 수 있다. 또한, 시점(804)에서 칩 선택 신호(CS)가 활성화된 이후 3클럭이 지난 시점(805)에서 제2 휘발성 메모리 장치(410_1)는 커맨드/어드레스(CMD/ADDR)의 프리차지 동작(PCG)을 인식하고 프리차지 동작을 수행할 수 있다. 프리차지 동작의 경우 이전의 액티브 동작의 수행 여부를 따지지 않으므로, 제2 휘발성 메모리 장치(410_1)에서도 프리차지 동작이 수행될 수 있다.
시점(806)에 칩 선택 신호(CS)가 활성화되고 커맨드/어드레스(CMD/ADDR)를 통해 액티브 동작(ACT)이 지시될 수 있다. 그러면, 제1 휘발성 메모리 장치(410_0)는 시점(806)에 액티브 동작(ACT)을 인식해 액티브 동작을 수행할 수 있다. 만약에, dCAL이 tRP보다 크게 설정되었다면, 메모리 장치(410_1)가 시점(806)부터 커맨드/어드레스(CMD/ADD)를 통해 지시된 액티브 동작(ACT)을 인식해 액티브 동작을 수행하는 오동작이 발생할 수 있겠지만, 'dCAL < tRP'로 설정되었으므로 이러한 오동작은 방지될 수 있다.
시점(807)에 칩 선택 신호(CS)가 활성화되고 커맨드/어드레스(CMD/ADDR)를 통해 라이트 동작(WT)이 지시될 수 있다. 그러면, 제1 휘발성 메모리 장치(410_0)는 시점(807)에 라이트 동작(WT)을 인식해 라이트 동작을 수행할 수 있다. 또한, 시점(806)에서 칩 선택 신호(CS)가 활성화된 이후 3클럭이 지난 시점(807)에 제2 휘발성 메모리 장치(410_1)는 커맨드/어드레스(CMD/ADDR)의 라이트 동작(WT)을 인식할 수 있다. 그런데, 제2 휘발성 메모리 장치(410_1)에서는 액티브 동작이 수행된 적이 없으므로, 제2 휘발성 메모리 장치(410_1)는 커맨드/어드레스(CMD/ADDR)에 의해 지시된 라이트 동작(WT)을 일리걸(illegal)로 판단하고 라이트 동작을 수행하지 않을 수 있다. 또한, 시점(807)에서 칩 선택 신호(CS)가 활성화된 이후 3클럭이 지난 시점(808)에 제2 휘발성 메모리 장치(410_1)는 커맨드/어드레스(CMD/ADDR)의 라이트 동작을 인식할 수 있다. 그러나, 제2 휘발성 메모리 장치(410_1)는 커맨드/어드레스(CMD/ADDR)에 의해 지시된 라이트 동작(WT)을 일리걸(illegal)로 판단하고 라이트 동작을 수행하지 않을 수 있다.
도 8에서 살펴본 바와 같이, 'dCAL (CAL difference) ≥ tRCD' 이고, 'dCAL < tRP' 을 만족하도록 휘발성 메모리 장치들(410_0, 410_1)의 CAL을 설정하는 것에 의해 휘발성 메모리 장치들(410_0, 410_1)이 오동작을 하는 것을 방지할 수 있다.
(NVDIMM의 구성 및 동작)
도 9는 본 발명의 일실시예에 따른 NVDIMM(Non-Volatile Dual In-line Memory Module,900)의 구성도이다. 도 9에서는 휘발성 메모리 장치들의 CAL을 다르게 설정하는 것에 의해 데이터 버스와 제어 버스를 공유하는 휘발성 메모리 장치들을 개별적으로 억세스 가능하게 하는 스킴이, 본 발명에 따른 NVDIMM(900)에 적용된 예에 대해 알아보기로 한다. 도 9에서는 NVDIMM(900) 메모리 시스템을 구성하는호스트의 메모리 콘트롤러(9) 및 비상 파워 공급부(10)를 함께 도시한다. 여기서, NVDIMM은 호스트의 파워가 불안정한 경우에 휘발성 메모리 장치들의 데이터를 비휘발성 메모리 장치로 백업하는 동작을 통해 파워 페일(fail) 시에 데이터가 유실되는 것을 방지하는 메모리 모듈이다.
도 9를 참조하면, NVDIMM(900)은 다수의 제1 휘발성 메모리 장치들(911~914), 다수의 제2 휘발성 메모리 장치들(921~924), 비휘발성 메모리 장치(930), 콘트롤러(940), 레지스터(950), 파워 페일 감지부(960), 제1 데이터 버스(DATA_BUS1), 제2 데이터 버스(DATA_BUS2), 제어 버스(CMD/ADDR_BUS), 다수의 제3 데이터 버스들(DATA_BUS3_1 ~ DATA_BUS3_4) 및 다수의 제4 데이터 버스들(DATA_BUS4_1 ~ DATA_BUS4_4)을 포함할 수 있다.
호스트의 파워(HOST_VDD, HOST_VSS)가 정상인 경우에, 레지스터(950)는 호스트 제어 버스(HOST_CMD/ADDR_BUS)를 통해 호스트의 메모리 콘트롤러(9)로부터 제공되는 커맨드, 어드레스 및 클럭을 버퍼링하고, 제어 버스(CMD/ADDR_BUS)를 통해 제1 휘발성 메모리 장치들(911~914) 및 제2 휘발성 메모리 장치들(921~924)로 제공할 수 있다. 호스트의 파워(HOST_ADD, HOST_VSS)가 정상인 경우에, 제1 휘발성 메모리 장치들(911~914)은 제3 데이터 버스들(DATA_BUS3_1~DATA_BUS3_4) 중 자신에 대응하는 제3 데이터 버스를 이용해 호스트의 메모리 콘트롤러(9)와 데이터를 송/수신할 수 있으며, 제2 휘발성 메모리 장치들(921~924)은 제4 데이터 버스들(DATA_BUS4_1~DATA_BUS4_4) 중 자신에 대응하는 제4 데이터 버스를 이용해 호스트의 메모리 콘트롤러(9)와 데이터를 송/수신할 수 있다. 즉, 호스트의 파워(HOST_VDD, HOST_VSS)가 정상인 경우에 제1 휘발성 메모리 장치들(911~914) 및 제2 휘발성 메모리 장치들(921~924)은 제3 데이터 버스들(DATA_BUS3_1~DATA_BUS3_4) 및 제4 데이터 버스들(DATA_BUS4_1~DATA_BUS4_4) 중 자신에 대응하는 독립적인 데이터 버스를 이용해 호스트의 메모리 콘트롤러(9)와 통신할 수 있다.
파워 페일 감지부(960)가 호스트의 파워(HOST_VDD, HOST_VSS)의 페일을 감지하면, 즉 호스트의 파워(HOST_VDD, HOST_VSS)를 구성하는 전압들의 레벨이 불안정해지는 것을 감지하면, NVDIMM(900)으로 호스트의 파워(HOST_VDD, HOST_VSS)의 공급을 차단한다. 그리고 비상 파워 공급부(10)의 비상 파워(EMG_VDD, EMG_VSS)가 NVDIMM에 공급된다. 비상 파워 공급부(10)는 대용량 캐패시터, 예를 들어 슈퍼 캡(super cap), 을 이용하여 구현될 수 있으며, 제1 휘발성 메모리 장치들(911~914) 및 제2 휘발성 메모리 장치들(921~924)의 데이터가 비휘발성 메모리 장치(930)로 백업되는 동안에 비상 파워(EMG_VDD, EMG_VSS)를 공급할 수 있다. 도 9에서는 비상 파워 공급부(10)가 NVDIMM(900)의 외부에 존재하는 것으로 예시했지만, 비상 파워 공급부(10)가 NVDIMM(900) 내부에 구비될 수도 있음은 당연하다. 한편, 파워 페일 감지부(960)는 호스트의 파워(HOST_VDD, HOST_VSS)의 페일이 감지되면 이를 콘트롤러(940)에게 통보할 수 있다.
파워 페일 감지부(960)로부터 호스트의 파워(HOST_VDD, HOST_VSS)의 페일이 통보되면, 제1 휘발성 메모리 장치들(911~914) 및 제2 휘발성 메모리 장치들(921~924)의 제어가 호스트의 메모리 콘트롤러(9)로부터 NVDIMM의 콘트롤러(940)로 전환된다. 레지스터(950)는 호스트의 메모리 콘트롤러(9)가 아니라 콘트롤러(940)로부터 제공되는 커맨드, 어드레스 및 클럭을 버퍼링하고, 제어 버스(CMD/ADDR_BUS)를 통해 제1 휘발성 메모리 장치들(911~914) 및 제2 휘발성 메모리 장치들(921~924)로 제공할 수 있다. 제1 휘발성 메모리 장치들(911~914)은 제1 데이터 버스(DATA_BUS1)를 이용해 콘트롤러(940)와 데이터를 주고받을 수 있으며, 제2 휘발성 메모리 장치들(921~924)은 제2 데이터 버스(DATA_BUS2)를 이용해 콘트롤러(940)와 데이터를 주고받을 수 있다. 콘트롤러(940)는 제어 버스(CMD/ADDR_BUS), 제1 데이터 버스(DATA_BUS1) 및 제2 데이터 버스(DATA_BUS2)를 이용해, 제1 휘발성 메모리 장치들(911~914) 및 제2 휘발성 메모리 장치들(921~924)의 데이터를 리드하고, 리드된 데이터를 비휘발성 메모리 장치(930)에 저장(백업)할 수 있다.
호스트의 파워(HOST_VDD, HOST_VSS)의 페일 시에 비휘발성 메모리 장치(930)에 백업된 제1 휘발성 메모리 장치들(911~914) 및 제2 휘발성 메모리 장치들(921~924)의 데이터는, 호스트의 파워(HOST_VDD, HOST_VSS)가 정상적으로 되돌아 온 이후에 다시 제1 휘발성 메모리 장치들(911~914) 및 제2 휘발성 메모리 장치들(921~924)로 전송되어 저장될 수 있다. 이러한 복원(restore) 동작은 콘트롤러(940)의 제어에 따라 이루어질 수 있으며, 복원이 완료된 이후에 제1 휘발성 메모리 장치들(911~914) 및 제2 휘발성 메모리 장치들(921~924)의 제어가 NVDIMM의 콘트롤러(940)로부터 호스트의 메모리 콘트롤러(9)로 전환될 수 있다.
콘트롤러(940)와 제1 휘발성 메모리 장치들(911~914) 간에는 제어 버스(CMD/ADDR_BUS)와 제1 데이터 버스(DATA_BUS1)만 존재한다. 즉, 제1 휘발성 메모리 장치들(911~914)은 콘트롤러(940)와의 통신에 있어서 모두 동일한 제어 버스와 데이터 버스를 공유한다. 마찬가지로, 콘트롤러(940)와 제2 휘발성 메모리 장치들(921~924) 간에는 제어 버스(CMD/ADDR_BUS)와 제2 데이터 버스(DATA_BUS2)만이 존재한다. 즉, 제2 휘발성 메모리 장치들(921~924)은 콘트롤러(940)와의 통신에 있어서 모두 동일한 제어 버스와 데이터 버스를 공유한다. 그러나, 콘트롤러(940)는 제1 휘발성 메모리 장치들(911~914) 중 개별 휘발성 메모리 장치를 독립적으로 억세스하고, 제2 휘발성 메모리 장치들(921~924) 중 개별 휘발성 메모리 장치를 독립적으로 억세스하는 것이 가능하다. 이에 관하여는 앞서 도 2 내지 8을 참조하여 제어 버스(CMD/ADDR_BUS)와 데이터 버스(DATA_BUS)를 공유하는 DIMM의 구성 및 동작에 관하여 설명하였으며, NVDIMM에서 데이터 백업 및 복원과 관련한 독립적인 동작에 대하여는 도 11 및 12를 참조하여 후술하기로 한다.
제1 휘발성 메모리 장치들(911~914) 및 제2 휘발성 메모리 장치들(921~924) 각각은 DRAM일 수 있으며, DRAM 뿐만이 아니라 다른 종류의 휘발성 메모리 소자일 수도 있다. 비휘발성 메모리 장치(930)는 NAND FLASH일 수 있다. 그러나, 비휘발성 메모리 장치(930)가 이에 한정되는 것은 아니며, 모든 종류의 비휘발성 메모리 소자, 예를 들어, NOR FLASH, RRAM(Resistive RAM), PRAM(Phase RAM), MRAM(Magnetic RAM), 또는 STT-MRAM(Spin Transfer Torque MRAM)일 수 있다.
도 9에 도시된 NVDIMM(900) 내의 구성들은 통합되거나 분리될 수 있다.
예를 들어, 콘트롤러(940), 레지스터(950) 및 파워 페일 감지부(960)는 하나의 칩으로 구성되거나, 더 많은 개수의 칩들로 구성될 수 있다. 한편, NVDIMM(900) 내에 사용된 제1 휘발성 메모리 장치들(911~914), 제2 휘발성 메모리 장치들(921~924) 및 비휘발성 메모리 장치(930)의 개수가 도 9의 예시와 다를 수도 있음은 당연하다.
도 10은 도 9의 NVDIMM(900)의 다른 실시예 구성도이다.
도 10에서는 도 9 대비 멀티 플렉서들(1101~1108)이 추가되고, 제1 휘발성 메모리 장치들(911~914) 및 제2 휘발성 메모리 장치들(921~924) 각각에서 4개의 데이터 패드들(DQ0~DQ3)이 사용될 수 있다.
멀티 플렉서들(1101~1104)에 의해, 제1 휘발성 메모리 장치들(911~914)이 호스트의 메모리 콘트롤러(9)와 통신하는 경우에는 제1 휘발성 메모리 장치들(911~914)의 데이터 패드들(DQ0~DQ3)과 제3 데이터 버스들(DATA_BUS3_1~DATA_BUS3_4)이 연결되고, 제1 휘발성 메모리 장치들(911~914)이 콘트롤러(940)와 통신하는 경우에는 제1 휘발성 메모리 장치들(911~914)의 데이터 패드들(DQ0~DQ3)과 제1 데이터 버스(DATA_BUS1)가 연결될 수 있다.
멀티 플렉서들(1105~1108)에 의해, 제2 휘발성 메모리 장치들(921~924)이 호스트의 메모리 콘트롤러(9)와 통신하는 경우에는 제2 휘발성 메모리 장치들(921~924)의 데이터 패드들(DQ0~DQ3)과 제4 데이터 버스들(DATA_BUS4_1~DATA_BUS4_4)이 연결되고, 제2 휘발성 메모리 장치들(921~924)이 콘트러(940)와 통신하는 경우에는 제2 휘발성 메모리 장치들(921~924)의 데이터 패드들(DQ0~DQ3)과 제2 데이터 버스(DATA_BUS2)가 연결될 수 있다.
멀티 플렉서들(1101~1108)이 추가되고 제1 휘발성 메모리 장치들(911~914) 및 제2 휘발성 메모리 장치들(921~924)에서 4개의 데이터 패드들(DQ0~DQ3)이 사용된다는 점을 제외하면, 도 10의 NVDIMM(900)은 도 9에서 설명한 것과 동일하게 동작하므로, 여기서는 더 이상의 상세한 설명을 생략하기로 한다.
(파워 다운 백업 동작)
도 11은 본 발명의 NVDIMM에서 백업 동작을 예시한 순서도이다.
도 9에 예시된 NVDIMM에서 제1 휘발성 메모리 장치들(911~914) 및 제2 휘발성 메모리 장치들(921~924)은 평상시 호스트의 메모리 콘트롤러(9)와 통신하며, 호스트의 메모리 콘트롤러(9)에 의해 휘발성 메모리의 제어가 수행된다(S1110). 제1 휘발성 메모리 장치들(911~914) 및 제2 휘발성 메모리 장치들(921~924)은 동일한 제어 버스(CMD/ADDR_BUS)를 공유하지만, 휘발성 메모리 장치들(911~914, 921~924)마다 개별적으로 데이터 버스들(DATA_BUS3_1~DATA_BUS3_4, DATA_BUS4_1~DATA_BUS4_4)이 구비되므로, 호스트의 메모리 콘트롤러(9)는 NVDIMM의 콘트롤러(940)와 달리 휘발성 메모리 장치들(911~914, 921~924)과 개별적으로 서로 다른 데이터를 송/수신하는 것이 가능하다.
단계(S1120)에서 트리거(trigger) 조건이 만족될 수 있다. 여기서, 트리거 조건이란 제1 휘발성 메모리 장치들(911~914) 및 제2 휘발성 메모리 장치들(921~924)의 데이터를 비휘발성 메모리 장치(930)로 백업하기 위한 조건이다. 예를 들어, 호스트의 파워(HOST_VDD, HOST_VSS)의 페일 감지가 트리거 조건의 만족일 수 있다. 또는, 호스트의 메모리 콘트롤러(9)의 명령에 의해 백업 동작이 수행되는 경우에는 호스트의 메모리 콘트롤러(9)의 백업 동작 지시가 트리거 조건의 만족일 수 있다.
단계(S1130)에서 휘발성 메모리 장치들(911~914, 921~924)에 대한 제어가 호스트의 메모리 콘트롤러(9)에서 NVDIMM의 콘트롤러(940)로 전환될 수 있다. 그리고, NVDIMM(900)이 사용하는 파워가 호스트의 파워(HOST_VDD, HOST_VSS)에서 비상 파워 공급부(10)가 공급하는 비상 파워(EMG_VDD, EMG_VSS)로 전환된다. 또한, 콘트롤러(940)로 제어 주체가 전환되면서 제1 휘발성 메모리 장치들(911~914)이 사용하는 데이터 버스가 제3 데이터 버스(DATA_BUS3_1~DATA_BUS3_4)에서 제1 데이터 버스(DATA_BUS1)로 전환되고, 제2 휘발성 메모리 장치들(921~924)이 사용하는 데이터 버스가 제4 데이터 버스(DATA_BUS4_1~DATA_BUS4_4)에서 제2 데이터 버스(DATA_BUS2)로 전환된다.
단계(S1140)에서 콘트롤러(940)는 제어 버스(CMD/ADDR_BUS) 및 데이터 버스(DATA_BUS1, DATA_BUS2)를 공유하는 휘발성 메모리 장치들(911~914, 921~924)에 대하여 개별적으로 커맨드 어드레스 레이턴시(CAL)를 설정한다.
도 9를 참조하면, 제1 휘발성 메모리 장치들(911~914) 및 제2 휘발성 메모리 장치들(921~924) 각각은 8개의 데이터 패드(DQ0~DQ7)를 포함하고, 이들 중 4개의 데이터 패드(DQ0~DQ3)에는 제1 데이터 버스(DATA_BUS1) 및 제2 데이터 버스(DATA_BUS2)가 연결되고, 나머지 4개의 데이터 패드(DQ4~DQ7)에는 제3 데이터 버스들(DATA_BUS3_1~DATA_BUS3_4) 및 제4 데이터 버스들(DATA_BUS4_1~DATA_BUS4_4)이 연결될 수 있다. 제1 휘발성 메모리 장치들(911~914) 및 제2 휘발성 메모리 장치들(921~924)이 사용하는 데이터 버스는 콘트롤러(940)의 지시에 의해 변경될 수 있다. 제1 휘발성 메모리 장치들(911~914)의 0번 데이터 패드(DQ0)에는 제1 데이터 버스(DATA_BUS1)를 구성하는 데이터 라인들 중 서로 다른 데이터 라인이 연결될 수 있으며, 제2 휘발성 메모리 장치들(921~924)의 0번 데이터 패드(DQ0)에는 제2 데이터 버스(DATA_BUS2)를 구성하는 데이터 라인들 중 서로 다른 데이터 라인이 연결될 수 있다. 이를 통해, 제1 휘발성 메모리 장치들(911~914)이 개별적으로 PDA 모드로 진입할 수 있으며, 제2 휘발성 메모리 장치들(921~924)이 개별적으로 PDA 모드로 진입할 수 있다.
예를 들어, 제1 휘발성 메모리 장치(911)와 제2 휘발성 메모리 장치(921), 이하 제1 휘발성 메모리 그룹, 의 커맨드 어드레스 레이턴시(CAL)를 제1 값(예, 0)으로 설정하고, 나머지 휘발성 메모리 장치들(912~914, 922~924), 제1 휘발성 메모리 그룹(911, 921)을 제외한 휘발성 메모리 장치들, 의 커맨드 어드레스 레이턴시(CAL)를 제1 값과 상이한 제2 값(예, 3)으로 설정하는 것으로 달성될 수 있다.
단계(S1150)에서 콘트롤러(940)는 커맨드 어드레스 레이턴시(CAL) 설정을 이용하여 휘발성 메모리를 리드(read)한다. 예를 들어, 콘트롤러(400)는 칩 선택 신호(CS)의 활성화 시점에 커맨드/어드레스(CMD/ADDR)를 인가하여, 커맨드 어드레스 레이턴시(CAL)가 제1 값(예, 0)으로 설정된 제1 휘발성 메모리 그룹(911, 921)을 억세스하는 것으로 제1 휘발성 메모리 그룹(911, 921)을 리드할 수 있다. 제1 휘발성 메모리 그룹(911, 921)을 제외한 나머지 휘발성 메모리 장치들(912~914, 922~924)은 커맨드 어드레스 레이턴시(CAL)가 제2 값(예, 3)으로 설정된 상태이므로, 콘트롤러(940)의 리드 명령을 일리걸(illegal)로 판단하고 리드 동작을 수행하지 않을 것이다.
단계(S1140)에서 콘트롤러(940)가 제어 버스(CMD/ADDR_BUS) 및 데이터 버스(DATA_BUS1, DATA_BUS2)를 공유하는 휘발성 메모리 장치들(911~914, 921~924)에 대하여 개별적으로 커맨드 어드레스 레이턴시(CAL)를 설정하고, 단계(S1150)에서 특정 커맨드 어드레스 레이턴시를 가지는 휘발성 메모리 장치 또는 그룹(상기 예에서는 제1 휘발성 메모리 그룹(911, 921))에만 억세스하여 데이터를 리드하는 방식은 앞서 설명한 도 4 내지 7을 참조하여 이해될 수 있다. 또한, 앞서 설명한 바와 같이 커맨드 어드레스 레이턴시(CAL)의 제1 값과 제2 값의 차이 dCAL은 'dCAL ≥ tRCD' 및 'dCAL < tRP' 을 만족하도록 설정되는 것이 바람직하다.
단계(S1160)에서 휘발성 메모리로부터 리드된 데이터가 비휘발성 메모리 장치(930)에 라이트(write) 되는 것으로 데이터의 백업이 수행된다. 예를 들어, 제1 휘발성 메모리 그룹(911, 921)으로부터 리드된 데이터가 비휘발성 메모리 장치(930)의 메모리 페이지(page)로 백업될 수 있다.
단계(S1170)에서 비휘발성 메모리 페이지가 가득 찼는지 여부를 판단한다. 만약, 비휘발성 메모리 페이지가 가득 차지 않았다면, 단계 S1140으로 복귀한다.
예를 들어, 제1 휘발성 메모리 그룹(911, 921)에 저장된 데이터가 남아 있다면, 상술한 바와 같이, 단계(S1140)에서 콘트롤러(940)는 제1 휘발성 메모리 그룹(911, 921)의 커맨드 어드레스 레이턴시(CAL)를 제1 값(예, 0)으로 설정하고, 나머지 휘발성 메모리 장치들(912~914, 922~924)의 커맨드 어드레스 레이턴시(CAL)를 제2 값(예, 3)으로 설정하여, 제1 휘발성 메모리 그룹(911, 921)에 저장된 잔여 데이터에 대한 리드 동작을 수행할 수 있다.
다른 예로서, 제1 휘발성 메모리 그룹(911, 921)에 저장된 데이터가 모두 백업되었다면, 단계(S1140)에서 콘트롤러(940)는 제1 휘발성 메모리 장치(912)와 제2 휘발성 메모리 장치(922), 이하 제2 휘발성 메모리 그룹, 의 커맨드 어드레스 레이턴시(CAL)를 제1 값(예, 0)으로 설정하고, 나머지 휘발성 메모리 장치들(911, 913~914, 921, 923~924), 제2 휘발성 메모리 그룹(912, 922)을 제외한 휘발성 메모리 장치들, 의 커맨드 어드레스 레이턴시(CAL)를 제1 값과 상이한 제2 값(예, 3)으로 설정할 수 있다. 그리고, 단계(S1150)에서 콘트롤러(940)는 커맨드 어드레스 레이턴시(CAL) 설정을 이용하여 제2 휘발성 메모리 그룹(912, 922)을 리드할 수 있다. 구체적으로 예시하지 않았지만, 커맨드 어드레스 레이턴시(CAL) 설정을 이용하여 제어 버스(CMD/ADDR_BUS) 및 데이터 버스(DATA_BUS1, DATA_BUS2)를 공유하는 휘발성 메모리 장치들(911~914, 921~924)을 선택적으로 리드하는 것은, 제1 휘발성 메모리 그룹에서부터 제N(여기서, N은 자연수) 휘발성 메모리 그룹까지 확장되어 적용될 수 있음은 물론이다.
만약, 단계(S1170)에서 비휘발성 메모리 페이지가 가득 찬 것으로 판단되면, 단계(S1180)으로 진행되어 비휘발성 메모리 페이지를 프로그램(program) 한다.
여기서, 비휘발성 메모리 장치(930)의 메모리 페이지를 프로그램 하는 동안, 휘발성 메모리 장치들(911~914, 921~914)로부터 아직 리드하지 않은 데이터가 존재하는지를 확인할 필요가 있다. 이를 위해 콘트롤러(940)는 비휘발성 메모리 장치(930)의 메모리 페이지 프로그램 동작 동안에 휘발성 메모리 장치들(911~914, 921~914)에 대하여 리프레시(refresh) 동작을 수행할 수 있다. 예를 들어, 리프레시 사이클을 균일하게 배분하는 분배 리프레시(distributed refresh) 동작을 수행할 수 있다. 분배 리프레시는 태스크를 반복하기 전에 모든 행이 턴 온 되도록 소정 주기마다 리프레시 사이클을 수행하는 것으로, 리프레시가 수행되지 않을 때 휘발성 메모리 장치를 리드하거나 라이트할 수 있다.
그리고, 새로운 비휘발성 메모리 페이지가 준비되고 라이트 되는 동안 휘발성 메모리 장치들(911~914, 921~924)은 완전한 동작 상태의 전력에 비해 낮은 저전력 모드로 동작될 수 있다. 새로운 비휘발성 메모리 페이지가 준비되고 기록된 이후에, 휘발성 메모리 장치들(911~914, 921~924)에 여전히 백업할 데이터가 남아 있고 비휘발성 메모리 장치(930)에 프로그램 할 수 있는 메모리 페이지가 존재하는 경우, 휘발성 메모리 장치들(911~914, 921~924)은 완전한 동작 상태의 전력 모드로 복구되어 백업되지 않은 데이터들을 리드하는 동작을 계속 수행하게 될 것이다.
단계(S1190)에서 휘발성 메모리 장치들(911~914, 921~924)에 백업할 데이터가 잔존하는지를 판단한다. 만약, 백업할 데이터가 잔존하지 않는다면, 파워 다운 백업 동작(Power Down Backup Operation)이 종료되고, NVDIMM(900)은 셧다운(shut down) 될 수 있다. 만약, 백업할 데이터가 남아 있다면, 단계(S1140)으로 복귀하여 잔여 데이터에 대한 백업 동작을 수행한다.
(파워 업 복원 동작)
도 12는 본 발명의 NVDIMM에서 복원 동작을 예시한 순서도이다.
호스트의 파워(HOST_VDD, HOST_VSS)가 정상으로 돌아오거나 호스트의 메모리 콘트롤러(9)의 복원 동작 지시에 의해 파워 업 복원 동작(Power Up Restore Operation)이 수행될 수 있다. 호스트의 파워(HOST_VDD, HOST_VSS)가 정상으로 돌아왔으므로, 파워 업 복원 동작은 호스트의 파워(HOST_VDD, HOST_VSS)를 이용하여 수행될 수 있다.
여기서, NVDIMM(900)은 도 11을 참조하여 설명한 파워 다운 백업 동작을 수행하여 백업 동작을 종료한 이후에 셧다운 된 상태에서 복원 동작을 수행할 수 있을 것이다. 다른 예로서, NVDIMM(900)이 백업 동작을 수행하는 중에, 백업 동작을 개시하여 종료되기 전에, 호스트의 파워가 정상으로 돌아올 수도 있을 것이다. 이 경우, 파워 다운 백업 동작을 인터럽트(interrupt)하고 파워 업 복원 동작이 수행될 수 있다. 어느 경우에도 NVDIMM(900)의 제1 휘발성 메모리 장치들(911~914) 및 제2 휘발성 메모리 장치들(921~924)은 NVDIMM의 콘트롤러(940)에 의해 제어되는 상태일 수 있다(S1210).
단계(S1220)에서 복원 조건이 만족되는지를 판단하며, 복원 조건이 만족되면 비휘발성 메모리 장치(930)에서 휘발성 메모리 장치들(911~914, 921~924)로 데이터 복원이 개시된다.
단계(S1230)에서 콘트롤러(940)는 제어 버스(CMD/ADDR_BUS) 및 데이터 버스(DATA_BUS1, DATA_BUS2)를 공유하는 휘발성 메모리 장치들(911~914, 921~924)에 대하여 개별적으로 커맨드 어드레스 레이턴시(CAL)를 설정한다. 앞서 도 11을 참조하여 백업 동작에 대하여 설명한 바와 같이, 제1 휘발성 메모리 장치들(911~914)이 개별적으로 PDA 모드로 진입할 수 있으며, 제2 휘발성 메모리 장치들(921~924)이 개별적으로 PDA 모드로 진입할 수 있다.
예를 들어, 제1 휘발성 메모리 그룹(911, 921)의 커맨드 어드레스 레이턴시(CAL)를 제3 값(예, 0)으로 설정하고, 나머지 휘발성 메모리 장치들(912~914, 922~924)의 커맨드 어드레스 레이턴시(CAL)를 제3 값과 상이한 제4 값(예, 3)으로 설정할 수 있다.
단계(S1240)에서 커맨드 어드레스 레이턴시(CAL)를 이용하여 비휘발성 메모리 장치(930)로부터 리드한 데이터를 제1 휘발성 메모리 그룹(911, 921)으로 라이트하는 것으로서, 제1 휘발성 메모리 그룹(911, 921)으로의 데이터 복원이 수행될 수 있다.
단계(S1250)에서 비휘발성 메모리 장치(930)에 복원할 데이터가 남아있는지 여부를 판단한다. 만약, 복원할 데이터가 남아있다면 단계 S1230으로 복귀하여 잔여 데이터에 대한 복원 동작을 수행할 수 있다.
예를 들어, 제1 휘발성 메모리 그룹(911, 921)에 대한 데이터 복원이 완료된 상태라면, 단계(S1230)에서 콘트롤러(940)는 제2 휘발성 메모리 그룹(912, 922)의 커맨드 어드레스 레이턴시(CAL)를 제3 값(예, 0)으로 설정하고, 나머지 휘발성 메모리 장치들(911, 913~914, 921, 923~924)의 커맨드 어드레스 레이턴시(CAL)를 제3 값과 상이한 제4 값(예, 3)으로 설정할 수 있다. 그리고, 단계(S1240)에서 콘트롤러(940)는 커맨드 어드레스 레이턴시(CAL) 설정을 이용하여 비휘발성 메모리 장치(930)로부터 리드한 데이터를 제2 휘발성 메모리 그룹(912, 922)으로 복원할 수 있다. 제1 휘발성 메모리 그룹(911, 921) 및 제2 휘발성 메모리 그룹(912, 922)을 제외한 나머지 휘발성 메모리 장치들(913, 914, 923, 924)에 대한 데이터 복원 동작 역시, 제N(여기서, N은 자연수) 휘발성 메모리 그룹의 커맨드 어드레스 레이턴시(CAL)를 제3 값으로 설정하고, 나머지 휘발성 메모리 장치들, 제N 휘발성 메모리 그룹을 제외한 휘발성 메모리 장치들, 의 커맨드 어드레스 레이턴시(CAL)를 제4 값으로 설정하고, 비휘발성 메모리 장치(930)로부터 리드한 데이터를 복원하는 것으로 달성될 수 있을 것이다. 커맨드 어드레스 레이턴시(CAL)의 제3 값과 제4 값의 차이 dCAL은 'dCAL ≥ tRCD' 및 'dCAL < tRP' 을 만족하도록 설정되는 것이 바람직하다.
단계(S1250)에서 복원할 데이터가 남아있지 않는 것으로 판단되면, 실질적인 데이터 복원 동작은 종료된다. 하지만, 호스트의 파워(HOST_VDD, HOST_VSS)가 재차 다운되는 경우를 대비하기 위하여, 휘발성 메모리 장치들(911~914, 921~924)에 대한 제어가 호스트의 메모리 콘트롤러(9)로 전환되기 전에, 휘발성 메모리 장치들(911~914, 921~924)에 저장된 데이터를 백업하기에 충분한 비휘발성 메모리 장치(930)의 용량(저장 가능한 공간)을 확보해야 할 필요가 있다.
이를 위하여, 단계(S1260)에서 비휘발성 메모리 장치(930)에 데이터 백업을 위해 충분한 소거 블록(erased block)이 존재하는지를 판단한다. 예를 들어, 비휘발성 메모리 장치(930) 내에, 휘발성 메모리 장치들(911~914, 921~924)의 전체 용량, 또는, 휘발성 메모리 장치들(911~914, 921~924)의 사용량이나 저장된 데이터의 유효 범위를 백업할 수 있을 정도로 충분한 양의 소거 블록이 존재하는지를 판단한다. 만약, 비휘발성 메모리 장치(930)에 충분한 소거 블록이 존재하지 않는다면, 비휘발성 메모리 장치(930)에서 새로운 블록을 소거한다(S1270).
만약, 비휘발성 메모리 장치(930)에 충분한 소거 블록이 존재한다면, 휘발성 메모리 장치들(911~914, 921~924)에 대한 제어가 NVDIMM의 콘트롤러(940)로부터 호스트의 메모리 콘트롤러(9)로 전환되고(S1280), 파워 업 복원 동작이 종료된다.
이후에는 호스트의 메모리 콘트롤러(9)에 의해 NVDIMM(900)이 이용 가능하게 되며, 도 11을 참조하여 언급된 단계 S1110과 동일한 상태로 NVDIMM(900)이 동작할 수 있다. 예를 들어, 제1 휘발성 메모리 장치들(911~914)이 사용하는 데이터 버스가 제1 데이터 버스(DATA_BUS1)에서 제3 데이터 버스들(DATA_BUS3_1~DATA_BUS3_4)로 전환될 수 있으며, 제2 휘발성 메모리 장치들(921~924)이 사용하는 데이터 버스가 제2 데이터 버스(DATA_BUS2)에서 제4 데이터 버스들(DATA_BUS4_1~DATA_BUS4_4)로 전환될 수 있다.
(파워 다운 인터럽트 동작)
도 13은 본 발명의 NVDIMM에서 파워 다운 인터럽트 동작을 예시한 순서도이다.
파워 페일 감지부(960)에서 호스트의 파워(HOST_VDD, HOST_VSS)에 페일이 발생된 것을 감지하거나, 호스트의 메모리 콘트롤러(9)로부터 백업 동작이 지시된 경우 도 11을 참조하여 설명한 바와 같이 파워 다운 백업 동작이 수행된다. 그런데, 파워 다운 백업 동작을 수행하는 중에, 백업 동작을 개시하여 종료되기 전에, 호스트의 파워(HOST_VDD, HOST_VSS)가 복구되어 호스트로부터의 파워 공급이 재개될 수 있다. 이 경우 백업 동작을 인터럽트(interrupt)하고 가능한 빨리 호스트의 메모리 콘트롤러(9)에 의해 NVDIMM(900)의 휘발성 메모리 장치들(911~914, 921~924)이 사용되도록 할 필요가 있다. 이하에서는 이와 같은 파워 다운 인터럽트 동작(Power Down Interrupt Operation)에 대하여 설명한다.
도 11에 예시하여 설명한 파워 다운 백업 동작, 바람직하게는 트리거 조건 만족 이후에 실질적인 백업 작업이 시작된 이후로부터 백업 작업이 종료되기 전까지의 동작, 이 실행중인 상태에서 단계가 시작된다(S1310).
단계(S1320)에서 호스트의 파워(HOST_VDD, HOST_VSS)가 복구되었는지를 판단한다. 예를 들어, 호스트의 파워(HOST_VDD, HOST_VSS)가 정상으로 돌아와 NVDIMM(900)에 공급되거나 호스트의 메모리 콘트롤러(9)로부터 그에 대응하는 신호를 수신한 경우, 호스트의 파워(HOST_VDD, HOST_VSS)가 복구된 것으로 판단할 수 있다.
이와 같은 파워 다운 인터럽트 동작 시에는, NVDIMM(900)이 아직 파워 다운 백업 동작을 종료하지 않은 상태이므로 셧다운 전이며, 휘발성 메모리 장치들(911~914, 921~924)에는 여전히 데이터들이 저장된 상태를 유지할 것이다. 따라서, 파워 업 복원 동작에서와 같은 데이터 복원 과정은 불필요 할 수 있다. 그렇지만, 데이터 백업 과정에서 이미 비휘발성 메모리 장치(930)의 메모리 페이지가 프로그램 되어, 후속될지 모를 호스트의 파워(HOST_VDD, HOST_VSS) 페일에 대비하지 못할 수 있다. 따라서 NVDIMM(900)의 휘발성 메모리 장치들(911~914, 921~924)을 백업할 수 있는 비휘발성 메모리 장치(930)의 공간을 확보한 후에 호스트의 메모리 콘트롤러(9)로 전환하는 것이 바람직하다.
단계(S1330)에서 비휘발성 메모리 장치(930)에 데이터 백업을 위해 충분한 소거 블록이 존재하는지를 판단한다. 예를 들어, 비휘발성 메모리 장치(930) 내에, 휘발성 메모리 장치들(911~914, 921~924)의 전체 용량, 또는, 휘발성 메모리 장치들(911~914, 921~924)의 사용량이나 저장된 데이터의 유효 범위를 백업할 수 있을 정도로 충분한 양의 소거 블록이 존재하는지를 판단한다.
만약, 비휘발성 메모리 장치(930)에 충분한 소거 블록이 존재한다면, 휘발성 메모리 장치들(911~914, 921~924)에 대한 제어가 NVDIMM의 콘트롤러(940)로부터 호스트의 메모리 콘트롤러(9)로 전환되고(S1340), NVDIMM(900)은 호스트의 메모리 콘트롤러(9)에 의해 즉시 이용 가능하게 될 수 있다.
하지만, 비휘발성 메모리 장치(930)에 충분한 소거 블록이 존재하지 않는다면, 후속될지 모를 호스트의 파워 페일에 대비하기 위하여 비휘발성 메모리 장치(930)에서 새로운 블록을 소거한다(S1350).
여기서, 비휘발성 메모리 장치(930)로부터 소거된 블록은 휘발성 메모리 장치들(911~914, 921~924)로부터 백업된 데이터를 포함할 수 있다. 만약, 파워 다운 인터럽트 동작 중에 다시 호스트의 파워 페일이 발생된다면, 도 11에서 예시한 파워 다운 백업 동작 전체를 처음부터 다시 수행하는 것에 비하여, 소거된 블록에 백업된 데이터만을 우선적으로 백업하고 인터럽트 시점에서 중단된 백업 동작을 제거하는 것이, 빠른 백업 작업을 달성할 수 있음은 물론 비상 파워 공급부(10)의 비상 파워(EMG_VDD, EMG_VSS), 제한적인 전력량을 가지는, 소모를 줄일 수 있을 것이다.
단계(S1360)에서 트리거 조건이 만족되는지를 판단한다. 트리거 조건은 앞서 설명한 바와 같이 호스트의 파워(HOST_VDD, HOST_VSS)의 페일 감지, 또는, 호스트의 메모리 콘트롤러(9)로부터의 백업 지시일 수 있다. 만약 트리거 조건이 만족되지 않는다면, 단계 S1330으로 복귀한다.
만약 트리거 조건이 만족된 것으로 판단되면, 단계(S1370)에서 소거된 블록에 백업된 데이터에 대응하는 데이터를 가진 휘발성 메모리 영역을 비휘발성 메모리 장치(930)로 백업한다.
예를 들어, 비휘발성 메모리 장치(930)의 소거된 블록에 제1 휘발성 메모리 장치(911) 또는 제1 휘발성 메모리 그룹(911, 921)의 데이터가 백업된 상태라고 가정해 볼 수 있다. 이 경우, NVDIMM의 콘트롤러(940)는 제1 휘발성 메모리 장치(911) 또는 제1 휘발성 메모리 그룹(911, 921)의 커맨드 어드레스 레이턴시(CAL)를 제5 값(예, 0)으로 설정할 수 있다. 그리고, 나머지 휘발성 메모리 장치들의 커맨드 어드레스 레이턴시(CAL)를 제6 값(예, 3)으로 설정한 후에, 커맨드 어드레스 레이턴시(CAL) 설정값을 이용하여 비휘발성 메모리 장치(930)의 소거된 블록에 대응하는 데이터를 가진 휘발성 메모리 영역을 선택하여 리드할 수 있다. 리드된 데이터는 다시 비휘발성 메모리 장치(930)로 백업된다. 단계 S1370의 선택적 백업 동작이 완료된 이후, 파워 다운 인터럽트 동작 개시 시점에서 중단된 파워 다운 백업 동작이 재개될 수 있다(S1380).
(NVDIMM의 커맨드/어드레스 스누핑)
도 14는 본 발명의 다른 실시예에 따른 NVDIMM의 구성도로서, NVDIMM의 커맨드/어드레스 스누핑(Command/Address Snooping) 동작을 설명하기 위해 개념적으로 예시한 도면이다. 발명의 이해를 돕기 위하여, NVDIMM 내부 구성만을 도시하였으며, 호스트의 메모리 콘트롤러(9) 및 호스트의 메모리 콘트롤러(9)와 휘발성 메모리 장치들(911~914, 921~924)과의 연결 관계, 비휘발성 메모리 장치(930) 및 비휘발성 메모리 장치(930)와 콘트롤러(940)의 연결 관계 등은 도 9의 예시와 동일하다. 또한, 도 14의 구성도는 휘발성 메모리 장치로서 DRAM을 예시하였으며, 제1 휘발성 메모리 장치들(911~914) 및 제2 휘발성 메모리 장치들(921~924) 각각에 형성된 데이터 패드 역시 도 9의 예시와 동일하다.
도 14를 참조하면, 콘트롤러(940)는 커맨드/어드레스 스누핑 로직(1410)과 커맨드/어드레스 제어 로직(1420)을 포함할 수 있다. 커맨드/어드레스 스누핑 로직(1410)은 호스트의 메모리 콘트롤러(9)로부터 입력되는 휘발성 메모리 장치들(911~914, 921~924)에 대한 커맨드(command)와 어드레스(address)를 인식하는 입력단을 가진다. 커맨드/어드레스 스누핑 로직(1410)의 입력단은 휘발성 메모리 장치들(911~914, 921~924)의 커맨드/어드레스 입력단과 동일한 형태를 가지거나 일부 다른 형태를 가질 수 있다. 커맨드/어드레스 제어 로직(1420)은 휘발성 메모리 장치들(911~914, 921~924)에 커맨드와 어드레스를 전달하여 제어하기 위한 출력단을 가진다. 도 14에서는 발명의 이해를 돕기 위해 두 로직이 서로 별도의 입출력 라인을 가지는 것으로 예시하였으나, 커맨드/어드레스 스누핑 로직(1410)의 입력단과 커맨드/어드레스 제어 로직(1420)의 출력단은 동일 Pin을 사용할 수 있다.
커맨드/어드레스 제어 로직(1420)에서 출력되는 콘트롤러(940)의 커맨드와 어드레스는 멀티 플렉서(1450)를 통해 레지스터 클럭 드라이버(RCD: Register Clock Driver, 1440)로 전달된다. 레지스터 클럭 드라이버(1440)는 호스트의 메모리 콘트롤러(9) 또는 NVDIMM의 콘트롤러(940)로부터 제공되는 커맨드, 어드레스 및 클럭을 버퍼링하여 제어 버스(CMD/ADDR_BUS)를 통해 제1 휘발성 메모리 장치들(911~914) 및 제2 휘발성 메모리 장치들(921~924)로 제공할 수 있다. 또한, 레지스터 클럭 드라이버(1440)는 호스트 메모리 콘트롤러(9) 또는 NVDIMM의 콘트롤러(940)로부터 제공되는 커맨드와 어드레스의 왜곡을 복원하는 기능을 추가로 가질 수 있다. 이제 도 15 및 16을 참조하여 커맨드/어드레스 스누핑을 이용하여 파워 다운 백업 동작을 수행하는 실시예에 대하여 살펴보자.
(NVDIMM의 커맨드/어드레스 스누핑을 이용한 선택 백업 동작)
도 15는 도 14의 실시예에서 백업 동작을 예시한 순서도이다.
호스트의 파워(HOST_VDD, HOST_VSS)가 정상적으로 공급되는 경우, 앞서 설명한 바와 같이 휘발성 메모리 장치들(911~914, 921~924)은 호스트의 메모리 콘트롤러(9)에 의해 개별적으로 제어된다. 이때, NVDIMM의 콘트롤러(940)는 커맨드/어드레스 스누핑 로직(1410)을 통해 호스트의 메모리 콘트롤러(9)로부터 휘발성 메모리 장치들(911~914, 921~924)로 입력되는 커맨드와 어드레스를 인식할 수 있다(S1510).
단계(S1520)에서 커맨드/어드레스 스누핑 로직(1410)은 각각의 휘발성 메모리 장치에 저장된 데이터의 유효 범위를 분석한다. 커맨드/어드레스 스누핑 로직(1410)은 호스트의 메모리 콘트롤러(9)에 의해 휘발성 메모리 장치들(911~914, 921~924)의 제어가 수행되는 동안, 휘발성 메모리 장치 각각에 대하여 저장된 데이터의 유효 범위를 분석하고 분석 결과를 축적할 수 있다.
단계(S1530)에서 트리거 조건이 만족되는지를 판단한다. 트리거 조건은 앞서 설명한 바와 같이 휘발성 메모리 장치들(911~914, 921~924)에 저장된 데이터를 비휘발성 메모리 장치(930)로 백업하기 위한 조건이다. 예컨대, 호스트의 파워(HOST_VDD, HOST_VSS)의 페일 감지 또는 호스트의 메모리 콘트롤러(9)로부터의 백업 동작 지시가 트리거 조건의 만족일 수 있다.
트리거 조건이 만족되는 경우, 단계(S1540)에서 데이터의 유효 범위를 갖는 휘발성 메모리 장치를 선택하며, 단계(S1550)에서 선택된 휘발성 메모리 장치에 저장된 데이터를 비휘발성 메모리 장치(930)로 백업한다.
예를 들어, 단계 S1540에서 선택된 휘발성 메모리 장치가 앞서 도 11을 참조하여 설명한 제1 휘발성 메모리 그룹(911, 921)이라고 가정하자. 콘트롤러(940)는 제1 휘발성 메모리 그룹(911, 921)의 커맨드 어드레스 레이턴시(CAL)를 제1 값(예, 0)으로 설정하고, 나머지 휘발성 메모리 장치들(912~914, 922~924)의 커맨드 어드레스 레이턴시(CAL)를 제2 값(예, 3)으로 설정하는 것으로, 제1 휘발성 메모리 그룹(911, 921)을 선택적으로 리드할 수 있다. 그리고 리드된 데이터를 비휘발성 메모리 장치(930)로 백업할 수 있다.
만약, 동일한 제어 버스(CMD/ADDR_BUS) 및 제1 데이터 버스(DATA_BUS1)를 공유하는 제1 휘발성 메모리 장치들(911~914), 또는 동일한 제어 버스(CMD/ADDR_BUS) 및 제2 데이터 버스(DATA_BUS1)를 공유하는 제2 휘발성 메모리 장치들(921~924), 중 둘 이상의 휘발성 메모리 장치에 유효 범위의 데이터가 저장된 상태라면, 유효 범위의 데이터가 저장된 휘발성 메모리 장치만을 선별하고, 선별된 휘발성 메모리 장치를 순차적으로 커맨드 어드레스 레이턴시(CAL)를 제1 값으로 설정, 반면 선별되지 않은 휘발성 메모리 장치들은 제2 값으로 설정, 할 수 있다. 이를 통해 유효한 데이터만을 백업하는 것으로 데이터 백업에 소요되는 시간을 크게 단축시킬 수 있다.
(NVDIMM의 커맨드/어드레스 스누핑을 이용한 우선 백업 동작)
도 16은 도 14의 실시예에서 다른 백업 동작을 예시한 순서도이다.
호스트의 파워(HOST_VDD, HOST_VSS)가 정상적으로 공급되는 경우, 휘발성 메모리 장치들(911~914, 921~924)은 호스트의 메모리 콘트롤러(9)에 의해 개별적으로 제어된다. 이때, 앞서 설명한 단계 S1510과 동일하게, NVDIMM의 콘트롤러(940)는 커맨드/어드레스 스누핑 로직(1410)을 통해 호스트의 메모리 콘트롤러(9)로부터 휘발성 메모리 장치들(911~914, 921~924)로 입력되는 커맨드와 어드레스를 인식할 수 있다(S1610).
단계(S1620)에서 커맨드/어드레스 스누핑 로직(1410)은 각각의 휘발성 메모리 장치의 데이터 저장량을 분석한다. 커맨드/어드레스 스누핑 로직(1410)은 호스트의 메모리 콘트롤러(9)에 의해 휘발성 메모리 장치들(911~914, 921~924)의 제어가 수행되는 동안, 휘발성 메모리 장치 각각에 대하여 데이터 저장량을 분석하고 분석 결과를 축적할 수 있다.
단계(S1630)에서 트리거 조건이 만족되는지를 판단한다. 트리거 조건은 휘발성 메모리 장치들(911~914, 921~924)에 저장된 데이터를 비휘발성 메모리 장치(930)로 백업하기 위한 조건으로, 호스트의 파워(HOST_VDD, HOST_VSS)의 페일 감지 또는 호스트의 메모리 콘트롤러(9)로부터의 백업 동작 지시가 트리거 조건의 만족일 수 있다.
트리거 조건이 만족되는 경우, 단계(S1640)에서 데이터 저장량에 따라 휘발성 메모리 장치에 우선순위를 부여하며, 단계(S1650)에서 우선순위에 따라 휘발성 메모리 장치에 저장된 데이터를 비휘발성 메모리 장치(930)로 백업한다.
예를 들어, 단계 S1640에서 데이터 저장량이 가장 많은 휘발성 메모리 장치가 제1 휘발성 메모리 장치들(911~914) 중에서 휘발성 메모리 장치(912)이고, 제2 휘발성 메모리 장치들(921~924) 중에서 휘발성 메모리 장치(922)라면, 즉 제2 휘발성 메모리 그룹(911, 921)이라고 가정하자. 콘트롤러(940)는 제2 휘발성 메모리 그룹(912, 922)의 커맨드 어드레스 레이턴시(CAL)를 제1 값(예, 0)으로 설정하고, 나머지 휘발성 메모리 장치들(911, 913~914, 921, 923~924)의 커맨드 어드레스 레이턴시(CAL)를 제2 값(예, 3)으로 설정하는 것으로, 제2 휘발성 메모리 그룹(912, 922)을 선택적으로 리드할 수 있다. 리드된 데이터는 앞서 설명한 바와 같이 비휘발성 메모리 장치(930)로 백업될 것이다.
제2 휘발성 메모리 그룹(912, 922)에 대한 백업을 종료한 후에는, 다시 두 번째 우선순위를 갖는 휘발성 메모리 장치의 커맨드 어드레스 레이턴시(CAL)를 제1 값으로 설정하고, 나머지 휘발성 메모리 장치들의 커맨드 어드레스 레이턴시를 제2 값으로 설정하는 것으로, 후속되는 우선순위를 갖는 휘발성 메모리 장치에 대한 백업을 진행할 수 있을 것이다.
이상에서 살펴본 바와 같이, NVDIMM(900)이 호스트의 파워(HOST_VDD, HOST_VSS) 페일 및 복구에 의해 데이터의 백업 및 복원 동작을 수행할 때에는, NVDIMM(900)의 제1 휘발성 메모리 장치들(911~914)은 콘트롤러(940)와의 통신에 있어서 제어 버스(CMD/ADDR_BUS)와 제1 데이터 버스(DATA_BUS1)를 공유하며, 제2 휘발성 메모리 장치들(921~924)은 콘트롤러(940)와의 통신에 있어서 제어 버스(CMD_ADDR_BUS)와 제2 데이터 버스(DATA_BUS2)를 공유한다. 이때, 콘트롤러(940)는 커맨드 어드레스 레이턴시(CAL)를 다른 값으로 설정하는 것에 의해 제1 휘발성 메모리 장치들(911~914) 각각에 개별적으로 억세스해 데이터를 백업 및 복원하는 것이 가능하다. 마찬가지로, 콘트롤러(940)는 제2 휘발성 메모리 장치들(921~924)에 대하여도 커맨드 어드레스 레이턴시(CAL)를 다른 값으로 설정하는 것에 의해 제2 휘발성 메모리 장치들(921~924) 각각에 개별적으로 억세스해 데이터를 백업 및 복원하는 것이 가능하다.
하나 이상의 예시적인 양태들에서, 기술된 기능들은 하드웨어, 소프트웨어, 펌웨어 또는 이들의 임의의 조합으로 구현될 수도 있다. 소프트웨어로 구현되는 경우, 기능들은 머신 판독가능 매체, 즉 컴퓨터 판독가능 매체와 같은 컴퓨터 프로그램 제품 상의 하나 이상의 명령들 또는 코드로서 저장 또는 송신될 수도 있다. 컴퓨터 판독 가능 매체는 컴퓨터 저장 매체 및 한 곳에서 다른 곳으로 컴퓨터 프로그램의 전달을 용이하게 하는 임의의 매체를 포함하는 통신 매체를 포함한다. 저장 매체는 컴퓨터에 의해 액세스될 수도 있는 임의의 이용 가능한 매체일 수도 있다. 제한이 아닌 예로써, 그러한 컴퓨터 판독가능 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 기억장치, 자기 디스크 기억장치 또는 다른 자기 저장 디바이스, 또는 컴퓨터에 의해 액세스될 수도 있고, 명령들 또는 데이터 구조들의 형태로 원하는 프로그램 코드를 운반 또는 저장하는데 사용될 수도 있는 임의의 다른 매체 을 포함할 수도 있다. 여기에 사용된 디스크(disk) 및 디스크(disc)는 CD(compact disc), 레이저 디스크, 광 디스크, DVD(digital versatile disc), 플로피 디스크(floppy disk) 및 블루-레이 디스크를 포함하며, 여기서 디스크(disk)는 통상 자기적으로 데이터를 재생하는 반면, 디스크(disc)는 레이저를 사용하여 광학적으로 데이터를 재생한다. 상술한 것들의 조합은 또한 컴퓨터 판독 가능 매체의 범위 내에 포함되어야 한다.
9: 호스트의 메모리 콘트롤러 10: 비상 파워 공급부
900: NVDIMM 911~914: 제1 휘발성 메모리 장치들
921~924: 제2 휘발성 메모리 장치들
930: 비휘발성 메모리 장치 940: 콘트롤러
950: 레지스터 960: 파워 페일 감지부
DATA_BUS1: 제1 데이터 버스 DATA_BUS2: 제2 데이터 버스
CMD/ADDR_BUS: 제어 버스
DATA_BUS3_1~DATA_BUS3_4: 제3 데이터 버스들
DATA_BUS4_1~DATA_BUS4_4: 제4 데이터 버스들
1410: 커맨드/어드레스 스누핑 로직
1420: 커맨드/어드레스 제어 로직
1440: 레지스터 클럭 드라이버 1450: 멀티 플렉서

Claims (10)

  1. 호스트의 메모리 콘트롤러에 의해 사용 가능한 비휘발성 메모리 모듈에 있어서,
    데이터가 전송되는 데이터 버스 및 커맨드와 어드레스가 전송되는 제어 버스를 공유하는 복수의 휘발성 메모리 장치;
    적어도 하나의 비휘발성 메모리 장치; 및
    호스트의 파워 페일/복구에 따라 상기 복수의 휘발성 메모리 장치에 저장된 데이터를 상기 비휘발성 메모리 장치로 백업하거나 역으로 복원하는 콘트롤러를 포함하며,
    상기 콘트롤러는,
    상기 호스트의 메모리 콘트롤러로부터 입력되는 커맨드와 어드레스를 인식하여 상기 휘발성 메모리 장치별로 데이터 저장량을 분석하는 커맨드/어드레스 스누핑 로직; 및
    상기 커맨드/어드레스 스누핑 로직의 분석 결과에 근거하여 상기 복수의 휘발성 메모리 장치 중 데이터 저장량이 많은 휘발성 메모리 장치를 우선하여 상기 비휘발성 메모리 장치로 백업하는 커맨드/어드레스 제어 로직
    을 포함하는 비휘발성 메모리 모듈.
  2. 제1항에 있어서,
    상기 커맨드/어드레스 제어 로직은 상기 복수의 휘발성 메모리 장치들 중 데이터 저장량이 가장 많은 휘발성 메모리 장치를 인식하기 위한 커맨드 어드레스 레이턴시(CAL: Command Address Latency)를 제1 값으로 설정하고, 나머지 휘발성 메모리 장치의 커맨드 어드레스 레이턴시를 상기 제1 값과 상이한 제2 값으로 설정하는
    비휘발성 메모리 모듈.
  3. 제2항에 있어서,
    상기 제2 값은 상기 제1 값보다 크고, 상기 제2 값과 상기 제1 값의 차이는 로우 어드레스로부터 컬럼 어드레스 지연 시간(tRCD: RAS to CAS delay time) 이상인
    비휘발성 메모리 모듈.
  4. 제3항에 있어서,
    상기 제2 값과 상기 제1 값의 차이는 로우 프리차지 시간(tRP: Row Precharge time) 미만인
    비휘발성 메모리 모듈.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 커맨드/어드레스 제어 로직은,
    상기 비휘발성 메모리 장치의 메모리 페이지를 프로그램하는 동안에 상기 복수의 휘발성 메모리 장치들에 대하여 리프레시 사이클을 균일하게 배분하는 분배 리프레시(distributed refresh) 동작을 수행하는 로직;
    새로운 비휘발성 메모리 장치의 메모리 페이지가 준비되고 라이트 되는 동안에 상기 복수의 휘발성 메모리 장치들을 완전한 동작 상태의 전력보다 낮은 저전력 모드로 동작시키는 로직; 및
    상기 새로운 비휘발성 메모리 장치의 메모리 페이지가 라이트 된 이후에 상기 복수의 휘발성 메모리 장치들을 완전한 동작 상태의 전력 모드로 복구시키는 로직
    을 포함하는 비휘발성 메모리 모듈.
  6. 데이터가 전송되는 데이터 버스 및 커맨드와 어드레스가 전송되는 제어 버스를 공유하는 복수의 휘발성 메모리 장치와, 비휘발성 메모리 장치와, 호스트의 파워 페일/복구에 따라 상기 복수의 휘발성 메모리 장치에 저장된 데이터를 상기 비휘발성 메모리 장치로 백업하거나 역으로 복원하는 콘트롤러를 포함하는 비휘발성 메모리 모듈의 동작 방법에 있어서,
    (a) 상기 콘트롤러에서 호스트의 메모리 콘트롤러로부터 상기 복수의 휘발성 메모리 장치들로 입력되는 커맨드와 어드레스를 인식하는 단계;
    (b) 상기 단계(a)에서 인식된 커맨드와 어드레스를 분석하여 상기 휘발성 메모리 장치별로 데이터 저장량을 인식하는 단계; 및
    (c) 호스트의 파워 페일이 감지되거나 상기 호스트의 메모리 콘트롤러로부터 백업 지시를 받는 경우, 상기 단계(b)의 분석 결과에 근거하여 상기 복수의 휘발성 메모리 장치 중 데이터 저장량이 많은 휘발성 메모리 장치를 우선하여 상기 비휘발성 메모리 장치로 백업하는 단계
    를 포함하는 비휘발성 메모리 모듈의 동작 방법.
  7. 제6항에 있어서,
    상기 커맨드/어드레스 제어 로직은 상기 복수의 휘발성 메모리 장치들 중 데이터 저장량이 가장 많은 휘발성 메모리 장치를 인식하기 위한 커맨드 어드레스 레이턴시(CAL: Command Address Latency)를 제1 값으로 설정하고, 나머지 휘발성 메모리 장치의 커맨드 어드레스 레이턴시를 상기 제1 값과 상이한 제2 값으로 설정하는
    비휘발성 메모리 모듈의 동작 방법.
  8. 제7항에 있어서,
    상기 제2 값은 상기 제1 값보다 크고, 상기 제2 값과 상기 제1 값의 차이는 로우 어드레스로부터 컬럼 어드레스 지연 시간(tRCD: RAS to CAS delay time) 이상인
    비휘발성 메모리 모듈의 동작 방법.
  9. 제8항에 있어서,
    상기 제2 값과 상기 제1 값의 차이는 로우 프리차지 시간(tRP: Row Precharge time) 미만인
    비휘발성 메모리 모듈의 동작 방법.
  10. 제6항 내지 제9항 중 어느 한 항에 있어서,
    상기 단계(c)는,
    (c-1) 상기 비휘발성 메모리 장치의 메모리 페이지를 프로그램하는 동안에 상기 복수의 휘발성 메모리 장치들에 대하여 리프레시 사이클을 균일하게 배분하는 분배 리프레시(distributed refresh) 동작을 수행하는 단계;
    (c-2) 새로운 비휘발성 메모리 장치의 메모리 페이지가 준비되고 라이트 되는 동안에 상기 복수의 휘발성 메모리 장치들을 완전한 동작 상태의 전력보다 낮은 저전력 모드로 동작시키는 단계; 및
    (c-3) 상기 새로운 비휘발성 메모리 장치의 메모리 페이지가 라이트 된 이후에 상기 복수의 휘발성 메모리 장치들을 완전한 동작 상태의 전력 모드로 복구시키는 단계
    를 포함하는 비휘발성 메모리 모듈의 동작 방법.
KR1020160036647A 2016-03-28 2016-03-28 비휘발성 메모리 모듈의 커맨드 어드레스 스누핑 KR102547056B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020160036647A KR102547056B1 (ko) 2016-03-28 2016-03-28 비휘발성 메모리 모듈의 커맨드 어드레스 스누핑
TW105125716A TW201735045A (zh) 2016-03-28 2016-08-12 非揮發性記憶體模組及其操作方法
US15/244,890 US10019187B2 (en) 2016-03-28 2016-08-23 Nonvolatile memory module and operating method for the same
CN201610835610.2A CN107239408B (zh) 2016-03-28 2016-09-20 非易失性存储器模块及其操作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160036647A KR102547056B1 (ko) 2016-03-28 2016-03-28 비휘발성 메모리 모듈의 커맨드 어드레스 스누핑

Publications (2)

Publication Number Publication Date
KR20170111355A true KR20170111355A (ko) 2017-10-12
KR102547056B1 KR102547056B1 (ko) 2023-06-22

Family

ID=59898917

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160036647A KR102547056B1 (ko) 2016-03-28 2016-03-28 비휘발성 메모리 모듈의 커맨드 어드레스 스누핑

Country Status (4)

Country Link
US (1) US10019187B2 (ko)
KR (1) KR102547056B1 (ko)
CN (1) CN107239408B (ko)
TW (1) TW201735045A (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10489313B2 (en) * 2016-10-31 2019-11-26 Alibaba Group Holding Limited Flash storage failure rate reduction and hyperscale infrastructure robustness enhancement through the MRAM-NOR flash based cache architecture
US10147712B1 (en) * 2017-07-21 2018-12-04 Micron Technology, Inc. Memory device with a multiplexed command/address bus
CN109918228B (zh) * 2019-01-28 2021-01-12 浙江中控技术股份有限公司 一种数据掉电保持方法及系统
US10867655B1 (en) 2019-07-08 2020-12-15 Micron Technology, Inc. Methods and apparatus for dynamically adjusting performance of partitioned memory
US11561739B1 (en) * 2020-06-01 2023-01-24 Smart Modular Technologies, Inc. Catastrophic event memory backup system
CN112954525B (zh) * 2021-02-02 2023-07-07 致真存储(北京)科技有限公司 一种tws耳机及其断电恢复的方法和装置
US20230008376A1 (en) * 2021-07-08 2023-01-12 Kioxia Corporation Memory system, control method, and power control circuit
CN114116309B (zh) * 2021-11-19 2023-04-14 合肥康芯威存储技术有限公司 一种存储器的数据存取方法及系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040103258A1 (en) * 2002-11-27 2004-05-27 International Business Machines Corporation Dynamic optimization of latency and bandwidth on DRAM interfaces
US20050044332A1 (en) * 2003-08-18 2005-02-24 De Brebisson Cyrille Systems and methods for storing data on computer systems
US20090031099A1 (en) * 2007-07-25 2009-01-29 Simtek Power interrupt recovery in a hybrid memory subsystem
US8874831B2 (en) 2007-06-01 2014-10-28 Netlist, Inc. Flash-DRAM hybrid memory module
KR20150120558A (ko) * 2014-04-17 2015-10-28 에스케이하이닉스 주식회사 휘발성 메모리 장치, 이를 포함하는 메모리 모듈 및 메모리 모듈의 동작 방법
KR20150145465A (ko) * 2014-06-19 2015-12-30 에스케이하이닉스 주식회사 메모리 시스템 및 이의 동작 방법

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102750205B (zh) * 2012-06-12 2015-09-30 宇龙计算机通信科技(深圳)有限公司 移动终端的数据备份方法及移动终端
US9792185B2 (en) * 2014-06-24 2017-10-17 International Business Machines Corporation Directed backup for massively parallel processing databases
CN104317671A (zh) * 2014-10-24 2015-01-28 杭州帅锐电子科技有限公司 一种提升非易失存储使用寿命的掉电数据保存恢复算法
CN105183379B (zh) * 2015-09-01 2018-10-23 上海新储集成电路有限公司 一种混合内存的数据备份系统及方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040103258A1 (en) * 2002-11-27 2004-05-27 International Business Machines Corporation Dynamic optimization of latency and bandwidth on DRAM interfaces
US20050044332A1 (en) * 2003-08-18 2005-02-24 De Brebisson Cyrille Systems and methods for storing data on computer systems
US8874831B2 (en) 2007-06-01 2014-10-28 Netlist, Inc. Flash-DRAM hybrid memory module
US20090031099A1 (en) * 2007-07-25 2009-01-29 Simtek Power interrupt recovery in a hybrid memory subsystem
KR20150120558A (ko) * 2014-04-17 2015-10-28 에스케이하이닉스 주식회사 휘발성 메모리 장치, 이를 포함하는 메모리 모듈 및 메모리 모듈의 동작 방법
KR20150145465A (ko) * 2014-06-19 2015-12-30 에스케이하이닉스 주식회사 메모리 시스템 및 이의 동작 방법

Also Published As

Publication number Publication date
US10019187B2 (en) 2018-07-10
KR102547056B1 (ko) 2023-06-22
US20170277464A1 (en) 2017-09-28
CN107239408A (zh) 2017-10-10
CN107239408B (zh) 2020-10-23
TW201735045A (zh) 2017-10-01

Similar Documents

Publication Publication Date Title
KR102547056B1 (ko) 비휘발성 메모리 모듈의 커맨드 어드레스 스누핑
KR102535738B1 (ko) 비휘발성 듀얼 인 라인 메모리 시스템, 메모리 모듈, 및 메모리 모듈의 동작 방법
US11226897B2 (en) Hybrid memory module with improved inter-memory data transmission path
CN106055493B (zh) 存储系统、存储模块及其操作方法
CN107239368B (zh) 非易失性存储器模块及其操作方法
CN107239366B (zh) 非易失性双列直插式存储器系统的掉电中断
US7974139B2 (en) Non-volatile memory generating different read voltages
US11581035B2 (en) Systems, devices, and methods for efficient usage of IO section breaks in memory devices
US7782703B2 (en) Semiconductor memory having a bank with sub-banks
CN107919160B (zh) 测试单元阵列的方法及执行其的半导体器件
US11449441B2 (en) Multi-ported nonvolatile memory device with bank allocation and related systems and methods
JP2012512469A (ja) プリセットオペレーションを必要とするメインメモリユニットおよび補助メモリユニットを備える半導体デバイス
US11222671B2 (en) Memory device, method of operating the memory device, memory module, and method of operating the memory module
US9728234B1 (en) Operating method of semiconductor memory device
US20140359181A1 (en) Delaying Bus Activity To Accomodate Memory Device Processing Time
EP3754512B1 (en) Memory device, method of operating the memory device, memory module, and method of operating the memory module
US20160124797A1 (en) Memory Bus Error Signal

Legal Events

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