KR20170111349A - 비휘발성 듀얼 인 라인 메모리 시스템의 파워 다운 인터럽트 - Google Patents

비휘발성 듀얼 인 라인 메모리 시스템의 파워 다운 인터럽트 Download PDF

Info

Publication number
KR20170111349A
KR20170111349A KR1020160036638A KR20160036638A KR20170111349A KR 20170111349 A KR20170111349 A KR 20170111349A KR 1020160036638 A KR1020160036638 A KR 1020160036638A KR 20160036638 A KR20160036638 A KR 20160036638A KR 20170111349 A KR20170111349 A KR 20170111349A
Authority
KR
South Korea
Prior art keywords
volatile memory
data
memory device
host
memory devices
Prior art date
Application number
KR1020160036638A
Other languages
English (en)
Other versions
KR102567279B1 (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 KR1020160036638A priority Critical patent/KR102567279B1/ko
Priority to TW105125719A priority patent/TW201734815A/zh
Priority to US15/244,745 priority patent/US10073744B2/en
Priority to CN201610829373.9A priority patent/CN107239366B/zh
Publication of KR20170111349A publication Critical patent/KR20170111349A/ko
Application granted granted Critical
Publication of KR102567279B1 publication Critical patent/KR102567279B1/ko

Links

Images

Classifications

    • 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
    • G06F11/1451Management of the data involved in backup or backup restore by selection of backup contents
    • 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
    • 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/1456Hardware arrangements for backup
    • 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/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • 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
    • 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
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/26Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
    • G06F9/262Arrangements for next microinstruction selection
    • G06F9/268Microinstruction selection not based on processing results, e.g. interrupt, patch, first cycle store, diagnostic programs
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/005Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor comprising combined but independently operative RAM-ROM, RAM-PROM, RAM-EPROM cells
    • 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/14Power supply arrangements, e.g. power down, chip selection or deselection, layout of wirings or power grids, or multiple supply levels
    • G11C5/143Detection of memory cassette insertion or removal; Continuity checks of supply or ground lines; Detection of supply variations, interruptions or levels ; Switching between alternative supplies
    • G11C5/144Detection of predetermined disconnection or reduction of power supply, e.g. power down or power standby
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/20Memory cell initialisation circuits, e.g. when powering up or down, memory clear, latent image 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/805Real-time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/82Solving problems relating to consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/84Using snapshots, i.e. a logical point-in-time copy of the data
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C14/00Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down
    • G11C14/0009Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down in which the volatile element is a DRAM cell

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)
  • Power Engineering (AREA)
  • Computer Hardware Design (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Computer Security & Cryptography (AREA)
  • Dram (AREA)

Abstract

본 발명은 호스트의 파워 페일/복구에 의해 비휘발성 듀얼 인 라인 메모리 모듈에서 백업/복원 동작을 수행할 때, 메모리 모듈 내에서 데이터 버스의 배선 수를 줄이면서 휘발성 메모리 장치들을 개별적으로 억세스하여 백업/복원 동작을 수행하며, 파워 다운 백업 동작 중에 호스트의 파워가 복구될 경우 후속될지 모를 2차 파워 다운에 신속하게 대응할 수 있는 비휘발성 듀얼 인 라인 메모리 시스템, 메모리 모듈, 및 메모리 모듈의 동작 방법을 제공한다.
본 발명은 호스트의 메모리 콘트롤러에 의해 사용 가능한 비휘발성 메모리 모듈에 있어서, 데이터가 전송되는 데이터 버스 및 커맨드와 어드레스가 전송되는 제어 버스를 공유하는 복수의 휘발성 메모리 장치; 적어도 하나의 비휘발성 메모리 장치; 및 상기 호스트의 파워 페일/복구에 따라 상기 복수의 휘발성 메모리 장치에 저장된 데이터를 상기 비휘발성 메모리 장치로 백업하거나 역으로 복원하는 콘트롤러를 포함하며, 상기 콘트롤러는 상기 백업 동작을 수행하는 중에 상기 호스트의 파워가 복구될 경우 상기 백업 동작을 중단하는 파워 다운 인터럽트 로직을 포함하며, 상기 파워 다운 인터럽트 로직은, 후속될지 모를 상기 호스트의 파워 페일에 대비하기 위해 상기 비휘발성 메모리 장치에 데이터 백업을 위해 충분한 양의 소거 블록이 존재하는지 판단하는 로직; 상기 비휘발성 메모리 장치에 충분한 양의 소거 블록이 존재하지 않는다면 새로운 블록을 소거하는 로직; 및 상기 호스트의 파워 페일을 감지하거나 상기 호스트의 메모리 콘트롤러로부터 백업 동작의 지시를 받는 경우 상기 비휘발성 메모리 장치에서 소거된 블록에 대응하는 데이터를 가진 휘발성 메모리 장치를 상기 비휘발성 메모리 장치에 백업하는 인터럽트 백업 로직을 포함할 수 있다.

Description

비휘발성 듀얼 인 라인 메모리 시스템의 파워 다운 인터럽트 {POWER DOWN INTERRUPT OF NON-VOLATILE DUAL IN LINE MEMORY SYSTEM}
본 발명은 비휘발성 듀얼 인 라인 메모리 시스템, 메모리 모듈 및 메모리 모듈의 동작 방법에 관한 것으로, 더욱 상세하게는 배선 수를 줄이면서 콘트롤러가 휘발성 메모리 장치를 개별적으로 억세스할 수 있는 기술에 관한 것이다.
대부분의 경우에, 메모리 장치를 제어하기 위한 콘트롤러와 메모리 장치들은 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호
본 발명은 호스트의 파워 페일/복구에 의해 비휘발성 듀얼 인 라인 메모리 모듈에서 백업/복원 동작을 수행할 때, 메모리 모듈 내에서 데이터 버스의 배선 수를 줄이면서 휘발성 메모리 장치들을 개별적으로 억세스하여 백업/복원 동작을 수행하며, 파워 다운 백업 동작 중에 호스트의 파워가 복구될 경우 후속될지 모를 2차 파워 다운에 신속하게 대응할 수 있는 비휘발성 듀얼 인 라인 메모리 시스템, 메모리 모듈, 및 메모리 모듈의 동작 방법을 제공할 수 있다.
본 발명에 따른 비휘발성 메모리 모듈은, 호스트의 메모리 콘트롤러에 의해 사용 가능한 비휘발성 메모리 모듈에 있어서, 데이터가 전송되는 데이터 버스 및 커맨드와 어드레스가 전송되는 제어 버스를 공유하는 복수의 휘발성 메모리 장치; 적어도 하나의 비휘발성 메모리 장치; 및 상기 호스트의 파워 페일/복구에 따라 상기 복수의 휘발성 메모리 장치에 저장된 데이터를 상기 비휘발성 메모리 장치로 백업하거나 역으로 복원하는 콘트롤러를 포함하며, 상기 콘트롤러는 상기 백업 동작을 수행하는 중에 상기 호스트의 파워가 복구될 경우 상기 백업 동작을 중단하는 파워 다운 인터럽트 로직을 포함하며, 상기 파워 다운 인터럽트 로직은, 후속될지 모를 상기 호스트의 파워 페일에 대비하기 위해 상기 비휘발성 메모리 장치에 데이터 백업을 위해 충분한 양의 소거 블록이 존재하는지 판단하는 로직; 상기 비휘발성 메모리 장치에 충분한 양의 소거 블록이 존재하지 않는다면 새로운 블록을 소거하는 로직; 및 상기 호스트의 파워 페일을 감지하거나 상기 호스트의 메모리 콘트롤러로부터 백업 동작의 지시를 받는 경우 상기 비휘발성 메모리 장치에서 소거된 블록에 대응하는 데이터를 가진 휘발성 메모리 장치를 상기 비휘발성 메모리 장치에 백업하는 인터럽트 백업 로직을 포함할 수 있다.
상기 인터럽트 백업 로직은, 상기 데이터 버스 및 상기 제어 버스를 공유하는 상기 복수의 휘발성 메모리 장치 중 상기 소거된 블록에 대응하는 데이터를 가진 휘발성 메모리 장치를 인식하기 위한 커맨드 어드레스 레이턴시(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) 후속될지 모를 상기 호스트의 파워 페일에 대비하기 위해 상기 비휘발성 메모리 장치에 데이터 백업을 위해 충분한 양의 소거 블록이 존재하는지 판단하는 단계; (c) 상기 비휘발성 메모리 장치에 충분한 양의 소거 블록이 존재하지 않는다면 새로운 블록을 소거하는 단계; 및 (d) 상기 호스트의 파워 페일을 감지하거나 상기 호스트의 메모리 콘트롤러로부터 백업 동작의 지시를 받는 경우 상기 비휘발성 메모리 장치에서 소거된 블록에 대응하는 데이터를 가진 휘발성 메모리 장치를 상기 비휘발성 메모리 장치에 백업하는 인터럽트 백업 단계를 포함할 수 있다.
상기 단계(d)는, 상기 데이터 버스 및 상기 제어 버스를 공유하는 상기 복수의 휘발성 메모리 장치 중 상기 소거된 블록에 대응하는 데이터를 가진 휘발성 메모리 장치를 인식하기 위한 커맨드 어드레스 레이턴시(CAL: Command Address Latency)를 제1 값으로 설정하고, 나머지 휘발성 메모리 장치의 커맨드 어드레스 레이턴시를 상기 제1 값과 상이한 제2 값으로 설정할 수 있다.
상기 제2 값은 상기 제1 값보다 크고, 상기 제2 값과 상기 제1 값의 차이는 로우 어드레스로부터 컬럼 어드레스 지연 시간(tRCD: RAS to CAS delay time) 이상일 수 있다.
상기 제2 값과 상기 제1 값의 차이는 로우 프리차지 시간(tRP: Row Precharge time) 미만일 수 있다.
상기 콘트롤러는 상기 단계(d)의 인터럽트 백업을 수행한 이후, 상기 단계(a)에 의해 중단된 백업 동작을 재개할 수 있다.
상기 단계(d)는, (d-1) 상기 비휘발성 메모리 장치의 메모리 페이지를 프로그램하는 동안에 상기 복수의 휘발성 메모리 장치들에 대하여 리프레시 사이클을 균일하게 배분하는 분배 리프레시(distributed refresh) 동작을 수행하는 단계; (d-2) 새로운 비휘발성 메모리 장치의 메모리 페이지가 준비되고 라이트 되는 동안에 상기 복수의 휘발성 메모리 장치들을 완전한 동작 상태의 전력보다 낮은 저전력 모드로 동작시키는 단계; 및 (d-3) 상기 새로운 비휘발성 메모리 장치의 메모리 페이지가 라이트 된 이후에 상기 복수의 휘발성 메모리 장치들을 완전한 동작 상태의 전력 모드로 복구시키는 단계를 포함할 수 있다.
본 발명의 비휘발성 듀얼 인 라인 메모리 시스템, 메모리 모듈, 및 메모리 모듈의 동작 방법에 따르면, 호스트의 파워 페일/복구에 의해 비휘발성 듀얼 인 라인 메모리 모듈에서 백업/복원 동작을 수행할 때, 메모리 모듈 내에서 데이터 버스의 배선 수를 줄이면서 휘발성 메모리 장치들을 개별적으로 억세스하여 백업/복원 동작을 수행할 수 있고, 파워 다운 백업 동작 중에 호스트의 파워가 복구될 경우 후속될지 모를 2차 파워 다운에 신속하게 대응할 수 있다.
도 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에서 파워 다운 인터럽트 동작을 예시한 순서도이다.
이하, 본 발명의 바람직한 실시예(들)에 대하여 첨부도면을 참조하여 상세히 설명한다. 우선 각 도면의 구성요소들에 참조부호를 부가함에 있어서, 동일한 구성요소들에 한해서는 비록 다른 도면상에 표시되더라도 가능한한 동일한 부호로 표기되었음에 유의하여야 한다. 또한, 하기의 설명에서는 많은 특정사항들이 도시되어 있는데, 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐 이러한 특정 사항들 없이도 본 발명이 실시될 수 있음은 이 기술분야에서 통상의 지식을 가진 자에게는 자명하다 할 것이다.
본 발명은 비휘발성 듀얼 인 라인 메모리 시스템(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(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 데이터 버스들

Claims (12)

  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항 중 어느 한 항에 있어서,
    상기 콘트롤러는 상기 인터럽트 백업 로직을 수행한 이후, 상기 파워 다운 인터럽트 로직에 의해 중단된 백업 동작을 재개하는
    비휘발성 메모리 모듈.
  6. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 인터럽트 백업 로직은,
    상기 비휘발성 메모리 장치의 메모리 페이지를 프로그램하는 동안에 상기 복수의 휘발성 메모리 장치들에 대하여 리프레시 사이클을 균일하게 배분하는 분배 리프레시(distributed refresh) 동작을 수행하는 로직;
    새로운 비휘발성 메모리 장치의 메모리 페이지가 준비되고 라이트 되는 동안에 상기 복수의 휘발성 메모리 장치들을 완전한 동작 상태의 전력보다 낮은 저전력 모드로 동작시키는 로직; 및
    상기 새로운 비휘발성 메모리 장치의 메모리 페이지가 라이트 된 이후에 상기 복수의 휘발성 메모리 장치들을 완전한 동작 상태의 전력 모드로 복구시키는 로직
    을 포함하는 비휘발성 메모리 모듈.
  7. 데이터가 전송되는 데이터 버스 및 커맨드와 어드레스가 전송되는 제어 버스를 공유하는 복수의 휘발성 메모리 장치와, 비휘발성 메모리 장치와, 호스트의 파워 페일/복구에 따라 상기 복수의 휘발성 메모리 장치에 저장된 데이터를 상기 비휘발성 메모리 장치로 백업하거나 역으로 복원하는 콘트롤러를 포함하는 비휘발성 메모리 모듈의 동작 방법에 있어서,
    (a) 상기 백업 동작을 수행하는 중에 상기 호스트의 파워가 복구될 경우 상기 백업 동작을 중단하는 단계;
    (b) 후속될지 모를 상기 호스트의 파워 페일에 대비하기 위해 상기 비휘발성 메모리 장치에 데이터 백업을 위해 충분한 양의 소거 블록이 존재하는지 판단하는 단계;
    (c) 상기 비휘발성 메모리 장치에 충분한 양의 소거 블록이 존재하지 않는다면 새로운 블록을 소거하는 단계; 및
    (d) 상기 호스트의 파워 페일을 감지하거나 상기 호스트의 메모리 콘트롤러로부터 백업 동작의 지시를 받는 경우 상기 비휘발성 메모리 장치에서 소거된 블록에 대응하는 데이터를 가진 휘발성 메모리 장치를 상기 비휘발성 메모리 장치에 백업하는 인터럽트 백업 단계
    를 포함하는 비휘발성 메모리 모듈의 동작 방법.
  8. 제7항에 있어서,
    상기 단계(d)는,
    상기 데이터 버스 및 상기 제어 버스를 공유하는 상기 복수의 휘발성 메모리 장치 중 상기 소거된 블록에 대응하는 데이터를 가진 휘발성 메모리 장치를 인식하기 위한 커맨드 어드레스 레이턴시(CAL: Command Address Latency)를 제1 값으로 설정하고, 나머지 휘발성 메모리 장치의 커맨드 어드레스 레이턴시를 상기 제1 값과 상이한 제2 값으로 설정하는
    비휘발성 메모리 모듈의 동작 방법.
  9. 제8항에 있어서,
    상기 제2 값은 상기 제1 값보다 크고, 상기 제2 값과 상기 제1 값의 차이는 로우 어드레스로부터 컬럼 어드레스 지연 시간(tRCD: RAS to CAS delay time) 이상인
    비휘발성 메모리 모듈의 동작 방법.
  10. 제9항에 있어서,
    상기 제2 값과 상기 제1 값의 차이는 로우 프리차지 시간(tRP: Row Precharge time) 미만인
    비휘발성 메모리 모듈의 동작 방법.
  11. 제7항 내지 제10항 중 어느 한 항에 있어서,
    상기 콘트롤러는 상기 단계(d)의 인터럽트 백업을 수행한 이후, 상기 단계(a)에 의해 중단된 백업 동작을 재개하는
    비휘발성 메모리 모듈의 동작 방법.
  12. 제7항 내지 제10항 중 어느 한 항에 있어서,
    상기 단계(d)는,
    (d-1) 상기 비휘발성 메모리 장치의 메모리 페이지를 프로그램하는 동안에 상기 복수의 휘발성 메모리 장치들에 대하여 리프레시 사이클을 균일하게 배분하는 분배 리프레시(distributed refresh) 동작을 수행하는 단계;
    (d-2) 새로운 비휘발성 메모리 장치의 메모리 페이지가 준비되고 라이트 되는 동안에 상기 복수의 휘발성 메모리 장치들을 완전한 동작 상태의 전력보다 낮은 저전력 모드로 동작시키는 단계; 및
    (d-3) 상기 새로운 비휘발성 메모리 장치의 메모리 페이지가 라이트 된 이후에 상기 복수의 휘발성 메모리 장치들을 완전한 동작 상태의 전력 모드로 복구시키는 단계
    를 포함하는 비휘발성 메모리 모듈의 동작 방법.
KR1020160036638A 2016-03-28 2016-03-28 비휘발성 듀얼 인 라인 메모리 시스템의 파워 다운 인터럽트 KR102567279B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020160036638A KR102567279B1 (ko) 2016-03-28 2016-03-28 비휘발성 듀얼 인 라인 메모리 시스템의 파워 다운 인터럽트
TW105125719A TW201734815A (zh) 2016-03-28 2016-08-12 非揮發性雙列直插式記憶體系統的斷電中斷
US15/244,745 US10073744B2 (en) 2016-03-28 2016-08-23 Power-down interrupt of nonvolatile dual in-line memory system
CN201610829373.9A CN107239366B (zh) 2016-03-28 2016-09-18 非易失性双列直插式存储器系统的掉电中断

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160036638A KR102567279B1 (ko) 2016-03-28 2016-03-28 비휘발성 듀얼 인 라인 메모리 시스템의 파워 다운 인터럽트

Publications (2)

Publication Number Publication Date
KR20170111349A true KR20170111349A (ko) 2017-10-12
KR102567279B1 KR102567279B1 (ko) 2023-08-17

Family

ID=59898875

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160036638A KR102567279B1 (ko) 2016-03-28 2016-03-28 비휘발성 듀얼 인 라인 메모리 시스템의 파워 다운 인터럽트

Country Status (4)

Country Link
US (1) US10073744B2 (ko)
KR (1) KR102567279B1 (ko)
CN (1) CN107239366B (ko)
TW (1) TW201734815A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11803307B2 (en) 2021-01-07 2023-10-31 SK Hynix Inc. Memory system and operating method thereof

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190243720A1 (en) * 2018-02-08 2019-08-08 Micron Technology, Inc. Backup operations from volatile to non-volatile memory
US10877551B2 (en) * 2018-04-11 2020-12-29 Dell Products L.P. System and method of managing information handling systems
CN109582508B (zh) * 2018-12-29 2023-12-26 西安紫光国芯半导体股份有限公司 用于nvdimm的数据备份和恢复方法、nvdimm控制器以及nvdimm
US11586518B2 (en) * 2020-08-27 2023-02-21 Micron Technology, Inc. Thermal event prediction in hybrid memory modules

Citations (7)

* 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
US20090031099A1 (en) * 2007-07-25 2009-01-29 Simtek Power interrupt recovery in a hybrid memory subsystem
US20110010499A1 (en) * 2009-07-09 2011-01-13 Fujitsu Limited Storage system, method of controlling storage system, and method of controlling control apparatus
US8874831B2 (en) 2007-06-01 2014-10-28 Netlist, Inc. Flash-DRAM hybrid memory module
KR20150120558A (ko) * 2014-04-17 2015-10-28 에스케이하이닉스 주식회사 휘발성 메모리 장치, 이를 포함하는 메모리 모듈 및 메모리 모듈의 동작 방법
KR20150133350A (ko) * 2014-05-19 2015-11-30 에스케이하이닉스 주식회사 메모리 모듈 및 이의 동작 방법
KR20150145465A (ko) * 2014-06-19 2015-12-30 에스케이하이닉스 주식회사 메모리 시스템 및 이의 동작 방법

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1236106A4 (en) * 1999-09-22 2002-10-30 Netcell Corp RAID CONTROL SYSTEM AND METHOD WITH HOST ATA EMULATION INTERFACE
JP4308551B2 (ja) * 2003-03-06 2009-08-05 株式会社ルネサステクノロジ メモリカードおよびホスト装置
JP2011048725A (ja) * 2009-08-28 2011-03-10 Panasonic Corp 不揮発性記憶装置および不揮発性メモリコントローラ
JP6011272B2 (ja) * 2012-11-22 2016-10-19 富士通株式会社 ストレージ装置、復旧方法、および復旧プログラム
US9535828B1 (en) * 2013-04-29 2017-01-03 Amazon Technologies, Inc. Leveraging non-volatile memory for persisting data
KR102156222B1 (ko) * 2013-12-24 2020-09-15 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것을 포함하는 데이터 처리 시스템
KR102174818B1 (ko) * 2014-04-07 2020-11-06 에스케이하이닉스 주식회사 휘발성 메모리, 이를 포함하는 메모리 모듈 및 메모리 모듈의 동작 방법
CN104077246A (zh) * 2014-07-02 2014-10-01 浪潮(北京)电子信息产业有限公司 一种实现易失性存储器备份的装置

Patent Citations (7)

* 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
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
US20110010499A1 (en) * 2009-07-09 2011-01-13 Fujitsu Limited Storage system, method of controlling storage system, and method of controlling control apparatus
KR20150120558A (ko) * 2014-04-17 2015-10-28 에스케이하이닉스 주식회사 휘발성 메모리 장치, 이를 포함하는 메모리 모듈 및 메모리 모듈의 동작 방법
KR20150133350A (ko) * 2014-05-19 2015-11-30 에스케이하이닉스 주식회사 메모리 모듈 및 이의 동작 방법
KR20150145465A (ko) * 2014-06-19 2015-12-30 에스케이하이닉스 주식회사 메모리 시스템 및 이의 동작 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11803307B2 (en) 2021-01-07 2023-10-31 SK Hynix Inc. Memory system and operating method thereof

Also Published As

Publication number Publication date
US20170277593A1 (en) 2017-09-28
CN107239366B (zh) 2020-09-08
TW201734815A (zh) 2017-10-01
KR102567279B1 (ko) 2023-08-17
US10073744B2 (en) 2018-09-11
CN107239366A (zh) 2017-10-10

Similar Documents

Publication Publication Date Title
KR102547056B1 (ko) 비휘발성 메모리 모듈의 커맨드 어드레스 스누핑
KR102535738B1 (ko) 비휘발성 듀얼 인 라인 메모리 시스템, 메모리 모듈, 및 메모리 모듈의 동작 방법
KR102567279B1 (ko) 비휘발성 듀얼 인 라인 메모리 시스템의 파워 다운 인터럽트
CN106055493B (zh) 存储系统、存储模块及其操作方法
US9384818B2 (en) Memory power management
CN107239368B (zh) 非易失性存储器模块及其操作方法
KR20210074172A (ko) 메모리-내 포스트 패키지 리페어(ppr)를 위한 인라인 버퍼
US8897087B2 (en) Memory device and operating method of memory device and memory system
US20090196116A1 (en) Semiconductor memory having a bank with sub-banks
US11449441B2 (en) Multi-ported nonvolatile memory device with bank allocation and related systems and methods
KR20150061286A (ko) 메모리 및 이를 포함하는 메모리 모듈
KR20140071639A (ko) 동작 속도가 향상된 반도체 메모리 장치 및 그것을 포함하는 데이터 저장 장치
CN114121075B (zh) 用于存储器刷新的系统及方法
JP6812060B2 (ja) メモリ装置の低電力状態の終了のための装置及び方法
US20140359181A1 (en) Delaying Bus Activity To Accomodate Memory Device Processing Time
KR20170113719A (ko) 반도체 시스템
JP2005346502A (ja) メモリアクセス制御装置、情報処理システム、メモリアクセス制御方法、及び制御プログラム
US20240168846A1 (en) Memory system including memory controller and memory device and method for recovering from an error thereof

Legal Events

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