KR102549591B1 - 호스트의 동작 방법, 메모리 모듈의 동작 방법, 및 메모리 시스템의 동작 방법 - Google Patents

호스트의 동작 방법, 메모리 모듈의 동작 방법, 및 메모리 시스템의 동작 방법 Download PDF

Info

Publication number
KR102549591B1
KR102549591B1 KR1020180019329A KR20180019329A KR102549591B1 KR 102549591 B1 KR102549591 B1 KR 102549591B1 KR 1020180019329 A KR1020180019329 A KR 1020180019329A KR 20180019329 A KR20180019329 A KR 20180019329A KR 102549591 B1 KR102549591 B1 KR 102549591B1
Authority
KR
South Korea
Prior art keywords
counter
value
host
memory module
release information
Prior art date
Application number
KR1020180019329A
Other languages
English (en)
Other versions
KR20190093475A (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 US16/103,058 priority Critical patent/US11048645B2/en
Priority to CN201811580428.2A priority patent/CN110109612B/zh
Publication of KR20190093475A publication Critical patent/KR20190093475A/ko
Application granted granted Critical
Publication of KR102549591B1 publication Critical patent/KR102549591B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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/1673Details of memory controller using buffers

Landscapes

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

Abstract

본 발명의 실시 예에 따른 메모리 모듈은 제1 저장 영역 및 제2 저장 영역을 포함하는 램 장치, 불휘발성 메모리 장치, 및 호스트의 제어에 따라 램 장치 또는 불휘발성 메모리 장치를 제어하도록 구성된 컨트롤러를 포함한다. 컨트롤러는 호스트로부터 수신된 제1 데이터를 임시 저장하도록 구성된 데이터 버퍼, 및 제1 데이터가 데이터 버퍼로부터 램 장치의 제1 영역 또는 제2 영역으로 이동한 경우 제1 해제 정보를 호스트로 전송하고, 제1 데이터가 제2 영역으로부터 불휘발성 메모리 장치로 이동한 경우 제2 해제 정보를 호스트로 전송하도록 구성된 버퍼 반환부를 포함한다.

Description

호스트의 동작 방법, 메모리 모듈의 동작 방법, 및 메모리 시스템의 동작 방법{OPERATION METHOD OF HOST, OPERATION METHOD OF MEMORY MODULE, AND OPERATION METHOD OF MEMORY SYSTEM}
본 발명은 저장 장치에 관한 것으로, 좀 더 상세하게는 호스트의 동작 방법, 메모리 모듈의 동작 방법, 및 메모리 시스템의 동작 방법에 관한 것이다.
반도체 메모리는 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) 등과 같이 전원 공급이 차단되어도 저장하고 있던 데이터를 유지하는 불휘발성 메모리 장치로 구분된다.
불휘발성 메모리 장치의 일종인 플래시 메모리는 대용량, 저소음, 저전력 등의 장점으로 인하여 다양한 분야에서 스토리지 장치로 널리 쓰인다. 최근에는 컴퓨팅 시스템에서 처리되는 데이터가 증가함에 따라 SSD 장치들과 연결된 인터페이스의 데이터 대역폭 또는 통신 속도보다 데이터 처리량이 많아져서 데이터 병목 현상이 발생한다. 이러한 현상들은 컴퓨팅 시스템의 성능을 저해하는 요인으로 작용되며, 상술된 문제점을 해결하기 위한 다양한 성능 향상 기법들이 개발되고 있다.
본 발명의 목적은 호스트가 메모리 모듈의 리소스를 관리함으로써, 향상된 성능을 갖는 호스트의 동작 방법, 메모리 모듈의 동작 방법, 및 메모리 시스템의 동작 방법을 제공하는데 있다.
본 발명의 실시 예에 따른 메모리 모듈은 제1 저장 영역 및 제2 저장 영역을 포함하는 램 장치, 불휘발성 메모리 장치, 및 호스트의 제어에 따라 상기 램 장치 또는 상기 불휘발성 메모리 장치를 제어하도록 구성된 컨트롤러를 포함한다. 상기 컨트롤러는 상기 호스트로부터 수신된 제1 데이터를 임시 저장하도록 구성된 데이터 버퍼, 및 상기 제1 데이터가 상기 데이터 버퍼로부터 상기 램 장치의 상기 제1 영역 또는 상기 제2 영역으로 이동한 경우 제1 해제 정보를 상기 호스트로 전송하고, 상기 제1 데이터가 상기 제2 영역으로부터 상기 불휘발성 메모리 장치로 이동한 경우 제2 해제 정보를 상기 호스트로 전송하도록 구성된 버퍼 반환부를 포함한다.
본 발명의 실시 예에 따른 메모리 모듈은 램 장치, 불휘발성 메모리 장치, 호스트의 제어에 따라 상기 램 장치 및 상기 불휘발성 메모리 장치를 제어하도록 구성된 컨트롤러를 포함한다. 상기 컨트롤러는 상기 호스트로부터 수신된 제1 데이터를 임시 저장하도록 구성된 데이터 버퍼, 및 상기 제1 데이터가 상기 데이터 버퍼로부터 상기 램 장치 또는 상기 불휘발성 메모리 장치로 이동한 경우, 제1 해제 정보를 상기 호스트로 전송하도록 구성된 버퍼 반환부를 포함한다.
본 발명의 실시 예에 따른 램 장치 및 불휘발성 메모리 장치를 포함하는 메모리 장치의 동작 방법은 호스트로부터 제1 쓰기 커맨드를 수신하는 단계, 상기 제1 쓰기 커맨드에 대응하는 제1 데이터를 수신하고, 상기 수신된 제1 데이터를 데이터 버퍼에 임시 저장하는 단계, 상기 제1 데이터를 상기 데이터 버퍼로부터 상기 램 장치로 이동시키는 단계, 상기 제1 데이터가 상기 데이터 버퍼로부터 상기 램 장치로 이동한 경우, 상기 호스트로 제1 해제 정보를 전송하는 단계, 상기 제1 데이터를 상기 램 장치로부터 상기 불휘발성 메모리 장치로 이동시키는 단계, 및 상기 제1 데이터가 상기 램 장치로부터 상기 불휘발성 메모리 장치로 이동한 경우, 상기 호스트로 제2 해제 정보를 전송하는 단계를 포함한다.
메모리 모듈과 통신하도록 구성된 호스트의 동작 방법은 지속 쓰기 커맨드(persist write command)를 상기 메모리 모듈로 전송하고, 상기 메모리 모듈에 포함된 제1 단위 버퍼들 중 가용한 제1 단위 버퍼의 개수를 가리키는 제1 카운터 값 및 상기 메모리 모듈에 포함된 제2 단위 버퍼들 중 가용한 제2 단위 버퍼의 개수를 가리키는 제2 카운터 값을 각각 감산하는 단계, 상기 제1 단위 버퍼들 중 해제된 제1 단위 버퍼의 개수를 가리키는 제1 해제 정보를 상기 메모리 모듈로부터 수신하고, 상기 수신된 제1 해제 정보를 기반으로 상기 감산된 제1 카운터 값을 가산하는 단계, 및 상기 제2 단위 버퍼들 중 해제된 제2 단위 버퍼의 개수를 가리키는 제2 해제 정보를 상기 메모리 모듈로부터 수신하고, 상기 수신된 제2 해제 정보를 기반으로 상기 감산된 제2 카운터 값을 가산하는 단계를 포함한다.
본 발명의 실시 예에 따르면, 호스트는 메모리 모듈의 리소스(예를 들어, WC, PC 등)를 관리할 수 있다. 메모리 모듈은 리소스가 해제된 경우, 호스트로 해제 정보를 전송하고, 호스트는 해제 정보를 기반으로 리소스를 갱신할 수 있다. 따라서, 향상된 성능을 갖는 호스트의 동작 방법, 메모리 모듈의 동작 방법, 및 메모리 시스템의 동작 방법이 제공된다.
도 1은 본 발명의 실시 예에 따른 컴퓨팅 시스템을 보여주는 블록도이다.
도 2a 내지 도 2c는 도 1의 호스트 및 컨트롤러 사이의 동작을 설명하기 위한 블록도들이다.
도 3은 도 1의 호스트의 동작을 예시적으로 보여주는 순서도이다.
도 4는 도 1의 컨트롤러의 동작을 보여주는 순서도이다.
도 5a 내지 도 5c는 도 1의 호스트 및 컨트롤러의 동작을 설명하기 위한 타이밍도이다.
도 6은 본 발명의 실시 예에 따른 컴퓨팅 시스템을 보여주는 블록도이다.
도 7a 내지 도 7d 및 도 8은 도 6의 호스트 및 컨트롤러의 동작을 설명하기 위한 도면들이다.
도 9는 도 6의 호스트의 동작 방법을 보여주는 순서도이다.
도 10은 도 6의 메모리 모듈의 동작 방법을 보여주는 순서도이다.
도 11은 도 6의 호스트 및 컨트롤러의 동작을 설명하기 위한 타이밍도이다.
도 12a 및 도 12b는 도 6의 호스트 및 컨트롤러의 동작을 설명하기 위한 블록도들이다.
도 13a 내지 도 13d는 도 12a 내지 도 12b의 실시 예에 따른 호스트 및 컨트롤러의 동작을 설명하기 위한 타이밍도들이다.
도 14는 도 6의 WC 카운터 및 PC 카운터의 예를 보여주는 도면이다.
도 15는 본 발명의 실시 예에 따른 컴퓨팅 시스템을 보여주는 블록도이다.
도 16은 본 발명에 따른 메모리 모듈의 예시적인 블록도이다.
도 17은 본 발명에 따른 메모리 모듈의 예시적인 블록도이다.
도 18은 본 발명에 따른 메모리 모듈이 적용된 컴퓨팅 시스템을 예시적으로 보여주는 블록도이다.
이하에서, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다.
이하에서, "부(unit)","모듈(module)" 등의 용어는 소프트웨어 구성, 하드웨어 구성, 또는 그것들의 조합의 구성을 의미한다. 예를 들어, 특정 기능을 수행하는 " 부(unit)"는 특정 기능을 수행하기 위한 하드웨어 구성일 수 있다. 특정 기능 또는 특정 구성들을 포함하는 "모듈(module)"은 다양한 하드웨어 구성들을 포함하는 구성일 수 있다.
도 1은 본 발명의 실시 예에 따른 컴퓨팅 시스템(10)을 보여주는 블록도이다. 도 1을 참조하면, 컴퓨팅 시스템(10)은 호스트(101) 및 메모리 모듈(100)을 포함할 수 있다. 호스트(101)는 메모리 모듈(100)에 데이터를 저장하거나 또는 메모리 모듈(100)에 저장된 데이터를 읽을 수 있다. 예를 들어, 호스트(101)는 메모리 모듈(100)에 데이터(DATA)를 저장하기 위하여, 메모리 모듈(100)로 어드레스(ADDR), 커맨드(CMD), 및 데이터(DATA)를 전송할 수 있다. 예시적인 실시 예에서, 호스트(101)는 컴퓨팅 시스템(10)의 동작을 제어하기 위한 중앙 처리 유닛(CPU; central processing unit)일 수 있다.
메모리 모듈(100)은 컨트롤러(110), 램 장치(120), 및 불휘발성 메모리 장치(130)를 포함할 수 있다. 예시적으로, 메모리 모듈(100)은 DDR(Double Data Rate) 인터페이스를 통해 호스트(101)와 통신할 수 있고, NVDIMM-P 타입의 메모리 모듈일 수 있다. 예시적으로, 컨트롤러(110), 램 장치(120), 및 불휘발성 메모리 장치(130)는 동일한 PCB 기판(미도시) 상에 집적되어 하나의 메모리 모듈(100)을 구성할 수 있다. 또한, 메모리 모듈(100)은 도시된 구성 요소들 이외에 다른 다양한 구성 요소들을 더 포함할 수 있다. 그러나 본 발명이 이에 한정되는 것은 아니다.
컨트롤러(110)는 호스트(101)의 제어에 따라 램 장치(120) 또는 불휘발성 메모리 장치(130)에 데이터(DATA)를 저장하거나 또는 램 장치(120) 또는 불휘발성 메모리 장치(130)에 저장된 데이터(DATA)를 읽을 수 있다.
예시적인 실시 예에서, 램 장치(120)는 불휘발성 메모리 장치(130)보다 빠른 동작 속도를 가질 수 있다. 예를 들어, 램 장치(120)는 SRAM, DRAM 등과 같은 고속 동작을 지원하는 메모리 장치일 수 있고, 불휘발성 메모리 장치(130)는 플래시 메모리와 같이 전원 공급이 중단되더라도 데이터를 유지하는 불휘발성 메모리 장치일 수 있다. 그러나 본 발명의 범위가 이에 한정되는 것은 아니며, 램 장치(120) 및 불휘발성 메모리 장치(130)는 다양한 저장 장치들로 구현될 수 있다.
본 발명의 실시 예를 용이하게 설명하기 위하여, 램 장치(120)가 컨트롤러(110)와 구분된 것으로 것으로 도시되나, 본 발명의 범위가 이에 한정되는 것은 아니며, 램 장치(120)는 컨트롤러(110)의 내부에 포함될 수 있다.
본 발명의 실시 예에 따른 컨트롤러(110)는 데이터 버퍼(111) 및 WC(Write Credit) 반환부(112)를 포함할 수 있다. 데이터 버퍼(111)는 호스트(101)로부터 데이터(DATA)를 수신하거나 또는 수신된 데이터(DATA)를 임시 저장하기 위한 저장 회로일 수 있다. 예를 들어, 호스트(101)로부터 수신된 데이터(DATA)는 데이터 버퍼(111)에 먼저 기입될 수 있다. 이후에, 데이터 버퍼(111)에 저장된 데이터(DATA)는 램 장치(120) 또는 불휘발성 메모리 장치(130)로 전달될 수 있다.
즉, 데이터 버퍼(111)는 호스트(101) 및 컨트롤러(110) 사이의 인터페이스 속도를 만족하는 고속 저장 회로일 수 있다. 데이터 버퍼(111)는 호스트(101) 및 컨트롤러(110) 사이의 인터페이스 계층 또는 물리 계층에 포함된 레지스터 또는 고속 메모리일 수 있다.
예시적으로, 데이터 버퍼(111)는 미리 정해진 크기를 갖는 WC들(WC; Write Credit)을 포함할 수 있다. 즉, WC은 미리 정해진 단위의 저장 공간 또는 단위 버퍼를 가릴 수 있다. 예를 들어, 데이터 버퍼(111)가 512KB이고, 하나의 WC이 4KB인 경우, 데이터 버퍼(111)에 대한 전체 WC의 개수는 128개일 수 있다.
호스트(101)는 WC 카운터(102)를 포함할 수 있다. WC 카운터(102)는 데이터 버퍼(111)의 WC들 중 가용한 WC의 개수에 대한 정보를 포함할 수 있다. 호스트(101)는 WC 카운터(102)를 기반으로 메모리 모듈(100)에 대한 쓰기 동작을 수행할 수 있다. 예를 들어, 하나의 WC의 단위가 4KB이고, WC 카운터(102)의 값이 "8"인 경우, 호스트(101)는 "4*8=32KB"의 쓰기 데이터를 메모리 모듈(100)로 전송할 수 있다.
호스트(101)는 전송된 쓰기 데이터의 크기(또는 발행된 쓰기 커맨드의 개수, 또는 전송된 쓰기 데이터의 단위 개수)를 기반으로 WC 카운터(102)를 갱신할 수 있다. 예를 들어, 하나의 WC의 단위가 4KB이고, 호스트(101)가 16KB의 쓰기 데이터를 전송한 경우, 호스트(101)는 4개의 WC을 사용할 것이다. 이 경우, 호스트(101)는 WC 카운터(102)의 현재 값에서 사용된 WC에 대한 값(즉, 4개)을 감산할 수 있다. 즉, 호스트(101)가 16KB의 쓰기 데이터를 전송한 경우, WC 카운터(102)는 "8"에서 "4"로 갱신될 수 있다.
예시적으로, WC 카운터(102)의 값이 "0"인 경우, 호스트(110)에 의해 사용 가능한 WC이 없기 때문에, 호스트(101)는 쓰기 데이터를 컨트롤러(110)로 전송할 수 없을 것이다.
예시적으로, 컨트롤러(110)의 WC 반환부(112)는 WC 해제 정보(RWC)를 호스트(101)로 제공할 수 있다. 예를 들어, 데이터 버퍼(111)의 제1 WC에 저장된 제1 데이터가 램 장치(120) 또는 불휘발성 메모리 장치(130)로 전달된 경우, 데이터 버퍼(111)의 제1 WC은 해제(release)될 수 있다. "제1 WC이 해제되는 것"은 제1 WC이 호스트(101)에 의해 사용될 수 있음을 의미한다. 다시 말해서, 해제된 제1 WC은 호스트(101)로부터 수신된 데이터를 저장하는데 사용될 수 있다. WC 반환부(112)는 상술된 바와 같이 해제된 WC들에 대한 WC 해제 정보(RWC)를 호스트(101)로 전송할 수 있다.
호스트(101)는 컨트롤러(110)로부터의 WC 해제 정보(RWC)를 기반으로 WC 카운터(102)를 갱신할 수 있다. 예를 들어, 앞서 설명된 바와 같이, WC 해제 정보(RWC)는 데이터 버퍼(111)에서 사용된 WC들 중 컨트롤러(110)의 동작에 의해 해제된 WC들의 개수를 가리킨다. 다시 말해서, WC 해제 정보(RWC)는 호스트(101)에 의해 사용 가능한 WC들의 개수를 가리킨다. WC 해제 정보(RWC)가 "4"를 가리키는 경우, 호스트(101)는 WC 카운터(102)에 "4"의 값을 가산할 수 있다.
예시적으로, WC 해제 정보(RWC)는 비동기 방식으로 제공될 수 있다. 예를 들어, WC에 대한 해제가 발생한 경우, 컨트롤러(110)는 호스트(101)로 반환 신호(RTN)를 전송할 수 있다. 호스트(101)는 반환 신호(RTN)에 응답하여 컨트롤러(110)로부터 WC 해제 정보(RWC)를 수신할 수 있다. 예시적으로, WC 해제 정보(RWC)는 데이터(DATA)와 동일한 신호 라인을 통해 제공될 수 있다. 또는 WC 해제 정보(RWC)는 별도의 신호 라인 또는 별도의 통신 채널을 통해 호스트(101)로 제공될 수 있다.
또는 WC 해제 정보(RWC)는 호스트(101)의 명시적인 요청에 의해 전송될 수 있다. 또는 WC 해제 정보(RWC)는 호스트(101)의 읽기 요청에 따른 읽기 데이터와 함께 호스트(101)로 전송될 수 있다.
상술된 바와 같이, 호스트(101)는 컨트롤러(110)의 데이터 버퍼(111)의 사용 가능한 WC들을 관리할 수 있고, 컨트롤러(110)는 해제된 WC에 대한 정보를 호스트(101)로 전송할 수 있다. 따라서, 호스트(101) 및 컨트롤러(110) 사이의 데이터 전송 시 속도 저하가 방지될 수 있다.
도 2a 내지 도 2c는 도 1의 호스트(101) 및 컨트롤러(110) 사이의 동작을 설명하기 위한 블록도들이다. 간결한 설명을 위하여, 앞서 설명된 구성 요소들에 대한 상세한 설명은 생략된다.
이하에서, 본 발명의 실시 예를 명확하고 간결하게 설명하기 위하여, 특정한 의미를 갖는 다양한 표현들이 사용된다. 예를 들어, "호스트에 의한 WC의 사용"은 호스트가 쓰기 데이터를 전송하기 위하여 쓰기 데이터를 할당 또는 사용하는 것 또는 호스트가 WC으로 쓰기 데이터를 전송하는 것을 의미한다. 또한, "WC의 해제"는 WC에 저장된 쓰기 데이터가 램 장치 또는 불휘발성 메모리 장치로 전달됨으로써, 다른 쓰기 데이터를 수신할 수 있는 상태를 가리킨다. 또한, "WC에 저장된 쓰기 데이터가 램 장치 또는 불휘발성 메모리 장치로 전달되는 것"은 WC에 저장된 쓰기 데이터가 램 장치 또는 불휘발성 메모리 장치로 복사되거나 또는 이동하는 것을 의미한다. 상술된 표현들은 본 발명의 실시 예를 간결하고 명확하게 설명하기 위한 것으로서, 본 발명의 범위가 이에 한정되는 것은 아니다.
설명의 편의를 위하여, 데이터 버퍼(111)는 8개의 WC들(WC1~WC8)을 포함하는 것으로 가정한다. 또한 호스트(101)로부터 컨트롤러(110)로 전송되는 쓰기 데이터 각각은 하나의 WC의 크기와 대응되는 것으로 가정한다. 즉, 하나의 쓰기 데이터의 크기는 하나의 WC의 크기와 동일할 수 있으며, 하나의 쓰기 데이터는 하나의 WC에 저장될 수 있다.
도 2a 내지 도 2c를 참조하면, 컴퓨팅 시스템(10)은 호스트(110) 및 메모리 모듈(100)을 포함한다. 호스트(101)는 WC 카운터(102)를 포함한다. 메모리 모듈(100)은 컨트롤러(110), 램 장치(120), 및 불휘발성 메모리 장치(130)를 포함할 수 있다. 각 구성 요소들은 앞서 설명되었으므로, 이에 대한 상세한 설명은 생략된다.
도 2a에 도시된 바와 같이, 초기 상태에서, WC 카운터(102)의 값은 "8"일 수 있다. 이는 데이터 버퍼(111)에서 8개의 WC들(즉, WC1~WC8)이 가용한 상태임을 가리킨다.
이후에, 도 2b에 도시된 바와 같이, 호스트(101)는 제1 내지 제4 쓰기 데이터(DT1~DT4)에 대한 쓰기 동작을 수행할 수 있다. 이 경우, 호스트(101)는 4개의 WC들(WC1~WC4)을 사용할 수 있다. 즉, 호스트(101)로부터 수신된 제1 내지 제4 쓰기 데이터(DT1~DT4)는 제1 내지 제4 WC들(WC1~WC4)에 각각 저장될 것이다. 호스트(101)는 사용된 WC들의 개수(즉, 4개)만큼 WC 카운터(102)의 값을 감산할 수 있다. 이 경우, WC 카운터(102)의 값은 "8-4=4"가 될 것이다. 이는 데이터 버퍼(111)에서 가용한 WC들의 개수가 4개임을 의미한다.
비록 도면에 도시되지는 않았으나, 호스트(101)는 컨트롤러(110)로 전송된 쓰기 커맨드의 개수를 기반으로 WC 카운터(102)를 갱신할 수 있다. 예를 들어, 하나의 쓰기 커맨드에 대한 쓰기 데이터의 크기가 하나의 WC의 크기와 대응될 수 있다. 이 때, 4개의 쓰기 커맨드가 컨트롤러(110)로 전송된 경우, 호스트(101)는 WC 카운터(102)의 값에서 "-4"만큼 감산할 수 있다.
다음으로, 도 2c에 도시된 바와 같이, 컨트롤러(110)의 동작에 의해 일부 WC들이 해제될 수 있다. 예를 들어, 제3 및 제4 WC들(WC3, WC4)에 저장된 쓰기 데이터가 램 장치(120)로 전달될 수 있다. 이 경우, 제3 및 제4 WC들(WC3, WC4)은 해제(release)될 것이다.
WC 반환부(112)는 해제된 WC들에 대한 WC 해제 정보(RWC)를 호스트(110)로 전송할 수 있다. 도 2c에 도시된 바와 같이, 제3 및 제4 WC들(WC3, WC4)이 해제되었으므로, WC 해제 정보(RWC)는 2개의 WC이 해제되었음을 알리는 정보일 수 있다. 호스트(110)는 WC 해제 정보(RWC)에 응답하여 WC 카운터(102)를 갱신할 수 있다. 예를 들어, 앞서 설명된 바와 같이, 2개의 WC들이 해제되었으므로, 호스트(101)는 WC 카운터(102)의 값을 "+2"만큼 가산할 수 있다. 이 경우, WC 카운터(102)의 값은 "6"일 것이다. 이는 현재 데이터 버퍼(111)의 WC들 중 6개의 WC들이 가용함을 의미한다.
상술된 바와 같이, 호스트(101)가 컨트롤러(110)로 쓰기 데이터를 전송하는 경우, 호스트(101)의 WC 카운터(102)는 전송된 쓰기 데이터의 개수 또는 크기, 또는 전송된 쓰기 커맨드들의 개수를 기반으로 갱신(또는 감산)된다. 또한 컨트롤러(110)의 동작에 의해 데이터 버퍼(111)의 WC들이 해제된 경우, 컨트롤러(110)는 WC 해제 정보(RWC)를 호스트(101)로 전송하고, 호스트(101)는 WC 해제 정보(RWC)를 기반으로 WC 카운터(102)를 갱신(또는 가산)할 수 있다. 따라서, 호스트(101)의 주기적인 폴링 동작 없이 또는 별도의 다른 확인 동작 없이 메모리 모듈(100)의 리소스를 인식할 수 있기 때문에, 쓰기 성능이 향상될 수 있다.
도 3은 도 1의 호스트(101)의 동작을 예시적으로 보여주는 순서도이다. 도 1 및 도 3을 참조하면, S111 단계에서, 호스트(101)는 가용한 WC들의 개수가 기준치(TH)보다 큰지 판별할 수 있다. 예를 들어, 호스트(101)의 WC 카운터(102)의 값은 가용한 WC들의 개수를 가리킬 수 있다. 호스트(101)는 WC 카운터(102)의 값이 기준치(TH)보다 큰지 판별할 수 있다. 예시적으로, 기준치(TH)는 동작 모드 또는 쓰기 커맨드의 타입에 따라 "0"이거나 또는 "0"보다 큰 정수일 수 있다.
예시적으로, 가용한 WC의 개수가 기준치(TH)보다 크지 않다는 것은 컨트롤러(110)가 호스트(101)로부터 전송되는 쓰기 데이터를 수신하기에 충분한 WC을 포함하지 않음을 의미할 수 있다. 이 경우, 호스트(101)가 컨트롤러(110)로 쓰기 데이터를 전송하더라도, 컨트롤러(110)는 쓰기 데이터를 정상적으로 수신하지 못하거나 또는 이전에 수신된 데이터가 소실될 수 있다. 이 경우, 호스트(101)는 가용한 WC들이 확보될 때까지 쓰기 동작을 수행하지 않을 수 있다.
예를 들어, 가용한 WC들의 개수가 기준치(TH)보다 크지 않은 경우, S112 단계에서, 호스트(101)는 컨트롤러(110)로부터 WC 해제 정보(RWC)를 읽을 수 있다. 예를 들어, 호스트(101)는 WC 해제 정보(RWC)를 읽기 위한 반환 커맨드를 컨트롤러(110)로 전송할 수 있다. 이 때, 반환 커맨드를 호스트(101)의 자체적인 동작에 의해 전송되거나 또는 컨트롤러(110)로부터 반환 신호(RTN) 에 응답하여 전송될 수 있다. 예시적으로, 반환 커맨드는 호스트(101) 및 메모리 모듈(100) 사이의 인터페이스에 의해 미리 정의된 커맨드 또는 제조사 커맨드(vendor command) 또는 특정 커맨드들의 조합일 수 있다. 또는 호스트(101)는 일반적인 읽기 데이터를 읽기 위한 읽기 커맨드를 컨트롤러(110)로 전송하고, 컨트롤러(110)는 읽기 커맨드에 대응하는 읽기 데이터와 함께 WC 해제 정보(RWC)를 호스트(101)로 전송할 수 있다. 상술된 바와 같이, 호스트(101)는 다양한 방식을 기반으로 컨트롤러(110)로부터 WC 해제 정보(RWC)를 읽을 수 있다.
S113 단계에서, 호스트(101)는 WC 해제 정보(RWC)를 기반으로 WC 카운터(102)를 갱신할 수 있다. 예를 들어, 앞서 설명된 바와 같이, 호스트(101)는 WC 해제 정보(RWC)가 가리키는 값을 WC 카운터(102)의 값에 가산할 수 있다. 이후에, 호스트(101)는 S111 단계를 수행할 수 있다.
S111 단계의 비교 결과가 가용한 WC의 개수가 기준치(TH)보다 큰 것을 가리키는 경우, 호스트(101)는 S115 단계의 동작을 수행할 수 있다. S115 단계에서, 호스트(101)는 WC 카운터(102)를 기반으로 쓰기 데이터를 컨트롤러(110)로 전송할 수 있고, 전송된 쓰기 데이터를 기반으로 WC 카운터(102)를 갱신할 수 있다.
예를 들어, 호스트(101)는 WC 카운터(102)의 값을 기반으로 컨트롤러(110)로 쓰기 데이터를 전송할 수 있다. 이 때, 전송되는 쓰기 데이터의 크기는 WC 카운터(102)의 값에 대응하는 크기보다 작거나 같을 수 있다. 호스트(101)는 전송된 쓰기 데이터의 크기를 기반으로 WC 카운터(102)의 값을 감산할 수 있다. 예시적으로, 호스트(101)는 전송된 쓰기 커맨드의 개수를 기반으로 WC 카운터(102)의 값을 감산할 수 있다.
도 4는 도 1의 컨트롤러(110)의 동작을 보여주는 순서도이다. 도 1 및 도 4를 참조하면, S121 단계에서, 컨트롤러(110)는 호스트(101)로부터 데이터를 수신하고, 수신된 데이터를 WC에 저장할 수 있다. 예시적으로, 데이터 수신 및 데이터 저장 동작은 동시에 또는 순차적으로 수행되는 동작일 수 있다.
S122 단계에서, 컨트롤러(110)는 데이터가 WC으로부터 램 장치(120) 또는 불휘발성 메모리 장치(130)로 이동하였는지 판별할 수 있다. 예를 들어, 앞서 설명된 바와 같이, WC에 저장된 데이터는 컨트롤러(110)의 동작에 따라 램 장치(120) 또는 불휘발성 메모리 장치(130)로 이동할 수 있다. 이 경우, 데이터가 저장된 WC은 해제될 것이다.
데이터가 WC으로부터 램 장치(120) 또는 불휘발성 메모리 장치(130)로 이동한 경우, S123 단계에서, 컨트롤러(110)는 호스트(101)의 제어에 따라 WC 해제 정보(RWC)를 호스트(101)로 전송할 수 있다. 예를 들어, 컨트롤러(110)는 호스트(101)로부터의 반환 요청에 응답하여 WC 해제 정보(RWC)를 호스트(101)로 전송할 수 있다. 예시적으로, 반환 요청은 컨트롤러(110)의 반환 신호(RTN)에 응답하여 호스트(101)에 의해 발행되거나 또는 호스트(101)의 자체 동작에 의해 발행될 수 있다. 또는 컨트롤러(110)는 호스트(101)로부터의 읽기 커맨드에 응답하여, 읽기 커맨드에 대응하는 읽기 데이터 및 WC 해제 정보(RWC)를 호스트(101)로 전송할 수 있다.
도 5a 내지 도 5c는 도 1의 호스트(101) 및 컨트롤러(110)의 동작을 설명하기 위한 타이밍도이다. 이하에서, 본 발명의 실시 예를 설명하는데 불필요한 구성 요소들은 생략된다. 또한, 초기 WC 카운터(102)의 값은 "4"인 것으로 가정한다. 또한 하나의 쓰기 커맨드(WR)에 대한 쓰기 데이터(D)의 크기는 하나의 WC의 크기와 동일한 것으로 가정한다. 즉, 하나의 쓰기 커맨드에 대한 쓰기 데이터(D)는 하나의 WC에 저장될 수 있다. 다시 말해서, 호스트(101)는 하나의 쓰기 커맨드에 대한 쓰기 데이터(D)를 전송하기 위하여, 하나의 WC을 사용할 수 있다.
먼저, 도 1 및 도 5a를 참조하면, 초기 WC 카운터(102)의 값은 "4"일 수 있다. 이는 데이터 버퍼(111)의 WC들(WC) 중 4개의 WC들(WC)이 사용 가능한 상태임을 가리킬 수 있다.
호스트(101)는 WC 카운터(102)를 기반으로 쓰기 동작을 수행할 수 있다. 예를 들어, WC 카운터(102)의 값이 "4"인 경우, 호스트(101)는 4개의 쓰기 커맨드(WR1~WR4) 및 각각에 대응하는 4개의 쓰기 데이터(D1~D4)를 컨트롤러(110)로 전송할 수 있다.
호스트(101)는 쓰기 커맨드들(WR1~WR4) 각각을 전송할 때마다, WC 카운터(102)를 갱신할 수 있다. 예를 들어, 호스트(101)가 제1 쓰기 커맨드(WR1)를 전송한 경우, 호스트(101)는 WC 카운터(102)의 값을 "4"에서 "3"으로 "-1"만큼 감산할 수 있고, 호스트(101)가 제2 쓰기 커맨드(WR2)를 전송한 경우, 호스트(101)는 WC 카운터(102)의 값을 "3"에서 "2"로 "-1"만큼 감산할 수 있다. 즉, 호스트(101)는 쓰기 커맨드를 전송할 때마다, WC 카운터(102)의 값을 하나씩 감소시킬 수 있다. 이는 호스트(101)가 쓰기 데이터를 전송하기 위하여, 데이터 버퍼(111)의 WC을 사용하기 때문이다. 다시 말해서, 호스트(101)의 쓰기 커맨드에 의해 대응하는 쓰기 데이터가 컨트롤러(110)의 데이터 버퍼(111)의 어느 하나의 WC에 저장되기 때문이다.
제4 쓰기 커맨드(WR4)가 전송된 이후에, WC 카운터(102)의 값은 "0"일 수 있다. 이 경우, 가용한 WC이 없기 때문에, 호스트(101)는 컨트롤러(110)로 쓰기 커맨드 또는 쓰기 데이터를 전송하지 못할 것이다. 다시 말해서, 제1 시간(T1) 동안 호스트(101)는 쓰기 동작을 수행하지 않을 것이다.
제1 시점(t1)에서, 컨트롤러(110)의 동작에 따라 WC이 해제될 수 있다. 예를 들어, 앞서 설명된 바와 같이, 컨트롤러(110)의 동작에 따라, 데이터 버퍼(111)에 저장된 쓰기 데이터 중 일부 쓰기 데이터가 램 장치(120) 또는 불휘발성 메모리 장치(130)로 전달될 수 있다. 이 경우, 일부 데이터가 저장된 데이터 버퍼(111)의 영역(다시 말해서, WC)이 해제될 것이다.
컨트롤러(110)의 WC 반환부(112)는 제1 시점(t1)에서 WC의 해제를 감지하고, 반환 신호(RTN)를 호스트(101)로 전송할 수 있다. 예시적으로, 반환 신호(RTN)는 특정 신호 라인을 통해 제공될 수 있으며, 반환 신호(RTN)는 로직 로우 레벨을 가질 수 있다. 그러나 본 발명의 범위가 이에 한정되는 것은 아니다.
호스트(101)는 반환 신호(RTN)에 응답하여 반환 커맨드(RCM)를 컨트롤러(110)로 전송할 수 있다. 반환 커맨드(RCM)는 WC 반환 정보(RWC)를 읽기 위한 커맨드일 수 있다. 컨트롤러(110)는 반환 커맨드(RCM)에 응답하여 데이터 라인(DQ)을 통해 WC 반환 정보(RWC)를 호스트(101)로 제공할 수 있다.
호스트(101)는 수신된 WC 반환 정보(RWC)를 기반으로 WC 카운터(102)를 갱신할 수 있다. 예를 들어, WC 반환 정보(RWC)가 4개의 WC들이 해제되었음을 가리키는 경우, 호스트(101)는 WC 카운터(102)의 값을 "0"에서 "4"로 "+4"만큼 가산할 수 있다.
이후에, 호스트(101)는 갱신된 WC 카운터(102)를 기반으로 쓰기 동작을 수행할 수 있다. 예를 들어, 호스트(101)는 WC 카운터(102)를 기반으로 4개의 쓰기 커맨드(WR5~WR8) 및 각각에 대응하는 4개의 쓰기 데이터(D5~D8)를 컨트롤러(110)로 전송할 수 있고, 앞서 설명된 바와 유사하게, 쓰기 커맨드(WR5~WR8) 각각을 전송할 때마다, WC 카운터(102)를 갱신(즉, "-1"만큼씩 감산)할 수 있다.
예시적으로, WC 해제 정보(RWC)는 도 5에 도시된 바와 같이, 비동기 방식으로 제공될 수 있다. 또는 비록 도면에 도시되지는 않았으나, WC 해제 정보(RWC)는 특정 주기마다 호스트(101)로 제공될 수 있다.
예시적으로, 표 1은 WC 카운터(102)의 갱신 방법을 보여준다.
쓰기 커맨드의 발행 횟수(m) WC의 반환량(n)
WC의 카운터 변화량 -m +n
표 1을 참조하면, WC 카운터(102)는 호스트(101)의 쓰기 커맨드 발행 횟수(m)만큼 감소될 수 있다. 이는 호스트(101)의 쓰기 커맨드들의 개수에 따라 컨트롤러(110)의 데이터 버퍼(111)의 WC들이 사용되기 때문이다. WC 카운터(102)는 WC들의 반환량(n)(다시 말해서, 해제된 WC들의 개수)만큼 증가될 수 있다. 이는 해제된 WC들이 호스트(101)에 의해 사용 가능하기 때문이다. 상술된 바와 같이, 호스트(101)는 컨트롤러(110)의 데이터 버퍼(111)의 가용한 WC의 개수를 관리할 수 있다. 또한 컨트롤러(110)는 해제된 WC들의 개수를 가리키는 WC 해제 정보(RWC)를 호스트(101)로 제공할 수 있고, 호스트(101)는 수신된 WC 해제 정보(RWC)를 기반으로 WC 카운터(102)를 갱신할 수 있다. 따라서, 호스트(101)의 쓰기 동작 성능이 향상된다.
다음으로, 도 1 및 도 5b를 참조하면, WC 반환부(112)는 WC이 해제될 때마다, WC 해제 정보를 누적시킬 수 있다. 예를 들어, 도 5b의 제1 시점(t1)에서, 제1 데이터(D1)가 램 장치(120)로 이동할 수 있다. 이 경우, 제1 데이터(D1)가 저장된 WC이 해제될 것이다. 마찬가지로, 제2 내지 제4 시점들(t2, t3, t4) 각각에서, 제2 내지 제4 데이터(D2, D3, D4) 각각이 컨트롤러(110)의 동작에 따라 WC으로부터 램 장치(120)로 이동할 수 있다. 이 경우, WC 반환부(112)는 제1 내지 제4 시점들(t1, t2, t3, t4) 각각에서, WC 반환 정보(RWC)를 누적할 수 있다. 결과적으로, 제4 시점(t4)에서 WC 반환 정보(RWC)는 "4"의 값을 가질 것이다. 이는 해제된 WC들의 개수가 4개임을 가리킨다.
이 후에, 호스트(101)는 반환 커맨드(RCM)를 컨트롤러(110)로 전송할 수 있다. 예시적으로, 반환 커맨드(RCM)는 컨트롤러(110)로부터의 별도의 신호(예를 들어, 반환 신호) 없이 호스트(101)에서 자체적으로 발행될 수 있다.
컨트롤러(110)는 반환 커맨드(RCM)에 응답하여 WC 해제 정보(RWC)를 호스트(101)로 전송할 수 있다. WC 해제 정보(RWC)가 "4"인 경우, WC 반환부(112)에 누적된 값은 "-4"만큼 감산될 것이다. 즉, WC 해제 정보(RWC)가 호스트(101)로 전송된 경우, WC 반환부(112)에 누적된 값이 리셋될 수 있다.
호스트(101)는 수신된 WC 반환 정보(RWC)를 기반으로 WC 카운터(102)를 갱신할 수 있다. 이 후에 호스트(101)는 제5 내지 제8 쓰기 커맨드들(WR5~WR8) 및 각각에 대응하는 제5 내지 제8 데이터(D5~D8)를 컨트롤러(110)로 전송하고, WC 카운터(102)를 갱신할 수 있다.
다음으로, 도 1 및 도 5c를 참조하면, 호스트(101)는 읽기 데이터를 읽기 위한 읽기 커맨드(RDC)를 컨트롤러(110)로 전송할 수 있다. 컨트롤러(110)는 읽기 커맨드(RDC)에 응답하여, 호스트(101)로 읽기 데이터(RD)를 전송할 수 있다. 이 때, 컨트롤러(110)는 누적된 WC 해제 정보(RWC)를 읽기 데이터(RD)와 함께 전송할 수 있다. 예를 들어, 컨트롤러(110)는 WC 해제 정보(RWC) 및 읽기 데이터(RD)가 포함된 데이터 패킷을 호스트(101)로 전송할 수 있다.
호스트(101)는 수신된 WC 해제 정보(RWC)를 기반으로 WC 카운터(102)를 갱신할 수 있다. 나머지 동작은 앞서 설명되었으므로, 이에 대한 상세한 설명은 생략된다.
도 6은 본 발명의 실시 예에 따른 컴퓨팅 시스템(20)을 보여주는 블록도이다. 도 6을 참조하면, 컴퓨팅 시스템(20)은 호스트(201) 및 메모리 모듈(200)을 포함할 수 있다. 메모리 모듈(200)은 컨트롤러(210), 램 장치(220), 불휘발성 메모리 장치(230), 및 백업 전원(240)을 포함할 수 있다. 호스트(201), 메모리 모듈(200), 컨트롤러(210), 램 장치(220), 및 불휘발성 메모리 장치(230)는 앞서 설명되었으므로 이에 대한 상세한 설명은 생략된다.
램 장치(220)는 제1 및 제2 영역들(221, 222)을 포함할 수 있다. 제1 및 제2 영역들(221, 222)은 데이터를 저장하기 위한 저장 공간일 수 있다. 메모리 모듈(200)로 전원 공급이 중단된 경우, 제1 영역(221)에 저장된 데이터가 소실될 수 있다. 반면에, 메모리 모듈(200)로 전원 공급이 중단되더라도, 제2 영역(222)에 저장된 데이터는 유지될 수 있다.
예를 들어, 백업 전원(240)은 메모리 모듈(200)로의 전원 공급이 중단된 경우(즉, 서든 파워 오프(SPO) 등) 메모리 모듈(200)로 보조 전원을 공급할 수 있다. 전원 공급이 중단된 경우, 제2 영역(222)에 저장된 데이터는 백업 전원(240)으로부터의 보조 전원을 사용하여 데이터를 유지할 수 있다. 또는 전원 공급이 중단된 경우, 백업 전원(240)으로부터의 보조 전원을 사용하여 제2 영역(222)에 저장된 데이터가 불휘발성 메모리 장치(230)로 플러쉬(flush)될 수 있다. 즉, 전원 공급이 중단되더라도, 제2 영역(222)에 저장된 데이터는 백업 전원(240)을 사용하여 유지될 수 있다. 즉, 램 장치(220) 중 일부 영역(즉, 제2 영역(222))은 전원 백업형 저장 영역(power backed storage region)일 수 있다.
호스트(201)는 WC 카운터(202) 및 PC 카운터(203)를 포함할 수 있다. 컨트롤러(210)는 데이터 버퍼(211), WC 반환부(212), 및 PC(PC; Persist Credit) 반환부(213)를 포함할 수 있다. WC 카운터(202), 데이터 버퍼(211) 및 WC 반환부(212)는 앞서 설명되었으므로 이에 대한 상세한 설명은 생략된다.
PC 카운터(203)는 가용한 PC의 개수를 관리할 수 있다. 예를 들어, 램 버퍼(220)의 제2 영역(221)은 복수의 PC들(PC)로 구분될 수 있다. PC(PC; Persist Credit)은 전원 공급과 무관하게 데이터를 저장할 수 있는 단위 저장 공간을 가리킬 수 있다. 즉, 램 버퍼(220)의 제2 영역(221)이 512KB이고, 하나의 PC의 단위가 4KB인 경우, 램 버퍼(220)의 제2 영역(221)은 128개의 PC들을 포함할 수 있다. 예시적으로, 램 장치(211)의 하나의 PC는 데이터 버퍼(211)의 하나의 WC과 동일한 크기를 가질 수 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다.
예시적인 실시 예에서, 특정한 타입의 쓰기 동작에서, 호스트(201)는 PC을 사용하여 쓰기 데이터를 컨트롤러(210)로 전송할 수 있다. 예를 들어, 호스트(201)는 퍼시스트 쓰기 동작(persist write operation)을 수행할 수 있다. 퍼시스트 쓰기 동작은 전원 공급이 중단되더라도 호스트(201)로부터 제공된 쓰기 데이터의 유지를 보장하는 동작을 가리킨다. 다시 말해서, 전원 공급이 중단되더라도, 퍼시스트 쓰기 동작에 의해 메모리 모듈(200)에 기입된 데이터는 유지되어야 한다.
앞서 설명된 바와 같이, 램 장치(220)의 제2 영역(222)은 전원 공급이 중단되더라도 데이터가 유지되는 저장 영역을 가리킨다. 따라서, 퍼시스트 쓰기 동작에서, 호스트(201)는 램 장치(220)의 제2 영역(222)을 사용하여 쓰기 데이터를 기입할 수 있다. 이 경우, 호스트(220)는 앞서 설명된 WC의 사용과 유사하게, 램 장치(220)의 PC을 사용하여 쓰기 데이터를 전송할 수 있다.
호스트(201)는 퍼시스트 쓰기 동작을 수행한 경우, 쓰기 데이터의 크기 또는 퍼시스트 쓰기 커맨드의 개수를 기반으로 PC 카운터(203)를 갱신(또는 감소)할 수 있다.
예시적인 실시 예에서, 퍼시스트 쓰기 동작에서, 호스트(201)로부터 수신된 쓰기 데이터는 데이터 버퍼(211)의 WC에 먼저 저장되고, 이후에, 제2 영역(222)의 PC으로 전달될 수 있다. 즉, 호스트(201)는 WC 및 PC 모두를 사용하여 퍼시스트 쓰기 동작을 수행할 수 있다. 이 경우, 호스트(201)는 쓰기 데이터의 크기 또는 퍼시스트 쓰기 커맨드의 개수를 기반으로 WC 카운터(202) 및 PC 카운터(203)를 갱신(또는 감소)할 수 있다.
컨트롤러(210)의 PC 반환부(213)는 램 장치(220)의 제2 영역(222)의 PC(PC; Persist Credit) 해제 정보(RPC)를 호스트(201)로 제공할 수 있다. 예를 들어, 앞서 설명된 바와 같이, 퍼시스트 쓰기 동작에서, 램 장치(220)의 제2 영역(222)의 PC들은 호스트(201)에 의해 사용될 수 있다. 이후에, 컨트롤러(210)의 동작에 따라 제2 영역(222)에 저장된 특정 데이터가 불휘발성 메모리 장치(230)로 전달됨으로써, 특정 데이터가 저장된 PC이 해제될 수 있다. PC 반환부(213)는 해제된 PC들의 개수에 대한 정보를 가리키는 PC 해제 정보(RPC)를 호스트(201)로 제공할 수 있다. 예시적으로, PC 해제 정보(RPC)는 WC 해제 정보(RWC)와 유사하게, 비동기 방식(asynchronous scheme)으로 제공될 수 있다. 또는 PC 해제 정보(RPC)는 WC 해제 정보(RWC)와 유사하게, 호스트(101)의 반환 커맨드 또는 읽기 커맨드에 의해 호스트(101)로 제공될 수 있다.
호스트(201)는 PC 해제 정보(RPC)를 기반으로 PC 카운터(203)를 갱신할 수 있다. 예를 들어, PC 해제 정보(RPC)는 해제된 PC들의 개수에 대한 정보를 포함할 수 있다. 호스트(201)는 해제된 PC들의 개수만큼 PC 카운터(203)의 값을 가산할 수 있다.
상술된 바와 같이, 호스트(201)는 WC 카운터(202) 및 PC 카운터(203)를 기반으로 메모리 모듈(200)의 사용 가능한 WC들 및 사용 가능한 PC들의 개수를 관리할 수 있다.
비록 WC 반환부(212) 및 PC 반환부(213)가 서로 독립적인 구성으로서 도시되어 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다. WC 반환부(212), PC 반환부(213), 또는 그것들의 조합은 버퍼 반환부로서 하나의 하드웨어 구성 또는 하나의 소프트웨어 구성으로서 구현될 수 있다. 소프트웨어 형태로 구현된 WC 반환부(212) 및 PC 반환부(213)는 별도의 프로세서에 의해 구동될 수 있다.
도 7a 내지 도 7d 및 도 8은 도 6의 호스트(201) 및 컨트롤러(210)의 동작을 설명하기 위한 도면들이다. 간결한 설명을 위하여, 각 동작에서 불필요한 구성 요소들에 대한 상세한 설명은 생략된다.
도 7a 내지 도 7d 및 도 8을 참조하면, 컴퓨팅 시스템(20)은 호스트(201) 및 메모리 모듈(200)을 포함할 수 있다. 호스트(201)는 WC 카운터(202) 및 PC 카운터(203)를 포함할 수 있다. 메모리 모듈(200)은 컨트롤러(210), 램 장치(220), 및 불휘발성 메모리 장치(230)를 포함할 수 있다. 컨트롤러(210)는 데이터 버퍼(211), WC 반환부(212), 및 PC 반환부(213)를 포함할 수 있다. 각 구성 요소들은 앞서 설명되었으므로, 이에 대한 상세한 설명은 생략된다.
설명의 편의를 위하여, 데이터 버퍼(211)는 8개의 WC들(즉, WC1~WC8)을 포함하고, 램 장치(220)의 제2 영역(222)은 4개의 PC들(PC1~PC4)을 포함하는 것으로 가정한다. 즉, 도 7a에 도시된 바와 같이, 초기 상태에서, 데이터 버퍼(211)에 포함된 WC들(WC1~WC8) 및 램 장치(220)의 제2 영역(222)에 포함된 PC들(PC1~PC4)은 모두 사용 가능한 상태(즉, 해제된 상태이거나 또는 데이터를 저장하지 않은 상태)이므로, WC 카운터(202)의 값은 "8"이고, PC 카운터(203)의 값은 "4"일 것이다.
이후에, 도 7b에 도시된 바와 같이, 호스트(201)는 제1 및 제2 데이터(D1, D2), 및 제1 및 제2 퍼시스트 데이터(PD1, PD2)에 대한 쓰기 동작들을 수행할 수 있다. 제1 및 제2 데이터(D1, D2)에 대한 쓰기 동작들은 일반 쓰기 동작들(normal write operations)이고, 제1 및 제2 퍼시스트 데이터(PD1, PD2)에 대한 쓰기 동작들은 퍼시스트 쓰기 동작들(persist write operations)인 것으로 가정한다. 즉, 제1 및 제2 퍼시스트 데이터(PD1, PD2)는 램 장치(220)의 제2 영역(222) 또는 불휘발성 메모리 장치(230)에 저장되어야 할 것이다.
다시 말해서, 호스트(201)는 2개의 일반 쓰기 커맨드들 및 2개의 퍼시스트 쓰기 커맨드들을 컨트롤러(210)로 전송할 수 있다. 이 경우, 호스트(201)는 2개의 일반 쓰기 커맨드들을 기반으로 WC 카운터(202)의 값을 감산하고, 2개의 퍼시스트 쓰기 커맨드들을 기반으로 WC 카운터(202)의 값 및 PC 카운터(203)의 값을 감산할 수 있다. 예를 들어, 2개의 일반 쓰기 커맨드들이 컨트롤러(210)로 제공되었으므로, 컨트롤러(210)는 WC 카운터(202)의 값을 "-2"만큼 감산할 수 있다.
반면에, 2개의 퍼시스트 쓰기 커맨드들이 컨트롤러(210)로 제공되었으므로, 컨트롤러(210)는 WC 카운터(202)의 값 및 PC 카운터(203)의 값을 각각 "-2"만큼 감산할 수 있다. 이는 일반 쓰기 커맨드의 경우, 데이터 버퍼(211)의 WC들을 사용하여 데이터 전송이 가능하나, 퍼시스트 쓰기 커맨드의 경우, 데이터의 유지를 위하여, 램 장치(220)의 제2 영역(222)의 PC들을 사용하여야 하기 때문이다.
결과적으로, 2개의 일반 쓰기 커맨드들 및 2개의 퍼시스트 쓰기 커맨드들이 컨트롤러(210)로 전송된 경우, 호스트(201)는 WC 카운터(202)의 값을 "-4"만큼 감산할 수 있고, PC 카운터(203)의 값을 "-2"만큼 감산할 수 있다. 이에 따라, 도 7b에 도시된 바와 같이, WC 카운터(202)의 값은 "4"로 설정되고, PC 카운터(203)의 값은 "2"로 설정될 것이다.
예시적으로, 호스트(201)로부터 수신된 제1 및 제2 퍼시스트 데이터(PD1, PD2) 및 제1 및 제2 데이터(D1, D2)는 제1 내지 제4 WC들(WC1~WC4)에 먼저 저장될 수 있다. 이후에, 컨트롤러(210)의 동작에 의해, 제1 내지 제4 WC들(WC1~WC4) 중 일부 WC들이 해제될 수 있다.
예를 들어, 도 7c에 도시된 바와 같이, 컨트롤러(210)의 동작에 따라, 제3 및 제4 WC들(WC3, WC4)에 저장된 제1 및 제2 데이터(D1, D2)가 램 장치(220)로 전달될 수 있다. 이 경우, 앞서 설명된 바와 같이, 제3 및 제4 WC들(WC3, WC4)이 해제될 수 있다.
WC 반환부(212)는 해제된 WC들(WC3, WC4)의 개수에 대한 WC 해제 정보(RWC)를 호스트(201)로 제공할 수 있고, 호스트(201)는 수신된 WC 해제 정보(RWC)를 기반으로 WC 카운터(202)를 갱신할 수 있다. 예를 들어, 상술된 예에서, WC 해제 정보(RWC)는 "+2"의 값과 대응될 수 있다. 호스트(201)는 수신된 WC 해제 정보(RWC)를 기반으로 WC 카운터(202)의 값을 "+2"만큼 증가시킬 수 있다. 이 경우, WC 카운터(202)의 값은 "6"일 것이다.
이후에, 컨트롤러(210)의 동작에 의해, 제1 및 제2 WC들(WC1, WC2)에 저장된 제1 및 제2 퍼시스트 데이터(PD1, PD2)가 제2 영역(222)의 제1 및 제2 PC들(PC1, PC2)에 저장되고, 제1 및 제2 PC들(PC1, PC2)에 저장된 제1 및 제2 쓰기 데이터(DT1, DT2)가 불휘발성 메모리 장치(230)에 저장될 수 있다. 이 경우, 제1 및 제2 PC들(PC1, PC2)이 해제될 수 있다.
예를 들어, 제1 및 제2 퍼시스트 데이터(PD1, PD2)의 지속성(persistence)이 보장되기 위하여, 제1 및 제2 퍼시스트 데이터(PD1, PD2)는 제1 및 제2 PC들(PC1, PC2)을 사용하여 호스트(201)로부터 수신될 수 있다. 즉, 제1 및 제2 퍼시스트 데이터(PD1, PD2)는 제1 및 제2 WC들(WC1, WC2)에 우선 저장되고, 이후에 제1 및 제2 PC들(PC1, PC2)로 전달될 수 있다.
이후에, 제1 및 제2 PC들(PC1, PC2)에 저장된 제1 및 제2 퍼시스트 데이터(PD1, PD2)가 불휘발성 메모리 장치(230)로 전달될 수 있다. 이 경우, 제1 및 제2 퍼시스트 데이터(PD1, PD2)가 불휘발성 메모리 장치(230)로 전달되었으므로, 제1 및 제2 퍼시스트 데이터(PD1, PD2)가 저장된 제1 및 제2 PC들(PC1, PC2)은 호스트(201)에 의해 사용 가능한 상태가 될 것이다. 즉, 제1 및 제2 퍼시스트 데이터(PD1, PD2)가 불휘발성 메모리 장치(230)로 전달됨으로써, 제1 및 제2 PC들(PC1, PC2)이 해제될 수 있다.
PC 반환부(213)는 해제된 PC들의 개수에 대한 PC 해제 정보(RPC)를 호스트(201)로 제공할 수 있고, 호스트(201)는 수신된 PC 해제 정보(PWC)를 기반으로 WC 카운터(202) 및 PC 카운터(203)를 갱신할 수 있다. 예를 들어, 도 7c에 도시된 바와 같이, 2개의 PC들(PC1, PC2)이 해제된 경우, PC 해제 정보(RPC)는 "+2"의 값과 대응될 수 있다. 이 경우, 호스트(201)는 PC 해제 정보(RPC)에 응답하여, WC 카운터(202)의 값 및 PC 카운터(203)의 값을 각각 "+2"만큼 증가시킬 수 있다.
예시적으로, 퍼시스트 쓰기 커맨드에 대한 퍼시스트 데이터가 WC 및 PC 모두에 저장되는 것은 아닐 수 있다. 예를 들어, 도 10에 도시되 바와 같이, 퍼시스트 쓰기 커맨드에 대한 제1 및 제2 퍼시스트 데이터(PD1, PD2)가 제1 및 제2 WC들(WC1, WC2)에 저장될 수 있다. 제1 및 제2 WC들(WC1, WC2)에 저장된 제1 및 제2 퍼시스트 데이터(PD1, PD2)는 PC들(PC1, PC2)을 경유하지 않고, 불휘발성 메모리 장치(230)로 전달될 수 있다. 이 경우, 제1 및 제2 쓰기 데이터(DT1, DT2)를 위하여 사용된 제1 및 제2 PC들(PC1, PC2)이 해제된 것으로 판별될 수 있다.
즉, PC 반환부(213)는 퍼시스트 쓰기 커맨드에 대한 쓰기 데이터가 불휘발성 메모리 장치(230)에 저장된 경우, 퍼시스트 쓰기 커맨드에 대한 쓰기 데이터와 대응하는 PC들이 해제된 것으로 판별할 수 있고, PC 반환부(213)는 해제된 PC들의 개수에 대한 PC 해제 정보(RPC)를 호스트(201)로 전송할 수 있다. 호스트(201)는 수신된 PC 해제 정보(RPC)를 기반으로 WC 카운터(202) 및 PC 카운터(203)를 갱신할 수 있다.
표 2는 각 동작에 따른 WC 카운터(202) 및 PC 카운터(203)의 갱신 방법을 보여준다.
일반 쓰기 커맨드
발행 횟수(m)
퍼시스트 쓰기 커맨드
발행 횟수(i)
WC의
반환 개수 (n)
PC의
반환 개수 (k)
WC 카운터의 변화량 -m -i +n +k
PC 카운터의 변화량 0 -i 0 +k
호스트(201)는 표 2에 기재된 방식을 기반으로 WC 카운터(202) 및 PC 카운터(203)를 갱신할 수 있다. 예를 들어, 일반 쓰기 커맨드는 데이터 영구성에 대한 보장이 필요 없으므로, PC이 사용되지 않는다. 따라서, 일반 쓰기 커맨드가 m회 발행된 경우, 호스트(201)는 WC 카운터(202)의 값을 -m만큼 감산하고, PC 카운터(203)는 갱신되지 않는다. 퍼시스트 쓰기 커맨드는 데이터 영구성이 보장되어야 하므로, PC들이 사용되며, 데이터 전송을 위하여 WC들이 사용된다. 따라서, 퍼시스트 쓰기 커맨드가 i회 발행된 경우, 호스트(201)는 WC 카운터(202)의 값 및 PC 카운터(203)의 값을 각각 -i만큼 감산한다.컨트롤러(210)로부터 n개의 WC이 반환된 경우, 반환된 WC들은 호스트(201)의 쓰기 데이터 전송에 사용될 수 있으므로, 호스트(201)는 WC 카운터(202)의 값을 +n만큼 가산한다. 컨트롤러(210)로부터 k개의 PC가 반환된 경우, 반환된 PC들은 호스트(201)의 퍼시스트 쓰기 커맨드에 대한 쓰기 데이터의 저장에 사용될 수 있으므로, 호스트(201)는 PC 카운터(203)의 값을 각각 +k만큼 가산한다.
도 9는 도 6의 호스트(201)의 동작 방법을 보여주는 순서도이다. 도 6 및 도 9를 참조하면, S211 단계에서, 호스트(201)는 수행될 쓰기 커맨드가 퍼시스트 쓰기 커맨드인지 판별할 수 있다.
수행될 쓰기 커맨드가 지속 커맨드인 경우, S212 단계에서, 호스트(201)는 WC 카운터(202)의 값이 제1 기준치(TH1)보다 큰지, 그리고 PC 카운터(203)의 크기가 제2 기준치(TH2)보다 큰지 판별할 수 있다. 예시적으로, 제1 기준치(TH1) 및 제2 기준치(TH2) 각각은 "0"이거나 또는 동작 모드 퍼시스트 쓰기 커맨드들의 개수에 기반된 양의 정수일 수 있다.
WC 카운터(202)의 값이 제1 기준치(TH1)보다 크지 않거나 또는 PC 카운터(203)의 크기가 제2 기준치(TH2)보다 크지 않은 경우, 호스트(201)는 퍼시스트 쓰기 커맨드에 대한 동작을 수행할 수 없을 것이다. 이는 퍼시스트 쓰기 커맨드를 수행하는데 요구되는 WC 또는 PC이 충분하지 않기 때문이다. 이 경우, S213 단계에서, 호스트(201)는 컨트롤러(214)로부터 PC 해제 정보(RPC)를 읽을 수 있다. PC 해제 정보(RPC)를 수신하는 방법은 앞서 설명된 WC 해제 정보(RWC)를 수신하는 방법과 유사하므로 이에 대한 상세한 설명은 생략된다.
S214 단계에서, 호스트(201)는 PC 해제 정보(RPC)를 기반으로, WC 카운터(202) 및 PC 카운터(203)를 갱신할 수 있다. PC 해제 정보(RPC)에 기반된 WC 카운터(202) 및 PC 카운터(203)의 갱신 방법은 도 7a 내지 도 7d, 도 8, 및 표 2를 참조하여 설명되었으므로, 이에 대한 상세한 설명은 생략된다. S214 단계 이후에, 컨트롤러(210)는 S212 단계를 수행할 수 있다.
WC 카운터(202)의 값이 제1 기준치(TH1)보다 크고 PC 카운터(203)의 크기가 제2 기준치(TH2)보다 큰 경우, S215 단계에서, 호스트(201)는 컨트롤러(210)로 쓰기 데이터를 전송하고, WC 카운터(202) 또는 PC 카운터(203)를 갱신할 수 있다.
S211 단계의 판별 결과가 퍼시스트 쓰기 커맨드가 아님을 가리키는 경우, 호스트(201)는 S216 단계 내지 S218 단계의 동작들을 수행할 수 있다. S216 단계 내지 S218 단계의 동작들은 도 3의 S111 단계 내지 S113 단계의 동작들과 유사하므로, 이에 대한 상세한 설명은 생략된다.
도 10은 도 6의 메모리 모듈(200)의 동작 방법을 보여주는 순서도이다. 도 6 및 도 10을 참조하면, S221 단계에서, 메모리 모듈(200)은 호스트(101)로부터 수신된 커맨드가 퍼시스트 쓰기 커맨드인지 판별할 수 있다. 수신된 커맨드가 퍼시스트 쓰기 커맨드가 아닌 경우(즉, 일발 쓰기 커맨드인 경우), 메모리 모듈(200)은 S221 단계 내지 S223 단계의 동작들을 수행할 수 있다. S221 단계 내지 S223 단계의 동작들은 도 4의 S121 단계 내지 S123 단계의 동작들과 유사하므로 이에 대한 상세한 설명은 생략된다.
수신된 커맨드가 퍼시스트 쓰기 커맨드인 경우, 메모리 모듈(200)은 S224 단계 내지 S229 단계의 동작들을 수행할 수 있다. S224 단계에서, 메모리 모듈(200)은 호스트(201)로부터 데이터를 수신하고, 수신된 데이터를 WC에 저장할 수 있다.
S225 단계에서, 메모리 모듈(200)은 데이터가 WC으로부터 PC으로 이동하였는지 판별할 수 있다. 즉, 메모리 모듈(200)은 WC이 해제되었는지 판별할 수 있다.
데이터가 WC으로부터 PC으로 이동한 경우, S226 단계에서, 메모리 모듈(200)은 WC 해제 정보(RWC)를 누적시킬 수 있다.
S227 단계에서, 메모리 모듈(200)은 데이터가 PC으로부터 불휘발성 메모리 장치(230)로 이동하였는지 판별할 수 있다. 즉, 메모리 모듈(200)은 PC이 해제되었는지 판별할 수 있다.
데이터가 PC으로부터 불휘발성 메모리 장치(230)로 이동한 경우, 메모리 모듈(200)은 PC 해제 정보(RPC)를 누적할 수 있다.
S229 단계에서, 메모리 모듈(200)은 호스트(201)의 제어에 따라, WC 해제 정보(RWC) 또는 PC 해제 정보(RPC)를 호스트(201)로 전송할 수 있다.
예시적으로, S226 단계 또는 S228 단계의 동작은 WC 해제 정보(RWC) 또는 PC 해제 정보(RPC)의 전송 방식에 따라 생략될 수 있다. 예를 들어, WC의 해제 또는 PC의 해제가 발생할 때마다, 메모리 모듈(200)이 호스트(201)로 반환 신호(RTN)를 제공하는 방식을 사용하는 경우, S226 단계 또는 S228 단계의 동작들이 생략될 수 있다.
상술된 순서도에 따른 동작 방법은 예시적인 것이며, 본 발명의 범위가 이에 한정되는 것은 아니다. 본 발명에 따른 메모리 모듈(200)의 동작 방법은 본 발명의 기술적 사상으로부터의 벗어남 없이 다양하게 변형될 수 있다.
도 11은 도 6의 호스트(201) 및 컨트롤러(210)의 동작을 설명하기 위한 타이밍도이다. 도 6 및 도 11을 참조하면, 초기에, WC 카운터(202)의 값은 "4"이고, PC 카운터(203)의 값은 "2"일 수 있다. 이는 호스트(201)에 의해 사용 가능한 WC들의 개수가 4개이고, PC들의 개수가 2개임을 의미한다.
호스트(201)는 WC 카운터(202) 및 PC 카운터(203)를 기반으로 퍼시스트 쓰기 동작 또는 일반 쓰기 동작을 수행할 수 있다. 예를 들어, 호스트(201)는 제1 및 제2 퍼시스트 쓰기 커맨드들(persist write command)(PWR1, PWR2) 및 이에 대응하는 제1 및 제2 퍼시스트 데이터(PD1, PD2)를 컨트롤러(210)로 전송할 수 있다.
앞서 설명된 바와 같이, 호스트(201)는 제1 및 제2 퍼시스트 쓰기 커맨드들(PWR1, PWR2)에 응답하여 WC 카운터(202)의 값 및 PC 카운터(203)의 값을 각각 감산할 수 있다. 즉, 호스트(201)는 제1 퍼시스트 쓰기 커맨드(PWR1)를 전송하고, WC 카운터(202) 및 PC 카운터(203)를 각각 "-1"만큼 감산할 수 있다. 호스트(201)는 제2 퍼시스트 쓰기 커맨드(PWR2)를 전송하고, WC 카운터(202) 및 PC 카운터(203)를 각각 "-1"만큼 감산할 수 있다.
제2 퍼시스트 쓰기 커맨드(PWR2)가 전송된 시점에서, PC 카운터(203)의 값은 "0"일 것이다. 이 경우, 호스트(201)에 의해 사용 가능한 PC이 없으므로, 호스트(201)는 퍼시스트 쓰기 동작을 수행하지 않을 수 있다. 반면에, WC 카운터(202)의 값은 "2"이므로, 호스트(201)는 일반 쓰기 동작을 수행할 수 있다. 즉, 호스트(201)는 제1 및 제2 쓰기 커맨드들(WR1, WR2) 및 이에 대응하는 제1 및 제2 데이터(D1, D2)를 컨트롤러(210)로 전송할 수 있다.
제2 쓰기 커맨드(WR2)가 전송된 시점에서, WC 카운터(202) 및 PC 카운터(203)의 값들은 "0"이기 때문에, 호스트(201)는 쓰기 동작 또는 데이터 전송을 수행하지 않을 수 있다.
제1 시점(t1)에서, 앞서 설명된 바와 같이, 컨트롤러(210)의 동작에 의해 일부 WC들이 해제될 수 있다. 이 경우, 컨트롤러(210)는 호스트(201)로 반환 신호(RTN)를 전송할 수 있다.
호스트(201)는 반환 신호(RTN)에 응답하여 반환 커맨드(RCM)를 컨트롤러(210)로 전송하고, 컨트롤러(210)는 읽기 커맨드(RD)에 응답하여 WC 해제 정보(RWC)를 전송할 수 있다. WC 해제 정보(RWC)는 "+2"의 값과 대응되는 것으로 가정한다. 호스트(201)는 WC 해제 정보(RWC)에 응답하여, WC 카운터(202)의 값을 "+2"만큼 가산할 수 있다.
WC 해제 정보(RWC)를 수신한 시점에서, WC 카운터(202)의 값이 "2"로 갱신되었으므로, 호스트(201)는 일반 쓰기 동작을 수행할 수 있다. 이에 따라, 호스트(201)는 제3 쓰기 커맨드(WR3) 및 이에 대응하는 제3 데이터(D3)를 컨트롤러(210)로 전송할 수 있다. 제3 쓰기 커맨드(WR3)가 컨트롤러(210)로 전송됨에 따라, 호스트(201)는 WC 카운터(202)를 "-1"만큼 감산할 수 있다.
제2 시점(t2)에서, 컨트롤러(210)의 동작에 의해 일부 PC이 해제될 수 있다. 예를 들어, 앞서 설명된 바와 같이, 제1 및 제2 퍼시스트 쓰기 커맨드들(PWR1, PWR2)에 대한 제1 및 제2 퍼시스트 데이터(PD1, PD2)가 불휘발성 메모리 장치(230)에 저장됨에 따라, 2개의 PC들이 해제될 수 있다. 이 경우, 컨트롤러(210)는 반환 신호(RTN)를 호스트(201)로 제공할 수 있고, 호스트(201)는 반환 신호(RTN)에 응답하여 반환 커맨드(RCM)를 컨트롤러(210)로 전송할 수 있다. 컨트롤러(210)는 반환 커맨드(RCM)에 응답하여 PC 해제 정보(RPC)를 호스트(201)로 전송할 수 있다.
호스트(201)는 PC 해제 정보(RPC)를 기반으로 WC 카운터(202) 및 PC 카운터(203)를 갱신할 수 있다. 예를 들어, PC 해제 정보(RPC)가 2개의 PC들이 해제되었음을 가리키는 경우, 호스트(201)는 PC 해제 정보(RPC)를 기반으로 WC 카운터(202) 및 PC 카운터(203)를 각각 "+2"만큼씩 가산할 수 있다.
PC 해제 정보(RPC)를 수신한 시점에서, WC 카운터(202)의 값은 "3"이고, PC 카운터(203)의 값은 "2"이므로, 호스트(201)는 퍼시스트 쓰기 동작 또는 일반 쓰기 동작을 수행할 수 있다. 예를 들어, 호스트(201)는 제3 퍼시스트 쓰기 커맨드(PWR3) 및 이에 대응하는 제6 데이터(DT6)를 컨트롤러(210)로 전송할 수 있다. 제3 퍼시스트 쓰기 커맨드(PWR3)가 컨트롤러(210)로 전송됨에 따라 호스트(201)는 WC 카운터(202)의 값 및 PC 카운터(203)의 값을 각각 "-1"씩 감산할 수 있다.
상술된 바와 같이, 본 발명에 따른 호스트(201)는 퍼시스트 쓰기 동작 또는 일반 쓰기 동작에 따라, WC 카운터(202) 및 PC 카운터(201)를 갱신함으로써, 메모리 모듈(200)의 버퍼 자원을 관리할 수 있다. 또한, 호스트(201)는 컨트롤러(210)로부터 반환된 WC 해제 정보(RWC) 및 PC 해제 정보(WPC)를 기반으로 WC 카운터(202) 및 PC 카운터(201)를 갱신할 수 있다.
예시적으로, WC 해제 정보(RWC) 및 PC 해제 정보(RPC)를 전송하는 방식은 다양하게 구현될 수 있다. 예를 들어, 도 6 및 도 7을 참조하여 설명된 바와 유사하게, WC 반환부(212) 및 PC 반환부(213)는 각각 해제된 WC 및 해제된 PC을 기반으로 WC 해제 정보 및 PC 해제 정보를 누적할 수 있고, 호스트(201)로부터의 반환 커맨드 또는 읽기 커맨드에 응답하여 누적된 정보를 전송할 수 있다.
도 12a 및 도 12b는 도 6의 호스트(201) 및 컨트롤러(210)의 동작을 설명하기 위한 블록도들이다. 간결한 설명을 위하여, 각 동작에서 불필요한 구성 요소들에 대한 상세한 설명은 생략된다.
도 12a 및 도 12b를 참조하면, 컴퓨팅 시스템(20)은 호스트(201) 및 메모리 모듈(200)을 포함할 수 있다. 호스트(201)는 WC 카운터(202) 및 PC 카운터(203)를 포함할 수 있다. 메모리 모듈(200)은 컨트롤러(210), 램 버퍼 장치(220), 및 불휘발성 메모리 장치(230)를 포함할 수 있다.
설명의 편의를 위하여, 호스트(201)의 퍼시스트 쓰기 동작에 따라 제1 및 제2 WC들(WC1, WC2) 및 제1 및 제2 PC들(PC1, PC2)이 사용된 것으로 가정한다. 즉, 도 12a에 도시된 구성 이전에, WC 카운터(202)의 값은 "6"이고, PC 카운터(203)의 값은 "2"일 것이다. 이후에, 도 12a에 도시된 바와 같이, 컨트롤러(210)의 동작에 따라 제1 및 제2 WC들(WC1, WC2)에 저장된 쓰기 데이터가 제1 및 제2 PC들(PC1, PC2)에 저장될 수 있다. 이 경우, 제1 및 제2 WC들(WC1, WC2)은 해제될 것이다.
WC 반환부(212)는 해제된 제1 및 제2 WC들(WC1, WC2)에 대한 WC 해제 정보(RWC)를 호스트(201)로 제공할 수 있고, 호스트(201)는 수신된 WC 해제 정보(RWC)를 기반으로 WC 카운터(202)를 갱신할 수 있다. 도 12a의 실시 예에서, 해제된 WC들의 개수는 2개이므로, 결과적으로, 호스트(201)는 WC 카운터(202)의 값을 "+2"만큼 가산할 수 있다.
이후에, 도 12b에 도시된 바와 같이, 컨트롤러(210)의 동작에 따라 제1 및 제2 PC들(PC1, PC2)에 저장된 쓰기 데이터가 불휘발성 메모리 장치(230)에 저장될 수 있다. 이 경우, 제1 및 제2 PC들(PC1, PC2)이 해제될 것이다.
PC 반환부(213)는 해제된 제1 및 제2 PC들(PC1, PC2)에 대한 PC 해제 정보(RPC)를 호스트(201)로 전송할 수 있고, 호스트(201)는 수신된 PC 해제 정보(RPC)를 기반으로 PC 카운터(203)를 갱신할 수 있다. 도 12b의 실시 예에서, 해제된 PC들의 개수는 2개이므로, 결과적으로, 호스트(201)는 PC 카운터(203)의 값을 "+2"만큼 가산할 수 있다.
상술된 바와 같이, 호스트(201)는 메모리 모듈(200)의 WC들 및 PC들을 별도로 관리할 수 있으며, 컨트롤러(210)로부터 수신된 WC 해제 정보(RWC) 및 PC 해제 정보(RPC)를 기반으로 WC 카운터(202) 및 PC 카운터(203)를 각각 개별적으로 갱신할 수 있다. 표 3은 도 14a 및 도 14b의 실시 예들에 따른 WC 카운터(202) 및 PC 카운터(203)의 갱신 방법을 보여준다.
일반 쓰기 커맨드
발행 횟수(m)
퍼시스트 쓰기 커맨드
발행 횟수(i)
WC의
반환량(n)
PC의
반환량(k)
WC 카운터의 변화량 -m -i +n 0
PC 카운터의 변화량 0 -i 0 +k
표 3을 참조하면, 일반 쓰기 커맨드 발행 및 퍼시스트 쓰기 커맨드 발생에 대한 구성은 표 2의 구성과 동일하므로, 이에 대한 설명은 생략된다. 컨트롤러(210)로부터 반환된 WC들의 개수가 n개인 경우, 호스트(210)는 WC 카운터(202)의 값을 "+n"만큼 가산할 수 있고, 이 때, PC 카운터(203)의 변화량은 "0"일 수 있다. 컨트롤러(210)로부터 반환된 PC들의 개수가 k개인 경우, 호스트(210)는 PC 카운터(203)의 값을 "+k"만큼 가산할 수 있고, 이 때, WC 카운터(202)의 변화량은 "0"일 수 있다. 즉, 도 7a 내지 도 7d, 도 8, 및 표 2를 참조하여 설명된 실시 예들에서, 호스트(201)는 PC들의 반환량을 기반으로 WC 카운터 및 PC 카운터 모두를 갱신하였으나, 도 14a, 도 14b, 및 표 3을 참조하여 설명된 실시 예들에서, 호스트(201)는 WC 해제 정보(RWC)를 기반으로 WC 카운터(202)만 갱신하고, PC 해제 정보(RPC)를 기반으로 PC 카운터(203)만 갱신하도록 구성된다. 즉, 호스트(201)는 WC 해제 정보(RWC) 및 PC 해제 정보(RPC)를 기반으로 WC 카운터(202) 및 PC 카운터(203)를 각각 관리할 수 있다.
도 13a 내지 도 13d는 도 12a 내지 도 12b의 실시 예에 따른 호스트(201) 및 컨트롤러(210)의 동작을 설명하기 위한 타이밍도들이다. 간결한 설명을 위하여, 앞서 설명된 구성 요소들과 중복되는 설명은 생략된다.
도 6 및 도 13a를 참조하면, 초기에, WC 카운터(202)의 값은 "4"이고, PC 카운터(203)의 값은 "2"일 수 있다. 호스트(201)가 제1 퍼시스트 쓰기 커맨드(PWR1)를 전송한 시점부터 제2 시점(t2)까지의 동작은 도 11의 동작과 유사하므로 이에 대한 상세한 설명은 생략된다. 제2 시점(t2)에서, 컨트롤러(210)의 동작에 따라 일부 PC들이 해제될 수 있다. 컨트롤러(210)는 반환 신호(RTN)를 호스트(201)로 전송할 수 있다. 호스트(201)는 반환 신호(RTN)에 응답하여 읽기 커맨드(RD)를 컨트롤러(210)로 전송하고, 컨트롤러(210)는 읽기 커맨드(RD)에 응답하여 PC 해제 정보(RPC)를 호스트(201)로 전송할 수 있다.
도 11을 참조하여 설명된 바와 달리, 호스트(201)는 수신된 PC 해제 정보(RPC)를 기반으로 WC 카운터(202)는 갱신하지 않고, PC 카운터(203)만 갱신할 수 있다. 예를 들어, 제1 시점(t1)에서 해제된 WC들은 컨트롤러(210)가 제1 및 제2 퍼시스트 데이터(PD1, PD2)를 WC들로부터 PC들로 전달함으로써 해제된 WC들일 수 있다. 제2 시점(t2)에서 해제된 PC들은 컨트롤러(210)가 제1 및 제2 퍼시스트 데이터(PD1, PD2)를 PC들로부터 불휘발성 메모리 장치(230)로 전달함으로써 해제된 WC들일 수 있다. 따라서, 호스트(201)는 표 3을 참조하여 설명된 바와 같이, PC 해제 정보(RPC)를 기반으로 PC 카운터(203)만 갱신할 수 있다.
다음으로, 도 13b 내지 도 13d에서, 호스트(201)는 제1 및 제2 퍼시스트 커맨드들(PWR1, PWR2), 이에 대응하는 제1 및 제2 퍼시스트 데이터(PD1, PD2), 제1 및 제2 일반 쓰기 커맨드들(WR1, WR2) 및 이에 대응하는 제1 및 제2 데이터(D1, D2)를 컨트롤러(210)로 전송할 수 있다.
도 6 및 도 7을 참조하여 설명된 실시 예와 유사하게, WC 반환부(212)는 제1 및 제2 퍼시스트 데이터(PD1, PD2) 및 제1 및 제2 데이터(D1, D2)가 저장된 WC이 해제될 때마다, WC 해제 정보(RWC)를 누적할 수 있다. 이와 함께, PC 반환부(213)는 PC이 해제될 때마다, PC 해제 정보(RPC)를 누적할 수 있다.
예를 들어, 제1 내지 제4 시점들(t1, t2, t3, t4) 각각에서, 제1 및 제2 퍼시스트 데이터(PD1, PD2)가 WC으로부터 PC으로 이동할 수 있고, 제1 및 제2 데이터(D1, D2)가 WC으로부터 램 장치(220)의 제1 영역(221) 또는 불휘발성 메모리 장치(230)로 이동할 수 있다. 이 경우, 각 시점에서, WC이 해제되고, 이에 따라, WC 반환부(212)는 WC 반환 정보(RWC)를 "+1"만큼 누적시킨다.
또한, 제2 및 제3 시점들(t2, t3) 각각에서, PC에 저장된 제1 및 제2 퍼시스트 데이터(PD1, PD2)가 불휘발성 메모리 장치(230)로 이동할 수 있다. 이 경우, 제2 및 제3 시점들(t2, t3) 각각에서, PC이 해제되고, PC 반환부(213)는 PC 반환 정보(RPC)를 "+1"만큼 누적시킨다. 결과적으로, 제4 시점(t4)에서, 누적된 WC 반환 정보(RWC) 및 누적된 PC 반환 정보(RPC)는 각각 "4" 및 "2"일 것이다.
도 13b에서, 컨트롤러(210)는 호스트(201)로부터 제1 반환 커맨드(RCM1)를 수신할 수 있다. 제1 반환 커맨드(RCM1)는 호스트(201)가 가용한 WC을 확보하기 위하여 컨트롤러(210)로 전송하는 커맨드일 수 있다.
컨트롤러(210)는 제1 반환 커맨드(RCM1)에 응답하여, WC 반환 정보(RWC)를 호스트(201)로 전송할 수 있고, 호스트(201)는 수신된 WC 반환 정보(RWC)를 기반으로 WC 카운터(202)를 갱신할 수 있다.
호스트(201)는 제3 일반 쓰기 커맨드(WR3) 및 제3 데이터(D3)를 전송할 수 있다. 이후에, 호스트(201)는 제2 반환 커맨드(RCM2)를 컨트롤러(210)로 전송할 수 있다. 제2 반환 커맨드(RCM2)는 호스트(201)가 가용한 PC을 확보하기 위하여 컨트롤러(210)로 전송하는 커맨드일 수 있다.
컨트롤러(210)는 제2 반환 커맨드(RCM2)에 응답하여, PC 해제 정보(RWC)를 호스트(201)로 전송할 수 있고, 호스트(201)는 수신된 PC 해제 정보(RWC)를 기반으로 PC 카운터(203)를 갱신할 수 있다.
다음으로, 도 13c를 참조하면, 호스트(201)는 제3 반환 커맨드(RCM3)를 컨트롤러(210)로 전송할 수 있다. 제3 반환 커맨드(RCM3)는 앞서 설명된 제1 및 제2 반환 커맨드들(RCM1, RCM2)과 달리, 호스트(201)가 가용한 WC 및 가용한 PC 모두를 확보하기 위하여 컨트롤러(210)로 전송하는 커맨드일 수 있다.
컨트롤러(210)는 제3 반환 커맨드(RCM3)에 응답하여, WC 해제 정보(RWC) 및 PC 해제 정보(RPC)를 호스트(201)로 전송할 수 있고, 호스트(201)는 수신된 WC 해제 정보(RWC) 및 PC 해제 정보(RPC)를 기반으로 WC 카운터(202) 및 PC 카운터(203)를 각각 갱신할 수 있다.
다음으로, 도 13d를 참조하면, 호스트(201)는 읽기 커맨드(RDC)를 컨트롤러(210)로 전송할 수 있다. 컨트롤러(210)는 읽기 커맨드(RDC)에 응답하여, 읽기 데이터(RD)를 호스트(201)로 전송할 수 있다. 이 때, 누적된 WC 해제 정보 또는 누적된 PC 해제 정보가 존재하는 경우, 컨트롤러(210)는 읽기 데이터(RD)와 함께, WC 해제 정보(RWC) 및 PC 해제 정보(RPC)를 호스트(201)로 전송할 수 있고, 호스트(201)는 수신된 WC 해제 정보(RWC) 및 PC 해제 정보(RPC)를 기반으로 WC 카운터(202) 및 PC 카운터(203)를 각각 갱신할 수 있다.
상술된 바와 같이, 컨트롤러(210)의 WC 반환부(212) 및 PC 반환부(213)는 WC 및 PC의 해제에 따라 WC 해제 정보(RWC) 및 PC 해제 정보(RPC)를 누적시킬 수 있고, 호스트(201)로부터의 반환 커맨드 또는 읽기 커맨드에 응답하여 누적된 정보를 호스트(201)로 전송할 수 있다.
도 14는 도 6의 WC 카운터(202) 및 PC 카운터(203)의 예를 보여주는 도면이다. 예시적으로, 앞서 설명된 실시 예들에서, WC 카운터(102, 202) 또는 PC 카운터(203)는 컨트롤러(110, 210)의 WC들 또는 PC들 중 사용 가능한 WC들의 개수 또는 사용 가능한 PC들의 개수를 관리하도록 구성된다.
그러나, 본 발명의 범위가 이에 한정되는 것은 아니며, 도 17에 도시된 바와 같이, WC 카운터(202) 및 PC 카운터(203)는 각각 비트맵 형태로 구현될 수 있다. 예를 들어, WC 카운터(202)는 비트맵 형태로 구현될 수 있으며, 각 비트들은 데이터 버퍼(211)의 복수의 WC들(WC1~WCn)과 각각 대응될 수 있다. 쓰기 동작 시, 호스트(201)는 사용된 WC에 대응하는 비트의 값을 바꿈으로써, 사용된 WC 및 사용 가능한 WC을 각각 관리할 수 있다.
마찬가지로, PC 카운터(203)는 비트맵 형태로 구현될 수 있으며, 각 비트들은 램 장치(220)의 제2 영역(222)의 복수의 PC들(PC1~PCm)과 각각 대응될 수 있다. 쓰기 동작 시, 호스트(201)는 사용된 PC에 대응하는 비트의 값을 바꿈으로써, 사용된 PC 및 사용 가능한 PC을 각각 관리할 수 있다.
상술된 비트맵 형태의 WC 카운터 및 PC 카운터의 구성들은 예시적인 것이며, 본 발명의 범위가 이에 한정되는 것은 아니다. WC 카운터 및 PC 카운터의 구성들은 본 발명의 기술적 사상으로부터의 벗어남 없이 다양하게 변형될 수 있다.
도 15는 본 발명의 실시 예에 따른 컴퓨팅 시스템(30)을 보여주는 블록도이다. 도 15를 참조하면, 컴퓨팅 시스템(30)은 호스트(310) 및 메모리 모듈(300)을 포함할 수 있다. 호스트(301)는 WC 카운터(302) 및 PC 카운터(303)를 포함할 수 있다. 메모리 모듈(300)은 컨트롤러(310), 불휘발성 메모리 장치(330), 및 백업 전원(340)을 포함할 수 있다. 컨트롤러(310)는 제1 버퍼(311), WC 반환부(312), PC 반환부(313), 및 제2 버퍼(320)를 포함할 수 있다. 제2 버퍼(320)는 제1 및 제2 영역들(321, 322)을 포함할 수 있다. 도 15의 각 구성 요소들은 앞서 설명되었으므로, 이에 대한 상세한 설명은 생략된다.
예시적으로, 제1 버퍼(311)는 앞서 설명된 데이터 버퍼와 대응될 수 있고, 제2 버퍼(320)는 앞서 설명된 램 장치와 대응될 수 있다. 예를 들어, 제1 버퍼(311)는 앞서 설명된 WC들(WC)을 포함할 수 있고, 제2 버퍼(320)(특히, 제2 영역(322))은 PC들(PC)을 포함할 수 있다. 즉, 도 18은 제2 버퍼(320)가 컨트롤러(310)에 포함된 구성을 보여준다. 상술된 바와 같이, 컨트롤러(310)는 PC을 포함할 수 있으며, 앞서 설명된 바와 유사하게 동작할 수 있다.
도 16은 본 발명에 따른 메모리 모듈의 예시적인 블록도이다. 도 16을 참조하면, 메모리 모듈(1000)은 컨트롤러(1100), 불휘발성 메모리 장치들(1200), 및 DRAM 장치들(1300)를 포함할 수 있다. 컨트롤러(1100)는 WC들(WC) 및 PC들(PC)을 포함할 수 있다. 컨트롤러(1100)는 데이터 라인(DQ)을 통해 수신된 데이터를 불휘발성 메모리 장치(1200)에 기입하거나 또는 DRAM 장치(1300)에 기입할 수 있다. 예시적으로, 메모리 모듈(1000) 또는 컨트롤러(1100)는 외부 장치와 DDR 인터페이스를 통해 통신할 수 있다.
예시적으로, 컨트롤러(1200)는 도 1 내지 도 15를 참조하여 설명된 방법을 기반으로 동작할 수 있다. 예를 들어, 컨트롤러(1200)는 데이터 라인(DQ)을 통해 수신된 쓰기 데이터를 WC에 저장할 수 있고, WC이 해제된 경우, WC 해제 정보(RWC)를 데이터 라인(DQ)을 통해 외부 장치로 제공할 수 있다. 또는 컨트롤러(1200)는 WC 및 PC을 사용하여 데이터 라인(DQ)을 통해 수신된 쓰기 데이터를 저장할 수 있고, WC 또는 PC이 해제된 경우, WC 해제 정보(RWC) 또는 PC 해제 정보(RPC)를 데이터 라인(DQ)을 통해 외부 장치로 제공할 수 있다.
비록 도면에 도시되지는 않았으나, PC은 DRAM 장치들(1300) 중 일부 영역에 포함될 수 있고, 일부 영역은 별도의 백업 전원을 사용하여 전원 공급과 무관하게 데이터를 유지할 수 있다.
도 17은 본 발명에 따른 메모리 모듈의 예시적인 블록도이다. 도 17을 참조하면, 메모리 모듈(2000)은 컨트롤러(2100), 복수의 메모리 장치들(2210~2280), 및 복수의 데이터 버퍼들(DB)을 포함할 수 있다. 예시적으로, 메모리 모듈(2000)은 외부 장치(예를 들어, 호스트)와 DDR 인터페이스를 기반으로 통신할 수 있다. 예시적으로, 메모리 모듈(2000)의 컨트롤러(2100)는 외부로부터의 커맨드(CMD)에 응답하여 복수의 메모리 장치들(2210~2280) 및 데이터 버퍼들(DB)을 제어하도록 구성될 수 있다.
복수의 데이터 버퍼들(DB)은 외부 장치와 데이터 라인들(DQ) 및 데이터 스트로브 라인들(DQS)을 통해 데이터를 송수신할 수 있고, 외부로부터 수신된 쓰기 데이터를 복수의 메모리 장치들(2210~2280)로 각각 전송할 수 있다.
도 17에 도시된 메모리 모듈(2000)의 구성은 예시적인 것이며, 본 발명의 범위가 이에 한정되는 것은 아니다. 예를 들어, 메모리 모듈(2000)은 복수의 데이터 버퍼들(DB)이 생략된 RDIMM 구조를 가질 수 있다. 또는 컨트롤러(2100)가 메모리 모듈(2000)로 제공되는 복수의 데이터 신호들(DQ) 및 데이터 스트로브 신호(DQS)을 수신하고, 컨트롤러(2100)가 수신된 신호를 기반으로 복수의 메모리 장치들(2210~2280)을 제어할 수 있다.
도 18은 본 발명에 따른 메모리 모듈이 적용된 컴퓨팅 시스템을 예시적으로 보여주는 블록도이다. 도 18을 참조하면, 사용자 시스템(3000)은 프로세서(3001) 및 복수의 메모리들(3110~3140)을 포함할 수 있다.
프로세서(3001)는 컨트롤러(3002)를 포함할 수 있다. 컨트롤러(3002)는 버스(3003)를 통해 복수의 메모리들(3110~3140)과 통신할 수 있다. 예시적으로, 버스(3003)는 복수의 메모리들(3110~3140) 각각과 연결된 전용 버스들 또는 복수의 메모리들(3110~3140)과 공유되는 공용 버스를 포함할 수 있다. 예시적으로, 복수의 메모리들(3110~3140) 중 적어도 일부는 도 1 내지 도 17을 참조하여 설명된 메모리 모듈이거나 또는 도 1 내지 도 17을 참조하여 설명된 동작 방법을 기반으로 동작할 수 있다.
또는, 복수의 메모리들(3110~3140) 중 적어도 일부는 불휘발성 메모리를 포함하고, 나머지 일부는 휘발성 메모리를 포함할 수 있다. 휘발성 메모리를 포함하는 메모리 모듈은 불휘발성 메모리를 포함하는 메모리 모듈의 캐시 메모리 또는 버퍼 메모리로서 사용될 수 있다. 즉, 복수의 메모리들(3110~3140) 중 일부는 PC을 포함하는 램 장치 또는 버퍼로서 사용될 수 있다. 예시적으로, 컨트롤러(3002)는 도 1 내지 도 17을 참조하여 설명된 동작 방법을 기반으로 동작할 수 있다. 또는 프로세서(3001)는 도 1 내지 도 17을 참조하여 설명된 방법을 기반으로 WC들 또는 PC들을 관리할 수 있다.
상술된 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.

Claims (16)

  1. 복수의 WC들(Write Credits) 및 복수의 PC들(Persist Credits)을 포함하는 메모리 모듈과 통신하도록 구성된 호스트 장치의 동작 방법에 있어서,
    상기 메모리 모듈로 퍼시스트 쓰기 커맨드(persist write command)를 전송하는 단계;
    상기 퍼시스트 쓰기 커맨드를 전송한 것에 응답하여, WC 카운터의 제1 값 및 PC 카운터의 제2 값을 각각 감소시키는 단계;
    상기 메모리 모듈로 제1 읽기 커맨드를 전송하는 단계;
    상기 메모리 모듈로부터 상기 제1 읽기 커맨드에 대응하는 읽기 데이터, 제1 해제 정보, 및 제2 해제 정보를 수신하는 단계;
    상기 제1 해제 정보에 응답하여 상기 WC 카운터의 상기 제1 값을 증가시키는 단계; 및
    상기 제2 해제 정보에 응답하여, 상기 PC 카운터의 상기 제2 값을 증가시키는 단계를 포함하고,
    상기 WC 카운터의 상기 제1 값은 상기 복수의 WC들 중 가용한 WC들의 개수를 가리키고,
    상기 PC 카운터의 상기 제2 값은 상기 복수의 PC들 중 가용한 PC들의 개수를 가리키고,
    상기 퍼시스트 쓰기 커맨드는 파워 오프시 쓰기 데이터의 지속성을 보장하는 퍼시스트 동작을 위한 커맨드이고,
    상기 제1 해제 정보는 상기 복수의 WC들 중 상기 메모리 모듈의 제1 동작에 의해 가용하도록 해제된 WC들의 개수를 가리키고,
    상기 제2 해제 정보는 상기 복수의 PC들 중 상기 메모리 모듈의 제2 동작에 의해 가용하도록 해제된 PC들의 개수를 가리키는 동작 방법.
  2. 제 1 항에 있어서,
    상기 제1 동작은 상기 복수의 WC들 중 적어도 하나에 저장된 데이터를 상기 복수의 PC들 중 적어도 하나로 이동시키는 동작이고,
    상기 제2 동작은 상기 복수의 PC들 중 상기 적어도 하나에 저장된 데이터를 상기 메모리 모듈의 불휘발성 메모리로 이동시키는 동작인 동작 방법.
  3. 제 1 항에 있어서,
    상기 제1 동작은 상기 복수의 WC들 중 적어도 하나에 저장된 데이터를 상기 복수의 PC들 중 적어도 하나로 이동시키는 동작이고,
    상기 제2 동작은 상기 복수의 WC들 중 적어도 하나에 저장된 데이터를 상기 메모리 모듈의 불휘발성 메모리로 이동시키는 동작인 동작 방법.
  4. 제 1 항에 있어서,
    상기 메모리 모듈로 노멀 쓰기 커맨드를 전송하는 단계; 및
    상기 노멀 쓰기 커맨드를 전송한 것에 응답하여, 상기 WC 카운터의 상기 제1 값을 감소시키는 단계를 더 포함하는 동작 방법.
  5. 제 1 항에 있어서,
    상기 WC 카운터의 상기 제1 값 및 상기 PC 카운터의 상기 제2 값 각각은 상기 퍼시스트 쓰기 커맨드를 전송한 것에 응답하여, N만큼 감소되고, 상기 N은 상기 퍼시스트 쓰기 커맨드의 퍼시스트 쓰기 데이터에 대응하는 단위 버퍼들의 개수인 동작 방법.
  6. 제 5 항에 있어서,
    상기 단위 버퍼들 각각의 크기는 4KB인 동작 방법.
  7. 제 1 항에 있어서,
    상기 퍼시스트 쓰기 커맨드를 상기 메모리 모듈로 전송하는 단계는:
    상기 WC 카운터의 상기 제1 값 및 상기 PC 카운터의 상기 제2 값 각각을 기준 값과 비교하는 단계; 및
    상기 WC 카운터의 상기 제1 값 및 상기 PC 카운터의 상기 제2 값 각각이 상기 기준 값보다 크거나 같은 경우: 상기 퍼시스트 쓰기 커맨드를 상기 메모리 모듈로 전송하고,
    상기 WC 카운터의 상기 제1 값 및 상기 PC 카운터의 상기 제2 값 각각이 상기 기준 값보다 작은 경우:
    상기 메모리 모듈로 리턴 커맨드를 전송하는 단계;
    상기 메모리 모듈로부터 상기 리턴 커맨드에 대응하는 제3 해제 정보를 수신하는 단계; 및
    상기 제3 해제 정보에 응답하여, 상기 WC 카운터의 상기 제1 값 및 상기 PC 카운터의 상기 제2 값을 증가시키는 단계를 포함하는 동작 방법.
  8. 제 7 항에 있어서,
    상기 기준 값은 상기 퍼시스트 쓰기 커맨드의 퍼시스트 쓰기 데이터에 대응하는 단위 버퍼들의 개수인 동작 방법.
  9. 제 1 항에 있어서,
    상기 메모리 모듈로부터 제3 해제 정보를 수신하는 단계; 및
    상기 제3 해제 정보에 응답하여, 상기 WC 카운터의 상기 제1 값 및 상기 PC 카운터의 상기 제2 값을 증가시키는 단계를 더 포함하는 동작 방법.
  10. 제 1 항에 있어서,
    상기 메모리 모듈은 NVDIMM(nonvolatile dual in-line memory module)인 동작 방법.
  11. 제 1 항에 있어서,
    상기 제1 해제 정보 및 상기 제2 해제 정보는 비동기 방식으로 수신되는 동작 방법.
  12. 메모리 모듈 및 호스트 장치를 포함하는 메모리 시스템의 동작 방법에 있어서,
    상기 메모리 모듈은 복수의 WC들(Write Credits), 복수의 PC들(Persist Credits), 및 불휘발성 메모리 장치를 포함하고, 상기 호스트 장치는 WC 카운터 및 PC 카운터를 포함하고,
    상기 메모리 시스템의 동작 방법은:
    상기 호스트 장치에 의해, 메모리 모듈로 퍼시스트 쓰기 커맨드를 전송하는 단계;
    상기 호스트 장치에 의해, 상기 퍼시스트 쓰기 커맨드를 전송한 것에 응답하여, 상기 WC 카운터의 제1 값 및 상기 PC 카운터의 제2 값을 감소시키는 단계;
    상기 메모리 모듈에 의해, 상기 퍼시스트 쓰기 커맨드에 응답하여, 상기 퍼시스트 쓰기 커맨드에 대응하는 퍼시스트 쓰기 데이터를 상기 복수의 WC들 중 적어도 하나에 저장하는 단계;
    상기 메모리 모듈에 의해, 상기 복수의 WC들 중 상기 적어도 하나에 저장된 상기 퍼시스트 쓰기 데이터를 상기 복수의 PC들 중 적어도 하나로 이동시키는 제1 동작을 수행하는 단계;
    상기 메모리 모듈에 의해, 상기 복수의 PC들 중 상기 적어도 하나에 저장된 상기 퍼시스트 쓰기 데이터를 상기 불휘발성 메모리 장치로 이동시키는 제2 동작을 수행하는 단계;
    상기 호스트 장치에 의해, 상기 메모리 모듈로 읽기 커맨드를 전송하는 단계;
    상기 메모리 모듈에 의해, 상기 읽기 커맨드에 응답하여, 상기 읽기 커맨드에 대응하는 읽기 데이터, 제1 해제 정보, 및 제2 해제 정보를 상기 호스트 장치로 전송하는 단계;
    상기 호스트 장치에 의해, 상기 제1 해제 정보에 응답하여, 상기 WC 카운터의 상기 제1 값을 증가시키는 단계; 및
    상기 호스트 장치에 의해, 상기 제2 해제 정보에 응답하여, 상기 PC 카운터의 상기 제2 값을 증가시키는 단계를 포함하고,
    상기 제1 해제 정보는 상기 복수의 WC들 중 상기 메모리 모듈의 상기 제1 동작에 의해 가용하도록 해제된 WC들의 개수를 가리키고,
    상기 제1 해제 정보는 상기 복수의 PC들 중 상기 메모리 모듈의 상기 제2 동작에 의해 가용하도록 해제된 PC들의 개수를 가리키는 동작 방법.
  13. 제 12 항에 있어서,
    상기 메모리 모듈에 의해, 상기 복수의 WC들 중 상기 적어도 하나에 저장된 상기 퍼시스트 쓰기 데이터를 상기 불휘발성 메모리 장치로 이동시키는 단계;
    상기 메모리 모듈에 의해, 상기 상기 복수의 WC들 중 상기 적어도 하나에 저장된 상기 퍼시스트 쓰기 데이터를 상기 불휘발성 메모리 장치로 이동시킨 것에 응답하여, 제3 해제 정보를 상기 호스트 장치로 전송하는 단계; 및
    상기 호스트 장치에 의해, 상기 제3 해제 정보에 응답하여, 상기 WC 카운터의 상기 제1 값 및 상기 PC 카운터의 상기 제2 값을 증가시키는 단계를 더 포함하는 동작 방법.
  14. 제 12 항에 있어서,
    상기 호스트 장치에 의해 상기 메모리 모듈로 퍼시스트 쓰기 커맨드를 전송하는 단계는:
    상기 호스트 장치에 의해, 상기 WC 카운터의 상기 제1 값 및 상기 PC 카운터의 상기 제2 값 각각을 기준 값과 비교하는 단계; 및
    상기 WC 카운터의 상기 제1 값 및 상기 PC 카운터의 상기 제2 값 각각이 상기 기준 값보다 크거나 같은 경우: 상기 호스트 장치에 의해, 상기 퍼시스트 쓰기 커맨드를 상기 메모리 모듈로 전송하고,
    상기 WC 카운터의 상기 제1 값 및 상기 PC 카운터의 상기 제2 값 각각이 상기 기준 값보다 작은 경우:
    상기 호스트 장치에 의해, 상기 메모리 모듈로 리턴 커맨드를 전송하는 단계;
    상기 메모리 모듈에 의해, 상기 리턴 커맨드에 대응하는 제3 해제 정보를 상기 호스트 장치로 전송하는 단계; 및
    상기 호스트 장치에 의해, 상기 제3 해제 정보에 응답하여, 상기 WC 카운터의 상기 제1 값 및 상기 PC 카운터의 상기 제2 값을 증가시키는 단계를 포함하는 동작 방법.
  15. 복수의 WC들(Write Credits), 복수의 PC들(Persist Credits), 및 불휘발성 메모리 장치를 포함하는 메모리 모듈의 동작 방법에 있어서,
    호스트 장치로부터 퍼시스트 데이터를 수신하는 단계;
    상기 복수의 WC들 중 적어도 하나에 상기 퍼시스트 데이터를 저장하는 단계;
    상기 복수의 WC들 중 상기 적어도 하나로부터 상기 복수의 PC들 중 적어도 하나로 상기 퍼시스트 데이터를 이동시키는 제1 동작을 수행하는 단계;
    상기 제1 동작을 기반으로 제1 해제 정보를 누적하는 단계;
    상기 복수의 PC들 중 상기 적어도 하나로부터 상기 퍼시스트 데이터를 상기 불휘발성 메모리 장치로 이동시키는 제2 동작을 수행하는 단계;
    상기 제2 동작을 기반으로 제2 해제 정보를 누적하는 단계;
    상기 호스트 장치로부터 읽기 커맨드를 수신하는 단계;
    상기 읽기 커맨드에 응답하여, 상기 읽기 커맨드에 대응하는 읽기 데이터, 상기 누적된 제1 해제 정보, 및 상기 누적된 제2 해제 정보를 포함하는 데이터 패킷을 상기 호스트 장치로 전송하는 단계; 및
    상기 데이터 패킷을 전송한 이후에, 상기 누적된 제1 해제 정보 및 상기 누적된 제2 해제 정보를 리셋하는 단계를 포함하는 동작 방법.
  16. 제 15 항에 있어서,
    상기 복수의 WC들 각각은 메모리 모듈의 컨트롤러의 단위 버퍼이고,
    상기 복수의 PC들 각각은 상기 메모리 모듈의 RAM 장치의 단위 저장소인 동작 방법.


KR1020180019329A 2018-02-01 2018-02-19 호스트의 동작 방법, 메모리 모듈의 동작 방법, 및 메모리 시스템의 동작 방법 KR102549591B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US16/103,058 US11048645B2 (en) 2018-02-01 2018-08-14 Memory module, operation method therof, and operation method of host
CN201811580428.2A CN110109612B (zh) 2018-02-01 2018-12-24 存储器模块及其操作方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201862625044P 2018-02-01 2018-02-01
US62/625,044 2018-02-01

Publications (2)

Publication Number Publication Date
KR20190093475A KR20190093475A (ko) 2019-08-09
KR102549591B1 true KR102549591B1 (ko) 2023-06-30

Family

ID=67613668

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180019329A KR102549591B1 (ko) 2018-02-01 2018-02-19 호스트의 동작 방법, 메모리 모듈의 동작 방법, 및 메모리 시스템의 동작 방법

Country Status (1)

Country Link
KR (1) KR102549591B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220053973A (ko) 2020-10-23 2022-05-02 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130130484A (ko) * 2012-05-22 2013-12-02 삼성전자주식회사 읽기 카운터 로직을 포함하는 플래시 메모리 시스템
KR20150082010A (ko) * 2014-01-07 2015-07-15 삼성전자주식회사 불휘발성 메모리 파일 시스템에서의 마이크로 저널링 방법
US20170024140A1 (en) * 2015-07-20 2017-01-26 Samsung Electronics Co., Ltd. Storage system and method for metadata management in non-volatile memory

Also Published As

Publication number Publication date
KR20190093475A (ko) 2019-08-09

Similar Documents

Publication Publication Date Title
CN110109612B (zh) 存储器模块及其操作方法
US20240020024A1 (en) Non-volatile memory storage for multi-channel memory system
US10268382B2 (en) Processor memory architecture
CN108780423B (zh) 多级存储器管理电路、管理方法和管理设备
US20180033489A1 (en) Memory device, memory module, and memory system
CN106055493B (zh) 存储系统、存储模块及其操作方法
EP3441885B1 (en) Technologies for caching persistent two-level memory data
US11709777B2 (en) Memory system
CN105786400B (zh) 一种异构混合内存组件、系统及存储方法
US11741011B2 (en) Memory card with volatile and non volatile memory space having multiple usage model configurations
US10032494B2 (en) Data processing systems and a plurality of memory modules
US10095421B2 (en) Hybrid memory module bridge network and buffers
CN112534391A (zh) 限制来自存储器系统的响应信号
US9792989B2 (en) Memory system including nonvolatile memory
US10452313B2 (en) Apparatuses and methods for multiple address registers for a solid state device
KR102549591B1 (ko) 호스트의 동작 방법, 메모리 모듈의 동작 방법, 및 메모리 시스템의 동작 방법
KR20210016191A (ko) 스토리지 장치
US20170147230A1 (en) Memory device and memory system having heterogeneous memories
US10936534B2 (en) Converged memory device and method thereof
US10719238B1 (en) Memory fabric with reliability zone comprising two or more fabric attached memory endpoints
WO2020076718A1 (en) Command buffer chip with dual configurations
US20220171551A1 (en) Available memory optimization to manage multiple memory channels
CN111694772A (zh) 存储器控制器
US11782851B2 (en) Dynamic queue depth adjustment
US20230142174A1 (en) Memory system using host memory buffer and operation method thereof

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