[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

KR102583266B1 - 스토리지 모듈, 스토리지 모듈의 동작 방법, 및 스토리지 모듈을 제어하는 호스트의 동작 방법 - Google Patents

스토리지 모듈, 스토리지 모듈의 동작 방법, 및 스토리지 모듈을 제어하는 호스트의 동작 방법 Download PDF

Info

Publication number
KR102583266B1
KR102583266B1 KR1020180127261A KR20180127261A KR102583266B1 KR 102583266 B1 KR102583266 B1 KR 102583266B1 KR 1020180127261 A KR1020180127261 A KR 1020180127261A KR 20180127261 A KR20180127261 A KR 20180127261A KR 102583266 B1 KR102583266 B1 KR 102583266B1
Authority
KR
South Korea
Prior art keywords
refresh
storage module
target data
reference time
host
Prior art date
Application number
KR1020180127261A
Other languages
English (en)
Other versions
KR20200047814A (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 KR1020180127261A priority Critical patent/KR102583266B1/ko
Priority to US16/386,645 priority patent/US10884655B2/en
Priority to CN201910952640.5A priority patent/CN111090387B/zh
Publication of KR20200047814A publication Critical patent/KR20200047814A/ko
Application granted granted Critical
Publication of KR102583266B1 publication Critical patent/KR102583266B1/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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • 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/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Dram (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)

Abstract

본 발명의 실시 예에 따른 스토리지 모듈은 DRAM(Dynamic Random Access Memory) 장치, 불휘발성 메모리 장치, 및 고속 버퍼 메모리 장치를 포함한다. 스토리지 모듈의 동작 방법은 외부 장치가 페이지 폴트 모드로 진입한 경우, 불휘발성 메모리 장치에 저장된 목표 데이터를 고속 버퍼 메모리 장치로 복사하는 목표 데이터 준비 동작을 수행하는 단계, 외부 장치로부터 제1 리프레쉬 커맨드를 수신하는 단계, 및 제1 리프레쉬 커맨드에 응답하여, 제1 리프레쉬 기준 시간 동안 DRAM 장치에 대한 제1 리프레쉬 동작 및 고속 버퍼 메모리 장치에 복사된 목표 데이터를 DRAM 장치로 이동시키는 목표 데이터 마이그레이션 동작을 수행하는 단계를 포함한다.

Description

스토리지 모듈, 스토리지 모듈의 동작 방법, 및 스토리지 모듈을 제어하는 호스트의 동작 방법{STORAGE MODULE, OPERATION METHOD OF STORAGE MODULE, AND OPERATION METHOD OF HOST CONTROLLING STORAGE MODULE}
본 발명은 반도체 메모리에 관한 것으로, 더욱 상세하게는 스토리지 모듈, 스토리지 모듈의 동작 방법, 및 스토리지 모듈을 제어하는 호스트의 동작 방법에 관한 것이다.
반도체 메모리는 SRAM, DRAM 등과 같이 전원 공급이 차단되면 저장하고 있던 데이터가 소멸되는 휘발성 메모리 장치 및 플래시 메모리 장치, PRAM, MRAM, RRAM, FRAM 등과 같이 전원 공급이 차단되어도 저장하고 있던 데이터를 유지하는 불휘발성 메모리 장치로 구분된다.
최근에는, 플래시 메모리와 같은 불휘발성 메모리를 사용한 NVDIMM(Nonvolatile Dual In-line Memory Module)과 같은 장치들이 개발되고 있다. NVDIMM은 컴퓨팅 시스템의 프로세서와 직접적으로 연결된 DIMM 소켓에 연결되기 때문에, 빠른 동작 속도를 제공할 수 있다. 그러나, NVDIMM에서 사용되는 불휘발성 메모리는 프로세서 및 메모리 모듈 사이의 인터페이스 속도와 비교하여 상대적으로 느린 동작 속도를 갖기 때문에, 불휘발성 메모리에 저장된 데이터를 액세스하는데 지연 시간이 증가하는 문제점이 있다.
본 발명의 목적은 향상된 성능을 갖는 스토리지 모듈, 스토리지 모듈의 동작 방법, 및 스토리지 모듈을 제어하는 호스트의 동작 방법을 제공하는데 있다.
본 발명의 실시 예에 따른 스토리지 모듈은 DRAM(Dynamic Random Access Memory) 장치, 불휘발성 메모리 장치, 및 고속 버퍼 메모리 장치를 포함한다. 상기 스토리지 모듈의 동작 방법은: 외부 장치가 페이지 폴트 모드로 진입한 경우, 상기 불휘발성 메모리 장치에 저장된 목표 데이터를 상기 고속 버퍼 메모리 장치로 복사하는 목표 데이터 준비 동작을 수행하는 단계; 상기 외부 장치로부터 제1 리프레쉬 커맨드를 수신하는 단계; 및 상기 제1 리프레쉬 커맨드에 응답하여, 제1 리프레쉬 기준 시간 동안 상기 DRAM 장치에 대한 제1 리프레쉬 동작 및 상기 고속 버퍼 메모리 장치에 복사된 상기 목표 데이터를 상기 DRAM 장치로 이동시키는 목표 데이터 마이그레이션 동작을 수행하는 단계를 포함한다.
본 발명의 실시 예에 따른 스토리지 모듈은 제1 인터페이스를 통해 외부 장치와 통신하도록 구성된 DRAM(Dynamic Random Access Memory) 장치; 불휘발성 메모리 장치; 고속 버퍼 메모리 장치; 및 상기 제1 인터페이스를 공유하도록 구성되고, 상기 외부 장치가 페이지 폴트 모드로 진입한 경우, 상기 불휘발성 메모리 장치로부터 상기 고속 버퍼 메모리 장치로 목표 데이터를 복사하는 목표 데이터 준비 동작을 수행하도록 구성된 컨트롤러를 포함한다. 상기 페이지 폴트 모드로 진입한 상기 외부 장치로부터의 제1 리프레쉬 커맨드에 응답하여, 상기 DRAM 장치는 리프레쉬 동작을 수행하고, 상기 컨트롤러는 상기 고속 버퍼 메모리 장치에 복사된 상기 목표 데이터를 상기 DRAM 장치로 이동시키는 목표 데이터 마이그레이션 동작을 수행하도록 더 구성된다. 상기 리프레쉬 동작 및 상기 목표 데이터 마이그레이션 동작은 제1 리프레쉬 기준 시간 동안 수행되고, 상기 제1 리프레쉬 기준 시간은 상기 DRAM 장치가 상기 리프레쉬 동작을 수행하는데 요구되는 최소 시간보다 길다.
본 발명의 실시 예에 따른 DRAM(Dynamic Random Access Memory) 장치 및 불휘발성 메모리 장치를 포함하는 스토리지 모듈을 제어하도록 구성된 호스트의 동작 방법은: 상기 DRAM 장치에 목표 데이터가 존재하지 않는 경우, 페이지 폴트 모드로 진입하는 단계; 상기 페이지 폴트 모드로 진입한 것에 응답하여, 리프레쉬 기준 시간을 제1 기준 시간에서 상기 제1 기준 시간보다 긴 제2 기준 시간으로 변경하는 단계; 상기 스토리지 모듈로 리프레쉬 커맨드를 전송하는 단계; 및 상기 리프레쉬 커맨드를 전송한 시점으로부터 상기 제2 기준 시간이 경과한 이후에, 상기 스토리지 모듈로 유효 커맨드를 제공하는 단계를 포함한다.
본 발명에 따르면, 호스트가 페이지 폴트 모드시, 스토리지 모듈은 불휘발성 메모리 장치에서 고속 버퍼 메모리 장치로 목표 데이터를 이동시키는 목표 데이터 준비 동작을 수행하고, 이후에 호스트로부터의 리프레쉬 커맨드에 응답하여, 리프레쉬 기준 시간 동안 고속 버퍼 메모리 장치의 목표 데이터를 DRAM 장치로 이동시킬 수 있다. 이 경우, 목표 데이터 준비 동작은 독립적으로 수행되고, 목표 데이터 마이그레이션 동작은 리프레쉬 기준 시간 동안 수행되기 때문에, 전체적인 성능 저하없이 불휘발성 메모리 장치로부터 DRAM 장치로 데이터를 이동시킬 수 있다. 따라서 향상된 성능을 갖는 스토리지 모듈, 스토리지 모듈의 동작 방법, 및 스토리지 모듈을 제어하는 호스트의 동작 방법이 제공된다.
도 1은 본 발명의 실시 예에 따른 컴퓨팅 시스템을 예시적으로 보여주는 블록도이다.
도 2는 도 1의 스토리지 모듈의 동작을 보여주는 순서도이다.
도 3a 및 도 3b는 도 2의 순서도에 따른 동작을 설명하기 위한 도면들이다.
도 4는 도 1의 호스트의 동작을 보여주는 순서도이다.
도 5는 도 4의 순서도에 따른 동작을 설명하기 위한 도면이다.
도 6a 및 도 6b는 도 4의 순서도에 따른 리프레쉬 기준 시간들을 설명하기 위한 타이밍도들이다.
도 7은 도 1의 호스트의 동작을 보여주는 순서도이다.
도 8은 도 1의 스토리지 모듈의 동작을 보여주는 순서도이다.
도 9는 도 1의 스토리지 모듈의 동작을 보여주는 순서도이다.
도 10은 도 9의 순서도에 따른 동작을 설명하기 위한 도면이다.
도 11은 본 발명의 실시 예에 따른 컴퓨팅 시스템을 예시적으로 보여주는 블록도이다.
도 12는 본 발명의 실시 예에 따른 스토리지 모듈을 예시적으로 보여주는 도면이다.
도 13은 본 발명의 실시 예에 따른 스토리지 모듈이 적용된 사용자 시스템을 예시적으로 보여주는 블록도이다.
도 14는 본 발명의 실시 예에 따른 스토리지 모듈이 적용된 사용자 시스템을 예시적으로 보여주는 블록도이다.
이하에서, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다.
도 1은 본 발명의 실시 예에 따른 컴퓨팅 시스템을 예시적으로 보여주는 블록도이다. 도 1을 참조하면, 컴퓨팅 시스템(100)은 호스트(101) 및 스토리지 모듈(110)을 포함할 수 있다. 예시적인 실시 예에서, 컴퓨팅 시스템(100)은 휴대용 통신 단말기, PDA, PMP, 스마트폰, 또는 웨어러블 장치 형태 또는 개인용 컴퓨터, 서버, 워크스테이션, 노트북 등과 같은 컴퓨팅 시스템의 형태로 구현될 수 있다.
호스트(101)는 스토리지 모듈(110)에 데이터를 저장하거나 또는 스토리지 모듈(110)에 저장된 데이터를 읽을 수 있다. 예시적인 실시 예에서, 호스트(101)는 컴퓨팅 시스템(100)에 포함된 중앙 처리 유닛(CPU; central processing unit), 또는 애플리케이션 프로세서(AP; Application Processor)일 수 있다.
스토리지 모듈(110)은 메모리 장치(111), 컨트롤러(112), 불휘발성 메모리 장치(113), 및 고속 버퍼 메모리(114)를 포함할 수 있다. 메모리 장치(111)는 호스트(101)의 제어에 따라 데이터를 저장하거나 또는 저장된 데이터를 출력할 수 있다.
컨트롤러(112)는 스토리지 모듈(110)에 포함된 메모리 장치(111), 불휘발성 메모리 장치(113), 및 고속 버퍼 메모리(114)를 제어할 수 있다. 예를 들어, 컨트롤러(112)는 불휘발성 메모리 장치(113)에 저장된 데이터를 고속 버퍼 메모리(114)로 이동/복사하거나 또는 고속 버퍼 메모리(114)에 저장된 데이터를 불휘발성 메모리 장치(113)로 이동/복사할 수 있다. 또는 컨트롤러(112)는 고속 버퍼 메모리(114)에 저장된 데이터를 메모리 장치(111)로 이동/복사하거나 또는 메모리 장치(111)에 저장된 데이터를 고속 버퍼 메모리(114)로 이동/복사할 수 있다.
불휘발성 메모리 장치(113)는 컨트롤러(112)의 제어에 따라 동작할 수 있다. 예를 들어, 불휘발성 메모리 장치(113)는, 컨트롤러(112)의 제어에 따라, 저장된 데이터를 고속 버퍼 메모리(114)로 제공하거나 또는 고속 버퍼 메모리(114)로부터의 데이터를 저장하도록 구성될 수 있다. 예시적인 실시 예에서, 불휘발성 메모리 장치(113)는 낸드 플래시 메모리일 수 있다. 그러나 본 발명의 범위가 이에 한정되는 것은 아니며, 불휘발성 메모리 장치는, ReRAM, PRAM, MRAM 등과 같은 다양한 불휘발성 메모리 소자들로 구현될 수 있다.
고속 버퍼 메모리(114)는 컨트롤러(112)의 제어에 따라 동작할 수 있다. 예를 들어, 고속 버퍼 메모리(114)는, 컨트롤러(112)의 제어에 따라, 저장된 데이터를 메모리 장치(111) 또는 불휘발성 메모리 장치(113)로 제공하거나, 또는 메모리 장치(111) 또는 불휘발성 메모리 장치(113)로부터 제공된 데이터를 저장하도록 구성될 수 있다.
이하에서, 설명의 편의를 위하여, 설명의 편의를 위하여, 메모리 장치(111)는 DRAM(Dynamic Random Access Memory) 장치이고, 고속 버퍼 메모리(114)는 SRAM 장치인 것으로 가정한다.
그러나 본 발명의 범위가 이에 한정되는 것은 아니다. 예를 들어, 메모리 장치(111) 및 고속 버퍼 메모리(114)는 불휘발성 메모리 장치(113)보다 빠른 동작 속도를 갖는 메모리 장치들 중 어느 하나로 구현될 수 있다. 고속 버퍼 메모리(114)는 메모리 장치(111) 및 불휘발성 메모리 장치(113)보다 빠른 동작 속도를 갖는 메모리 장치들 중 어느 하나로 구현될 수 있다. 즉, 메모리 장치(111)는 불휘발성 메모리 장치(113)보다 빠른 동작 속도를 갖고, 고속 버퍼 메모리(114)는 메모리 장치(111)보다 빠른 동작 속도를 가질 수 있다. 예시적인 실시 예에서, 불휘발성 메모리 장치(113)는 메모리 장치(111)보다 큰 저장 공간을 가질 수 있다.
이하에서, 스토리지 모듈(110)은 호스트(101)와 DDR(Double Data Rate) 인터페이스를 기반으로 통신하는 것으로 가정한다. 그러나 본 발명의 범위가 이에 한정되는 것은 아니며, 스토리지 모듈(110) 및 호스트(101) 사이의 인터페이스는 USB(Universal Serial Bus), MMC(multimedia card), PCI(peripheral component interconnection), PCI-E(PCI-express), ATA(Advanced Technology Attachment), SATA(Serial-ATA), PATA(Parallel-ATA), SCSI(small computer small interface), ESDI(enhanced small disk interface), IDE(Integrated Drive Electronics), MIPI(Mobile Industry Processor Interface), NVM-e(Nonvolatile Memory-express), UFS(Universal Flash Storage) 등과 같은 다양한 인터페이스들 중 적어도 하나를 포함할 수 있다.
본 발명의 실시 예에 따른 스토리지 모듈(110)은 페이지 폴트 모드에서, 호스트(101)로부터의 리프레쉬 커맨드에 응답하여 데이터 이동 동작을 수행할 수 있다. 예를 들어, 호스트(101)는 상술된 바와 같이, DDR 인터페이스를 기반으로 DRAM 장치(111)를 액세스할 수 있다. 이 때, 호스트(101)가 의도한 데이터(이하에서, "목표 데이터"라 칭함.)가 DRAM 장치(111)에 존재하지 않는 경우, 호스트(101)는 페이지 폴트 모드로 진입할 수 있다. 페이지 폴트 모드로 진입한 호스트(101)는 스토리지 모듈(110)로 리프레쉬 커맨드를 전송할 수 있다.
스토리지 모듈(110)의 컨트롤러(112)는 호스트(101) 및 DRAM 장치(111) 사이에서 송수신되는 신호를 확인하여 호스트(101)가 페이지 폴트 모드로 진입하였는지 판별할 수 있다. 예를 들어, 컨트롤러(112)에 포함된 데이터 관리자(112a)는 호스트(101) 및 DRAM 장치(111) 사이에서 송수신되는 신호를 확인하고, 목표 데이터가 DRAM 장치(111)에 존재하는지 판별할 수 있다.
목표 데이터가 DRAM 장치(111)에 존재하지 않는 경우, 데이터 관리자(112a)는 호스트(101)가 페이지 폴트 모드로 진입한 것으로 판별할 수 있다. 이 경우, 데이터 관리자(112a)는 불휘발성 메모리 장치(113)에 저장된 목표 데이터를 SRAM 장치(114)로 이동/복사할 수 있다. 예시적인 실시 예에서, SRAM 장치로의 데이터 이동/복사 동작은, 컨트롤러(112)의 제어에 따라, 불휘발성 메모리 장치(113) 및 SRAM 장치(114) 사이에서 수행되므로, 상술된 데이터 이동/복사 동작이 수행되는 동안, 호스트(101) 및 DRAM 장치(111)는 다른 동작을 정상적으로 수행할 수 있다.
이후에, 스토리지 모듈(110)은 호스트(101)로부터 리프레쉬 커맨드를 수신할 수 있다. 스토리지 모듈(110)은 리프레쉬 커맨드에 응답하여, DRAM 장치(111)에 대한 리프레쉬 동작을 수행하고, SRAM 장치(114)로부터 DRAM 장치(111)로의 목표 데이터 이동/복사 동작을 수행할 수 있다. 예를 들어, 컨트롤러(112)는 호스트(101)로부터의 리프레쉬 커맨드를 검출하도록 구성된 리프레쉬 커맨드 검출기(112b)를 포함할 수 있다. 리프레쉬 커맨드 검출기(112b)의 검출 결과에 응답하여, 컨트롤러(112)는 SRAM 장치(114)로부터 DRAM 장치(111)로의 목표 데이터 이동/복사 동작을 수행할 수 있다. 예시적인 실시 예에서, 상술된 리프레쉬 동작 및 데이터 이동/복사 동작은 리프레쉬 기준 시간(예를 들어, tRFC) 동안 수행될 수 있다.
상술된 바와 같이, 본 발명의 실시 예에 따른 스토리지 모듈(110)은 호스트(101)와 스토리지 모듈(110) 사이의 인터페이스를 기반으로 호스트(101)가 페이지 폴트 모드로 진입하였는지 판별하고, 호스트(101)가 페이지 폴트 모드로 진입한 경우, 불휘발성 메모리 장치(113)로부터 SRAM 장치(114)로 데이터를 이동/복사할 수 있다. 이후에, 스토리지 모듈(110)은 호스트(101)로부터의 리프레쉬 커맨드에 응답하여, 리프레쉬 기준 시간 동안, DRAM 장치(111)에 대한 리프레쉬 동작 및 SRAM 장치(114)로부터 DRAM 장치(111)로의 목표 데이터 이동/복사 동작을 수행할 수 있다.
도 2는 도 1의 스토리지 모듈의 동작을 보여주는 순서도이다. 이하에서, 설명의 편의를 위하여, 페이지 폴트 모드에서, 불휘발성 메모리 장치(113)로부터 SRAM 장치(114)로 데이터를 이동/복사하는 동작은 "목표 데이터 준비 동작(operation for preparing target data)"이라 칭하고, SRAM 장치(114)로부터 DRAM 장치로 데이터를 이동/복사하는 동작은 "목표 데이터 마이그레이션 동작(operation for migrating target data)"라 칭한다. 그러나 상술된 용어들은 단순히 본 발명의 실시 예를 설명하기 위한 예시적인 것이며, 본 발명의 범위가 이에 한정되는 것은 아니다.
도 1 및 도 2를 참조하면, S110 단계에서, 스토리지 모듈(110)은 정상 동작을 수행할 수 있다. 예를 들어, 스토리지 모듈(110)은 호스트(101)의 제어에 따라, 다양한 동작들(예를 들어, 읽기 동작, 쓰기 동작, 리프레쉬 동작 등)을 수행할 수 있다.
S120 단계에서, 스토리지 모듈(110)은 호스트(101)가 페이지 폴트 모드인지 판별할 수 있다. 예를 들어, 호스트(101)가 의도한 데이터(즉, 목표 데이터)가 DRAM 장치(111)에 존재하지 않는 경우, 호스트(101)는 페이지 폴트 모드로 진입할 수 있다. 스토리지 모듈(110)은 호스트(101)와 스토리지 모듈(110) 사이의 인터페이스를 기반으로 호스트(101)가 페이지 폴트 모드로 진입하였는지 판별할 수 있다.
예시적인 실시 예에서, 호스트(101)는 DRAM 장치(111)에 저장된 페이지 테이블(미도시)을 기반으로 목표 데이터가 DRAM 장치(111)에 존재하는지 판별할 수 있다. 스토리지 모듈(110)의 컨트롤러(112)는 상술된 인터페이스를 기반으로 목표 데이터를 인지할 수 있으며, DRAM 장치(111)에 저장된 페이지 테이블(미도시)을 기반으로 목표 데이터가 DRAM 장치(111)에 존재하는지 판별할 수 있다. DRAM 장치(111)에 목표 데이터가 존재하지 않는 경우, 호스트(101)는 페이지 폴트 모드로 진입하고, 스토리지 모듈(110)은 호스트(101)가 페이지 폴트 모드로 진입한 것으로 판별할 수 있다.
호스트(101)가 페이지 폴트 모드로 진입하지 않은 경우, 스토리지 모듈(110)은, 호스트(101)의 제어에 따라, 정상 동작을 수행할 수 있다.
호스트(101)가 페이지 폴트 모드로 진입한 경우, S130 단계에서, 스토리지 모듈(130)은 목표 데이터 준비 동작을 수행할 수 있다. 예를 들어, DRAM 장치(111)에 목표 데이터가 존재하지 않는 경우, 스토리지 모듈(110)의 컨트롤러(112)는 불휘발성 메모리 장치(113)에서 목표 데이터를 검색할 수 있다. 컨트롤러(112)는 검색된 목표 데이터를 불휘발성 메모리 장치(113)로부터 SRAM 장치(114)로 이동/복사할 수 있다.
S140 단계에서, 스토리지 모듈(110)은 호스트(101)로부터 리프레쉬 커맨드(REF)를 수신할 수 있다. 예를 들어, 페이지 폴트 모드로 진입한 호스트(101)는 스토리지 모듈(110)로 리프레쉬 커맨드(REF)를 전송할 수 있다.
S150 단계에서, 스토리지 모듈(110)은 리프레쉬 커맨드(REF)에 응답하여, 리프레쉬 기준 시간(tRFC) 동안, DRAM 장치(111)에 대한 리프레쉬 동작 및 목표 데이터 마이그레이션 동작을 수행할 수 있다. 예를 들어, 호스트(101)로부터 리프레쉬 커맨드(REF)가 수신된 시점으로부터 리프레쉬 기준 시간(tRFC)이 경과할 때까지, 호스트(101)로부터 다른 커맨드 또는 신호가 제공되지 않을 것이다. 이 시간(즉, 리프레쉬 기준 시간(tRFC)) 동안, 스토리지 모듈(110)은 DRAM 장치(110)에 대한 리프레쉬 동작을 수행하고, SRAM 장치(114)로부터 DRAM 장치(111)로 목표 데이터를 이동/복사하는 목표 데이터 마이그레이션 동작을 수행할 수 있다.
예시적인 실시 예에서, DRAM 장치(111)에 대하여, 리프레쉬 동작을 수행하는데 요구되는 최소 시간(즉, 최소 리프레쉬 기준 시간(tRFC(min))이 미리 정해질 수 있다. 최소 리프레쉬 기준 시간(tRFC(min))은 DRAM 장치(111)의 용량, 구조, 성능 조건에 따라 결정될 수 있다. 예시적인 실시 예에서, 상술된 리프레쉬 동작 및 목표 데이터 마이그레이션 동작이 수행되는 리프레쉬 기준 시간(tRFC)은 상술된 최소 리프레쉬 기준 시간(tRFC(min))보다 길 수 있다.
예시적인 실시 예에서, 스토리지 모듈(110)은 목표 데이터 마이그레이션 동작을 수행한 이후에, DRAM 장치(111)에 저장된 페이지 테이블(미도시)을 갱신할 수 있다. 예를 들어, 스토리지 모듈(110)은 목표 데이터가 DRAM 장치(111)에 저장되었음을 가리키는 정보를 기반으로 페이지 테이블을 갱신할 수 있다. 이후에, 호스트(101)는 갱신된 페이지 테이블을 기반으로 DRAM 장치(111)에 저장된 목표 데이터를 액세스할 수 있다.
종래의 컴퓨팅 시스템에서, DRAM 장치에 목표 데이터가 존재하지 않는 경우, 호스트는 페이지 폴트 모드로 진입한 이후에, 다른 저장 장치로부터 목표 데이터를 가져오는 동작을 수행한다. 이 때, 다른 저장 장치로부터 데이터를 가져오기 위한 별도의 커맨드들이 필요하고, 상술된 동작을 수행하는데 많은 시간 지연이 발생한다.
반면에, 본 발명에 따른 스토리지 모듈은 호스트(101)가 페이지 폴트 모드로 진입하는지 판별하고, 판별 결과에 따라 목표 데이터 준비 동작을 수행하고, 호스트(101)로부터의 리프레쉬 커맨드(REF)에 응답하여, 목표 데이터 마이그레이션 동작을 수행한다. 이 경우, 목표 데이터 마이그레이션 동작은 DDR 인터페이스에서 필수 커맨드인 리프레쉬 커맨드(REF)에 응답하여 수행되기 때문에, 별도의 커맨드가 요구되지 않는다. 또한, 데이터 마이그레이션 동작은 고속 버퍼 메모리인 SRAM 장치(114)로부터 DRAM 장치로 데이터를 이동시키는 것이므로, 불휘발성 메모리 장치(113)에서 직접 DRAM 장치(111)로 데이터를 이동시키는 것과 비교하여 동작 속도가 향상될 수 있다. 또한, 목표 데이터 준비 동작은, 컨트롤러(112)의 제어에 따라, 불휘발성 메모리 장치(113) 및 SRAM 장치(114) 사이에서 수행되기 때문에, 목표 데이터 준비 동작과 무관하게 호스트(101) 및 DRAM 장치(111) 사이의 동작이 정상적으로 수행될 수 있다. 다시 말해서, 목표 데이터 준비 동작은 호스트(101) 및 DRAM 장치(111) 사이의 동작(예를 들어, 읽기 동작, 쓰기 동작, 리프레쉬 동작 등)과 독립적으로 수행될 수 있다. 즉, 목표 데이터 준비 동작에 의해 외부에서 확인되는 지연 시간은 발생하지 않을 수 있다. 따라서, 데이터 이동에 필요한 추가적인 시간 지연이 감소될 수 있다. 결과적으로, 본 발명의 실시 예들에 따르면, 향상된 성능을 갖는 스토리지 모듈이 제공된다.
도 3a 및 도 3b는 도 2의 순서도에 따른 동작을 설명하기 위한 도면들이다. 설명의 편의를 위하여, 본 발명의 실시 예를 설명하는데 불필요한 구성들 및 설명들은 생략된다.
도 1, 도 3a, 및 도 3b를 참조하면, 호스트(101) 및 스토리지 모듈(110)은 정상 동작을 수행할 수 있다[1]. 예를 들어, 스토리지 모듈(110)의 DRAM 장치(111)는 호스트(101)의 제어에 따라 읽기 동작, 쓰기 동작, 리프레쉬 동작 등과 같은 일반적인 동작을 수행할 수 있다.
호스트(101) 및 스토리지 모듈(110)이 정상 동작을 수행하는 도중에, 호스트(101)가 페이지 폴트 모드로 진입할 수 있다. 이 때, 컨트롤러(112)의 데이터 관리자(112a)는 호스트(101)가 페이지 폴트 모드로 진입한 것을 판별할 수 있다[2]. 예를 들어, 컨트롤러(112)는 호스트(101) 및 DRAM 장치(111) 사이의 인터페이스를 공유할 수 있다. 즉, 컨트롤러(112)는 호스트(101) 및 DRAM 장치(111) 사이에서 송수신되는 신호 또는 정보를 감지함으로써, 호스트(101)가 페이지 폴트 모드로 진입하였는지 판별할 수 있다.
호스트(101)가 페이지 폴트 모드로 진입한 경우, 컨트롤러(112)는 목표 데이터 준비 동작을 수행할 수 있다[3]. 예를 들어, 컨트롤러(112)는 불휘발성 메모리 장치(113)에 저장된 목표 데이터(TD)를 SRAM 장치(114)로 이동/복사할 수 있다.
이후에, 도 3b에 도시된 바와 같이, 호스트(101)는 리프레쉬 커맨드(REF)를 스토리지 모듈(110)로 전송할 수 있다[4]. 스토리지 모듈(110)의 DRAM 장치(111)는 호스트(101)로부터의 리프레쉬 커맨드(REF)에 응답하여, 리프레쉬 동작을 수행할 수 있다. [5]
컨트롤러(112)는 호스트(101)로부터의 리프레쉬 커맨드(REF)에 응답하여, 목표 데이터 마이그레이션 동작을 수행할 수 있다[6]. 예를 들어, 컨트롤러(112)는 리프레쉬 커맨드 검출기(112b)를 포함할 수 있다. 리프레쉬 커맨드 검출기(112b)의 검출 결과에 응답하여, 컨트롤러(112)는 SRAM 장치(114)에 저장된 목표 데이터(TD)를 DRAM 장치(111)로 이동시킬 수 있다.
예시적인 실시 예에서, 도 3b에 도시된 동작들([5], [6])은 리프레쉬 기준 시간(tRFC) 동안 수행될 수 있다. 예시적인 실시 예에서, 리프레쉬 기준 시간(tRFC) 동안, 호스트(101)는 스토리지 모듈(110)로 별도의 커맨드 또는 신호를 제공하지 않을 수 있다.
비록, 도 3b에서, 리프레쉬 커맨드(REF)에 응답하여, DRAM 장치(111)에 대한 리프레쉬 동작이 수행되고, 이후에 목표 데이터 마이그레이션 동작이 수행되는 것으로 도시되어 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다. 예를 들어, 리프레쉬 커맨드(REF)에 응답하여, 목표 데이터 마이그레이션 동작이 먼저 수행된 이후에, DRAM 장치(111)에 대한 리프레쉬 동작이 수행될 수 있거나 또는 목표 데이터 마이그레이션 동작 및 리프레쉬 동작이 병렬적으로 수행될 수 있다.
예시적인 실시 예에서, 목표 데이터 준비 동작은 제1 데이터 단위를 기반으로 수행되고, 목표 데이터 마이그레이션 동작은 제1 데이터 단위보다 작거나 같은 제2 데이터 단위를 기반으로 수행될 수 있다. 예를 들어, 목표 데이터 준비 동작은 불휘발성 메모리 장치(113)의 데이터 입출력 단위(예를 들어, 페이지 단위, 또는 4KB 단위)로 수행될 수 있다. 예를 들어, 불휘발성 메모리 장치(113)는 페이지 단위(예를 들어, 4KB) 단위로 데이터를 입출력하도록 구성될 수 있다. 컨트롤러(112)는 불휘발성 메모리 장치(113)로부터 페이지 단위로 목표 데이터를 SRAM 장치(114)로 이동/복사할 수 있다. 예시적인 실시 예에서, SRAM 장치(114)는 불휘발성 메모리 장치(113)의 페이지 단위보다 큰 저장 용량을 갖도록 구성될 수 있다.
예시적인 실시 예에서, 목표 데이터 마이그레이션 동작은 페이지 단위 또는 미리 정해진 데이터 단위로 수행될 수 있다. 예를 들어, 컨트롤러(112)는 목표 데이터 마이그레이션 동작을 수행하여, SRAM 장치(114)에 저장된 목표 데이터를 페이지 단위로 DRAM 장치(111)로 이동/복사할 수 있다.
또는 컨트롤러(112)는 목표 데이터 마이그레이션 동작을 수행하여, SRAM 장치(114)에 저장된 목표 데이터를 미리 정해진 데이터 단위로 DRAM 장치(111)로 이동/복사할 수 있다. 미리 정해진 데이터 단위는 페이지 단위보다 작을 수 있다. 이 경우, 컨트롤러(112)는, 호스트(101)로부터의 복수의 리프레쉬 커맨드들(REF)에 응답하여, 복수 회의 목표 데이터 마이그레이션 동작들을 수행함으로써, 목표 데이터를 SRAM 장치(114)로부터 DRAM 장치(111)로 이동/복사할 수 있다.
예시적인 실시 예에서, 비록 도면에 도시되지는 않았으나, DRAM 장치(111)의 리프레쉬 동작 및 불휘발성 메모리 장치(113) 및 SRAM 장치(114) 사이의 목표 데이터 준비 동작은 서로 병렬적으로 수행될 수 있다. 목표 데이터 준비 동작이 불휘발성 메모리 장치(113) 및 SRAM 장치(114) 사이에서 수행되기 때문에, 데이터 준비 동작과 무관하게, DRAM 장치(111)는 리프레쉬 동작을 정상적으로 수행할 수 있다.
상술된 바와 같이, DRAM 장치(111)에 목표 데이터가 존재하지 않는 경우, DRAM 장치(111)에서 필수적으로 요구되는 리프레쉬 커맨드(REF) 및 필수적으로 요구되는 리프레쉬 기준 시간(tRFC)을 사용함으로써, 성능 저하 또는 시간 지연 없이 불휘발성 메모리 장치(113)로부터 DRAM 장치(111)로 데이터를 마이그레이션할 수 있다. 따라서 향상된 성능을 갖는 스토리지 모듈이 제공된다.
도 4는 도 1의 호스트의 동작을 보여주는 순서도이다. 설명의 편의를 위하여, 본 발명의 실시 예를 설명하는데 불필요한 구성 요소들 또는 설명들은 생략된다. 도 1 및 도 4를 참조하면, S101 단계에서, 호스트(101)는 정상 동작을 수행할 수 있다. 예를 들어, 호스트(101) 및 스토리지 모듈(110)(특히, DRAM 장치(111))는 DDR 인터페이스를 통해 정상 동작(예를 들어, 읽기 동작, 쓰기 동작, 리프레쉬 동작 등)을 수행할 수 있다.
S102 단계에서, 호스트(101)는 페이지 폴트 모드인지 판별할 수 있다. 예를 들어, 호스트(101)는 페이지 테이블을 기반으로, DRAM 장치(111)에 목표 데이터가 저장되었는지 판별할 수 있다. DRAM 장치(111)에 목표 데이터가 저장된 경우, 호스트(101)는 정상 동작을 수행하고, DRAM 장치(111)에 목표 데이터가 포함되지 않은 경우, 호스트(101)는 페이지 폴트 모드로 진입할 수 있다. 예시적인 실시 예에서, 스토리지 모듈(110)은 호스트(101)의 페이지 폴트 모드를 감지하고, 감지된 결과에 응답하여, 목표 데이터 준비 동작을 수행할 수 있다.
호스트(101)가 페이지 폴트 모드로 진입한 경우, S103 단계에서, 호스트(101)는 리프레쉬 기준 시간(tRFC)을 제1 기준 시간(tRFC1)에서 제2 기준 시간(tRFC2)로 조정할 수 있다. 예를 들어, 호스트(101)가 정상 동작을 수행하는 경우, 호스트(101)는 리프레쉬 커맨드(REF)를 스토리지 모듈(110)로 전송한 시점으로부터 제1 기준 시간(tREF1)이 경과할 때까지 다른 커맨드 또는 신호를 스토리지 모듈(110)로 제공하지 않을 수 있다. 즉, 스토리지 모듈(110)은 제1 기준 시간(tRFC1) 동안 리프레쉬 동작을 수행할 수 있다.
반면에, 호스트(101)가 페이지 폴트 모드로 진입한 경우, 호스트(101)는 리프레쉬 기준 시간(tRFC)을 제1 기준 시간(tRFC1)보다 긴 제2 기준 시간(tRFC2)으로 조정할 수 있다. 리프레쉬 기준 시간(tRFC)을 길게 설정하는 것은 스토리지 모듈(110)에서 리프레쉬 동작 및 목표 데이터 마이그레이션 동작을 수행하는 시간을 확보하기 위함이다. 예시적인 실시 예에서, 리프레쉬 기준 시간(tRFC)에 대한 변경은 호스트(101)의 커널(kernel) 영역의 레지스터 값 설정을 통해 수행될 수 있다.
이후에, S104 단계에서, 호스트(101)는 리프레쉬 커맨드(REF)를 스토리지 모듈(110)로 전송할 수 있다. S105 단계에서, 호스트(101)는 제2 기준 시간(tREF2)이 경과했는지 판별할 수 있다. 예를 들어, 앞서 설명된 바와 같이, 호스트(101)는 리프레쉬 커맨드(REF)를 전송한 시점으로부터 제2 기준 시간(tRFC2)이 경과하기 전까지 스토리지 모듈(110)로 특정 커맨드 또는 신호를 제공하지 않을 것이다. 이는 스토리지 모듈(110)에서 리프레쉬 동작 및 목표 데이터 마이그레이션 동작을 수행하는 시간을 보장하기 위함이다. 즉, 스토리지 모듈(110)는 리프레쉬 커맨드(REF)에 응답하여, DRAM 장치(111)에 대한 리프레쉬 동작 및 목표 데이터 마이그레이션 동작을 수행할 수 있다. 다시 말해서, 리프레쉬 동작 및 목표 데이터 마이그레이션 동작은 제2 기준 시간(tRFC2) 동안 수행될 수 있다.
제2 기준 시간(tRFC2)이 경과한 이후에, S106 단계에서, 호스트(101)는 리프레쉬 기준 시간(tRFC)을 제2 기준 시간(tRFC2)에서 제1 기준 시간(tRFC1)으로 조정할 수 있다. 이후에, S107 단계에서, 호스트(101)는 정상 동작을 수행할 수 있다. 예를 들어, 호스트(101)는 스토리지 모듈(110) 또는 DRAM 장치(111)로 유효 커맨드를 제공할 수 있다. 또는, 호스트(101)는 제1 기준 시간(tRFC1)을 기반으로 리프레쉬 커맨드(REF)를 스토리지 모듈(110) 또는 DRAM 장치(111)로 제공할 수 있다. 즉, 정상 동작에서, 호스트(101)는 리프레쉬 커맨드(REF)를 스토리지 모듈(110)로 제공하고, 제1 기준 시간(tRFC1)이 경과한 이후에, 다른 유효 커맨드를 스토리지 모듈(110) 또는 DRAM 장치(111)로 제공할 수 있다.
상술된 바와 같이, 본 발명의 실시 예에 따른 호스트(101)는 정상 동작시 프리차지 기준 시간(tRFC)을 제1 기준 시간(tRFC1)으로 설정하고, 페이지 폴트 모드로 진입시, 프리차지 기준 시간(tRFC)을 제1 기준 시간(tRFC1)보다 긴 제2 기준 시간(tRFC2)으로 설정할 수 있다. 즉, 호스트(101)는 동작 모드에 따라 프리차지 기준 시간(tRFC)을 가변시킬 수 있다. 이 경우, 페이지 폴트 모드시, 스토리지 모듈(110)은 리프레쉬 커맨드(REF)에 응답하여, 제2 기준 시간(tRFC2) 동안 리프레쉬 동작 및 목표 데이터 마이그레이션 동작을 수행할 수 있다.
도 5는 도 4의 순서도에 따른 동작을 설명하기 위한 도면이다. 설명의 편의를 위하여, 본 발명의 실시 예를 설명하는데 불필요한 구성 요소들 및 설명들은 생략된다. 또한, 설명의 편의를 위하여, 도 5의 실시 예에 따른 호스트(101)는 페이지 폴트 모드로 진입한 것으로 가정한다.
도 1 및 도 5를 참조하면, 페이지 폴트 모드로 진입한 호스트(101)는 리프레쉬 기준 시간(tRFC)을 조정할 수 있다[1]. 예를 들어, 호스트(101)는 리프레쉬 기준 시간(tRFC)에 대한 레지스터(101a)를 포함할 수 있다. 레지스터(101a)는 호스트(101)의 커널 영역에 포함될 수 있다. 호스트(101)는 레지스터(101a)의 값을 조정함으로써, 리프레쉬 기준 시간(tRFC)을 제1 기준 시간(tRFC1)에서 제2 기준 시간(tRFC2)으로 조정할 수 있다. 이후에, 호스트(101)는 스토리지 모듈(101)로 리프레쉬 커맨드(REF)를 전송하고[2], DRAM 장치(111)는 리프레쉬 동작을 수행하고[3], 컨트롤러(112)는 목표 데이터 마이그레이션 동작을 수행할 수 있다[4]. 상술된 동작들([2], [3], [4])은 앞서 설명되었으므로, 이에 대한 상세한 설명은 생략된다.
예시적인 실시 예에서, 리프레쉬 커맨드(REF)가 전송되고, 제2 기준 시간(tRFC2)이 경과한 경우, 호스트(101)는 레지스터(101a)의 값을 제2 기준 시간(tRFC2)에서 제1 기준 시간(tRFC1)으로 조정할 수 있다. 이후에, 호스트(101)는 제1 기준 시간(tRFC1)을 기반으로 정상 동작을 수행할 수 있다.
도 6a 및 도 6b는 도 4의 순서도에 따른 리프레쉬 기준 시간들을 설명하기 위한 타이밍도들이다. 설명의 편의를 위하여, 본 발명의 실시 예를 설명하는데 불필요한 구성 요소들 및 설명들은 생략된다.
먼저, 도 1 및 도 6a를 참조하면, 정상 동작시, 호스트(101)는 제1 기준 시간(tRFC1)을 기반으로 동작할 수 있다. 예를 들어, 도 5a에 도시된 바와 같이, 호스트(101)는 스토리지 모듈(110)로 리프레쉬 커맨드(REF)를 전송할 수 있다. 스토리지 모듈(110)(특히, DRAM 장치(111))은 리프레쉬 커맨드(REF)에 응답하여 리프레쉬 동작(Refresh Operation)을 수행할 수 있다.
정상 동작시, 호스트(101)는 리프레쉬 커맨드(REF)를 전송한 시점으로부터 제1 기준 시간(tRFC1)이 경과한 이후에, 유효한 커맨드(VA)(예를 들어, 활성 커맨드(ACT))를 스토리지 모듈(110)로 전송할 수 있다. 즉, 스토리지 모듈(110)는 제1 기준 시간(tRFC) 동안 리프레쉬 동작을 수행할 수 있다.
반면에, 도 6b에 도시된 바와 같이, 페이지 폴트 모드시, 호스트(101)는 리프레쉬 기준 시간(tRFC)을 제1 기준 시간(tRFC1)보다 긴 제2 기준 시간(tRFC2)으로 변경할 수 있다. 이 경우, 호스트(101)는 리프레쉬 커맨드(REF)를 전송한 시점으로부터 제2 기준 시간(tRFC2)이 경과한 이후에, 유효 커맨드(VA)를 스토리지 모듈(110)로 전송할 수 있다. 도 6b에 도시된 바와 같이, 스토리지 모듈(110)은 리프레쉬 커맨드(REF)에 응답하여, 제2 기준 시간(tRFC2) 동안 리프레쉬 동작 및 목표 데이터 마이그레이션 동작을 수행할 수 있다.
도 7은 도 1의 호스트의 동작을 보여주는 순서도이다. 설명의 편의를 위하여, 앞서 설명된 구성 요소들 및 이에 대한 상세한 설명은 생략된다. 도 1 및 도 7을 참조하면, 호스트(101)는 S201 단계 내지 S205 단계의 동작들을 수행할 수 있다. S201 단계 내지 S205 단계의 동작들은 도 4의 S101 단계 내지 S105 단계의 동작들과 유사하므로, 이에 대한 상세한 설명은 생략된다.
리프레쉬 커맨드(REF)가 전송된 이후에, 제2 기준 시간(tRFC2)이 경과한 경우, S206 단계에서, 호스트(101)는 정상 동작을 수행할 수 있다. 즉, 호스트(101)는 스토리지 모듈(110)에 대한 읽기 동작, 쓰기 동작 등과 같은 일반적인 동작을 수행할 수 있다.
예시적인 실시 예에서, S206 단계의 정상 동작 도중에, 호스트(101)가 페이지 폴트 모드로 진입하는 경우, 호스트(101)는 스토리지 모듈(110)로 리프레쉬 커맨드(REF)를 전송하고, 스토리지 모듈(110)은 리프레쉬 커맨드(REF)에 응답하여 리프레쉬 동작 및 목표 데이터 마이그레이션 동작을 수행할 수 있다. 즉, S206 단계의 정상 동작 도중에, 리프레쉬 기준 시간(tRFC)은 제2 기준 시간(tRFC2)일 것이다.
S207 단계에서, 호스트(101)는 스토리지 모듈(110)로의 액세스에 대한 히트율(hit ratio)이 제1 값(V1) 이상인지 판별할 수 있다. 예를 들어, 호스트(101)는 정상 동작을 수행하는 도중에, 의도한 데이터(즉, 목표 데이터)가 DRAM 장치(111)에 존재하는 경우(즉, 히트인 경우) 및 존재하지 않는 경우(즉, 미스인 경우)를 카운팅하여, 전체적인 스토리지 모듈(110)에 대한 히트율을 관리할 수 있다.
예시적인 실시 예에서, 히트율이 제1 값(V1)보다 낮다는 것은, 호스트(101)가 페이지 폴트 모드로 진입하는 빈도가 높음을 의미하고, 히트율이 제1 값(V1)보다 높다는 것은 호스트(101)가 페이지 폴트 모드로 진입하는 빈도가 낮음을 의미한다.
즉, 히트율이 제1 값(V1)보다 낮은 경우, 호스트(101)는 리프레쉬 기준 시간(tRFC)을 변경하지 않고(즉, 리프레쉬 기준 시간(tRFC)을 제2 기준 시간(tRFC2)으로 유지하고), 정상 동작을 수행한다. 히트율이 제1 값(V1)보다 높은 경우, S208 단계에서, 호스트(101)는 리프레쉬 기준 시간(tRFC)을 제2 기준 시간(tRFC2)에서, 제1 기준 시간(tRFC1)으로 조정할 수 있다.
상술된 바와 같이, 본 발명에 따른 호스트(101)는 페이지 폴트 모드 진입시, 리프레쉬 기준 시간(tRFC)을 변경(즉, tRFC를 증가)할 수 있다. 호스트(101)는 이후의 정상 동작에서, 히트율이 제1 값 이상인 경우, 리프레쉬 기준 시간(tRFC)을 복원(즉, tRFC를 감소)할 수 있다. 따라서, 페이지 폴트 모드로의 진입이 빈번하게 발생하지 않는 경우, 리프레쉬 기준 시간(tRFC)을 감소시킴으로써, 스토리지 모듈(110)의 전체적인 성능 하락을 방지할 수 있다.
예시적인 실시 예에서, 목표 데이터에 대한 히트율과 같은 파라미터는 다양하게 변형될 수 있다. 예를 들어, 목표 데이터에 대한 히트율은 페이지 폴트 없이 정상 동작들이 수행된 횟수, 페이지 폴트 모드로 진입한 이후의 경과 시간, 특정 시간 동안 페이지 폴트 모드로 진입한 횟수 등의 조건들로 변형될 수 있다. 그러나 본 발명의 범위가 이에 한정되는 것은 아니다.
도 8은 도 1의 스토리지 모듈의 동작을 보여주는 순서도이다. 설명의 편의를 위하여, 본 발명의 실시 예를 설명하는데 불필요한 구성 요소들은 생략된다. 도 1 및 도 8을 참조하면, S210 단계에서, 스토리지 모듈(110)은 데이터의 속성을 판별할 수 있다. 예를 들어, 컨트롤러(110)의 데이터 관리자(112a)는 DRAM 장치(111)에 저장된 데이터 및 불휘발성 메모리 장치(113)에 저장된 데이터의 속성들을 판별할 수 있다. 데이터의 속성은 각 데이터가 호스트(101)로부터 액세스되는 빈도, 각 데이터의 크기, 각 데이터의 종류(예를 들어, 파일 종류), 각 데이터의 유지 시간 등과 같은 다양한 조건들을 기반으로 판별될 수 있다.
S215 단계에서, 스토리지 모듈(110)은 데이터 이동이 필요한지 판별할 수 있다. 예를 들어, 불휘발성 메모리 장치(113)에 저장된 데이터 중 DRAM 장치(111)에 저장되어 있지 않고, 호스트(101)로부터의 액세스 빈도가 높은 데이터 또는 액세스될 확률이 높은 데이터는 DRAM 장치(111)로 이동하는 것이 필요할 수 있다. 즉, 호스트(101)로부터 액세스 빈도가 높거나 액세스될 확률이 높은 데이터를 DRAM 장치(111)로 이동시킴으로써, 페이지 폴트 빈도가 낮아지게 되고, 이로 인하여, 스토리지 모듈(110)에 대한 전체적인 성능이 향상될 수 있다.
또는 DRAM 장치(111)에 저장된 데이터 중 호스트(101)로부터 액세스되지 않는 데이터를 불휘발성 메모리 장치(113)로 이동시킴으로써, DRAM 장치(111)의 가용 용량이 확보될 수 있다. 즉, 데이터 속성에 따라 데이터를 DRAM 장치(111) 및 불휘발성 메모리 장치(113) 중 어느 하나에 저장함으로써, 스토리지 장치(110)의 전체적인 성능이 향상될 수 있다.
데이터 이동이 필요한 경우, S220 단계에서, 스토리지 모듈(110)은 데이터 이동이 DRAM 장치(110)로부터 불휘발성 메모리 장치(113)로의 이동인지 판별할 수 있다. 예를 들어, DRAM 장치(110)에 저장된 데이터 중 액세스 빈도가 낮은 데이터(예를 들어, 콜드 데이터)를 DRAM 장치(110)로부터 불휘발성 메모리 장치(113)로의 이동하는 것이 필요할 수 있다.
그렇지 않은 경우에는, 불휘발성 메모리 장치(113)에 저장된 데이터 중 액세스 빈도가 높은 데이터(또는 액세스될 확률이 높은 데이터)(예를 들어, 핫 데이터)를 불휘발성 메모리 장치(113)로부터 DRAM 장치(111)로 이동하는 것이 필요할 수 있다.
불휘발성 메모리 장치(113)로부터 DRAM 장치(111)로의 데이터 이동이 필요한 경우(즉, S220 단계의 "No"), S225 단계에서, 스토리지 모듈(110)은 불휘발성 메모리 장치(113)로부터 SRAM 장치(114)로의 데이터 준비 동작을 수행할 수 있다. 예를 들어, 컨트롤러(112)는 불휘발성 메모리 장치(113)에 저장된 데이터 중 이동이 필요한 데이터(예를 들어, 핫 데이터)를 SRAM 장치(114)로 이동/복사할 수 있다.
예시적인 실시 예에서, S225 단계의 데이터 준비 동작은, 컨트롤러(113)의 제어에 따라, 불휘발성 메모리 장치(113) 및 SRAM 장치(114) 사이에서 수행되므로, S225 단계의 데이터 준비 동작과 무관하게, DRAM 장치(111)는 호스트(101)의 제어에 따라 정상 동작을 수행할 수 있다.
이후에, S230 단계에서, 스토리지 모듈(110)은 호스트(101)로부터 리프레쉬 커맨드(REF)를 수신할 수 있다.
S235 단계에서, 스토리지 모듈(110)은, 리프레쉬 커맨드(REF)에 응답하여, 리프레쉬 기준 시간(tRFC) 동안, 리프레쉬 동작 및 데이터 마이그레이션 동작을 수행할 수 있다. 예를 들어, DRAM 장치(111)는 리프레쉬 커맨드(REF)에 응답하여 리프레쉬 동작을 수행할 수 있다. 컨트롤러(112)는 리프레쉬 커맨드(REF)에 응답하여, SRAM 장치(114)에 저장된 데이터(즉, 핫 데이터)를 DRAM 장치(111)로 이동/복사할 수 있다. 예시적인 실시 예에서, 상술된 리프레쉬 동작 및 데이터 마이그레이션 동작은 리프레쉬 기준 시간(tRFC) 동안 수행될 수 있다.
DRAM 장치(111)로부터 불휘발성 메모리 장치(113)로의 데이터 이동이 필요한 경우(즉, S220 단계의 "Yes"), S245 단계에서, 스토리지 모듈(110)은 호스트(101)로부터 리프레쉬 커맨드(REF)를 수신할 수 있다.
S250 단계에서, 스토리지 모듈(110)은, 리프레쉬 커맨드(REF)에 응답하여, 리프레쉬 기준 시간(tRFC) 동안, 리프레쉬 동작 및 데이터 준비 동작을 수행할 수 있다. 예를 들어, DRAM 장치(111)는, 리프레쉬 커맨드(REF)에 응답하여, 리프레쉬 동작을 수행할 수 있다. 컨트롤러(112)는, 리프레쉬 커맨드(REF)에 응답하여, DRAM 장치(111)에 저장된 데이터 중 액세스 빈도가 낮은 데이터 또는 액세스될 확률이 낮은 데이터(예를 들어, 콜드 데이터)를 SRAM 장치(114)에 이동/복사할 수 있다. 예시적인 실시 예에서, 리프레쉬 동작 및 데이터 준비 동작은 리프레쉬 기준 시간(tRFC) 동안 수행될 수 있다.
이후에, S260 단계에서, 스토리지 모듈(110)은 SRAM 장치(114)로부터 불휘발성 메모리 장치(113)로의 데이터 마이그레이션 동작을 수행할 수 있다. 예를 들어, 스토리지 모듈(110)은 SRAM 장치(114)에 저장된 데이터(예를 들어, 콜드 데이터)를 불휘발성 메모리 장치(113)로 이동/복사할 수 있다. 예시적인 실시 예에서, S260 단계의 데이터 마이그레이션 동작은, 컨트롤러(112)의 제어에 따라 SRAM 장치(114) 및 불휘발성 메모리 장치(113) 사이에서 수행되므로, S260 단계의 데이터 마이그레이션 동작과 무관하게, DRAM 장치(111)는, 호스트(101)의 제어에 따라 정상 동작을 수행할 수 있다.
예시적인 실시 예에서, S235 단계 또는 S260 단계의 동작을 수행한 이후에, 스토리지 모듈(110)은 페이지 테이블을 갱신할 수 있다. 예를 들어, 스토리지 모듈은 특정 데이터가 DRAM 장치(111) 및 불휘발성 메모리 장치(113) 사이에서 이동한 정보를 기반으로 페이지 테이블을 갱신할 수 있다. 갱신된 페이지 테이블을 기반으로, 호스트(101)는 특정 데이터가 DRAM 장치(111)에 존재하는지를 판별할 수 있다.
도 9는 도 1의 스토리지 모듈의 동작을 보여주는 순서도이다. 도 10은 도 9의 순서도에 따른 동작을 설명하기 위한 도면이다. 설명의 편의를 위하여, 본 발명의 실시 예를 설명하는데 불필요한 구성 요소들 및 이에 대한 상세한 설명은 생략된다.
도 1, 도 9, 및 도 10을 참조하면, S310 단계 내지 S330 단계의 동작들을 수행할 수 있다. S310 단계 내지 S330 단계의 동작들은 도 2의 S110 단계 내지 S130 단계의 동작들과 유사하므로, 이에 대한 상세한 설명은 생략된다.
S340 단계에서, 스토리지 모듈(110)은 호스트(101)로부터 연속적인 리프레쉬 커맨드들(continuous REF commands)을 수신할 수 있다. 예를 들어, 도 10에 도시된 바와 같이, 호스트(101)는 리프레쉬 주기(tREFI) 간격으로, 스토리지 모듈(110)로 리프레쉬 커맨드(REF)를 전송할 수 있다. 리프레쉬 커맨드(REF)들이 전송되는 간격(즉, tREFI) 동안, 호스트(101)는 정상 동작을 위한 다양한 커맨드 또는 신호를 스토리지 모듈(110)(좀 더 상세하게는 DRAM 장치(111))와 주고 받을 수 있다.
호스트(101)가 페이지 폴트 모드로 진입한 경우, 호스트(101)는 리프레쉬 주기(tREFI) 동안, 복수의 리프레쉬 커맨드들(REF)을 스토리지 모듈(110)로 전송할 수 있다. 이 때, 리프레쉬 커맨드들(REF)은 각각 리프레쉬 기준 시간(tRFC) 간격으로 제공될 수 있다.
S350 단계에서, 스토리지 모듈(110)은, 연속적인 리프레쉬 커맨드들(REF)에 응답하여, 복수의 리프레쉬 기준 시간들(tRFCs) 동안 DRAM 장치(111)에 대한 리프레쉬 동작 및 목표 데이터 마이그레이션 동작을 수행할 수 있다. 예를 들어, DRAM 장치(111)는 호스트(111)로부터의 연속적인 리프레쉬 커맨드들(REF) 각각에 응답하여, 리프레쉬 동작을 수행할 수 있다. 컨트롤러(112)는 연속적인 리프레쉬 커맨드들(REF)에 응답하여, 목표 데이터 마이그레이션 동작을 수행할 수 있다. 좀 더 상세한 예로서, 도 10에 도시된 바와 같이, 하나의 리프레쉬 커맨드가 수신된 시점으로부터 리프레쉬 경과 시간(tRFC)이 경과한 직후에 수신된 다른 리프레쉬 커맨드에 응답하여, 컨트롤러(112)는 목표 데이터 마이그레이션 동작을 수행할 수 있다.
상술된 바와 같이, 복수의 리프레쉬 커맨드들(REF)이 리프레쉬 기준 시간(tRFC) 간격으로 연속적으로 수신되는 경우, 호스트(101)로부터 다른 별도의 커맨드 또는 신호가 제공되지 않을 것이다. 즉, 복수의 리프레쉬 커맨드들(REF)이 연속적으로 제공되는 동안, DRAM 장치(111)는 리프레쉬 동작 이외에, 호스트(101)로부터 다른 동작을 요청 받지 않을 것이다. 따라서, DRAM 장치(111)가 리프레쉬 동작을 수행하고, 나머지 시간 동안, 컨트롤러(112)는 목표 데이터 마이그레이션 동작을 수행할 수 있다. 이 경우, 리프레쉬 기준 시간(tRFC)을 증가시키거나 또는 가변하는 것 없이, 목표 데이터 마이그레이션 동작이 정상적으로 수행될 수 있다.
도 11은 본 발명의 실시 예에 따른 컴퓨팅 시스템을 예시적으로 보여주는 블록도이다. 도 11을 참조하면, 컴퓨팅 시스템(1000)은 호스트(1010), 메모리 모듈(1100), 및 스토리지 모듈(1200)을 포함할 수 있다. 호스트(1010)는 제1 채널(CH1)을 통해 메모리 모듈(1100)과 통신할 수 있고, 제2 채널(CH2)을 통해 스토리지 모듈(1200)과 통신할 수 있다. 예시적인 실시 예에서, 제1 및 제2 채널들(CH1, CH2)은 DDR 인터페이스에 기반된 인터페이스 채널일 수 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다.
메모리 모듈(1100)은 호스트(1010)의 제어에 따라 동작할 수 있다. 예시적인 실시 에에서, 메모리 모듈(1100)은 DRAM 장치들을 포함하는 DIMM(Dual In-line Memory Module)일 수 있다.
스토리지 모듈(1200)은 호스트(1010)의 제어에 따라 동작할 수 있다. 예시적인 실시 예에서, 도 11의 스토리지 모듈(1200)은 도 1 내지 도 11을 참조하여 설명된 스토리지 모듈이거나 또는 도 1 내지 도 11을 참조하여 설명된 방법을 기반으로 동작할 수 있다. 예를 들어, 스토리지 모듈(1200)은 DRAM 장치, 컨트롤러, 불휘발성 메모리 장치, 및 SRAM 장치를 포함할 수 있다. 스토리지 모듈(1200)은 호스트(1010)의 모드(즉, 페이지 폴트 모드)에 따라, 불휘발성 메모리 장치로부터 SRAM 장치로 목표 데이터를 이동시키고, 호스트(1010)로부터의 리프레쉬 커맨드(REF)에 응답하여, SRAM 장치로부터 DRAM 장치로 데이터를 이동시킬 수 있다.
예시적인 실시 예에서, 호스트(1010)는 고정된 리프레쉬 커맨드 기준 시간(tRFC)을 사용하여, 메모리 모듈(1100)을 제어할 수 있다. 즉, 호스트(1010)는 메모리 모듈(1100)에 대하여, 특정 값을 갖는 고정된 리프레쉬 커맨드 기준 시간(tRFC)을 사용하여, 메모리 모듈을 제어할 수 있다.
반면에, 호스트(1010)는 스토리지 모듈(1200)에 대하여, 가변 리프레쉬 기준 시간(Variable tRFC)을 사용하여, 메모리 모듈(1100)을 제어할 수 있다. 즉, 호스트(1010)는 제1 리프레쉬 기준 시간(tRFC1)을 사용하여 스토리지 모듈(1200)에 대한 정상 동작을 수행하고, 페이지 폴트 모드시, 제1 리프레쉬 기준 시간(tRFC1)보다 긴 제2 리프레쉬 기준 시간(tRFC2)을 사용하여 스토리지 모듈(1200)을 제어할 수 있다.
예시적인 실시 예에서, 메모리 모듈(1100) 및 스토리지 모듈(1200)은 DIMM과 같은 동일한 폼-팩터를 가질 수 있다. 호스트(1010)는 메모리 모듈(1100) 및 스토리지 모듈(1200)에 각각 포함된 SPD(Serial Presence Detect) 칩으로부터의 정보를 기반으로, 연결된 모듈이 일반적인 메모리 모듈인지 또는 스토리지 모듈인지를 판별하고, 판별 결과에 따라 상술된 바와 같이 각 모듈을 제어할 수 있다.
도 12는 본 발명의 실시 예에 따른 스토리지 모듈을 예시적으로 보여주는 도면이다. 도 12를 참조하면, 스토리지 모듈(2100)은 복수의 불휘발성 메모리 장치들(NVM), 복수의 SRAM 장치들(SRAM), 복수의 DRAM 장치들(DRAM), 컨트롤러(2110), 및 RCD(Register Clock Driver)(2120)를 포함할 수 있다.
RCD(2120)는 외부 장치(예를 들어, 호스트)로부터 커맨드/어드레스(CA) 및 클럭 신호(CK)를 수신하고, 수신된 신호들을 복수의 DRAM 장치들(DRAM) 및 컨트롤러(2110)로 각각 제공할 수 있다.
복수의 DRAM 장치들(DRAM) 각각은 RCD(2120)로부터의 신호에 응답하여, 데이터 라인들(DQ) 및 데이터 스트로브 라인들(DQS)을 통해 외부 장치와 데이터를 주고 받을 수 있다.
복수의 불휘발성 메모리 장치들(NVM)은 컨트롤러(2110)의 제어에 따라 복수의 SRAM 장치들(SRAM)과 각각 데이터를 주고 받을 수 있다. 복수의 SRAM 장치들(SRAM)은 컨트롤러(2110)의 제어에 따라 복수의 불휘발성 메모리 장치들(NVM) 또는 복수의 DRAM 장치들(DRAM)과 각각 데이터를 주고 받을 수 있다.
예시적인 실시 예에서, 컨트롤러(2110)는 도 1 내지 도 11을 참조하여 설명된 컨트롤러일 수 있다. 예를 들어, 컨트롤러(2110)는 외부 장치의 페이지 폴트 모드를 감지하고, 감지 결과에 따라 복수의 불휘발성 메모리 장치들(NVM)로부터 복수의 SRAM 장치들(SRAM)로 목표 데이터를 이동/복사하는 목표 데이터 준비 동작을 수행하고, 외부 장치로부터의 리프레쉬 커맨드에 응답하여, 복수의 SRAM 장치들(SRAM)로부터 복수의 DRAM 장치들(DRAM)로 데이터를 이동/복사하는 목표 데이터 마이그레이션 동작을 수행할 수 있다.
비록 도 12에서, 스토리지 모듈(2100)이 RDIMM(Registered-DIMM)의 형태인 것으로 도시되었으나, 본 발명의 범위가 이에 한정되는 것은 아니다. 스토리지 모듈(2100)은 DIMM, RDIMM, LRDIMM, UDIMM, NVDIMM 과 같은 다양한 형태로 구현될 수 있다.
도 13은 본 발명의 실시 예에 따른 스토리지 모듈이 적용된 사용자 시스템을 예시적으로 보여주는 블록도이다. 사용자 시스템(3000)은 컴퓨터, 휴대용 컴퓨터, UMPC (Ultra Mobile PC), 워크스테이션, 서버 컴퓨터, 넷-북(net-book), PDA, 포터블(portable) 컴퓨터, 웹 타블렛(web tablet), 무선 전화기(wireless phone), 모바일 폰(mobile phone), 스마트폰(smart phone), 디지털 카메라(digital camera), 디지털 음성 녹음기(digital audio recorder), 디지털 음성 재생기(digital audio player), 디지털 영상 녹화기(digital picture recorder), 디지털 영상 재생기(digital picture player), 디지털 동영상 녹화기(digital video recorder), 디지털 동영상 재생기(digital video player), 정보를 무선 환경에서 송수신할 수 있는 장치, 홈 네트워크를 구성하는 다양한 전자 장치들 중 하나를 포함할 수 있다.
사용자 시스템(3000)은 프로세서(3100), 메모리 모듈(3210), 스토리지 모듈(3220), 칩셋(3300), 그래픽 처리 유닛(3400), 입출력 장치(3500), 및 저장 장치(3600)를 포함할 수 있다. 프로세서(3100)는 사용자 시스템(3000)의 제반 동작을 제어할 수 있다. 프로세서(3100)는 사용자 시스템(3000)에서 수행되는 다양한 연산을 수행할 수 있다.
메모리 모듈(3210) 및 스토리지 모듈(3220)은 프로세서(3100)와 직접적으로 연결될 수 있다. 예를 들어, 메모리 모듈(3210) 및 스토리지 모듈(3220)은 듀얼 인-라인 메모리 모듈(DIMM, Dual In-line Memory Module) 형태를 가질 수 있고, 메모리 모듈(3210) 및 스토리지 모듈(3220)은 프로세서(3100)와 직접적으로 연결된 DIMM 소켓에 장착되어 프로세서(3100)와 DDR 인터페이스를 기반으로 통신할 수 있다.
예시적인 실시 예에서, 스토리지 모듈(3220)은 도 1 내지 도 11을 참조하여 설명된 스토리지 모듈이거나 또는 그와 유사한 방식으로 동작할 수 있다. 예시적인 실시 예에서, 프로세서(3100)는 스토리지 모듈(3220)에 대한 리프레쉬 기준 시간(tRFC)을 가변할 수 있다.
칩셋(3300)은 프로세서(3100)와 전기적으로 연결되고, 프로세서(3100)의 제어에 따라 사용자 시스템(3000)의 하드웨어를 제어할 수 있다. 예를 들어, 칩셋(3300)은 주요 버스들을 통해 GPU(3400), 입출력 장치(3500), 및 스토리지 장치(3600) 각각과 연결되고, 주요 버스들에 대한 브릿지 역할을 수행할 수 있다.
GPU(3400)는 사용자 시스템(3000)의 영상 데이터를 출력하기 위한 일련의 연산 동작을 수행할 수 있다. 예시적으로, GPU(3400)는 시스템-온-칩 형태로 프로세서(3100) 내에 실장될 수 있다.
입출력 장치(3500)는 사용자 시스템(3000)으로 데이터 또는 명령어를 입력하거나 또는 외부로 데이터를 출력하는 다양한 장치들을 포함한다. 스토리지 장치(3600)는 사용자 시스템(3000)의 대용량 저장 매체로서 사용될 수 있다. 스토리지 장치(3600)는 하드 디스크 드라이브, SSD, 메모리 카드, 메모리 스틱 등과 같은 대용량 저장 매체들을 포함할 수 있다.
도 14는 본 발명의 실시 예에 따른 스토리지 모듈이 적용된 사용자 시스템을 예시적으로 보여주는 블록도이다. 도 14를 참조하면, 사용자 시스템(4000)은 프로세서(4001) 및 제1 내지 제4 메모리 모듈들(4110~4140)을 포함할 수 있다.
프로세서(4001)는 제1 내지 제4 메모리 모듈들(4110~4140) 각각을 제어하도록 구성된 컨트롤러(4002)를 포함할 수 있다. 예시적인 실시 예에서, 제1 내지 제4 메모리 모듈들(4110~4140) 중 적어도 하나의 메모리 모듈은 도 1 내지 도 12를 참조하여 설명된 스토리지 모듈이거나 또는 그와 유사한 방식으로 동작할 수 있다.
예시적인 실시 예에서, 프로세서(4001)에 포함된 컨트롤러(4002)는 도 1 내지 도 12를 참조하여 설명된 스토리지 모듈의 동작 방법 또는 호스트의 동작 방법을 지원하기 위한 동작을 수행할 수 있다. 예를 들어, 프로세서(4001)의 컨트롤러(4002)는 제1 내지 제4 메모리 모듈들(4110~4140) 중 스토리지 모듈에 대한 리프레쉬 기준 시간(tRFC)을 가변하도록 구성될 수 있다. 또는 컨트롤러(4002)는 제1 내지 제4 메모리 모듈들(4110~4140) 중 스토리지 모듈에 포함된 컨트롤러의 일부 기능을 수행하도록 구성될 수 있다.
예시적인 실시 예에서, 컨트롤러(4002)는 하드웨어, 소프트웨어, 또는 그것들의 조합의 형태로 구현될 수 있다. 컨트롤러(4002)와 관련된 동작들 또는 기능들은 장치 드라이버 형태로 제공될 수 있다.
상술된 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.

Claims (10)

  1. DRAM(Dynamic Random Access Memory) 장치, 불휘발성 메모리 장치, 및 고속 버퍼 메모리 장치를 포함하는 스토리지 모듈의 동작 방법에 있어서,
    외부 장치가 페이지 폴트 모드로 진입한 경우:
    상기 불휘발성 메모리 장치에 저장된 목표 데이터를 상기 고속 버퍼 메모리 장치로 복사하는 목표 데이터 준비 동작을 수행하는 단계;
    상기 외부 장치로부터 제1 리프레쉬 커맨드를 수신하는 단계; 및
    상기 제1 리프레쉬 커맨드에 응답하여, 제1 리프레쉬 기준 시간 동안 상기 DRAM 장치에 대한 제1 리프레쉬 동작 및 상기 고속 버퍼 메모리 장치에 복사된 상기 목표 데이터를 상기 DRAM 장치로 이동시키는 목표 데이터 마이그레이션 동작을 수행하는 단계를 포함하고,
    상기 외부 장치가 상기 페이지 폴트 모드로 진입하지 않은 경우:
    상기 외부 장치로부터 수신된 제2 리프레쉬 커맨드에 응답하여, 상기 DRAM 장치에 대한 제2 리프레쉬 동작을 수행하는 단계; 및
    상기 제2 리프레쉬 커맨드가 수신된 시점으로부터 상기 제1 리프레쉬 기준 시간보다 짧은 제2 리프레쉬 기준 시간이 경과한 이후에, 상기 외부 장치로부터 제1 유효 커맨드를 수신하는 단계를 포함하는 동작 방법.
  2. 제 1 항에 있어서,
    상기 제1 리프레쉬 커맨드가 수신된 시점으로부터 상기 제1 리프레쉬 기준 시간이 경과하기 전까지 상기 외부 장치로부터 신호가 제공되지 않는 동작 방법.
  3. 제 1 항에 있어서,
    상기 제1 리프레쉬 커맨드를 수신한 시점으로부터 상기 제1 리프레쉬 기준 시간이 경과한 이후에 상기 외부 장치로부터 제2 유효 커맨드를 수신하는 단계를 더 포함하는 동작 방법.
  4. 제 1 항에 있어서,
    상기 목표 데이터는 상기 불휘발성 메모리 장치의 입출력 데이터 단위를 기반으로 상기 고속 버퍼 메모리 장치로 복사되는 동작 방법.
  5. 제 1 항에 있어서,
    상기 DRAM 장치에 기 저장된 데이터에 대한 정보를 포함하는 페이지 테이블을 기반으로 상기 외부 장치가 상기 페이지 폴트 모드로 진입하였는지 판별되는 동작 방법.
  6. 제 5 항에 있어서,
    상기 목표 데이터가 상기 DRAM 장치로 이동되었음을 가리키는 정보를 기반으로 상기 페이지 테이블을 갱신하는 단계를 더 포함하는 동작 방법.
  7. 제 1 항에 있어서,
    상기 목표 데이터 준비 동작은 상기 외부 장치 및 상기 DRAM 장치 사이의 동작과 독립적으로 수행되는 동작 방법.
  8. 제 1 항에 있어서,
    상기 고속 버퍼 메모리의 동작 속도는 상기 불휘발성 메모리 장치의 동작 속도보다 빠른 동작 방법.
  9. 스토리지 모듈에 있어서,
    제1 인터페이스를 통해 외부 장치와 통신하고, 상기 외부 장치로부터의 리프레쉬 커맨드에 응답하여 리프레쉬 동작을 수행하도록 구성된 DRAM(dynamic random access memory) 장치;
    불휘발성 메모리 장치;
    고속 버퍼 메모리; 및
    상기 제1 인터페이스와 연결되고, 상기 외부 장치가 페이지 폴트 모드로 진입한 경우, 상기 불휘발성 메모리 장치로부터 상기 고속 버퍼 메모리로 목표 데이터를 복사하는 목표 데이터 준비 동작을 수행하도록 구성된 컨트롤러를 포함하고,
    상기 외부 장치가 페이지 폴트 모드인 경우, 상기 컨트롤러는 리프레쉬 커맨드에 응답하여, 상기 고속 버퍼 메모리로 복사된 상기 목표 데이터를 상기 DRAM 장치로 이동시키는 목표 데이터 마이그레이션 동작을 수행하도록 더 구성되고,
    상기 외부 장치가 페이지 폴트 모드인 경우, 상기 DRAM 장치는 상기 리프레쉬 커맨드가 상기 외부 장치로부터 수신된 시점으로부터 제1 리프레쉬 기준 시간이 경과한 이후에 상기 외부 장치로부터 유효 커맨드를 수신하도록 구성되고,
    상기 외부 장치가 페이지 폴트 모드가 아닌 경우, 상기 DRAM 장치는 상기 리프레쉬 커맨드가 상기 외부 장치로부터 수신된 시점으로부터 제2 리프레쉬 기준 시간이 경과한 이후에 상기 외부 장치로부터 상기 유효 커맨드를 수신하도록 구성되고,
    상기 제1 리프레쉬 기준 시간은 상기 제2 리프레쉬 기준 시간보다 긴 스토리지 모듈.
  10. DRAM(Dynamic Random Access Memory) 장치 및 불휘발성 메모리 장치를 포함하는 스토리지 모듈을 제어하도록 구성된 호스트의 동작 방법에 있어서,
    상기 DRAM 장치에 목표 데이터가 존재하지 않는 경우, 페이지 폴트 모드로 진입하는 단계;
    상기 페이지 폴트 모드로 진입한 것에 응답하여, 리프레쉬 기준 시간을 제1 기준 시간에서 상기 제1 기준 시간보다 긴 제2 기준 시간으로 변경하는 단계;
    상기 스토리지 모듈로 리프레쉬 커맨드를 전송하는 단계; 및
    상기 리프레쉬 커맨드를 전송한 시점으로부터 상기 제2 기준 시간이 경과한 이후에, 상기 스토리지 모듈로 유효 커맨드를 제공하는 단계를 포함하는 동작 방법.



KR1020180127261A 2018-10-24 2018-10-24 스토리지 모듈, 스토리지 모듈의 동작 방법, 및 스토리지 모듈을 제어하는 호스트의 동작 방법 KR102583266B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020180127261A KR102583266B1 (ko) 2018-10-24 2018-10-24 스토리지 모듈, 스토리지 모듈의 동작 방법, 및 스토리지 모듈을 제어하는 호스트의 동작 방법
US16/386,645 US10884655B2 (en) 2018-10-24 2019-04-17 Storage modules, methods of operating a storage module, and methods of operating a host controlling a storage module
CN201910952640.5A CN111090387B (zh) 2018-10-24 2019-10-09 存储模块、操作其的方法以及操作控制其的主机的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180127261A KR102583266B1 (ko) 2018-10-24 2018-10-24 스토리지 모듈, 스토리지 모듈의 동작 방법, 및 스토리지 모듈을 제어하는 호스트의 동작 방법

Publications (2)

Publication Number Publication Date
KR20200047814A KR20200047814A (ko) 2020-05-08
KR102583266B1 true KR102583266B1 (ko) 2023-09-27

Family

ID=70325293

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180127261A KR102583266B1 (ko) 2018-10-24 2018-10-24 스토리지 모듈, 스토리지 모듈의 동작 방법, 및 스토리지 모듈을 제어하는 호스트의 동작 방법

Country Status (3)

Country Link
US (1) US10884655B2 (ko)
KR (1) KR102583266B1 (ko)
CN (1) CN111090387B (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11301403B2 (en) 2019-03-01 2022-04-12 Micron Technology, Inc. Command bus in memory
KR20220091794A (ko) 2020-12-24 2022-07-01 삼성전자주식회사 반도체 장치 및 이를 포함하는 전자 장치

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6937503B2 (en) * 2003-07-14 2005-08-30 Zmos Technology, Inc. 1t1c sram
KR101612922B1 (ko) * 2009-06-09 2016-04-15 삼성전자주식회사 메모리 시스템 및 메모리 시스템 관리 방법
KR101104361B1 (ko) 2009-12-29 2012-01-16 주식회사 프롬나이 Nvram과 휘발성 램을 이용하여 선택적으로 프로세스의 영속성을 구현하는 컴퓨팅 시스템 및 방법
US9552175B2 (en) 2011-02-08 2017-01-24 Diablo Technologies Inc. System and method for providing a command buffer in a memory system
KR101873526B1 (ko) * 2011-06-09 2018-07-02 삼성전자주식회사 에러 정정회로를 구비한 온 칩 데이터 스크러빙 장치 및 방법
US9779016B1 (en) 2012-07-25 2017-10-03 Smart Modular Technologies, Inc. Computing system with backup and recovery mechanism and method of operation thereof
US20140101370A1 (en) * 2012-10-08 2014-04-10 HGST Netherlands B.V. Apparatus and method for low power low latency high capacity storage class memory
US9189387B1 (en) 2013-06-24 2015-11-17 Emc Corporation Combined memory and storage tiering
US9478274B1 (en) 2014-05-28 2016-10-25 Emc Corporation Methods and apparatus for multiple memory maps and multiple page caches in tiered memory
CN105808455B (zh) 2014-12-31 2020-04-28 华为技术有限公司 访问内存的方法、存储级内存及计算机系统
US9916241B2 (en) 2015-08-14 2018-03-13 Netapp, Inc. Storage controller caching using symmetric storage class memory devices
US9852060B2 (en) 2016-03-31 2017-12-26 Dell Products L.P. Storage class memory (SCM) memory mode cache system
US20180011714A1 (en) 2016-07-08 2018-01-11 Super Micro Computer, Inc. Graceful shutdown with asynchronous dram refresh of non-volatile dual in-line memory module
KR102392844B1 (ko) * 2017-03-10 2022-05-03 삼성전자주식회사 메모리 컨트롤러 및 그것을 포함하는 저장 장치
CN107015628B (zh) * 2017-03-30 2020-08-28 中国科学院计算技术研究所 一种面向近似应用的低开销dram刷新方法及系统
US10545692B2 (en) * 2017-04-04 2020-01-28 Sandisk Technologies Llc Memory maintenance operations during refresh window
US11030132B2 (en) * 2018-02-05 2021-06-08 Micron Technology, Inc. Synchronous memory bus access to storage media

Also Published As

Publication number Publication date
KR20200047814A (ko) 2020-05-08
US10884655B2 (en) 2021-01-05
US20200133565A1 (en) 2020-04-30
CN111090387A (zh) 2020-05-01
CN111090387B (zh) 2023-07-28

Similar Documents

Publication Publication Date Title
CN110675904B (zh) 存储器设备及其操作方法
CN108780423B (zh) 多级存储器管理电路、管理方法和管理设备
KR102593379B1 (ko) 메모리 패키지, 그것을 포함하는 메모리 모듈, 및 그것의 동작 방법
US10559335B2 (en) Method of training drive strength, ODT of memory device, computing system performing the same and system-on-chip performing the same
KR20200017799A (ko) 메모리 장치, 메모리 시스템 및 그 메모리 장치의 리프레시 방법
US9336855B2 (en) Methods and systems for smart refresh of dynamic random access memory
US11036412B2 (en) Dynamically changing between latency-focused read operation and bandwidth-focused read operation
KR102419036B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
US20200218653A1 (en) Controller, data storage device, and operating method thereof
US10929064B2 (en) Methods of operating mixed device type memory modules, and processors and systems configured for operating the same
KR102701812B1 (ko) 휘발성 메모리를 캐쉬로 사용하는 비휘발성 메모리 시스템
US11688453B2 (en) Memory device, memory system and operating method
US20230128653A1 (en) Memory device and method for controlling row hammer
WO2021086438A1 (en) Relocation of data in memory at different transfer rates based on temperature
KR102583266B1 (ko) 스토리지 모듈, 스토리지 모듈의 동작 방법, 및 스토리지 모듈을 제어하는 호스트의 동작 방법
KR20200114212A (ko) 데이터 저장 장치 및 그것의 동작 방법
CN110597742A (zh) 用于具有持久系统存储器的计算机系统的改进存储模型
US9904622B2 (en) Control method for non-volatile memory and associated computer system
KR102500896B1 (ko) Nand 드롭된 커맨드 검출 및 복구
KR20220062843A (ko) 저장 장치 및 그 동작 방법
US20230112776A1 (en) Operation method of memory module, operation method of memory controller, and operation method of memory system
US20170153994A1 (en) Mass storage region with ram-disk access and dma access
US11989448B2 (en) Memory controller and memory system including the same
US20230147402A1 (en) Memory system, refresh control circuit, and refresh control method
US20230236732A1 (en) Memory device

Legal Events

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