KR20190093475A - Operation method of host, operation method of memory module, and operation method of memory system - Google Patents
Operation method of host, operation method of memory module, and operation method of memory system Download PDFInfo
- Publication number
- KR20190093475A KR20190093475A KR1020180019329A KR20180019329A KR20190093475A KR 20190093475 A KR20190093475 A KR 20190093475A KR 1020180019329 A KR1020180019329 A KR 1020180019329A KR 20180019329 A KR20180019329 A KR 20180019329A KR 20190093475 A KR20190093475 A KR 20190093475A
- Authority
- KR
- South Korea
- Prior art keywords
- host
- data
- counter
- controller
- release information
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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/5016—Allocation 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details 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
Description
본 발명은 저장 장치에 관한 것으로, 좀 더 상세하게는 호스트의 동작 방법, 메모리 모듈의 동작 방법, 및 메모리 시스템의 동작 방법에 관한 것이다.The present invention relates to a storage device, and more particularly, to a method of operating a host, a method of operating a memory module, and a method of operating a 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) 등과 같이 전원 공급이 차단되어도 저장하고 있던 데이터를 유지하는 불휘발성 메모리 장치로 구분된다.The semiconductor memory is a volatile memory device such as static RAM (SRAM), dynamic RAM (DRAM), synchronous DRAM (SDRAM), etc. that loses its stored data when the power supply is cut off, read only memory (ROM), and programmable ROM (PROM). Power supplies, such as EPROM (Electrically Programmable ROM), EEPROM (Electrically Erasable and Programmable ROM), flash memory devices, phase-change RAM (PRAM), magnetic RAM (MRAM), resistive RAM (RRAM), ferroelectric RAM (FRAM), etc. Even if it is blocked, it is classified as a nonvolatile memory device which retains the stored data.
불휘발성 메모리 장치의 일종인 플래시 메모리는 대용량, 저소음, 저전력 등의 장점으로 인하여 다양한 분야에서 스토리지 장치로 널리 쓰인다. 최근에는 컴퓨팅 시스템에서 처리되는 데이터가 증가함에 따라 SSD 장치들과 연결된 인터페이스의 데이터 대역폭 또는 통신 속도보다 데이터 처리량이 많아져서 데이터 병목 현상이 발생한다. 이러한 현상들은 컴퓨팅 시스템의 성능을 저해하는 요인으로 작용되며, 상술된 문제점을 해결하기 위한 다양한 성능 향상 기법들이 개발되고 있다.Flash memory, a type of nonvolatile memory device, is widely used as a storage device in various fields due to its advantages such as large capacity, low noise, and low power. Recently, as data processed in a computing system increases, data bottlenecks occur due to more data throughput than data bandwidth or communication speed of an interface connected to SSD devices. These phenomena act as a factor that hinders the performance of the computing system, and various performance enhancement techniques have been developed to solve the above problems.
본 발명의 목적은 호스트가 메모리 모듈의 리소스를 관리함으로써, 향상된 성능을 갖는 호스트의 동작 방법, 메모리 모듈의 동작 방법, 및 메모리 시스템의 동작 방법을 제공하는데 있다. SUMMARY OF THE INVENTION An object of the present invention is to provide a method of operating a host, a method of operating a memory module, and a method of operating a memory system, by the host managing resources of the memory module.
본 발명의 실시 예에 따른 메모리 모듈은 제1 저장 영역 및 제2 저장 영역을 포함하는 램 장치, 불휘발성 메모리 장치, 및 호스트의 제어에 따라 상기 램 장치 또는 상기 불휘발성 메모리 장치를 제어하도록 구성된 컨트롤러를 포함한다. 상기 컨트롤러는 상기 호스트로부터 수신된 제1 데이터를 임시 저장하도록 구성된 데이터 버퍼, 및 상기 제1 데이터가 상기 데이터 버퍼로부터 상기 램 장치의 상기 제1 영역 또는 상기 제2 영역으로 이동한 경우 제1 해제 정보를 상기 호스트로 전송하고, 상기 제1 데이터가 상기 제2 영역으로부터 상기 불휘발성 메모리 장치로 이동한 경우 제2 해제 정보를 상기 호스트로 전송하도록 구성된 버퍼 반환부를 포함한다.In an embodiment, a memory module may include a RAM device including a first storage area and a second storage area, a nonvolatile memory device, and a controller configured to control the RAM device or the nonvolatile memory device under control of a host. It includes. The controller is a data buffer configured to temporarily store the first data received from the host, and first release information when the first data is moved from the data buffer to the first region or the second region of the RAM device. And a buffer return unit configured to transmit second release information to the host when the first data is moved from the second area to the nonvolatile memory device.
본 발명의 실시 예에 따른 메모리 모듈은 램 장치, 불휘발성 메모리 장치, 호스트의 제어에 따라 상기 램 장치 및 상기 불휘발성 메모리 장치를 제어하도록 구성된 컨트롤러를 포함한다. 상기 컨트롤러는 상기 호스트로부터 수신된 제1 데이터를 임시 저장하도록 구성된 데이터 버퍼, 및 상기 제1 데이터가 상기 데이터 버퍼로부터 상기 램 장치 또는 상기 불휘발성 메모리 장치로 이동한 경우, 제1 해제 정보를 상기 호스트로 전송하도록 구성된 버퍼 반환부를 포함한다.A memory module according to an embodiment of the present invention includes a RAM device, a nonvolatile memory device, and a controller configured to control the RAM device and the nonvolatile memory device under control of a host. The controller is configured to temporarily store first data received from the host, and the first release information is transmitted to the RAM device or the nonvolatile memory device when the first data is moved from the data buffer to the host. It includes a buffer return configured to transmit to.
본 발명의 실시 예에 따른 램 장치 및 불휘발성 메모리 장치를 포함하는 메모리 장치의 동작 방법은 호스트로부터 제1 쓰기 커맨드를 수신하는 단계, 상기 제1 쓰기 커맨드에 대응하는 제1 데이터를 수신하고, 상기 수신된 제1 데이터를 데이터 버퍼에 임시 저장하는 단계, 상기 제1 데이터를 상기 데이터 버퍼로부터 상기 램 장치로 이동시키는 단계, 상기 제1 데이터가 상기 데이터 버퍼로부터 상기 램 장치로 이동한 경우, 상기 호스트로 제1 해제 정보를 전송하는 단계, 상기 제1 데이터를 상기 램 장치로부터 상기 불휘발성 메모리 장치로 이동시키는 단계, 및 상기 제1 데이터가 상기 램 장치로부터 상기 불휘발성 메모리 장치로 이동한 경우, 상기 호스트로 제2 해제 정보를 전송하는 단계를 포함한다.A method of operating a memory device including a RAM device and a nonvolatile memory device according to an embodiment of the present disclosure may include receiving a first write command from a host, receiving first data corresponding to the first write command, and Temporarily storing the received first data in a data buffer, moving the first data from the data buffer to the RAM device, and when the first data is moved from the data buffer to the RAM device, the host Transmitting first release information to the nonvolatile memory device, transferring the first data from the RAM device to the nonvolatile memory device, and when the first data is moved from the RAM device to the nonvolatile memory device. Sending the second release information to the host.
메모리 모듈과 통신하도록 구성된 호스트의 동작 방법은 지속 쓰기 커맨드(persist write command)를 상기 메모리 모듈로 전송하고, 상기 메모리 모듈에 포함된 제1 단위 버퍼들 중 가용한 제1 단위 버퍼의 개수를 가리키는 제1 카운터 값 및 상기 메모리 모듈에 포함된 제2 단위 버퍼들 중 가용한 제2 단위 버퍼의 개수를 가리키는 제2 카운터 값을 각각 감산하는 단계, 상기 제1 단위 버퍼들 중 해제된 제1 단위 버퍼의 개수를 가리키는 제1 해제 정보를 상기 메모리 모듈로부터 수신하고, 상기 수신된 제1 해제 정보를 기반으로 상기 감산된 제1 카운터 값을 가산하는 단계, 및 상기 제2 단위 버퍼들 중 해제된 제2 단위 버퍼의 개수를 가리키는 제2 해제 정보를 상기 메모리 모듈로부터 수신하고, 상기 수신된 제2 해제 정보를 기반으로 상기 감산된 제2 카운터 값을 가산하는 단계를 포함한다.A method of operating a host configured to communicate with a memory module may include: transmitting a persistent write command to the memory module and indicating a number of available first unit buffers among the first unit buffers included in the memory module; Subtracting a first counter value and a second counter value indicating the number of available second unit buffers among the second unit buffers included in the memory module, respectively, of the first unit buffers released among the first unit buffers. Receiving first release information indicating a number from the memory module, adding the subtracted first counter value based on the received first release information, and a second unit released among the second unit buffers; Receiving second release information indicating the number of buffers from the memory module and adding the subtracted second counter value based on the received second release information; Including the step of producing.
본 발명의 실시 예에 따르면, 호스트는 메모리 모듈의 리소스(예를 들어, WC, PC 등)를 관리할 수 있다. 메모리 모듈은 리소스가 해제된 경우, 호스트로 해제 정보를 전송하고, 호스트는 해제 정보를 기반으로 리소스를 갱신할 수 있다. 따라서, 향상된 성능을 갖는 호스트의 동작 방법, 메모리 모듈의 동작 방법, 및 메모리 시스템의 동작 방법이 제공된다.According to an embodiment of the present disclosure, a host may manage resources (eg, WC, PC, etc.) of a memory module. When the resource is released, the memory module transmits release information to the host, and the host may update the resource based on the release information. Accordingly, a method of operating a host, a method of operating a memory module, and a method of operating a memory system having improved performance are provided.
도 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은 본 발명에 따른 메모리 모듈이 적용된 컴퓨팅 시스템을 예시적으로 보여주는 블록도이다.1 is a block diagram illustrating a computing system according to an example embodiment.
2A through 2C are block diagrams for describing an operation between a host and a controller of FIG. 1.
3 is a flowchart illustrating an operation of the host of FIG. 1.
4 is a flowchart illustrating an operation of the controller of FIG. 1.
5A through 5C are timing diagrams for describing an operation of a host and a controller of FIG. 1.
6 is a block diagram illustrating a computing system according to an example embodiment.
7A to 7D and 8 are diagrams for describing an operation of a host and a controller of FIG. 6.
9 is a flowchart illustrating a method of operating a host of FIG. 6.
FIG. 10 is a flowchart illustrating a method of operating the memory module of FIG. 6.
FIG. 11 is a timing diagram for describing an operation of a host and a controller of FIG. 6.
12A and 12B are block diagrams for describing an operation of a host and a controller of FIG. 6.
13A through 13D are timing diagrams for describing an operation of a host and a controller according to the exemplary embodiment of FIGS. 12A through 12B.
14 is a diagram illustrating an example of a WC counter and a PC counter of FIG. 6.
15 is a block diagram illustrating a computing system according to an example embodiment.
16 is an exemplary block diagram of a memory module in accordance with the present invention.
17 is an exemplary block diagram of a memory module in accordance with the present invention.
18 is a block diagram illustrating a computing system to which a memory module according to the present invention is applied.
이하에서, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다.Hereinafter, embodiments of the present invention will be described clearly and in detail so that those skilled in the art can easily carry out the present invention.
이하에서, "부(unit)","모듈(module)" 등의 용어는 소프트웨어 구성, 하드웨어 구성, 또는 그것들의 조합의 구성을 의미한다. 예를 들어, 특정 기능을 수행하는 " 부(unit)"는 특정 기능을 수행하기 위한 하드웨어 구성일 수 있다. 특정 기능 또는 특정 구성들을 포함하는 "모듈(module)"은 다양한 하드웨어 구성들을 포함하는 구성일 수 있다.Hereinafter, the terms "unit", "module" and the like refer to a configuration of a software configuration, a hardware configuration, or a combination thereof. For example, a "unit" performing a specific function may be a hardware configuration for performing a specific function. A “module” that includes a particular function or specific configurations may be a configuration that includes various hardware configurations.
도 1은 본 발명의 실시 예에 따른 컴퓨팅 시스템(10)을 보여주는 블록도이다. 도 1을 참조하면, 컴퓨팅 시스템(10)은 호스트(101) 및 메모리 모듈(100)을 포함할 수 있다. 호스트(101)는 메모리 모듈(100)에 데이터를 저장하거나 또는 메모리 모듈(100)에 저장된 데이터를 읽을 수 있다. 예를 들어, 호스트(101)는 메모리 모듈(100)에 데이터(DATA)를 저장하기 위하여, 메모리 모듈(100)로 어드레스(ADDR), 커맨드(CMD), 및 데이터(DATA)를 전송할 수 있다. 예시적인 실시 예에서, 호스트(101)는 컴퓨팅 시스템(10)의 동작을 제어하기 위한 중앙 처리 유닛(CPU; central processing unit)일 수 있다. 1 is a block diagram illustrating a
메모리 모듈(100)은 컨트롤러(110), 램 장치(120), 및 불휘발성 메모리 장치(130)를 포함할 수 있다. 예시적으로, 메모리 모듈(100)은 DDR(Double Data Rate) 인터페이스를 통해 호스트(101)와 통신할 수 있고, NVDIMM-P 타입의 메모리 모듈일 수 있다. 예시적으로, 컨트롤러(110), 램 장치(120), 및 불휘발성 메모리 장치(130)는 동일한 PCB 기판(미도시) 상에 집적되어 하나의 메모리 모듈(100)을 구성할 수 있다. 또한, 메모리 모듈(100)은 도시된 구성 요소들 이외에 다른 다양한 구성 요소들을 더 포함할 수 있다. 그러나 본 발명이 이에 한정되는 것은 아니다.The
컨트롤러(110)는 호스트(101)의 제어에 따라 램 장치(120) 또는 불휘발성 메모리 장치(130)에 데이터(DATA)를 저장하거나 또는 램 장치(120) 또는 불휘발성 메모리 장치(130)에 저장된 데이터(DATA)를 읽을 수 있다. The
예시적인 실시 예에서, 램 장치(120)는 불휘발성 메모리 장치(130)보다 빠른 동작 속도를 가질 수 있다. 예를 들어, 램 장치(120)는 SRAM, DRAM 등과 같은 고속 동작을 지원하는 메모리 장치일 수 있고, 불휘발성 메모리 장치(130)는 플래시 메모리와 같이 전원 공급이 중단되더라도 데이터를 유지하는 불휘발성 메모리 장치일 수 있다. 그러나 본 발명의 범위가 이에 한정되는 것은 아니며, 램 장치(120) 및 불휘발성 메모리 장치(130)는 다양한 저장 장치들로 구현될 수 있다.In an example embodiment, the
본 발명의 실시 예를 용이하게 설명하기 위하여, 램 장치(120)가 컨트롤러(110)와 구분된 것으로 것으로 도시되나, 본 발명의 범위가 이에 한정되는 것은 아니며, 램 장치(120)는 컨트롤러(110)의 내부에 포함될 수 있다. In order to easily describe an embodiment of the present invention, the
본 발명의 실시 예에 따른 컨트롤러(110)는 데이터 버퍼(111) 및 WC(Write Credit) 반환부(112)를 포함할 수 있다. 데이터 버퍼(111)는 호스트(101)로부터 데이터(DATA)를 수신하거나 또는 수신된 데이터(DATA)를 임시 저장하기 위한 저장 회로일 수 있다. 예를 들어, 호스트(101)로부터 수신된 데이터(DATA)는 데이터 버퍼(111)에 먼저 기입될 수 있다. 이후에, 데이터 버퍼(111)에 저장된 데이터(DATA)는 램 장치(120) 또는 불휘발성 메모리 장치(130)로 전달될 수 있다.The
즉, 데이터 버퍼(111)는 호스트(101) 및 컨트롤러(110) 사이의 인터페이스 속도를 만족하는 고속 저장 회로일 수 있다. 데이터 버퍼(111)는 호스트(101) 및 컨트롤러(110) 사이의 인터페이스 계층 또는 물리 계층에 포함된 레지스터 또는 고속 메모리일 수 있다.That is, the
예시적으로, 데이터 버퍼(111)는 미리 정해진 크기를 갖는 WC들(WC; Write Credit)을 포함할 수 있다. 즉, WC은 미리 정해진 단위의 저장 공간 또는 단위 버퍼를 가릴 수 있다. 예를 들어, 데이터 버퍼(111)가 512KB이고, 하나의 WC이 4KB인 경우, 데이터 버퍼(111)에 대한 전체 WC의 개수는 128개일 수 있다. In exemplary embodiments, the
호스트(101)는 WC 카운터(102)를 포함할 수 있다. WC 카운터(102)는 데이터 버퍼(111)의 WC들 중 가용한 WC의 개수에 대한 정보를 포함할 수 있다. 호스트(101)는 WC 카운터(102)를 기반으로 메모리 모듈(100)에 대한 쓰기 동작을 수행할 수 있다. 예를 들어, 하나의 WC의 단위가 4KB이고, WC 카운터(102)의 값이 "8"인 경우, 호스트(101)는 "4*8=32KB"의 쓰기 데이터를 메모리 모듈(100)로 전송할 수 있다. Host 101 may include a
호스트(101)는 전송된 쓰기 데이터의 크기(또는 발행된 쓰기 커맨드의 개수, 또는 전송된 쓰기 데이터의 단위 개수)를 기반으로 WC 카운터(102)를 갱신할 수 있다. 예를 들어, 하나의 WC의 단위가 4KB이고, 호스트(101)가 16KB의 쓰기 데이터를 전송한 경우, 호스트(101)는 4개의 WC을 사용할 것이다. 이 경우, 호스트(101)는 WC 카운터(102)의 현재 값에서 사용된 WC에 대한 값(즉, 4개)을 감산할 수 있다. 즉, 호스트(101)가 16KB의 쓰기 데이터를 전송한 경우, WC 카운터(102)는 "8"에서 "4"로 갱신될 수 있다.The
예시적으로, WC 카운터(102)의 값이 "0"인 경우, 호스트(110)에 의해 사용 가능한 WC이 없기 때문에, 호스트(101)는 쓰기 데이터를 컨트롤러(110)로 전송할 수 없을 것이다. For example, if the value of the
예시적으로, 컨트롤러(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)로 전송할 수 있다.For example, the
호스트(101)는 컨트롤러(110)로부터의 WC 해제 정보(RWC)를 기반으로 WC 카운터(102)를 갱신할 수 있다. 예를 들어, 앞서 설명된 바와 같이, WC 해제 정보(RWC)는 데이터 버퍼(111)에서 사용된 WC들 중 컨트롤러(110)의 동작에 의해 해제된 WC들의 개수를 가리킨다. 다시 말해서, WC 해제 정보(RWC)는 호스트(101)에 의해 사용 가능한 WC들의 개수를 가리킨다. WC 해제 정보(RWC)가 "4"를 가리키는 경우, 호스트(101)는 WC 카운터(102)에 "4"의 값을 가산할 수 있다.The
예시적으로, WC 해제 정보(RWC)는 비동기 방식으로 제공될 수 있다. 예를 들어, WC에 대한 해제가 발생한 경우, 컨트롤러(110)는 호스트(101)로 반환 신호(RTN)를 전송할 수 있다. 호스트(101)는 반환 신호(RTN)에 응답하여 컨트롤러(110)로부터 WC 해제 정보(RWC)를 수신할 수 있다. 예시적으로, WC 해제 정보(RWC)는 데이터(DATA)와 동일한 신호 라인을 통해 제공될 수 있다. 또는 WC 해제 정보(RWC)는 별도의 신호 라인 또는 별도의 통신 채널을 통해 호스트(101)로 제공될 수 있다. In exemplary embodiments, the WC release information RWC may be provided in an asynchronous manner. For example, when the release of the WC occurs, the
또는 WC 해제 정보(RWC)는 호스트(101)의 명시적인 요청에 의해 전송될 수 있다. 또는 WC 해제 정보(RWC)는 호스트(101)의 읽기 요청에 따른 읽기 데이터와 함께 호스트(101)로 전송될 수 있다.Alternatively, the WC release information RWC may be transmitted by an explicit request from the
상술된 바와 같이, 호스트(101)는 컨트롤러(110)의 데이터 버퍼(111)의 사용 가능한 WC들을 관리할 수 있고, 컨트롤러(110)는 해제된 WC에 대한 정보를 호스트(101)로 전송할 수 있다. 따라서, 호스트(101) 및 컨트롤러(110) 사이의 데이터 전송 시 속도 저하가 방지될 수 있다.As described above, the
도 2a 내지 도 2c는 도 1의 호스트(101) 및 컨트롤러(110) 사이의 동작을 설명하기 위한 블록도들이다. 간결한 설명을 위하여, 앞서 설명된 구성 요소들에 대한 상세한 설명은 생략된다.2A through 2C are block diagrams for describing an operation between the
이하에서, 본 발명의 실시 예를 명확하고 간결하게 설명하기 위하여, 특정한 의미를 갖는 다양한 표현들이 사용된다. 예를 들어, "호스트에 의한 WC의 사용"은 호스트가 쓰기 데이터를 전송하기 위하여 쓰기 데이터를 할당 또는 사용하는 것 또는 호스트가 WC으로 쓰기 데이터를 전송하는 것을 의미한다. 또한, "WC의 해제"는 WC에 저장된 쓰기 데이터가 램 장치 또는 불휘발성 메모리 장치로 전달됨으로써, 다른 쓰기 데이터를 수신할 수 있는 상태를 가리킨다. 또한, "WC에 저장된 쓰기 데이터가 램 장치 또는 불휘발성 메모리 장치로 전달되는 것"은 WC에 저장된 쓰기 데이터가 램 장치 또는 불휘발성 메모리 장치로 복사되거나 또는 이동하는 것을 의미한다. 상술된 표현들은 본 발명의 실시 예를 간결하고 명확하게 설명하기 위한 것으로서, 본 발명의 범위가 이에 한정되는 것은 아니다. Hereinafter, in order to clearly and concisely explain embodiments of the present invention, various expressions having specific meanings are used. For example, "use of the WC by the host" means that the host allocates or uses the write data to transmit the write data or the host transmits the write data to the WC. In addition, " release of WC " refers to a state in which write data stored in the WC is transferred to the RAM device or the nonvolatile memory device so that other write data can be received. Also, "the transfer of write data stored in the WC to the RAM device or the nonvolatile memory device" means that the write data stored in the WC is copied or moved to the RAM device or the nonvolatile memory device. The above-described expressions are intended to briefly and clearly describe the embodiments of the present invention, but the scope of the present invention is not limited thereto.
설명의 편의를 위하여, 데이터 버퍼(111)는 8개의 WC들(WC1~WC8)을 포함하는 것으로 가정한다. 또한 호스트(101)로부터 컨트롤러(110)로 전송되는 쓰기 데이터 각각은 하나의 WC의 크기와 대응되는 것으로 가정한다. 즉, 하나의 쓰기 데이터의 크기는 하나의 WC의 크기와 동일할 수 있으며, 하나의 쓰기 데이터는 하나의 WC에 저장될 수 있다. For convenience of explanation, it is assumed that the
도 2a 내지 도 2c를 참조하면, 컴퓨팅 시스템(10)은 호스트(110) 및 메모리 모듈(100)을 포함한다. 호스트(101)는 WC 카운터(102)를 포함한다. 메모리 모듈(100)은 컨트롤러(110), 램 장치(120), 및 불휘발성 메모리 장치(130)를 포함할 수 있다. 각 구성 요소들은 앞서 설명되었으므로, 이에 대한 상세한 설명은 생략된다.2A-2C, the
도 2a에 도시된 바와 같이, 초기 상태에서, WC 카운터(102)의 값은 "8"일 수 있다. 이는 데이터 버퍼(111)에서 8개의 WC들(즉, WC1~WC8)이 가용한 상태임을 가리킨다. As shown in FIG. 2A, in the initial state, the value of the
이후에, 도 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개임을 의미한다. Thereafter, as illustrated in FIG. 2B, the
비록 도면에 도시되지는 않았으나, 호스트(101)는 컨트롤러(110)로 전송된 쓰기 커맨드의 개수를 기반으로 WC 카운터(102)를 갱신할 수 있다. 예를 들어, 하나의 쓰기 커맨드에 대한 쓰기 데이터의 크기가 하나의 WC의 크기와 대응될 수 있다. 이 때, 4개의 쓰기 커맨드가 컨트롤러(110)로 전송된 경우, 호스트(101)는 WC 카운터(102)의 값에서 "-4"만큼 감산할 수 있다. Although not shown in the drawing, the
다음으로, 도 2c에 도시된 바와 같이, 컨트롤러(110)의 동작에 의해 일부 WC들이 해제될 수 있다. 예를 들어, 제3 및 제4 WC들(WC3, WC4)에 저장된 쓰기 데이터가 램 장치(120)로 전달될 수 있다. 이 경우, 제3 및 제4 WC들(WC3, WC4)은 해제(release)될 것이다.Next, as shown in FIG. 2C, some WCs may be released by the operation of the
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들이 가용함을 의미한다.The
상술된 바와 같이, 호스트(101)가 컨트롤러(110)로 쓰기 데이터를 전송하는 경우, 호스트(101)의 WC 카운터(102)는 전송된 쓰기 데이터의 개수 또는 크기, 또는 전송된 쓰기 커맨드들의 개수를 기반으로 갱신(또는 감산)된다. 또한 컨트롤러(110)의 동작에 의해 데이터 버퍼(111)의 WC들이 해제된 경우, 컨트롤러(110)는 WC 해제 정보(RWC)를 호스트(101)로 전송하고, 호스트(101)는 WC 해제 정보(RWC)를 기반으로 WC 카운터(102)를 갱신(또는 가산)할 수 있다. 따라서, 호스트(101)의 주기적인 폴링 동작 없이 또는 별도의 다른 확인 동작 없이 메모리 모듈(100)의 리소스를 인식할 수 있기 때문에, 쓰기 성능이 향상될 수 있다.As described above, when the
도 3은 도 1의 호스트(101)의 동작을 예시적으로 보여주는 순서도이다. 도 1 및 도 3을 참조하면, S111 단계에서, 호스트(101)는 가용한 WC들의 개수가 기준치(TH)보다 큰지 판별할 수 있다. 예를 들어, 호스트(101)의 WC 카운터(102)의 값은 가용한 WC들의 개수를 가리킬 수 있다. 호스트(101)는 WC 카운터(102)의 값이 기준치(TH)보다 큰지 판별할 수 있다. 예시적으로, 기준치(TH)는 동작 모드 또는 쓰기 커맨드의 타입에 따라 "0"이거나 또는 "0"보다 큰 정수일 수 있다.3 is a flowchart illustrating an operation of the
예시적으로, 가용한 WC의 개수가 기준치(TH)보다 크지 않다는 것은 컨트롤러(110)가 호스트(101)로부터 전송되는 쓰기 데이터를 수신하기에 충분한 WC을 포함하지 않음을 의미할 수 있다. 이 경우, 호스트(101)가 컨트롤러(110)로 쓰기 데이터를 전송하더라도, 컨트롤러(110)는 쓰기 데이터를 정상적으로 수신하지 못하거나 또는 이전에 수신된 데이터가 소실될 수 있다. 이 경우, 호스트(101)는 가용한 WC들이 확보될 때까지 쓰기 동작을 수행하지 않을 수 있다. For example, if the number of available WCs is not greater than the reference value TH, it may mean that the
예를 들어, 가용한 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)를 읽을 수 있다.For example, if the number of available WCs is not greater than the reference value TH, in step S112, the
S113 단계에서, 호스트(101)는 WC 해제 정보(RWC)를 기반으로 WC 카운터(102)를 갱신할 수 있다. 예를 들어, 앞서 설명된 바와 같이, 호스트(101)는 WC 해제 정보(RWC)가 가리키는 값을 WC 카운터(102)의 값에 가산할 수 있다. 이후에, 호스트(101)는 S111 단계를 수행할 수 있다.In operation S113, the
S111 단계의 비교 결과가 가용한 WC의 개수가 기준치(TH)보다 큰 것을 가리키는 경우, 호스트(101)는 S115 단계의 동작을 수행할 수 있다. S115 단계에서, 호스트(101)는 WC 카운터(102)를 기반으로 쓰기 데이터를 컨트롤러(110)로 전송할 수 있고, 전송된 쓰기 데이터를 기반으로 WC 카운터(102)를 갱신할 수 있다.When the comparison result of step S111 indicates that the number of available WCs is larger than the reference value TH, the
예를 들어, 호스트(101)는 WC 카운터(102)의 값을 기반으로 컨트롤러(110)로 쓰기 데이터를 전송할 수 있다. 이 때, 전송되는 쓰기 데이터의 크기는 WC 카운터(102)의 값에 대응하는 크기보다 작거나 같을 수 있다. 호스트(101)는 전송된 쓰기 데이터의 크기를 기반으로 WC 카운터(102)의 값을 감산할 수 있다. 예시적으로, 호스트(101)는 전송된 쓰기 커맨드의 개수를 기반으로 WC 카운터(102)의 값을 감산할 수 있다.For example, the
도 4는 도 1의 컨트롤러(110)의 동작을 보여주는 순서도이다. 도 1 및 도 4를 참조하면, S121 단계에서, 컨트롤러(110)는 호스트(101)로부터 데이터를 수신하고, 수신된 데이터를 WC에 저장할 수 있다. 예시적으로, 데이터 수신 및 데이터 저장 동작은 동시에 또는 순차적으로 수행되는 동작일 수 있다. 4 is a flowchart illustrating an operation of the
S122 단계에서, 컨트롤러(110)는 데이터가 WC으로부터 램 장치(120) 또는 불휘발성 메모리 장치(130)로 이동하였는지 판별할 수 있다. 예를 들어, 앞서 설명된 바와 같이, WC에 저장된 데이터는 컨트롤러(110)의 동작에 따라 램 장치(120) 또는 불휘발성 메모리 장치(130)로 이동할 수 있다. 이 경우, 데이터가 저장된 WC은 해제될 것이다.In operation S122, the
데이터가 WC으로부터 램 장치(120) 또는 불휘발성 메모리 장치(130)로 이동한 경우, S123 단계에서, 컨트롤러(110)는 호스트(101)의 제어에 따라 WC 해제 정보(RWC)를 호스트(101)로 전송할 수 있다. 예를 들어, 컨트롤러(110)는 호스트(101)로부터의 반환 요청에 응답하여 WC 해제 정보(RWC)를 호스트(101)로 전송할 수 있다. 예시적으로, 반환 요청은 컨트롤러(110)의 반환 신호(RTN)에 응답하여 호스트(101)에 의해 발행되거나 또는 호스트(101)의 자체 동작에 의해 발행될 수 있다. 또는 컨트롤러(110)는 호스트(101)로부터의 읽기 커맨드에 응답하여, 읽기 커맨드에 대응하는 읽기 데이터 및 WC 해제 정보(RWC)를 호스트(101)로 전송할 수 있다.When data is moved from the WC to the
도 5a 내지 도 5c는 도 1의 호스트(101) 및 컨트롤러(110)의 동작을 설명하기 위한 타이밍도이다. 이하에서, 본 발명의 실시 예를 설명하는데 불필요한 구성 요소들은 생략된다. 또한, 초기 WC 카운터(102)의 값은 "4"인 것으로 가정한다. 또한 하나의 쓰기 커맨드(WR)에 대한 쓰기 데이터(D)의 크기는 하나의 WC의 크기와 동일한 것으로 가정한다. 즉, 하나의 쓰기 커맨드에 대한 쓰기 데이터(D)는 하나의 WC에 저장될 수 있다. 다시 말해서, 호스트(101)는 하나의 쓰기 커맨드에 대한 쓰기 데이터(D)를 전송하기 위하여, 하나의 WC을 사용할 수 있다.5A through 5C are timing diagrams for describing operations of the
먼저, 도 1 및 도 5a를 참조하면, 초기 WC 카운터(102)의 값은 "4"일 수 있다. 이는 데이터 버퍼(111)의 WC들(WC) 중 4개의 WC들(WC)이 사용 가능한 상태임을 가리킬 수 있다.First, referring to FIGS. 1 and 5A, the value of the
호스트(101)는 WC 카운터(102)를 기반으로 쓰기 동작을 수행할 수 있다. 예를 들어, WC 카운터(102)의 값이 "4"인 경우, 호스트(101)는 4개의 쓰기 커맨드(WR1~WR4) 및 각각에 대응하는 4개의 쓰기 데이터(D1~D4)를 컨트롤러(110)로 전송할 수 있다.The
호스트(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에 저장되기 때문이다.Each time the
제4 쓰기 커맨드(WR4)가 전송된 이후에, WC 카운터(102)의 값은 "0"일 수 있다. 이 경우, 가용한 WC이 없기 때문에, 호스트(101)는 컨트롤러(110)로 쓰기 커맨드 또는 쓰기 데이터를 전송하지 못할 것이다. 다시 말해서, 제1 시간(T1) 동안 호스트(101)는 쓰기 동작을 수행하지 않을 것이다.After the fourth write command WR4 is transmitted, the value of the
제1 시점(t1)에서, 컨트롤러(110)의 동작에 따라 WC이 해제될 수 있다. 예를 들어, 앞서 설명된 바와 같이, 컨트롤러(110)의 동작에 따라, 데이터 버퍼(111)에 저장된 쓰기 데이터 중 일부 쓰기 데이터가 램 장치(120) 또는 불휘발성 메모리 장치(130)로 전달될 수 있다. 이 경우, 일부 데이터가 저장된 데이터 버퍼(111)의 영역(다시 말해서, WC)이 해제될 것이다.At the first time point t1, the WC may be released according to the operation of the
컨트롤러(110)의 WC 반환부(112)는 제1 시점(t1)에서 WC의 해제를 감지하고, 반환 신호(RTN)를 호스트(101)로 전송할 수 있다. 예시적으로, 반환 신호(RTN)는 특정 신호 라인을 통해 제공될 수 있으며, 반환 신호(RTN)는 로직 로우 레벨을 가질 수 있다. 그러나 본 발명의 범위가 이에 한정되는 것은 아니다.The
호스트(101)는 반환 신호(RTN)에 응답하여 반환 커맨드(RCM)를 컨트롤러(110)로 전송할 수 있다. 반환 커맨드(RCM)는 WC 반환 정보(RWC)를 읽기 위한 커맨드일 수 있다. 컨트롤러(110)는 반환 커맨드(RCM)에 응답하여 데이터 라인(DQ)을 통해 WC 반환 정보(RWC)를 호스트(101)로 제공할 수 있다. The
호스트(101)는 수신된 WC 반환 정보(RWC)를 기반으로 WC 카운터(102)를 갱신할 수 있다. 예를 들어, WC 반환 정보(RWC)가 4개의 WC들이 해제되었음을 가리키는 경우, 호스트(101)는 WC 카운터(102)의 값을 "0"에서 "4"로 "+4"만큼 가산할 수 있다.The
이후에, 호스트(101)는 갱신된 WC 카운터(102)를 기반으로 쓰기 동작을 수행할 수 있다. 예를 들어, 호스트(101)는 WC 카운터(102)를 기반으로 4개의 쓰기 커맨드(WR5~WR8) 및 각각에 대응하는 4개의 쓰기 데이터(D5~D8)를 컨트롤러(110)로 전송할 수 있고, 앞서 설명된 바와 유사하게, 쓰기 커맨드(WR5~WR8) 각각을 전송할 때마다, WC 카운터(102)를 갱신(즉, "-1"만큼씩 감산)할 수 있다. Thereafter, the
예시적으로, WC 해제 정보(RWC)는 도 5에 도시된 바와 같이, 비동기 방식으로 제공될 수 있다. 또는 비록 도면에 도시되지는 않았으나, WC 해제 정보(RWC)는 특정 주기마다 호스트(101)로 제공될 수 있다. In exemplary embodiments, the WC release information RWC may be provided in an asynchronous manner, as shown in FIG. 5. Alternatively, although not shown in the drawing, the WC release information RWC may be provided to the
예시적으로, 표 1은 WC 카운터(102)의 갱신 방법을 보여준다. By way of example, Table 1 shows an update method of the
표 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)의 쓰기 동작 성능이 향상된다.Referring to Table 1, the
다음으로, 도 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개임을 가리킨다.Next, referring to FIGS. 1 and 5B, the
이 후에, 호스트(101)는 반환 커맨드(RCM)를 컨트롤러(110)로 전송할 수 있다. 예시적으로, 반환 커맨드(RCM)는 컨트롤러(110)로부터의 별도의 신호(예를 들어, 반환 신호) 없이 호스트(101)에서 자체적으로 발행될 수 있다.Thereafter, the
컨트롤러(110)는 반환 커맨드(RCM)에 응답하여 WC 해제 정보(RWC)를 호스트(101)로 전송할 수 있다. WC 해제 정보(RWC)가 "4"인 경우, WC 반환부(112)에 누적된 값은 "-4"만큼 감산될 것이다. 즉, WC 해제 정보(RWC)가 호스트(101)로 전송된 경우, WC 반환부(112)에 누적된 값이 리셋될 수 있다. The
호스트(101)는 수신된 WC 반환 정보(RWC)를 기반으로 WC 카운터(102)를 갱신할 수 있다. 이 후에 호스트(101)는 제5 내지 제8 쓰기 커맨드들(WR5~WR8) 및 각각에 대응하는 제5 내지 제8 데이터(D5~D8)를 컨트롤러(110)로 전송하고, WC 카운터(102)를 갱신할 수 있다. The
다음으로, 도 1 및 도 5c를 참조하면, 호스트(101)는 읽기 데이터를 읽기 위한 읽기 커맨드(RDC)를 컨트롤러(110)로 전송할 수 있다. 컨트롤러(110)는 읽기 커맨드(RDC)에 응답하여, 호스트(101)로 읽기 데이터(RD)를 전송할 수 있다. 이 때, 컨트롤러(110)는 누적된 WC 해제 정보(RWC)를 읽기 데이터(RD)와 함께 전송할 수 있다. 예를 들어, 컨트롤러(110)는 WC 해제 정보(RWC) 및 읽기 데이터(RD)가 포함된 데이터 패킷을 호스트(101)로 전송할 수 있다.Next, referring to FIGS. 1 and 5C, the
호스트(101)는 수신된 WC 해제 정보(RWC)를 기반으로 WC 카운터(102)를 갱신할 수 있다. 나머지 동작은 앞서 설명되었으므로, 이에 대한 상세한 설명은 생략된다.The
도 6은 본 발명의 실시 예에 따른 컴퓨팅 시스템(20)을 보여주는 블록도이다. 도 6을 참조하면, 컴퓨팅 시스템(20)은 호스트(201) 및 메모리 모듈(200)을 포함할 수 있다. 메모리 모듈(200)은 컨트롤러(210), 램 장치(220), 불휘발성 메모리 장치(230), 및 백업 전원(240)을 포함할 수 있다. 호스트(201), 메모리 모듈(200), 컨트롤러(210), 램 장치(220), 및 불휘발성 메모리 장치(230)는 앞서 설명되었으므로 이에 대한 상세한 설명은 생략된다.6 is a block diagram illustrating a
램 장치(220)는 제1 및 제2 영역들(221, 222)을 포함할 수 있다. 제1 및 제2 영역들(221, 222)은 데이터를 저장하기 위한 저장 공간일 수 있다. 메모리 모듈(200)로 전원 공급이 중단된 경우, 제1 영역(221)에 저장된 데이터가 소실될 수 있다. 반면에, 메모리 모듈(200)로 전원 공급이 중단되더라도, 제2 영역(222)에 저장된 데이터는 유지될 수 있다.The
예를 들어, 백업 전원(240)은 메모리 모듈(200)로의 전원 공급이 중단된 경우(즉, 서든 파워 오프(SPO) 등) 메모리 모듈(200)로 보조 전원을 공급할 수 있다. 전원 공급이 중단된 경우, 제2 영역(222)에 저장된 데이터는 백업 전원(240)으로부터의 보조 전원을 사용하여 데이터를 유지할 수 있다. 또는 전원 공급이 중단된 경우, 백업 전원(240)으로부터의 보조 전원을 사용하여 제2 영역(222)에 저장된 데이터가 불휘발성 메모리 장치(230)로 플러쉬(flush)될 수 있다. 즉, 전원 공급이 중단되더라도, 제2 영역(222)에 저장된 데이터는 백업 전원(240)을 사용하여 유지될 수 있다. 즉, 램 장치(220) 중 일부 영역(즉, 제2 영역(222))은 전원 백업형 저장 영역(power backed storage region)일 수 있다. For example, the
호스트(201)는 WC 카운터(202) 및 PC 카운터(203)를 포함할 수 있다. 컨트롤러(210)는 데이터 버퍼(211), WC 반환부(212), 및 PC(PC; Persist Credit) 반환부(213)를 포함할 수 있다. WC 카운터(202), 데이터 버퍼(211) 및 WC 반환부(212)는 앞서 설명되었으므로 이에 대한 상세한 설명은 생략된다.The
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과 동일한 크기를 가질 수 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다.The
예시적인 실시 예에서, 특정한 타입의 쓰기 동작에서, 호스트(201)는 PC을 사용하여 쓰기 데이터를 컨트롤러(210)로 전송할 수 있다. 예를 들어, 호스트(201)는 퍼시스트 쓰기 동작(persist write operation)을 수행할 수 있다. 퍼시스트 쓰기 동작은 전원 공급이 중단되더라도 호스트(201)로부터 제공된 쓰기 데이터의 유지를 보장하는 동작을 가리킨다. 다시 말해서, 전원 공급이 중단되더라도, 퍼시스트 쓰기 동작에 의해 메모리 모듈(200)에 기입된 데이터는 유지되어야 한다.In an example embodiment, in a particular type of write operation, the
앞서 설명된 바와 같이, 램 장치(220)의 제2 영역(222)은 전원 공급이 중단되더라도 데이터가 유지되는 저장 영역을 가리킨다. 따라서, 퍼시스트 쓰기 동작에서, 호스트(201)는 램 장치(220)의 제2 영역(222)을 사용하여 쓰기 데이터를 기입할 수 있다. 이 경우, 호스트(220)는 앞서 설명된 WC의 사용과 유사하게, 램 장치(220)의 PC을 사용하여 쓰기 데이터를 전송할 수 있다.As described above, the
호스트(201)는 퍼시스트 쓰기 동작을 수행한 경우, 쓰기 데이터의 크기 또는 퍼시스트 쓰기 커맨드의 개수를 기반으로 PC 카운터(203)를 갱신(또는 감소)할 수 있다. When the
예시적인 실시 예에서, 퍼시스트 쓰기 동작에서, 호스트(201)로부터 수신된 쓰기 데이터는 데이터 버퍼(211)의 WC에 먼저 저장되고, 이후에, 제2 영역(222)의 PC으로 전달될 수 있다. 즉, 호스트(201)는 WC 및 PC 모두를 사용하여 퍼시스트 쓰기 동작을 수행할 수 있다. 이 경우, 호스트(201)는 쓰기 데이터의 크기 또는 퍼시스트 쓰기 커맨드의 개수를 기반으로 WC 카운터(202) 및 PC 카운터(203)를 갱신(또는 감소)할 수 있다. In an exemplary embodiment, in a write write operation, write data received from the
컨트롤러(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)로 제공될 수 있다. The
호스트(201)는 PC 해제 정보(RPC)를 기반으로 PC 카운터(203)를 갱신할 수 있다. 예를 들어, PC 해제 정보(RPC)는 해제된 PC들의 개수에 대한 정보를 포함할 수 있다. 호스트(201)는 해제된 PC들의 개수만큼 PC 카운터(203)의 값을 가산할 수 있다. The
상술된 바와 같이, 호스트(201)는 WC 카운터(202) 및 PC 카운터(203)를 기반으로 메모리 모듈(200)의 사용 가능한 WC들 및 사용 가능한 PC들의 개수를 관리할 수 있다.As described above, the
비록 WC 반환부(212) 및 PC 반환부(213)가 서로 독립적인 구성으로서 도시되어 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다. WC 반환부(212), PC 반환부(213), 또는 그것들의 조합은 버퍼 반환부로서 하나의 하드웨어 구성 또는 하나의 소프트웨어 구성으로서 구현될 수 있다. 소프트웨어 형태로 구현된 WC 반환부(212) 및 PC 반환부(213)는 별도의 프로세서에 의해 구동될 수 있다. Although the
도 7a 내지 도 7d 및 도 8은 도 6의 호스트(201) 및 컨트롤러(210)의 동작을 설명하기 위한 도면들이다. 간결한 설명을 위하여, 각 동작에서 불필요한 구성 요소들에 대한 상세한 설명은 생략된다.7A to 7D and 8 are diagrams for describing operations of the
도 7a 내지 도 7d 및 도 8을 참조하면, 컴퓨팅 시스템(20)은 호스트(201) 및 메모리 모듈(200)을 포함할 수 있다. 호스트(201)는 WC 카운터(202) 및 PC 카운터(203)를 포함할 수 있다. 메모리 모듈(200)은 컨트롤러(210), 램 장치(220), 및 불휘발성 메모리 장치(230)를 포함할 수 있다. 컨트롤러(210)는 데이터 버퍼(211), WC 반환부(212), 및 PC 반환부(213)를 포함할 수 있다. 각 구성 요소들은 앞서 설명되었으므로, 이에 대한 상세한 설명은 생략된다.7A-7D and 8, the
설명의 편의를 위하여, 데이터 버퍼(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"일 것이다. For convenience of description, the
이후에, 도 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)에 저장되어야 할 것이다. Subsequently, as shown in FIG. 7B, the
다시 말해서, 호스트(201)는 2개의 일반 쓰기 커맨드들 및 2개의 퍼시스트 쓰기 커맨드들을 컨트롤러(210)로 전송할 수 있다. 이 경우, 호스트(201)는 2개의 일반 쓰기 커맨드들을 기반으로 WC 카운터(202)의 값을 감산하고, 2개의 퍼시스트 쓰기 커맨드들을 기반으로 WC 카운터(202)의 값 및 PC 카운터(203)의 값을 감산할 수 있다. 예를 들어, 2개의 일반 쓰기 커맨드들이 컨트롤러(210)로 제공되었으므로, 컨트롤러(210)는 WC 카운터(202)의 값을 "-2"만큼 감산할 수 있다.In other words, the
반면에, 2개의 퍼시스트 쓰기 커맨드들이 컨트롤러(210)로 제공되었으므로, 컨트롤러(210)는 WC 카운터(202)의 값 및 PC 카운터(203)의 값을 각각 "-2"만큼 감산할 수 있다. 이는 일반 쓰기 커맨드의 경우, 데이터 버퍼(211)의 WC들을 사용하여 데이터 전송이 가능하나, 퍼시스트 쓰기 커맨드의 경우, 데이터의 유지를 위하여, 램 장치(220)의 제2 영역(222)의 PC들을 사용하여야 하기 때문이다. On the other hand, since the two write write commands are provided to the
결과적으로, 2개의 일반 쓰기 커맨드들 및 2개의 퍼시스트 쓰기 커맨드들이 컨트롤러(210)로 전송된 경우, 호스트(201)는 WC 카운터(202)의 값을 "-4"만큼 감산할 수 있고, PC 카운터(203)의 값을 "-2"만큼 감산할 수 있다. 이에 따라, 도 7b에 도시된 바와 같이, WC 카운터(202)의 값은 "4"로 설정되고, PC 카운터(203)의 값은 "2"로 설정될 것이다. As a result, when two general write commands and two persistent write commands are sent to the
예시적으로, 호스트(201)로부터 수신된 제1 및 제2 퍼시스트 데이터(PD1, PD2) 및 제1 및 제2 데이터(D1, D2)는 제1 내지 제4 WC들(WC1~WC4)에 먼저 저장될 수 있다. 이후에, 컨트롤러(210)의 동작에 의해, 제1 내지 제4 WC들(WC1~WC4) 중 일부 WC들이 해제될 수 있다. In exemplary embodiments, the first and second pass data PD1 and PD2 and the first and second data D1 and D2 received from the
예를 들어, 도 7c에 도시된 바와 같이, 컨트롤러(210)의 동작에 따라, 제3 및 제4 WC들(WC3, WC4)에 저장된 제1 및 제2 데이터(D1, D2)가 램 장치(220)로 전달될 수 있다. 이 경우, 앞서 설명된 바와 같이, 제3 및 제4 WC들(WC3, WC4)이 해제될 수 있다. For example, as illustrated in FIG. 7C, according to the operation of the
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"일 것이다. The
이후에, 컨트롤러(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)이 해제될 수 있다.Thereafter, by the operation of the
예를 들어, 제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)로 전달될 수 있다. For example, in order to ensure the persistence of the first and second persistent data PD1 and PD2, the first and second persistent data PD1 and PD2 may be connected to the first and second PCs PC1. , PC2 may be received from the
이후에, 제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)이 해제될 수 있다. Thereafter, the first and second pass data PD1 and PD2 stored in the first and second PCs PC1 and PC2 may be transferred to the
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"만큼 증가시킬 수 있다.The
예시적으로, 퍼시스트 쓰기 커맨드에 대한 퍼시스트 데이터가 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)이 해제된 것으로 판별될 수 있다.In exemplary embodiments, the assist data for the write pass command may not be stored in both the WC and the PC. For example, as shown in FIG. 10, the first and second pass data PD1 and PD2 for the write write command may be stored in the first and second WCs WC1 and WC2. The first and second pass data PD1 and PD2 stored in the first and second WCs WC1 and WC2 may be transferred to the
즉, PC 반환부(213)는 퍼시스트 쓰기 커맨드에 대한 쓰기 데이터가 불휘발성 메모리 장치(230)에 저장된 경우, 퍼시스트 쓰기 커맨드에 대한 쓰기 데이터와 대응하는 PC들이 해제된 것으로 판별할 수 있고, PC 반환부(213)는 해제된 PC들의 개수에 대한 PC 해제 정보(RPC)를 호스트(201)로 전송할 수 있다. 호스트(201)는 수신된 PC 해제 정보(RPC)를 기반으로 WC 카운터(202) 및 PC 카운터(203)를 갱신할 수 있다.That is, when the write data for the persistent write command is stored in the
표 2는 각 동작에 따른 WC 카운터(202) 및 PC 카운터(203)의 갱신 방법을 보여준다.Table 2 shows how to update the
발행 횟수(m)Normal write command
Number of publications (m)
발행 횟수(i)Persistent Write Command
Issue count (i)
반환 개수 (n)WC
Return count (n)
반환 개수 (k)PC
Return count (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만큼 가산한다. The
도 9는 도 6의 호스트(201)의 동작 방법을 보여주는 순서도이다. 도 6 및 도 9를 참조하면, S211 단계에서, 호스트(201)는 수행될 쓰기 커맨드가 퍼시스트 쓰기 커맨드인지 판별할 수 있다. 9 is a flowchart illustrating a method of operating the
수행될 쓰기 커맨드가 지속 커맨드인 경우, S212 단계에서, 호스트(201)는 WC 카운터(202)의 값이 제1 기준치(TH1)보다 큰지, 그리고 PC 카운터(203)의 크기가 제2 기준치(TH2)보다 큰지 판별할 수 있다. 예시적으로, 제1 기준치(TH1) 및 제2 기준치(TH2) 각각은 "0"이거나 또는 동작 모드 퍼시스트 쓰기 커맨드들의 개수에 기반된 양의 정수일 수 있다.If the write command to be performed is a sustain command, in step S212, the
WC 카운터(202)의 값이 제1 기준치(TH1)보다 크지 않거나 또는 PC 카운터(203)의 크기가 제2 기준치(TH2)보다 크지 않은 경우, 호스트(201)는 퍼시스트 쓰기 커맨드에 대한 동작을 수행할 수 없을 것이다. 이는 퍼시스트 쓰기 커맨드를 수행하는데 요구되는 WC 또는 PC이 충분하지 않기 때문이다. 이 경우, S213 단계에서, 호스트(201)는 컨트롤러(214)로부터 PC 해제 정보(RPC)를 읽을 수 있다. PC 해제 정보(RPC)를 수신하는 방법은 앞서 설명된 WC 해제 정보(RWC)를 수신하는 방법과 유사하므로 이에 대한 상세한 설명은 생략된다.When the value of the
S214 단계에서, 호스트(201)는 PC 해제 정보(RPC)를 기반으로, WC 카운터(202) 및 PC 카운터(203)를 갱신할 수 있다. PC 해제 정보(RPC)에 기반된 WC 카운터(202) 및 PC 카운터(203)의 갱신 방법은 도 7a 내지 도 7d, 도 8, 및 표 2를 참조하여 설명되었으므로, 이에 대한 상세한 설명은 생략된다. S214 단계 이후에, 컨트롤러(210)는 S212 단계를 수행할 수 있다. In operation S214, the
WC 카운터(202)의 값이 제1 기준치(TH1)보다 크고 PC 카운터(203)의 크기가 제2 기준치(TH2)보다 큰 경우, S215 단계에서, 호스트(201)는 컨트롤러(210)로 쓰기 데이터를 전송하고, WC 카운터(202) 또는 PC 카운터(203)를 갱신할 수 있다. When the value of the
S211 단계의 판별 결과가 퍼시스트 쓰기 커맨드가 아님을 가리키는 경우, 호스트(201)는 S216 단계 내지 S218 단계의 동작들을 수행할 수 있다. S216 단계 내지 S218 단계의 동작들은 도 3의 S111 단계 내지 S113 단계의 동작들과 유사하므로, 이에 대한 상세한 설명은 생략된다.When the determination result of step S211 indicates that the write command is not a write command, the
도 10은 도 6의 메모리 모듈(200)의 동작 방법을 보여주는 순서도이다. 도 6 및 도 10을 참조하면, S221 단계에서, 메모리 모듈(200)은 호스트(101)로부터 수신된 커맨드가 퍼시스트 쓰기 커맨드인지 판별할 수 있다. 수신된 커맨드가 퍼시스트 쓰기 커맨드가 아닌 경우(즉, 일발 쓰기 커맨드인 경우), 메모리 모듈(200)은 S221 단계 내지 S223 단계의 동작들을 수행할 수 있다. S221 단계 내지 S223 단계의 동작들은 도 4의 S121 단계 내지 S123 단계의 동작들과 유사하므로 이에 대한 상세한 설명은 생략된다. 10 is a flowchart illustrating a method of operating the
수신된 커맨드가 퍼시스트 쓰기 커맨드인 경우, 메모리 모듈(200)은 S224 단계 내지 S229 단계의 동작들을 수행할 수 있다. S224 단계에서, 메모리 모듈(200)은 호스트(201)로부터 데이터를 수신하고, 수신된 데이터를 WC에 저장할 수 있다.When the received command is a write write command, the
S225 단계에서, 메모리 모듈(200)은 데이터가 WC으로부터 PC으로 이동하였는지 판별할 수 있다. 즉, 메모리 모듈(200)은 WC이 해제되었는지 판별할 수 있다.In operation S225, the
데이터가 WC으로부터 PC으로 이동한 경우, S226 단계에서, 메모리 모듈(200)은 WC 해제 정보(RWC)를 누적시킬 수 있다.When the data moves from the WC to the PC, in step S226, the
S227 단계에서, 메모리 모듈(200)은 데이터가 PC으로부터 불휘발성 메모리 장치(230)로 이동하였는지 판별할 수 있다. 즉, 메모리 모듈(200)은 PC이 해제되었는지 판별할 수 있다.In operation S227, the
데이터가 PC으로부터 불휘발성 메모리 장치(230)로 이동한 경우, 메모리 모듈(200)은 PC 해제 정보(RPC)를 누적할 수 있다.When data moves from the PC to the
S229 단계에서, 메모리 모듈(200)은 호스트(201)의 제어에 따라, WC 해제 정보(RWC) 또는 PC 해제 정보(RPC)를 호스트(201)로 전송할 수 있다.In operation S229, the
예시적으로, S226 단계 또는 S228 단계의 동작은 WC 해제 정보(RWC) 또는 PC 해제 정보(RPC)의 전송 방식에 따라 생략될 수 있다. 예를 들어, WC의 해제 또는 PC의 해제가 발생할 때마다, 메모리 모듈(200)이 호스트(201)로 반환 신호(RTN)를 제공하는 방식을 사용하는 경우, S226 단계 또는 S228 단계의 동작들이 생략될 수 있다. For example, the operation of step S226 or step S228 may be omitted according to a transmission method of the WC release information RWC or the PC release information RPC. For example, whenever the release of the WC or the release of the PC occurs, when the
상술된 순서도에 따른 동작 방법은 예시적인 것이며, 본 발명의 범위가 이에 한정되는 것은 아니다. 본 발명에 따른 메모리 모듈(200)의 동작 방법은 본 발명의 기술적 사상으로부터의 벗어남 없이 다양하게 변형될 수 있다. The operation method according to the above-described flowchart is exemplary, and the scope of the present invention is not limited thereto. The operation method of the
도 11은 도 6의 호스트(201) 및 컨트롤러(210)의 동작을 설명하기 위한 타이밍도이다. 도 6 및 도 11을 참조하면, 초기에, WC 카운터(202)의 값은 "4"이고, PC 카운터(203)의 값은 "2"일 수 있다. 이는 호스트(201)에 의해 사용 가능한 WC들의 개수가 4개이고, PC들의 개수가 2개임을 의미한다.FIG. 11 is a timing diagram for describing an operation of the
호스트(201)는 WC 카운터(202) 및 PC 카운터(203)를 기반으로 퍼시스트 쓰기 동작 또는 일반 쓰기 동작을 수행할 수 있다. 예를 들어, 호스트(201)는 제1 및 제2 퍼시스트 쓰기 커맨드들(persist write command)(PWR1, PWR2) 및 이에 대응하는 제1 및 제2 퍼시스트 데이터(PD1, PD2)를 컨트롤러(210)로 전송할 수 있다.The
앞서 설명된 바와 같이, 호스트(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"만큼 감산할 수 있다.As described above, the
제2 퍼시스트 쓰기 커맨드(PWR2)가 전송된 시점에서, PC 카운터(203)의 값은 "0"일 것이다. 이 경우, 호스트(201)에 의해 사용 가능한 PC이 없으므로, 호스트(201)는 퍼시스트 쓰기 동작을 수행하지 않을 수 있다. 반면에, WC 카운터(202)의 값은 "2"이므로, 호스트(201)는 일반 쓰기 동작을 수행할 수 있다. 즉, 호스트(201)는 제1 및 제2 쓰기 커맨드들(WR1, WR2) 및 이에 대응하는 제1 및 제2 데이터(D1, D2)를 컨트롤러(210)로 전송할 수 있다. At the time when the second write write command PWR2 is transmitted, the value of the
제2 쓰기 커맨드(WR2)가 전송된 시점에서, WC 카운터(202) 및 PC 카운터(203)의 값들은 "0"이기 때문에, 호스트(201)는 쓰기 동작 또는 데이터 전송을 수행하지 않을 수 있다. At the time when the second write command WR2 is transmitted, since the values of the
제1 시점(t1)에서, 앞서 설명된 바와 같이, 컨트롤러(210)의 동작에 의해 일부 WC들이 해제될 수 있다. 이 경우, 컨트롤러(210)는 호스트(201)로 반환 신호(RTN)를 전송할 수 있다.At the first time point t1, as described above, some WCs may be released by the operation of the
호스트(201)는 반환 신호(RTN)에 응답하여 반환 커맨드(RCM)를 컨트롤러(210)로 전송하고, 컨트롤러(210)는 읽기 커맨드(RD)에 응답하여 WC 해제 정보(RWC)를 전송할 수 있다. WC 해제 정보(RWC)는 "+2"의 값과 대응되는 것으로 가정한다. 호스트(201)는 WC 해제 정보(RWC)에 응답하여, WC 카운터(202)의 값을 "+2"만큼 가산할 수 있다.The
WC 해제 정보(RWC)를 수신한 시점에서, WC 카운터(202)의 값이 "2"로 갱신되었으므로, 호스트(201)는 일반 쓰기 동작을 수행할 수 있다. 이에 따라, 호스트(201)는 제3 쓰기 커맨드(WR3) 및 이에 대응하는 제3 데이터(D3)를 컨트롤러(210)로 전송할 수 있다. 제3 쓰기 커맨드(WR3)가 컨트롤러(210)로 전송됨에 따라, 호스트(201)는 WC 카운터(202)를 "-1"만큼 감산할 수 있다.At the time point when the WC release information RWC is received, since the value of the
제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)로 전송할 수 있다.At the second time point t2, some PCs may be released by the operation of the
호스트(201)는 PC 해제 정보(RPC)를 기반으로 WC 카운터(202) 및 PC 카운터(203)를 갱신할 수 있다. 예를 들어, PC 해제 정보(RPC)가 2개의 PC들이 해제되었음을 가리키는 경우, 호스트(201)는 PC 해제 정보(RPC)를 기반으로 WC 카운터(202) 및 PC 카운터(203)를 각각 "+2"만큼씩 가산할 수 있다.The
PC 해제 정보(RPC)를 수신한 시점에서, WC 카운터(202)의 값은 "3"이고, PC 카운터(203)의 값은 "2"이므로, 호스트(201)는 퍼시스트 쓰기 동작 또는 일반 쓰기 동작을 수행할 수 있다. 예를 들어, 호스트(201)는 제3 퍼시스트 쓰기 커맨드(PWR3) 및 이에 대응하는 제6 데이터(DT6)를 컨트롤러(210)로 전송할 수 있다. 제3 퍼시스트 쓰기 커맨드(PWR3)가 컨트롤러(210)로 전송됨에 따라 호스트(201)는 WC 카운터(202)의 값 및 PC 카운터(203)의 값을 각각 "-1"씩 감산할 수 있다. When the PC release information (RPC) is received, the value of the
상술된 바와 같이, 본 발명에 따른 호스트(201)는 퍼시스트 쓰기 동작 또는 일반 쓰기 동작에 따라, WC 카운터(202) 및 PC 카운터(201)를 갱신함으로써, 메모리 모듈(200)의 버퍼 자원을 관리할 수 있다. 또한, 호스트(201)는 컨트롤러(210)로부터 반환된 WC 해제 정보(RWC) 및 PC 해제 정보(WPC)를 기반으로 WC 카운터(202) 및 PC 카운터(201)를 갱신할 수 있다.As described above, the
예시적으로, WC 해제 정보(RWC) 및 PC 해제 정보(RPC)를 전송하는 방식은 다양하게 구현될 수 있다. 예를 들어, 도 6 및 도 7을 참조하여 설명된 바와 유사하게, WC 반환부(212) 및 PC 반환부(213)는 각각 해제된 WC 및 해제된 PC을 기반으로 WC 해제 정보 및 PC 해제 정보를 누적할 수 있고, 호스트(201)로부터의 반환 커맨드 또는 읽기 커맨드에 응답하여 누적된 정보를 전송할 수 있다. For example, a scheme of transmitting the WC release information RWC and the PC release information RPC may be variously implemented. For example, similarly as described with reference to FIGS. 6 and 7, the
도 12a 및 도 12b는 도 6의 호스트(201) 및 컨트롤러(210)의 동작을 설명하기 위한 블록도들이다. 간결한 설명을 위하여, 각 동작에서 불필요한 구성 요소들에 대한 상세한 설명은 생략된다.12A and 12B are block diagrams illustrating operations of the
도 12a 및 도 12b를 참조하면, 컴퓨팅 시스템(20)은 호스트(201) 및 메모리 모듈(200)을 포함할 수 있다. 호스트(201)는 WC 카운터(202) 및 PC 카운터(203)를 포함할 수 있다. 메모리 모듈(200)은 컨트롤러(210), 램 버퍼 장치(220), 및 불휘발성 메모리 장치(230)를 포함할 수 있다. 12A and 12B, the
설명의 편의를 위하여, 호스트(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)은 해제될 것이다.For convenience of description, it is assumed that the first and second WCs WC1 and WC2 and the first and second PCs PC1 and PC2 are used according to the write operation of the
WC 반환부(212)는 해제된 제1 및 제2 WC들(WC1, WC2)에 대한 WC 해제 정보(RWC)를 호스트(201)로 제공할 수 있고, 호스트(201)는 수신된 WC 해제 정보(RWC)를 기반으로 WC 카운터(202)를 갱신할 수 있다. 도 12a의 실시 예에서, 해제된 WC들의 개수는 2개이므로, 결과적으로, 호스트(201)는 WC 카운터(202)의 값을 "+2"만큼 가산할 수 있다.The
이후에, 도 12b에 도시된 바와 같이, 컨트롤러(210)의 동작에 따라 제1 및 제2 PC들(PC1, PC2)에 저장된 쓰기 데이터가 불휘발성 메모리 장치(230)에 저장될 수 있다. 이 경우, 제1 및 제2 PC들(PC1, PC2)이 해제될 것이다.Thereafter, as illustrated in FIG. 12B, write data stored in the first and second PCs PC1 and PC2 may be stored in the
PC 반환부(213)는 해제된 제1 및 제2 PC들(PC1, PC2)에 대한 PC 해제 정보(RPC)를 호스트(201)로 전송할 수 있고, 호스트(201)는 수신된 PC 해제 정보(RPC)를 기반으로 PC 카운터(203)를 갱신할 수 있다. 도 12b의 실시 예에서, 해제된 PC들의 개수는 2개이므로, 결과적으로, 호스트(201)는 PC 카운터(203)의 값을 "+2"만큼 가산할 수 있다.The
상술된 바와 같이, 호스트(201)는 메모리 모듈(200)의 WC들 및 PC들을 별도로 관리할 수 있으며, 컨트롤러(210)로부터 수신된 WC 해제 정보(RWC) 및 PC 해제 정보(RPC)를 기반으로 WC 카운터(202) 및 PC 카운터(203)를 각각 개별적으로 갱신할 수 있다. 표 3은 도 14a 및 도 14b의 실시 예들에 따른 WC 카운터(202) 및 PC 카운터(203)의 갱신 방법을 보여준다. As described above, the
발행 횟수(m)Normal write command
Number of publications (m)
발행 횟수(i)Persistent Write Command
Issue count (i)
반환량(n)WC
Return amount (n)
반환량(k)PC
Return amount (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)를 각각 관리할 수 있다.Referring to Table 3, since the configuration for issuing a general write command and generating a write write command is the same as that in Table 2, the description thereof is omitted. When the number of WCs returned from the
도 13a 내지 도 13d는 도 12a 내지 도 12b의 실시 예에 따른 호스트(201) 및 컨트롤러(210)의 동작을 설명하기 위한 타이밍도들이다. 간결한 설명을 위하여, 앞서 설명된 구성 요소들과 중복되는 설명은 생략된다.13A through 13D are timing diagrams for describing operations of the
도 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)로 전송할 수 있다.6 and 13A, initially, the value of the
도 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)만 갱신할 수 있다.As described with reference to FIG. 11, the
다음으로, 도 13b 내지 도 13d에서, 호스트(201)는 제1 및 제2 퍼시스트 커맨드들(PWR1, PWR2), 이에 대응하는 제1 및 제2 퍼시스트 데이터(PD1, PD2), 제1 및 제2 일반 쓰기 커맨드들(WR1, WR2) 및 이에 대응하는 제1 및 제2 데이터(D1, D2)를 컨트롤러(210)로 전송할 수 있다.Next, in FIGS. 13B to 13D, the
도 6 및 도 7을 참조하여 설명된 실시 예와 유사하게, WC 반환부(212)는 제1 및 제2 퍼시스트 데이터(PD1, PD2) 및 제1 및 제2 데이터(D1, D2)가 저장된 WC이 해제될 때마다, WC 해제 정보(RWC)를 누적할 수 있다. 이와 함께, PC 반환부(213)는 PC이 해제될 때마다, PC 해제 정보(RPC)를 누적할 수 있다.Similar to the embodiment described with reference to FIGS. 6 and 7, the
예를 들어, 제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"만큼 누적시킨다.For example, at each of the first to fourth time points t1, t2, t3, t4, the first and second persistent data PD1, PD2 may move from the WC to the PC, and the first and second The data D1 and D2 may move from the WC to the
또한, 제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"일 것이다.In addition, at each of the second and third time points t2 and t3, the first and second pass data PD1 and PD2 stored in the PC may move to the
도 13b에서, 컨트롤러(210)는 호스트(201)로부터 제1 반환 커맨드(RCM1)를 수신할 수 있다. 제1 반환 커맨드(RCM1)는 호스트(201)가 가용한 WC을 확보하기 위하여 컨트롤러(210)로 전송하는 커맨드일 수 있다.In FIG. 13B, the
컨트롤러(210)는 제1 반환 커맨드(RCM1)에 응답하여, WC 반환 정보(RWC)를 호스트(201)로 전송할 수 있고, 호스트(201)는 수신된 WC 반환 정보(RWC)를 기반으로 WC 카운터(202)를 갱신할 수 있다.The
호스트(201)는 제3 일반 쓰기 커맨드(WR3) 및 제3 데이터(D3)를 전송할 수 있다. 이후에, 호스트(201)는 제2 반환 커맨드(RCM2)를 컨트롤러(210)로 전송할 수 있다. 제2 반환 커맨드(RCM2)는 호스트(201)가 가용한 PC을 확보하기 위하여 컨트롤러(210)로 전송하는 커맨드일 수 있다.The
컨트롤러(210)는 제2 반환 커맨드(RCM2)에 응답하여, PC 해제 정보(RWC)를 호스트(201)로 전송할 수 있고, 호스트(201)는 수신된 PC 해제 정보(RWC)를 기반으로 PC 카운터(203)를 갱신할 수 있다.The
다음으로, 도 13c를 참조하면, 호스트(201)는 제3 반환 커맨드(RCM3)를 컨트롤러(210)로 전송할 수 있다. 제3 반환 커맨드(RCM3)는 앞서 설명된 제1 및 제2 반환 커맨드들(RCM1, RCM2)과 달리, 호스트(201)가 가용한 WC 및 가용한 PC 모두를 확보하기 위하여 컨트롤러(210)로 전송하는 커맨드일 수 있다.Next, referring to FIG. 13C, the
컨트롤러(210)는 제3 반환 커맨드(RCM3)에 응답하여, WC 해제 정보(RWC) 및 PC 해제 정보(RPC)를 호스트(201)로 전송할 수 있고, 호스트(201)는 수신된 WC 해제 정보(RWC) 및 PC 해제 정보(RPC)를 기반으로 WC 카운터(202) 및 PC 카운터(203)를 각각 갱신할 수 있다.The
다음으로, 도 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)를 각각 갱신할 수 있다.Next, referring to FIG. 13D, the
상술된 바와 같이, 컨트롤러(210)의 WC 반환부(212) 및 PC 반환부(213)는 WC 및 PC의 해제에 따라 WC 해제 정보(RWC) 및 PC 해제 정보(RPC)를 누적시킬 수 있고, 호스트(201)로부터의 반환 커맨드 또는 읽기 커맨드에 응답하여 누적된 정보를 호스트(201)로 전송할 수 있다.As described above, the
도 14는 도 6의 WC 카운터(202) 및 PC 카운터(203)의 예를 보여주는 도면이다. 예시적으로, 앞서 설명된 실시 예들에서, WC 카운터(102, 202) 또는 PC 카운터(203)는 컨트롤러(110, 210)의 WC들 또는 PC들 중 사용 가능한 WC들의 개수 또는 사용 가능한 PC들의 개수를 관리하도록 구성된다.14 is a diagram illustrating examples of the
그러나, 본 발명의 범위가 이에 한정되는 것은 아니며, 도 17에 도시된 바와 같이, WC 카운터(202) 및 PC 카운터(203)는 각각 비트맵 형태로 구현될 수 있다. 예를 들어, WC 카운터(202)는 비트맵 형태로 구현될 수 있으며, 각 비트들은 데이터 버퍼(211)의 복수의 WC들(WC1~WCn)과 각각 대응될 수 있다. 쓰기 동작 시, 호스트(201)는 사용된 WC에 대응하는 비트의 값을 바꿈으로써, 사용된 WC 및 사용 가능한 WC을 각각 관리할 수 있다.However, the scope of the present invention is not limited thereto, and as illustrated in FIG. 17, the
마찬가지로, PC 카운터(203)는 비트맵 형태로 구현될 수 있으며, 각 비트들은 램 장치(220)의 제2 영역(222)의 복수의 PC들(PC1~PCm)과 각각 대응될 수 있다. 쓰기 동작 시, 호스트(201)는 사용된 PC에 대응하는 비트의 값을 바꿈으로써, 사용된 PC 및 사용 가능한 PC을 각각 관리할 수 있다.Similarly, the
상술된 비트맵 형태의 WC 카운터 및 PC 카운터의 구성들은 예시적인 것이며, 본 발명의 범위가 이에 한정되는 것은 아니다. WC 카운터 및 PC 카운터의 구성들은 본 발명의 기술적 사상으로부터의 벗어남 없이 다양하게 변형될 수 있다.Configurations of the above-described bitmap type WC counter and PC counter are exemplary, but the scope of the present invention is not limited thereto. Configurations of the WC counter and the PC counter can be variously modified without departing from the spirit of the invention.
도 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의 각 구성 요소들은 앞서 설명되었으므로, 이에 대한 상세한 설명은 생략된다. 15 is a block diagram illustrating a
예시적으로, 제1 버퍼(311)는 앞서 설명된 데이터 버퍼와 대응될 수 있고, 제2 버퍼(320)는 앞서 설명된 램 장치와 대응될 수 있다. 예를 들어, 제1 버퍼(311)는 앞서 설명된 WC들(WC)을 포함할 수 있고, 제2 버퍼(320)(특히, 제2 영역(322))은 PC들(PC)을 포함할 수 있다. 즉, 도 18은 제2 버퍼(320)가 컨트롤러(310)에 포함된 구성을 보여준다. 상술된 바와 같이, 컨트롤러(310)는 PC을 포함할 수 있으며, 앞서 설명된 바와 유사하게 동작할 수 있다. In exemplary embodiments, the first buffer 311 may correspond to the data buffer described above, and the second buffer 320 may correspond to the RAM device described above. For example, the first buffer 311 may include the WCs WC described above, and the second buffer 320 (particularly, the second region 322) may include the PCs PC. Can be. That is, FIG. 18 illustrates a configuration in which the second buffer 320 is included in the
도 16은 본 발명에 따른 메모리 모듈의 예시적인 블록도이다. 도 16을 참조하면, 메모리 모듈(1000)은 컨트롤러(1100), 불휘발성 메모리 장치들(1200), 및 DRAM 장치들(1300)를 포함할 수 있다. 컨트롤러(1100)는 WC들(WC) 및 PC들(PC)을 포함할 수 있다. 컨트롤러(1100)는 데이터 라인(DQ)을 통해 수신된 데이터를 불휘발성 메모리 장치(1200)에 기입하거나 또는 DRAM 장치(1300)에 기입할 수 있다. 예시적으로, 메모리 모듈(1000) 또는 컨트롤러(1100)는 외부 장치와 DDR 인터페이스를 통해 통신할 수 있다. 16 is an exemplary block diagram of a memory module in accordance with the present invention. Referring to FIG. 16, the
예시적으로, 컨트롤러(1200)는 도 1 내지 도 15를 참조하여 설명된 방법을 기반으로 동작할 수 있다. 예를 들어, 컨트롤러(1200)는 데이터 라인(DQ)을 통해 수신된 쓰기 데이터를 WC에 저장할 수 있고, WC이 해제된 경우, WC 해제 정보(RWC)를 데이터 라인(DQ)을 통해 외부 장치로 제공할 수 있다. 또는 컨트롤러(1200)는 WC 및 PC을 사용하여 데이터 라인(DQ)을 통해 수신된 쓰기 데이터를 저장할 수 있고, WC 또는 PC이 해제된 경우, WC 해제 정보(RWC) 또는 PC 해제 정보(RPC)를 데이터 라인(DQ)을 통해 외부 장치로 제공할 수 있다.In exemplary embodiments, the
비록 도면에 도시되지는 않았으나, PC은 DRAM 장치들(1300) 중 일부 영역에 포함될 수 있고, 일부 영역은 별도의 백업 전원을 사용하여 전원 공급과 무관하게 데이터를 유지할 수 있다. Although not shown in the drawing, the PC may be included in some areas of the
도 17은 본 발명에 따른 메모리 모듈의 예시적인 블록도이다. 도 17을 참조하면, 메모리 모듈(2000)은 컨트롤러(2100), 복수의 메모리 장치들(2210~2280), 및 복수의 데이터 버퍼들(DB)을 포함할 수 있다. 예시적으로, 메모리 모듈(2000)은 외부 장치(예를 들어, 호스트)와 DDR 인터페이스를 기반으로 통신할 수 있다. 예시적으로, 메모리 모듈(2000)의 컨트롤러(2100)는 외부로부터의 커맨드(CMD)에 응답하여 복수의 메모리 장치들(2210~2280) 및 데이터 버퍼들(DB)을 제어하도록 구성될 수 있다.17 is an exemplary block diagram of a memory module in accordance with the present invention. Referring to FIG. 17, the
복수의 데이터 버퍼들(DB)은 외부 장치와 데이터 라인들(DQ) 및 데이터 스트로브 라인들(DQS)을 통해 데이터를 송수신할 수 있고, 외부로부터 수신된 쓰기 데이터를 복수의 메모리 장치들(2210~2280)로 각각 전송할 수 있다.The plurality of data buffers DB may transmit and receive data to and from the external device through the data lines DQ and the data strobe lines DQS, and write data received from the outside to the plurality of
도 17에 도시된 메모리 모듈(2000)의 구성은 예시적인 것이며, 본 발명의 범위가 이에 한정되는 것은 아니다. 예를 들어, 메모리 모듈(2000)은 복수의 데이터 버퍼들(DB)이 생략된 RDIMM 구조를 가질 수 있다. 또는 컨트롤러(2100)가 메모리 모듈(2000)로 제공되는 복수의 데이터 신호들(DQ) 및 데이터 스트로브 신호(DQS)을 수신하고, 컨트롤러(2100)가 수신된 신호를 기반으로 복수의 메모리 장치들(2210~2280)을 제어할 수 있다.The configuration of the
도 18은 본 발명에 따른 메모리 모듈이 적용된 컴퓨팅 시스템을 예시적으로 보여주는 블록도이다. 도 18을 참조하면, 사용자 시스템(3000)은 프로세서(3001) 및 복수의 메모리들(3110~3140)을 포함할 수 있다.18 is a block diagram illustrating a computing system to which a memory module according to the present invention is applied. Referring to FIG. 18, the
프로세서(3001)는 컨트롤러(3002)를 포함할 수 있다. 컨트롤러(3002)는 버스(3003)를 통해 복수의 메모리들(3110~3140)과 통신할 수 있다. 예시적으로, 버스(3003)는 복수의 메모리들(3110~3140) 각각과 연결된 전용 버스들 또는 복수의 메모리들(3110~3140)과 공유되는 공용 버스를 포함할 수 있다. 예시적으로, 복수의 메모리들(3110~3140) 중 적어도 일부는 도 1 내지 도 17을 참조하여 설명된 메모리 모듈이거나 또는 도 1 내지 도 17을 참조하여 설명된 동작 방법을 기반으로 동작할 수 있다.The
또는, 복수의 메모리들(3110~3140) 중 적어도 일부는 불휘발성 메모리를 포함하고, 나머지 일부는 휘발성 메모리를 포함할 수 있다. 휘발성 메모리를 포함하는 메모리 모듈은 불휘발성 메모리를 포함하는 메모리 모듈의 캐시 메모리 또는 버퍼 메모리로서 사용될 수 있다. 즉, 복수의 메모리들(3110~3140) 중 일부는 PC을 포함하는 램 장치 또는 버퍼로서 사용될 수 있다. 예시적으로, 컨트롤러(3002)는 도 1 내지 도 17을 참조하여 설명된 동작 방법을 기반으로 동작할 수 있다. 또는 프로세서(3001)는 도 1 내지 도 17을 참조하여 설명된 방법을 기반으로 WC들 또는 PC들을 관리할 수 있다. Alternatively, at least some of the plurality of
상술된 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.The foregoing is specific embodiments for practicing the present invention. The present invention will include not only the above-described embodiments but also embodiments that can be simply changed in design or easily changed. In addition, the present invention will also include techniques that can be easily modified and practiced using the embodiments. Therefore, the scope of the present invention should not be limited to the above-described embodiments, but should be determined by the equivalents of the claims of the present invention as well as the following claims.
Claims (10)
불휘발성 메모리 장치; 및
호스트의 제어에 따라 상기 램 장치 또는 상기 불휘발성 메모리 장치를 제어하도록 구성된 컨트롤러를 포함하고,
상기 컨트롤러는:
상기 호스트로부터 수신된 제1 데이터를 임시 저장하도록 구성된 데이터 버퍼; 및
상기 제1 데이터가 상기 데이터 버퍼로부터 상기 램 장치의 상기 제1 영역 또는 상기 제2 영역으로 이동한 경우 제1 해제 정보를 상기 호스트로 전송하고, 상기 제1 데이터가 상기 제2 영역으로부터 상기 불휘발성 메모리 장치로 이동한 경우 제2 해제 정보를 상기 호스트로 전송하도록 구성된 버퍼 반환부를 포함하는 메모리 모듈.A RAM device including a first storage area and a second storage area;
Nonvolatile memory devices; And
A controller configured to control the RAM device or the nonvolatile memory device under a control of a host,
The controller is:
A data buffer configured to temporarily store first data received from the host; And
When the first data is moved from the data buffer to the first region or the second region of the RAM device, first release information is transmitted to the host, and the first data is nonvolatile from the second region. And a buffer return unit configured to transmit second release information to the host when moved to the memory device.
상기 제2 저장 영역은 상기 제1 저장 영역과 물리적으로 구분되고,
상기 제2 저장 영역으로 보조 전원을 공급하도록 구성된 보조 전원 장치를 더 포함하는 메모리 모듈.The method of claim 1,
The second storage area is physically separated from the first storage area,
And an auxiliary power supply configured to supply auxiliary power to the second storage area.
상기 데이터 버퍼는 복수의 제1 단위 버퍼들을 포함하고,
상기 램 장치의 상기 제2 영역은 복수의 제2 단위 버퍼들을 포함하고,
상기 제1 데이터는 상기 복수의 제1 단위 버퍼들 중 어느 하나에 임시 저장되고, 상기 어느 하나의 제1 단위 버퍼로부터 상기 복수의 제2 단위 버퍼들 중 어느 하나로 이동하는 메모리 모듈.The method of claim 1,
The data buffer includes a plurality of first unit buffers,
The second region of the RAM device includes a plurality of second unit buffers,
And the first data is temporarily stored in any one of the plurality of first unit buffers, and moves from one of the first unit buffers to any one of the plurality of second unit buffers.
상기 제1 해제 정보는 상기 복수의 제1 단위 버퍼들 중 상기 제1 데이터가 저장된 제1 단위 버퍼가 해제되었음을 알리는 정보인 메모리 모듈.The method of claim 3, wherein
The first release information is information indicating that the first unit buffer in which the first data is stored among the plurality of first unit buffers is released.
상기 제2 해제 정보는 상기 복수의 제2 단위 버퍼들 중 상기 제1 데이터가 저장된 제2 단위 버퍼가 해제되었음을 알리는 정보인 메모리 모듈.The method of claim 3, wherein
The second release information is information indicating that the second unit buffer, in which the first data is stored, of the plurality of second unit buffers is released.
상기 제1 해제 정보를 기반으로 상기 호스트의 제1 카운트 값이 갱신되고, 상기 제2 해제 정보를 기반으로 상기 호스트의 제2 카운트 값이 갱신되는 메모리 모듈.The method of claim 3, wherein
And a first count value of the host is updated based on the first release information, and a second count value of the host is updated based on the second release information.
상기 제1 카운트 값은 상기 복수의 제1 단위 버퍼들 중 가용한 제1 단위 버퍼의 개수를 가리키고, 상기 제2 카운트 값은 상기 복수의 제2 단위 버퍼들 중 가용한 제2 단위 버퍼의 개수를 가리키는 메모리 모듈.The method of claim 6,
The first count value indicates the number of available first unit buffers among the plurality of first unit buffers, and the second count value indicates the number of available second unit buffers among the plurality of second unit buffers. Memory module pointing.
상기 제1 데이터가 상기 데이터 버퍼로부터 상기 제1 영역 또는 상기 제2 영역으로 이동하거나 또는 상기 제1 데이터가 상기 제2 영역으로부터 상기 불휘발성 메모리 장치로 이동한 경우, 상기 컨트롤러는 상기 호스트로 반환 신호를 전송하는 메모리 모듈.The method of claim 1,
When the first data moves from the data buffer to the first area or the second area, or when the first data moves from the second area to the nonvolatile memory device, the controller returns a signal to the host. Memory module to transmit.
상기 호스트로부터의 반환 커맨드에 응답하여, 상기 버퍼 반환부는 상기 제1 해제 정보 또는 상기 제2 해제 정보를 상기 호스트로 전송하는 메모리 모듈.The method of claim 1,
In response to a return command from the host, the buffer return unit to transmit the first release information or the second release information to the host.
상기 호스트로부터의 읽기 커맨드에 응답하여, 상기 버퍼 반환부는 상기 제1 해제 정보 또는 상기 제2 해제 정보, 및 상기 읽기 커맨드에 대응하는 읽기 데이터를 포함하는 데이터 패킷을 상기 호스트로 전송하는 메모리 모듈.
The method of claim 1,
In response to a read command from the host, the buffer return unit transmits a data packet including the first release information or the second release information and read data corresponding to the read command to the host.
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 (en) | 2018-02-01 | 2018-12-24 | Memory module and operation method thereof |
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 true KR20190093475A (en) | 2019-08-09 |
KR102549591B1 KR102549591B1 (en) | 2023-06-30 |
Family
ID=67613668
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180019329A KR102549591B1 (en) | 2018-02-01 | 2018-02-19 | Operation method of host, operation method of memory module, and operation method of memory system |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102549591B1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11593023B2 (en) | 2020-10-23 | 2023-02-28 | SK Hynix Inc. | Memory controller and method of operating the same |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20130130484A (en) * | 2012-05-22 | 2013-12-02 | 삼성전자주식회사 | Flash memory system including read counter logic |
KR20150082010A (en) * | 2014-01-07 | 2015-07-15 | 삼성전자주식회사 | Micro-journaling for non-volatile memory file system |
KR20170010729A (en) * | 2015-07-20 | 2017-02-01 | 삼성전자주식회사 | Storage system and method for metadata management in Non-volatile memory |
-
2018
- 2018-02-19 KR KR1020180019329A patent/KR102549591B1/en active IP Right Grant
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20130130484A (en) * | 2012-05-22 | 2013-12-02 | 삼성전자주식회사 | Flash memory system including read counter logic |
KR20150082010A (en) * | 2014-01-07 | 2015-07-15 | 삼성전자주식회사 | Micro-journaling for non-volatile memory file system |
KR20170010729A (en) * | 2015-07-20 | 2017-02-01 | 삼성전자주식회사 | Storage system and method for metadata management in Non-volatile memory |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11593023B2 (en) | 2020-10-23 | 2023-02-28 | SK Hynix Inc. | Memory controller and method of operating the same |
Also Published As
Publication number | Publication date |
---|---|
KR102549591B1 (en) | 2023-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110109612B (en) | Memory module and operation method thereof | |
US10268382B2 (en) | Processor memory architecture | |
CN110175140B (en) | Fusion memory device and method of operating the same | |
US10002668B2 (en) | Memory device, memory module, and memory system | |
CN108780423B (en) | Multi-level memory management circuit, management method and management device | |
US11709777B2 (en) | Memory system | |
EP3441885B1 (en) | Technologies for caching persistent two-level memory data | |
US10949120B2 (en) | Host defined bandwidth allocation for SSD tasks | |
EP3379420A1 (en) | Apparatus, system, and method to flush modified data from a volatile memory to a persistent second memory | |
US20190114264A1 (en) | Memory system | |
US20180113628A1 (en) | Hybrid memory module bridge network and buffers | |
US10032494B2 (en) | Data processing systems and a plurality of memory modules | |
CN111679783A (en) | Memory controller | |
US20170147230A1 (en) | Memory device and memory system having heterogeneous memories | |
US10452313B2 (en) | Apparatuses and methods for multiple address registers for a solid state device | |
KR102549591B1 (en) | Operation method of host, operation method of memory module, and operation method of memory system | |
US11443784B2 (en) | Command buffer chip with dual configurations | |
US10936534B2 (en) | Converged memory device and method thereof | |
US20230094144A1 (en) | Memory system | |
CN111694772A (en) | Memory controller | |
US20230060874A1 (en) | Dynamic queue depth adjustment | |
US20220171551A1 (en) | Available memory optimization to manage multiple memory channels | |
US11054993B2 (en) | Mass storage system having peer-to-peer data movements between a cache and a backend store | |
US20240160568A1 (en) | Techniques for data movement to a cache in a disaggregated die system | |
WO2022193270A1 (en) | Write booster buffer flush operation |
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 |