KR102475547B1 - 불휘발성 메모리 모듈 및 그것의 동작 방법 - Google Patents

불휘발성 메모리 모듈 및 그것의 동작 방법 Download PDF

Info

Publication number
KR102475547B1
KR102475547B1 KR1020150170123A KR20150170123A KR102475547B1 KR 102475547 B1 KR102475547 B1 KR 102475547B1 KR 1020150170123 A KR1020150170123 A KR 1020150170123A KR 20150170123 A KR20150170123 A KR 20150170123A KR 102475547 B1 KR102475547 B1 KR 102475547B1
Authority
KR
South Korea
Prior art keywords
address
memory
data
volatile memory
module
Prior art date
Application number
KR1020150170123A
Other languages
English (en)
Other versions
KR20170064628A (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 KR1020150170123A priority Critical patent/KR102475547B1/ko
Priority to US15/366,137 priority patent/US10303372B2/en
Publication of KR20170064628A publication Critical patent/KR20170064628A/ko
Priority to US16/414,893 priority patent/US11106363B2/en
Priority to US17/389,834 priority patent/US11614866B2/en
Application granted granted Critical
Publication of KR102475547B1 publication Critical patent/KR102475547B1/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
    • 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
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • 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
    • 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
    • G06F13/1684Details of memory controller using multiple buses
    • 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)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 발명에 따른 불휘발성 메모리 모듈은 불휘발성 메모리, 불휘발성 메모리의 캐시 메모리인 휘발성 메모리, 휘발성 메모리와 메모리 데이터 라인을 공유하고, 불휘발성 메모리를 제어하도록 구성되는 제어기, 및 외부 장치로부터 모듈 쓰기 커맨드 및 어드레스를 수신하고, 수신된 모듈 쓰기 커맨드 및 어드레스에 응답하여, 제1 버스를 통해 휘발성 메모리로 제1 읽기 커맨드 및 어드레스, 및 제1 쓰기 커맨드 및 어드레스를 순차적으로 전송하고, 제2 버스를 통해 제어기로 제2 쓰기 커맨드 및 어드레스를 전송하는 모듈 컨트롤러를 포함한다.

Description

불휘발성 메모리 모듈 및 그것의 동작 방법{NONVOLATILE MEMORY DEVICE AND OPERATION METHOD THEREOF}
본 발명은 반도체 메모리에 관한 것으로, 더욱 상세하게는 불휘발성 메모리 모듈 및 그것의 동작 방법에 관한 것이다.
반도체 메모리 장치(semiconductor memory device)는 실리콘(Si, silicon), 게르마늄(Ge, Germanium), 비화 갈륨(GaAs, gallium arsenide), 인화인듐(InP, indium phosphide) 등과 같은 반도체를 이용하여 구현되는 기억장치이다. 반도체 메모리 장치는 크게 휘발성 메모리 장치(Volatile memory device)와 불휘발성 메모리 장치(Nonvolatile memory device)로 구분된다.
휘발성 메모리 장치는 전원 공급이 차단되면 저장하고 있던 데이터가 소멸되는 메모리 장치이다. 휘발성 메모리 장치에는 SRAM (Static RAM), DRAM (Dynamic RAM), SDRAM (Synchronous DRAM) 등이 있다. 불휘발성 메모리 장치는 전원 공급이 차단되어도 저장하고 있던 데이터를 유지하는 메모리 장치이다. 불 휘발성 메모리 장치에는 ROM (Read Only Memory), PROM (Programmable ROM), EPROM (Electrically Programmable ROM), EEPROM (Electrically Erasable and Programmable ROM), 플래시 메모리 장치, PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등이 있다.
특히, DRAM은 빠른 응답 속도 및 빠른 동작 속도를 갖기 때문에, 시스템의 주 메모리(main memory)로써 널리 사용된다. 그러나, DRAM은 전원 공급이 차단되면 데이터가 소멸되는 휘발성 메모리이기 때문에, DRAM에 저장된 데이터를 보존하기 위해서는 별도의 장치가 요구된다. 또한, DRAM은 캐패시터를 사용하여 데이터를 저장하기 때문에, 단위 셀의 크기가 크고, 이로 인하여, 제한된 영역에 DRAM 용량을 증가시키는데 어려움이 있다.
본 발명의 목적은 불휘발성 메모리 및 휘발성 메모리를 사용하여 대용량 및 고성능을 갖는 불휘발성 메모리 모듈 및 그것의 동작 방법을 제공하는데 있다.
본 발명의 일 실시 예에 따른 불휘발성 메모리 모듈은 불휘발성 메모리, 상기 불휘발성 메모리의 캐시 메모리인 휘발성 메모리, 상기 휘발성 메모리와 메모리 데이터 라인을 공유하고, 상기 불휘발성 메모리를 제어하도록 구성되는 제어기, 및 외부 장치로부터 모듈 쓰기 커맨드 및 어드레스를 수신하고, 상기 수신된 모듈 쓰기 커맨드 및 상기 어드레스에 응답하여, 제1 버스를 통해 상기 휘발성 메모리로 제1 읽기 커맨드 및 상기 어드레스, 및 제1 쓰기 커맨드 및 상기 어드레스를 순차적으로 전송하고, 제2 버스를 통해 상기 제어기로 제2 쓰기 커맨드 및 상기 어드레스를 전송하는 모듈 컨트롤러를 포함한다.
실시 예로서, 상기 휘발성 메모리는 상기 제1 읽기 커맨드 및 어드레스에 응답하여 상기 어드레스의 일부와 대응되는 제1 데이터를 상기 메모리 데이터 라인을 통해 출력하고, 상기 어드레스의 일부와 대응되는 태그를 태그 데이터 라인을 통해 출력하는 것을 특징으로 한다.
실시 예로서, 상기 제어기는 상기 휘발성 메모리와 상기 태그 데이터 라인을 공유하고, 상기 태그 데이터 라인을 통해 상기 태그를 수신하고, 상기 수신된 태그 및 상기 수신된 어드레스를 기반으로 상기 메모리 데이터 라인을 통해 출력되는 상기 제1 데이터를 선택적으로 상기 불휘발성 메모리에 프로그램하는 것을 특징으로 한다.
실시 예로서, 상기 휘발성 메모리 및 상기 제어기 각각은 상기 메모리 데이터 라인을 통해 상기 외부 장치로부터 쓰기 데이터를 수신하고, 상기 휘발성 메모리는 상기 제1 쓰기 커맨드 및 상기 어드레스에 응답하여, 상기 수신된 쓰기 데이터를 상기 휘발성 메모리의 저장 영역 중 상기 어드레스의 일부와 대응되는 영역에 저장하고, 상기 제어기는 상기 제2 쓰기 커맨드 및 상기 어드레스에 응답하여, 상기 수신된 쓰기 데이터를 상기 불휘발성 메모리의 저장 영역 중 상기 어드레스와 대응되는 영역에 저장하는 것을 특징으로 하는 불휘발성 메모리 모듈.
본 발명의 일 실시 예에 따른 불휘발성 메모리 모듈은 불휘발성 메모리, 상기 불휘발성 메모리의 캐시 메모리인 휘발성 메모리, 상기 휘발성 메모리와 메모리 데이터 라인을 공유하고, 상기 불휘발성 메모리를 제어하도록 구성되는 제어기, 및 외부 장치로부터 제1 모듈 읽기 커맨드 및 어드레스를 수신하고, 상기 수신된 모듈 읽기 커맨드 및 상기 어드레스에 응답하여, 제1 버스를 통해 상기 휘발성 메모리로 제1 읽기 커맨드 및 상기 어드레스를 전송하고, 제2 버스를 통해 상기 제어기로 제2 읽기 커맨드 및 상기 어드레스를 전송하는 모듈 컨트롤러를 포함한다.
실시 예로서, 상기 휘발성 메모리는 상기 휘발성 메모리는 상기 제1 읽기 커맨드 및 상기 어드레스에 응답하여 상기 어드레스의 일부와 대응되는 영역의 제1 데이터를 상기 메모리 데이터 라인을 통해 출력하고, 상기 어드레스의 일부와 대응되는 영역의 태그를 태그 데이터 라인을 통해 출력하는 것을 특징으로 한다.
실시 예로서, 상기 외부 장치로부터 상기 제1 모듈 읽기 커맨드 및 상기 어드레스가 수신된 시점으로부터 소정의 시간이 경과한 이후에 상기 제1 데이터가 상기 외부 장치로 전송되고, 상기 불휘발성 메모리 모듈은 상기 소정의 시간에 대한 정보를 포함하고, 상기 소정의 시간에 대한 정보를 상기 외부 장치로 전송하는 직렬 프레즌스 검출 칩을 더 포함한다.
실시 예로서, 상기 제어기는 상기 휘발성 메모리와 상기 태그 데이터 라인을 공유하고, 상기 태그 데이터 라인을 통해 수신된 상기 태그 및 상기 어드레스를 기반으로 캐시 히트 또는 캐시 미스를 판별하고, 상기 판별 결과를 상기 외부 장치로 전송하는 것을 특징으로 한다.
실시 예로서, 상기 모듈 컨트롤러는 상기 외부 장치로부터 제2 모듈 읽기 커맨드 및 상기 어드레스를 수신하고, 상기 수신된 제2 모듈 읽기 커맨드 및 상기 어드레스에 응답하여 상기 제1 버스를 통해 제1 쓰기 커맨드 및 상기 어드레스를 상기 휘발성 메모리로 전송하고, 상기 제2 버스를 통해 제3 읽기 커맨드 및 상기 어드레스를 상기 제어기로 제공하는 것을 특징으로 한다.
실시 예로서, 상기 제어기는 상기 제3 읽기 커맨드 및 상기 어드레스에 응답하여 상기 어드레스에 대응되는 상기 불휘발성 메모리로부터의 데이터를 상기 메모리 데이터 라인을 통해 출력하는 것을 특징으로 한다.
본 발명의 일 실시 예에 따른 불휘발성 메모리 모듈은 불휘발성 메모리, 상기 불휘발성 메모리의 캐시 메모리인 휘발성 메모리, 상기 휘발성 메모리와 메모리 데이터 라인을 공유하고, 상기 불휘발성 메모리를 제어하도록 구성되는 제어기, 및 상기 휘발성 메모리 및 상기 제어기와 태그 데이터 라인을 공유하고, 외부 장치로부터 제1 모듈 읽기 커맨드 및 어드레스를 수신하고, 상기 수신된 모듈 읽기 커맨드 및 상기 어드레스에 응답하여, 제1 버스를 통해 상기 휘발성 메모리로 제1 읽기 커맨드 및 상기 어드레스를 전송하고, 제2 버스를 통해 상기 제어기로 제2 읽기 커맨드 및 상기 어드레스를 전송하는 모듈 컨트롤러를 포함하되, 상기 휘발성 메모리는 상기 제1 읽기 커맨드 및 상기 어드레스에 응답하여 상기 어드레스의 일부와 대응되는 영역에 저장된 제1 데이터 및 제1 태그를 각각 상기 메모리 데이터 라인 및 상기 태그 데이터 라인을 통해 출력하고, 상기 모듈 컨트롤러는 상기 태그 데이터 라인을 통해 수신된 상기 제1 태그 및 상기 어드레스를 기반으로 상기 제1 데이터에 대한 캐시 히트 또는 캐시 미스 여부를 판별하고, 상기 판별 결과를 상기 외부 장치로 전송하는 것을 특징으로 한다.
실시 예로서, 상기 판별 결과가 캐시 미스를 가리키는 경우, 상기 제어기는 상기 불휘발성 메모리로부터 상기 어드레스에 대응되는 제2 데이터를 읽는 것을 특징으로 한다.
실시 예로서, 상기 제어기가 상기 불휘발성 메모리로부터 상기 제2 데이터를 읽은 이후에, 상기 모듈 컨트롤러는 상기 외부 장치로 준비 신호를 전송하는 것을 특징으로 한다.
실시 예로서, 상기 판별 결과가 캐시 미스를 가리키는 경우, 상기 모듈 컨트롤러는 상기 외부 장치로부터 제2 모듈 읽기 커맨드 및 상기 제1 트랜잭션 아이디를 수신하고, 상기 수신된 제2 모듈 읽기 커맨드 및 상기 제1 트랜잭션 아이디에 응답하여, 상기 제2 버스를 통해 제3 읽기 커맨드 및 상기 제1 트랜잭션 아이디와 대응되는 상기 어드레스를 상기 제어기로 전송하는 것을 특징으로 한다.
실시 예로서, 상기 모듈 컨트롤러는 상기 제2 데이터가 상기 메모리 데이터 라인을 통해 출력되는 동안 상기 제1 트랜잭션 아이디를 상기 외부 장치로 전송하는 것을 특징으로 한다.
본 발명의 일 실시 예에 따른 불휘발성 메모리 모듈은 상기 불휘발성 메모리 모듈은 불휘발성 메모리, 상기 불휘발성 메모리의 캐시 메모리인 휘발성 메모리, 상기 휘발성 메모리와 메모리 데이터 라인을 공유하고, 상기 불휘발성 메모리를 제어하도록 구성되는 제어기, 및 외부 장치의 제어에 따라 제1 버스를 통해 상기 휘발성 메모리를 제어하고, 제2 버스를 통해 상기 제어기를 제어하는 모듈 컨트롤러를 포함한다. 상기 불휘발성 메모리 모듈의 동작 방법은 상기 모듈 컨트롤러가, 상기 외부 장치로부터 모듈 쓰기 커맨드 및 어드레스를 수신하는 단계, 상기 모듈 컨트롤러가, 상기 수신된 모듈 쓰기 커맨드 및 어드레스에 응답하여 상기 휘발성 메모리의 저장 영역 중 상기 어드레스의 일부와 대응되는 영역에 저장된 제1 태그를 기반으로 상기 상기 휘발성 메모리의 저장 영역 중 상기 어드레스의 일부와 대응되는 영역에 저장된 제1 데이터가 상기 불휘발성 메모리로 선택적으로 플러시되도록 상기 휘발성 메모리 및 상기 불휘발성 메모리를 제어하는 단계, 상기 외부 장치로부터 상기 메모리 데이터 라인을 통해 쓰기 데이터를 수신하는 단계, 상기 모듈 컨트롤러가, 상기 수신된 쓰기 데이터가 상기 휘발성 메모리의 저장 영역 중 상기 어드레스의 일부와 대응되는 영역 또는 상기 불휘발성 메모리의 저장 영역 중 상기 어드레스와 대응되는 영역에 저장되도록 상기 휘발성 메모리 및 상기 제어기를 제어하는 단계를 포함한다.
본 발명의 일 실시 예에 따른 불휘발성 메모리 모듈은 불휘발성 메모리, 상기 불휘발성 메모리의 캐시 메모리인 휘발성 메모리, 상기 휘발성 메모리와 메모리 데이터 라인을 공유하고, 상기 불휘발성 메모리를 제어하도록 구성되는 제어기, 및 외부 장치의 제어에 따라 제1 버스를 통해 상기 휘발성 메모리를 제어하고, 제2 버스를 통해 상기 제어기를 제어하는 모듈 컨트롤러를 포함한다. 상기 불휘발성 메모리 모듈의 동작 방법은 상기 모듈 컨트롤러가, 상기 외부 장치로부터 모듈 읽기 커맨드 및 어드레스를 수신하는 단계, 상기 모듈 컨트롤러가, 상기 모듈 읽기 커맨드 및 상기 어드레스에 응답하여, 상기 휘발성 메모리가 상기 휘발성 메모리의 저장 영역 중 상기 어드레스의 일부와 대응되는 제1 영역에 저장된 제1 데이터를 상기 메모리 데이터 라인을 통해 상기 외부 장치로 출력하고, 상기 제1 영역에 저장된 제1 태그를 태그 데이터 라인을 통해 출력하도록 상기 휘발성 메모리를 제어하는 단계, 및 상기 모듈 컨트롤러가, 상기 제1 태그를 기반으로 캐시 히트 또는 캐시 미스를 판별하고, 상기 판별 결과를 상기 외부 장치로 출력하는 단계를 포함한다.
본 발명의 일 실시 예에 따른 메모리 시스템은 제1 메모리, 상기 제1 메모리의 캐시 메모리인 제2 메모리, 및 상기 제1 및 제2 메모리들과 데이터 버스를 공유하고, 상기 데이터 버스를 통해 상기 제1 및 제2 메모리들과 데이터를 교환하도록 구성되는 메모리 컨트롤러를 포함하고, 읽기 동작시, 상기 메모리 컨트롤러는 상기 제2 메모리로부터 캐시 정보를 수신하고, 상기 수신된 캐시 정보를 기반으로 상기 제1 메모리로부터 선택적으로 데이터를 수신한다.
실시 예로서, 상기 수신된 캐시 정보가 캐시 미스를 가리키는 경우, 상기 메모리 컨트롤러는 상기 제1 메모리로부터 데이터를 수신하는 것을 특징으로 한다.
본 발명의 일 실시 예에 따른 메모리 시스템은 제1 메모리, 상기 제1 메모리의 캐시 메모리인 제2 메모리, 및 상기 제1 및 제2 메모리들과 데이터 버스를 공유하고, 상기 데이터 버스를 통해 상기 제1 및 제2 메모리들과 데이터를 교환하도록 구성되는 메모리 컨트롤러를 포함하고, 쓰기 동작시, 상기 메모리 컨트롤러는 상기 제2 메모리로부터 캐시 정보를 수신하고, 상기 수신된 캐시 정보를 기반으로 상기 제1 메모리로부터의 데이터를 상기 제2 메모리로 선택적으로 플러시한다.
실시 예로서, 상기 수신된 캐시 정보가 캐시 미스를 가리키는 경우, 상기 메모리 컨트롤러는 상기 제2 메모리로부터의 데이터를 상기 제1 메모리로 플러시하는 것을 특징으로 한다.
본 발명에 따르면, 불휘발성 메모리 및 휘발성 메모리를 사용하여 대용량 및 고성능을 갖는 불휘발성 메모리 모듈 및 그것의 동작 방법이 제공된다. 불휘발성 메모리 모듈은 시스템의 주 메모리로써 사용되며, 이로 인하여 항샹된 성능 및 감소된 비용을 갖는 불휘발성 메모리 모듈 및 그것의 동작 방법이 제공된다.
도 1은 본 발명의 실시 예에 따른 사용자 시스템을 예시적으로 보여주는 블록도이다.
도 2는 도 1의 불휘발성 메모리 모듈을 상세하게 보여주는 블록도이다.
도 3은 도 2의 불휘발성 메모리 모듈의 쓰기 동작을 보여주는 순서도이다.
도 4는 도 3의 동작 방법을 상세하게 설명하기 위한 타이밍도이다.
도 5는 도 2의 불휘발성 메모리 모듈(100)의 읽기 동작을 보여주는 순서도이다.
도 6은 도 5의 읽기 동작을 상세하게 설명하기 위한 타이밍도이다.
도 7은 도 2의 불휘발성 메모리 모듈의 다른 읽기 동작을 보여주는 순서도이다.
도 8은 도 7의 읽기 동작을 상세하게 설명하기 위한 타이밍도이다.
도 9는 도 2의 휘발성 메모리의 캐시 구조를 설명하기 위한 도면이다.
도 10 및 도 11은 도 3의 쓰기 동작을 상세하게 설명하기 위한 블록도들이다.
도 12 및 도 13은 도 5 및 도 7의 읽기 동작을 상세하게 설명하기 위한 블록도들이다.
도 14는 도 2의 불휘발성 메모리 모듈의 읽기 동작의 다른 예를 보여주는 타이밍도이다.
도 15는 도 2의 불휘발성 메모리 모듈의 다른 예를 보여주는 블록도이다.
도 16은 도 15의 불휘발성 메모리 모듈의 읽기 동작을 보여주는 순서도이다.
도 17은 도 16의 읽기 동작을 설명하기 위한 타이밍도이다.
도 18은 도 15의 불휘발성 메모리 모듈의 읽기 동작의 다른 예를 보여주는 순서도이다.
도 19는 도 18의 읽기 동작에 따른 트랜잭션 아이디 부여 동작을 설명하기 위한 도면이다.
도 20은 도 18의 읽기 동작을 상세하게 설명하기 위한 타이밍도이다.
도 21은 본 발명의 일 실시 예에 따른 태그를 상세하게 설명하기 위한 도면이다.
도 22는 본 발명에 따른 불휘발성 메모리 모듈에 포함된 불휘발성 메모리를 예시적으로 보여주는 블록도이다.
도 23은 본 발명에 따른 불휘발성 메모리 모듈의 불휘발성 메모리에 포함된 메모리 블록들 중 제1 메모리 블록을 예시적으로 보여주는 회로도이다.
도 24는 본 발명에 따른 불휘발성 메모리 모듈의 휘발성 메모리를 예시적으로 보여주는 블록도이다.
도 25는 본 발명에 따른 불휘발성 메모리 모듈이 적용된 서버 시스템을 예시적으로 보여주는 도면이다.
도 26은 본 발명에 따른 불휘발성 메모리 모듈이 적용된 사용자 시스템을 예시적으로 보여주는 블록도이다.
이하에서, 첨부된 도면들을 참조하여 본 발명의 실시 예들이 상세하게 설명된다. 이하의 설명에서, 상세한 구성들 및 구조들과 같은 세부적인 사항들은 단순히 본 발명의 실시 예들의 전반적인 이해를 돕기 위하여 제공된다. 그러므로 본 발명의 기술적 사상 및 범위로부터의 벗어남 없이 본문에 기재된 실시 예들의 변형들은 당업자에 의해 수행될 수 있다. 더욱이, 잘 알려진 기능들 및 구조들에 대한 설명들은 명확성 및 간결성을 위하여 생략된다. 본문에서 사용된 용어들은 본 발명의 기능들을 고려하여 정의된 용어들이며, 특정 기능에 한정되지 않는다. 용어들의 정의는 상세한 설명에 기재된 사항을 기반으로 결정될 수 있다.
이하의 도면들 또는 상세한 설명에서의 모듈들은 도면에 도시되거나 또는 상세한 설명에 기재된 구성 요소 이외에 다른 것들과 연결될 수 있다. 모듈들 또는 구성 요소들 사이의 연결은 각각 직접적 또는 비직접적일 수 있다. 모듈들 또는 구성 요소들 사이의 연결은 각각 통신에 의한 연결이거나 또는 물리적인 접속일 수 있다.
도 1은 본 발명의 실시 예에 따른 사용자 시스템을 예시적으로 보여주는 블록도이다. 도 1을 참조하면, 사용자 시스템(10)은 불휘발성 메모리 모듈들(100), 프로세서(101), 칩셋(102), 그래픽 처리 유닛(103), 입출력 장치(104), 스토리지 장치(105)를 포함한다. 예시적으로, 사용자 시스템(10)은 컴퓨터, 노트북, 서버, 워크 스테이션, 휴대용 통신 단말기, PDA(Personal Digital Assistant), PMP(Portable Media Player), 스마트폰, 또는 웨어러블(Wearable) 장치와 같은 컴퓨팅 시스템일 수 있다.
사용자 시스템(10)은 불휘발성 메모리 모듈(100), 프로세서(101), 칩셋(102), 그래픽 처리 유닛(103), 입출력 장치(104), 및 스토리지 장치(105)를 포함한다.
프로세서(101)는 사용자 시스템(100)의 제반 동작을 제어할 수 있다. 프로세서(101)는 사용자 시스템(100)에서 수행되는 다양한 연산을 수행하고, 데이터를 처리할 수 있다.
불휘발성 메모리 모듈(100)은 프로세서(101)와 직접적으로 연결될 수 있다. 예를 들어, 불휘발성 메모리 모듈(100)은 듀얼 인-라인 메모리 모듈(DIMM; Dual In-line Memory Module) 형태를 가질 수 있고, 불휘발성 메모리 모듈(100)은 프로세서(101)와 직접적으로 연결된 DIMM 소켓에 장착되어 프로세서(101)와 통신할 수 있다. 예시적으로, 불휘발성 메모리 모듈(100)은 NVDIMM 프로토콜을 기반으로 프로세서(101)와 통신할 수 있다.
불휘발성 메모리 모듈(100)은 프로세서(101)의 주 메모리 또는 동작 메모리로써 사용될 수 있다. 불휘발성 메모리 모듈(100)은 불휘발성 메모리 및 휘발성 메모리를 포함할 수 있다. 불휘발성 메모리는 ROM (Read Only Memory), PROM (Programmable ROM), EPROM (Electrically Programmable ROM), EEPROM (Electrically Erasable and Programmable ROM), 플래시 메모리, PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등과 같이 전원 공급이 차단되어도 데이터가 소실되지 않는 메모리를 포함할 수 있다. 휘발성 메모리는 SRAM (Static RAM), DRAM (Dynamic RAM), SDRAM (Synchronous DRAM) 등과 같이 전원이 차단되면, 데이터가 소실되는 메모리를 포함할 수 있다.
예시적으로, 불휘발성 메모리 모듈(100)의 불휘발성 메모리는 사용자 시스템(10) 또는 프로세서(101)의 주 메모리(main memory)로써 사용되고, 휘발성 메모리는 사용자 시스템(10), 프로세서(101), 또는 불휘발성 메모리 모듈(100)의 캐시 메모리(cache memory)로써 사용될 수 있다.
칩셋(102)은 프로세서(101)와 전기적으로 연결되고, 프로세서(101)의 제어에 따라 사용자 시스템(10)의 하드웨어를 제어할 수 있다. 예를 들어, 칩셋(102)은 주요 버스들을 통해 GPU(103), 입출력 장치(104), 및 스토리지 장치(105)와 각각 연결되고, 주요 버스들에 대한 브릿지 역할을 수행할 수 있다.
GPU(103)는 사용자 시스템(10)의 영상 데이터를 출력하기 위한 일련의 연산 동작을 수행할 수 있다. 예시적으로, GPU(103)는 시스템-온-칩 형태로 프로세서(101) 내에 실장될 수 있다.
입출력 장치(104)는 사용자 시스템(10)으로 데이터 또는 명령어를 입력하거나 또는 외부로 데이터를 출력하는 다양한 장치들을 포함한다. 예를 들어, 입출력 장치(104)는 키보드, 키패드, 버튼, 터치 패널, 터치 스크린, 터치 패드, 터치 볼, 카메라, 마이크, 자이로스코프 센서, 진동 센서, 압전 소자, 온도 센서, 생체 인식 센서 등과 같은 사용자 입력 장치들 및 LCD (Liquid Crystal Display), OLED (Organic Light Emitting Diode) 표시 장치, AMOLED (Active Matrix OLED) 표시 장치, LED, 스피커, 모터 등과 같은 사용자 출력 장치들을 포함할 수 있다.
스토리지 장치(105)는 사용자 시스템(10)의 대용량 저장 매체로서 사용될 수 있다. 스토리지 장치(105)는 하드 디스크 드라이브, SSD, 메모리 카드, 메모리 스틱 등과 같은 대용량 저장 매체들을 포함할 수 있다.
도 2는 도 1의 불휘발성 메모리 모듈을 상세하게 보여주는 블록도이다. 도 1 및 도 2를 참조하면, 불휘발성 메모리 모듈(100)은 모듈 컨트롤러(110), 이종 메모리 장치(120), 데이터 버퍼(130), 및 직렬 프레즌스 검출 칩(140)(SPD chip; Serial Presence Detect chip)을 포함한다.
모듈 컨트롤러(110)는 프로세서(101)로부터 커맨드/어드레스(CA)를 수신하고, 수신된 커맨드/어드레스(CA)에 응답하여 이종 메모리 장치(120)를 제어할 수 있다. 예를 들어, 모듈 컨트롤러(110)는 프로세서(101)로부터의 커맨드/어드레스(CA)에 응답하여 커맨드/어드레스(CA_n) 및 커맨드/어드레스(CA_v)를 이종 메모리 장치(120)로 제공할 수 있다.
예시적으로, 커맨드/어드레스(CA_n)는 이종 메모리 장치(120)에 포함된 불휘발성 메모리(123)를 제어하기 위한 커맨드/어드레스이고, 커맨드/어드레스(CA_v)는 이종 메모리 장치(120)에 포함된 휘발성 메모리(121)를 제어하기 위한 커맨드/어드레스일 수 있다.
이하에서, 간결한 설명을 위하여, 프로세서(101)로부터 제공되는 커맨드/어드레스(CA)는 '모듈 커맨드/어드레스'라 칭하고, 모듈 컨트롤러(110)로부터 휘발성 메모리(121)로 제공되는 커맨드/어드레스(CA_v)는 'VM(Volatile Memory) 커맨드/어드레스'라 칭하고, 모듈 컨트롤러(110)로부터 NVM 제어기(122)로 제공되는 커맨드/어드레스(CA_n)는 'NVM(Nonvolatile Memory) 커맨드/어드레스'라 칭한다.
예시적으로, NVM 커맨드/어드레스(CA_n) 및 VM 커맨드/어드레스(CA_v)와 서로 다른 커맨드/어드레스 버스를 통해 제공될 수 있다.
예시적으로, 모듈 컨트롤러는 RCD(Register Clock Driver)일 수 있다.
이종 메모리 장치(120)는 휘발성 메모리(121), NVM 제어기(122), 및 불휘발성 메모리(123)를 포함한다. 휘발성 메모리(121)는 모듈 컨트롤러(110)로부터의 VM 커맨드/어드레스(CA_v)에 응답하여 동작할 수 있다. 휘발성 메모리(121)는 VM 커맨드/어드레스(CA_v)에 응답하여 메모리 데이터 라인(MDQ) 및 태그 데이터 라인(TDQ)을 통해 데이터 및 태그(TAG)를 각각 출력할 수 있다. 휘발성 메모리(121)는 VM 커맨드/어드레스(CA_v)에 따라 메모리 데이터 라인(MDQ) 및 태그 데이터 라인(TDQ)을 통해 각각 수신된 데이터 및 태그를 기입할 수 있다.
NVM 제어기(122)는 모듈 컨트롤러(110)로부터의 NVM 커맨드/어드레스(CA_n)에 응답하여 동작할 수 있다. 예를 들어, NVM 제어기(122)는 모듈 컨트롤러(110)로부터의 NVM 커맨드/어드레스(CA_n)에 따라, 메모리 데이터 라인(MDQ)을 통해 수신된 데이터를 불휘발성 메모리(123)에 프로그램하거나 또는 불휘발성 메모리(123)에 프로그램된 데이터를 메모리 데이터 라인(MDQ)을 통해 출력할 수 있다.
NVM 제어기(122)는 불휘발성 메모리(123)를 제어하기 위한 다양한 동작을 수행할 수 있다. 예를 들어, NVM 제어기(122)는 불휘발성 메모리(123)를 효율적으로 사용하기 위하여 가비지 콜렉션, 웨어 레벨링, 어드레스 변환 등과 같은 동작을 수행할 수 있다. 예시적으로, NVM 제어기(122)는 에러 정정 회로, 랜더마이져 등과 같은 구성 요소들을 더 포함할 수 있다.
예시적으로, 휘발성 메모리(121) 및 NVM 제어기(122)는 서로 동일한 메모리 데이터 라인(MDQ)을 공유할 수 있다.
예시적으로, 휘발성 메모리(121) 및 모듈 컨트롤러(110)는 태그 데이터 라인(TDQ)을 서로 공유할 수 있다. 또는 휘발성 메모리(121), NVM 제어기(122), 및 모듈 컨트롤러(110)는 태그 데이터 라인(TDQ)을 서로 공유할 수 있다. NVM 제어기(122)는 태그 데이터 라인(TDQ)을 통해 태그(TAG)를 출력할 수 있다.
데이터 버퍼(130)는 메모리 데이터 라인(MDQ)을 통해 데이터를 수신하고, 수신된 데이터를 데이터 라인(DQ)을 통해 프로세서(101)로 제공할 수 있다. 또는 데이터 버퍼(130)는 데이터 라인(DQ)을 통해 데이터를 수신하고, 수신된 데이터를 메모리 데이터 라인(MDQ)을 통해 출력할 수 있다. 예시적으로, 데이터 버퍼(130)는 모듈 컨트롤러(110)의 제어(예를 들어, 버퍼 커맨드(미도시))에 응답하여 동작할 수 있다. 예시적으로, 데이터 버퍼(130)는 메모리 데이터 라인(MDQ) 상의 신호 및 데이터 라인(DQ) 상의 신호를 구분하는 역할을 수행할 수 있다. 또는 데이터 버퍼(130)는 메모리 데이터 라인(MDQ) 및 데이터 라인(DQ) 사이의 신호를 차단하는 역할을 수행할 수 있다. 즉, 데이터 버퍼(130)에 의해 메모리 데이터 라인(MDQ)의 신호가 데이터 라인(DQ)에 영향을 미치지 않거나 또는 데이터 버퍼(130)에 의해 데이터 라인(DQ)의 신호가 메모리 데이터 라인(MDQ)의 신호에 영향을 미치지 않을 수 있다.
예시적으로, 메모리 데이터 라인(MDQ)은 불휘발성 메모리 모듈(100)에 포함된 구성 요소들(예를 들어, 휘발성 메모리, 불휘발성 메모리, 데이터 버퍼 등) 사이의 데이터 전송 경로일 수 있고, 데이터 라인(DQ)은 불휘발성 메모리 모듈(100) 및 프로세서(101) 사이의 데이터 전송 경로일 수 있다. 태그 데이터 라인(TDQ)은 태그(TAG)를 송수신하기 위한 전송 경로일 수 있다.
예시적으로, 메모리 데이터 라인(MDQ), 데이터 라인(DQ), 및 태그 데이터 라인(TDQ) 각각은 복수의 배선들을 포함할 수 있다. 또한, 비록 도면에 도시되지는 않았으나, 메모리 데이터 라인(MDQ), 데이터 라인(DQ), 및 태그 데이터 라인(TDQ) 각각은 메모리 데이터 스트로브 라인(MDQS), 데이터 스트로브 라인(DQS), 및 태그 데이터 스트로브 라인(TDQS)을 포함할 수 있다. 이하에서, 도면의 간결성을 위하여, 데이터 스트로브 라인(MDQS), 데이터 스트로브 라인(DQS), 및 태그 데이터 스트로브 라인(TDQS)의 참조 번호 및 구성은 생략된다. 그러나, 본 발명의 범위가 이에 한정되는 것은 아니며, 메모리 데이터 라인(MDQ), 데이터 라인(DQ), 및 태그 데이터 라인(TDQ)과 연결된 구성 요소들은 데이터 스트로브 라인(MDQS), 데이터 스트로브 라인(DQS), 및 태그 데이터 스트로브 라인(TDQS)의 신호에 동기하여 데이터 또는 태그를 송수신할 수 있다.
SPD(140)는 프로그램 가능 읽기 전용 기억 장치(EEPROM; Electrically Erasable Programmable Read-Only Memory)일 수 있다. SPD(140)는 불휘발성 메모리 모듈(100)의 초기 정보 또는 장치 정보(DI)를 포함할 수 있다. 예시적으로, SPD(140)는 불휘발성 메모리 모듈(100)의 모듈 형태, 모듈 구성, 저장 용량, 모듈 종류, 실행 환경 등과 같은 장치 정보(DI)를 포함할 수 있다. 불휘발성 메모리 모듈(100)이 포함된 사용자 시스템(10)이 부팅될 때, 프로세서(101)는 SPD(140)로부터 장치 정보(DI)를 읽고, 이를 기반으로 불휘발성 메모리 모듈(100)을 인식할 수 있다. 프로세서(101)는 SPD(140)로부터 읽은 장치 정보(DI)를 기반으로, 불휘발성 메모리 모듈(100)을 제어할 수 있다.
이하에서, 간결한 설명을 위하여, 휘발성 메모리(121)는 DRAM인 것으로 가정하고, 불휘발성 메모리(123)는 낸드 플래시 메모리인 것으로 가정한다. 그러나, 본 발명의 범위가 이에 한정되는 것은 아니며, 휘발성 메모리(121)는 다른 종류의 랜덤 액세스 메모리를 포함할 수 있고, 불휘발성 메모리(123)는 다른 종류의 불휘발성 메모리 장치들을 포함할 수 있다.
예시적으로, 휘발성 메모리(121)는 복수의 휘발성 메모리 칩들을 포함할 수 있고, 각 휘발성 메모리 칩들은 별도의 칩, 별도의 패키지 등으로 구현될 수 있다. 각 휘발성 메모리 칩들은 서로 다른 메모리 데이터 라인들 또는 태그 데이터 라인을 통해 모듈 컨트롤러(110) 또는 NVM 제어기(122)와 연결될 수 있다.
예시적으로, 프로세서(101)는 불휘발성 메모리 모듈(100)의 불휘발성 메모리(123)를 메인 메모리로써 사용할 수 있다. 즉, 프로세서(101)는 불휘발성 메모리(123)의 저장 공간을 메인 메모리 영역으로 인식할 수 있다. 휘발성 메모리(121)는 프로세서(101) 및 불휘발성 메모리(123)의 캐시 메모리로써 동작할 수 있다. 예시적으로, 휘발성 메모리(121)는 후 기입 캐시(write-back cache)로 사용될 수 있다. 즉, 프로세서(101)로부터의 모듈 커맨드/어드레스(CA)에 응답하여 모듈 컨트롤러(110)는 캐시 히트 또는 캐시 미스를 판별하고, 판별 결과에 따라 휘발성 메모리(121) 또는 불휘발성 메모리(123)를 제어할 수 있다.
예시적으로, 캐시 히트는 프로세서(101)로부터 수신된 모듈 커맨드/어드레스(CA)와 대응되는 데이터가 휘발성 메모리(121)에 저장되어 있는 경우를 가리킨다. 캐시 미스는 프로세서(101)로부터 수신된 모듈 커맨드/어드레스(CA)와 대응되는 데이터가 휘발성 메모리(121)에 저장되어 있지 않은 경우를 가리킨다.
예시적으로, 모듈 컨트롤러(110)는 태그(TAG)를 기반으로 캐시 히트 또는 캐시 미스 여부를 판별할 수 있다. 모듈 컨트롤러(110)는 프로세서(101)로부터 수신된 모듈 커맨드/어드레스(CA) 및 태그(TAG)를 비교함으로써 캐시 히트 또는 캐시 미스 여부를 판별할 수 있다.
예시적으로, 태그(TAG)는 휘발성 메모리(121)에 저장된 데이터와 대응되는 어드레스(address)의 일부를 포함할 수 있다. 예시적으로, 모듈 컨트롤러(110)는 태그 데이터 라인(TDQ)을 통해 휘발성 메모리(121)와 태그(TAG)를 주고 받을 수 있다. 예시적으로, 휘발성 메모리(121)에 데이터가 기입될 때, 모듈 컨트롤러(110)의 제어에 따라, 데이터와 대응되는 태그(TAG)가 휘발성 메모리(121)에 함께 기입될 수 있다.
예시적으로, 휘발성 메모리(121) 및 불휘발성 메모리(123)는 n:1(단, n은 자연수)의 직접 사상(direct mapping) 관계를 가질 수 있다. 즉, 휘발성 메모리(121)는 불휘발성 메모리(123)의 직접 사상 캐시(direct mapped cache)일 수 있다. 예를 들어, 휘발성 메모리(121)의 제1 휘발성 저장 영역은 불휘발성 메모리(123)의 제1 내지 제n 불휘발성 저장 영역들과 대응될 수 있다. 이 때, 제1 휘발성 저장 영역 및 제1 내지 제n 불휘발성 저장 영역들 각각은 서로 동일한 크기일 수 있다. 예시적으로, 제1 휘발성 저장 영역은 부가 정보(예를 들어, 태그, ECC, 더티 정보 등)를 저장하기 위한 영역을 더 포함할 수 있다.
비록 도면에 도시되지는 않았으나, 불휘발성 메모리 모듈(100)은 별도의 메모리(미도시)를 더 포함할 수 있다. 별도의 메모리(미도시)는 NVM 제어기(122)에서 사용되는 데이터, 프로그램, 소프트웨어 등과 같은 정보를 저장할 수 있다. 예를 들어, 별도의 메모리는 NVM 제어기(122)에 의해 관리되는 매핑 테이블, FTL 등과 같은 정보를 저장할 수 있다. 또는 별도의 메모리는 불휘발성 메모리(123)로부터 읽은 데이터 또는 불휘발성 메모리(123)에 저장될 데이터를 임시 저장하기 위한 버퍼 메모리일 수 있다.
이하에서, 도 3 내지 도 8을 참조하여, 불휘발성 메모리 모듈(100)의 쓰기 동작 및 읽기 동작이 상세하게 설명된다. 이하에서, 간결한 설명을 위하여, 휘발성 메모리(121)와 연관된 구성 요소들(예를 들어, 데이터, 태그, 커맨드/어드레스 등)은 '_v'의 참조 기호를 사용하여 표현된다. 예를 들어, 휘발성 메모리(121)를 제어하기 위하여 모듈 컨트롤러(110)로부터 출력되는 VM 커맨드/어드레스는 'CA_v'로 표현되고, 모듈 컨트롤러(110)의 제어에 따라 휘발성 메모리(121)로부터 출력되는 데이터는 'DT_v'로 표현된다. 좀 더 상세하게는, 휘발성 메모리(121)에 데이터를 기입하기 위한 VM 쓰기 커맨드는 'WR_v'로 표현되고, 휘발성 메모리(121)로부터 데이터를 읽기 위한 VM 읽기 커맨드는 'RD_v'로 표현된다.
마찬가지로, 불휘발성 메모리(123)와 연관된 구성 요소들(예를 들어, 데이터, 태그, 커맨드/어드레스 등)은 '_n'의 참조 기호를 사용하여 표현된다. 예를 들어, 불휘발성 메모리(123)를 제어하기 위하여 모듈 컨트롤러(110)로부터 출력되는 NVM 커맨드/어드레스는 'CA_n'로 표현되고, 모듈 컨트롤러(110)의 제어에 따라 불휘발성 메모리(121)로부터 출력되는 데이터는 'DT_n'로 표현된다. 좀 더 상세하게는, 불휘발성 메모리(123)에 데이터를 기입하기 위한 NVM 쓰기 커맨드는 'WR_n'으로 표현되고, 불휘발성 메모리(123)로부터 데이터를 읽기 위한 NVM 읽기 커맨드는 'RD_n'으로 표현된다.
도 3은 도 2의 불휘발성 메모리 모듈의 쓰기 동작을 보여주는 순서도이다. 도 1 내지 도 3을 참조하면, S11 단계에서, 프로세서(101)는 불휘발성 메모리 모듈(100)로 모듈 쓰기 커맨드 및 어드레스(WR, ADD)를 전송한다. 예를 들어, 프로세서(101)는 불휘발성 메모리 모듈(100)에 쓰기 데이터(DT_w)를 기입하기 위하여 모듈 쓰기 커맨드 및 어드레스(WR, ADD)를 불휘발성 메모리 모듈(100)로 전송한다. 예시적으로, 모듈 쓰기 커맨드 및 어드레스(WR, ADD)는 쓰기 데이터(DT_w)에 대응하는 어드레스(ADD)를 포함할 수 있다. 쓰기 데이터에 대응하는 어드레스(ADD)는 불휘발성 메모리 모듈(100)의 저장 공간, 즉, 불휘발성 메모리(123)의 저장 공간 중 일부에 대응하는 논리적 어드레스, 메모리 어드레스일 수 있다.
S12 단계에서, 불휘발성 메모리 모듈(100)은 수신된 모듈 쓰기 커맨드 및 어드레스(WR, ADD)에 응답하여 휘발성 메모리(121)에 대한 읽기 동작을 수행할 수 있다. 예를 들어, 불휘발성 메모리 모듈(100)은 휘발성 메모리(121)의 영역 중 수신된 어드레스(ADD) 또는 수신된 어드레스(ADD)의 일부와 대응되는 영역에서 데이터 및 태그(TAG)를 읽을 수 있다. 예시적으로, 불휘발성 메모리 모듈(100)은 읽은 태그(TAG) 및 어드레스(ADD)를 비교함으로써 캐시 히트 또는 캐시 미스 여부를 판별할 수 있다.
S13 단계에서, 불휘발성 메모리 모듈(100)은 S12 단계의 읽기 동작의 결과를 기반으로 플러시 동작을 선택적으로 수행할 수 있다. 예를 들어, S12 단계의 읽기 동작의 결과가 캐시 미스를 가리키는 경우, 불휘발성 메모리 모듈(100)은 휘발성 메모리(121)로부터 읽은 데이터가 불휘발성 메모리(123)에 저장되도록 플러시 동작을 수행할 수 있다. 예시적으로, 도 2를 참조하여 설명된 바와 같이, 불휘발성 메모리(123)를 제어하는 NVM 제어기(122) 및 휘발성 메모리(121)는 메모리 데이터 라인(MDQ)을 공유한다. 즉, 휘발성 메모리(121)로부터 읽은 데이터에 의해 메모리 데이터 라인(MDQ)의 전압이 구동될 경우, 불휘발성 메모리(123)를 제어하는 NVM 제어기(122)는 메모리 데이터 라인(MDQ)을 통해 휘발성 메모리(121)로부터 읽은 데이터를 수신(또는 감지)할 수 있다. NVM 제어기(122)는 수신된 데이터를 불휘발성 메모리(123)에 프로그램할 수 있다.
예시적으로, S12 단계의 읽기 동작의 결과가 캐시 히트를 가리키는 경우, 불휘발성 메모리 모듈(100)은 플러시 동작을 수행하지 않을 수 있다. 또는 S12 단계의 읽기 동작의 결과가 캐시 히트를 가리키고, 읽은 데이터가 더티 데이터(dirty data)인 경우, 불휘발성 메모리 모듈(100)은 플러시 동작을 수행할 수 있다.
예시적으로, 불휘발성 메모리 모듈(100)의 플러시 동작, 캐시 히트 또는 캐시 미스 판별, 더티 데이터 판별과 같은 동작들은 NVM 제어기(122)에 의해 수행될 수 있다.
S14 단계에서, 프로세서(101)는 불휘발성 메모리 모듈(100)로 쓰기 데이터(DT_w)를 전송할 수 있다. 예시적으로, S11 단계로부터 미리 정해진 시간이 경과한 이후에, S14 단계의 동작이 수행될 수 있다. 즉, 프로세서(101)는 모듈 쓰기 커맨드 및 어드레스(WR, ADD)를 전송하고, 미리 정해진 시간이 경과한 이후에, 불휘발성 메모리 모듈(100)로 쓰기 데이터(DT_w)를 전송할 수 있다. 이 때, 미리 정해진 시간은 쓰기 레이턴시(WL; Write Latency)일 수 있다. 예시적으로, 쓰기 레이턴시(WL)는 불휘발성 메모리 모듈(100)의 동작 특성에 따라 미리 정해진 시간 또는 클럭 주기일 수 있다. 쓰기 레이턴시(WL)에 대한 정보는 SPD(140)에 저장되고, 장치 정보(DI)로써 프로세서(101)로 제공될 수 있다. 프로세서(101)는 장치 정보(DI)를 기반으로 쓰기 데이터(DT_w)를 전송할 수 있다.
S15 단계에서, 불휘발성 메모리 모듈(100)은 수신된 쓰기 데이터(DT_w)를 휘발성 메모리(121) 또는 불휘발성 메모리(133)에 기입 또는 프로그램할 수 있다.
도 4는 도 3의 동작 방법을 상세하게 설명하기 위한 타이밍도이다. 예시적으로, 본 발명의 기술적 사상이 커맨드, 어드레스, 데이터, 태그 등의 크기 및 타이밍은 도 4에 도시된 타이밍도에 국한되는 것은 아니다.
도 1 내지 도 4를 참조하면, 불휘발성 메모리 모듈(100)은 프로세서(101)로부터 모듈 쓰기 커맨드 및 제1 어드레스(WR, ADD1)를 수신한다. 불휘발성 메모리 모듈(100)의 모듈 컨트롤러(110)는 수신된 모듈 쓰기 커맨드 및 제1 어드레스(WR, ADD1)에 응답하여, NVM 커맨드/어드레스(CA_n) 및 VM 메모리 커맨드/어드레스(CA_n)를 출력할 수 있다. 이 때, NVM 커맨드/어드레스(CA_n)는 NVM 쓰기 커맨드 및 제1 어드레스(WR_v, ADD1)를 포함하고, VM 커맨드/어드레스(CA_v)는 VM 읽기 커맨드 및 제1 어드레스(RD_v, ADD1) 및 VM 쓰기 커맨드, 제1 어드레스(WR_v, ADD1)를 포함할 수 있다.
불휘발성 메모리 모듈(100)의 휘발성 메모리(121)는 VM 읽기 커맨드(RD_v)에 응답하여 휘발성 메모리(121)의 영역 중 제1 어드레스(ADD1)와 대응되는 영역에 저장된 데이터(DT_v) 및 태그(TAG_v)를 출력할 수 있다. 예를 들어, 앞서 설명된 바와 같이, 휘발성 메모리(121)는 데이터(DT_v)를 기반으로 메모리 데이터 라인(MDQ)의 전압을 구동함으로써, 메모리 데이터 라인(MD 통해 데이터(DT_v)를 출력할 수 있다. 휘발성 메모리(121)는 태그(TAG)를 기반으로 태그 데이터 라인(TDQ)의 전압을 구동함으로써, 태그 데이터 라인(TDQ)을 통해 태그(TAG)를 출력할 수 있다.
프로세서(101)는 데이터 라인(DQ)을 통해 쓰기 데이터(DT_w)를 출력할 수 있다. 불휘발성 메모리 모듈(100)은 데이터 라인(DQ)을 통해 수신된 쓰기 데이터(DT_w)를 메모리 데이터 라인(MDQ)을 통해 휘발성 메모리(121) 또는 NVM 제어기(122)로 제공하고, 쓰기 데이터(DT_w)(또는 제1 어드레스(ADD1))와 대응되는 태그(TAG_w)를 태그 데이터 라인(TDQ)을 통해 휘발성 메모리(121)로 제공할 수 있다. 휘발성 메모리(121) 또는 NVM 제어기(122)는 수신된 신호들을 기반으로 쓰기 동작 또는 프로그램 동작을 수행할 수 있다.
비록 도면에 도시되지는 않았으나, 휘발성 메모리(121)로부터 읽은 태그(TAG_v)에 따라 플러시 동작이 선택적으로 수행될 수 있다.
도 5는 도 2의 불휘발성 메모리 모듈(100)의 읽기 동작을 보여주는 순서도이다. 도 1, 도 2, 및 도 5를 참조하면, S21 단계에서, 프로세서(101)는 불휘발성 메모리 모듈(100)로 모듈 읽기 커맨드 및 어드레스(RD, ADD)를 전송한다.
S21 단계에서, 불휘발성 메모리 모듈(100)은 모듈 읽기 커맨드 및 어드레스(RD, ADD)에 응답하여, 휘발성 메모리(121)에 대한 읽기 동작을 수행한다. 예를 들어, 모듈 읽기 커맨드 및 어드레스(RD, ADD)는 불휘발성 메모리 모듈(100)에 저장된 데이터를 읽기 위한 읽기 커맨드 및 읽기 데이터에 대응하는 읽기 어드레스를 포함할 수 있다. 불휘발성 메모리 모듈(100)은 휘발성 메모리(121)의 영역 중 읽기 어드레스와 대응하는 영역에 저장된 데이터 및 태그를 읽을 수 있다.
S22 단계에서, 불휘발성 메모리 모듈(100)은 읽기 결과를 기반으로 캐시 히트 또는 캐시 미스를 판별할 수 있다. 앞서 설명된 바와 같이, 태그(TAG)는 어드레스의 일부 정보를 포함한다. 불휘발성 메모리 모듈(100)은 수신된 읽기 어드레스 및 태그(TAG)를 비교함으로써 캐시 히트 또는 캐시 미스를 판별할 수 있다. 수신된 어드레스의 일부와 태그(TAG)가 일치하는 경우, 불휘발성 메모리 모듈(100)은 캐시 히트로 판별하고, 수신된 어드레스의 일부와 태그(TAG)가 일치하지 않는 경우, 불휘발성 메모리 모듈(100)은 캐시 미스로 판별한다.
예시적으로, 캐시 미스로 판별된 경우의 읽기 동작은 도 7 및 도 8을 참조하여 설명된다.
캐시 히트로 판별된 경우, S24 단계에서, 불휘발성 메모리 모듈(100)은 휘발성 메모리(121)로부터 읽은 데이터 및 캐시 정보(INFO)를 프로세서(101)로 전송한다. 캐시 정보(INFO)는 출력되는 데이터가 캐시 히트인지 또는 캐시 미스인지에 대한 정보를 포함한다. 프로세서(101)는 캐시 정보(INFO)를 통해 수신된 데이터(DT_v)가 유효한 데이터인지 판별할 수 있다. 즉, 불휘발성 메모리 모듈(100)이 캐시 히트(H)에 대한 정보를 캐시 정보(INFO)로써 제공함으로써 프로세서(101)는 수신된 데이터가 유효한 데이터인 것을 인지할 수 있다.
예시적으로, S21 단계로부터 미리 정해진 시간이 경과한 이후에 S24 단계의 동작이 수행될 수 있다. 즉, 프로세서(101)가 모듈 읽기 커맨드 및 어드레스(RD, ADD)를 전송하고, 미리 정해진 시간이 경과한 이후에, 불휘발성 메모리 모듈(100)로부터 읽기 데이터가 수신될 것이다. 이 때, 미리 정해진 시간은 읽기 레이턴시(RL; Read Latency)일 수 있다. 읽기 레이턴시(RL)는 불휘발성 메모리 모듈(100)의 동작 특성에 따라 미리 정해진 시간 또는 클럭 주기일 수 있다. 읽기 레이턴시(RL)에 대한 정보는 SPD(140)에 저장되고, 장치 정보(DI)로써 프로세서(101)로 제공될 수 있다. 프로세서(101)는 읽기 레이턴시(RL)를 기반으로 불휘발성 메모리 모듈을 제어할 수 잇다.
도 6은 도 5의 읽기 동작을 상세하게 설명하기 위한 타이밍도이다. 도 1, 도 2, 도 5, 및 도 6을 참조하면, 불휘발성 메모리 모듈(100)은 프로세서(101)로부터 모듈 읽기 커맨드 및 제1 어드레스(RD, ADD1)를 수신하고, 수신된 신호에 응답하여 NVM 커맨드/어드레스(CA_n) 및 VM 커맨드/어드레스(CA_v)를 출력한다. 이 때, NVM 커맨드/어드레스(CA_n)는 불휘발성 메모리(123)에 저장된 데이터를 읽기 위한 NVM 읽기 커맨드 및 제1 어드레스(RD_n, ADD1)를 포함할 수 있다. VM 커맨드/어드레스(CA_v)는 휘발성 메모리(121)에 저장된 데이터를 읽기 위한 VM 읽기 커맨드 및 제1 어드레스(RD_v, ADD1)를 포함할 수 있다.
휘발성 메모리(121)는 VM 읽기 커맨드 및 제1 어드레스(RD_v, ADD1)에 응답하여, 휘발성 메모리(121)의 영역 중 제1 어드레스(ADD1)와 대응되는 영역에 저장된 데이터(DT_v) 및 태그(TAG_v)를 출력할 수 있다. 예를 들어, 앞서 설명된 바와 같이, 휘발성 메모리(121)는 데이터(DT_v)를 기반으로 메모리 데이터 라인(MDQ)의 전압을 구동함으로써, 메모리 데이터 라인(MDQ)을 통해 데이터(DT_v)를 출력할 수 있다. 휘발성 메모리(121)는 태그(TAG_v)를 기반으로 태그 데이터 라인(TDQ)의 전압을 구동함으로써, 태그 데이터 라인(TDQ)을 통해 태그(TAG_v)를 출력할 수 있다.
모듈 컨트롤러(110)는 태그 데이터 라인(TDQ)을 통해 태그(TAG_v)를 수신하고, 수신된 태그(TAG_v) 및 제1 어드레스(ADD1)를 비교함으로써 캐시 히트인지 또는 캐시 미스인지 판별할 수 있다.
캐시 히트인 경우, 불휘발성 메모리 모듈(100)은 휘발성 메모리(131)로부터 읽은 데이터(DT_v)를 데이터 라인(DQ)을 통해 출력하고, 캐시 히트(H) 정보를 포함하는 캐시 정보(INFO)를 출력할 수 있다. 프로세서(101)는 캐시 히트(H) 정보를 포함하는 캐시 정보(INFO)를 수신함으로써, 데이터 라인(DQ)을 통해 수신된 데이터(DT_v)가 유효한 데이터임을 인지할 수 있다.
도 7은 도 2의 불휘발성 메모리 모듈의 다른 읽기 동작을 보여주는 순서도이다. 예시적으로, 도 7을 참조하여, 캐시 미스인 경우의 읽기 동작이 설명된다.
도 1, 도 2, 도 5, 및 도 7을 참조하면, S23 단계의 판별 결과가 캐시 미스인 것을 가리키는 경우, S25 단계의 동작이 수행된다. S25 단계에서, 불휘발성 메모리 모듈(100)은 휘발성 메모리(121)로부터 읽은 데이터(DT_v) 및 캐시 정보(INFO)를 프로세서(101)로 전송한다. 이 때, 캐시 정보(INFO)는 캐시 미스(M)에 대한 정보를 포함할 것이다.
예시적으로, 앞서 설명된 바와 같이, S25 단계의 동작 또한 모듈 읽기 커맨드 및 어드레스(RD, ADD)가 수신된 시점으로부터 읽기 레이턴시(RL) 이후에 수행될 수 있다.
S26 단계에서, 불휘발성 메모리 모듈(100)은 불휘발성 메모리(123)에 대한 선-읽기 동작을 수행할 수 있다. 예시적으로, 선-읽기 동작은 NVM 제어기(122)가 불휘발성 메모리(123)로부터 데이터를 읽고, 읽은 데이터를 NVM 제어기(122)에 포함된 데이터 버퍼(미도시)에 저장하는 동작을 가리킨다. 또는 선-읽기 동작은 프로세서(101)의 명령에 따라 NVM 제어기(122)가 읽기 레이턴시(RL) 이내에 불휘발성 메모리(123)로부터의 데이터를 출력할 수 있도록 읽기 데이터를 준비하는 동작을 가리킨다. 즉, 불휘발성 메모리(123)에 대한 선-읽기 동작이 완료된 경우, 프로세서(101)로부터의 명령에 응답하여 읽기 레이턴시(RL) 이내에 불휘발성 메모리(123)로부터의 데이터가 출력될 것이다.
예시적으로, 선-읽기 동작은 S22 단계 내지 S25 단계의 동작들이 수행되는 동안 수행될 수 있다. 또는 선-읽기 동작은 캐시 미스로 판별된 경우, NVM 제어기(122)에 의해 수행될 수 있다. 예를 들어, NVM 제어기(122)는 모듈 컨트롤러(110)로부터 제1 어드레스(ADD1)를 수신하고, 태그 데이터 라인(TDQ)을 통해 태그(TAG)를 수신할 수 있다. NVM 제어기(122)는 수신된 제1 어드레스(ADD1) 및 태그(TAG)를 비교함으로써 캐시 히트인지 또는 캐시 미스인지 판별할 수 있다. 판별 결과에 따라, NVM 제어기(122)는 선-읽기 동작을 수행할 수 있다. 예시적으로, NVM 제어기(122)에 의한 캐시 히트 또는 캐시 미스에 대한 판별 동작은 휘발성 메모리(121)로부터 태그(TAG_v)가 출력된 이후에 수행될 수 있다.
선-읽기 동작이 완료된 이후에, S27 단계에서, 불휘발성 메모리 모듈(100)은 레디 신호(R)를 프로세서(101)로 제공한다. 예시적으로, 레디 신호(R)는 불휘발성 메모리 모듈(100)이 선-읽기 동작을 완료했음을 알리는 신호일 수 있다. 레디 신호(R)는 캐시 정보(INFO)가 전송되는 신호 라인을 통해 제공되거나 또는 별도의 신호 라인을 통해 제공될 수 있다.
S28 단계에서, 프로세서(101)는 레디 신호(R)에 응답하여 모듈 읽기 커맨드 및 어드레스(NRD, ADD)를 불휘발성 메모리 모듈(100)로 제공할 수 있다. 예시적으로, 모듈 읽기 커맨드는(NRD)는 S21 단계의 모듈 읽기 커맨드(RD)와 다를 수 있다. 모듈 읽기 커맨드(NRD)는 불휘발성 메모리(123)로부터의 데이터를 읽기 위한 커맨드/어드레스일 수 있다.
S29 단계에서, 모듈 읽기 커맨드 및 어드레스(NRD, ADD)에 응답하여 불휘발성 메모리 모듈(100)은 불휘발성 메모리(123)에 대한 읽기 동작 및 휘발성 메모리(121)에 대한 쓰기 동작을 수행한다. 예를 들어, 불휘발성 메모리 모듈(100)의 NVM 제어기(122)는 선-읽기 동작에서 준비된 데이터를 기반으로 메모리 데이터 라인(MDQ)을 구동할 수 있다. 휘발성 메모리(121)는 메모리 데이터 라인(MDQ)을 통해 NVM 제어기(122)로부터 출력된 데이터(즉, 불휘발성 메모리(123)로부터 출력된 데이터)를 수신하고, 수신된 데이터를 기입할 수 있다. 이 때, 휘발성 메모리(121)의 쓰기 동작은 읽기 캐싱 동작일 수 있다.
S2a 단계에서, 불휘발성 메모리 모듈(100)은 불휘발성 메모리(123)로부터의 데이터(DT_n)를 프로세서(101)로 전송할 수 있다. 예를 들어, 불휘발성 메모리 모듈(100)은 데이터 라인(DQ)을 통해 불휘발성 메모리(123)로부터의 데이터(DT_n)를 출력할 수 있다. 예시적으로, S2a 단계의 동작은 S28 단계의 동작으로부터 미리 정해진 시간 이후에 수행될 수 있다. 미리 정해진 시간은 읽기 레이턴시(RL')일 수 있다. 예시적으로, 도 7의 읽기 레이턴시(RL')는 도 5의 읽기 레이턴시(RL)와 다를 수 있으며, 이들에 대한 정보는 SPD(140)에 저장되고, 장치 정보(DI)로써 프로세서(101)로 제공될 수 있다.
도 8은 도 7의 읽기 동작을 상세하게 설명하기 위한 타이밍도이다. 간결한 설명을 위하여, 앞서 설명된 구성과 중복되는 구성들에 대한 상세한 설명은 생략된다.
도 1, 도 2, 도 5, 도 7, 및 도 8을 참조하면, 불휘발성 메모리 모듈(100)은 프로세서(101)로부터 모듈 읽기 커맨드 및 제1 어드레스(RD, ADD1)를 수신한다. 불휘발성 메모리 모듈(100)의 모듈 컨트롤러(110)는 모듈 읽기 커맨드 및 제1 어드레스(RD, ADD1)에 응답하여 NVM 읽기 커맨드 및 제1 어드레스(RD_n, ADD1)를 NVM 제어기(122)로 제공하고, VM 읽기 커맨드 및 제1 어드레스(RD_v, ADD1)를 휘발성 메모리(121)로 제공한다.
휘발성 메모리(121)는 VM 읽기 커맨드 및 제1 어드레스(RD_v, ADD1)에 응답하여, 휘발성 메모리(121)의 영역 중 제1 어드레스(ADD1)에 대응하는 영역의 데이터(DT_v) 및 태그(TAG_v)를 메모리 데이터 라인(MDQ)을 통해 출력할 수 있다. 즉, 휘발성 메모리(121)는 데이터(DT_v) 및 태그(TAG_v)를 기반으로 메모리 데이터 라인(MDQ) 및 태그 데이터 라인(TDQ)의 전압들을 각각 구동할 수 있다. 메모리 데이터 라인(MDQ) 상의 데이터(DT_v)는 모듈 컨트롤러(110) 및 데이터 버퍼(130)의 제어에 따라 데이터 라인(DQ)을 통해 출력된다.
모듈 컨트롤러(110)는 휘발성 메모리(121)로부터 출력된 태그(TAG_v) 및 제1 어드레스(ADD1)를 비교함으로써, 캐시 히트 또는 캐시 미스 여부를 판별할 수 있다. 캐시 미스인 경우, 모듈 컨트롤러(110)는 캐시 미스(M)에 대한 캐시 정보(INFO)를 프로세서(101)로 전송할 수 있다. 이 때, 프로세서(101)는 데이터 라인(DQ)을 통해 수신된 데이터(DT_v)가 캐시 미스(M)임을 인지할 수 있다.
불휘발성 메모리 모듈(100)은 선-읽기 동작을 수행할 수 있다. 예시적으로, NVM 제어기(122)는 모듈 컨트롤러(110)로부터의 불휘발성 메모리 읽기 커맨드 및 제1 어드레스(ADD1)에 응답하여 불휘발성 메모리(123)의 영역 중 제1 어드레스(ADD1)와 대응되는 영역의 데이터를 준비(또는 별도의 데이터 버퍼에 저장)할 수 있다. 선-읽기 동작이 완료된 경우, 모듈 컨트롤러(110)는 준비 신호(R)를 프로세서(101)로 전송할 수 있다. 예시적으로, 준비 신호(R)는 캐시 정보(INFO)와 동일한 라인, 또는 별도의 신호 라인, 또는 데이터 라인(DQ)을 통해 프로세서(101)로 제공될 수 있다.
준비 신호(R)에 응답하여, 프로세서(101)는 모듈 읽기 커맨드 및 제1 어드레스(NRD, ADD1)를 불휘발성 메모리 모듈(100)로 전송한다. 모듈 읽기 커맨드 및 제1 어드레스(NRD, ADD1)에 응답하여, 불휘발성 메모리 모듈(100)은 NVM 읽기 커맨드 및 제1 어드레스(RD_n', ADD1)를 NVM 제어기(122)로 제공한다. 예시적으로, 모듈 읽기 커맨드(NRD)에 따른 NVM 읽기 커맨드 (RD_n)는 모듈 읽기 커맨드(RD)에 따른 NVM 읽기 커맨드(RD_n)와 다를 수 있다.
예시적으로, 모듈 읽기 커맨드들(NRD, RD) 각각은 프로세서(101) 및 불휘발성 메모리 모듈(100) 사이의 통신 규약에 의해 미리 정의된 커맨드일 수 있다.
NVM 제어기(122)는 NVM 읽기 커맨드 및 제1 어드레스(RD_n', ADD1)에 응답하여, 선-읽기 동작에서 준비된 데이터(DT_n)를 메모리 데이터 라인(MDQ)을 통해 출력할 수 있다. 예시적으로, NVM 제어기(122)는 데이터(DT_n)와 대응되는 태그(TAG_n)를 태그 데이터 라인(TDQ)을 통해 출력할 수 있다. 예시적으로, 데이터(DT_n)와 대응되는 태그(TAG_n)는 데이터(DT_n)와 대응되는 제1 어드레스(ADD1)의 일부를 포함할 수 있다. 메모리 데이터 라인(MDQ) 상의 데이터(DT_n)는 모듈 컨트롤러(110) 및 데이터 버퍼(130)의 제어에 따라 데이터 라인(DQ)으로 출력될 수 있다.
예시적으로, 데이터(DT_n)가 출력되는 동안 불휘발성 메모리 모듈(100)은 읽기 캐싱(read caching)을 수행할 수 있다. 예를 들어, 모듈 컨트롤러(110)는 불휘발성 메모리 읽기 커맨드/어드레스(CA_NRD)에 응답하여 VM 쓰기 커맨드 및 제1 어드레스(WR_v, ADD1)를 휘발성 메모리(121)로 제공할 수 있다.
예시적으로, VM 쓰기 커맨드 및 제1 어드레스(WR_v, ADD1)는 NVM 읽기 커맨드 및 제1 어드레스(RD_n', ADD1)와 소정의 시간을 가질 수 있다. 즉, NVM 제어기(122)가 NVM 읽기 커맨드 및 제1 어드레스(RD_n', ADD1)에 응답하여 메모리 데이터 라인(MDQ)을 통해 데이터(DT_n)를 출력하는 시점에 동기되어 VM 쓰기 커맨드 및 제1 어드레스(WR_v, ADD1)가 휘발성 메모리(121)로 제공될 수 있다.
휘발성 메모리(121)는 휘발성 메모리 쓰기 커맨드 및 제1 어드레스(WR_v, ADD1)에 응답하여, 휘발성 메모리(121)의 영역 중 제1 어드레스(ADD1)와 대응되는 영역에 메모리 데이터 라인(MDQ) 상의 데이터(DT_n) 및 태그 데이터 라인(TDQ) 상의 태그(TAG_n)를 기입할 수 있다. 상술된 읽기 캐싱을 통해, 불휘발성 메모리 모듈(100)의 캐시 히트율이 증가할 수 있다.
상술된 바와 같은 불휘발성 메모리 모듈(100)의 구조, 쓰기 동작, 또는 읽기 동작은 예시적인 것이며, 본 발명의 기술적 사상으로부터의 벗어남 없이 다양하게 변형될 수 있다.
도 9는 도 2의 휘발성 메모리의 캐시 구조를 설명하기 위한 도면이다. 간결한 설명을 위하여, 휘발성 메모리(121)의 캐시 구조를 설명하는데 불필요한 구성 요소들은 생략된다. 또한, 불휘발성 메모리(123)의 저장 영역은 제1 내지 제4 영역들(AR1~AR4)로 구분되는 것으로 가정한다. 제1 내지 제4 영역들(AR1~AR4)은 논리적으로 구분된 영역들이며, 불휘발성 메모리(123)의 저장 영역은 제1 내지 제4 영역들(AR1~AR4) 이외의 저장 공간을 더 포함할 수 있다.
도 2 및 도 9를 참조하면, 휘발성 메모리(121)는 불휘발성 메모리(123)보다 빠른 액세스 속도를 가질 수 있다. 즉, 불휘발성 메모리(123)에 저장된 데이터 중 일부를 휘발성 메모리(121)에 저장함으로써, 모듈 컨트롤러(110) 또는 프로세서(101)의 요청에 따른 액세스 속도가 향상될 수 있다. 예를 들어, 휘발성 메모리(121)는 불휘발성 메모리(123)의 캐시 메모리로써 사용될 수 있다. 예를 들어, 휘발성 메모리(121)는 불휘발성 메모리(123)에 저장된 데이터 중 일부를 저장할 수 있고, 모듈 컨트롤러(110) 또는 프로세서(101)의 요청에 따라, 저장된 데이터를 출력할 수 있다.
예시적으로, 휘발성 메모리(121)는 불휘발성 메모리(123)와 직접 사상(Direct Mapping) 관계를 가질 수 있다. 예를 들어, 휘발성 메모리(121)는 복수의 엔트리들(ET01~ET0n)을 포함할 수 있다. 하나의 엔트리(ET; Entry)는 캐시 라인 단위의 데이터 및 태그(TAG)를 저장하는 저장 공간을 가리킬 수 있다. 캐시 라인 단위는 모듈 컨트롤러(110) 또는 프로세서(101)의 요청에 따른 최소 엑세스 단위를 가리킬 수 있다. 휘발성 메모리(121)는 복수의 엔트리들(ET01~ET0n)만큼의 저장 용량을 가질 수 있다.
불휘발성 메모리(123)는 제1 내지 제4 영역들(AR1~AR4)을 포함할 수 있다. 제1 내지 제4 영역들(AR1~AR4) 각각은 복수의 캐시 라인들(CL11~CL1n, CL21~CL2n, CL31~CL3n, CL41~CL4n)을 각각 포함할 수 있다. 예시적으로, 복수의 캐시 라인들(CL11~CL1n, CL21~CL2n, CL31~CL3n, CL41~CL4n) 각각은 프로세서(101) 또는 모듈 컨트롤러(110)의 요청에 따른 데이터 액세스 단위의 저장 공간을 가리킬 수 있다.
예를 들어, 제1 영역(AR1)은 캐시 라인들(CL11~CL1n)을 포함할 수 있다. 캐시 라인들(CL11~CL1n) 각각은 복수의 엔트리들(ET1~ETn) 각각과 1:1 대응될 수 있다. 즉, 제1 캐시 라인(CL11)은 제1 엔트리(ET1)와 대응되고, 제2 캐시 라인(CL12)은 제2 엔트리(ET2)와 대응될 수 있다. 제2 영역(AR1)은 캐시 라인들(CL21~CL2n)을 포함할 수 있고, 캐시 라인들(CL21~CL2n) 각각은 복수의 엔트리들(ET1~ETn) 각각과 1:1 대응될 수 있다. 마찬가지로, 제3 및 제4 영역들(AR3, AR4) 각각은 캐시 라인들(CL31~CL3n, CL41~CL4n) 각각을 포함하고, 캐시 라인들(CL31~CL3n, CL41~CL4n) 각각은 복수의 엔트리들(ET1~ETn)과 대응될 수 있다.
상술된 바와 같이, 휘발성 메모리(121)는 불휘발성 메모리(123)와 직접 사상(Direct Mapping) 관계를 가질 수 있다. 휘발성 메모리(121)의 제1 엔트리(ET1)는 제1 내지 제4 영역들(AR1~AR4)의 캐시 라인들(CL11, CL21, CL31, CL41)과 대응되고, 제1 내지 제4 영역들(AR1~AR4)의 캐시 라인들(CL11, CL21, CL31, CL41) 중 어느 하나의 캐시 라인에 저장된 데이터(DT_v)를 저장할 수 있다. 다시 말해서, 제1 엔트리(ET1)에 저장된 데이터(DT_v)는 제1 내지 제4 영역들(AR1~AR4)의 캐시 라인들(CL11, CL21, CL31, CL41) 중 어느 하나와 대응될 것이다.
제1 엔트리(ET1)는 저장된 데이터(DT_v)에 대한 태그(TAG)를 포함할 수 있다. 예시적으로, 태그(TAG)는 제1 엔트리(ET1)에 저장된 데이터(DT_v)가 제1 내지 제4 영역들(AR1~AR4)의 캐시 라인들(CL11, CL21, CL31, CL41) 중 어느 캐시 라인과 대응되는지에 대한 정보일 수 있다.
예시적으로, 복수의 캐시 라인들(CL11~CL1n, CL21~CL2n, CL31~CL3n, CL41~CL4n) 각각은 프로세서(101)로부터 제공되는 어드레스(ADD)에 의해 구분 또는 선택될 수 있다. 즉, 프로세서(101)로부터 제공되는 어드레스(ADD)에 의해 복수의 캐시 라인들(CL11~CL1n, CL21~CL2n, CL31~CL3n, CL41~CL4n) 중 적어도 하나의 캐시 라인이 선택되고, 선택된 캐시 라인에 대한 액세스 동작이 수행될 수 있다.
복수의 엔트리들(ET1~ETn) 각각은 프로세서(101)로부터 제공되는 어드레스(ADD) 중 적어도 일부에 의해 구분 또는 선택될 수 있다. 즉, 프로세서(101)로부터 제공되는 어드레스(ADD) 중 적어도 일부에 의해 복수의 엔트리들(ET1~ETn) 중 적어도 하나의 엔트리가 선택되고, 선택된 엔트리에 대한 액세스 동작이 수행될 수 있다.
태그(TAG)는 프로세서(101)로부터 제공되는 어드레스(ADD) 중 적어도 일부 또는 나머지 일부를 포함할 수 있다. 예를 들어, 어드레스(ADD)에 의해 의 적어도 일부에 의해 복수의 엔트리들(ET1~ETn) 중 적어도 하나가 선택되고, 선택된 엔트리로부터의 태그(TAG_v)가 어드레스(ADD)에 포함되는 경우, 캐시 히트(H)인 것으로 판별될 수 있다. 또는 어드레스(ADD)에 의해 의 적어도 일부에 의해 복수의 엔트리들(ET1~ETn) 중 적어도 하나가 선택되고, 선택된 엔트리로부터의 태그(TAG_v)가 어드레스(ADD)에 포함되지 않는 경우, 캐시 미스(M)인 것으로 판별될 수 있다.
상술된 바와 같이, 불휘발성 메모리 모듈(100)이 휘발성 메모리(121)를 캐시 메모리로 사용함으로써, 불휘발성 메모리 모듈(100)의 성능이 향상된다. 이 때, 불휘발성 메모리 모듈(100)은 휘발성 메모리(121)에 저장된 태그(TAG)를 기반으로 캐시 히트 및 미스 여부를 판별할 수 있다.
도 10 및 도 11은 도 3의 쓰기 동작을 상세하게 설명하기 위한 블록도들이다. 도 1, 도 10, 및 도 11을 참조하면, 불휘발성 메모리 모듈(100)은 모듈 컨트롤러(110), 휘발성 메모리(121), NVM 제어기(122), 불휘발성 메모리(123), 및 데이터 버퍼(130)를 포함한다. 간결한 설명을 위하여, 앞서 설명된 구성 요소들에 대한 상세한 설명은 생략된다.
모듈 컨트롤러(110)는 프로세서(101)로부터 모듈 쓰기 커맨드 및 제1 어드레스(WR, ADD1)를 수신할 수 있다. 모듈 컨트롤러(110)는 모듈 쓰기 커맨드 및 제1 어드레스(WR, ADD1)에 응답하여, VM 읽기 커맨드 및 제1 어드레스(RD_v, ADD1)를 휘발성 메모리(121)로 제공하고, NVM 쓰기 커맨드 및 제1 어드레스(WR_n, ADD1)를 NVM 제어기(122)로 제공할 수 있다.
예시적으로, 제1 어드레스(ADD1)의 적어도 일부는 휘발성 메모리(121)의 제1 엔트리(ET1)와 대응되는 것으로 가정한다. 즉, 휘발성 메모리(121)는 VM 읽기 커맨드 및 제1 어드레스(RD_v, ADD1)에 응답하여, 제1 엔트리(ET1)를 선택 또는 활성화하고, 제1 엔트리(ET1)에 저장된 태그(TAG_v) 및 데이터(DT_v)를 출력할 수 있다.
제1 엔트리(ET1)에 저장된 태그(TAG_v)는 태그 데이터 라인(TDQ)을 통해 모듈 컨트롤러(110) 및 NVM 제어기(122)로 제공될 수 있다. 제1 엔트리(ET1)에 저장된 데이터(DT_v)는 메모리 데이터 라인(MDQ)을 통해 출력될 수 있다.
예시적으로, NVM 제어기(122)는 모듈 컨트롤러(110)로부터 수신된 제1 어드레스(ADD1) 및 태그 데이터 라인(TDQ)을 통해 수신된 태그(TAG_v)를 비교함으로써, 캐시 히트 또는 캐시 미스 여부를 판별할 수 있다. 캐시 미스로 판별된 경우, NVM 제어기(122)는 메모리 데이터 라인(MDQ)을 통해 제공되는 데이터(DT_v)를 수신(또는 페치(fetch))하고, 수신된 데이터(DT_v)를 불휘발성 메모리(123)에 기입할 수 있다. 즉, 불휘발성 메모리 모듈(100)의 쓰기 동작에서, 캐시 미스인 경우, NVM 제어기(122)는 플러시 동작을 수행할 수 있다.
예시적으로, 캐시 히트인 경우, 불휘발성 메모리 모듈(100)은 별도의 플러시 동작을 수행하지 않을 수 있다.
예시적으로, 도 10에 도시된 제1 엔트리(ET1)의 데이터(DT_v)는 프로세서(101)로 제공되지 않을 수 있다. 예를 들어, 데이터(DT_v)는 메모리 데이터 라인(MDQ)을 통해 출력되나, 데이터 버퍼(130)에 의해 프로세서(101)로 제공되지 않을 수 있다. 또는 데이터 버퍼(130)가 없는 경우, 데이터(DT_v)가 데이터 라인(DQ)을 통해 제공되더라도, 프로세서(101)는 불휘발성 메모리 모듈(100)에 대한 쓰기 동작을 인지할 수 있기 때문에, 데이터 라인(DQ)을 통해 제공되는 데이터(DT_v)를 무시할 수 있다.
다음으로, 도 11에 도시된 바와 같이, 모듈 컨트롤러(110)는 VM 쓰기 커맨드 및 제1 어드레스(WR_v, ADD1)를 휘발성 메모리(121)로 제공할 수 있다. 앞서 설명된 바와 같이, 제1 어드레스(ADD1)의 적어도 일부는 제1 엔트리(ET1)와 대응될 수 있다. 즉, 휘발성 메모리(121)는 VM 쓰기 커맨드 및 제1 어드레스(WR_v, ADD1)에 응답하여 제1 엔트리(ET1)를 선택 또는 활성화할 수 있다.
데이터 라인(DQ), 데이터 버퍼(130), 및 메모리 데이터 라인(MDQ)을 통해 쓰기 데이터(DT_w)가 제공될 수 있다. 예시적으로, 쓰기 데이터(DT_w)는 모듈 쓰기 커맨드/어드레스(CA_WR)가 수신된 시점으로부터 미리 정해진 쓰기 레이턴시(WL) 이후에 프로세서(101)로부터 제공될 수 있다.
모듈 컨트롤러(110)는 태그 데이터 라인(TDQ)을 통해 쓰기 태그(TAG_w)를 휘발성 메모리(121)로 제공할 수 있다. 쓰기 태그(TAG_w)는 제1 어드레스(ADD1)의 적어도 일부를 포함할 수 있다.
앞서 설명된 바와 같이, 휘발성 메모리(121)는 VM 쓰기 커맨드 및 제1 어드레스(WR_v, ADD1)에 응답하여 제1 엔트리(ET1)를 선택하고, 선택된 제1 엔트리(ET1)에 쓰기 데이터(DT_w) 및 쓰기 태그(TAG_w)를 기입할 수 있다.
예시적으로, NVM 제어기(122)는 메모리 데이터 라인(MDQ)을 통해 쓰기 데이터(DT_w)를 수신하고, 수신된 쓰기 데이터(DT_w)를 불휘발성 메모리(123)에 프로그램할 수 있다.
상술된 바와 같이, 본 발명에 따른 불휘발성 메모리 모듈(100)은 쓰기 동작시, 휘발성 메모리(121)에 저장된 태그(TAG_v)를 읽고, 읽은 태그(TAG_v)를 기반으로 캐시 히트 또는 캐시 미스를 판별하고, 이에 따라 플러시 동작을 수행할 수 있다.
도 12 및 도 13은 도 5 및 도 7의 읽기 동작을 상세하게 설명하기 위한 블록도들이다. 도 1, 도 12, 및 도 13을 참조하면, 불휘발성 메모리 모듈(100)은 모듈 컨트롤러(110), 휘발성 메모리(121), NVM 제어기(122), 불휘발성 메모리(123), 및 데이터 버퍼(130)를 포함한다. 간결한 설명을 위하여, 앞서 설명된 구성 요소들에 대한 상세한 설명은 생략된다.
도 12에 도시된 바와 같이, 모듈 컨트롤러(110)는 프로세서(101)로부터 모듈 읽기 커맨드 및 제1 어드레스(RD, ADD1)를 수신하고, 수신된 신호에 응답하여 VM 읽기 커맨드 및 제1 어드레스(RD_v, ADD1)를 휘발성 메모리(121)로 제공하고, NVM 읽기 커맨드 및 제1 어드레스(RD_n, ADD1)를 NVM 제어기(122)로 제공할 수 있다.
앞서 설명된 바와 같이, 제1 어드레스(ADD1)의 적어도 일부(즉, 제1 어드레스(ADD1)의 비트들 중 태그(TAG)와 연관된 비트들을 제외한 나머지 어드레스 비트들)는 휘발성 메모리(121)의 제1 엔트리(ET1)와 대응될 수 있다.
즉, 휘발성 메모리(121)는 VM 읽기 커맨드 및 제1 어드레스(RD_v, ADD1)에 응답하여 제1 엔트리(ET1)를 선택하고, 선택된 제1 엔트리(ET1)에 저장된 태그(TAG_v) 및 데이터(DT_v)를 출력할 수 있다. 예를 들어, 휘발성 메모리(121)는 태그 데이터 라인(TDQ)을 통해 NVM 제어기(121) 및 모듈 컨트롤러(110)로 태그(TAG_v)를 전송할 수 있고, 메모리 데이터 라인(MDQ)을 통해 데이터(DT_v)를 출력할 수 있다.
모듈 컨트롤러(110)는 프로세서(101)로부터 제공된 제1 어드레스(ADD1) 및 태그 데이터 라인(TDQ)을 통해 수신된 태그(TAG_v)를 비교함으로써, 캐시 히트 또는 캐시 미스 여부를 판별할 수 있다. 예를 들어, 제1 어드레스(ADD1)의 적어도 일부 및 태그(TAG_v)가 서로 일치할 경우, 모듈 컨트롤러(110)는 캐시 히트인 것으로 판별하고, 캐시 히트에 대한 캐시 정보(INFO)를 출력할 수 있다. 제1 어드레스(ADD1)의 적어도 일부 및 태그(TAG_v)가 서로 일치하지 않는 경우, 모듈 컨트롤러(110)는 캐시 미스인 것으로 판별하고, 캐시 미스에 대한 캐시 정보(INFO)를 출력할 수 있다.
예시적으로, 도 6 및 도 8을 참조하여 설명된 바와 같이, 캐시 정보(INFO)는 데이터(DT_v)와 함께 프로세서(101)로 제공될 수 있다. 프로세서(101)는 캐시 정보(INFO)를 기반으로, 수신된 데이터(DT_v)가 유효한 데이터인지 또는 무효한 데이터인지 판별할 수 있다. 예를 들어, 캐시 정보(INFO)가 캐시 히트를 가리키는 경우, 프로세서(101)는 수신된 데이터(DT_v)가 유효한 데이터인 것으로 판별할 수 있다. 캐시 정보(INFO)가 캐시 미스를 가리키는 경우, 프로세서(101)는 수신된 데이터(DT_v)가 무효한 데이터인 것으로 판별할 수 있다. 이 경우, 프로세서(101)는 유효한 데이터를 획득하기 위하여 별도의 동작을 수행할 수 있다.
도 13에 도시된 실시 예는 불휘발성 메모리 모듈(100)의 읽기 동작시, 캐시 미스인 경우의 동작을 보여준다. 도 13에 도시된 바와 같이, 캐시 미스인 경우, NVM 제어기(122)는 캐시 미스인 상황을 인지할 수 있다. 예를 들어, 앞서 설명된 바와 같이, NVM 제어기(122)는 태그 데이터 라인(TDQ)을 통해 태그(TAG_v)를 수신하고, 수신된 태그(TAG_v) 및 제1 어드레스(ADD1)의 적어도 일부를 비교함으로써, 캐시 미스인 상황을 인지할 수 있다.
이 경우, NVM 제어기(122)는 제1 어드레스(ADD1)에 대응되는 데이터(DT_n)를 불휘발성 메모리(123)로부터 읽고, 읽은 데이터(DT_n)를 준비할 수 있다. 예시적으로, 데이터를 준비하는 것은 NVM 제어기(122)가 모듈 컨트롤러(110)의 명령에 의해 소정의 시간(예를 들어, 읽기 레이턴시(RL)) 이내에 데이터를 출력할 수 있도록 데이터를 별도의 버퍼 또는 저장 회로에 저장하는 것을 가리킬 수 있다.
NVM 제어기(122)가 데이터(DT_n)를 준비한 이후에, 모듈 컨트롤러(110)는 준비 신호(R)를 프로세서(101)로 제공할 수 있다. 예시적으로, 준비 신호(R)는 캐시 정보(INFO)와 동일한 신호 라인을 통해 프로세서(101)로 제공될 수 있다. 또는 준비 신호(R)는 별도의 신호 라인을 통해 프로세서(101)로 제공될 수 있다.
프로세서(101)는 준비 신호(R)에 응답하여, 캐시 미스된 데이터를 읽기 위한 모듈 읽기 커맨드 및 제1 어드레스(NRD, ADD1)를 모듈 컨트롤러(110)로 제공할 수 있다. 이 때, 도 13의 모듈 읽기 커맨드(NRD)는 도 12의 모듈 읽기 커맨드(RD)와 다를 수 있다. 예를 들어, 도 13의 모듈 읽기 커맨드(NRD)는 불휘발성 메모리 모듈(110)의 불휘발성 메모리(123)에 저장된 데이터(DT_n)를 읽기 위한 커맨드 및 어드레스일 수 있다.
모듈 컨트롤러(110)는 모듈 읽기 커맨드 및 제1 어드레스(NRD, ADD1)에 응답하여, VM 쓰기 커맨드 및 제1 어드레스(WR_v, ADD1)를 휘발성 메모리(121)로 제공하고, NVM 읽기 커맨드 및 제1 어드레스(RD_n', ADD1)를 NVM 제어기(122)로 제공할 수 있다. NVM 제어기(122)는 NVM 읽기 커맨드 및 제1 어드레스(RD_n', ADD1)에 응답하여, 준비된 데이터(DT_n)를 메모리 데이터 라인(MDQ)을 통해 출력할 수 있다.
메모리 데이터 라인(MDQ)을 통해 출력된 데이터(DT_n)는 데이터 버퍼(130)로 제공되고, 데이터 버퍼(130)는 모듈 컨트롤러(110)의 제어에 따라 데이터 라인(DQ)을 통해 데이터(DT_n)를 출력할 수 있다. 예시적으로, 모듈 읽기 커맨드 및 제1 어드레스(NRD, ADD1)가 불휘발성 메모리 모듈(100)로 제공된 시점으로부터 미리 정해진 시간(예를 들어, 읽기 레이턴시(RL))이 경과한 이후에, 데이터(DT_n)가 데이터 라인(DQ)을 통해 출력될 수 있다.
예시적으로, 휘발성 메모리(121)는 VM 쓰기 커맨드 및 제1 어드레스(WR_v, ADD1)에 응답하여, 쓰기 태그(TAG_n) 및 데이터(DT_n)를 제1 엔트리(ET1)에 기입할 수 있다. 예를 들어, 모듈 컨트롤러(110)는 태그 데이터 라인(TDQ)을 통해 태그(TAG_n)를 출력할 수 있다. 태그(TAG_w)는 제1 어드레스(ADD1)의 적어도 일부를 포함할 수 있다. 태그(TAG_n)는 불휘발성 메모리(123)로부터의 데이터(DT_n)와 대응되는 태그일 수 있다. 휘발성 메모리(121)는 VM 쓰기 커맨드 및 제1 어드레스(WR_v, ADD1)에 응답하여 제1 엔트리(ET1)를 선택할 수 있다. 휘발성 메모리(121)는 태그 데이터 라인(TDQ)을 통해 수신되는 쓰기 태그(TAG_w) 및 메모리 데이터 라인(MDQ)을 통해 수신되는 데이터(DT_n)를 제1 엔트리(ET1)에 기입할 수 있다. 즉, 휘발성 메모리(121)는 읽기 캐싱 동작을 수행할 수 있다.
도 14는 도 2의 불휘발성 메모리 모듈의 읽기 동작의 다른 예를 보여주는 타이밍도이다. 간결한 설명을 위하여, 앞서 설명된 구성 요소들에 대한 상세한 설명은 생략된다. 도 2 및 도 14를 참조하면, 불휘발성 메모리 모듈(100)은 모듈 읽기 커맨드 및 제1 어드레스(RD, ADD1)를 수신하고, 수신된 신호에 응답하여, VM 읽기 커맨드 및 제1 어드레스(RD_v, ADD1) 및 NVM 읽기 커맨드 및 제1 어드레스(RD_n, ADD1)를 각각 휘발성 메모리(121) 및 NVM 제어기(122)로 전송할 수 있다.
휘발성 메모리(121)는 수신된 VM 읽기 커맨드 및 제1 어드레스(RD_v, ADD1)에 응답하여, 데이터(DT_v) 및 태그(TAG_v)를 출력할 수 있다. 이 때, 태그(TAG_v) 및 제1 어드레스(ADD1)의 적어도 일부가 서로 일치하지 않을 수 있다. 즉, 캐시 미스(M)일 수 있다. 모듈 컨트롤러(110)는 캐시 미스(M)에 대한 캐시 정보(INFO)를 프로세서(101)로 제공할 수 있다.
예시적으로, 도 8의 읽기 동작과 달리, 도 14의 실시 예에서, 모듈 컨트롤러(110)는 별도의 준비 신호(R)를 제공하지 않을 수 있다. 이 경우, 프로세서(101)는 주기적으로, 불휘발성 메모리 모듈(100)의 상태 정보를 폴링(polling)함으로써, 데이터 준비 상태를 인지할 수 있다. 예시적으로, 불휘발성 메모리 모듈(100)의 상태 정보에 대한 폴링 동작은 프로세서(101)가 불휘발성 메모리 모듈(100)에 포함된 별도의 상태 레지스터를 액세스함으로써 수행되거나 또는 불휘발성 메모리 모듈(100)의 특정 영역을 액세스함으로써 수행될 수 있다.
프로세서(101)가 주기적인 폴링 동작에 의해 불휘발성 메모리 모듈(100)에서 데이터가 준비되었음을 인지한 경우, 프로세서(101)는 모듈 읽기 커맨드 및 제1 어드레스(NRD, ADD1)를 불휘발성 메모리 모듈(100)로 제공할 수 있다. 모듈 읽기 커맨드 및 제1 어드레스(NRD, ADD1)를 수신한 불휘발성 메모리 모듈(100)의 동작은 도 13을 참조하여 설명되었으므로, 이에 대한 상세한 설명은 생략된다.
상술된 바와 같이, 캐시 미스인 상황에서, 불휘발성 메모리 모듈(100)이 별도의 준비 신호(R)를 제공하지 않더라도, 프로세서(101)의 폴링 동작에 의해 정상적인 읽기 동작이 가능하다.
도 15는 도 2의 불휘발성 메모리 모듈의 다른 예를 보여주는 블록도이다. 도 15를 참조하면, 불휘발성 메모리 모듈(200)은 모듈 컨트롤러(210), 휘발성 메모리(221), NVM 제어기(222), 불휘발성 메모리(223), 및 데이터 버퍼(230)를 포함할 수 있다. 간결한 설명을 위하여, 앞서 설명된 구성 요소들에 대한 상세한 설명은 생략된다.
도 2의 불휘발성 메모리 모듈(100)과 달리 도 15의 불휘발성 메모리 모듈(200)의 모듈 컨트롤러(210)는 캐시 관리자(CM)를 더 포함한다.
캐시 관리자(CM)는 불휘발성 메모리(223)의 캐시 메모리인 휘발성 메모리(221)를 효율적으로 관리하기 위한 동작을 수행할 수 있다. 예를 들어, 불휘발성 메모리 모듈(100)의 읽기 동작에서, 캐시 미스가 발생한 경우, 캐시 관리자(CM)는 캐시 미스된 어드레스 정보를 관리할 수 있다. 이 후, 캐시 미스된 어드레스에 대한 읽기 동작이 수행될 경우, 캐시 관리자(CM)는 불휘발성 메모리(223)로부터 캐시 미스된 어드레스에 대응되는 데이터가 출력되도록 NVM 커맨드/어드레스(CA_n) 및 VM 커맨드/어드레스(CA_v)를 제어할 수 있다.
즉, 도 13을 참조하여 설명된 바와 같이 프로세서(101)가 불휘발성 메모리(223)로부터 데이터를 읽기 위한 별도의 모듈 읽기 커맨드/어드레스(CA_NRD)를 제공하지 않더라도, 캐시 관리자(CM)는 캐시 미스된 어드레스에 대한 읽기 동작시, 불휘발성 메모리(223)로부터 데이터가 출력되도록 NVM 커맨드/어드레스(CA_n) 및 VM 커맨드/어드레스(CA_v)를 제어할 수 있다.
도 16은 도 15의 불휘발성 메모리 모듈의 읽기 동작을 보여주는 순서도이다. 간결한 설명을 위하여, 앞서 설명된 구성 요소들에 대한 상세한 설명은 생략된다.
도 1, 도 15 및 도 16을 참조하면, S210 단계에서, 불휘발성 메모리 모듈(200)은 프로세서(101)로부터 모듈 읽기 커맨드 및 어드레스(RD, ADD)를 수신한다.
S220 단계에서, 불휘발성 메모리 모듈(200)은 캐시 미스인지 판별할 수 있다. 예를 들어, 앞서 설명된 바와 같이, 불휘발성 메모리 모듈(200)은 휘발성 메모리(221)의 복수의 엔트리들 중 프로세서(101)로부터 수신된 어드레스(ADD)에 대응되는 엔트리에 저장된 태그를 기반으로 캐시 히트 또는 캐시 미스를 판별할 수 있다.
캐시 미스가 아닌 경우, (즉, 캐시 히트인 경우) S230 단계에서, 불휘발성 메모리 모듈(200)은 휘발성 메모리(221)로부터의 데이터(DT_v) 및 캐시 정보(INFO)를 출력할 수 있다. 예를 들어, 불휘발성 메모리 모듈(200)은 프로세서(101)로부터 수신된 어드레스(ADD)에 대응되는 엔트리에 저장된 데이터(DT_v) 및 캐시 정보(INFO)를 프로세서(101)로 전송할 수 있다. 이 때, 캐시 정보(INFO)는 캐시 미스(M)에 대한 정보를 포함할 수 있다.
캐시 미스인 경우, S240 단계에서, 불휘발성 메모리 모듈(200)은 휘발성 메모리(221)로부터의 데이터(DT_v) 및 캐시 정보(INFO)를 출력할 수 있다. 예시적으로, S240 단계의 캐시 정보(INFO)는 캐시 미스(M)에 대한 정보를 포함할 수 있다.
S250 단계에서, 불휘발성 메모리 모듈(200)은 프로세서(101)로부터 모듈 읽기 커맨드 및 어드레스(RD, ADD')를 수신할 수 있다.
S260 단계에서, 불휘발성 메모리 모듈(200)은 S250 단계에서 수신된 어드레스(ADD')가 이전에 캐시 미스된 어드레스인지 판별할 수 있다. 예를 들어, S220 단계에서 캐시 미스인 경우, 캐시 관리자(CM)는 캐시 미스된 어드레스에 대한 정보를 관리할 수 있다. 캐시 관리자(CM)는 수신된 어드레스 및 캐시 미스된 어드레스를 비교함으로써, 수신된 어드레스가 캐시 미스된 어드레스인지 판별할 수 있다.
수신된 어드레스(ADD')가 캐시 미스된 어드레스가 아닌 경우, 불휘발성 메모리 모듈(200)은 S220 단계의 동작을 수행한다.
수신된 어드레스(ADD')가 캐시 미스된 어드레스인 경우, S260 단계에서, 불휘발성 메모리 모듈(200)은 불휘발성 메모리(223)로부터 데이터(DT_n)를 출력할 수 있다. 또한, 불휘발성 메모리 모듈(200)은 읽기 캐싱 동작을 수행할 수 있다. 예를 들어, 캐시 미스된 어드레스가 수신된 경우, 휘발성 메모리(221)에 수신된 어드레스(ADD')와 대응되는 데이터가 저장되어 있지 않을 것이다. 즉, 불휘발성 메모리 모듈(200)은 불휘발성 메모리(223)로부터 수신된 어드레스(ADD')와 대응되는 데이터(DT_n)가 출력되도록 NVM 커맨드/어드레스(CA_v)를 제어할 수 있다.
도 17은 도 16의 읽기 동작을 설명하기 위한 타이밍도이다. 간결한 설명을 위하여, 앞서 설명된 구성 요소들에 대한 상세한 설명은 생략된다. 도 15 내지 도 17을 참조하면, 캐시 미스(M) 이후에, 불휘발성 메모리 모듈(200)은 프로세서(101)로 준비 신호(R)를 전송할 수 있다. 예시적으로, 준비 신호(R)는 캐시 미스된 어드레스에 대응되는 데이터가 준비되었음을 알리는 신호일 수 있다.
이 후, 프로세서(101)는 준비 신호(R)에 응답하여 모듈 읽기 커맨드 및 제1 어드레스(RD, ADD1)를 불휘발성 메모리 모듈(200)로 전송할 수 있다. 이 때, 모듈 읽기 커맨드 및 제1 어드레스(RD, ADD1)는 이전의 모듈 읽기 커맨드 및 제1 어드레스(RD, ADD1)와 동일한 커맨드 및 어드레스일 수 있다.
앞서 설명된 바와 같이, 제1 어드레스(ADD1)는 캐시 미스된 어드레스일 것이다. 캐시 관리자(CM)는 캐시 미스된 어드레스에 대한 정보를 관리할 수 있다. 캐시 관리자(CM)는 수신된 제1 어드레스(ADD1)가 캐시 미스된 어드레스임을 인지하고, 수신된 모듈 읽기 커맨드 및 제1 어드레스(ADD1)에 응답하여 불휘발성 메모리(223)로부터의 데이터(DT_n)가 출력되도록 NVM 커맨드/어드레스(CA_n) 및 VM 커맨드/어드레스(CA_v)를 제어할 수 있다.
상술된 바와 같이, 캐시 관리자(CM)가 캐시 미스된 어드레스를 관리함으로써, 불휘발성 메모리로부터 데이터를 읽기 위한 별도의 커맨드가 제공되지 않더라도, 불휘발성 메모리 모듈(200)은 정상적인 읽기 동작을 수행할 수 있다.
도 18은 도 15의 불휘발성 메모리 모듈의 읽기 동작의 다른 예를 보여주는 순서도이다. 도 1, 도 15, 및 도 18을 참조하면, 불휘발성 메모리 모듈(200)은 S310 단계 내지 S340 단계의 동작들을 수행할 수 있다. S310 단계 내지 S340 단계의 동작들은 도 16의 S210 단계 내지 S240 단계의 동작들과 유사하므로, 이에 대한 상세한 설명은 생략된다.
S350 단계에서, 불휘발성 메모리 모듈(200)은 캐시 미스된 어드레스에 대하여 트랜잭션 아이디(TID; Transaction Identification)를 부여할 수 있다. 예를 들어, 캐시 관리자(CM)는 캐시 미스된 어드레스에 대하여 트랜잭선 아이디(TID)를 부여할 수 있다. 예시적으로, 트랜잭션 아이디는 캐시 미스된 어드레스가 발생할 때마다 단조 증가할 수 있다.
이 후, S360 단계에서, 불휘발성 메모리 모듈(200)은 프로세서(101)의 요청에 의해 트랜잭션 아이디(TID)의 상태 정보를 출력할 수 있다. 예를 들어, 제1 어드레스(ADD1)에 대한 읽기 동작에서 캐시 미스가 발생한 경우, 제1 어드레스(ADD1)와 대응되는 데이터가 불휘발성 메모리(223)로부터 출력될 수 있도록 데이터(DT_n)를 준비할 수 있다. 데이터(DT_n)가 준비된 경우, 캐시 관리자(CM)는 제1 어드레스(ADD1)와 대응되는 트랜잭션 아이디(TID)의 상태 정보를 "준비 완료"의 상태로 출력할 수 있다. 프로세서(101)는 트랜잭션 아이디(TID)의 상태 정보를 수신하고, 트랜잭션 아이디(TID)와 대응되는 데이터가 준비되었음을 인지할 수 있다.
예시적으로, 복수의 트랜잭션 아이디(TID)에 대한 상태 정보는 비트맵 형태로 구현될 수 있으며, 불휘발성 메모리 모듈(200)은 프로세서(101)의 요청에 의해 복수의 트랜잭션 아이디(TID)에 대한 상태 정보를 동시에 전송할 수 있다.
S370 단계에서, 불휘발성 메모리 모듈(200)은 프로세서(101)로부터 모듈 읽기 커맨드 및 트랜잭션 아이디(TID)를 수신할 수 있다. 예를 들어, 프로세서(101)는 트랜잭션 아이디(TID)의 상태 정보를 수신하고, 수신된 상태 정보를 기반으로 준비 완료된 트랜잭션 아이디(TID)를 인지할 수 있다. 프로세서(101)는 준비 완료된 트랜잭션 아이디(TID)와 대응하는 데이터를 읽기 위하여, 불휘발성 메모리 모듈(200)로 모듈 읽기 커맨드 및 트랜잭션 아이디(RD, TID)를 전송할 수 있다.
S380 단계에서, 불휘발성 메모리 모듈(200)은 수신된 모듈 읽기 커맨드 및 트랜잭션 아이디(RD, TID)에 응답하여, 트랜잭션 아이디(TID)에 대응되는 데이터를 불휘발성 메모리(223)로부터 출력할 수 있다. 예를 들어, 불휘발성 메모리 모듈(200)은 수신된 트랜잭션 아이디(TID)에 대응되는 데이터가 불휘발성 메모리(223)로부터 출력되도록, NVM 커맨드/어드레스(CA_n) 및 VM 커맨드/어드레스(CA_v)를 제어할 수 있다. 예시적으로, 불휘발성 메모리(223)로부터의 데이터 및 이와 대응되는 트랜잭션 아이디(TID)가 프로세서(101)로 함께 전송될 수 있다.
도 19는 도 18의 읽기 동작에 따른 트랜잭션 아이디 부여 동작을 설명하기 위한 도면이다. 도 1, 도 15, 및 도 19를 참조하면, 불휘발성 메모리 모듈(200)의 캐시 관리자(CM)는 캐시 미스된 어드레스들에 대한 트랜잭션 아이디(TID)를 관리할 수 있다.
예를 들어, 불휘발성 메모리 모듈(200)은 프로세서(101)의 요청에 따라, 제1 내지 제6 어드레스들(ADD1~ADD6)에 대한 읽기 동작을 순차적으로 수행할 수 있다. 먼저, 제1 어드레스(ADD1)에 대한 읽기 동작에서, 캐시 미스가 발생할 수 있다. 이 경우, 캐시 관리자(CM)는 캐시 미스된 제 1어드레스(ADD1)에 대하여 제1 트랜잭션 아이디(TID1)를 부여한다. 이 후, 제2 어드레스(ADD2)에 대한 읽기 동작에서, 캐시 히트가 발생할 수 있다. 이 경우, 캐시 관리자(CM)는 별도의 동작을 수행하지 않을 수 있다. 이 후, 제3 어드레스(ADD3)에 대한 읽기 동작에서, 캐시 미스가 발생할 수 있다. 이 경우, 캐시 관리자(CM)는 캐시 미스된 제3 어드레스(ADD3)에 대하여 제2 트랜잭션 아이디(TID2)를 부여할 수 있다. 마찬가지로, 제4 및 제5 어드레스들(ADD4, ADD5)에 대한 읽기 동작들에서, 캐시 히트가 발생하고, 제6 어드레스(ADD6)에 대한 읽기 동작에서, 캐시 미스가 발생한 경우, 제6 어드레스(ADD6)에 대하여 제3 트랜잭션 아이디(TID3)를 부여할 수 있다. 제1 내지 제3 트랜잭션 아이디들(TID1, TID2, TID3)은 단조 증가 형태로 구현될 수 있다.
즉, 캐시 관리자(CM)는 캐시 미스된 어드레스들을 관리하되, 캐시 미스가 발생할 때마다, 캐시 미스된 어드레스들에 대하여 트랜잭션 아이디를 부여한다. 이 때, 트랜잭션 아이디는 단조 증가 형태로 증가할 수 있다.
도 20은 도 18의 읽기 동작을 상세하게 설명하기 위한 타이밍도이다. 간결한 설명을 위하여, 앞서 설명된 구성 요소들에 대한 상세한 설명은 생략된다. 도 1, 도 15, 도 18, 및 도 20을 참조하면, 불휘발성 메모리 모듈(200)은 프로세서(101)로부터 모듈 읽기 커맨드 및 제1 어드레스(RD, ADD1) 및 모듈 읽기 커맨드 및 제2 어드레스(RD, ADD2)를 수신한다.
불휘발성 메모리 모듈(200)은 모듈 읽기 커맨드 및 제1 어드레스(RD, ADD1)에 응답하여, NVM 읽기 커맨드 및 제1 어드레스(ADD1)를 NVM 제어기(222)로 제공하고, VM 읽기 커맨드 및 제1 어드레스(ADD1)를 휘발성 메모리(221)로 제공한다. 휘발성 메모리(221)는 VM 읽기 커맨드 및 제1 어드레스(ADD1)에 응답하여 제1 데이터(DT_v1) 및 제1 태그(TAG_v1)를 출력할 수 있다. 마찬가지로, 불휘발성 메모리 모듈(200)은 모듈 읽기 커맨드 및 제2 어드레스(RD, ADD2)에 응답하여, NVM 읽기 커맨드 및 제2 어드레스(ADD2)를 NVM 제어기(222)로 제공하고, VM 읽기 커맨드 및 제2 어드레스(ADD2)를 휘발성 메모리(221)로 제공한다. 휘발성 메모리(221)는 VM 읽기 커맨드 및 제2 어드레스(ADD2)에 응답하여 제2 데이터(DT_v2) 및 제2 태그(TAG_v2)를 출력할 수 있다.
휘발성 메모리(221)로부터의 제1 및 제2 데이터(DT_v1, DT_v2)는 제1 및 제2 어드레스들(ADD1, ADD2)에 대응되는 데이터가 아닐 수 있다. 즉, 제1 및 제2 어드레스들(ADD1, ADD2)에 대한 읽기 동작에서, 캐시 미스가 발생할 수 있다. 이 경우, 캐시 관리자(CM)는 제1 어드레스(ADD1)에 대하여 제1 트랜잭션 아이디(TID1)를 부여하고, 제2 어드레스(ADD2)에 대하여 제2 트랜잭션 아이디(TID2)를 부여할 수 있다.
앞서 설명된 바와 같이, NVM 제어기(222)는 제1 및 제2 태그들(TAG_v1, TAG_v2)을 수신하고, 수신된 제1 및 제2 태그들(TAG_v1, TAG_v2)을 기반으로, 캐시 미스가 발생했음을 인지할 수 있다. 이 경우, NVM 제어기(222)는 제1 및 제2 어드레스들(ADD1, ADD2)에 대응하는 데이터를 불휘발성 메모리(223)로부터 준비할 수 있다.
예시적으로, NVM 제어기(222)가 제1 어드레스(ADD1)에 대응하는 데이터(DT_n1)를 먼저 준비한 경우, 불휘발성 메모리 모듈(200)은 프로세서(101)로 준비 신호(R)를 제공할 수 있다. 프로세서(101)는 준비 신호(R)에 응답하여 상태 읽기 커맨드(RD_STS)를 불휘발성 메모리 모듈(200)로 전송할 수 있다.
불휘발성 메모리 모듈(200)은 상태 읽기 커맨드(RD_STS)에 응답하여, 트랜잭션 아이디(TID)에 대한 상태 정보를 메모리 데이터 라인(MDQ) 및 데이터 라인(DQ)을 통해 프로세서(101)로 전송할 수 있다. 예시적으로, 상태 읽기 커맨드(RD_STS)는 불휘발성 메모리 모듈(200)의 특정 영역, 상태 레지스터, 또는 다목적 레지스터 등을 읽기 위하여 미리 정의된 커맨드일 수 있다. 예시적으로, 트랜잭션 아이디(TID)에 대한 상태 정보는 불휘발성 메모리 모듈(200)의 특정 영역, 상태 레지스터, 또는 다목적 레지스터에 설정될 수 있다. 예시적으로, 트랜잭션 아이디(TID)에 대한 상태 정보는 비트맵 형태로 구현될 수 있다.
예시적으로, 불휘발성 메모리 모듈(200)은 트랜잭션 아이디(TID)에 대한 상태 정보로써 제1 트랜잭션 아이디(TID1)의 준비 완료에 대한 정보를 전송할 수 있다. 프로세서(101)는 수신된 상태 정보에 응답하여 모듈 읽기 커맨드 및 제1 트랜잭션 아이디(TID1)를 불휘발성 메모리 모듈(200)로 전송할 수 있다.
불휘발성 메모리 모듈(200)은 수신된 모듈 읽기 커맨드 및 제1 트랜잭션 아이디(TID1)에 응답하여, 제1 트랜잭션 아이디(TID1)에 대응되는 데이터(DT_n)가 불휘발성 메모리(223)로부터 출력되도록 NVM 커맨드/어드레스(CA_n) 및 VM 커맨드/어드레스(CA_v)를 제어할 수 있다. 예시적으로, 도 13을 참조하여 설명된 바와 같이, 읽기 캐싱 동작이 함께 수행될 수 있다.
예시적으로, 비록 도면에 도시되지는 않았으나, NVM 제어기(222)는 캐시 미스된 어드레스 및 트랜잭션 아이디에 대한 정보를 포함할 수 있고, NVM 커맨드/어드레스(CA_n)는 NVM 읽기 커맨드 및 제1 트랜잭션 아이디(RD', TID1)를 포함할 수 있다. 즉, NVM 제어기(222)는 캐시 미스된 어드레스 및 트랜잭션 아이디에 대한 정보를 기반으로, 수신된 제1 트랜잭션 아이디(TID1)에 대응하는 데이터(DT_n)(즉, 제1 어드레스(ADD1)에 대응하는 데이터)를 출력할 수 있다.
도 21은 본 발명의 일 실시 예에 따른 태그를 상세하게 설명하기 위한 도면이다. 간결한 설명을 위하여, 도 9를 참조하여 설명된 구성 요소들에 대한 상세한 설명은 생략된다.
도 2 및 도 21을 참조하면, 휘발성 메모리(121)는 복수의 엔트리들(ET1'~ETn')을 포함한다. 불휘발성 메모리(123)는 제1 내지 제4 영역들(AR1~AR4)을 포함하고, 각 영역은 복수의 캐시 라인들(CL11~CL1n, CL21~CL2n, CL31~CL3n, CL41~CL4n)을 각각 포함한다.
예시적으로, 도 9를 참조하여 설명된 복수의 엔트리들(ET1~ETn)과 달리, 도 21의 복수의 엔트리들(ET1'~ETn') 각각은 데이터(DT_v), 태그(TAG), 데이터 에러 정정 코드(ECC_DT), 태그 에러 정정 코드(ECC_TAG), 및 더티 정보(DRT)를 포함할 수 있다.
태그(TAG)는 동일한 엔트리에 저장된 데이터(DT_v)와 대응되는 어드레스의 적어도 일부일 수 있다. 데이터 에러 정정 코드(ECC_DT)는 동일한 엔트리에 저장된 데이터(DT_v)에 대한 에러 정정 코드일 수 있다. 태그 에러 정정 코드(ECC_TAG)는 동일한 엔트리에 저장된 태그(TAG)에 대한 에러 정정 코드일 수 있다. 더티 정보(DRT)는 동일한 엔트리에 저장된 데이터(DT_v)에 대한 더티 정보를 가리킬 수 있다.
예시적으로, 태그(TAG), 데이터 에러 정정 코드(ECC_DT), 태그 에러 정정 코드(ECC_TAG), 및 더티 정보(DRT)는 태그 전용 휘발성 메모리들에 저장될 수 있다. 1회의 읽기 동작 또는 단위 데이터의 읽기 동작에서, 태그(TAG), 데이터 에러 정정 코드(ECC_DT), 태그 에러 정정 코드(ECC_TAG), 및 더티 정보(DRT)는 태그 데이터 라인(TDQ)을 통해 모듈 컨트롤러, NVM 제어기, 또는 태그 제어 회로로 제공될 수 있다.
예시적으로, 불휘발성 메모리 모듈(100)은 읽기 동작 또는 쓰기 동작에서, 태그(TAG) 및 더티 정보(DRT)를 기반으로 플러시 동작 또는 읽기 캐싱 동작을 선택적으로 수행할 수 있다. 예시적으로, 플러시 동작은 휘발성 메모리(121)의 데이터를 불휘발성 메모리(123)에 프로그램하는 동작을 가리키고, 읽기 캐싱 동작은 불휘발성 메모리(123)의 데이터를 휘발성 메모리(121)에 기입하는 동작을 가리킨다.
예시적으로, 불휘발성 메모리 모듈(100)의 쓰기 동작에서, 불휘발성 메모리 모듈(100)은 태그(TAG)를 기반으로 캐시 히트 또는 캐시 미스를 판별할 수 있다. 캐시 히트인 경우, 불휘발성 메모리 모듈(100)은 플러시 동작을 생략할 수 있다. 캐시 미스인 경우, 불휘발성 메모리 모듈(100)은 더티 정보(DRT)를 기반으로 플러시 동작을 선택적으로 수행할 수 있다. 예를 들어, 캐시 미스이며, 휘발성 메모리(121)의 데이터가 더티 상태인 경우, 불휘발성 메모리 모듈(100)은 휘발성 메모리(121)의 데이터의 유효성을 보장하기 위하여 플러시 동작을 수행한다. 캐시 미스이며, 휘발성 메모리(121)의 데이터가 더티 상태가 아닌 경우, 불휘발성 메모리 모듈(100)은 플러시 동작을 생략할 수 있다.
예시적으로, 불휘발성 메모리 모듈(100)의 읽기 동작에서, 불휘발성 메모리 모듈(100)의 태그(TAG)를 기반으로 캐시 히트 또는 캐시 미스를 판별할 수 있다. 캐시 히트인 경우, 불휘발성 메모리 모듈(100)은 플러시 동작 및 읽기 캐싱 동작을 생략할 수 있다. 캐시 미스인 경우, 불휘발성 메모리 모듈(100)은 더티 상태(DRT)를 기반으로 플러시 동작 또는 읽기 캐싱 동작을 선택적으로 수행할 수 있다. 예를 들어, 캐시 미스이며, 휘발성 메모리(121)의 데이터가 더티 상태인 경우, 불휘발성 메모리 모듈(100)은 읽기 캐싱 동작 이전에 플러시 동작을 수행할 수 있다. 캐시 미스이며, 휘발성 메모리(121)의 데이터가 더티 상태가 아닌 경우, 불휘발성 메모리 모듈(100)은 플러시 동작 없이 읽기 캐싱 동작을 수행할 수 있다.
상술된 캐시 히트 또는 미스 여부 및 더티 상태에 따른 불휘발성 메모리의 플러시 동작 및 읽기 캐싱 동작의 수행 여부는 표 1과 같을 수 있다.
더티 상태 클린 상태
캐시 히트 플러시 동작 : Optional 플러시 동작 : Optional
읽기 캐싱: Optional 읽기 캐싱: Optional
캐시 미스 플러시 동작: Mandatory 플러시 동작: Optional
읽기 캐싱: Optional 읽기 캐싱: Optional
표 1에 개시된 바와 같이, 휘발성 메모리(121)의 데이터가 더티 상태이고, 캐시 미스인 경우, 휘발성 메모리(121)의 데이터의 유효성을 보장하기 위하여 플러시 동작이 수행되어야 한다.
예시적으로, 상술된 실시 예들에서의 타이밍도, 블록도 등은 본 발명의 기술적 사상을 용이하게 설명하기 위한 것이며, 본 발명의 범위가 이에 한정되는 것은 아니다. 예시적으로, 본 발명에 따른 불휘발성 메모리 모듈의 쓰기 동작 및 읽기 동작의 각 단계들은 미리 정해진 타이밍에 의해 수행될 수 있으며, 미리 정해진 타이밍에 대한 정보는 SPD(140)(도 2 참조)에 저장될 수 있고, 장치 정보(DI)(도 2 참조)로써 프로세서(101)로 제공될 수 있다. 또한, 본 발명에 따른 다양한 커맨드들은 본 발명에 따른 불휘발성 메모리 모듈의 특성에 따라 미리 정의된 커맨드일 수 있고, 이에 대한 정보는 SPD(140)에 저장될 수 있고, 장치 정보(DI)로써 프로세서(101)로 제공될 수 있다.
도 22는 본 발명에 따른 불휘발성 메모리 모듈에 포함된 불휘발성 메모리를 예시적으로 보여주는 블록도이다. 도 22를 참조하면, 불휘발성 메모리(1100)는 메모리 셀 어레이(1110), 어드레스 디코더(1120), 제어 로직 회로(1130), 페이지 버퍼(1140), 및 입출력 회로(1150)를 포함한다.
메모리 셀 어레이(1110)는 복수의 메모리 블록들을 포함하고, 복수의 메모리 블록들 각각은 복수의 메모리 셀들을 포함한다. 복수의 메모리 셀들 각각은 복수의 워드라인들(WL)과 각각 연결될 수 있다. 복수의 메모리 셀들 각각은 1-비트를 저장하는 싱글 레벨 셀(SLC)이거나 또는 적어도 2-비트를 저장하는 멀티 레벨 셀(MLC)일 수 있다.
어드레스 디코더(1120)는 NVM 제어기(112)(도 2 참조)로부터 어드레스(ADDR)를 수신하고, 수신된 어드레스(ADDR)를 디코딩할 수 있다. 예시적으로, NVM 제어기(112)로부터 수신된 어드레스(ADDR)는 불휘발성 메모리(1100)의 저장 영역의 물리적 위치를 가리키는 물리적 어드레스(physical address)일 수 있다. 어드레스 디코더(1120)는 디코딩된 어드레스를 기반으로 복수의 워드라인들(WL) 중 적어도 하나의 워드라인을 선택하고, 선택된 워드라인의 전압을 구동할 수 있다.
제어 로직 회로(1130)는 NVM 제어기(112)(도 2 참조)로부터 커맨드(CMD) 및 제어 신호(CTRL)를 수신하고, 수신된 신호들에 응답하여 어드레스 디코더(1120), 페이지 버퍼(1140), 및 입출력 회로(1150)를 제어할 수 있다.
페이지 버퍼(1140)는 복수의 비트 라인들(BL)을 통해 메모리 셀 어레이(1110)와 연결되고, 복수의 데이터 라인들(DL)을 통해 입출력 회로(1150)와 연결된다. 페이지 버퍼(1140)는 복수의 비트 라인들(BL)의 전압을 감지하여 메모리 셀 어레이(1110)에 저장된 데이터를 읽을 수 있다. 또는 페이지 버퍼(1140)는 복수의 데이터 라인들(DL)을 통해 수신되는 데이터를 기반으로 복수의 비트 라인들(BL)의 전압을 제어할 수 있다.
입출력 회로(1150)는 제어 로직 회로(1130)의 제어에 따라 NVM 제어기(112)(도 2 참조)로부터 데이터를 수신하고, 수신된 데이터를 페이지 버퍼(1140)로 전달할 수 있다. 또는 입출력 회로(1150)는 페이지 버퍼(1140)로부터 데이터를 수신하고, 수신된 데이터를 NVM 제어기(112)로 전달할 수 있다.
예시적으로, NVM 제어기(122)는 모듈 컨트롤러(110)(도 2 참조)로부터의 NVM 커맨드/어드레스(CA_v)를 기반으로 어드레스(ADDR), 커맨드(CMD), 및 제어 신호(CTRL)를 생성할 수 있다.
도 23은 본 발명에 따른 불휘발성 메모리 모듈의 불휘발성 메모리에 포함된 메모리 블록들 중 제1 메모리 블록을 예시적으로 보여주는 회로도이다. 예시적으로, 도 23를 참조하여 3차원 구조의 제1 메모리 블록(BLK1)이 설명된다. 그러나, 본 발명의 범위가 이에 한정되는 것은 아니며, 다른 메모리 블록들 또한 제1 메모리 블록(BLK1)과 유사한 구조를 가질 수 있다.
도 23을 참조하면, 제1 메모리 블록(BLK1)은 복수의 셀 스트링들(CS11, CS12, CS21, CS22)을 포함한다. 복수의 셀 스트링들(CS11, CS12, CS21, CS22)은 행 방향(row direction) 및 열 방향(column direction)을 따라 배치되어 행들 및 열들을 형성할 수 있다.
복수의 셀 스트링들(CS11, CS12, CS21, CS22) 각각은 복수의 셀 트랜지스터들을 포함한다. 예를 들어, 복수의 셀 스트링들(CS11, CS12, CS21, CS22) 각각은 스트링 선택 트랜지스터들(SSTa, SSTb), 복수의 메모리 셀들(MC1~MC8), 접지 선택 트랜지스터들(GSTa, GSTb), 및 더미 메모리 셀들(DMC1, DMC2)을 포함할 수 있다. 예시적으로, 복수의 셀 스트링들(CS11, CS12, CS21, CS22)에 포함된 복수의 셀 트랜지스터들 각각은 전하 트랩형 플래시(CTF; charge trap flash) 메모리 셀일 수 있다.
복수의 메모리 셀들(MC1~MC8)은 직렬 연결되며, 행 방향 및 열 방향에 의해 형성된 평면과 수직한 방향인 높이 방향(height direction)으로 적층된다. 스트링 선택 트랜지스터들(SSTa, SSTb)은 직렬 연결되고, 직렬 연결된 스트링 선택 트랜지스터들(SSTa, SSTb)은 복수의 메모리 셀들(MC1~MC8) 및 비트라인(BL) 사이에 제공된다. 접지 선택 트랜지스터들(GSTa, GSTb)은 직렬 연결되고, 직렬 연결된 접지 선택 트랜지스터들(GSTa, GSTb)은 복수의 메모리 셀들(MC1~MC8) 및 공통 소스 라인(CSL) 사이에 제공된다.
예시적으로, 복수의 메모리 셀들(MC1~MC8) 및 접지 선택 트랜지스터들(GSTa, GSTb) 사이에 제1 더미 메모리 셀(DMC1)이 제공될 수 있다. 예시적으로, 복수의 메모리 셀들(MC1~MC8) 및 스트링 선택 트랜지스터들(SSTa, SSTb) 사이에 제2 더미 메모리 셀(DMC2)이 제공될 수 있다.
셀 스트링들(CS11, CS12, CS21, CS22)의 접지 선택 트랜지스터들(GSTa, GSTb)은 접지 선택 라인(GSL)에 공통으로 연결될 수 있다. 예시적으로, 동일한 행의 접지 선택 트랜지스터들은 동일한 접지 선택 라인에 연결될 수 있고, 다른 행의 접지 선택 트랜지스터들은 다른 접지 선택 라인에 연결될 수 있다. 예를 들어, 제1 행의 셀 스트링들(CS11, CS12)의 제1 접지 선택 트랜지스터들(GSTa)은 제1 접지 선택 라인에 연결될 수 있고, 제2 행의 셀 스트링들(CS21, CS22)의 제1 접지 선택 트랜지스터들(GSTa)은 제2 접지 선택 라인에 연결될 수 있다.
예시적으로, 도면에 도시되지는 않았으나, 기판(미도시)으로부터 동일한 높이에 제공되는 접지 선택 트랜지스터들은 동일한 접지 선택 라인에 연결될 수 있고, 다른 높이에 제공되는 접지 선택 트랜지스터들은 다른 접지 선택 라인에 연결될 수 있다. 예를 들어, 셀 스트링들(CS11, CS12, CS21, CS22)의 제1 접지 선택 트랜지스터들(GSTa)은 제1 접지 선택 라인에 연결되고, 제2 접지 선택 트랜지스터들(GSTb)은 제2 접지 선택 라인에 연결될 수 있다.
기판 또는 접지 선택 트랜지스터(GSTa, GSTb)으로부터 동일한 높이의 메모리 셀들은 동일한 워드라인에 공통으로 연결되고, 서로 다른 높이의 메모리 셀들은 서로 다른 워드라인에 연결된다. 예를 들어, 셀 스트링들(CS11, CS12, CS21, CS22)의 제1 내지 제8 메모리 셀들(MC8)은 제1 내지 제8 워드라인들(WL1~WL8)에 각각 공통으로 연결된다.
동일한 높이의 제1 스트링 선택 트랜지스터들(SSTa) 중 동일한 행의 스트링 선택 트랜지스터들은 동일한 스트링 선택 라인과 연결되고, 다른 행의 스트링 선택 트랜지스터들은 다른 스트링 선택 라인과 연결된다. 예를 들어, 제1 행의 셀 스트링들(CS11, CS12)의 제1 스트링 선택 트랜지스터들(SSTa)은 스트링 선택 라인(SSL1a)과 공통으로 연결되고, 제2 행의 셀 스트링들(CS21, CS22)의 제1 스트링 선택 트랜지스터들(SSTa)은 스트링 선택 라인(SSL1a)과 공통으로 연결된다.
마찬가지로, 동일한 높이의 제2 스트링 선택 트랜지스터들(SSTb) 중 동일한 행의 스트링 선택 트랜지스터들은 동일한 스트링 선택 라인과 연결되고, 다른 행의 스트링 선택 트랜지스터들은 다른 스트링 선택 라인과 연결된다. 예를 들어, 제1 행의 셀 스트링들(CS11, CS12)의 제2 스트링 선택 트랜지스터들(SSTb)은 스트링 선택 라인(SSL1b)과 공통으로 연결되고, 제2 행의 셀 스트링들(CS21, CS22)의 제2 스트링 선택 트랜지스터들(SSTb)은 스트링 선택 라인(SSL2b)과 공통으로 연결된다.
예시적으로, 동일한 높이의 더미 메모리 셀들은 동일한 더미 워드라인과 연결되고, 다른 높이의 더미 메모리 셀들은 다른 더미 워드라인과 연결된다. 예를 들어, 제1 더미 메모리 셀들(DMC1)은 제1 더미 워드라인(DWL1)과 연결되고, 제2 더미 메모리 셀들(DMC2)은 제2 더미 워드라인(DWL2)과 연결된다.
예시적으로, 도 23에 도시된 제1 메모리 블록(BLK1)은 예시적인 것이며, 셀 스트링들의 개수는 증가 또는 감소할 수 있으며, 셀 스트링들의 개수에 따라 셀 스트링들이 구성하는 행들 및 열들의 개수는 증가 또는 감소할 수 있다. 또한, 제1 메모리 블록(BLK1)의 셀 트랜지스터들(GST, MC, DMC, SST 등)의 개수들은 각각 증가 또는 감소될 수 있으며, 셀 트랜지스터들의 개수들에 따라 제1 메모리 블록(BLK1)의 높이가 증가 또는 감소할 수 있다. 또한, 셀 트랜지스터들의 개수들에 따라 셀 트랜지스터들과 연결된 라인들(GSL, WL, DWL, SSL 등)의 개수들이 증가 또는 감소될 수 있다.
예시적으로, 본 발명에 따른 불휘발성 메모리는 상술된 구성에 한정되지 않는다. 본 발명의 기술적 사상에 따른 예시적인 실시 예로서, 불휘발성 메모리는 3차원 메모리 어레이를 포함할 수 있다. 3차원 메모리 어레이는, 실리콘 기판 및 메모리 셀들의 동작에 연관된 회로의 위에 배치되는 활성 영역을 갖는 메모리 셀들의 어레이들의 하나 또는 그 이상의 물리 레벨들에 모놀리식으로(monolithically) 형성될 수 있다. 메모리 셀들의 동작에 연관된 회로는 기판 내에 또는 기판 위에 위치할 수 있다. 모놀리식(monolithically)이란 용어는, 3차원 어레이의 각 레벨의 층들이 3차원 어레이의 하위 레벨의 층들 위에 직접 증착됨을 의미한다.
본 발명의 기술적 사상에 따른 예시적인 실시 예로서, 3차원 메모리 어레이는 수직의 방향성을 가지며, 적어도 하나의 메모리 셀이 다른 하나의 메모리 셀 위에 위치하는 수직 NAND 스트링들을 포함한다. 적어도 하나의 메모리 셀은 전하 트랩 층을 포함한다. 각각의 수직 NAND 스트링은 메모리 셀들 위에 위치하는 적어도 하나의 선택 트랜지스터를 포함할 수 있다. 적어도 하나의 선택 트랜지스터는 메모리 셀들과 동일한 구조를 갖고, 메모리 셀들과 함께 모놀리식으로 형성될 수 있다.
3차원 메모리 어레이가 복수의 레벨들로 구성되고, 레벨들 사이에 공유된 워드 라인들 또는 비트 라인들을 갖고, 3차원 메모리 어레이에 적합한 구성은 미국등록특허공보 제7,679,133호, 미국등록특허공보 제8,553,466호, 미국등록특허공보 제8,654,587호, 미국등록특허공보 제8,559,235호, 그리고 미국공개특허공보 제2011/0233648호에 개시되어 있으며, 본 발명의 레퍼런스로 포함된다.
도 24는 본 발명에 따른 불휘발성 메모리 모듈의 휘발성 메모리를 예시적으로 보여주는 블록도이다. 도 24를 참조하면, 휘발성 메모리(1200)는 메모리 셀 어레이(1210), 어드레스 버퍼(1220), X-디코더(1230), Y-디코더(1240), 감지 증폭기 및 쓰기 드라이버(1250), 및 입출력 회로(1260)를 포함할 수 있다.
메모리 셀 어레이(1210)는 복수의 메모리 셀들을 포함하고, 복수의 메모리 셀들 각각은 복수의 워드 라인들(WL) 및 복수의 비트 라인들(BL)과 연결된다. 복수의 메모리 셀들 각각은 워드라인 및 비트라인이 교차하는 지점에 위치할 수 있다. 예시적으로, 복수의 메모리 셀들 각각은 스토리지 캐패시터 및 엑세스 트랜지스터를 포함할 수 있다.
어드레스 버퍼(1220)는 모듈 컨트롤러(110)(도 2 참조)로부터 어드레스(ADD)를 수신하고, 수신된 어드레스를 임시 저장할 수 있다. 예시적으로, 어드레스 버퍼(1220)는 수신된 어드레스(ADD) 중 행 어드레스(ADD_row)를 X-디코더(1230)로 제공하고, 열 어드레스(ADD_col)를 Y-디코더(1240)로 제공할 수 있다.
X-디코더(1230)는 복수의 워드 라인들(WL)을 통해 메모리 셀 어레이(1210)와 연결된다. X-디코더(1230)는 모듈 컨트롤러(110)(도 2 참조)로부터의 행 어드레스 스트로브(RAS) 신호에 응답하여 행 어드레스(ADD_row)를 기반으로 복수의 워드 라인들(WL) 중 적어도 하나의 워드 라인을 활성화시킬 수 있다.
Y-디코더(1240)는 어드레스 버퍼(1220)로부터 열 어드레스(ADD_col)를 수신할 수 있다. Y-디코더(1240)는 열 어드레스 스트로브(CAS) 신호에 응답하여 열 어드레스(ADD_col)를 기반으로 감지 증폭기 및 쓰기 드라이버(1250)를 제어할 수 있다.
감지 증폭기 및 쓰기 드라이버(1250)는 복수의 비트 라인들(BL)을 통해 메모리 셀 어레이(1210)와 연결된다. 감지 증폭기 및 쓰기 드라이버(1250)는 복수의 비트 라인들(BL)의 전압 변화를 감지할 수 있다. 또는 감지 증폭기 및 쓰기 드라이버(1250)는 입출력 회로(1260)로부터 수신된 데이터를 기반으로 복수의 비트 라인들(BL)의 전압을 제어할 수 있다.
입출력 회로(1260)는 감지 증폭기 및 쓰기 드라이버(1250)로부터 데이터를 수신하고, 수신된 데이터를 메모리 데이터 라인(MDQ)(또는 데이터 라인(DQ))을 통해 출력할 수 있다. 또는 입출력 회로(1260)는 메모리 데이터 라인(MDQ)(또는 데이터 라인(DQ))을 통해 데이터를 수신하고, 수신된 데이터를 감지 증폭기 및 쓰기 드라이버(1250)에 전달할 수 있다.
예시적으로, 어드레스(ADD)는 모듈 컨트롤러(110)(도 2 참조)로부터 제공되는 VM 커맨드/어드레스(CA_v)에 포함된 어드레스일 수 있다. 행 어드레스 스트로브(RAS) 및 열 어드레스 스트로브(CAS)는 모듈 컨트롤러(110)(도 2 참조)로부터 제공되는 VM 커맨드/어드레스(CA_v)에 포함된 신호들일 수 있다.
도 25는 본 발명에 따른 불휘발성 메모리 모듈이 적용된 서버 시스템을 예시적으로 보여주는 도면이다. 도 25를 참조하면, 서버 시스템(2000)은 복수의 서버 랙들(2100)을 포함할 수 있다. 복수의 서버 랙들(2100) 각각은 복수의 불휘발성 메모리 모듈들(2200)을 포함할 수 있다. 복수의 불휘발성 메모리 모듈들(2200)은 복수의 서버 랙들(2100) 각각에 포함된 프로세서들과 직접적으로 연결될 수 있다. 예를 들어, 복수의 불휘발성 메모리 모듈들(2200) 듀얼 인-라인 메모리 모듈의 형태를 갖고, 프로세서와 전기적으로 연결된 DIMM 소켓에 장착되어 프로세서와 서로 통신할 수 있다. 예시적으로, 복수의 불휘발성 메모리 모듈들(2200)은 서버 시스템(2000)의 스토리지로서 사용될 수 있다. 예시적으로, 복수의 불휘발성 메모리 모듈들(2200)은 도 1 내지 도 24를 참조하여 설명된 불휘발성 메모리 모듈이거나 또는 동작 방법을 기반으로 동작할 수 있다.
도 26은 본 발명에 따른 불휘발성 메모리 모듈이 적용된 사용자 시스템을 예시적으로 보여주는 블록도이다. 도 26을 참조하면, 사용자 시스템(3000)은 프로세서(3001) 및 복수의 메모리들(3110~3140)을 포함할 수 있다.
프로세서(3001)는 메모리 컨트롤러(3002)를 포함할 수 있다. 메모리 컨트롤러(3002)는 버스(3003)를 통해 복수의 메모리들(3110~3140)과 통신할 수 있다. 예시적으로, 버스(3003)는 복수의 메모리들(3110~3140) 각각과 연결된 전용 버스들 또는 복수의 메모리들(3110~3140)과 공유되는 공용 버스를 포함할 수 있다. 예시적으로, 버스(3003)는 도 1 내지 도 25를 참조하여 설명된, 데이터 라인(DQ), 메모리 데이터 라인(MDQ), 태그 데이터 라인(TDQ) 중 적어도 하나를 포함할 수 있다.
예시적으로, 복수의 메모리들(3110~3140) 중 적어도 일부는 도 1 내지 도 25를 참조하여 설명된 불휘발성 메모리 모듈이거나 또는 도 1 내지 도 25를 참조하여 설명된 동작 방법을 기반으로 동작할 수 있다.
또는, 복수의 메모리 모듈들(3110~3140) 중 적어도 일부는 불휘발성 메모리를 포함하고, 나머지 일부는 휘발성 메모리를 포함할 수 있다. 휘발성 메모리를 포함하는 메모리 모듈은 불휘발성 메모리를 포함하는 메모리 모듈의 캐시 메모리로서 사용될 수 있다. 즉, 도 1 내지 도 25를 참조하여 설명된 바와 같이, 복수의 메모리 모듈들(3110~3140) 중 일부는 사용자 시스템(3000)의 메인 메모리로써 사용되고, 나머지는 캐시 메모리로써 사용될 수 있다. 캐시 메모리로써 사용되는 메모리들은 도 1 내지 도 25를 참조하여 설명된 휘발성 메모리이거나 또는 도 1 내지 도 25를 참조하여 설명된 휘발성 메모리와 같이 동작할 수 있다.
예시적으로, 메모리 컨트롤러(3002)는 도 1 내지 도 25를 참조하여 설명된 모듈 컨트롤러 또는 제어기이거나 또는, 도 1 내지 도 25를 참조하여 설명된 모듈 컨트롤러 또는 제어기와 같이 동작할 수 있다.
본 발명의 상세한 설명에서는 구체적인 실시 예들에 관하여 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능하다. 그러므로 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.
10 : 사용자 시스템
100 : 불휘발성 메모리 모듈
101 : 프로세서
110 : 모듈 컨트롤러(모듈 컨트롤러)
120 : 이종 메모리 장치
121 : 휘발성 메모리
122 : 제어기
123 : 불휘발성 메모리
130 : DB
140 : 직렬 프레즌스 검출 칩(SPD)
CA : 모듈 커맨드/어드레스
CA_v : VM 커맨드/어드레스
CA_n : NVM 커맨드/어드레스
TAG : 태그
DQ : 데이터 라인
TDQ : 태그 데이터 라인
MDQ : 메모리 데이터 라인

Claims (20)

  1. 불휘발성 메모리;
    상기 불휘발성 메모리의 캐시 메모리인 휘발성 메모리;
    상기 불휘발성 메모리를 제어하도록 구성된 제1 제어기; 및
    제2 제어기를 포함하고,
    상기 제2 제어기는:
    모듈 쓰기 커맨드 및 어드레스를 수신하고, 상기 모듈 쓰기 커맨드 및 상기 어드레스에 응답하여, 제1 버스를 통해 상기 휘발성 메모리로 제1 읽기 커맨드 및 상기 어드레스 및 제1 쓰기 커맨드 및 상기 어드레스를 순차적으로 전송하고, 제2 쓰기 커맨드 및 상기 어드레스를 제2 버스를 통해 상기 제1 제어기로 전송하도록 구성된 불휘발성 메모리 모듈.
  2. 제 1 항에 있어서,
    상기 휘발성 메모리는, 상기 제1 읽기 커맨드 및 상기 어드레스에 응답하여, 상기 휘발성 메모리 중 상기 어드레스의 일부와 대응되는 영역에 저장된 제1 데이터를 메모리 데이터 라인을 통해 전송하고, 상기 휘발성 메모리 중 상기 어드레스의 일부와 대응되는 영역에 저장된 태그를 태그 데이터 라인을 통해 출력하도록 구성된 불휘발성 메모리 모듈.
  3. 제 2 항에 있어서,
    상기 제1 제어기는:
    상기 메모리 데이터 라인을 통해 상기 휘발성 메모리로부터 전송된 상기 제1 데이터를 수신하고;
    상기 태그 데이터 라인을 통해 상기 휘발성 메모리로부터 전송된 상기 태그를 수신하고;
    상기 어드레스 및 상기 수신된 태그를 기반으로, 상기 수신된 제1 데이터를 상기 불휘발성 메모리에 선택적으로 저장하도록 더 구성된 불휘발성 메모리 모듈.
  4. 제 3 항에 있어서,
    상기 제1 제어기는, 상기 수신된 태그가 상기 어드레스의 상기 일부와 다른 것에 응답하여, 상기 수신된 제1 데이터를 상기 불휘발성 메모리에 저장하도록 더 구성된 불휘발성 메모리 모듈.
  5. 제 1 항에 있어서,
    상기 휘발성 메모리 및 상기 제1 제어기 각각은 외부 장치로부터 쓰기 데이터를 수신하도록 더 구성되고,
    상기 휘발성 메모리는, 상기 제1 쓰기 커맨드 및 상기 어드레스에 응답하여, 상기 휘발성 메모리 중 상기 어드레스에 대응하는 제1 영역에 상기 쓰기 데이터를 저장하도록 구성되고,
    상기 제1 제어기는, 상기 제2 쓰기 커맨드 및 상기 어드레스에 응답하여, 상기 불휘발성 메모리 중 상기 어드레스에 대응하는 제2 영역에 상기 쓰기 데이터를 저장하도록 구성된 불휘발성 메모리 모듈.
  6. 제 5 항에 있어서,
    상기 제2 제어기는 상기 쓰기 데이터에 대응하는 쓰기 태그를 상기 휘발성 메모리로 전송하도록 더 구성되고,
    상기 휘발성 메모리는 상기 휘발성 메모리 중 상기 어드레스의 일부에 대응하는 제3 영역에 상기 쓰기 태그 및 상기 쓰기 데이터 모두를 저장하도록 더 구성된 불휘발성 메모리 모듈.
  7. 제 5 항에 있어서,
    상기 쓰기 데이터는, 상기 외부 장치로부터 상기 모듈 쓰기 커맨드 및 상기 어드레스가 수신된 시점으로부터 소정의 시간이 경과한 후에, 메모리 데이터 라인을 통해 상기 외부 장치로부터 수신되는 불휘발성 메모리 모듈.
  8. 제 7 항에 있어서,
    상기 소정의 시간에 대한 정보를 상기 외부 장치로 전송하도록 구성된 직렬 프레즌스 검출 칩을 더 포함하는 불휘발성 메모리 모듈.
  9. 제 1 항에 있어서,
    외부 장치와 연결되고, 상기 제1 제어기 및 상기 휘발성 메모리와 메모리 데이터 라인을 공유하고, 상기 제2 제어기의 제어에 따라 동작하도록 구성된 데이터 버퍼를 더 포함하는 불휘발성 메모리 모듈.
  10. 제 1 항에 있어서,
    상기 휘발성 메모리는 상기 불휘발성 메모리의 직접 사상 캐시 메모리인 불휘발성 메모리 모듈.
  11. 불휘발성 메모리;
    상기 불휘발성 메모리의 캐시 메모리인 휘발성 메모리;
    상기 불휘발성 메모리를 제어하도록 구성된 제1 제어기; 및
    제2 제어기를 포함하고,
    상기 제2 제어기는:
    제1 모듈 읽기 커맨드 및 어드레스를 수신하고;
    상기 제1 모듈 읽기 커맨드 및 상기 어드레스에 응답하여, 제1 버스를 통해 상기 휘발성 메모리로 제1 읽기 커맨드 및 상기 어드레스를 전송하고, 제2 버스를 통해 상기 제1 제어기로 제2 읽기 커맨드 및 상기 어드레스를 전송하도록 구성되고,
    상기 휘발성 메모리는, 상기 제1 읽기 커맨드 및 상기 어드레스에 응답하여, 상기 휘발성 메모리 중 상기 어드레스의 제1 부분에 대응하는 제1 영역에 저장된 제1 데이터를 메모리 데이터 라인을 통해 출력하고, 상기 제1 영역에 저장된 제1 태그를 태그 데이터 라인을 통해 출력하도록 구성된 불휘발성 메모리 모듈.
  12. 제 11 항에 있어서,
    상기 제1 데이터는, 외부 장치로부터 상기 제1 모듈 읽기 커맨드 및 상기 어드레스가 수신된 시점으로부터 소정의 시간이 경과한 이후에 상기 외부 장치로 전송되고,
    상기 불휘발성 메모리 모듈은 상기 소정의 시간에 대한 정보를 상기 외부 장치로 전송하도록 구성된 직렬 프레즌스 검출 칩을 더 포함하는 불휘발성 메모리 모듈.
  13. 제 11 항에 있어서,
    상기 제2 제어기는:
    상기 태그 데이터 라인을 통해 상기 휘발성 메모리로부터 상기 제1 태그를 수신하고;
    상기 제1 태그 및 상기 어드레스를 기반으로 캐시 히트가 발생했는지 판별하고,
    상기 판별의 결과를 외부 장치로 전송하도록 더 구성된 불휘발성 메모리 모듈.
  14. 제 13 항에 있어서,
    상기 제1 제어기는, 상기 캐시 히트가 발생하지 않은 것으로 판별된 것에 응답하여, 상기 불휘발성 메모리에서 상기 어드레스에 대응하는 제2 영역으로부터 제2 데이터를 읽도록 더 구성된 불휘발성 메모리 모듈.
  15. 제 14 항에 있어서,
    상기 제2 제어기는:
    상기 외부 장치로부터 제2 모듈 읽기 커맨드 및 상기 어드레스를 수신하고;
    상기 제2 모듈 읽기 커맨드 및 상기 어드레스를 수신한 것에 응답하여, 상기 제1 버스를 통해, 상기 휘발성 메모리로 제1 쓰기 커맨드 및 상기 어드레스를 전송하고, 상기 제2 버스를 통해 상기 제1 제어기로 제3 읽기 커맨드 및 상기 어드레스를 전송하도록 더 구성된 불휘발성 메모리 모듈.
  16. 제 15 항에 있어서,
    상기 제1 제어기는 상기 제3 읽기 커맨드 및 상기 어드레스를 수신한 것에 응답하여, 상기 제2 데이터를 상기 메모리 데이터 라인을 통해 출력하도록 더 구성된 불휘발성 메모리 모듈.
  17. 제 16 항에 있어서,
    상기 휘발성 메모리는, 상기 제1 쓰기 커맨드 및 상기 어드레스를 수신한 것에 응답하여, 상기 메모리 데이터 라인을 통해 상기 제1 제어기로부터 출력된 상기 제2 데이터를 수신하고, 상기 휘발성 메모리의 상기 제1 영역에 상기 수신된 제2 데이터를 저장하도록 더 구성된 불휘발성 메모리 모듈.
  18. 제 16 항에 있어서,
    상기 제1 제어기는 상기 제2 데이터가 상기 메모리 데이터 라인을 통해 수신되는 시점에 동기하여, 상기 어드레스의 제2 부분을 포함하는 제2 태그를 상기 태그 데이터 라인을 통해 출력하도록 더 구성된 불휘발성 메모리 모듈.
  19. 불휘발성 메모리;
    상기 불휘발성 메모리의 캐시 메모리인 휘발성 메모리;
    상기 휘발성 메모리와 메모리 데이터 라인을 공유하고, 상기 불휘발성 메모리를 제어하도록 구성된 제1 제어기; 및
    제2 제어기를 포함하고,
    상기 제2 제어기는:
    상기 휘발성 메모리 및 상기 제1 제어기와 태그 데이터 라인을 공유하고;
    외부 장치로부터 제1 모듈 읽기 커맨드 및 어드레스를 수신하고;
    상기 제1 모듈 읽기 커맨드 및 상기 어드레스에 응답하여, 제1 버스를 통해 상기 휘발성 메모리로 제1 읽기 커맨드 및 상기 어드레스를 전송하고, 제2 버스를 통해 상기 제1 제어기로 제2 읽기 커맨드 및 상기 어드레스를 전송하도록 구성되고,
    상기 휘발성 메모리는, 상기 제1 읽기 커맨드 및 상기 어드레스에 응답하여, 상기 휘발성 메모리에서 상기 어드레스의 일부에 대응하는 제1 영역에 저장된 제1 데이터를 상기 메모리 데이터 라인을 통해 전송하고, 상기 제1 영역에 저장된 태그를 상기 태그 데이터 라인을 통해 전송하도록 더 구성되고,
    상기 제2 제어기는:
    상기 태그 데이터 라인을 통해 상기 휘발성 메모리로부터 전송된 상기 태그를 수신하고;
    상기 수신된 태그 및 상기 어드레스를 기반으로 캐시 히트가 발생했는지 판별하고,
    상기 판별의 결과를 상기 외부 장치로 전송하도록 더 구성된 불휘발성 메모리 장치.

  20. 삭제
KR1020150170123A 2015-12-01 2015-12-01 불휘발성 메모리 모듈 및 그것의 동작 방법 KR102475547B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020150170123A KR102475547B1 (ko) 2015-12-01 2015-12-01 불휘발성 메모리 모듈 및 그것의 동작 방법
US15/366,137 US10303372B2 (en) 2015-12-01 2016-12-01 Nonvolatile memory device and operation method thereof
US16/414,893 US11106363B2 (en) 2015-12-01 2019-05-17 Nonvolatile memory device and operation method thereof
US17/389,834 US11614866B2 (en) 2015-12-01 2021-07-30 Nonvolatile memory device and operation method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150170123A KR102475547B1 (ko) 2015-12-01 2015-12-01 불휘발성 메모리 모듈 및 그것의 동작 방법

Publications (2)

Publication Number Publication Date
KR20170064628A KR20170064628A (ko) 2017-06-12
KR102475547B1 true KR102475547B1 (ko) 2022-12-12

Family

ID=59219348

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150170123A KR102475547B1 (ko) 2015-12-01 2015-12-01 불휘발성 메모리 모듈 및 그것의 동작 방법

Country Status (1)

Country Link
KR (1) KR102475547B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102538253B1 (ko) * 2018-04-16 2023-06-01 삼성전자주식회사 반도체 메모리 모듈 및 반도체 메모리 모듈을 포함하는 메모리 시스템
KR102686917B1 (ko) * 2018-10-31 2024-07-19 삼성전자주식회사 스토리지 장치의 구동 방법, 이를 수행하는 스토리지 장치 및 이를 이용한 스토리지 시스템의 구동 방법
KR102709412B1 (ko) * 2019-01-24 2024-09-24 삼성전자주식회사 복수의 컨트롤러를 포함하는 메모리 시스템

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9262318B1 (en) * 2013-03-13 2016-02-16 Marvell International Ltd. Serial flash XIP with caching mechanism for fast program execution in embedded systems

Also Published As

Publication number Publication date
KR20170064628A (ko) 2017-06-12

Similar Documents

Publication Publication Date Title
US11614866B2 (en) Nonvolatile memory device and operation method thereof
US10649894B2 (en) Nonvolatile memory module and operation method thereof
KR102523141B1 (ko) 휘발성 메모리 장치 및 불휘발성 메모리 장치를 포함하는 불휘발성 메모리 모듈
US10261697B2 (en) Storage device and operating method of storage device
KR102430561B1 (ko) 듀얼 포트 디램을 포함하는 메모리 모듈
KR102249810B1 (ko) 스토리지 장치 및 스토리지 장치의 동작 방법
KR102377469B1 (ko) 불휘발성 메모리 장치, 불휘발성 메모리 장치를 포함하는 스토리지 장치 및 불휘발성 메모리 장치의 동작 방법
US20170040057A1 (en) Nonvolatile memory module having backup function
KR102358053B1 (ko) 복수의 불휘발성 메모리 칩들을 포함하는 스토리지 장치
KR102321745B1 (ko) 동적 랜덤 액세스 메모리 장치, 그것의 동작 방법, 및 그것을 포함하는 메모리 모듈
US11361803B2 (en) Memory device and operating method of the memory device
KR102408613B1 (ko) 메모리 모듈의 동작 방법, 및 메모리 모듈을 제어하는 프로세서의 동작 방법, 및 사용자 시스템
KR20170069346A (ko) 불휘발성 메모리 장치 및 불휘발성 메모리 장치의 동작 방법
CN112527189B (zh) 存储器装置及其操作方法
KR102475547B1 (ko) 불휘발성 메모리 모듈 및 그것의 동작 방법
KR102513903B1 (ko) 불휘발성 메모리 모듈 및 메모리 시스템
KR102548574B1 (ko) 불휘발성 메모리 모듈
JP2023024369A (ja) メモリ装置
KR102538246B1 (ko) 불휘발성 메모리 모듈
KR102290988B1 (ko) 불휘발성 메모리 모듈 및 그것의 동작 방법
KR20170085923A (ko) 이종의 메모리들을 액세스하는 방법 및 이종의 메모리들을 포함하는 메모리 모듈
KR20160144574A (ko) 불휘발성 메모리 모듈 및 그것의 데이터 쓰기 방법
KR102513913B1 (ko) 불휘발성 메모리 모듈 및 메모리 시스템
US11392326B2 (en) Memory device and method of operating the memory device
KR20160144556A (ko) 불휘발성 메모리 모듈

Legal Events

Date Code Title Description
A201 Request for examination
GRNT Written decision to grant