KR20170085918A - 이종의 메모리 장치들을 포함하는 메모리 모듈 및 그것의 동작 방법 - Google Patents

이종의 메모리 장치들을 포함하는 메모리 모듈 및 그것의 동작 방법 Download PDF

Info

Publication number
KR20170085918A
KR20170085918A KR1020160008214A KR20160008214A KR20170085918A KR 20170085918 A KR20170085918 A KR 20170085918A KR 1020160008214 A KR1020160008214 A KR 1020160008214A KR 20160008214 A KR20160008214 A KR 20160008214A KR 20170085918 A KR20170085918 A KR 20170085918A
Authority
KR
South Korea
Prior art keywords
data
memory
address
cache
volatile memory
Prior art date
Application number
KR1020160008214A
Other languages
English (en)
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 TW105138162A priority Critical patent/TW201740278A/zh
Priority to CN201710019237.8A priority patent/CN107066392A/zh
Priority to US15/403,730 priority patent/US20170206165A1/en
Priority to DE102017100584.6A priority patent/DE102017100584A1/de
Publication of KR20170085918A publication Critical patent/KR20170085918A/ko
Priority to US16/150,366 priority patent/US20190034344A1/en

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
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/0808Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
    • 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/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting 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
    • G06F13/1694Configuration of memory controller to different memory types
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/205Hybrid memory, e.g. using both volatile and non-volatile memory

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

본 발명의 실시 예에 따른 불휘발성 메모리 모듈은, 불휘발성 메모리, 상기 불휘발성 메모리의 캐시 메모리로 동작하는 휘발성 메모리, 그리고 외부 장치로부터의 읽기 커맨드 및 어드레스에 응답하여 상기 휘발성 메모리에 저장된 데이터를 상기 외부 장치로 출력하고, 상기 데이터에 동기하여 상기 데이터의 유효성 여부 또는 상기 어드레스에 대응하는 트랜잭션 아이디를 출력하는 모듈 컨트롤러를 포함하되, 상기 유효성 여부 및 상기 트랜잭션 아이디는 동일한 신호 라인으로 출력된다.

Description

이종의 메모리 장치들을 포함하는 메모리 모듈 및 그것의 동작 방법{MEMORY MODULE COMPRISING HETEROGENEOUS MEMORY DEVICES 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 메모리 장치보다 접근 속도가 느린 제 2 메모리 장치, 그리고 외부로부터의 읽기 커맨드 및 어드레스에 응답하여 상기 제 1 메모리 장치의 접근 속도에 기반하여 데이터를 출력하고, 상기 데이터에 동기하여 상기 데이터의 유효성 여부 또는 상기 어드레스에 대응하는 트랜잭션 아이디를 출력하는 메모리 컨트롤러를 포함하되, 상기 유효성 여부 및 상기 트랜잭션 아이디는 동일한 신호 라인으로 출력된다.
본 발명에 따르면, 불휘발성 메모리 및 휘발성 메모리를 사용하여 대용량 및 고성능을 갖는 불휘발성 메모리 모듈이 제공된다. 본 발명의 메모리 모듈은 불휘발성 메모리에 저장된 데이터에 대한 출력 지연 정보를 호스트로 제공할 수 있다.
도 1은 본 발명의 실시 예에 따른 사용자 시스템을 예시적으로 보여주는 블록도이다.
도 2는 도 1의 불휘발성 메모리 모듈을 상세하게 보여주는 블록도이다.
도 3은 도 2의 불휘발성 메모리 모듈(100)의 읽기 동작을 보여주는 순서도이다.
도 4는 도 2의 휘발성 메모리의 캐시 구조를 설명하기 위한 도면이다.
도 5는 도 3의 읽기 동작을 상세하게 설명하기 위한 타이밍도이다.
도 6은 도 5의 데이터(DATA) 및 유효성 정보(DQ_INFO)의 구현 예를 간략히 보여주는 타이밍도이다.
도 7은 도 3의 읽기 동작을 상세하게 설명하기 위한 타이밍도이다.
도 8은 도 7의 데이터(DATA) 및 유효성 정보(DQ_INFO)의 구현 예를 간략히 보여주는 타이밍도이다.
도 9는 본 발명의 다른 실시 예에 따른 도 1의 불휘발성 메모리 모듈의 다른 특징을 보여주는 블록도이다.
도 10은 도 9의 불휘발성 메모리 모듈(200)과 프로세서(101)의 핸드셰이킹 절차를 간략히 보여주는 순서도이다.
도 11은 도 10의 핸드셰이킹 동작을 상세하게 설명하기 위한 타이밍도이다.
도 12는 본 발명의 다른 실시 예에 따른 도 1의 불휘발성 메모리 모듈을 예시적으로 보여주는 블록도이다.
도 13은 본 발명에 따른 불휘발성 메모리 모듈에 포함된 불휘발성 메모리를 예시적으로 보여주는 블록도이다.
도 14는 본 발명에 따른 불휘발성 메모리 모듈의 불휘발성 메모리에 포함된 메모리 블록들 중 제 1 메모리 블록을 예시적으로 보여주는 회로도이다.
도 15는 본 발명의 불휘발성 메모리의 예로 상 변화 메모리 장치의 셀 구조 및 물성을 각각 보여주는 도면이다.
도 16 및 도 17은 본 발명의 불휘발성 메모리에 포함되는 메모리 셀을 간략히 보여주는 도면들이다.
도 18은 본 발명에 따른 불휘발성 메모리 모듈이 적용된 서버 시스템을 예시적으로 보여주는 도면이다.
도 19는 본 발명에 따른 불휘발성 메모리 모듈이 적용된 사용자 시스템을 예시적으로 보여주는 블록도이다.
이하에서, 첨부된 도면들을 참조하여 본 발명의 실시 예들이 상세하게 설명된다. 이하의 설명에서, 상세한 구성들 및 구조들과 같은 세부적인 사항들은 단순히 본 발명의 실시 예들의 전반적인 이해를 돕기 위하여 제공된다. 그러므로 본 발명의 기술적 사상 및 범위로부터의 벗어남 없이 본문에 기재된 실시 예들의 변형들은 당업자에 의해 수행될 수 있다. 더욱이, 잘 알려진 기능들 및 구조들에 대한 설명들은 명확성 및 간결성을 위하여 생략된다. 본문에서 사용된 용어들은 본 발명의 기능들을 고려하여 정의된 용어들이며, 특정 기능에 한정되지 않는다. 용어들의 정의는 상세한 설명에 기재된 사항을 기반으로 결정될 수 있다.
이하의 도면들 또는 상세한 설명에서의 모듈들은 도면에 도시되거나 또는 상세한 설명에 기재된 구성 요소 이외에 다른 것들과 연결될 수 있다. 모듈들 또는 구성 요소들 사이의 연결은 각각 직접적 또는 비직접적일 수 있다. 모듈들 또는 구성 요소들 사이의 연결은 각각 통신에 의한 연결이거나 또는 물리적인 접속일 수 있다.
도 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)로써 사용될 수 있다. 특히, 불휘발성 메모리 모듈(100)은 프로세서(101)로부터의 읽기 명령에 응답하여 출력되는 데이터의 유효성(Validity) 정보를 제공할 수 있다.
칩셋(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)(모듈 컨트롤러; Ram Control Device), 이종 메모리 장치(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)를 제어하기 위한 커맨드/어드레스일 수 있다.
모듈 컨트롤러(110)는 프로세서(101)로부터 커맨드/어드레스(CA)를 수신하고, 수신된 커맨드/어드레스(CA)에 응답하여 이종 메모리 장치(120)를 제어할 수 있다. 예를 들어, 모듈 컨트롤러(110)는 프로세서(101)로부터의 커맨드/어드레스(CA)에 응답하여 커맨드/어드레스(CA_n) 및 커맨드/어드레스(CA_v)를 이종 메모리 장치(120)로 제공할 수 있다.
이하에서, 간결한 설명을 위하여, 프로세서(101)로부터 제공되는 커맨드/어드레스(CA)는 '모듈 커맨드/어드레스'라 칭하고, 모듈 컨트롤러(110)로부터 휘발성 메모리(121)로 제공되는 커맨드/어드레스(CA_v)는 'VM(Volatile Memory) 커맨드/어드레스'라 칭하고, 모듈 컨트롤러(110)로부터 NVM 컨트롤러(122)로 제공되는 커맨드/어드레스(CA_n)는 'NVM(Nonvolatile Memory) 커맨드/어드레스'라 칭하기로 한다. 예시적으로, NVM 커맨드/어드레스(CA_n) 및 VM 커맨드/어드레스(CA_v)와 서로 다른 커맨드/어드레스 버스를 통해 제공될 수 있다.
이종 메모리 장치(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)의 캐시 메모리로써 동작할 수 있다.
예시적으로, 캐시 히트는 프로세서(101)로부터 수신된 모듈 커맨드/어드레스(CA)와 대응되는 데이터가 휘발성 메모리(121)에 저장되어 있는 경우를 가리킨다. 캐시 미스는 프로세서(101)로부터 수신된 모듈 커맨드/어드레스(CA)와 대응되는 데이터가 휘발성 메모리(121)에 저장되어 있지 않은 경우를 가리킨다.
예시적으로, 모듈 컨트롤러(110)는 프로세서(101)로부터 수신된 모듈 커맨드/어드레스(CA)와 태그(TAG)를 기반으로 캐시 히트 또는 캐시 미스 여부를 판별할 수 있다. 모듈 컨트롤러(110)는 프로세서(101)로부터 수신된 모듈 커맨드/어드레스(CA) 및 태그(TAG)를 비교함으로써 캐시 히트 또는 캐시 미스 여부를 판별할 수 있다. 캐시 히트 또는 캐시 미스를 판정하기 위해, 모듈 컨트롤러(110)는 캐시 매니저(115)를 포함할 수 있다.
예시적으로, 캐시 매니저(115)는 캐시 미스된 어드레스들에 대한 트랜잭션 아이디(TID)를 부여 및 관리할 수 있다. 먼저, 제 1 어드레스(ADD_1)에 대한 읽기 동작에서, 캐시 미스가 발생할 수 있다. 이 경우, 캐시 매니저(115)는 캐시 미스된 제 1 어드레스(ADD_1)에 대하여 제 1 트랜잭션 아이디(TID1)를 부여할 수 있다. 이 후, 제 2 어드레스(ADD_2)에 대한 읽기 동작에서, 캐시 히트가 발생할 수 있다. 이 경우, 캐시 매니저(115)는 별도의 동작을 수행하지 않을 수 있다. 이 후, 제 3 어드레스(ADD_3)에 대한 읽기 동작에서, 캐시 미스가 발생할 수 있다. 이 경우, 캐시 매니저(115)는 캐시 미스된 제 3 어드레스(ADD_3)에 대하여 제 2 트랜잭션 아이디(TID2)를 부여할 것이다. 마찬가지로, 제 4 및 제 5 어드레스들(ADD_4, ADD5)에 대한 읽기 동작들에서, 캐시 히트가 발생하고, 제 6 어드레스(ADD_6)에 대한 읽기 동작에서, 캐시 미스가 발생한 경우, 제 6 어드레스(ADD_6)에 대하여 제 3 트랜잭션 아이디(TID3)를 부여할 수 있다. 제 1 내지 제 3 트랜잭션 아이디들(TID1, TID2, TID3)은 단조 증가 형태로 구현될 수 있다.
즉, 캐시 매니저(115)는 캐시 미스된 어드레스들을 관리하되, 캐시 미스가 발생할 때마다, 캐시 미스된 어드레스들에 대하여 트랜잭션 아이디를 부여한다. 이 때, 트랜잭션 아이디는 단조 증가 형태로 증가할 수 있다. 그리고 이들 트랜잭션 아이디는 프로세서(101)에 캐시 히트 여부를 나타내는 유효성 정보(DQ_INFO)와 함께 제공될 것이다.
여기서, 태그(TAG)는 휘발성 메모리(121)에 저장된 데이터와 대응되는 어드레스(Address)의 일부를 포함할 수 있다. 예시적으로, 모듈 컨트롤러(110)는 태그 데이터 라인(TDQ)을 통해 휘발성 메모리(121)와 태그(TAG)를 주고 받을 수 있다. 예시적으로, 휘발성 메모리(121)에 데이터가 기입될 때, 모듈 컨트롤러(110)의 제어에 따라, 데이터와 대응되는 태그(TAG)가 휘발성 메모리(121)에 함께 기입될 수 있다.
특히, 프로세서(101)로부터 읽기 명령에 응답하여 고정된 레이턴시(RL) 이후에 데이터 라인(DQ)을 통해서 읽기 요청된 데이터가 출력될 것이다. 그리고 모듈 컨트롤러(110)는 캐시 체크의 결과에 따라 데이터 라인(DQ)을 통해서 출력되는 데이터의 유효성 정보(DQ_INFO)를 프로세서(101)로 전달할 수 있다. 유효성 정보(DQ_INFO)에는 데이터 라인(DQ)을 통해서 출력되는 데이터에 대한 유효성 및 트랜잭션 아이디(TID: Transaction ID)가 포함될 수 있다. 프로세서(101)는 유효성 정보(DQ_INFO)를 참조하여 레이턴시(RL) 보다 지연된 시점에 출력 가능한 캐시 미스된 데이터를 전달받을 수 있다. 즉, 프로세서(101)는 트랜잭션 아이디(TID)를 참조하여 캐시 미스된 데이터를 다시 요청할 수 있을 것이다.
예시적으로, 휘발성 메모리(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)에 저장될 데이터를 임시 저장하기 위한 버퍼 메모리일 수 있다.
이하에서, 간결한 설명을 위하여, 휘발성 메모리(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'으로 표현된다.
이상의 도 2에 의하면, 본 발명의 불휘발성 메모리 모듈(100)은 읽기 요청된 데이터의 캐시 체크 결과를 참조하여 고정된 레이턴시(RL)에서 출력되는 데이터에 관련된 유효성 정보(DQ_INFO)를 제공할 수 있다.
도 3은 도 2의 불휘발성 메모리 모듈(100)의 읽기 동작을 보여주는 순서도이다. 도 1, 도 2, 및 도 3을 참조하면, 불휘발성 메모리 모듈(100)은 프로세서(101)로부터의 읽기 요청에 응답하여 데이터와 데이터에 대응하는 유효성 정보(DQ_INFO)를 출력한다.
S11 단계에서, 프로세서(101)는 불휘발성 메모리 모듈(100)로 모듈 읽기 커맨드 및 어드레스(RD, ADD)를 전송한다. 불휘발성 메모리 모듈(100)은 모듈 읽기 커맨드 및 어드레스(RD, ADD)에 응답하여, 휘발성 메모리(121)에 대한 읽기 동작을 수행한다. 예를 들어, 모듈 읽기 커맨드 및 어드레스(RD, ADD)는 불휘발성 메모리 모듈(100)에 저장된 데이터를 읽기 위한 읽기 커맨드 및 읽기 데이터에 대응하는 읽기 어드레스를 포함할 수 있다. 불휘발성 메모리 모듈(100)은 휘발성 메모리(121)의 영역 중 읽기 어드레스와 대응하는 영역에 저장된 데이터 및 태그를 읽을 수 있다.
S12 단계에서, 불휘발성 메모리 모듈(100)은 읽기 결과를 기반으로 캐시 히트(Cache Hit) 또는 캐시 미스(Cache Miss)를 판단하기 위한 캐시 체크를 수행할 것이다. 앞서 설명된 바와 같이, 태그(TAG)는 어드레스의 일부 정보를 포함한다. 불휘발성 메모리 모듈(100)은 수신된 읽기 어드레스 및 태그(TAG)를 비교함으로써 캐시 체크를 수행할 수 있다.
S13 단계에서, 캐시 체크의 결과에 따라 동작 분기가 발생한다. 어드레스의 일부와 태그(TAG)가 일치하는 경우, 불휘발성 메모리 모듈(100)은 캐시 히트로 판별할 것이다. 반면, 수신된 어드레스의 일부와 태그(TAG)가 일치하지 않는 경우, 불휘발성 메모리 모듈(100)은 캐시 미스로 판별한다.
캐시 히트로 판별되면, S14 단계에서 불휘발성 메모리 모듈(100)은 휘발성 메모리(121)로부터 읽은 데이터(Read data)와 유효성 정보(DQ_INFO)를 프로세서(101)로 전송한다. 유효성 정보(DQ_INFO)는 출력되는 데이터가 캐시 히트인지 또는 캐시 미스인지에 대한 정보를 포함한다. 프로세서(101)는 유효성 정보(DQ_INFO)를 통해 수신된 데이터(DT_v)가 유효한 데이터인지 판별할 수 있다. 즉, 불휘발성 메모리 모듈(100)이 캐시 히트에 대한 정보를 유효성 정보(DQ_INFO)로써 제공함으로써 프로세서(101)는 수신된 데이터가 유효한 데이터인 것을 인지할 수 있다.
캐시 미스로 판별되면, S15 단계에서 불휘발성 메모리 모듈(100)은 데이터 라인(DQ)으로 출력되는 데이터가 무효한 데이터임을 나타내는 유효성 정보(DQ_INFO)를 프로세서(101)로 전송한다. 즉, 불휘발성 메모리 모듈(100)은 캐시 미스를 나타내는 유효성 정보(DQ_INFO)를 프로세서(101)로 출력할 것이다. 이때, 불휘발성 메모리 모듈(100)은 캐시 미스에 대응하는 데이터의 트랜잭션 아이디(TID)를 추가적인 유효성 정보(DQ_INFO)로 프로세서(101)에 제공할 수 있다. 프로세서(101)는 트랜잭션 아이디(TID)를 참조하여, 추후에 캐시 미스된 데이터를 불휘발성 메모리 모듈(100)에 요청할 수 있다.
예시적으로, S11 단계로부터 미리 정해진 레이턴시(RL)가 경과한 이후에 S14 단계의 동작이 수행될 수 있다. 즉, 프로세서(101)가 모듈 읽기 커맨드 및 어드레스(RD, ADD)를 전송하고, 미리 정해진 레이턴시가 경과한 이후에, 불휘발성 메모리 모듈(100)로부터 읽기 데이터가 수신될 것이다. 이때, 미리 정해진 레이턴시는 읽기 레이턴시(RL; Read Latency)일 수 있다. 읽기 레이턴시(RL)는 불휘발성 메모리 모듈(100)의 동작 특성에 따라 미리 정해진 시간 또는 클럭 주기일 수 있다. 읽기 레이턴시(RL)에 대한 정보는 SPD(140)에 저장되고, 장치 정보(DI)로써 프로세서(101)로 제공될 수 있다. 프로세서(101)는 읽기 레이턴시(RL)를 기반으로 불휘발성 메모리 모듈(100)을 제어할 수 있다.
도 4는 도 2의 휘발성 메모리의 캐시 구조를 설명하기 위한 도면이다. 간결한 설명을 위하여, 휘발성 메모리(121)의 캐시 구조를 설명하는데 불필요한 구성 요소들은 생략될 것이다. 또한, 불휘발성 메모리(123)의 저장 영역은 복수의 영역들(NVM_0~NVM_5)로 구분되는 것으로 가정한다. 복수의 영역들(NVM_0~NVM_5)은 논리적으로 구분된 영역들이며, 불휘발성 메모리(123)의 저장 영역은 복수의 영역들(NVM_0~NVM_5) 이외의 저장 공간을 더 포함할 수 있다.
도 2 및 도 4를 참조하면, 휘발성 메모리(121)는 불휘발성 메모리(123)보다 빠른 액세스 속도를 가질 수 있다. 즉, 불휘발성 메모리(123)에 저장된 데이터 중 일부를 휘발성 메모리(121)에 저장함으로써, 모듈 컨트롤러(110) 또는 프로세서(101)의 요청에 따른 액세스 속도가 향상될 수 있다. 예를 들어, 휘발성 메모리(121)는 불휘발성 메모리(123)의 캐시 메모리로써 사용될 수 있다. 예를 들어, 휘발성 메모리(121)는 불휘발성 메모리(123)에 저장된 데이터 중 일부를 저장할 수 있고, 모듈 컨트롤러(110) 또는 프로세서(101)의 요청에 따라, 저장된 데이터를 출력할 수 있다.
예시적으로, 휘발성 메모리(121)는 불휘발성 메모리(123)와 직접 사상(Direct Mapping) 관계를 가질 수 있다. 예를 들어, 휘발성 메모리(121)는 복수의 캐시 라인들(CL0~CL3)을 포함할 수 있다. 하나의 캐시 라인(CL)은 캐시되는 데이터 및 태그(TAG), 데이터 에러 정정 코드(ECC_DT), 태그 에러 정정 코드(ECC_TAG), 및 더티 정보(DRT)를 저장하는 저장 공간을 가리킬 수 있다.
캐시 라인은 모듈 컨트롤러(110) 또는 프로세서(101)의 요청에 따른 최소 액세스 단위를 가리킬 수 있다. 휘발성 메모리(121)는 복수의 캐시 라인들(CL0~CL3)만큼의 저장 용량을 가질 수 있다. 태그(TAG)는 동일한 엔트리에 저장된 데이터(DT_v)와 대응되는 어드레스의 적어도 일부일 수 있다. 데이터 에러 정정 코드(ECC_DT)는 동일한 엔트리에 저장된 데이터(DT_v)에 대한 에러 정정 코드일 수 있다. 태그 에러 정정 코드(ECC_TAG)는 동일한 엔트리에 저장된 태그(TAG)에 대한 에러 정정 코드일 수 있다. 더티 정보(DRT)는 동일한 엔트리에 저장된 데이터(DT_v)에 대한 더티 정보를 가리킬 수 있다.
불휘발성 메모리(123)는 복수의 영역들(NVM_0~NVM_5)을 포함할 수 있다. 복수의 영역들(NVM_0~NVM_5) 각각은 복수의 라인들(Line0~Line3)을 각각 포함할 수 있다. 예시적으로, 복수의 라인들(Line0~Line3) 각각은 프로세서(101) 또는 모듈 컨트롤러(110)의 요청에 따른 데이터 액세스 단위의 저장 공간을 가리킬 수 있다.
예를 들어, 메모리 영역(NVM_0)은 캐시 단위에 해당하는 라인들(Line0~Line3)을 포함할 수 있다. 라인들(Line0~Line3) 각각은 복수의 캐시 라인(CL0~CL3) 각각과 1:1 대응될 수 있다. 즉, 라인(Line0)은 캐시 라인(CL0)와 대응되고, 라인(Line1)은 캐시 라인(CL1)와 대응될 수 있다. 메모리 영역(NVM_1)도 복수의 라인들(Line0~Line3)을 포함할 수 있고, 라인들(Line0~Line3) 각각은 복수의 캐시 라인들(CL0~CL3) 각각과 1:1 대응될 수 있다. 마찬가지로, 메모리 영역들(NVM_2~NVM_5) 각각은 라인들(Line0~Line3) 단위로 구분되고, 라인들(Line0~Line3) 각각은 캐시 라인들(CL0~CL3)과 대응될 수 있다.
상술된 바와 같이, 휘발성 메모리(121)는 불휘발성 메모리(123)와 직접 사상(Direct Mapping) 관계를 가질 수 있다. 휘발성 메모리(121)의 캐시 라인(CL0)는 복수의 영역들(NVM_0~NVM_5) 각각의 라인들(Line0)과 대응되고, 복수의 영역들(NVM_0~NVM_5) 각각의 라인들(Line0) 중 어느 하나의 캐시 라인에 저장된 데이터(DT_v)를 저장할 수 있다. 다시 말해서, 캐시 라인(CL0)에 저장된 데이터(DT_v)는 복수의 영역들(NVM_0~NVM_5) 각각의 라인들(Line0) 중 어느 하나와 대응될 것이다.
캐시 라인(Line0)은 저장된 데이터(DT_v)에 대한 태그(TAG)를 포함할 수 있다. 예시적으로, 태그(TAG)는 캐시 라인(CL0)에 저장된 데이터(DT_v)가 복수의 영역들(NVM_0~NVM_5)의 라인들(Line0) 중 어느 하나의 라인과 대응되는지에 대한 정보일 수 있다.
예시적으로, 복수의 라인들(Line0~Line3) 각각은 프로세서(101)로부터 제공되는 어드레스(ADD)에 의해 구분 또는 선택될 수 있다. 즉, 프로세서(101)로부터 제공되는 어드레스(ADD)에 의해 복수의 메모리 영역들(NVM_0~NMV_5) 각각의 라인들(Line0~Line3) 중 적어도 하나의 라인이 선택되고, 선택된 라인에 대한 액세스 동작이 수행될 수 있다.
복수의 캐시 라인들(CL0~CL3) 각각은 프로세서(101)로부터 제공되는 어드레스(ADD) 중 적어도 일부에 의해 구분 또는 선택될 수 있다. 즉, 프로세서(101)로부터 제공되는 어드레스(ADD) 중 적어도 일부에 의해 복수의 캐시 라인들(CL0~CL3) 중 적어도 하나가 선택되고, 선택된 캐시 라인에 대한 액세스 동작이 수행될 수 있다.
태그(TAG)는 프로세서(101)로부터 제공되는 어드레스(ADD) 중 적어도 일부 또는 나머지 일부를 포함할 수 있다. 예를 들어, 어드레스(ADD)의 일부 포션에 의해 복수의 캐시 라인들(CL0~CL3) 중 적어도 하나가 선택되고, 선택된 캐시 라인으로부터의 태그(TAG_v)가 어드레스(ADD)에 포함되는 경우, 캐시 히트(Hit)인 것으로 판별될 수 있다. 또는 어드레스(ADD)에 의해 의 적어도 일부에 의해 복수의 캐시 라인들(CL0~CL3) 중 적어도 하나가 선택되고, 선택된 캐시 라인으로부터의 태그(TAG_v)가 어드레스(ADD)에 포함되지 않는 경우, 캐시 미스(Miss)인 것으로 판별될 수 있다.
상술된 바와 같이, 불휘발성 메모리 모듈(100)이 휘발성 메모리(121)를 캐시 메모리로 사용함으로써, 불휘발성 메모리 모듈(100)의 성능이 향상된다. 이때, 불휘발성 메모리 모듈(100)은 휘발성 메모리(121)에 저장된 태그(TAG)를 기반으로 캐시 히트 및 미스 여부를 판별할 수 있다.
예시적으로, 이하의 도면들을 참조하여, 휘발성 메모리(121) 및 불휘발성 메모리(123) 사이의 데이터 트랜잭션 방법이 설명된다. 그러나 이하에서 설명되는 실시 예들은 본 발명의 기술적 사상을 용이하게 설명하기 위한 예시적인 것일 뿐 본 발명의 범위가 이에 한정되는 것은 아니다. 더불어, 본 발명의 휘발성 메모리(121)가 불휘발성 메모리(123)의 캐시 메모리로 사용되는 예로 본 발명이 설명되지만, 본 발명은 여기에 국한되지는 않을 것이다.
도 5는 도 3의 읽기 동작을 상세하게 설명하기 위한 타이밍도이다. 도 5를 참조하면, 불휘발성 메모리 모듈(100)은 프로세서(101)로부터 모듈 읽기 커맨드를 수신할 것이다. 예를 들면, 불휘발성 메모리 모듈(100)은 액티브 명령(ACT)과 동시에 제 1 어드레스(ADD1)를 수신하고, 읽기 명령(RD)과 제 2 어드레스(ADD2)를 수신할 것이다.
수신된 신호에 응답하여 모듈 컨트롤러(110)에 의한 불휘발성 메모리 모듈(100)의 내부적인 캐시 체크(Cache Check) 동작이 수행될 것이다. 예를 들면, 모듈 컨트롤러(110)는 NVM 커맨드/어드레스(CA_n) 및 VM 커맨드/어드레스(CA_v)를 출력할 것이다. 그러면 휘발성 메모리(121)는 VM 커맨드/어드레스(CA_v)에 응답하여, 휘발성 메모리(121)의 영역 중 어드레스(ADD1 또는 ADD2)와 대응되는 영역에 저장된 데이터(DT_v) 및 태그(TAG_v)를 출력할 수 있다. 예를 들어, 앞서 설명된 바와 같이, 휘발성 메모리(121)는 데이터(DT_v)를 기반으로 메모리 데이터 라인(MDQ)의 전압을 구동함으로써, 메모리 데이터 라인(MDQ)을 통해 데이터(DT_v)를 출력할 수 있다. 휘발성 메모리(121)는 태그(TAG_v)를 기반으로 태그 데이터 라인(TDQ)의 전압을 구동함으로써, 태그 데이터 라인(TDQ)을 통해 태그(TAG_v)를 출력할 수 있다. 모듈 컨트롤러(110)는 태그 데이터 라인(TDQ)을 통해 태그(TAG_v)를 수신하고, 수신된 태그(TAG_v) 및 어드레스(ADD1 또는 ADD2)를 비교함으로써 캐시 히트인지 또는 캐시 미스인지 판별할 수 있다.
읽기 커맨드(RD)와 제 2 어드레스(ADD2)가 입력된 이후, 고정된 레이턴시(RL) 이후에 데이터 라인(DQ)을 통해서 휘발성 메모리(121)에 데이터(DATA)가 출력될 것이다. 이때 출력되는 데이터(DATA)는 모듈 컨트롤러(110)에 의한 캐시 체크 결과 캐시 히트로 판정된 데이터이다. 그러면, 모듈 컨트롤러(110)는 별도의 핀을 통해서 프로세서(101)에 전달되는 유효성 정보(DQ_INFO)를 출력할 것이다. 즉, 유효성 정보(DQ_INFO)는 휘발성 메모리(121)로부터 읽혀지고 출력되는 데이터(DATA)가 유효(V:Valid)한 데이터임을 나타내는 유효성 포션(151)을 포함할 수 있다. 그리고 유효성 정보(DQ_INFO)는 추후 설명되겠지만 트랜잭션 아이디 포션(152)을 포함할 수 있다. 하지만, 데이터(DATA)가 유효한 것으로 판정된 경우, 트랜잭션 아이디 포션(152)은 불필요하므로 프로세서(101)에 의해서 무시될 수 있을 것이다. 프로세서(101)는 유효성 정보(DQ_INFO)를 참조하여 데이터(DATA)의 유효성을 판단할 수 있다.
도 6은 도 5의 데이터(DATA) 및 유효성 정보(DQ_INFO)의 구현 예를 간략히 보여주는 타이밍도이다. 도 6을 참조하면, 프로세서(101)에 의해서 읽기 요청된 데이터가 데이터 라인(DQ)을 통해서 순차적으로 출력된다고 가정하자. 여기서, 간략한 설명을 위해서 읽기 커맨드나 어드레스 등은 생략될 것이다. 읽기 커맨드와 어드레스에 응답하여 특정 레이턴시 이후에 데이터(D1, D2, D3, D4)가 복수의 핀들을 통해서 출력된다. 이와 동기하여, 본 발명의 유효성 정보(DQ_INFO)도 별도로 할당된 핀을 통해서 출력될 것이다.
데이터(D1, D2, D3, D4)는 클록 신호(CLK)의 상승 에지와 하강 에지에 각각 동기하여 출력될 수 있다. 더불어, 클록 신호(CLK)에 동기하여 유효성 정보(DQ_INFO)도 할당된 핀을 통해서 프로세서로 출력된다. 유효성 정보(DQ_INFO)의 유효성 포션(151)과 트랜잭션 아이디 포션(152)을 포함한다. 만일, 휘발성 메모리(121)로부터 출력되는 데이터(D1, D2, D3, D4)가 캐시 히트에 대응하는 경우, 유효성 정보(DQ_INFO)의 유효성 포션(151)은 데이터(D1, D2, D3, D4)가 유효한 데이터임을 나타내는 값(V)으로 출력될 것이다. 예를 들면, 유효성 포션(151)은 논리값 '1'로 출력될 수 있다. 더불어, 유효한 데이터에 대응하는 트랜잭션 아이디 포션(152)은 프로세서(101)에 의해서 무시되어도 무방하다. 따라서, 트랜잭션 아이디 포션(152)은 예시적으로 논리값 '111'로 출력될 수 있다. 여기서, 유효성 포션(151)과 트랜잭션 아이디 포션(152)의 비트 수가 각각 1-비트와 3-비트로 설명되었으나, 각각의 비트 수는 필요에 따라 가변될 수 있음은 잘 이해될 것이다.
도 7은 도 3의 읽기 동작을 상세하게 설명하기 위한 타이밍도이다. 도 7을 참조하면, 캐시 미스인 경우에 본 발명의 불휘발성 메모리 모듈(100)에서 출력되는 유효성 정보(DQ_INFO)가 도시되어 있다. 불휘발성 메모리 모듈(100)은 프로세서(101)로부터 모듈 읽기 커맨드를 수신할 것이다. 예를 들면, 불휘발성 메모리 모듈(100)은 액티브 명령(ACT)과 동시에 제 1 어드레스(ADD1)를 수신하고, 읽기 명령(RD)과 제 2 어드레스(ADD2)를 수신할 수 있다.
수신된 커맨드와 어드레스에 응답하여 모듈 컨트롤러(110)에 의한 불휘발성 메모리 모듈(100)의 내부적인 캐시 체크(Cache Check) 동작이 수행될 것이다. 불휘발성 메모리 모듈(100)의 캐시 체크(Cache Check) 동작은 앞서 도 5에서 설명되었으므로, 여기서는 생략될 것이다. 모듈 컨트롤러(110)는 태그 데이터 라인(TDQ)을 통해 읽기 요청된 어드레스에 대응하는 태그(TAG_v)를 수신하고, 수신된 태그(TAG_v) 및 어드레스(ADD1 또는 ADD2)를 비교함으로써 캐시 히트인지 또는 캐시 미스인지 판별할 수 있다.
읽기 커맨드(RD)와 제 2 어드레스(ADD2)의 입력된 이후, 특정 레이턴시(RL) 이후에 데이터 라인(DQ)을 통해서 휘발성 메모리(121)에 데이터(DATA)가 출력될 것이다. 이때 출력되는 데이터(DATA)에 대한 모듈 컨트롤러(110)에 의한 캐시 체크 결과는 캐시 미스에 해당하는 것으로 가정한다. 그러면, 모듈 컨트롤러(110)는 프로세서(101)와 핸드셰이킹을 위한 별도의 핀을 통해서 유효성 정보(DQ_INFO)를 출력할 것이다. 유효성 정보(DQ_INFO)는 휘발성 메모리(121)로부터 읽혀지고 출력되는 데이터(DATA)가 무효(I:Invalid)한 데이터임을 나타내는 유효성 포션(161)을 포함할 수 있다. 그리고 유효성 정보(DQ_INFO)는 트랜잭션 아이디 포션(162)을 포함할 수 있다. 트랜잭션 아이디 포션(162)은 캐시 미스에 대응하는 트랜잭션의 단조 증가 형태의 넘버링을 통해서 구현될 수 있다.
프로세서(101)는 유효성 정보(DQ_INFO)를 참조하여 출력되는 데이터(DATA)가 캐시 미스된 데이터임을 인지할 것이다. 그리고 프로세서(101)는 트랜잭션 아이디(TID)를 참조하여 적정한 시간에 다시 데이터 읽기를 요청할 수 있다.
도 8은 도 7의 데이터(DATA) 및 유효성 정보(DQ_INFO)의 구현 예를 간략히 보여주는 타이밍도이다. 도 8을 참조하면, 프로세서(101)에 의해서 읽기 요청된 데이터가 데이터 라인(DQ)을 통해서 순차적으로 출력된다고 가정하자. 여기서, 간략한 설명을 위해서 읽기 커맨드나 어드레스 등은 생략될 것이다. 읽기 커맨드와 어드레스에 응답하여 특정 레이턴시(RL) 이후에 데이터(D1, D2, D3, D4)가 복수의 데이터 핀들(DQ pins)을 통해서 출력된다. 이와 동기하여, 본 발명의 유효성 정보(DQ_INFO)도 별도로 할당된 핀을 통해서 출력될 것이다.
데이터(D1, D2, D3, D4)는 클록 신호(CLK)의 상승 에지와 하강 에지에 각각 동기하여 출력될 수 있다. 더불어, 클록 신호(CLK)에 동기하여 유효성 정보(DQ_INFO)도 할당된 핀을 통해서 프로세서로 출력된다. 유효성 정보(DQ_INFO)의 유효성 포션(161)과 트랜잭션 아이디 포션(162)을 포함한다. 만일, 휘발성 메모리(121)로부터 출력되는 데이터(D1, D2, D3, D4)가 캐시 미스에 해당하는 경우, 유효성 정보(DQ_INFO)의 유효성 포션(161)은 데이터(D1, D2, D3, D4)가 무효한 데이터임을 나타내는 값(I: Invalid)으로 출력될 것이다. 예를 들면, 유효성 포션(161)은 논리값 '0'로 출력될 수 있다. 더불어, 캐시 미스에 의해서 무효한 데이터로 판정된 데이터(D1, D2, D3, D4)에 대응하는 트랜잭션 아이디(TID)가 출력될 것이다. 만일, 트랜잭션 아이디(TID)가 논리 '010'인 경우, 트랜잭션 아이디(TID)에 대응하는 논리값 '010'이 유효성 정보(DQ_INFO)를 위해 구비된 핀을 통해서 프로세서(101)에 전달될 것이다.
여기서, 유효성 정보(DQ_INFO)의 비트 수나 유효성 정보(DQ_INFO)를 구성하는 유효성 포션(161) 및 트랜잭션 아이디 포션(162) 각각의 비트 수는 상술한 설명에 국한되지 않음은 잘 이해될 것이다.
도 9는 본 발명의 다른 실시 예에 따른 도 1의 불휘발성 메모리 모듈의 다른 특징을 보여주는 블록도이다. 도 1 및 도 9를 참조하면, 불휘발성 메모리 모듈(200)은 모듈 컨트롤러(210), 이종 메모리 장치(220), 데이터 버퍼(230), 및 직렬 프레즌스 검출 칩(SPD, 240)을 포함할 수 있다. 여기서, 이종 메모리 장치(220), 데이터 버퍼(230), 및 직렬 프레즌스 검출 칩(SPD, 240) 등의 동작 및 구성은 실질적으로 도 2의 그것들과 동일하므로 이하에서는 이것들에 대한 설명은 생략하기로 한다.
모듈 컨트롤러(210)는 프로세서(101)로부터 모듈 커맨드/어드레스(CA)를 수신하고, 수신된 모듈 커맨드/어드레스(CA)에 응답하여 이종 메모리 장치(220)를 제어할 수 있다. 예를 들어, 모듈 컨트롤러(210)는 프로세서(101)로부터의 모듈 커맨드/어드레스(CA)에 응답하여 NVM 커맨드/어드레스(CA_n) 및 VM 커맨드/어드레스(CA_v)를 이종 메모리 장치(220)로 제공할 것이다.
모듈 컨트롤러(210)는 프로세서(101)로부터 수신된 모듈 커맨드/어드레스(CA)와 태그(TAG)를 기반으로 캐시 히트 또는 캐시 미스 여부를 판별할 수 있다. 모듈 컨트롤러(210)는 프로세서(101)로부터 수신된 모듈 커맨드/어드레스(CA) 및 태그(TAG)를 비교함으로써 캐시 히트 또는 캐시 미스 여부를 판별할 수 있다. 캐시 히트 또는 캐시 미스를 판정하기 위해, 모듈 컨트롤러(210)는 캐시 매니저(215)를 포함할 수 있다.
캐시 매니저(215)는 캐시 미스가 발생한 읽기 요청에 대한 트랜잭션 아이디(TID)를 부여 및 관리할 수 있다. 예를 들면, 캐시 매니저(215)는 캐시 체크를 수행하고, 그 결과 캐시 미스에 대응하는 읽기 요청 또는 어드레스에 대한 트랜잭션 아이디(TID)를 부여할 수 있다. 이때, 캐시 미스에 대응하는 복수의 읽기 요청 또는 어드레스들은 단조 증가 형태의 트랜잭션 아이디를 부여받을 수 있다. 그리고 이들 트랜잭션 아이디(TID)는 프로세서(101)에 캐시 히트 여부를 나타내는 유효성 정보(DQ_INFO)와 함께 제공될 것이다.
여기서, 태그(TAG)는 휘발성 메모리(121)에 저장된 데이터와 대응되는 어드레스(Address)의 일부를 포함할 수 있다. 예시적으로, 모듈 컨트롤러(210)는 태그 데이터 라인(TDQ)을 통해 휘발성 메모리(221)와 태그(TAG)를 주고 받을 수 있다. 예시적으로, 휘발성 메모리(221)에 데이터가 기입될 때, 모듈 컨트롤러(210)의 제어에 따라, 데이터와 대응되는 태그(TAG)가 데이터와 함께 기입될 수 있다.
프로세서(101)로부터 읽기 커맨드에 응답하여 고정된 레이턴시(RL) 이후에 데이터 라인(DQ)을 통해서 읽기 요청된 데이터가 출력될 것이다. 모듈 컨트롤러(210)는 캐시 체크의 결과에 따라 데이터 라인(DQ)을 통해서 출력되는 데이터의 유효성 정보(DQ_INFO)를 프로세서(101)로 전달할 수 있다. 유효성 정보(DQ_INFO)에는 데이터 라인(DQ)을 통해서 출력되는 데이터에 대한 유효성 및 트랜잭션 아이디(TID)가 포함될 수 있다. 프로세서(101)는 유효성 정보(DQ_INFO)를 참조하여 레이턴시(RL) 보다 지연된 시점에 출력 가능한 캐시 미스된 데이터를 전달받을 수 있다. 즉, 프로세서(101)는 트랜잭션 아이디(TID)를 참조하여 캐시 미스된 데이터를 다시 요청할 수 있을 것이다.
더불어, 모듈 컨트롤러(210)는 캐시 체크의 결과에 따라 데이터 라인(DQ)을 통해서 출력되는 데이터에 대한 유효성 정보(DQ_INFO)를 프로세서(101)로 전달할 수 있다. 유효성 정보(DQ_INFO)에는 데이터 라인(DQ)을 통해서 출력되는 데이터에 대한 유효성 및 트랜잭션 아이디(TID)가 포함될 수 있다. 프로세서(101)는 유효성 정보(DQ_INFO)를 참조하여 레이턴시(RL) 보다 지연된 시점에 출력 가능한 캐시 미스된 데이터를 전달받을 수 있다. 즉, 프로세서(101)는 트랜잭션 아이디(TID)를 참조하여 캐시 미스된 데이터를 다시 요청할 수 있다.
모듈 컨트롤러(210)는 유효성 정보(DQ_INFO)와 더불어 메시지 정보(250, MSG_EN, MSG_DQ)를 프로세서(101)에 전달할 수 있다. 유효성 정보(DQ_INFO)는 커맨드/어드레스 및 데이터(DQ)와 동기되어 출력되는 정보인데 반해, 메시지 정보(MSG_EN, MSG_DQ)는 커맨드/어드레스 및 데이터(DQ)와 비동기적으로 출력될 수 있다. 메시지 정보(250)는 예를 들면, 캐시 미스로 판정된 읽기 요청에 대해 불휘발성 메모리 모듈(200)이 출력 가능한 준비 상태임을 알려주는 단방향 핀들을 사용하여 제공될 것이다. 여기서, 메시지 정보(250)는 2개의 핀을 통해서 출력될 수도 있지만, 하나의 핀을 통해서 시리얼하게 출력될 수도 있음은 잘 이해될 것이다. 메시지 정보(250)에는 이전에 캐시 미스로 판정된 트랜잭션 아이디들 중에서 출력 가능한 데이터에 대응하는 트랜잭션 아이디가 포함될 수 있다. 프로세서(101)는 메시지 정보(250, MSG_EN, MSG_DQ)를 참조하여 무효한 데이터로 응답받았던 읽기 요청을 불휘발성 메모리 모듈(200)에 다시 전달할 수 있다. 더불어, 메시지 정보(250, MSG_EN, MSG_DQ)에는 트랜잭션 아이디(TID)뿐 아니라 다양한 정보가 더 포함될 수 있음은 잘 이해될 것이다. 예를 들면, 준비된 데이터에 대한 태그 정보(TAG)도 포함될 수 있다.
이상의 도 9의 실시 예에 의하면, 본 발명의 불휘발성 메모리 모듈(200)은 읽기 요청에 대한 캐시 체크 결과에 해당하는 유효성 정보(DQ_INFO)를 데이터와 동기하여 출력할 수 있다. 더불어, 불휘발성 메모리 모듈(200)은 캐시 미스 상황에서는 데이터와 비동기적으로 출력되는 메시지 정보(MSG_EN, MSG_DQ)를 프로세서(101)로 제공할 수 있다. 메시지 정보(MSG_EN, MSG_DQ)에는 내부적으로 출력이 가능한 데이터의 트랜잭션 아이디 등이 포함될 수 있을 것이다.
도 10은 도 9의 불휘발성 메모리 모듈(200)과 프로세서(101)의 핸드셰이킹 절차를 간략히 보여주는 순서도이다. 도 9 및 도 10을 참조하면, 불휘발성 메모리 모듈(200)은 프로세서(101)로부터의 읽기 요청에 응답하여 데이터와, 데이터에 대응하는 유효성 정보(DQ_INFO)를 출력한다.
S21 단계에서, 프로세서(101)는 불휘발성 메모리 모듈(200)로 모듈 읽기 커맨드 및 어드레스(RD, ADD)를 전송한다. 불휘발성 메모리 모듈(200)은 모듈 읽기 커맨드 및 어드레스(RD, ADD)에 응답하여, 휘발성 메모리(221)에 대한 읽기 동작을 수행한다. 예를 들어, 모듈 읽기 커맨드 및 어드레스(RD, ADD)는 불휘발성 메모리 모듈(200)에 저장된 데이터를 읽기 위한 읽기 커맨드 및 읽기 데이터에 대응하는 읽기 어드레스를 포함할 수 있다. 불휘발성 메모리 모듈(200)은 휘발성 메모리(221)의 영역 중 읽기 어드레스와 대응하는 영역에 저장된 데이터 및 태그를 읽을 수 있다.
S22 단계에서, 불휘발성 메모리 모듈(200)은 읽기 결과를 기반으로 캐시 히트(Cache Hit) 또는 캐시 미스(Cache Miss)를 판단하기 위한 캐시 체크를 수행할 것이다. 앞서 설명된 바와 같이, 캐시 매니저(215)는 프로세서(101)로부터 수신된 어드레스 및 태그(TAG)를 비교함으로써 캐시 체크를 수행할 수 있다.
S23 단계에서, 캐시 체크의 결과에 따라 동작 분기가 발생한다. 어드레스의 일부와 태그(TAG)가 일치하는 경우, 불휘발성 메모리 모듈(200)은 캐시 히트로 판별할 것이다. 반면, 수신된 어드레스의 일부와 태그(TAG)가 일치하지 않는 경우, 불휘발성 메모리 모듈(200)은 캐시 미스로 판별한다.
캐시 히트로 판별되면, S24 단계에서 불휘발성 메모리 모듈(200)은 휘발성 메모리(221)로부터 읽은 데이터(DATA)와 유효성 정보(DQ_INFO)를 프로세서(101)로 전송한다. 유효성 정보(DQ_INFO)는 출력되는 데이터가 캐시 히트인지 또는 캐시 미스인지에 대한 정보를 포함한다. 프로세서(101)는 유효성 정보(DQ_INFO)를 통해 수신된 데이터(DT_v)가 유효한 데이터인지 판별할 수 있다. 즉, 불휘발성 메모리 모듈(200)이 캐시 히트에 대한 정보를 유효성 정보(DQ_INFO)로써 제공함으로써 프로세서(101)는 수신된 데이터가 유효한 데이터인 것을 인지할 수 있다. 불휘발성 메모리 모듈(200)로부터 제공받은 데이터가 유효한 데이터로 확인되면, 프로세서(101)의 제반 데이터 읽기 동작은 종료될 것이다.
캐시 미스로 판별되면, S25 단계에서 불휘발성 메모리 모듈(200)은 데이터 라인(DQ)으로 출력되는 데이터가 무효한 데이터임을 나타내는 유효성 정보(DQ_INFO)를 프로세서(101)로 전송한다. 즉, 불휘발성 메모리 모듈(200)은 캐시 미스를 나타내는 유효성 정보(DQ_INFO)를 프로세서(101)로 출력할 것이다. 이때, 불휘발성 메모리 모듈(200)은 캐시 미스에 대응하는 데이터의 트랜잭션 아이디(TID)를 추가적인 유효성 정보(DQ_INFO)로 프로세서(101)에 제공할 수 있다. 프로세서(101)는 트랜잭션 아이디(TID)를 테이블 형태로 저장할 것이다.
S26 단계에서, 캐시 미스를 나타내는 유효성 정보(DQ_INFO)가 제공된 이후에 불휘발성 메모리 모듈(200)은 휘발성 메모리(221)에 캐시되지 않은 데이터를 불휘발성 메모리(223)로부터 읽어낼 수 있다. 그리고 읽혀진 데이터를 휘발성 메모리(221)의 캐시 라인에 저장하거나, 또는 별도의 휘발성 메모리 영역에 저장할 수 있다.
S27 단계에서, 캐시 미스로 판정된 데이터의 출력 준비가 완료되면, 불휘발성 메모리 모듈(200)은 메시지 정보(MSG_EN, MSG_DQ)를 프로세서(101)에 전달한다. 예를 들면, 메시지 인에이블 신호(MSG_EN)를 활성화하고, 메시지 핀(MSG_DQ)을 통해서 출력 준비된 데이터에 해당하는 트랜잭션 아이디(TID)를 프로세서(101)에 제공할 수 있다. 메시지 정보(MSG_EN, MSG_DQ)는 데이터와 비동기적으로 제공될 것이다.
S28 단계에서, 프로세서(101)는 메시지 정보(MSG_EN, MSG_DQ)를 수신하고, 대응하는 트랜잭션 아이디(TID)에 대한 읽기 명령을 전달할 것이다. 트랜잭션 아이디(TID)에 대응하는 어드레스는 프로세서(101)에서 별도로 관리될 것이다.
S29 단계에서, 불휘발성 메모리 모듈(200)은 프로세서(101)에서 요청된 데이터를 출력할 수 있다. 이때, 요청된 데이터가 휘발성 메모리(221)에 캐시된 상태임을 알려주는 유효성 정보(DQ_INFO)가 데이터(DATA)와 함께 전달될 수 있을 것이다.
이상에서는 데이터와 동기되어 출력하는 유효성 정보(DQ_INFO)와, 데이터와 비동기적으로 출력되는 메시지 정보(MSG_EN, MSG_DQ)를 사용한 프로세서(101)와 불휘발성 메모리 모듈(200)의 핸드셰이킹 방법이 설명되었다.
도 11은 도 10의 핸드셰이킹 동작을 상세하게 설명하기 위한 타이밍도이다. 도 11을 참조하면, 캐시 미스 상황에서 본 발명의 불휘발성 메모리 모듈(200)은 유효성 정보(DQ_INFO) 및 메시지 정보(MSG_EN, MSG_DQ)를 프로세서(101)로 전달할 것이다. 그러면 프로세서(101)는 유효성 정보(DQ_INFO) 및 메시지 정보(MSG_EN, MSG_DQ)를 참조하여 캐시 미스에 대응하는 데이터를 재독출할 수 있다.
프로세서(101)는 불휘발성 메모리 모듈(200)에 읽기 커맨드(RD)와 어드레스(ADD)를 제공하여 데이터 읽기 요청을 전달한다. 불휘발성 메모리 모듈(200)은 읽기 커맨드(RD)와 어드레스(ADD)에 응답하여 휘발성 메모리(221)에 대한 읽기 동작을 수행할 것이다. 특히, 수신된 커맨드와 어드레스에 응답하여 모듈 컨트롤러(210)에 구비된 캐시 매니저(215)에 의한 내부적인 캐시 체크(Cache Check) 동작이 수행될 것이다. 불휘발성 메모리 모듈(200)의 캐시 체크(Cache Check) 동작은 앞서 도 5에서 설명되었으므로, 여기서는 생략될 것이다. 모듈 컨트롤러(210)는 태그 데이터 라인(TDQ)을 통해 읽기 요청된 어드레스에 대응하는 태그(TAG_v)를 수신하고, 수신된 태그(TAG_v) 및 어드레스(ADD1 또는 ADD2)를 비교함으로써 캐시 히트인지 또는 캐시 미스인지 판별할 수 있다.
읽기 커맨드(RD)와 어드레스(ADD)의 입력된 이후, 특정 레이턴시(DT) 이후에 데이터 라인(DQ)을 통해서 휘발성 메모리(221)에 제 1 데이터(DATA_1)가 출력될 것이다. 이때 출력되는 제 1 데이터(DATA_1)에 대한 모듈 컨트롤러(210)에 의한 캐시 체크 결과는 캐시 미스에 해당하는 것으로 가정한다. 그러면, 모듈 컨트롤러(210)는 프로세서(101)와 핸드셰이킹을 위한 유효성 정보(DQ_INFO)를 출력할 것이다. 유효성 정보(DQ_INFO)를 통해서 제 1 데이터(DATA_1)가 무효(Invalid)한 데이터임을 나타내는 유효성 포션(I, 261)을 포함할 수 있다. 그리고 유효성 정보(DQ_INFO)는 트랜잭션 아이디 포션(TID, 262)을 포함할 수 있다. 트랜잭션 아이디 포션(262)은 캐시 미스에 대응하는 트랜잭션의 단조 증가 형태의 넘버링을 통해서 구현될 수 있다.
프로세서(101)는 유효성 정보(DQ_INFO)를 참조하여 출력되는 제 1 데이터(DATA_1)가 캐시 미스된 무효한 데이터임을 인지할 것이다. 그리고 프로세서(101)는 트랜잭션 아이디(TID)를 참조하여 캐시 미스된 읽기 요청에 대한 제반 정보를 저장 및 관리할 수 있다.
유효성 정보(DQ_INFO)를 전송한 이후, 불휘발성 메모리 모듈(200)은 내부적으로 불휘발성 메모리(223)에 대한 접근을 수행하여 캐시 미스된 데이터를 독출할 것이다. 그리고 캐시 미스된 데이터가 출력 가능한 상태가 되면, 불휘발성 메모리 모듈(200)은 메시지 정보(MSG_EN, MSG_DQ)를 프로세서(101)에 전달할 것이다. 메시지 정보(MSG_EN, MSG_DQ)는 하나의 신호 라인을 통해서 제공되거나 메시지 인에이블 신호(MSG_EN)와 메시지 데이터 신호(MSG_DQ)의 별도 핀으로 제공될 수 있을 것이다. 메시지 인에이블 신호(MSG_EN)와 메시지 데이터 신호(MSG_DQ)가 별도의 핀으로 제공되는 경우에, 메시지 데이터 신호(MSG_DQ)에는 출력 준비된 데이터에 대응하는 트랜잭션 아이디(TID)가 제공될 수 있다. 메시지 정보(MSG_EN, MSG_DQ)는 데이터와 동기되어 출력되는 유효성 정보(DQ_INFO)와는 달리 데이터와는 비동기적으로 출력된다. 즉, 불휘발성 메모리 모듈(200)이 캐시 미스된 데이터를 패치하여 출력 가능한 상태가 되면, 메시지 정보(MSG_EN, MSG_DQ)가 출력될 수 있다.
메시지 정보(MSG_EN, MSG_DQ)의 출력에 응답하여, 프로세서(101)는 읽기 커맨드(RD)와 어드레스(ADD)를 불휘발성 메모리 모듈(200)에 재전송할 것이다. 이때, 읽기 커맨드(RD)와 어드레스(ADD)는 메시지 정보(MSG_EN, MSG_DQ)에 포함된 트랜잭션 아이디(TID)에 근거하여 생성될 것이다.
불휘발성 메모리 모듈(200)은 읽기 커맨드(RD)와 어드레스(ADD)에 대한 캐시 체크를 수행한다. 그리고 캐시 히트로 판정되는 경우, 읽기 레이턴시(RL) 이후에 출력되는 제 2 데이터(DATA_2)에 동기하여 유효성 정보(DQ_INFO)를 출력할 것이다. 이때 출력되는 유효성 정보(DQ_INFO)는 제 2 데이터(DATA_2)가 유효함을 의미하는 유효성 포션(251)을 포함할 것이다. 캐시 히트시에는 트랜잭션 아이디 포션(252)은 의미가 없으므로 더미 상태로 제공될 수 있다.
이상에서는 불휘발성 메모리 모듈(200)에 대한 읽기 요청시 데이터에 동기되어 출력되는 유효성 정보(DQ_INFO)와 데이터에 비동기적으로 출력되는 메시지 정보(MSG_EN, MSG_DQ)의 출력 방법이 설명되었다. 프로세서(101)는 유효성 정보(DQ_INFO)를 통해서 동기되어 출력되는 데이터가 무효한 값임을 인지하고, 트랜잭션 아이디를 수신할 수 있다. 프로세서(101)는 메시지 정보(MSG_EN, MSG_DQ)를 통해서 출력 준비된 데이터의 트랜잭션 아이디(TID)를 확인하고, 캐시 미스로 획득하지 못한 데이터에 대한 재읽기 동작을 수행할 수 있다.
도 12는 본 발명의 다른 실시 예에 따른 도 1의 불휘발성 메모리 모듈을 예시적으로 보여주는 블록도이다. 도 1 및 도 12를 참조하면, 불휘발성 메모리 모듈(300)은 모듈 컨트롤러(310), 이종 메모리 장치(320), 데이터 버퍼(330), 및 직렬 프레즌스 검출 칩(SPD, 340)을 포함할 수 있다. 여기서, 이종 메모리 장치(320), 데이터 버퍼(330), 및 직렬 프레즌스 검출 칩(340) 등의 동작 및 구성은 실질적으로 도 2의 그것들과 동일하므로 이것들에 대한 설명은 생략하기로 한다.
모듈 컨트롤러(310)는 프로세서(101)로부터 모듈 커맨드/어드레스(CMD/ADD)를 수신하고, 수신된 모듈 커맨드/어드레스(CMD/ADD)에 응답하여 이종 메모리 장치(320)를 제어할 수 있다. 예를 들어, 모듈 컨트롤러(310)는 프로세서(101)로부터의 모듈 커맨드/어드레스(CMD/ADD)에 응답하여 NVM 커맨드/어드레스(CA_n) 및 VM 커맨드/어드레스(CA_v)를 이종 메모리 장치(320)로 제공할 것이다.
모듈 컨트롤러(310)는 프로세서(101)로부터 수신된 모듈 커맨드/어드레스(CMD/ADD)와 태그(TAG)를 기반으로 캐시 히트 또는 캐시 미스 여부를 판별할 수 있다. 모듈 컨트롤러(310)는 프로세서(101)로부터 수신된 모듈 커맨드/어드레스(CMD/ADD) 및 태그(TAG)를 비교함으로써 캐시 히트 또는 캐시 미스 여부를 판별할 수 있다. 캐시 히트 또는 캐시 미스를 판정하기 위해, 모듈 컨트롤러(210)는 캐시 매니저(215)를 포함할 수 있다.
캐시 매니저(215)는 캐시 미스가 발생한 읽기 요청에 대한 트랜잭션 아이디(TID)를 부여 및 관리할 수 있다. 예를 들면, 캐시 매니저(315)는 캐시 체크를 수행하고, 그 결과 캐시 미스에 대응하는 읽기 요청 또는 어드레스에 대한 트랜잭션 아이디(TID)를 부여할 수 있다. 이때, 캐시 미스에 대응하는 복수의 읽기 요청 또는 어드레스들은 단조 증가 형태의 트랜잭션 아이디를 부여받을 수 있다. 그리고 이들 트랜잭션 아이디(TID)는 프로세서(101)에 캐시 히트 여부를 나타내는 유효성 정보(DQ_INFO)와 함께 제공될 것이다.
여기서, 태그(TAG)는 휘발성 메모리(321)에 저장된 데이터와 대응되는 어드레스(ADD)의 일부를 포함할 수 있다. 예시적으로, 모듈 컨트롤러(310)는 태그 데이터 라인(TDQ)을 통해 휘발성 메모리(321)와 태그(TAG)를 주고 받을 수 있다. 예시적으로, 휘발성 메모리(321)에 데이터가 기입될 때, 모듈 컨트롤러(310)의 제어에 따라, 데이터와 대응되는 태그(TAG)가 데이터와 함께 기입될 수 있다.
프로세서(101)로부터 읽기 커맨드에 응답하여 특정 레이턴시(RL) 이후에 데이터 라인(DQ)을 통해서 읽기 요청된 데이터가 출력될 것이다. 모듈 컨트롤러(310)는 캐시 체크의 결과에 따라 데이터 라인(DQ)을 통해서 출력되는 데이터의 유효성 정보(DQ_INFO)를 프로세서(101)로 전달할 수 있다. 유효성 정보(DQ_INFO)에는 데이터 라인(DQ)을 통해서 출력되는 데이터에 대한 유효성 및 트랜잭션 아이디(TID)가 포함될 수 있다. 더불어, 캐시 미스가 발생하는 경우에 모듈 컨트롤러(310)는 데이터와 동기되어 출력되는 유효성 정보(DQ_INFO)화 함께 메시지 정보(MSG_EN, MSG_DQ)를 데이터와 비동기적으로 출력할 수 있다. 추가적으로, 모듈 컨트롤러(310)는 유효성 정보(DQ_INFO)에 동기하여 캐시 정보(Cache_INFO)를 프로세서(101)에 제공할 수 있다. 캐시 정보(Cache_INFO)는 읽기 요청된 데이터의 태그(TAG) 또는 읽기 요청된 캐시 라인의 더티 상태(Dirty) 정보를 포함할 수 있다. 캐시 정보(Cache_INFO)를 출력하기 위하여, 모듈 컨트롤러(310)는 별도의 핀을 구비할 수도 있음은 잘 이해될 것이다.
이상에서는 본 발명의 불휘발성 메모리 모듈(100, 200, 300)의 특징이 설명되었다. 여기서, 휘발성 메모리들(121, 221, 321)이 캐시 메모리로 사용되는 예를 들어서 본 발명의 핸드셰이킹 방법이 설명되었으나, 본 발명은 여기에 국한되지 않는다. 상대적인 접근 속도가 다른 이종의 메모리를 구비하는 메모리 모듈에서, 동일한 읽기 레이턴시 기준을 준수해야 하는 모든 메모리 모듈에 본 발명의 이점이 적용될 수 있을 것이다.
도 13은 본 발명에 따른 불휘발성 메모리 모듈에 포함된 불휘발성 메모리를 예시적으로 보여주는 블록도이다. 도 13을 참조하면, 불휘발성 메모리(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)를 생성할 수 있다.
도 14는 본 발명에 따른 불휘발성 메모리 모듈의 불휘발성 메모리에 포함된 메모리 블록들 중 제 1 메모리 블록을 예시적으로 보여주는 회로도이다. 예시적으로, 도 14를 참조하여 3차원 구조의 제 1 메모리 블록(BLK1)이 설명된다. 그러나, 본 발명의 범위가 이에 한정되는 것은 아니며, 다른 메모리 블록들 또한 제 1 메모리 블록(BLK1)과 유사한 구조를 가질 수 있다.
도 14를 참조하면, 제 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)과 연결된다.
예시적으로, 도 22에 도시된 제 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호에 개시되어 있으며, 본 발명의 레퍼런스로 포함된다.
도 15는 본 발명의 불휘발성 메모리의 예로 상 변화 메모리 장치의 셀 구조 및 물성을 각각 보여주는 도면이다. 도 15를 참조하면, 메모리 셀(2100)은 가변 저항체와 액세스 트랜지스터(NT)로 구성된다. 상부 전극(2110), 상 변화 물질(2120), 콘택 플러그(2130), 그리고 하부 전극(2140)으로 가변 저항체가 구성된다. 상부 전극(2110)은 비트 라인(BL)에 연결된다. 하부 전극(2140)은 콘택 플러그(Contact plug: CP)(330)와 액세스 트랜지스터(NT) 사이에 연결된다. 콘택 플러그(2130)는 도전성 물질(예컨대, TiN 등)로 형성되며, 히터 플러그(Heater Plug)라고도 부른다. 상 변화 물질(2120)은 상부 전극(2110)과 콘택 플러그(2130) 사이에 형성된다. 상 변화 물질(2120)의 상태(Phase)는 공급되는 전류 펄스의 크기(Amplitude), 폭(Duration), 하강 시간(Fall time) 등에 따라 바뀌게 된다. 셋(Set) 또는 리셋(Reset)에 대응하는 상 변화 물질의 상태(Phase)는 도시된 바와 같이 비정질 양(Amorphous volume, 2150)에 의해서 결정된다. 일반적으로 비정질 상태(Amorphous Phase)는 리셋 상태에, 결정 상태(Crystal Phase)는 셋 상태에 대응한다. 비정질 상태(Amorphous state)에서 결정 상태(Crystal state)로 진행될수록 비정질 양은 적어진다. 상 변화 물질(2120)은 형성되는 비정질 양(2150)에 따라 가변되는 저항(Resistance)을 갖는다. 즉, 서로 다른 전류 펄스에 따라 형성되는 상 변화 물질(2120)의 비정질 양(2150)에 따라 기입되는 데이터가 결정된다.
도 16 및 도 17은 본 발명의 불휘발성 메모리에 포함되는 메모리 셀을 간략히 보여주는 도면들이다. 도 16에는 스핀 전달 토크형 MRAM(STT-MRAM)의 셀 구조가 입체적으로 간략히 도시되어 있다. 도 17에는 저항성 램의 셀 구조가 설명되어 있다.
도 16을 참조하면, 불휘발성 램의 메모리 셀로 스핀 전달 토크형 MRAM(Spin Transfer Torque Magneto resistive Random Access Memory: 이하, STT-MRAM)의 메모리 셀(3100)을 보여준다. 메모리 셀(3100)은 자기 터널 접합(Magnetic Tunnel Junction: 이하, MTJ) 소자(3110) 및 셀 트랜지스터(CT, 3120)를 포함할 수 있다. 셀 트랜지스터(3120)의 게이트에는 워드 라인(WL0)이 연결될 수 있다. 그리고 셀 트랜지스터(3120)의 일단은 MTJ 소자(3110)를 경유하여 비트 라인(BL0)과 연결된다. 또한, 셀 트랜지스터(3120)의 타단은 소스 라인(SL0)에 연결된다.
MTJ 소자(3110)는 고정층(Pinned layer, 3113)과 자유층(Free layer, 3111), 그리고 이들 사이에 위치하는 터널층(3112)이 포함할 수 있다. 고정층(3113)의 자화 방향은 고정되어 있으며, 자유층(3111)의 자화 방향은 조건에 따라 고정층(3113)의 자화 방향과 같거나 역방향이 될 수 있다. 고정층(3113)의 자화 방향을 고정시켜 주기 위하여, 예컨대, 반강자성층(Anti-ferromagnetic layer, 미도시)이 더 구비될 수 있다.
STT-MRAM(3100)의 라이트 동작을 하기 위해서는, 워드 라인(WL0)에 전압을 인가하여 셀 트랜지스터(3120)를 턴-온 시키고, 비트 라인(BL0)과 소스 라인(SL0) 사이에 쓰기 전류를 인가한다. STT-MRAM(3100)의 리드 동작을 하기 위해서는, 워드 라인(WL0)에 턴-온 전압을 인가하여 셀 트랜지스터(3120)를 턴-온시키고, 비트 라인(BL0)으로부터 소스 라인(SL0) 방향으로 읽기 전류를 인가하여, 측정되는 저항 값에 따라 MTJ 셀(3120)에 저장된 데이터를 판별할 수 있다.
도 17은 저항성 메모리 장치의 메모리 셀(4100)을 예시적으로 보여주는 회로도들이다. 도 17을 참조하면, 저항 메모리 장치의 메모리 셀(4100)은 가변 저항 소자(4110, Rv)와 선택 소자(4120, STR)를 포함한다.
가변 저항 소자(4110)는 데이터를 저장하기 위한 가변 저항 물질을 포함한다. 선택 소자(4120)는 워드 라인(WL)의 바이어스에 따라 가변 저항 소자(4110)에 전류를 공급 또는 차단한다. 선택 소자(4120)는 도시된 바와 같이 NMOS 트랜지스터로 구성될 수 있다. 하지만, 선택 소자(4120)는 PMOS 트랜지스터, 또는 다이오드 등과 같은 스위치 소자들 중 어느 하나로 구성될 수 있다.
가변 저항 소자(4110, Rv)는 한 쌍의 전극들(4111, 4113), 그리고 전극들 사이에 형성되는 데이터 저장막(4112)을 포함한다. 데이터 저장막(4112)은 쌍극성(Bipolar) 저항 기억 재료 또는 단극성(Unipolar) 저항 기억 재료로 형성될 것이다. 쌍극성 저항 기억 재료는 펄스의 극성에 의하여 셋이나 리셋 상태로 프로그램된다. 단극성 저항 기억 재료는 동일한 극성의 펄스에 의해서도 셋이나 리셋 상태로 프로그램될 수 있다. 단극성 저항 기억 재료에는, NiOx나 TiOx와 같은 단일의 천이 금속의 산화물(Metal Oxide) 등이 포함된다. 쌍극성 저항 기억 재료에는 페로브스카이트(Perovskite) 계열의 물질들이 포함될 수 있다.
이상에서 불휘발성 메모리를 구성하는 메모리 셀의 예로 STT-MRAM과 RRAM이 간단히 소개되었다. 하지만, 본 발명의 불휘발성 메모리를 구성하는 메모리 셀은 여기에 국한되지 않음은 잘 이해될 것이다. 즉, 불휘발성 메모리의 메모리 셀은 플래시 메모리, PRAM, MRAM, FRAM 중 어느 하나의 형태로 제공될 수 있을 것이다.
도 18은 본 발명에 따른 불휘발성 메모리 모듈이 적용된 서버 시스템을 예시적으로 보여주는 도면이다. 도 18을 참조하면, 서버 시스템(5000)은 복수의 서버 랙들(5100)을 포함할 수 있다. 복수의 서버 랙들(5100) 각각은 복수의 불휘발성 메모리 모듈들(5200)을 포함할 수 있다. 복수의 불휘발성 메모리 모듈들(5200)은 복수의 서버 랙들(5100) 각각에 포함된 프로세서들과 직접적으로 연결될 수 있다. 예를 들어, 복수의 불휘발성 메모리 모듈들(5200) 듀얼 인-라인 메모리 모듈의 형태를 갖고, 프로세서와 전기적으로 연결된 DIMM 소켓에 장착되어 프로세서와 서로 통신할 수 있다. 예시적으로, 복수의 불휘발성 메모리 모듈들(5200)은 서버 시스템(5000)의 스토리지로서 사용될 수 있다. 예시적으로, 복수의 불휘발성 메모리 모듈들(5200)은 도 2, 도, 9, 그리고 도 12를 참조하여 설명된 불휘발성 메모리 모듈(100, 200, 300)이거나 또는 동작 방법을 기반으로 동작할 수 있다.
도 19는 본 발명에 따른 불휘발성 메모리 모듈이 적용된 사용자 시스템을 예시적으로 보여주는 블록도이다. 도 19를 참조하면, 사용자 시스템(6000)은 프로세서(6001) 및 복수의 메모리들(6110~6140)을 포함할 수 있다.
프로세서(6001)는 메모리 컨트롤러(6002)를 포함할 수 있다. 메모리 컨트롤러(6002)는 버스(6003)를 통해 복수의 메모리들(6110~6140)과 통신할 수 있다. 예시적으로, 버스(6003)는 복수의 메모리들(6110~6140) 각각과 연결된 전용 버스들 또는 복수의 메모리들(6110~6140)과 공유되는 공용 버스를 포함할 수 있다. 예시적으로, 버스(6003)는 도 1 내지 도 17을 참조하여 설명된, 데이터 라인(DQ), 메모리 데이터 라인(MDQ), 태그 데이터 라인(TDQ) 중 적어도 하나를 포함할 수 있다.
예시적으로, 복수의 메모리들(6110~6140) 중 적어도 일부는 도 1 내지 도 17을 참조하여 설명된 불휘발성 메모리 모듈이거나 또는 도 1 내지 도 17을 참조하여 설명된 동작 방법을 기반으로 동작할 수 있다.
또는, 복수의 메모리 모듈들(6110~6140) 중 적어도 일부는 불휘발성 메모리를 포함하고, 나머지 일부는 휘발성 메모리를 포함할 수 있다. 휘발성 메모리를 포함하는 메모리 모듈은 불휘발성 메모리를 포함하는 메모리 모듈의 캐시 메모리로서 사용될 수 있다. 즉, 도 1 내지 도 17을 참조하여 설명된 바와 같이, 복수의 메모리 모듈들(6110~6140) 중 일부는 사용자 시스템(6000)의 메인 메모리로써 사용되고, 나머지는 캐시 메모리로써 사용될 수 있다. 캐시 메모리로써 사용되는 메모리들은 도 1 내지 도 17을 참조하여 설명된 휘발성 메모리이거나 또는 도 1 내지 도 17을 참조하여 설명된 휘발성 메모리와 같이 동작할 수 있다.
예시적으로, 메모리 컨트롤러(6002)는 도 1 내지 도 17을 참조하여 설명된 모듈 컨트롤러 또는 제어기이거나 또는, 도 1 내지 도 17을 참조하여 설명된 모듈 컨트롤러 또는 제어기와 같이 동작할 수 있다.
본 발명의 상세한 설명에서는 구체적인 실시 예들에 관하여 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능하다. 그러므로 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.
10 : 사용자 시스템
100, 200, 300 : 불휘발성 메모리 모듈
101 : 프로세서
110, 210, 310 : 모듈 컨트롤러(모듈 컨트롤러)
120, 220, 320 : 이종 메모리 장치
121, 221, 321 : 휘발성 메모리
122, 222, 322 : NVM 컨트롤러
123, 223, 323 : 불휘발성 메모리
130, 230, 330 : DB
140, 240, 340 : 직렬 프레즌스 검출 칩(SPD)
CA : 모듈 커맨드/어드레스
CA_v : VM 커맨드/어드레스
CA_n : NVM 커맨드/어드레스
TAG : 태그
DQ : 데이터 라인
TDQ : 태그 데이터 라인
MDQ : 메모리 데이터 라인

Claims (20)

  1. 불휘발성 메모리;
    상기 불휘발성 메모리의 캐시 메모리로 동작하는 휘발성 메모리; 그리고
    외부 장치로부터의 읽기 커맨드 및 어드레스에 응답하여 상기 휘발성 메모리에 저장된 데이터를 상기 외부 장치로 출력하고, 상기 데이터에 동기하여 상기 데이터의 유효성 여부 또는 상기 어드레스에 대응하는 트랜잭션 아이디를 출력하는 모듈 컨트롤러를 포함하되,
    상기 유효성 여부 및 상기 트랜잭션 아이디는 동일한 신호 라인으로 출력되는 불휘발성 메모리 모듈.
  2. 제 1 항에 있어서,
    상기 휘발성 메모리와 데이터 라인을 공유하고, 상기 불휘발성 메모리를 제어하도록 구성되는 불휘발성 메모리 컨트롤러를 더 포함하는 불휘발성 메모리 모듈.
  3. 제 2 항에 있어서,
    상기 모듈 컨트롤러 또는 상기 불휘발성 메모리 컨트롤러는 상기 어드레스와 상기 휘발성 메모리에 저장된 태그를 참조하여 상기 어드레스에 대응하는 데이터의 캐시 히트 또는 캐시 미스 여부를 판단하는 불휘발성 메모리 모듈.
  4. 제 1 항에 있어서,
    상기 모듈 컨트롤러는 상기 어드레스에 대한 캐시 체크의 결과에 따라 상기 유효성 여부를 결정하는 불휘발성 메모리 모듈.
  5. 제 4 항에 있어서,
    상기 캐시 체크의 결과가 캐시 히트로 판단되면, 상기 모듈 컨트롤러는 상기 데이터가 유효한 데이터임을 지시하는 값으로 상기 유효성 여부를 출력하는 불휘발성 메모리 모듈.
  6. 제 4 항에 있어서,
    상기 캐시 체크의 결과가 캐시 미스로 판단되면, 상기 모듈 컨트롤러는 상기 데이터가 무효한 데이터임을 지시하는 값으로 상기 유효성 여부를 출력하고, 상기 트랜잭션 아이디를 출력하는 불휘발성 메모리 모듈.
  7. 제 6 항에 있어서,
    상기 모듈 컨트롤러는 캐시 미스로 판단된 복수의 데이터에 대해서는 단조 증가하는 트랜잭션 아이디들을 각각 할당하는 불휘발성 메모리 모듈.
  8. 제 1 항에 있어서,
    상기 모듈 컨트롤러는 상기 어드레스에 대한 캐시 체크의 결과에 따라 상기 어드레스에 대응하는 데이터의 준비 여부를 지시하는 메시지 정보를 출력하되, 상기 메시지 정보는 상기 데이터에 대해 비동기적으로 출력되는 불휘발성 메모리 모듈.
  9. 제 8 항에 있어서,
    상기 메시지 정보는 상기 유효성 여부 및 상기 트랜잭션 아이디와는 다른 신호 라인을 통해서 출력되는 불휘발성 메모리 모듈.
  10. 제 9 항에 있어서,
    상기 메시지 정보는 상기 불휘발성 메모리로부터 상기 휘발성 메모리로 캐시된 데이터에 대응하는 트랜잭션 아이디를 포함하는 불휘발성 메모리 모듈.
  11. 제 1 항에 있어서,
    상기 모듈 컨트롤러는 상기 어드레스에 대응하는 태그 정보를 포함하는 캐시 정보를 상기 데이터에 동기하여 출력하는 불휘발성 메모리 모듈.
  12. 휘발성 메모리 장치와 불휘발성 메모리 장치를 포함하는 메모리 모듈의 동작 방법에 있어서:
    외부로부터 읽기 명령어 및 어드레스를 수신하는 단계;
    상기 어드레스에 대응하는 데이터가 상기 휘발성 메모리에 캐시되었는지를 검출하기 위해 상기 어드레스와 상기 휘발성 메모리에 저장된 태그를 비교하는 단계;
    상기 데이터를 상기 메모리 모듈의 외부로 출력하는 단계; 그리고
    상기 캐시 여부에 따라 상기 데이터의 유효성 또는 상기 어드레스에 대응하는 트랜잭션 아이디를 상기 데이터에 동기하여 출력하는 단계를 포함하되,
    상기 유효성 또는 상기 트랜잭션 아이디는 상기 데이터와는 다른 신호 라인을 통해서 출력되는 동작 방법.
  13. 제 12 항에 있어서,
    상기 캐시 여부가 캐시 히트인 경우, 상기 트랜잭션 아이디 없이 상기 데이터가 유효한 데이터임을 지시하는 값으로 상기 유효성이 출력되는 동작 방법.
  14. 제 12 항에 있어서,
    상기 캐시 여부가 캐시 미스인 경우, 상기 유효성은 상기 데이터가 무효한 데이터임을 지시하는 값으로 출력되고, 상기 트랜잭션 아이디가 출력되는 동작 방법.
  15. 제 14 항에 있어서,
    캐시 미스에 대응하는 데이터를 상기 휘발성 메모리로 패치한 이후에 상기 어드레스에 대응하는 데이터의 준비 여부를 지시하는 메시지 정보를 출력하는 단계를 더 포함하는 동작 방법.
  16. 제 15 항에 있어서,
    상기 메시지 정보는 상기 데이터에 비동기적으로 출력되는 동작 방법.
  17. 제 15 항에 있어서,
    상기 메시지 정보는 상기 데이터에 대응하는 트랜잭션 아이디를 포함하는 동작 방법.
  18. 제 15 항에 있어서,
    상기 메시지 정보의 출력 이후에 상기 외부로부터 상기 데이터에 대한 추가 읽기 명령어 및 어드레스를 수신하는 단계를 더 포함하는 동작 방법.
  19. 제 12 항에 있어서,
    상기 데이터에 동기하여 상기 휘발성 메모리의 태그 또는 더티 여부를 포함하는 캐시 정보를 출력하는 단계를 더 포함하는 동작 방법.
  20. 제 1 메모리 장치;
    상기 제 1 메모리 장치보다 접근 속도가 느린 제 2 메모리 장치; 그리고
    외부로부터의 읽기 커맨드 및 어드레스에 응답하여 상기 제 1 메모리 장치의 접근 속도에 기반하여 데이터를 출력하고, 상기 데이터에 동기하여 상기 데이터의 유효성 여부 또는 상기 어드레스에 대응하는 트랜잭션 아이디를 출력하는 메모리 컨트롤러를 포함하되,
    상기 유효성 여부 및 상기 트랜잭션 아이디는 동일한 신호 라인으로 출력되는 메모리 모듈.
KR1020160008214A 2016-01-14 2016-01-22 이종의 메모리 장치들을 포함하는 메모리 모듈 및 그것의 동작 방법 KR20170085918A (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
TW105138162A TW201740278A (zh) 2016-01-14 2016-11-22 用於存取異質記憶體的方法及含異質記憶體的記憶體模組
CN201710019237.8A CN107066392A (zh) 2016-01-14 2017-01-11 用于存取异质存储器的方法及含异质存储器的存储器模块
US15/403,730 US20170206165A1 (en) 2016-01-14 2017-01-11 Method for accessing heterogeneous memories and memory module including heterogeneous memories
DE102017100584.6A DE102017100584A1 (de) 2016-01-14 2017-01-13 Verfahren zum Zugreifen auf heterogene Speicher und Speichermodul, welches heterogene Speicher aufweist
US16/150,366 US20190034344A1 (en) 2016-01-14 2018-10-03 Method for accessing heterogeneous memories and memory module including heterogeneous memories

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201662278610P 2016-01-14 2016-01-14
US62/278,610 2016-01-14

Publications (1)

Publication Number Publication Date
KR20170085918A true KR20170085918A (ko) 2017-07-25

Family

ID=59426743

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160008214A KR20170085918A (ko) 2016-01-14 2016-01-22 이종의 메모리 장치들을 포함하는 메모리 모듈 및 그것의 동작 방법

Country Status (1)

Country Link
KR (1) KR20170085918A (ko)

Similar Documents

Publication Publication Date Title
US11614866B2 (en) Nonvolatile memory device and operation method thereof
US10649894B2 (en) Nonvolatile memory module and operation method thereof
US20190034344A1 (en) Method for accessing heterogeneous memories and memory module including heterogeneous memories
US10203909B2 (en) Nonvolatile memory modules comprising volatile memory devices and nonvolatile memory devices
JP5847940B2 (ja) 半導体装置
KR20190120966A (ko) 저장 장치 및 그 동작 방법
US11361803B2 (en) Memory device and operating method of the memory device
CN114373498A (zh) 页缓冲器、包括该页缓冲器的存储器装置及其操作方法
KR102513903B1 (ko) 불휘발성 메모리 모듈 및 메모리 시스템
KR102475547B1 (ko) 불휘발성 메모리 모듈 및 그것의 동작 방법
KR102538246B1 (ko) 불휘발성 메모리 모듈
KR102548574B1 (ko) 불휘발성 메모리 모듈
KR20160144574A (ko) 불휘발성 메모리 모듈 및 그것의 데이터 쓰기 방법
KR20170085918A (ko) 이종의 메모리 장치들을 포함하는 메모리 모듈 및 그것의 동작 방법
US11462285B2 (en) Memory device and method of operating the memory device
US11282570B2 (en) Storage device and method of operating the same
KR102513913B1 (ko) 불휘발성 메모리 모듈 및 메모리 시스템
CN112527189B (zh) 存储器装置及其操作方法
TW201740278A (zh) 用於存取異質記憶體的方法及含異質記憶體的記憶體模組
KR20160144556A (ko) 불휘발성 메모리 모듈
KR20170085923A (ko) 이종의 메모리들을 액세스하는 방법 및 이종의 메모리들을 포함하는 메모리 모듈
KR20160144562A (ko) 불휘발성 메모리 모듈 및 그것의 동작 방법
CN112527189A (zh) 存储器装置及其操作方法
KR20170001858A (ko) 불휘발성 메모리 모듈 및 그것의 동작 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application