KR102290988B1 - Nonvolatile memory module and operating method thereof - Google Patents

Nonvolatile memory module and operating method thereof Download PDF

Info

Publication number
KR102290988B1
KR102290988B1 KR1020150080745A KR20150080745A KR102290988B1 KR 102290988 B1 KR102290988 B1 KR 102290988B1 KR 1020150080745 A KR1020150080745 A KR 1020150080745A KR 20150080745 A KR20150080745 A KR 20150080745A KR 102290988 B1 KR102290988 B1 KR 102290988B1
Authority
KR
South Korea
Prior art keywords
data
ram
nonvolatile memory
error
host
Prior art date
Application number
KR1020150080745A
Other languages
Korean (ko)
Other versions
KR20160144562A (en
Inventor
남희현
조영진
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020150080745A priority Critical patent/KR102290988B1/en
Priority to US15/096,877 priority patent/US20160357462A1/en
Publication of KR20160144562A publication Critical patent/KR20160144562A/en
Application granted granted Critical
Publication of KR102290988B1 publication Critical patent/KR102290988B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory

Landscapes

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

Abstract

본 발명의 실시 예에 따른 불휘발성 메모리 모듈은 적어도 하나의 불휘발성 메모리, 그리고 디바이스 컨트롤러를 포함할 수 있다. 상기 디바이스 컨트롤러는 호스트로부터 데이터 및 에러 정정 코드를 수신하고, 상기 에러 정정 코드를 이용하여 상기 데이터의 에러를 검출하고, 상기 데이터의 에러를 정정하는 디바이스 컨트롤러를 포함할 수 있다. 상기 디바이스 컨트롤러는 에러 정정 모듈을 로딩하고 구동하여 상기 데이터의 에러를 정정할 수 있다. 본 발명의 실시 예에 따르면, 불휘발성 메모리 모듈의 칩 사이즈를 감소시킬 수 있다. 그리고, 에러 정보를 관리하여 호스트로 전송될 수 있도록 함으로써, 호스트로부터의 데이터 수신의 신뢰성을 향상시킬 수 있다.A nonvolatile memory module according to an embodiment of the present invention may include at least one nonvolatile memory and a device controller. The device controller may include a device controller that receives data and an error correction code from a host, detects an error in the data using the error correction code, and corrects an error in the data. The device controller may load and drive an error correction module to correct an error in the data. According to an embodiment of the present invention, the chip size of the nonvolatile memory module can be reduced. Also, by managing error information so that it can be transmitted to the host, reliability of data reception from the host can be improved.

Figure R1020150080745
Figure R1020150080745

Description

불휘발성 메모리 모듈 및 그것의 동작 방법{NONVOLATILE MEMORY MODULE AND OPERATING METHOD THEREOF}Nonvolatile memory module and operating method thereof

본 발명은 반도체 메모리 장치에 관한 것으로, 좀 더 상세하게는, 불휘발성 메모리 모듈에 관한 것이다.The present invention relates to a semiconductor memory device, and more particularly, to a nonvolatile memory module.

반도체 메모리 장치는 크게 휘발성 반도체 메모리 장치(Volatile semiconductor memory device)와 불휘발성 반도체 메모리 장치(Non-volatile semiconductor memory device)로 구분될 수 있다. 휘발성 반도체 메모리 장치는 읽기 및 쓰기 속도가 빠른 장점이 있지만, 전원 공급이 끊기면 저장된 데이터가 사라져 버리는 단점이 있다. 반면에, 불휘발성 반도체 메모리 장치는 전원 공급이 중단되더라도 저장된 데이터가 보존된다. 그러므로, 불휘발성 반도체 메모리 장치는 전원이 공급되었는지의 여부에 관계없이 보존되어야 할 내용을 저장하는 데 쓰인다.The semiconductor memory device may be largely divided into a volatile semiconductor memory device and a non-volatile semiconductor memory device. The volatile semiconductor memory device has an advantage of high read and write speeds, but has a disadvantage in that stored data disappears when power supply is cut off. On the other hand, in the nonvolatile semiconductor memory device, stored data is preserved even when power supply is interrupted. Therefore, the nonvolatile semiconductor memory device is used to store contents to be preserved regardless of whether power is supplied or not.

최근에 호스트와 데이터 스토리지 사이의 통신 속도를 향상시키기 위한 많은 연구가 이루어지고 있다. 예를 들어, 플래시 메모리를, 메모리(예를 들어, DRAM 등) 슬롯에 장착하여 통신 속도를 향상시키려는 연구 등이 있다. 다만, 이 경우 기존의 인터페이스와의 호환성 유지, 및 데이터의 신뢰성을 확보가 필수적으로 요구된다. 따라서, 기존의 인터페이스와 호환성을 유지하고 데이터의 신뢰성을 보장할 수 있는 플래시 메모리 장치를 개발하는 것이 중요한 문제로 부각되고 있다.Recently, many studies have been made to improve the communication speed between the host and data storage. For example, there is a study to improve communication speed by mounting a flash memory in a memory (eg, DRAM, etc.) slot. However, in this case, it is essential to maintain compatibility with the existing interface and secure data reliability. Therefore, it is emerging as an important issue to develop a flash memory device capable of maintaining compatibility with an existing interface and ensuring data reliability.

본 발명의 목적은 호스트로부터 수신된 데이터의 에러 검출은 하드웨어를 이용하여 수행하고, 에러의 정정은 펌웨어를 이용하여 수행함으로써 불휘발성 메모리 모듈의 칩 사이즈를 감소시키는 데 있다. An object of the present invention is to reduce the chip size of a nonvolatile memory module by performing error detection of data received from a host using hardware and error correction using firmware.

본 발명의 다른 목적은 에러 정보를 관리하여 호스트로 전송될 수 있도록 함으로써, 호스트로부터의 데이터 수신의 신뢰성을 향상시키는 데 있다.Another object of the present invention is to improve reliability of data reception from a host by managing error information so that it can be transmitted to a host.

본 발명의 실시 예에 따른 불휘발성 메모리 모듈은, 적어도 하나의 불휘발성 메모리, 그리고 호스트로부터 데이터 및 에러 정정 코드를 수신하고, 상기 에러 정정 코드를 이용하여 상기 데이터의 에러를 검출하고, 상기 데이터의 에러를 정정하는 디바이스 컨트롤러를 포함하되, 상기 디바이스 컨트롤러는 에러 정정 모듈을 실행하여 상기 데이터의 에러를 정정할 수 있다.A nonvolatile memory module according to an embodiment of the present invention receives at least one nonvolatile memory and data and an error correction code from a host, detects an error in the data using the error correction code, and and a device controller for correcting an error, wherein the device controller may correct an error of the data by executing an error correction module.

실시 예로써, 상기 호스트와 상기 불휘발성 메모리 모듈은 듀얼 데이터 레이트(dual data rate; DDR) 인터페이스를 통하여 통신할 수 있다.In an embodiment, the host and the nonvolatile memory module may communicate through a dual data rate (DDR) interface.

다른 실시 예로써, 상기 불휘발성 메모리 모듈은 듀얼 인-라인 메모리 모듈(Dual In-line Memory Module; DIMM)일 수 있다.In another embodiment, the nonvolatile memory module may be a dual in-line memory module (DIMM).

또 다른 실시 예로써, 상기 디바이스 컨트롤러는, 상기 데이터가 저장되는 램을 포함하고, 상기 호스트와 인터페이싱을 수행하는 물리 계층, 그리고 상기 램과 상기 불휘발성 메모리 사이에서의 데이터 교환을 제어하는 DIMM 컨트롤러를 포함할 수 있다.As another embodiment, the device controller includes a RAM in which the data is stored, a physical layer that interfaces with the host, and a DIMM controller that controls data exchange between the RAM and the nonvolatile memory. may include

또 다른 실시 예로써, 상기 DIMM 컨트롤러는 상기 데이터의 에러를 검출하는 하드웨어로 구현된 에러 검출기를 포함할 수 있다.As another embodiment, the DIMM controller may include an error detector implemented in hardware for detecting an error in the data.

또 다른 실시 예로써, 상기 DIMM 컨트롤러는, 상기 데이터를 스트림 패킷의 형태로 가공하여 상기 불휘발성 메모리로 전송하는 스트림 패킷 생성기, 그리고 상기 데이터의 에러가 정정되지 않은 경우, 상기 정정되지 않은 데이터에 관한 상태 정보를 업데이트하는 상태 정보 생성기를 더 포함할 수 있다.As another embodiment, the DIMM controller includes a stream packet generator that processes the data in the form of a stream packet and transmits it to the nonvolatile memory, and, when an error in the data is not corrected, the data related to the uncorrected data It may further include a state information generator for updating the state information.

또 다른 실시 예로써, 상기 DIMM 컨트롤러는 상기 상태 정보를 상기 램으로 전송할 수 있다.As another embodiment, the DIMM controller may transmit the status information to the RAM.

또 다른 실시 예로써, 상기 상태 정보는 상기 호스트에 의해 액세스 되어, 상기 호스트가 상기 데이터를 재전송하는데 참조될 수 있다.As another embodiment, the status information may be accessed by the host and referenced for retransmitting the data by the host.

또 다른 실시 예로써, 상기 데이터는 스토리지 커맨드, 스토리지 어드레스, 및 쓰기 데이터를 포함하고, 상기 램은 상기 스토리지 커맨드 및 상기 스토리지 어드레스가 저장되는 읽기 영역, 상기 쓰기 데이터가 저장되는 쓰기 영역, 그리고 상기 스토리지 커맨드의 실행이 완료되었는지 여부에 관한 상태 정보가 저장되는 상태 영역을 포함할 수 있다.In another embodiment, the data includes a storage command, a storage address, and write data, and the RAM includes a read area in which the storage command and the storage address are stored, a write area in which the write data is stored, and the storage. It may include a status area in which status information regarding whether the execution of the command has been completed is stored.

또 다른 실시 예로써, 상기 에러 정정 모듈은 상기 불휘발성 메모리 또는 상기 디바이스 컨트롤러에 구비된 ROM으로부터 로딩될 수 있다.As another embodiment, the error correction module may be loaded from the nonvolatile memory or a ROM included in the device controller.

본 발명의 실시 예에 따른 불휘발성 메모리 모듈은, 적어도 하나의 불휘발성 메모리, 그리고 호스트로부터 데이터 및 에러 정정 코드를 수신하고, 상기 에러 정정 코드를 이용하여 상기 데이터의 에러를 검출하고, 에러 정정 모듈을 실행하여 상기 데이터의 에러를 정정하는 디바이스 컨트롤러를 포함하되, 상기 디바이스 컨트롤러는, 상기 호스트로부터 램 커맨드 및 램 어드레스를 수신하는 램 컨트롤러, 그리고 상기 램 커맨드 및 상기 램 어드레스에 따라 상기 데이터가 저장되는 램을 포함하는 물리 계층, 상기 램과 상기 불휘발성 메모리 사이에서의 데이터 교환을 제어하는 DIMM 컨트롤러, 그리고 상기 에러 정정 모듈을 실행하는 프로세서를 포함 할 수 있다.A nonvolatile memory module according to an embodiment of the present invention includes at least one nonvolatile memory, and receives data and an error correction code from a host, detects an error in the data using the error correction code, and includes an error correction module a device controller configured to correct an error of the data by executing A physical layer including a RAM, a DIMM controller controlling data exchange between the RAM and the nonvolatile memory, and a processor executing the error correction module may be included.

실시 예로써, 상기 DIMM 컨트롤러는, 상기 데이터의 에러를 검출하는 에러 검출기, 그리고 상기 데이터의 에러가 정정되지 않은 경우, 상기 정정되지 않은 데이터에 관한 상태 정보를 업데이트하는 상태 정보 생성기를 포함할 수 있다.In an embodiment, the DIMM controller may include an error detector for detecting an error in the data, and a state information generator for updating state information on the uncorrected data when the error in the data is not corrected. .

다른 실시 예로써, 상기 상태 정보는 상기 램에 저장되고, 상기 상태 정보는 상기 호스트에 의해 액세스 되어, 상기 호스트가 상기 데이터를 재전송하는데 참조될 수 있다.In another embodiment, the state information may be stored in the RAM, and the state information may be accessed by the host to be referred to by the host to retransmit the data.

또 다른 실시 예로써, 상기 호스트와 상기 불휘발성 메모리 모듈은 듀얼 데이터 레이트(dual data rate; DDR) 인터페이스를 통하여 통신할 수 있다.In another embodiment, the host and the nonvolatile memory module may communicate through a dual data rate (DDR) interface.

또 다른 실시 예로써, 상기 불휘발성 메모리 모듈은 듀얼 인-라인 메모리 모듈(Dual In-line Memory Module; DIMM)일 수 있다.As another embodiment, the nonvolatile memory module may be a dual in-line memory module (DIMM).

본 발명의 실시 예에 따르면, 호스트로부터 수신된 데이터의 에러 검출은 하드웨어를 이용하여 수행하고, 에러의 정정은 펌웨어를 이용하여 수행함으로써 불휘발성 메모리 모듈의 칩 사이즈를 감소시킬 수 있다. According to an embodiment of the present invention, error detection of data received from the host is performed using hardware and error correction is performed using firmware, thereby reducing the chip size of the nonvolatile memory module.

본 발명의 다른 실시 예에 따르면, 에러 정보를 관리하여 호스트로 전송될 수 있도록 함으로써, 호스트로부터의 데이터 수신의 신뢰성을 향상시킬 수 있다.According to another embodiment of the present invention, the reliability of data reception from the host may be improved by managing error information to be transmitted to the host.

도 1은 본 발명의 실시 예에 따른 스토리지 시스템을 보여주는 블록도이다.
도 2는 도 1에 도시된 데이터 스토리지의 구성을 좀 더 상세하게 보여주는 블록도이다.
도 3은 도 2에 도시된 데이터 스토리지 및 소프트웨어 계층을 예시적으로 보여주는 블록도이다.
도 4는 도 2에 도시된 램의 구조를 상세하게 보여주는 블록도이다.
도 5는 도 2에 도시된 데이터 스토리지에 대한 쓰기 동작을 보여주는 순서도이다.
도 6은 도 2에 도시된 데이터 스토리지에 대한 읽기 동작을 보여주는 순서도이다.
도 7은 호스트(100)와 데이터 스토리지 사이의 데이터 통신을 예시적으로 보여주는 블록도이다.
도 8은 본 발명의 실시 예에 따라 에러를 검출하고 정정하는 과정을 보여주는 블록도이다.
도 9는 도 8에 도시된 DIMM 컨트롤러를 좀 더 상세하게 보여주는 블록도이다.
도 10은 도 8에 도시된 DIMM 컨트롤러의 다른 실시 예를 좀 더 상세하게 보여주는 블록도이다.
도 11은 본 발명의 스토리지 시스템에 있어서, 호스트로부터 수신된 데이터의 에러를 검출하고 정정하는 방법을 보여주는 순서도이다.
도 12는 본 발명의 실시 예에 따른 디바이스 컨트롤러의 동작 방법을 보여주는 순서도이다.
도 13은 본 발명의 다른 실시 예에 따른 디바이스 컨트롤러의 동작 방법을 보여주는 순서도이다.
도 14는 도 2에 도시된 불휘발성 메모리들 중 어느 하나를 예시적으로 보여주는 블록도이다.
도 15는 도 14의 메모리 셀 어레이에 포함된 메모리 블록들 중 어느 하나의 예를 보여주는 회로도이다.
도 16은 본 발명에 따른 불휘발성 메모리 모듈이 적용된 컴퓨팅 시스템을 예시적으로 보여주는 블록도이다.
도 17은 도 16의 불휘발성 메모리 모듈들 중 어느 하나를 예시적으로 보여주는 블록도이다.
도 18은 도 16의 불휘발성 메모리 모듈들 중 어느 하나를 예시적으로 보여주는 블록도이다.
도 19는 본 발명에 따른 불휘발성 메모리 모듈이 적용된 컴퓨팅 시스템의 다른 예를 예시적으로 보여주는 블록도이다.
도 20은 도 19의 불휘발성 메모리 모듈을 예시적으로 보여주는 블록도이다.
도 21은 도 19의 불휘발성 메모리 모듈을 예시적으로 보여주는 블록도이다.
도 22는 도 19의 불휘발성 메모리 모듈을 예시적으로 보여주는 블록도이다.
도 23은 본 발명의 실시 예에 따른 불휘발성 메모리 시스템이 적용된 서버 시스템을 예시적으로 보여주는 도면이다.
1 is a block diagram illustrating a storage system according to an embodiment of the present invention.
FIG. 2 is a block diagram showing the configuration of the data storage shown in FIG. 1 in more detail.
FIG. 3 is a block diagram exemplarily showing the data storage and software layers shown in FIG. 2 .
FIG. 4 is a block diagram showing in detail the structure of the RAM shown in FIG. 2 .
FIG. 5 is a flowchart illustrating a write operation to the data storage shown in FIG. 2 .
6 is a flowchart illustrating a read operation for the data storage shown in FIG. 2 .
7 is a block diagram exemplarily illustrating data communication between the host 100 and data storage.
8 is a block diagram illustrating a process of detecting and correcting an error according to an embodiment of the present invention.
9 is a block diagram showing the DIMM controller shown in FIG. 8 in more detail.
FIG. 10 is a block diagram showing in more detail another embodiment of the DIMM controller shown in FIG. 8 .
11 is a flowchart illustrating a method of detecting and correcting an error in data received from a host in the storage system of the present invention.
12 is a flowchart illustrating a method of operating a device controller according to an embodiment of the present invention.
13 is a flowchart illustrating a method of operating a device controller according to another embodiment of the present invention.
FIG. 14 is a block diagram exemplarily showing any one of the nonvolatile memories shown in FIG. 2 .
15 is a circuit diagram illustrating an example of any one of memory blocks included in the memory cell array of FIG. 14 .
16 is a block diagram exemplarily showing a computing system to which a nonvolatile memory module according to the present invention is applied.
17 is a block diagram exemplarily showing any one of the nonvolatile memory modules of FIG. 16 .
18 is a block diagram exemplarily showing any one of the nonvolatile memory modules of FIG. 16 .
19 is a block diagram illustrating another example of a computing system to which a nonvolatile memory module according to the present invention is applied.
20 is a block diagram exemplarily illustrating the nonvolatile memory module of FIG. 19 .
21 is a block diagram exemplarily illustrating the nonvolatile memory module of FIG. 19 .
22 is a block diagram exemplarily illustrating the nonvolatile memory module of FIG. 19 .
23 is a diagram exemplarily illustrating a server system to which a nonvolatile memory system according to an embodiment of the present invention is applied.

앞의 일반적인 설명 및 다음의 상세한 설명 모두 예시적이라는 것이 이해되어야 하며, 청구된 발명의 부가적인 설명이 제공되는 것으로 여겨져야 한다. 참조 부호들이 본 발명의 바람직한 실시 예들에 상세히 표시되어 있으며, 그것의 예들이 참조 도면들에 표시되어 있다. 가능한 어떤 경우에도, 동일한 참조 번호들이 동일한 또는 유사한 부분을 참조하기 위해서 설명 및 도면들에 사용된다.It is to be understood that both the foregoing general description and the following detailed description are exemplary, and it is to be considered that an additional description of the claimed invention is provided. Reference signs are indicated in detail to preferred embodiments of the present invention, examples of which are indicated in the reference drawings. Wherever possible, the same reference numbers are used in the description and drawings to refer to the same or like parts.

한 요소 또는 층이 다른 요소 또는 층에 "연결되는", "결합하는", 또는 "인접하는" 것으로 언급되는 때에는, 다른 요소 또는 층에 직접적으로 연결되거나, 결합 되거나, 또는 인접하는 것일 수 있고, 혹은 그 사이에 끼워지는 요소 또는 층이 존재할 수 있음이 잘 이해될 것이다. 본 명세서에서 사용되는 "및/또는"이라는 용어는 나열된 요소들의 하나 또는 그 이상의 가능한 조합들을 포함할 것이다.When an element or layer is referred to as being “connected”, “coupled to,” or “adjacent to” another element or layer, it may be directly connected to, coupled to, or adjacent to the other element or layer; Alternatively, it will be appreciated that there may be elements or layers sandwiched therebetween. As used herein, the term “and/or” shall include one or more possible combinations of the listed elements.

비록 "제 1", "제 2" 등의 용어가 여기서 다양한 요소를 설명하기 위해 사용될 수 있다 하더라도, 이들 요소는 이 용어들에 의해 한정되지 않는다. 이 용어들은 단지 다른 것들로부터 하나의 구성요소를 구별하기 위해 사용될 수 있다. 따라서, 본 명세서에서 사용된 제 1 구성요소, 구간, 층과 같은 용어는 본 발명의 사상을 벗어나지 않는 범위 내에서 제 2 구성요소, 구간, 층 등으로 사용될 수 있다.Although the terms "first", "second", etc. may be used herein to describe various elements, these elements are not limited by these terms. These terms may only be used to distinguish one component from others. Accordingly, terms such as a first component, a section, and a layer used in this specification may be used as a second component, a section, a layer, etc. without departing from the spirit of the present invention.

"아래의", "하부의", "위의", "상부의", 및 이와 유사한 용어들은 직접적으로(directly) 또는 다른 층을 개재하여(indirectly) 배치되는 경우를 모두 포함한다. 그리고, 공간적으로 상대적인 이러한 용어들은 도면에 도시된 방향에 더하여 다른 방향을 포함하는 것으로 이해되어야 한다. 예를 들어, 만일 장치가 뒤집히면, "아래의"로 설명된 구성요소는 "위의"가 될 것이다.The terms “below,” “below,” “above,” “above,” and similar terms include both directly and indirectly disposed of. And, these spatially relative terms should be understood to include other directions in addition to the directions shown in the drawings. For example, if the device is turned over, elements described as "below" will be "above".

본 명세서에서 설명되는 용어는 단지 특정한 실시 예를 설명하기 위한 목적으로 사용되며, 그것에 한정되지 않는다. "하나의"와 같은 용어는 달리 명백하게 지칭하지 않으면 복수의 형태를 포함하는 것으로 이해되어야 한다. "포함하는" 또는 "구성되는"과 같은 용어는 설명된 특징, 단계, 동작, 성분, 및/또는 구성요소의 존재를 명시하며, 추가적인 하나 또는 그 이상의 특징, 단계, 동작, 성분, 구성요소 및/또는 그들의 그룹의 존재를 배제하지 않는다.The terminology described herein is only used for the purpose of describing specific embodiments, and is not limited thereto. A term such as “a” is to be understood to include plural forms, unless expressly indicated otherwise. Terms such as “comprising” or “consisting of” specify the presence of a described feature, step, operation, component, and/or component, and include additional one or more features, steps, operations, components, components, and /or do not exclude the existence of their group.

이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있도록 본 발명의 실시 예를 첨부된 도면을 참조하여 설명할 것이다.Hereinafter, embodiments of the present invention will be described with reference to the accompanying drawings so that those skilled in the art to which the present invention pertains can easily implement the technical idea of the present invention.

도 1은 본 발명의 실시 예에 따른 스토리지 시스템(10)을 보여주는 블록도이다. 도 1을 참조하면, 스토리지 시스템(10)은 호스트(100) 및 데이터 스토리지(200)를 포함할 수 있다.1 is a block diagram illustrating a storage system 10 according to an embodiment of the present invention. Referring to FIG. 1 , a storage system 10 may include a host 100 and a data storage 200 .

호스트(100)는 데이터 스토리지(200)에 대한 읽기 동작 또는 쓰기 동작을 수행하기 위해 데이터 스토리지(200)에 액세스할 수 있다. 호스트(100)는 디바이스 컨트롤러(210)의 물리 계층(230)에 액세스할 수 있다. 호스트(100)는 ECC 인코더(110) 및 ECC 디코더(120)를 포함할 수 있다. ECC 인코더(120)는 데이터 스토리지(200)로 전송되는 데이터를 인코딩할 수 있다. 예를 들어, ECC 인코더(120)는 데이터 스토리지(200)로 전송되는 데이터(예를 들어, 스토리지 커맨드, 읽기 데이터, 쓰기 데이터 등)에 에러 정정 코드 패리티(error correcting code parity; ECC parity)를 부가하여 전송할 수 있다. ECC 패리티는 데이터 스토리지(200)로 전송된 데이터에 에러가 있는지 여부 및 에러는 정정하는데 사용될 수 있다. ECC 디코더(120)는 데이터 스토리지(200)로부터 전송된 데이터(예를 들어, 읽기 데이터)를 디코딩하여 에러가 있는지 여부를 판단할 수 있다.The host 100 may access the data storage 200 to perform a read operation or a write operation on the data storage 200 . The host 100 may access the physical layer 230 of the device controller 210 . The host 100 may include an ECC encoder 110 and an ECC decoder 120 . The ECC encoder 120 may encode data transmitted to the data storage 200 . For example, the ECC encoder 120 adds an error correcting code parity (ECC parity) to data (eg, storage command, read data, write data, etc.) transmitted to the data storage 200 . can be transmitted. The ECC parity may be used to correct whether there is an error in the data transmitted to the data storage 200 and correct the error. The ECC decoder 120 may determine whether there is an error by decoding data (eg, read data) transmitted from the data storage 200 .

데이터 스토리지(200)는 데이터 스토리지(200)의 전반적인 동작을 제어하는 디바이스 컨트롤러(210)를 포함할 수 있다. 디바이스 컨트롤러(210)는 호스트(100)와의 인터페이싱을 위한 DIMM PHY(즉, 물리 계층)(230)를 포함할 수 있다. 데이터 스토리지(200)는 DIMM (Dual In-line Memory Module) 인터페이스와 같은 고속 인터페이스를 통하여 호스트(100)와 연결될 수 있다. 즉, DIMM PHY(220)는 듀얼 데이터 레이트(예를 들어, DDR2, DDR3, DDR4 등) 프로토콜에 따라 호스트(100)와 인터페이싱할 수 있다. 디바이스 컨트롤러(210)는 물리 계층(230)과 불휘발성 메모리(280) 사이에서 데이터의 송수신을 제어하는 DIMM 컨트롤러(240)를 포함할 수 있다. DIMM 컨트롤러(240)는 호스트(100)로부터 수신된 데이터에 에러가 있는지 여부를 판단하는 에러 검출기(244)를 포함할 수 있다. The data storage 200 may include a device controller 210 that controls the overall operation of the data storage 200 . The device controller 210 may include a DIMM PHY (ie, a physical layer) 230 for interfacing with the host 100 . The data storage 200 may be connected to the host 100 through a high-speed interface such as a dual in-line memory module (DIMM) interface. That is, the DIMM PHY 220 may interface with the host 100 according to a dual data rate (eg, DDR2, DDR3, DDR4, etc.) protocol. The device controller 210 may include a DIMM controller 240 that controls transmission/reception of data between the physical layer 230 and the nonvolatile memory 280 . The DIMM controller 240 may include an error detector 244 that determines whether there is an error in the data received from the host 100 .

본 발명의 실시 예에 따르면, 디바이스 컨트롤러(210)는 하드웨어(즉, 에러 검출기, 244)를 이용하여 호스트로부터 수신된 데이터에 에러가 있는지 여부를 검사한다. 그리고, 디바이스 컨트롤러(210)는 에러 정정 펌웨어를 구동함으로써, 검출된 에러를 정정한다. 즉, 에러 검출은 하드웨어를 이용하되, 에러 정정은 펌웨어를 이용하여 수행함으로써, 칩 사이즈를 감소시킬 수 있다.According to an embodiment of the present invention, the device controller 210 checks whether there is an error in the data received from the host using hardware (ie, the error detector 244 ). Then, the device controller 210 corrects the detected error by driving the error correction firmware. That is, the chip size can be reduced by performing error detection using hardware and error correction using firmware.

도 2는 도 1에 도시된 데이터 스토리지(200)의 구성을 좀 더 상세하게 보여주는 블록도이다. 도 2를 참조하면, 데이터 스토리지(200)는 디바이스 컨트롤러(210), 불휘발성 메모리(280), 및 버퍼(290)를 포함할 수 있다.FIG. 2 is a block diagram showing the configuration of the data storage 200 shown in FIG. 1 in more detail. Referring to FIG. 2 , the data storage 200 may include a device controller 210 , a nonvolatile memory 280 , and a buffer 290 .

디바이스 컨트롤러(210)는 적어도 하나의 프로세서(220), DIMM PHY(즉, 물리 계층)(230), DIMM 컨트롤러(240), 불휘발성 메모리 인터페이스(250), ROM(260), 및 버퍼 매니저(270)를 포함할 수 있다.The device controller 210 includes at least one processor 220 , a DIMM PHY (ie, a physical layer) 230 , a DIMM controller 240 , a nonvolatile memory interface 250 , a ROM 260 , and a buffer manager 270 . ) may be included.

프로세서(220)는 디바이스 컨트롤러(210)의 전반적인 동작을 제어할 수 있다. 프로세서(220)는 디바이스 컨트롤러(210)를 구동하기 위한 펌웨어(firmware)를 구동할 수 있다. 예를 들어, 프로세서(210)는 에러 검출기(244)에 의해 검출된 에러를 정정하는 펌웨어를 로딩하여 구동할 수 있다. 예를 들어, 펌웨어는 프로세서(220)에 구비된 캐시 메모리 또는 버퍼(290) 등과 같은 다양한 저장 공간에 로딩되어 구동될 수 있다.The processor 220 may control the overall operation of the device controller 210 . The processor 220 may drive firmware for driving the device controller 210 . For example, the processor 210 may load and drive firmware for correcting an error detected by the error detector 244 . For example, the firmware may be loaded and driven in various storage spaces such as a cache memory or a buffer 290 provided in the processor 220 .

DIMM PHY(230)는 호스트(100)로부터 램 커맨드(CND_R), 램 어드레스(ADDR_R), 및 클록(CK)를 수신하는 램 컨트롤러(232)를 포함할 수 있다. 그리고, DIMM PHY(230)는 데이터(DQ)와 데이터 스트로브 신호(DQS)를 사용하여 호스트(100)와 교환하는 데이터를 저장하는 램(234)을 포함할 수 있다. 이때, 호스트(100)로부터 수신된 램 어드레스(ADDR_R)에 따라 지정된 램(234)의 공간에, 데이터(CMD_S, ADDR_S, DATA, STI)가 저장될 수 있다. 이때, 호스트로부터 수신되는 데이터는 ECC 패리티가 부가된, 인코딩된 데이터일 수 있다.The DIMM PHY 230 may include a RAM controller 232 that receives a RAM command CND_R, a RAM address ADDR_R, and a clock CK from the host 100 . In addition, the DIMM PHY 230 may include a RAM 234 that stores data exchanged with the host 100 using the data DQ and the data strobe signal DQS. In this case, data CMD_S, ADDR_S, DATA, and STI may be stored in a space of the RAM 234 designated according to the RAM address ADDR_R received from the host 100 . In this case, the data received from the host may be encoded data to which ECC parity is added.

램(234)은 스토리지 커맨드(CMD_S) 및 스토리지 어드레스(ADDR_S)를 저장하는 영역, 데이터(DATA)를 저장하는 영역, 상태 정보(STI)를 저장하는 영역으로 구분될 수 있다. 그러나, 이에 한정되는 것은 아니며, 램(234)은 스토리지 커맨드(CMD_S), 스토리지 어드레스(ADDR_S), 데이터(DATA), 및 상태 정보(STI)를 저장하는, 하나의 링버퍼로써 구현될 수 있다.The RAM 234 may be divided into an area storing a storage command CMD_S and a storage address ADDR_S, an area storing data DATA, and an area storing state information STI. However, the present invention is not limited thereto, and the RAM 234 may be implemented as a single ring buffer that stores the storage command CMD_S, the storage address ADDR_S, the data DATA, and the state information STI.

DIMM 컨트롤러(240)는 램(234)에 저장된 데이터를 처리하기 위해 램(234)에 액세스할 수 있다. 예를 들어, DIMM 컨트롤러(240)는 불휘발성 메모리(280)로 저장될 쓰기 데이터를 읽어내고, 이를 불휘발성 메모리(280)로 전달할 수 있다. 그리고, DIMM 컨트롤러(240)는 불휘발성 메모리(280)로부터 읽혀진 데이터를 램(234)으로 전달할 수 있다. 예를 들어, DIMM 컨트롤러(240)는 호스트(100)로부터 전송된 인코딩된 데이터(예를 들어, CMD_S, ADDR_S, DATA 등)의 에러를 검출하는 에러 검출기(244)를 포함할 수 있다.The DIMM controller 240 may access the RAM 234 to process data stored in the RAM 234 . For example, the DIMM controller 240 may read write data to be stored in the nonvolatile memory 280 and transmit it to the nonvolatile memory 280 . In addition, the DIMM controller 240 may transfer data read from the nonvolatile memory 280 to the RAM 234 . For example, the DIMM controller 240 may include an error detector 244 that detects an error in encoded data (eg, CMD_S, ADDR_S, DATA, etc.) transmitted from the host 100 .

불휘발성 메모리 인터페이스(250)는 디바이스 컨트롤러(210)와 불휘발성 메모리(280) 사이의 인터페이스를 제공할 수 있다. 예를 들어, 디바이스 컨트롤러(210)는 불휘발성 메모리 인터페이스(250)를 통하여 불휘발성 메모리(280)와 데이터를 송수신할 수 있다.The nonvolatile memory interface 250 may provide an interface between the device controller 210 and the nonvolatile memory 280 . For example, the device controller 210 may transmit/receive data to and from the nonvolatile memory 280 through the nonvolatile memory interface 250 .

ROM(260)은 디바이스 컨트롤러(210)를 동작시키는데 필요한 다양한 동작 또는 펌웨어 등이 저장될 수 있다. 예를 들어, ROM(260)은 에러 검출기(244)에 의해 검출된 에러를 정정하는 펌웨어를 저장할 수 있다. 그리고, ROM(260)은 호스트(100)와의 인터페이싱을 수행하기 위한 코드 데이터를 저장할 수 있다.The ROM 260 may store various operations or firmware required to operate the device controller 210 . For example, ROM 260 may store firmware that corrects errors detected by error detector 244 . In addition, the ROM 260 may store code data for interfacing with the host 100 .

버퍼 매니저(270)는 디바이스 컨트롤러(210)와 버퍼(290) 사이의 인터페이스를 제공할 수 있다. The buffer manager 270 may provide an interface between the device controller 210 and the buffer 290 .

불휘발성 메모리(280)는 3차원 메모리 어레이를 포함할 수 있다. 3차원 메모리 어레이는, 실리콘 기판 및 메모리 셀들의 동작에 연관된 회로의 위에 배치되는 활성 영역을 갖는 메모리 셀들의 어레이들의 하나 또는 그 이상의 물리 레벨들에 모놀리식으로(monolithi234ally) 형성될 수 있다. 메모리 셀들의 동작에 연관된 회로는 기판 내에 또는 기판 위에 위치할 수 있다. 모놀리식(monolithi234al)이란 용어는, 3차원 어레이의 각 레벨의 층들이 3차원 어레이의 하위 레벨의 층들 위에 직접 증착됨을 의미한다.The nonvolatile memory 280 may include a 3D memory array. A three-dimensional memory array may be formed monolithically on one or more physical levels of an array of memory cells having an active area disposed over a silicon substrate and circuitry associated with operation of the memory cells. The circuitry involved in the operation of the memory cells may be located in or on the substrate. The term monolithi234al means that the layers of each level of the three-dimensional array are deposited directly over the layers of the lower level of the three-dimensional array.

본 발명의 기술적 사상에 따른 예시적인 실시 예로서, 3차원 메모리 어레이는 수직의 방향성을 가지며, 적어도 하나의 메모리 셀이 다른 하나의 메모리 셀 위에 위치하는 수직 NAND 스트링들을 포함한다. 적어도 하나의 메모리 셀은 전하 트랩 층을 포함한다. 각각의 수직 NAND 스트링은 메모리 셀들 위에 위치하는 적어도 하나의 선택 트랜지스터를 포함할 수 있다. 적어도 하나의 선택 트랜지스터는 메모리 셀들과 동일한 구조를 갖고, 메모리 셀들과 함께 모놀리식으로 형성될 수 있다.As an exemplary embodiment according to the inventive concept, a 3D memory array has vertical directionality and includes vertical NAND strings in which at least one memory cell is positioned on another memory cell. At least one memory cell includes a charge trap layer. Each vertical NAND string may include at least one select transistor positioned over memory cells. The at least one selection transistor may have the same structure as the memory cells, and may be monolithically formed together with the memory cells.

3차원 메모리 어레이가 복수의 레벨들로 구성되고, 레벨들 사이에 공유된 워드 라인들 또는 비트 라인들을 갖고, 3차원 메모리 어레이에 적합한 구성은 미국등록특허공보 제7,679,133호, 미국등록특허공보 제8,553,466호, 미국등록특허공보 제8,654,587호, 미국등록특허공보 제8,559,235호, 그리고 미국공개특허공보 제2011/0233648호에 개시되어 있으며, 본 발명의 레퍼런스로 포함된다. 그러나, 이에 한정되지 않으며, 불휘발성 메모리(280)는 플래너(planar) 타입의 메모리 어레이를 포함할 수도 있다.A three-dimensional memory array is composed of a plurality of levels, has word lines or bit lines shared between the levels, and a configuration suitable for a three-dimensional memory array is described in U.S. Patent No. 7,679,133, U.S. Patent No. 8,553,466. No. 8,654,587, U.S. Patent No. 8,559,235, and U.S. Patent Publication No. 2011/0233648, which are incorporated herein by reference. However, the present invention is not limited thereto, and the nonvolatile memory 280 may include a planar type memory array.

불휘발성 메모리(280)는 복수의 채널(CH)들을 통하여 불휘발성 메모리 인터페이스(240)에 연결될 수 있다. 예를 들어, 불휘발성 메모리(280)는 플래시 메모리, P234cM (Phase-change 234cndom Access Memory), R234cM (Resistive 234cM), M234cM (Magnetic 234cM), Fe234cM (Ferroelectric 234cM) 등과 같은 불휘발성 메모리들 중 적어도 하나를 포함할 수 있다 The nonvolatile memory 280 may be connected to the nonvolatile memory interface 240 through a plurality of channels CH. For example, the nonvolatile memory 280 may include at least one of nonvolatile memories such as flash memory, phase-change 234cndom access memory (P234cM), resistive 234cM (R234cM), magnetic 234cM (M234cM), and ferroelectric 234cM (Fe234cM). may include

버퍼(290)는 디바이스 컨트롤러(210)의 버퍼 메모리, 워킹 메모리 또는 캐시 메모리로써 사용될 수 있다. 예를 들어, 버퍼 메모리(290)는 DRAM(dynamic random access memory), SRAM(static random access memory), PRAM(Phase-change RAM) 등과 같은 다양한 랜덤 액세스 메모리를 포함할 수 있다.The buffer 290 may be used as a buffer memory, a working memory, or a cache memory of the device controller 210 . For example, the buffer memory 290 may include various random access memories such as dynamic random access memory (DRAM), static random access memory (SRAM), and phase-change RAM (PRAM).

본 발명의 실시 예에 따른 디바이스 컨트롤러(210)는 하드웨어(즉, 에러 검출기, 240)를 이용하여 호스트로부터 수신된 인코딩된 데이터의 에러를 검출한다. 그리고, 디바이스 컨트롤러(210)는 펌웨어를 구동하여, 검출된 에러를 정정한다. 즉, 하드웨어를 이용하여 에러를 정정하는 대신에 펌웨어를 이용하여 에러를 정정함으로써 반도체 장치의 칩 사이즈를 감소시킬 수 있다. The device controller 210 according to an embodiment of the present invention detects an error in the encoded data received from the host using hardware (ie, the error detector 240 ). Then, the device controller 210 drives the firmware to correct the detected error. That is, the chip size of the semiconductor device can be reduced by correcting the error using firmware instead of using hardware to correct the error.

도 3은 도 2에 도시된 데이터 스토리지 및 소프트웨어 계층을 예시적으로 보여주는 블록도이다. 도 2를 참조하면, 호스트에서 호스트 계층 소프트웨어(100')가 구동될 수 있다. 그리고 데이터 스토리지(200)에는 불휘발성 메모리 계층의 소프트웨어 또는 펌웨어(200')가 구동될 수 있다.FIG. 3 is a block diagram exemplarily showing the data storage and software layers shown in FIG. 2 . Referring to FIG. 2 , the host layer software 100 ′ may be driven by the host. In addition, software or firmware 200 ′ of a nonvolatile memory layer may be driven in the data storage 200 .

호스트 계층(100')에서 다양한 소프트웨어들이 구동될 수 있다. 예를 들어, 애플리케이션(101')과 운영 체제(102')는 호스트 상위 계층(HL1)에 포함될 수 있다. 애플리케이션(101')은 기본적인 서비스로 구동되거나, 사용자에 의해 구동되는 상위 계층의 소프트웨어일 수 있다. 운영 체제(102')는 프로그램 실행, 파일 접근, 애플리케이션의 구동, 데이터 스토리지(200)의 제어 등과 같은 스토리지 시스템(10)에 대한 전반적인 제어 동작을 수행할 수 있다.Various software may be run in the host layer 100'. For example, the application 101 ′ and the operating system 102 ′ may be included in the host upper layer HL1 . The application 101' may be driven as a basic service or may be a higher layer software driven by a user. The operating system 102 ′ may perform overall control operations on the storage system 10 , such as executing a program, accessing a file, driving an application, and controlling the data storage 200 .

램 드라이버(103') 및 DIMM 계층(104')은 데이터 스토리지(200)에 접근하기 위한 호스트 하위 계층(HL2)를 구성할 수 있다. 램 드라이버(103')나 DIMM 계층 드라이버(104')는 실질적으로 운영 체제의 커널(Kernel)에 포함될 수도 있다. 호스트 상위 계층(HL1)에서 제공되는 접근 요청에 대해, 램 드라이버(103')는 데이터 스토리지(200)의 램(234')에 접근하기 위한 제어 동작을 수행할 수 있다. 예를 들어, 램 드라이버(103')는 운영 체제(102') 레벨에서 데이터 스토리지(200)의 램(234')을 제어하기 위한 제어 모듈일 수 있다. 램(234')에 대한 애플리케이션(101')이나 운영 체제(102')에서의 접근 요청이 발생하면, 램 드라이버(103')가 호출될 수 있다. 그리고, 램 드라이버(103')와 함께 DIMM 계층 드라이버(104')가 호출되어 램(234')에 대한 실질적인 물리 계층 레벨에서의 접근을 지원할 수 있다.The RAM driver 103 ′ and the DIMM layer 104 ′ may constitute a host lower layer HL2 for accessing the data storage 200 . The RAM driver 103' or the DIMM layer driver 104' may be included in the kernel of the operating system. In response to an access request provided from the host upper layer HL1 , the RAM driver 103 ′ may perform a control operation for accessing the RAM 234 ′ of the data storage 200 . For example, the RAM driver 103' may be a control module for controlling the RAM 234' of the data storage 200 at the operating system 102' level. When an access request from the application 101 ′ or the operating system 102 ′ to the RAM 234 ′ occurs, the RAM driver 103 ′ may be called. In addition, the DIMM layer driver 104' is called together with the RAM driver 103' to support access to the RAM 234' at the actual physical layer level.

불휘발성 메모리 계층(200')에는 메모리 상위 계층(ML1)과 메모리 하위 계층(ML2)이 포함될 수 있다. 메모리 상위 계층(ML1)에서는 램(234')에 기록되는 상위 명령어(CMD_R)나 상위 어드레스(ADDR_R)에 따른 불휘발성 메모리(280')로의 접근이 제어된다. 메모리 상위 계층(ML1)은 컨트롤 계층(240')에 의해서 불휘발성 메모리(280')로의 접근 및 메모리 관리 동작이 수행될 수 있다. 예를 들어, 불휘발성 메모리(280')에 대한 가비지 컬렉션, 웨어 레벨링, 스트림 제어 등에 대한 제어가 컨트롤 계층(240')에 의해서 수행될 수 있다. 반면, 메모리 하위 계층(ML2)에서는 램(234')과 호스트(100) 간의 인터페이싱이 수행될 수 있다. 즉, 메모리 하위 계층(ML2)은 램 컨트롤러(232)를 통해서 제공되는 램 명령어(CMD_R)나 램 어드레스(ADDR_R)에 대한 램(234')의 데이터를 읽거나 기입하는 동작을 수행할 수 있다. 메모리 하위 계층(ML2)은 메모리 상위 계층(ML1)의 요청에 따라 램(234')에 접근할 수도 있다. The nonvolatile memory layer 200 ′ may include a memory upper layer ML1 and a memory lower layer ML2 . In the memory upper layer ML1, access to the nonvolatile memory 280' according to the upper command CMD_R or the upper address ADDR_R written in the RAM 234' is controlled. In the memory upper layer ML1, an access to the nonvolatile memory 280' and a memory management operation may be performed by the control layer 240'. For example, the control layer 240 ′ may control garbage collection, wear leveling, and stream control for the nonvolatile memory 280 ′. On the other hand, in the memory lower layer ML2 , interfacing between the RAM 234 ′ and the host 100 may be performed. That is, the memory lower layer ML2 may perform an operation of reading or writing data of the RAM 234 ′ in response to a RAM command CMD_R or a RAM address ADDR_R provided through the RAM controller 232 . The memory lower layer ML2 may access the RAM 234 ′ according to a request from the memory upper layer ML1 .

상술한 계층 구조를 갖는 소프트웨어 또는 펌웨어에 의해 호스트는 불휘발성 메모리(280)에 접근할 수 있다. 즉, DIMM 형태로 구성되는 데이터 스토리지의 불휘발성 메모리(280)에 대한 접근은 램(234)을 매개체로하여 제공되는 커맨드, 어드레스(CMD_R, ADDR_R)를 디코딩함으로써 수행될 수 있다.The host may access the nonvolatile memory 280 by software or firmware having the above-described hierarchical structure. That is, access to the nonvolatile memory 280 of the data storage configured in the form of a DIMM may be performed by decoding commands and addresses (CMD_R, ADDR_R) provided through the RAM 234 as a medium.

도 4는 도 2에 도시된 램의 구조를 상세하게 보여주는 블록도이다. 도 4를 참조하면, 램(234)은 커맨드 영역(234a), 쓰기 영역(234b), 읽기 영역(234c), 및 상태 영역(234d)을 포함할 수 있다. 호스트(100) 또는 DIMM 컨트롤러(240)로부터 수신된 데이터는, 호스트(100)로부터 수신된 램 커맨드(CMD_R), 램 어드레스(ADDR_R), 및 클럭(CK)에 따라, 커맨드 영역(234a), 쓰기 영역(234b), 읽기 영역(234c), 및 상태 영역(234d) 중 어느 하나에 저장될 수 있다. 예를 들어, 램(234)은 호스트와 DIMM 컨트롤러(240)에 의해 동시에 액세스 될 수 있는 듀얼 포트 S234cM일 수 있다.FIG. 4 is a block diagram showing in detail the structure of the RAM shown in FIG. 2 . Referring to FIG. 4 , the RAM 234 may include a command area 234a , a write area 234b , a read area 234c , and a status area 234d . Data received from the host 100 or the DIMM controller 240 is written in the command area 234a according to the RAM command CMD_R, the RAM address ADDR_R, and the clock CK received from the host 100 . It may be stored in any one of the area 234b, the read area 234c, and the status area 234d. For example, the RAM 234 may be a dual port S234cM that can be accessed simultaneously by the host and the DIMM controller 240 .

커맨드 영역(234a)은 램 컨트롤러(232)의 제어에 따라 호스트(100)로부터 수신되는 스토리지 커맨드(CMD_S) 및 스토리지 어드레스(ADDR_S)를 저장할 수 있다. DIMM 컨트롤러는 커맨드 영역(234a)에 저장된 스토리지 커맨드(CMD_S) 및 스토리지 어드레스(ADDR_S)를 읽을 수 있다. The command area 234a may store the storage command CMD_S and the storage address ADDR_S received from the host 100 under the control of the RAM controller 232 . The DIMM controller may read the storage command CMD_S and the storage address ADDR_S stored in the command area 234a.

쓰기 영역(234b)은 램 컨트롤러(232)의 제어에 따라 수신되는 쓰기 데이터(DATA_W)를 저장할 수 있다. DIMM 컨트롤러(240)는 램(234)의 쓰기 영역(234b)에 저장된 쓰기 데이터(DATA_W)를 읽을 수 있다. The write area 234b may store write data DATA_W received under the control of the RAM controller 232 . The DIMM controller 240 may read the write data DATA_W stored in the write area 234b of the RAM 234 .

읽기 영역(234c)은 DIMM 컨트롤러(232)의 제어에 따라 수신되는 읽기 데이터(DATA_R)를 저장할 수 있다. DIMM 컨트롤러(240)는 램(234)의 읽기 영역(234c)에 저장된 쓰기 데이터(DATA_R)를 읽을 수 있다. The read area 234c may store read data DATA_R received under the control of the DIMM controller 232 . The DIMM controller 240 may read the write data DATA_R stored in the read area 234c of the RAM 234 .

상태 영역(234d)은 스토리지 커맨드(CMD_S)가 완전히 처리되었는지 여부에 관한 상태 정보(STI)를 저장할 수 있다. 상태 영역(234d)에 저장된 상태 정보는 호스트로 전달되거나 또는 DIMM 컨트롤러(240)로 전달될 수 있다. 예를 들어, 호스트(100)는 상태 정보(STI)를 참조하여 다음의 쓰기 데이터를 쓰기 영역(234b)으로 전달할 수 있다. 또는 DIMM 컨트롤러(240)는 상태 정보(STI)를 참조하여 다음의 읽기 데이터를 읽기 영역(234c)으로 전달할 수 있다. 그리고, 상태 정보(STI)는 에러가 정정되지 않은 데이터에 관한 정보도 포함할 수 있다. 이 경우, 호스트(100)는 상태 정보(STI)를 참조하여 에러가 정정되지 않은 데이터를 디바이스 컨트롤러(210)로 재전송할 수 있다.The status area 234d may store status information STI regarding whether the storage command CMD_S has been completely processed. The status information stored in the status area 234d may be transmitted to the host or to the DIMM controller 240 . For example, the host 100 may transfer the next write data to the write area 234b with reference to the state information STI. Alternatively, the DIMM controller 240 may transfer the next read data to the read area 234c with reference to the state information STI. Also, the state information STI may include information about data for which errors are not corrected. In this case, the host 100 may retransmit the error-corrected data to the device controller 210 by referring to the state information STI.

도 5는 도 2에 도시된 데이터 스토리지(200)에 대한 쓰기 동작을 보여주는 순서도이다. FIG. 5 is a flowchart illustrating a write operation to the data storage 200 shown in FIG. 2 .

S11 단계에서, 호스트(100)는 램(234)의 커맨드 영역(234a)을 선택하기 위한 램 커맨드(CMD_R) 및 램 어드레스(ADDR_R)를 데이터 스토리지(200)로 전송할 수 있다.In step S11 , the host 100 may transmit a RAM command CMD_R and a RAM address ADDR_R for selecting the command area 234a of the RAM 234 to the data storage 200 .

S12 단계에서, 호스트(100)는 선택된 커맨드 영역(234a)에 스토리지 커맨드(CMD_S)를 기입하기 위한 데이터 신호(DQ) 및 데이터 스트로브 신호(DQS)를 데이터 스토리지(200)로 전송한다. 예를 들어, S12 단계의 데이터 신호(DQ) 및 데이터 스트로브 신호(DQS)는 쓰기 동작을 위한 스토리지 커맨드(CMD_S)를 포함할 수 있다. 예를 들어, S11 단계 및 S12 단계는 스토리지 커맨드(CMD_S)에 대한 처리 과정(transaction)일 수 있다.In step S12 , the host 100 transmits the data signal DQ and the data strobe signal DQS for writing the storage command CMD_S to the selected command area 234a to the data storage 200 . For example, the data signal DQ and the data strobe signal DQS of step S12 may include a storage command CMD_S for a write operation. For example, steps S11 and S12 may be a transaction for the storage command CMD_S.

S13 단계에서, 호스트(100)는 램(234)의 쓰기 영역(234b)을 선택하기 위한 램 커맨드(CMD_R) 및 램 어드레스(ADDR_R)를 데이터 스토리지(200)로 전송할 수 있다. In step S13 , the host 100 may transmit a RAM command CMD_R and a RAM address ADDR_R for selecting the write area 234b of the RAM 234 to the data storage 200 .

S14 단계에서, 호스트(100)는 선택된 쓰기 영역(234b)에 쓰기 데이터(DATA_W)를 기입하기 위한 데이터 신호(DQ) 및 데이터 스트로브 신호(DQS)를 데이터 스토리지(200)로 전송할 수 있다. 예를 들어, S14 단계의 데이터 신호(DQ) 및 데이터 스트로브 신호(DQS)는 쓰기 데이터(DATA_W)를 포함할 수 있다. 예를 들어, S13 단계 및 S14 단계는 쓰기 데이터에 대한 처리 과정(Data transaction)일 수 있다.In operation S14 , the host 100 may transmit the data signal DQ and the data strobe signal DQS for writing the write data DATA_W to the selected write area 234b to the data storage 200 . For example, the data signal DQ and the data strobe signal DQS of step S14 may include write data DATA_W. For example, steps S13 and S14 may be a data transaction for write data.

S15 단계에서, 호스트(100)는 램(234)의 상태 영역(234d)을 선택하기 위한 램 커맨드(CMD_R) 및 램 어드레스(ADDR_R)를 데이터 스토리지(200)로 전송할 수 있다. In step S15 , the host 100 may transmit a RAM command CMD_R and a RAM address ADDR_R for selecting the state area 234d of the RAM 234 to the data storage 200 .

S16 단계에서, 호스트(100)는 데이터 신호(DQ) 및 데이터 스트로브 신호(DQS)를 통해 선택된 상태 영역(234d)에 저장된 상태 정보(STI)를 읽을 수 있다. 예시적으로, S16 단계의 데이터 신호(DQ) 및 데이터 스트로브 신호(DQS)는 상태 정보(STI)를 포함하고, 램(234)으로부터 호스트(100)로 제공되는 신호들일 수 있다.In step S16 , the host 100 may read the state information STI stored in the selected state area 234d through the data signal DQ and the data strobe signal DQS. For example, the data signal DQ and the data strobe signal DQS of step S16 may include the state information STI and may be signals provided from the RAM 234 to the host 100 .

S17 단계에서, 호스트(100)는 읽은 상태 정보(STI)를 기반으로 쓰기 동작이 완료되었는지 판단할 수 있다. 예를 들어, 데이터 스토리지(200)의 DIMM 컨트롤러(240)는, 램(234)의 쓰기 영역(234b)에 저장된 쓰기 데이터(DATA_W)에 대한 처리가 완료된 경우, 램(234)의 상태 영역(234d)에 쓰기 동작의 완료를 나타내는 상태 정보(STI)를 기입할 수 있다. 이 경우, S16 단계에서, 쓰기 동작의 완료를 가리키는 상태 정보(STI)가 호스트(100)로 전송된다. 호스트(100)는 수신된 상태 정보(STI)를 쓰기 동작이 완료되었는지 판단할 수 있다. In step S17 , the host 100 may determine whether the write operation is complete based on the read state information STI. For example, when the DIMM controller 240 of the data storage 200 completes processing of the write data DATA_W stored in the write area 234b of the RAM 234 , the state area 234d of the RAM 234 is ), the state information STI indicating the completion of the write operation may be written. In this case, in step S16 , status information (STI) indicating completion of the write operation is transmitted to the host 100 . The host 100 may determine whether the operation of writing the received state information STI is completed.

수신된 상태 정보(STI)가 쓰기 동작의 완료를 나타내지 않는 경우, 호스트(100)는 S15 단계 내지 S17 단계를 반복하여 수행할 수 있다. 수신된 상태 정보(STI)가 쓰기 동작의 완료를 나타내는 경우, 사용자 시스템(10)의 쓰기 동작은 종료된다. 예시적으로, S15 단계 내지 S17 단계의 동작들은 쓰기 동작의 완료를 검사하기 위한 처리 과정일 수 있다.When the received status information STI does not indicate completion of the write operation, the host 100 may repeat steps S15 to S17. When the received state information STI indicates completion of the write operation, the write operation of the user system 10 is terminated. For example, the operations of steps S15 to S17 may be a processing process for checking the completion of the write operation.

만일 쓰기 동작이 완료되지 않았다면, 데이터 스토리지(200)의 DIMM 컨트롤러(240)는 상태 정보(STI)를 램(234)에 기입하지 않을 것이다. 이 경우, S16 단계에서, 상태 정보(STI)가 호스트(100)로 전송되지 않거나 또는 다른 상태 정보가 전송될 수 있다. 호스트(100)는 상태 정보(STI)가 수신되지 않거나 또는 다른 상태 정보가 수신된 경우, 쓰기 동작이 완료되지 않은 것으로 판별하고, S15 단계 내지 S17 단계를 반복 수행할 수 있다.If the write operation is not completed, the DIMM controller 240 of the data storage 200 will not write the state information STI to the RAM 234 . In this case, in step S16 , the state information STI may not be transmitted to the host 100 or other state information may be transmitted. When the state information STI is not received or other state information is received, the host 100 determines that the write operation is not completed, and repeats steps S15 to S17.

도 6은 도 2에 도시된 데이터 스토리지(200)에 대한 읽기 동작을 보여주는 순서도이다. 6 is a flowchart illustrating a read operation on the data storage 200 shown in FIG. 2 .

S21 단계에서, 호스트(100)는 램(234)의 커맨드 영역(234a)을 선택하기 위한 램 커맨드(CMD_R) 및 램 어드레스(ADDR_R)를 데이터 스토리지(200)로 전송할 수 있다. In operation S21 , the host 100 may transmit a RAM command CMD_R and a RAM address ADDR_R for selecting the command area 234a of the RAM 234 to the data storage 200 .

S22 단계에서, 호스트(100)는 선택된 커맨드 영역(234a)에 스토리지 커맨드(CMD_S)를 기입하기 위하여 데이터 신호(DQ) 및 데이터 스트로브 신호(DQS)를 데이터 스토리지(200)로 전송할 수 있다. 예를 들어, S22 단계의 데이터 신호(DQ) 및 데이터 스트로브 신호(DQS)는 읽기 동작을 위한 스토리지 커맨드(CMD_S)를 포함할 수 있다. 예를 들어, S21 단계 및 S22 단계의 동작들은 스토리지 커맨드(CMD_S)에 대한 처리 과정일 수 있다.In operation S22 , the host 100 may transmit the data signal DQ and the data strobe signal DQS to the data storage 200 to write the storage command CMD_S in the selected command area 234a . For example, the data signal DQ and the data strobe signal DQS in step S22 may include a storage command CMD_S for a read operation. For example, the operations of steps S21 and S22 may be processing processes for the storage command CMD_S.

S23 단계에서, 호스트(100)는 상태 영역(234d)을 선택하기 위한 램 커맨드(CMD_R) 및 램 어드레스(ADDR_R)를 데이터 스토리지(200)로 전송할 수 있다.In step S23 , the host 100 may transmit a RAM command CMD_R and a RAM address ADDR_R for selecting the state region 234d to the data storage 200 .

S24 단계에서, 호스트(100)는 데이터 신호(DQ) 및 데이터 스트로브 신호(DQS)를 통해 선택된 상태 영역(234d)에 저장된 상태 정보(STI)를 읽을 수 있다. 예를 들어, S24 단계의 데이터 신호(DQ) 및 데이터 스트로브 신호(DQS)는 상태 정보(STI)를 포함하고, 램(234)으로부터 호스트(100)로 제공되는 신호들일 수 있다.In step S24 , the host 100 may read the state information STI stored in the selected state area 234d through the data signal DQ and the data strobe signal DQS. For example, the data signal DQ and the data strobe signal DQS in step S24 may include the state information STI and may be signals provided from the RAM 234 to the host 100 .

S25 단계에서, 호스트(100)는 읽은 상태 정보(STI)를 참조하여 읽기 동작이 완료되었는지 판단할 수 있다. 읽기 동작이 완료되지 않은 경우, 호스트(100)는 S23 단계 내지 S24 단계의 동작들을 주기적으로 반복 수행할 수 있다. 예를 들어, S23 단계 내지 S25 단계의 동작들은 읽기 동작의 완료를 검사하기 위한 처리 과정일 수 있다.In step S25 , the host 100 may determine whether the read operation is complete by referring to the read state information STI. When the read operation is not completed, the host 100 may periodically repeat the operations of steps S23 to S24. For example, the operations of steps S23 to S25 may be a processing process for checking the completion of a read operation.

만일 데이터 스토리지(200)에 대한 읽기 동작이 완료되지 않았다면, 데이터 스토리지(200)의 DIMM 컨트롤러(240)는 읽기 동작의 완료를 가리키는 상태 정보(STI)를 램(234)에 기입하지 않을 수 있다. 이 경우, S24 단계에서, 상태 정보(STI)가 호스트(100)로 전송되지 않을 수 있다. 상태 정보(STI)가 전송되지 않은 경우, 호스트(100)는 S23 단계 내지 S25 단계를 반복 수행할 수 있다. If the read operation on the data storage 200 is not completed, the DIMM controller 240 of the data storage 200 may not write the state information STI indicating the completion of the read operation to the RAM 234 . In this case, in step S24 , the state information STI may not be transmitted to the host 100 . When the state information STI is not transmitted, the host 100 may repeatedly perform steps S23 to S25.

만일 읽은 상태 정보(STI)가 읽기 동작의 완료를 나타내지 않는다면, S26 단계에서, 호스트(100)는 램(234)의 읽기 영역(234c)을 선택하기 위한 램 커맨드(CMD_R) 및 램 어드레스(ADDR_R)를 데이터 스토리지(200)로 전송할 수 있다.If the read status information STI does not indicate completion of the read operation, in step S26 , the host 100 uses a RAM command CMD_R and a RAM address ADDR_R to select the read area 234c of the RAM 234 . may be transmitted to the data storage 200 .

S27 단계에서, 호스트(100)는 데이터 신호(DQ) 및 데이터 스트로브 신호(DQS)를 통해 선택된 읽기 영역(234c)에 저장된 읽기 데이터(DATA_R)를 읽을 수 있다. 예를 들어, S27 단계의 데이터 신호(DQ) 및 데이터 스트로브 신호(DQS)는 읽기 데이터(DATA_R)를 포함하고, 램(234)으로부터 호스트(100)로 제공되는 신호들일 수 있다.In step S27 , the host 100 may read the read data DATA_R stored in the selected read area 234c through the data signal DQ and the data strobe signal DQS. For example, the data signal DQ and the data strobe signal DQS of step S27 may include read data DATA_R and may be signals provided from the RAM 234 to the host 100 .

도 7은 호스트(100)와 데이터 스토리지(200) 사이의 데이터 통신을 예시적으로 보여주는 블록도이다. 도 5를 참조하면, 호스트(100)와 데이터 스토리지(200)는 큐잉(queing) 방식을 통하여 데이터를 송수신할 수 있다.7 is a block diagram exemplarily illustrating data communication between the host 100 and the data storage 200 . Referring to FIG. 5 , the host 100 and the data storage 200 may transmit/receive data through a queuing method.

호스트(100)의 NVM 드라이버(110)는 서브미션 큐잉 핸들러(132) 및 컴플리션 큐잉 핸들러(134)를 포함할 수 있다. 호스트(100)로부터의 데이터 스토리지(200)로의 액세스 요청에 따라, 서브미션 큐잉 핸들러(132)는 데이터 스토리지(200)의 불휘발성 메모리를 제어하는데 필요한 커맨드(CMD_S)를 커맨드 영역(234a)으로 전송할 수 있다. The NVM driver 110 of the host 100 may include a submission queuing handler 132 and a completion queuing handler 134 . In response to an access request from the host 100 to the data storage 200 , the submission queuing handler 132 transmits a command CMD_S necessary for controlling the nonvolatile memory of the data storage 200 to the command area 234a. can

액세스 요청이 쓰기 동작일 경우, 서브미션 큐잉 핸들러(132)는 쓰기 영역(234b)으로 쓰기 데이터를 전송하고, 커맨드 영역(234a)에 쓰기 동작과 관련된 스토리지 커맨드(CMD_S)를 전송할 수 있다. 액세스 요청이 읽기 동작일 경우, 서브미션 큐잉 핸들러(132)는 커맨드 영역(234a)에 읽기 동작과 관련된 스토리지 커맨드(CMD_S)를 전송할 수 있다.When the access request is a write operation, the submission queuing handler 132 may transmit write data to the write area 234b and transmit a storage command CMD_S related to the write operation to the command area 234a. When the access request is a read operation, the submission queuing handler 132 may transmit a storage command CMD_S related to the read operation to the command area 234a.

컴플리션 큐잉 핸들러(134)는 상태 영역(234d)으로부터 스토리지 커맨드(CMD_S)의 처리가 완료되었는지 여부를 나타내는 상태 정보를 읽어 오고, 읽기 영역(234c)으로부터 읽기 요청에 따른 읽기 데이터를 읽어 올 수 있다. 컴플리션 큐잉 핸들러(134)는 읽혀진 상태 정보 또는 읽기 데이터를 상위 계층에 결과 값으로 전송할 수 있다.The completion queuing handler 134 reads status information indicating whether the processing of the storage command CMD_S is completed from the status area 234d, and reads read data according to the read request from the read area 234c. have. The completion queuing handler 134 may transmit read state information or read data to an upper layer as a result value.

도 8은 본 발명의 실시 예에 따라 에러를 검출하고 정정하는 과정을 보여주는 블록도이다. 이를 설명하기 위해, 도 2에 도시된 디바이스 컨트롤러(210)의 일 실시 예가 도시되었다.8 is a block diagram illustrating a process of detecting and correcting an error according to an embodiment of the present invention. To explain this, an embodiment of the device controller 210 shown in FIG. 2 is illustrated.

우선, 불휘발성 메모리(280)에 저장될 쓰기 데이터를 제어하기 위한 스토리지 커맨드(CMD_S) 및 스토리지 어드레스(ADDR_S)가 호스트(100)로부터 수신될 수 있다(①). 이때, 스토리지 커맨드(CMD_S) 및 스토리지 어드레스(ADDR_S)는 호스트(100)에서 인코딩될 수 있다. 즉, ECC 패리티가 부가된 데이터일 수 있다. 스토리지 커맨드(CMD_S) 및 스토리지 어드레스(ADDR_S)는 커맨드 영역(234a)에 저장될 수 있다.First, a storage command CMD_S and a storage address ADDR_S for controlling write data to be stored in the nonvolatile memory 280 may be received from the host 100 (①). In this case, the storage command CMD_S and the storage address ADDR_S may be encoded by the host 100 . That is, it may be data to which ECC parity is added. The storage command CMD_S and the storage address ADDR_S may be stored in the command area 234a.

스토리지 커맨드(CMD_S) 및 스토리지 어드레스(ADDR_S)가 전송된 후, 이에 대응하는 쓰기 데이터(DATA_W)가 수신될 수 있다(②). 마찬가지로 쓰기 데이터(DATA_W)도 호스트(100)에서 인코딩될 수 있다. 즉, ECC 패리티가 부가된 데이터일 수 있다. 쓰기 데이터(DATA_W)는 쓰기 영역(234b)에 저장될 수 있다.After the storage command CMD_S and the storage address ADDR_S are transmitted, write data DATA_W corresponding thereto may be received (②). Similarly, write data DATA_W may be encoded by the host 100 . That is, it may be data to which ECC parity is added. The write data DATA_W may be stored in the write area 234b.

DIMM 컨트롤러(240)는 램(234)을 액세스하여 스토리지 커맨드(CMD_S) 및 스토리지 어드레스(ADDR_S)를 읽어낼 수 있다(③). 그리고, DIMM 컨트롤러(240)는 램(234)을 액세스하여 쓰기 데이터(DATA_W)를 읽어낼 수 있다(④).The DIMM controller 240 may access the RAM 234 to read the storage command CMD_S and the storage address ADDR_S (③). Then, the DIMM controller 240 may access the RAM 234 to read the write data DATA_W (④).

에러 검출기(242)는 램(234)으로부터 읽어낸 스토리지 커맨드(CMD_S), 스토리지 어드레스(ADDR_S), 및 쓰기 데이터(DATA_W)에 에러가 있는지 여부를 검출할 수 있다(⑤). 이때, 에러 검출기(242)는 하드웨어로써 구현되는 IP (Intellectual Property, 반도체설계자산)일 수 있다. 에러의 검출은 호스트(100)에 의해 인코딩되었을 때 부가된 ECC 패리티를 이용하여 실행될 수 있다.The error detector 242 may detect whether there are errors in the storage command CMD_S, the storage address ADDR_S, and the write data DATA_W read from the RAM 234 ( ⑤ ). In this case, the error detector 242 may be an IP (Intellectual Property, semiconductor design asset) implemented as hardware. Detection of errors may be performed using ECC parity added when encoded by the host 100 .

만일, 램(234)으로부터 읽혀진 데이터에 에러가 있다면, 프로세서(220)는 에러 정정 모듈(222)을 구동하여 에러를 정정할 수 있다(⑥). 에러 정정 모듈(222)은 펌웨어의 형태로써 구현될 수 있으며, 평소에는 디바이스 컨트롤러(210)에 구비되는 ROM(도 2 참조, 260) 또는 불휘발성 메모리(280)에 저장될 수 있다.If there is an error in the data read from the RAM 234 , the processor 220 may drive the error correction module 222 to correct the error ( ⑥ ). The error correction module 222 may be implemented in the form of firmware, and may be stored in a ROM (see FIG. 2 , 260 ) or a nonvolatile memory 280 provided in the device controller 210 .

만일 에러가 정정되었다면, 에러가 정정된 데이터(CMD_S, ADDR_S, DATA_W 등)은 패킷데이터(WD packet)의 형태로 불휘발성 메모리(280)로 전송될 수 있다. 반면, 에러 정정 모듈(222)에 의해서도 에러가 정정되지 않았다면, DIMM 컨트롤러(240)는 상태 정보(STI)를 업데이트할 수 있다. 이때, 상태 정보(STI)는 호스트로부터 수신된 데이터에 에러가 있음을 나타낼 수 있다. If the error is corrected, the error-corrected data (CMD_S, ADDR_S, DATA_W, etc.) may be transmitted to the nonvolatile memory 280 in the form of packet data (WD packet). On the other hand, if the error is not corrected even by the error correction module 222 , the DIMM controller 240 may update the state information STI. In this case, the state information STI may indicate that there is an error in data received from the host.

이후, 호스트(100)는 상태 영역(234d)에 저장된 상태 정보(STI)를 참조하여 램(234)으로 데이터(예를 들어, CMD_S, ADDR_S, DATA_W 중 적어도 하나)를 전송할 수 있다.Thereafter, the host 100 may transmit data (eg, at least one of CMD_S, ADDR_S, and DATA_W) to the RAM 234 with reference to the state information STI stored in the state area 234d.

본 도면에서는 예시적으로 스토리지 커맨드(CMD_S), 스토리지 어드레스(ADDR_S), 및 쓰기 데이터(DATA_W)가 모두 DIMM 컨트롤러(240)로 전송된 후, 에러 검출기(242)에 의한 검출 동작이 실행되는 것으로 도시되었다. 그러나, 이에 한정되지 않으며, DIMM 컨트롤러(240)가 램(234)에 액세스하여 데이터를 읽어오면, DIMM 컨트롤러(240)는 읽혀진 데이터에 에러가 있는지 여부를 곧바로 검출할 수 있다. In this figure, it is shown that the storage command CMD_S, the storage address ADDR_S, and the write data DATA_W are all transmitted to the DIMM controller 240 , and then the detection operation by the error detector 242 is executed. became However, the present invention is not limited thereto, and when the DIMM controller 240 accesses the RAM 234 to read data, the DIMM controller 240 may immediately detect whether there is an error in the read data.

본 발명의 실시 예에 따른 디바이스 컨트롤러는 하드웨어를 이용하여 호스트로부터 수신된 데이터의 에러를 검출하고, 소프트웨어를 이용하여 검출된 에러를 정정할 수 있다. 그 결과, 반도체 장치의 칩 사이즈를 감소시킬 수 있다.The device controller according to an embodiment of the present invention may detect an error in data received from the host using hardware and correct the detected error using software. As a result, the chip size of the semiconductor device can be reduced.

도 9는 도 8에 도시된 DIMM 컨트롤러(240)를 좀 더 상세하게 보여주는 블록도이다. 도 9를 참조하면, DIMM 컨트롤러(240)는 에러 검출기(242), 스트림 패킷 생성기(244), 상태 정보 생성기(246), 및 ECC 인코더(248)를 포함할 수 있다.9 is a block diagram showing the DIMM controller 240 shown in FIG. 8 in more detail. Referring to FIG. 9 , the DIMM controller 240 may include an error detector 242 , a stream packet generator 244 , a status information generator 246 , and an ECC encoder 248 .

에러 검출기(242)는 램(234)으로부터 읽혀진 데이터에 에러가 있는지 여부를 검사할 수 있다. 예를 들어, 에러 검출기(242)는, 호스트(100)에 의해 데이터가 인코딩될 때 부가된 ECC 패리티를 이용하여, 데이터에 에러가 있는지 여부를 검사할 수 있다. 검사 결과, 에러가 검출되었다면, 프로세서(도 8 참조, 220)는 에러 정정 모듈(222)을 구동할 수 있다. 그리고, 프로세서는 에러 정정 모듈(222)을 이용하여 검출된 에러를 정정할 수 있다.The error detector 242 may check whether there is an error in the data read from the RAM 234 . For example, the error detector 242 may check whether there is an error in the data by using the ECC parity added when the data is encoded by the host 100 . As a result of the check, if an error is detected, the processor (refer to FIG. 8 , 220 ) may drive the error correction module 222 . In addition, the processor may correct the detected error using the error correction module 222 .

에러 정정 모듈(222)에 의해 에러가 정정되었다면, 스트림 패킷 생성기(244)는 쓰기 데이터(DATA_W)를 스트림 패킷의 형태로 가공할 수 있다. 그리고, 가공된 패킷 데이터(WR packet)는 불휘발성 메모리(280)로 전송되어 프로그램될 것이다.If the error is corrected by the error correction module 222 , the stream packet generator 244 may process the write data DATA_W in the form of a stream packet. Then, the processed packet data WR packet is transmitted to the nonvolatile memory 280 to be programmed.

반면, 에러 정정 모듈(222)을 구동하더라도 에러가 정정되지 않았다면, 상태 정보 생성기(246)는 상태 정보(STI)를 업데이트할 수 있다. 이때, 업데이트된 상태 정보(STI)는 에러가 발생한 데이터(예를 들어, CMD_S, DATA_W 등)에 관한 정보를 포함할 수 있다. 상태 정보 생성기(246)는 상태 정보(STI)를 ECC 인코더(248)로 전송할 수 있다.On the other hand, if the error is not corrected even when the error correction module 222 is driven, the state information generator 246 may update the state information STI. In this case, the updated state information STI may include information about data in which an error has occurred (eg, CMD_S, DATA_W, etc.). The state information generator 246 may transmit the state information (STI) to the ECC encoder 248 .

ECC 인코더(248)는 상태 정보 생성기(246)로부터 전송받은 상태 정보(STI)를 인코딩할 수 있다. 예를 들어, 상태 정보 생성기(246)는 상태 정보(STI)에 패리티 비트를 부가할 수 있다. ECC 인코더(248)는 상태 정보(STI)를 램의 상태 영역(도 8 참조, 234d)으로 전송할 수 있다. 이후 호스트(100)는 상태 영역(234d)에 저장된 상태 정보(STI)를 참조하여 에러가 발생한 데이터를 다시 데이터 스토리지(200)로 전송할 수 있다.The ECC encoder 248 may encode the state information (STI) received from the state information generator 246 . For example, the state information generator 246 may add a parity bit to the state information STI. The ECC encoder 248 may transmit the state information (STI) to the state area (refer to FIG. 8 , 234d) of the RAM. Thereafter, the host 100 may refer to the state information STI stored in the state area 234d and transmit the data in which the error has occurred to the data storage 200 again.

본 도면에서 설명된 실시 예와는 달리, 램(234)으로부터 수신된 데이터에 대한 에러 검출 기능과, 램(234)으로 전송될 데이터를 인코딩하는 기능은 하나의 IP에 의해 수행될 수도 있다. 이에 대해서는 도 10에서 상세하게 설명될 것이다.Unlike the embodiment described in this figure, an error detection function for data received from the RAM 234 and a function for encoding data to be transmitted to the RAM 234 may be performed by one IP. This will be described in detail with reference to FIG. 10 .

도 10은 도 8에 도시된 DIMM 컨트롤러(240)의 다른 실시 예를 좀 더 상세하게 보여주는 블록도이다. 도 10 참조하면, DIMM 컨트롤러(240)는 ECC 회로(242), 스트림 패킷 생성기(244), 및 상태 정보 생성기(246)를 포함할 수 있다.FIG. 10 is a block diagram showing another embodiment of the DIMM controller 240 shown in FIG. 8 in more detail. Referring to FIG. 10 , the DIMM controller 240 may include an ECC circuit 242 , a stream packet generator 244 , and a state information generator 246 .

ECC 회로(242)는 램(234)으로부터 읽혀진 데이터에 에러가 있는지 여부를 검사할 수 있다. 예를 들어, ECC 회로(242)는, 호스트(100)에 의해 데이터가 인코딩될 때 부가된 ECC 패리티를 이용하여, 데이터에 에러가 있는지 여부를 검사할 수 있다. 검사 결과, 에러가 검출되었다면, 프로세서(220)는 에러 정정 모듈(222)을 구동할 수 있다. 그리고, 프로세서는 에러 정정 모듈(222)을 이용하여 검출된 에러를 정정할 수 있다.The ECC circuit 242 may check whether there is an error in the data read from the RAM 234 . For example, the ECC circuit 242 may check whether there is an error in the data by using the ECC parity added when the data is encoded by the host 100 . As a result of the inspection, if an error is detected, the processor 220 may drive the error correction module 222 . In addition, the processor may correct the detected error using the error correction module 222 .

에러 정정 모듈(222)에 의해 에러가 정정되었다면, 스트림 패킷 생성기(244)는 쓰기 데이터(DATA_W)를 스트림 패킷의 형태로 가공할 수 있다. 그리고, 가공된 패킷 데이터(WR packet)는 불휘발성 메모리(280)로 전송되어 프로그램될 것이다.If the error is corrected by the error correction module 222 , the stream packet generator 244 may process the write data DATA_W in the form of a stream packet. Then, the processed packet data WR packet is transmitted to the nonvolatile memory 280 to be programmed.

반면, 에러 정정 모듈(222)을 구동하더라도 에러가 정정되지 않았다면, 상태 정보 생성기(246)는 상태 정보(STI)를 업데이트할 수 있다. 이때, 업데이트된 상태 정보(STI)는 에러가 발생한 데이터(예를 들어, CMD_S, DATA_W 등)에 관한 정보를 포함할 수 있다. 상태 정보 생성기(246)는 상태 정보(STI)를 ECC 회로(242)로 전송할 수 있다.On the other hand, if the error is not corrected even when the error correction module 222 is driven, the state information generator 246 may update the state information STI. In this case, the updated state information STI may include information about data in which an error has occurred (eg, CMD_S, DATA_W, etc.). The state information generator 246 may transmit the state information STI to the ECC circuit 242 .

ECC 회로(242)는 상태 정보 생성기(246)로부터 전송받은 상태 정보(STI)를 인코딩할 수 있다. 예를 들어, 상태 정보 생성기(246)는 상태 정보(STI)에 패리티 비트를 부가할 수 있다. ECC 회로(242)는 상태 정보(STI)를 램의 상태 영역(도 8 참조, 234d)으로 전송할 수 있다. 이후 호스트(100)는 상태 영역(234d)에 저장된 상태 정보(STI)를 참조하여 에러가 발생한 데이터를 다시 데이터 스토리지(200)로 전송할 수 있다.The ECC circuit 242 may encode the state information STI received from the state information generator 246 . For example, the state information generator 246 may add a parity bit to the state information STI. The ECC circuit 242 may transmit the state information STI to the state area (refer to FIG. 8 , 234d) of the RAM. Thereafter, the host 100 may refer to the state information STI stored in the state area 234d and transmit the data in which the error has occurred to the data storage 200 again.

본 발명의 실시 예에 따르면, DIMM 컨트롤러는 하드웨어를 이용하여, 호스트로부터 수신된 데이터에 에러가 있는지 여부를 검출할 수 있다. 그리고, DIMM 컨트롤러는 펌웨어를 구동하여, 검출된 에러를 정정할 수 있다. 그 결과, 반도체 장치의 칩 사이즈를 감소시킬 수 있다. 뿐만 아니라, 검출된 에러가 정정되지 않은 경우, 상태 정보를 호스트로 전송함으로써 호스트가 데이터를 재전송할 수 있도록 한다.According to an embodiment of the present invention, the DIMM controller may detect whether there is an error in data received from the host using hardware. In addition, the DIMM controller may correct the detected error by driving the firmware. As a result, the chip size of the semiconductor device can be reduced. In addition, when the detected error is not corrected, status information is transmitted to the host so that the host can retransmit data.

도 11은 본 발명의 스토리지 시스템에 있어서, 호스트로부터 수신된 데이터의 에러를 검출하고 정정하는 방법을 보여주는 순서도이다.11 is a flowchart illustrating a method of detecting and correcting an error in data received from a host in the storage system of the present invention.

S110 단계에서, 호스트(100)는 스토리지 커맨드(CMD_S), 스토리지 어드레스(ADDR_S), 및 쓰기 데이터(DATA_W)를 인코딩할 수 있다. 예를 들어, 호스트(100)는 디바이스 컨트롤러(210)로 전송되는 데이터(예를 들어, 스토리지 커맨드, 읽기 데이터, 쓰기 데이터 등)에 ECC 패리티(ECC parity)를 부가하여 전송할 수 있다. ECC 패리티는 디바이스 컨트롤러(210) 전송된 데이터에 에러가 있는지 여부 및 에러는 정정하는데 사용될 수 있다.In operation S110 , the host 100 may encode the storage command CMD_S, the storage address ADDR_S, and the write data DATA_W. For example, the host 100 may transmit ECC parity by adding ECC parity to data (eg, storage command, read data, write data, etc.) transmitted to the device controller 210 . The ECC parity may be used to determine whether there is an error in data transmitted to the device controller 210 and correct the error.

S120 단계에서, 디바이스 컨트롤러(210)는 호스트로부터 스토리지 커맨드(CMD_S) 및 스토리지 어드레스(ADDR_S)를 수신할 수 있다. 예를 들어, 수신된 스토리지 커맨드(CMD_S) 및 스토리지 어드레스(ADDR_S)는 디바이스 컨트롤러의 물리 계층(도 4 참조, 230)에 구비된 램의 커맨드 영역(234a)에 저장될 수 있다.In operation S120 , the device controller 210 may receive a storage command CMD_S and a storage address ADDR_S from the host. For example, the received storage command CMD_S and the storage address ADDR_S may be stored in the command area 234a of the RAM provided in the physical layer (refer to FIG. 4 , 230 ) of the device controller.

S130 단계에서, 디바이스 컨트롤러(210)는 스토리지 커맨드(CMD_S) 및 스토리지 어드레스(ADDR_S)에 대응하는 쓰기 데이터(DATA_W)를 수신할 수 있다. 예를 들어, 쓰기 데이터(DATA_W)는 디바이스 컨트롤러의 물리 계층(230)에 구비된 램의 쓰기 영역(234b)에 저장될 수 있다.In operation S130 , the device controller 210 may receive write data DATA_W corresponding to the storage command CMD_S and the storage address ADDR_S. For example, the write data DATA_W may be stored in the write area 234b of the RAM provided in the physical layer 230 of the device controller.

S140 단계에서, 호스트(100)로부터 수신된 데이터에 에러가 있는지 여부가 검출될 수 있다. 예를 들어, 디바이스 컨트롤러(210)에 구비된 DIMM 컨트롤러(도 8 참조, 240)는 커맨드 영역(234a) 또는 읽기 영역(234b)에 저장된 데이터를 읽어내고, 에러가 있는지 여부를 검출할 수 있다. 본 단계에서, 에러의 검출은 DIMM 컨트롤러(240)에 구비된 별도의 하드웨어(예를 들어, 도 9의 에러 검출기(242), 또는 도 10의 ECC 회로(242))에 의해 실행될 수 있다.In operation S140 , it may be detected whether there is an error in data received from the host 100 . For example, the DIMM controller (see FIG. 8 , 240 ) included in the device controller 210 may read data stored in the command area 234a or the read area 234b and detect whether there is an error. In this step, the detection of the error may be performed by separate hardware (eg, the error detector 242 of FIG. 9 or the ECC circuit 242 of FIG. 10 ) provided in the DIMM controller 240 .

S150 단계에서, 검출된 에러가 정정될 수 있다. 에러의 정정은 프로세서(210)가 별도의 에러 정정 펌웨어를 구동하여 실행될 수 있다. 예를 들어, 에러 정정을 위한 펌웨어는 디바이스 컨트롤러(210)에 구비된 롬(도 2 참조, 260) 또는 불휘발성 메모리(280)에 저장될 수 있으며, 프로세서(210)에 의해 로딩되어 구동될 수 있다.In step S150 , the detected error may be corrected. The error correction may be performed by the processor 210 driving a separate error correction firmware. For example, the firmware for error correction may be stored in the ROM (see FIG. 2 , 260 ) or the nonvolatile memory 280 provided in the device controller 210 , and may be loaded and driven by the processor 210 . have.

S160 단계에서, 에러가 정정되었는지 여부가 판단될 수 있다. 만일, 에러 정정 펌웨어를 구동한 결과 에러가 정정되었다면(Yes), 쓰기 데이터는 스트림 패킷(WR packet)의 형태로 불휘발성 메모리로 전송될 것이다. 반면, 에러가 정정되지 않았다면(No), S180 단계로 이동한다.In step S160, it may be determined whether the error has been corrected. If the error is corrected as a result of driving the error correction firmware (Yes), the write data will be transmitted to the nonvolatile memory in the form of a stream packet (WR packet). On the other hand, if the error is not corrected (No), the flow moves to step S180.

S180 단계에서, 상태 정보(STI)가 업데이트될 수 있다. 업데이트된 상태 정보(STI)는 램(234)의 상태 영역(234d)에 저장될 수 있다. 업데이트된 상태 정보(STI)는 에러가 발생한 데이터에 관한 정보를 포함할 수 있다. 예를 들어, 상태 정보(STI)는 쓰기 데이터(DATA_W)의 어느 부분(즉, 논리적 주소)에 에러가 발생하였는지 여부에 관한 정보를 포함할 수 있다.In operation S180 , the state information STI may be updated. The updated state information STI may be stored in the state area 234d of the RAM 234 . The updated state information STI may include information about data in which an error has occurred. For example, the state information STI may include information on whether an error occurs in which part (ie, logical address) of the write data DATA_W.

S190 단계에서, 상태 정보(STI)는 호스트로 전송될 수 있다. 예를 들어, 호스트(100)는 램(234)을 주기적으로 폴링(polling)하거나 또는 인터럽트 방식을 사용함으로써, 상태 정보(STI)를 가져갈 수 있다. 이후, 호스트(100)는 에러가 발생한 데이터를 다시 디바이스 컨트롤러(210)로 재전송할 것이다.In step S190, the state information (STI) may be transmitted to the host. For example, the host 100 may obtain the state information STI by periodically polling the RAM 234 or using an interrupt method. Thereafter, the host 100 retransmits the data in which the error occurred to the device controller 210 again.

도 12는 본 발명의 실시 예에 따른 디바이스 컨트롤러의 동작 방법을 보여주는 순서도이다.12 is a flowchart illustrating a method of operating a device controller according to an embodiment of the present invention.

S210 단계에서, 호스트로부터 인코딩된 스토리지 커맨드(CMD_S) 및 스토리지 어드레스(ADDR_S)가 수신될 수 있다. 예를 들어, 인코딩된 데이터는 ECC 패리티를 포함할 수 있다. 예를 들어, 스토리지 커맨드(CMD_S) 및 스토리지 어드레스(ADDR_S)는 스토리지 컨트롤러의 물리 계층(220)에 구비된 램의 상태 영역(234a)에 저장될 수 있다.In operation S210 , an encoded storage command CMD_S and a storage address ADDR_S may be received from the host. For example, the encoded data may include ECC parity. For example, the storage command CMD_S and the storage address ADDR_S may be stored in the state area 234a of the RAM included in the physical layer 220 of the storage controller.

S220 단계에서, 스토리지 커맨드(CMD_S) 및 스토리지 어드레스(ADDR_S)에 대응하는, 인코딩된 쓰기 데이터(DATA_W)가 수신될 수 있다. 쓰기 데이터(DATA_W)는 램의 쓰기 영역(234b)에 저장될 수 있다.In operation S220 , encoded write data DATA_W corresponding to the storage command CMD_S and the storage address ADDR_S may be received. The write data DATA_W may be stored in the write area 234b of the RAM.

S230 단계에서, 호스트로부터 수신된 데이터의 에러가 체크될 수 있다. 에러의 검출은 데이터가 인코딩될 때 부가된 ECC 패리티를 이용하여 실행될 수 있다. 본 단계는 DIMM 컨트롤러(240)에 구비된 에러 검출기(242)에 의해 실행될 수 있다.In step S230 , an error in data received from the host may be checked. Detection of errors may be performed using ECC parity added when data is encoded. This step may be executed by the error detector 242 provided in the DIMM controller 240 .

S240 단계에서, 에러가 정정될 수 있다. 본 단계는 프로세서(210)가 별도의 에러 정정을 위한 펌웨어를 구동함으로써 실행될 수 있다. 예를 들어, 에러 정정을 위한 펌웨어는 디바이스 컨트롤러(210)에 구비된 롬(260) 또는 불휘발성 메모리(280)에 저장될 수 있으며, 프로세서(210)에 의해 구동될 수 있다.In step S240 , the error may be corrected. This step may be executed by the processor 210 driving a separate firmware for error correction. For example, the firmware for error correction may be stored in the ROM 260 or the nonvolatile memory 280 provided in the device controller 210 , and may be driven by the processor 210 .

S250 단계에서, 에러가 정정되었는지 여부가 판단될 수 있다. 판단 결과에 따라 동작 분기갑 발생한다. 만일 에러가 정정되었다면(Yes), S260 단계로 이동한다. 반면 정정되지 않았다면(No), S270 단계로 이동한다. In step S250, it may be determined whether the error has been corrected. Depending on the judgment result, an action divergence occurs. If the error is corrected (Yes), the process moves to step S260. On the other hand, if it is not corrected (No), it moves to step S270.

S260 단계에서, 쓰기 데이터가 스트림 패킷의 행태로 불휘발성 메모리로 전송될 수 있다. 이후, 스트림 패킷은 불휘발성 메모리에 프로그램될 것이다.In operation S260 , write data may be transmitted to the nonvolatile memory in the form of a stream packet. Then, the stream packet will be programmed into the non-volatile memory.

S270 단계에서, 상태 정보(STI)가 업데이트될 수 있다. 상태 정보(STI)는 에러가 발생한 데이터에 관한 정보를 포함할 수 있다. 상태 정보(STI)는 램(234)의 상태 영역(234d)에 저장될 수 있다. 이후 호스트는 상태 정보(STI)를 참조하여 에러가 발생한 데이터(예를 들어, CMD_S, ADDR_S, DATA_W 등)를 디바이스 컨트롤러로 재전송할 것이다. In operation S270 , the state information STI may be updated. The state information STI may include information about data in which an error has occurred. The state information STI may be stored in the state area 234d of the RAM 234 . Thereafter, the host will retransmit the error data (eg, CMD_S, ADDR_S, DATA_W, etc.) to the device controller by referring to the status information (STI).

본 실시 예에서는, 스토리지 커맨드(CMD_S) 및 스토리지 어드레스(ADDR_S)가 수신되고(S310) 읽기 데이터(DATA_W)가 수신된 후(S320), 에러가 체크(S330)되는 것으로 설명되었다. 그러나, DIMM 컨트롤러(도 8 참조, 240)가 쓰기 영역(234b)에 저장된 쓰기 데이터를 읽어내기 전에 읽기 영역(234a)에 저장된 스토리지 커맨드(CMD_S) 및 스토리지 어드레스(ADDR_S)를 읽어내는 경우, 스토리지 커맨드(CMD_S) 및 스토리지 어드레스(ADDR_S)의 에러가 먼저 체크될 수도 있다.In the present embodiment, it has been described that the storage command CMD_S and the storage address ADDR_S are received (S310) and the read data DATA_W is received (S320), and then an error is checked (S330). However, when the DIMM controller (see FIG. 8 , 240 ) reads the storage command CMD_S and the storage address ADDR_S stored in the read area 234a before reading the write data stored in the write area 234b, the storage command Errors in (CMD_S) and storage address (ADDR_S) may be checked first.

그리고, 도면에서는 S270 단계 이후 S210 단계가 실행되는 것으로 도시되었다. 그러나, 상태 데이터(STI)가 쓰기 데이터(DATA_W)에는 에러가 없다고 지시하거나, 또는 스토리지 커맨드(CMD_S) 및/또는 스토리지 어드레스(ADDR_S)에만 에러가 있다고 지시한다면, S270 단계가 실행된 후 S220 단계가 실행될 수 있다.And, in the drawing, it is shown that step S210 is executed after step S270. However, if the state data STI indicates that there is no error in the write data DATA_W, or indicates that there is an error only in the storage command CMD_S and/or the storage address ADDR_S, after step S270 is executed, step S220 is performed. can be executed

도 13은 본 발명의 다른 실시 예에 따른 디바이스 컨트롤러의 동작 방법을 보여주는 순서도이다. 기본적인 동작 방법은 도 12에서 설명된 실시 예와 유사하므로, 중복되는 설명은 생략하기로 한다.13 is a flowchart illustrating a method of operating a device controller according to another embodiment of the present invention. Since the basic operation method is similar to the embodiment described with reference to FIG. 12 , a redundant description will be omitted.

S310 단계에서, 인코딩된 스토리지 커맨드(CMD_S) 및 스토리지 어드레스(ADDR_S)가 수신될 수 있다.In operation S310 , an encoded storage command CMD_S and a storage address ADDR_S may be received.

S320 단계에서, 인코딩된 쓰기 데이터(DATA_W)가 수신될 수 있다.In operation S320 , the encoded write data DATA_W may be received.

S330 단계에서, 수신된 데이터의 에러가 체크될 수 있다. 본 단계는 DIMM 컨트롤러(240)에 구비된 에러 검출기(242)에 의해 실행될 수 있다.In step S330, an error of the received data may be checked. This step may be executed by the error detector 242 provided in the DIMM controller 240 .

S340 단계에서, 검출된 에러가 정정 가능한지 여부가 판별될 수 있다. ECC 패리티를 이용하여 에러가 정정 가능한지 여부를 판단하는 것은 본 발명이 속하는 기술 분야에서 통상의 지식을 지닌 자에게 자명하므로 상세한 설명은 생략하기로 한다. 판단 결과에 따라 동작 분기가 발생한다. 만일 에러가 정정 가능하다면(Yes), S350 단계로 이동한다. 반면 정정 가능하지 않다면(No), S370 단계로 이동한다.In operation S340 , it may be determined whether the detected error is correctable. Determining whether an error can be corrected using ECC parity is obvious to a person skilled in the art to which the present invention pertains, so a detailed description thereof will be omitted. An operation branch occurs according to the determination result. If the error is correctable (Yes), the flow moves to step S350. On the other hand, if correction is not possible (No), the process moves to step S370.

S350 단계에서, 에러가 정정될 수 있다. 본 단계는 프로세서(210)가 별도의 에러 정정을 위한 펌웨어를 구동함으로써 실행될 수 있다. In step S350, an error may be corrected. This step may be executed by the processor 210 driving a separate firmware for error correction.

S360 단계에서, 쓰기 데이터가 스트림 패킷의 행태로 불휘발성 메모리로 전송될 수 있다. 이후, 스트림 패킷은 불휘발성 메모리에 프로그램될 것이다.In operation S360 , write data may be transmitted to the nonvolatile memory in the form of a stream packet. Then, the stream packet will be programmed into the non-volatile memory.

S370 단계에서, 상태 정보(STI)가 업데이트될 수 있다. 상태 정보(STI)는 에러가 발생한 데이터에 관한 정보를 포함할 수 있다. 상태 정보(STI)는 램(234)의 상태 영역(234d)에 저장될 수 있다. 이후 호스트는 상태 정보(STI)를 참조하여 에러가 발생한 데이터(예를 들어, CMD_S, ADDR_S, DATA_W 등)를 디바이스 컨트롤러로 재전송할 것이다. In operation S370 , the state information STI may be updated. The state information STI may include information about data in which an error has occurred. The state information STI may be stored in the state area 234d of the RAM 234 . Thereafter, the host will retransmit the error data (eg, CMD_S, ADDR_S, DATA_W, etc.) to the device controller by referring to the status information (STI).

도 12의 실시 예와 마찬가지로, 본 실시 예에서는, 스토리지 커맨드(CMD_S) 및 스토리지 어드레스(ADDR_S)가 수신되고(S310) 읽기 데이터(DATA_W)가 수신된 후(S320), 에러가 체크(S330)되는 것으로 설명되었다. 그러나, DIMM 컨트롤러(도 8 참조, 240)가 쓰기 영역(234b)에 저장된 쓰기 데이터를 읽어내기 전에 읽기 영역(234a)에 저장된 스토리지 커맨드(CMD_S) 및 스토리지 어드레스(ADDR_S)를 읽어내는 경우, 스토리지 커맨드(CMD_S) 및 스토리지 어드레스(ADDR_S)의 에러가 먼저 체크될 수도 있다.12, in this embodiment, after the storage command CMD_S and the storage address ADDR_S is received (S310) and the read data DATA_W is received (S320), an error is checked (S330) was described as However, when the DIMM controller (see FIG. 8 , 240 ) reads the storage command CMD_S and the storage address ADDR_S stored in the read area 234a before reading the write data stored in the write area 234b, the storage command Errors in (CMD_S) and storage address (ADDR_S) may be checked first.

그리고, 도면에서는 S370 단계 이후 S310 단계가 실행되는 것으로 도시되었다. 그러나, 상태 데이터(STI)가 쓰기 데이터(DATA_W)에는 에러가 없다고 지시하거나, 또는 스토리지 커맨드(CMD_S) 및/또는 스토리지 어드레스(ADDR_S)에만 에러가 있다고 지시한다면, S370 단계가 실행된 후 S320 단계가 실행될 수 있다.And, in the drawing, it is shown that step S310 is executed after step S370. However, if the state data STI indicates that there is no error in the write data DATA_W or that there is an error only in the storage command CMD_S and/or the storage address ADDR_S, after step S370 is executed, step S320 is can be executed

본 발명의 실시 예에 따르면, DIMM 컨트롤러는 하드웨어를 이용하여, 호스트로부터 수신된 데이터에 에러가 있는지 여부를 검출할 수 있다. 그리고, DIMM 컨트롤러는 펌웨어를 구동하여, 검출된 에러를 정정할 수 있다. 그 결과, 반도체 장치의 칩 사이즈를 감소시킬 수 있다. 뿐만 아니라, 검출된 에러가 정정되지 않은 경우, 상태 정보를 호스트로 전송함으로써 호스트가 데이터를 재전송할 수 있도록 한다. 즉, 에러 정보를 관리하여 호스트로 전송될 수 있도록 함으로써, 호스트로부터의 데이터 수신의 신뢰성을 향상시킬 수 있다.According to an embodiment of the present invention, the DIMM controller may detect whether there is an error in data received from the host using hardware. In addition, the DIMM controller may correct the detected error by driving the firmware. As a result, the chip size of the semiconductor device can be reduced. In addition, when the detected error is not corrected, status information is transmitted to the host so that the host can retransmit data. That is, the reliability of data reception from the host can be improved by managing the error information so that it can be transmitted to the host.

도 14는 도 2에 도시된 불휘발성 메모리들 중 어느 하나를 예시적으로 보여주는 블록도이다. 도 14를 참조하면, 불휘발성 메모리(280)는 메모리 셀 어레이(281), 어드레스 디코더(282), 페이지 버퍼(283), 입출력 회로(284), 그리고 제어 로직 및 전압 발생 회로(285)를 포함할 수 있다.FIG. 14 is a block diagram exemplarily showing any one of the nonvolatile memories shown in FIG. 2 . Referring to FIG. 14 , the nonvolatile memory 280 includes a memory cell array 281 , an address decoder 282 , a page buffer 283 , an input/output circuit 284 , and a control logic and voltage generation circuit 285 . can do.

메모리 셀 어레이(281)는 복수의 메모리 블록들을 포함할 수 있다. 복수의 메모리 블록들 각각은 복수의 셀 스트링들을 포함할 수 있다. 복수의 셀 스트링들 각각은 복수의 메모리 셀들을 포함한다. 복수의 메모리 셀들은 복수의 워드라인들(WL)과 연결될 수 있다. 복수의 메모리 셀들 각각은 1-비트를 저장하는 단일 레벨 셀(Single Level Cell; SLC) 또는 적어도 2-비트를 저장하는 멀티 레벨 셀(Multi Level Cell; MLC)을 포함할 수 있다.The memory cell array 281 may include a plurality of memory blocks. Each of the plurality of memory blocks may include a plurality of cell strings. Each of the plurality of cell strings includes a plurality of memory cells. The plurality of memory cells may be connected to the plurality of word lines WL. Each of the plurality of memory cells may include a single level cell (SLC) that stores 1-bit or a multi-level cell (MLC) that stores at least 2-bits.

어드레스 디코더(282)는 복수의 워드라인들(WL), 스트링 선택 라인들(SSL), 및 접지 선택 라인들(GSL)을 통해 메모리 셀 어레이(281)와 연결된다. 어드레스 디코더(282)는 외부 장치로부터 어드레스(ADDR_P)를 수신하고, 수신된 물리 어드레스(ADDR_P)를 디코딩하여, 복수의 워드라인들(WL)을 구동할 수 있다. 예를 들어, 어드레스 디코더(282)는 외부 장치로부터 수신된 물리 어드레드(ADDR_P)를 디코딩하고, 디코딩된 물리 어드레스(ADDR_P)를 기반으로 복수의 워드라인들(WL) 중 적어도 하나의 워드라인을 선택하고, 선택된 적어도 하나의 워드 라인을 구동할 수 있다. 예시적으로, 물리 어드레스(ADDR_P)는 스토리지 어드레스(ADDR_S)가 변환된, 불휘발성 메모리(280)의 물리 어드레스를 나타낼 수 있다. 상술된 어드레스 변환 동작은 디바이스 컨트롤러(230) 또는 디바이스 컨트롤러(230)에 의해 구동되는 플래시 변환 계층(FTL)에 의해 수행될 수 있다.The address decoder 282 is connected to the memory cell array 281 through a plurality of word lines WL, string select lines SSL, and ground select lines GSL. The address decoder 282 may receive the address ADDR_P from the external device, decode the received physical address ADDR_P, and drive the plurality of word lines WL. For example, the address decoder 282 decodes the physical address ADDR_P received from the external device, and selects at least one word line among the plurality of word lines WL based on the decoded physical address ADDR_P. may be selected, and the selected at least one word line may be driven. For example, the physical address ADDR_P may indicate a physical address of the nonvolatile memory 280 to which the storage address ADDR_S is converted. The above-described address translation operation may be performed by the device controller 230 or a flash translation layer (FTL) driven by the device controller 230 .

페이지 버퍼(283)는 복수의 비트 라인들(BL)을 통해 메모리 셀 어레이(281)와 연결된다. 페이지 버퍼(283)는 제어 로직 및 전압 발생 회로(285)의 제어에 따라 입출력 회로(284)로부터 수신된 데이터(DATA)가 메모리 셀 어레이(281)에 저장되도록 비트 라인들(BL)을 제어할 수 있다. 페이지 버퍼(283)는 제어 로직 및 전압 발생 회로(285)의 제어에 따라 메모리 셀 어레이(281)에 저장된 데이터를 읽고, 읽은 데이터를 입출력 회로(284)로 전달할 수 있다. 예시적으로, 페이지 버퍼(283)는 입출력 회로(284)로부터 페이지 단위로 데이터를 수신하거나 또는 메모리 셀 어레이(281)로부터 페이지 단위로 데이터를 읽을 수 있다.The page buffer 283 is connected to the memory cell array 281 through a plurality of bit lines BL. The page buffer 283 controls the bit lines BL so that the data DATA received from the input/output circuit 284 is stored in the memory cell array 281 under the control of the control logic and voltage generator circuit 285 . can The page buffer 283 may read data stored in the memory cell array 281 under the control of the control logic and voltage generator circuit 285 and transfer the read data to the input/output circuit 284 . For example, the page buffer 283 may receive data from the input/output circuit 284 on a page-by-page basis or read data from the memory cell array 281 on a page-by-page basis.

입출력 회로(284)는 외부 장치로부터 데이터(DATA)를 수신하고, 수신된 데이터(DATA)를 페이지 버퍼(283)로 전달할 수 있다. 또는 입출력 회로(284)는 페이지 버퍼(283)로부터 데이터(DATA)를 수신하고, 수신된 데이터(DATA)를 외부 장치(예를 들어, DIMM 컨트롤러(230))로 전달할 수 있다. 예를 들어, 입출력 회로(284)는 제어 신호(CTRL)와 동기화되어 외부 장치와 데이터(DATA)를 송수신할 수 있다.The input/output circuit 284 may receive data DATA from an external device and transfer the received data DATA to the page buffer 283 . Alternatively, the input/output circuit 284 may receive the data DATA from the page buffer 283 and transfer the received data DATA to an external device (eg, the DIMM controller 230 ). For example, the input/output circuit 284 may transmit/receive data DATA to and from an external device in synchronization with the control signal CTRL.

제어 로직 및 전압 발생 회로(285)는 외부 장치로부터 스토리지 커맨드(CMD_S) 및 제어 신호(CTRL)를 수신하고, 수신된 신호들에 응답하여 어드레스 디코더(282), 페이지 버퍼(283), 및 입출력 회로(284)를 제어할 수 있다. 예를 들어, 제어 로직 및 전압 발생 회로(285)는 신호들(CMD_S, CTRL)에 응답하여 데이터(DATA)가 메모리 셀 어레이(281)에 저장되도록 다른 구성 요소들을 제어할 수 있다. 또는 제어 로직 및 전압 발생 회로(285)는 신호들(CMD_S, CTRL)에 응답하여 메모리 셀 어레이(281)에 저장된 데이터(DATA)가 외부 장치로 전송되도록 다른 구성 요소들을 제어할 수 있다. 예를 들어, 외부 장치로부터 수신된 스토리지 커맨드(CMD_S)는 도 2의 스토리지 커맨드(CMD_S)가 변형된 커맨드일 수 있다. 제어 신호(CTRL)는 디바이스 컨트롤러(230)가 불휘발성 메모리(280)를 제어하기 위하여 제공하는 신호일 수 있다.The control logic and voltage generator circuit 285 receives the storage command CMD_S and the control signal CTRL from an external device, and responds to the received signals by the address decoder 282 , the page buffer 283 , and the input/output circuit (284) can be controlled. For example, the control logic and voltage generation circuit 285 may control other components such that data DATA is stored in the memory cell array 281 in response to the signals CMD_S and CTRL. Alternatively, the control logic and voltage generator circuit 285 may control other components to transmit data DATA stored in the memory cell array 281 to an external device in response to the signals CMD_S and CTRL. For example, the storage command CMD_S received from the external device may be a modified command of the storage command CMD_S of FIG. 2 . The control signal CTRL may be a signal provided by the device controller 230 to control the nonvolatile memory 280 .

제어 로직 및 전압 발생 회로(285)는 불휘발성 메모리(280)가 동작하는데 요구되는 다양한 전압들을 생성할 수 있다. 예를 들어, 제어 로직 및 전압 발생 회로(285)는 복수의 프로그램 전압들, 복수의 패스 전압들, 복수의 선택 읽기 전압들, 복수의 비선택 읽기 전압들, 복수의 소거 전압들, 복수의 검증 전압들과 같은 다양한 전압들을 생성할 수 있다. 제어 로직 및 전압 발생 회로(285)는 생성된 다양한 전압들을 어드레스 디코더(282)로 제공하거나 또는 메모리 셀 어레이(281)의 기판으로 제공할 수 있다.The control logic and voltage generation circuit 285 may generate various voltages required for the nonvolatile memory 280 to operate. For example, the control logic and voltage generator circuit 285 may include a plurality of program voltages, a plurality of pass voltages, a plurality of select read voltages, a plurality of non-select read voltages, a plurality of erase voltages, and a plurality of verification voltages. It is possible to generate various voltages such as voltages. The control logic and voltage generation circuit 285 may provide the generated various voltages to the address decoder 282 or a substrate of the memory cell array 281 .

도 15는 도 14의 메모리 셀 어레이에 포함된 메모리 블록들 중 어느 하나의 예를 보여주는 회로도이다. 예시적으로, 도 15를 참조하여 3차원 구조의 메모리 블록(BLK1)이 설명된다. 그러나, 본 발명의 범위가 이에 한정되는 것은 아니며, 복수의 불휘발성 메모리(280) 각각에 포함된 다른 메모리 블록들 또한 메모리 블록(BLK1)과 유사한 구조를 가질 수 있다.15 is a circuit diagram illustrating an example of any one of memory blocks included in the memory cell array of FIG. 14 . For example, a memory block BLK1 having a three-dimensional structure will be described with reference to FIG. 15 . However, the scope of the present invention is not limited thereto, and other memory blocks included in each of the plurality of nonvolatile memories 280 may also have a structure similar to that of the memory block BLK1 .

도 15를 참조하면, 메모리 블록(BLK1)은 복수의 셀 스트링들(CS11, CS12, CS21, CS22)을 포함한다. 복수의 셀 스트링들(CS11, CS12, CS21, CS22)은 행 방향(row direction) 및 열 방향(column direction)을 따라 배치되어 행들 및 열들을 형성할 수 있다.Referring to FIG. 15 , the memory block BLK1 includes a plurality of cell strings CS11 , CS12 , CS21 , and CS22 . The plurality of cell strings CS11 , CS12 , CS21 , and CS22 may be disposed along a row direction and a column direction to form rows and columns.

예를 들어, 셀 스트링들(CS11, CS12)은 스트링 선택 라인들(SSL1a, SSL1b)와 연결되어, 제 1 행을 형성할 수 있다. 셀 스트링들(CS21, CS22)은 스트링 선택 라인들(SSL2a, SSL2b)와 연결되어 제 2 행을 형성할 수 있다.For example, the cell strings CS11 and CS12 may be connected to the string selection lines SSL1a and SSL1b to form a first row. The cell strings CS21 and CS22 may be connected to the string selection lines SSL2a and SSL2b to form a second row.

예를 들어, 셀 스트링들(CS11, CS21)은 제 1 비트라인(BL1)과 연결되어 제 1 열을 형성할 수 있다. 셀 스트링들(CS12, CS22)은 제 2 비트라인(BL2)과 연결되어 제 2 열을 형성할 수 있다.For example, the cell strings CS11 and CS21 may be connected to the first bit line BL1 to form a first column. The cell strings CS12 and CS22 may be connected to the second bit line BL2 to form a second column.

복수의 셀 스트링들(CS11, CS12, CS21, CS22) 각각은 복수의 셀 트랜지스터들을 포함한다. 예를 들어, 복수의 셀 스트링들(CS11, CS12, CS21, CS22) 각각은 스트링 선택된 트랜지스터들(SSTa, SSTb), 복수의 메모리 셀들(MC1~MC8), 접지 선택된 트랜지스터들(GSTa, GSTb), 및 더미 메모리 셀들(DMC1, DMC2)을 포함할 수 있다. 예시적으로, 복수의 셀 스트링들(CS11, CS12, CS21, CS22)에 포함된 복수의 셀 트랜지스터들 각각은 전하 트랩형 플래시(charge trap flash; CTF) 메모리 셀일 수 있다.Each of the plurality of cell strings CS11 , CS12 , CS21 , and CS22 includes a plurality of cell transistors. For example, each of the plurality of cell strings CS11 , CS12 , CS21 , and CS22 includes string-selected transistors SSTa and SSTb , a plurality of memory cells MC1 to MC8 , ground-selected transistors GSTa and GSTb , and dummy memory cells DMC1 and DMC2. For example, each of the plurality of cell transistors included in the plurality of cell strings CS11, CS12, CS21, and CS22 may be a charge trap flash (CTF) memory cell.

복수의 메모리 셀들(MC1~MC8)은 직렬 연결되며, 행 방향 및 열 방향에 의해 형성된 평명과 수직한 방향인 높이 방향(height direction)으로 적층된다. 스트링 선택된 트랜지스터들(SSTa, SSTb)은 직렬 연결되고, 직렬 연결된 스트링 선택된 트랜지스터들(SSTa, SSTb)은 복수의 메모리 셀들(MC1~MC8) 및 비트라인(BL) 사이에 제공된다. 접지 선택된 트랜지스터들(GSTa, GSTb)은 직렬 연결되고, 직렬 연결된 접지 선택된 트랜지스터들(GSTa, GSTb)은 복수의 메모리 셀들(MC1~MC8) 및 공통 소스 라인(CSL) 사이에 제공된다.The plurality of memory cells MC1 to MC8 are connected in series and stacked in a height direction that is perpendicular to a plane formed by a row direction and a column direction. The string-selected transistors SSTa and SSTb are connected in series, and the series-connected string-selected transistors SSTa and SSTb are provided between the plurality of memory cells MC1 to MC8 and the bit line BL. The ground-selected transistors GSTa and GSTb are connected in series, and the series-connected ground-selected transistors GSTa and GSTb are provided between the plurality of memory cells MC1 to MC8 and the common source line CSL.

예시적으로, 복수의 메모리 셀들(MC1~MC8) 및 접지 선택된 트랜지스터들(GSTa, GSTb) 사이에 제 1 더미 메모리 셀(DMC1)이 제공될 수 있다. 예시적으로, 복수의 메모리 셀들(MC1~MC8) 및 스트링 선택된 트랜지스터들(SSTa, SSTb) 사이에 제 2 더미 메모리 셀(DMC2)이 제공될 수 있다. For example, the first dummy memory cell DMC1 may be provided between the plurality of memory cells MC1 to MC8 and the ground-selected transistors GSTa and GSTb. For example, the second dummy memory cell DMC2 may be provided between the plurality of memory cells MC1 to MC8 and the string-selected transistors SSTa and SSTb.

셀 스트링들(CS11, CS12, CS21, CS22)의 접지 선택된 트랜지스터들(GSTa, GSTb)은 접지 선택 라인(GSL)에 공통으로 연결될 수 있다. 예시적으로, 동일한 행의 접지 선택된 트랜지스터들은 동일한 접지 선택 라인에 연결될 수 있고, 다른 행의 접지 선택된 트랜지스터들은 다른 접지 선택 라인에 연결될 수 있다. 예를 들어, 제 1 행의 셀 스트링들(CS11, CS12)의 제 1 접지 선택된 트랜지스터들(GSTa)은 제 1 접지 선택 라인에 연결될 수 있고, 제 2 행의 셀 스트링들(CS21, CS22)의 제 1 접지 선택된 트랜지스터들(GSTa)은 제 2 접지 선택 라인에 연결될 수 있다.The ground-selected transistors GSTa and GSTb of the cell strings CS11 , CS12 , CS21 , and CS22 may be commonly connected to the ground-selection line GSL. Exemplarily, ground-selected transistors in the same row may be connected to the same ground select line, and ground-selected transistors in different rows may be connected to different ground select lines. For example, the first ground-selected transistors GSTa of the cell strings CS11 and CS12 in the first row may be connected to the first ground-selection line, and The first ground-selected transistors GSTa may be connected to the second ground-selected line.

예시적으로, 도면에 도시되지는 않았으나, 기판(미도시)으로부터 동일한 높이에 제공되는 접지 선택된 트랜지터들은 동일한 접지 선택 라인에 연결될 수 있고, 다른 높이에 제공되는 접지 선택된 트랜지스터들은 다른 접지 선택 라인에 연결될 수 있다. 예를 들어, 셀 스트링들(CS11, CS12, CS21, CS22)의 제1 접지 선택된 트랜지스터들(GSTa)은 제 1 접지 선택 라인에 연결되고, 제 2 접지 선택 트랜지스터들(GSTb)은 제 2 접지 선택 라인에 연결될 수 있다.Exemplarily, although not shown in the drawings, ground-selected transistors provided at the same height from the substrate (not shown) may be connected to the same ground selection line, and ground-selected transistors provided at different heights may be connected to different ground selection lines. can be connected For example, the first ground-selected transistors GSTa of the cell strings CS11 , CS12 , CS21 and CS22 are connected to the first ground-selection line, and the second ground-selection transistors GSTb are connected to the second ground-selection line. can be connected to the line.

기판(또는 접지 선택된 트랜지스터(GSTa, GSTb)으로부터 동일한 높이의 메모리 셀들은 동일한 워드라인에 공통으로 연결되고, 서로 다른 높이의 메모리 셀들은 서로 다른 워드라인에 연결된다. 예를 들어, 셀 스트링들(CS11, CS12, CS21, CS22)의 제 1 내지 제 8 메모리 셀들(MC8)은 제 1 내지 제 8 워드라인들(WL1~WL8)에 각각 공통으로 연결된다.Memory cells of the same height from the substrate (or ground-selected transistors GSTa and GSTb) are commonly connected to the same wordline, and memory cells of different heights are connected to different wordlines. The first to eighth memory cells MC8 of CS11, CS12, CS21, and CS22 are commonly connected to the first to eighth word lines WL1 to WL8, respectively.

동일한 높이의 제 1 스트링 선택된 트랜지스터들(SSTa) 중 동일한 행의 스트링 선택된 트랜지스터들은 동일한 스트링 선택 라인과 연결되고, 다른 행의 스트링 선택된 트랜지스터들은 다른 스트링 선택 라인과 연결된다. 예를 들어, 제 1 행의 셀 스트링들(CS11, CS12)의 제 1 스트링 선택된 트랜지스터들(SSTa)은 스트링 선택 라인(SSL1a)과 공통으로 연결되고, 제 2 행의 셀 스트링들(CS21, CS22)의 제 1 스트링 선택된 트랜지스터들(SSTa)은 스트링 선택 라인(SSL1a)과 공통으로 연결된다.Among the first string-selected transistors SSTa having the same height, string-selected transistors in the same row are connected to the same string select line, and string-selected transistors in different rows are connected to different string select lines. For example, the first string selected transistors SSTa of the cell strings CS11 and CS12 of the first row are commonly connected to the string select line SSL1a, and the cell strings CS21 and CS22 of the second row are connected in common. ) of the first string selected transistors SSTa are commonly connected to the string select line SSL1a.

마찬가지로, 동일한 높이의 제 2 스트링 선택된 트랜지스터들(SSTb) 중 동일한 행의 스트링 선택된 트랜지스터들은 동일한 스트링 선택 라인과 연결되고, 다른 행의 스트링 선택된 트랜지스터들은 다른 스트링 선택 라인과 연결된다. 예를 들어, 제 1 행의 셀 스트링들(CS11, CS12)의 제 2 스트링 선택된 트랜지스터들(SSTb)은 스트링 선택 라인(SSL1b)과 공통으로 연결되고, 제 2 행의 셀 스트링들(CS21, CS22)의 제 2 스트링 선택된 트랜지스터들(SSTb)은 스트링 선택 라인(SSL2b)과 공통으로 연결된다.Similarly, among the second string-selected transistors SSTb having the same height, string-selected transistors in the same row are connected to the same string select line, and string-selected transistors in different rows are connected to different string select lines. For example, the second string selected transistors SSTb of the cell strings CS11 and CS12 of the first row are commonly connected to the string select line SSL1b, and the cell strings CS21 and CS22 of the second row are connected in common. ) of the second string select transistors SSTb are commonly connected to the string select line SSL2b.

비록 도면에 도시되지는 않았으나, 동일한 행의 셀 스트링들의 스트링 선택된 트랜지스터들은 동일한 스트링 선택 라인에 공통으로 연결될 수 있다. 예를 들어, 제 1 행의 셀 스트링들(CS11, CS12)의 제 1 및 제 2 스트링 선택된 트랜지스터들(SSTa, SSTb)은 동일한 스트링 선택 라인에 공통으로 연결될 수 있다. 제 2 행의 셀 스트링들(CS21, CS22)의 제 1 및 제 2 스트링 선택된 트랜지스터들(SSTa, SSTb)은 동일한 스트링 선택 라인에 공통으로 연결될 수 있다. Although not shown in the drawings, string-selected transistors of cell strings in the same row may be commonly connected to the same string-selection line. For example, the first and second string-selected transistors SSTa and SSTb of the cell strings CS11 and CS12 of the first row may be commonly connected to the same string select line. The first and second string-selected transistors SSTa and SSTb of the cell strings CS21 and CS22 of the second row may be commonly connected to the same string select line.

예시적으로, 동일한 높이의 더미 메모리 셀들은 동일한 더미 워드라인과 연결되고, 다른 높이의 더미 메모리 셀들은 다른 더미 워드라인과 연결된다. 예를 들어, 제 1 더미 메모리 셀들(DMC1)은 제 1 더미 워드라인(DWL1)과 연결되고, 제 2 더미 메모리 셀들(DMC2)은 제 2 더미 워드라인(DWL2)과 연결된다. For example, dummy memory cells having the same height are connected to the same dummy word line, and dummy memory cells having different heights are connected to different dummy word lines. For example, the first dummy memory cells DMC1 are connected to the first dummy word line DWL1 , and the second dummy memory cells DMC2 are connected to the second dummy word line DWL2 .

메모리 블록(BLK1)에서, 읽기 및 쓰기는 행 단위로 수행될 수 있다. 예를 들어, 스트링 선택 라인들(SSL1a, SSL1b, SSL2a, SSL2b)에 의해 메모리 블록(BLKa)의 하나의 행이 선택될 수 있다.In the memory block BLK1 , reading and writing may be performed in units of rows. For example, one row of the memory block BLKa may be selected by the string selection lines SSL1a, SSL1b, SSL2a, and SSL2b.

예를 들어, 스트링 선택 라인들(SSL1a, SSL1b)이 턴-온 전압이 공급되고 스트링 선택 라인들(SSL2a, SSL2b)에 턴-오프 전압이 공급될 때, 제 1 행의 셀 스트링들(CS11, CS12)이 비트 라인들(BL1, BL2)에 연결된다. 스트링 선택 라인들(SSL2a, SSL2b)에 턴-온 전압이 공급되고 스트링 선택 라인들(SSL1a, SSL1B)에 턴-오프 전압이 공급될 때, 제 2 행의 셀 스트링들(CS21, CS22)이 비트 라인들(BL1, BL2)에 연결되어 구동된다. 워드라인을 구동함으로써 구동되는 행의 셀 스트링의 메모리 셀들 중 동일한 높이의 메모리 셀들이 선택된다. 선택된 메모리 셀들에서 읽기 및 쓰기 동작이 수행될 수 있다. 선택된 메모리 셀들은 물리 페이지 단위를 형성할 수 있다. For example, when a turn-on voltage is supplied to the string selection lines SSL1a and SSL1b and a turn-off voltage is supplied to the string selection lines SSL2a and SSL2b, the cell strings CS11, CS12 is connected to bit lines BL1 and BL2. When a turn-on voltage is supplied to the string selection lines SSL2a and SSL2b and a turn-off voltage is supplied to the string selection lines SSL1a and SSL1B, the cell strings CS21 and CS22 of the second row are bit It is connected to the lines BL1 and BL2 and is driven. Memory cells of the same height among the memory cells of the cell string of the row driven by driving the word line are selected. Read and write operations may be performed on the selected memory cells. The selected memory cells may form a physical page unit.

제 1 메모리 블록(BLK1)에서, 소거는 메모리 블록 단위 또는 서브 블록의 단위로 수행될 수 있다. 메모리 블록 단위로 소거가 수행될 때, 제 1 메모리 블록(BLK1)의 모든 메모리 셀들(MC)이 하나의 소거 요청에 따라 동시에 소거될 수 있다. 서브 블록의 단위로 수행될 때, 제 1 메모리 블록(BLK1)의 메모리 셀들(MC) 중 일부는 하나의 소거 요청에 따라 동시에 소거되고, 나머지 일부는 소거 금지될 수 있다. 소거되는 메모리 셀들에 연결된 워드 라인에 저전압(예를 들어, 접지 전압)이 공급되고, 소거 금지된 메모리 셀들에 연결된 워드 라인은 플로팅될 수 있다.In the first memory block BLK1 , erasing may be performed in units of memory blocks or sub-blocks. When erasing is performed in units of memory blocks, all memory cells MC of the first memory block BLK1 may be simultaneously erased according to one erase request. When performed in units of sub-blocks, some of the memory cells MC of the first memory block BLK1 may be simultaneously erased according to one erase request, and the remaining portions may be inhibited from being erased. A low voltage (eg, a ground voltage) may be applied to a word line connected to the memory cells to be erased, and the word line connected to the erase-inhibited memory cells may be floated.

예시적으로, 도시된 메모리 블록(BLK1)은 예시적인 것이며, 셀 스트링들의 개수는 증가 또는 감소할 수 있으며, 셀 스트링들의 개수에 따라 셀 스트링들이 구성하는 행들 및 열들의 개수는 증가 또는 감소할 수 있다. 또한, 제 1 메모리 블록(BLK1)의 셀 트랜지스터들(GST, MC, DMC, SST 등)의 개수들는 각각 증가 또는 감소될 수 있으며, 셀 트랜지스터들의 개수들에 따라 메모리 블록(BLK1)의 높이가 증가 또는 감소할 수 있다. 또한, 셀 트랜지스터들의 개수들에 따라 셀 트랜지스터들과 연결된 라인들(GSL, WL, DWL, SSL 등)의 개수들이 증가 또는 감소될 수 있다.For example, the illustrated memory block BLK1 is exemplary, and the number of cell strings may increase or decrease, and the number of rows and columns constituting the cell strings may increase or decrease according to the number of cell strings. have. Also, the number of cell transistors GST, MC, DMC, SST, etc. of the first memory block BLK1 may be increased or decreased, respectively, and the height of the memory block BLK1 increases according to the number of cell transistors. or it may decrease. Also, the number of lines (GSL, WL, DWL, SSL, etc.) connected to the cell transistors may be increased or decreased according to the number of cell transistors.

도 16은 본 발명에 따른 불휘발성 메모리 모듈이 적용된 컴퓨팅 시스템을 예시적으로 보여주는 블록도이다. 도 16을 참조하면, 컴퓨팅 시스템(1000)은 프로세서(1100), 불휘발성 메모리 모듈들(1200, 1201), 램 모듈들(1300, 1301), 칩셋(1400), GPU(1500), 입출력 장치(1600), 그리고 스토리지 장치(1700)를 포함한다.16 is a block diagram exemplarily showing a computing system to which a nonvolatile memory module according to the present invention is applied. Referring to FIG. 16 , the computing system 1000 includes a processor 1100 , nonvolatile memory modules 1200 and 1201 , RAM modules 1300 and 1301 , a chipset 1400 , a GPU 1500 , and an input/output device ( 1600 ), and a storage device 1700 .

프로세서(1100)는 컴퓨팅 시스템(1000)의 제반 동작을 제어할 수 있다. 프로세서(1100)는 컴퓨팅 시스템(1000)에서 수행되는 다양한 연산을 수행할 수 있다.The processor 1100 may control overall operations of the computing system 1000 . The processor 1100 may perform various operations performed by the computing system 1000 .

불휘발성 메모리 모듈들(1200, 1201) 및 램 모듈들(1300, 1301)은 프로세서(1100)와 직접적으로 연결될 수 있다. 예를 들어, 불휘발성 메모리 모듈들(1200, 1201), 램 모듈들(1300, 1301) 각각은 듀얼 인-라인 메모리 모듈(Dual In-line Memory Module; DIMM) 형태를 가질 수 있다. 또는, 불휘발성 메모리 모듈들(1200, 1201) 및 램 모듈들(1300, 1301) 각각은 프로세서(1100)와 직접적으로 연결된 DIMM 소켓에 장착되어 프로세서(1100)와 통신할 수 있다. 예시적으로, 불휘발성 메모리 모듈들(1200, 1201)은 도 1 내지 도 15을 참조하여 설명된 불휘발성 메모리 모듈일 수 있다. The nonvolatile memory modules 1200 and 1201 and the RAM modules 1300 and 1301 may be directly connected to the processor 1100 . For example, each of the nonvolatile memory modules 1200 and 1201 and the RAM modules 1300 and 1301 may have the form of a dual in-line memory module (DIMM). Alternatively, each of the nonvolatile memory modules 1200 and 1201 and the RAM modules 1300 and 1301 may be mounted in a DIMM socket directly connected to the processor 1100 to communicate with the processor 1100 . For example, the nonvolatile memory modules 1200 and 1201 may be the nonvolatile memory modules described with reference to FIGS. 1 to 15 .

불휘발성 메모리 모듈들(1200, 1201) 및 램 모듈들(1300, 1301)은 동일한 인터페이스(1150)를 통해 프로세서(1100)와 통신할 수 있다. 예를 들어, 불휘발성 메모리 모듈들(1200, 1201) 및 램 모듈들(1300, 1301)은 DDR (Double Data Rate) 방식의 인터페이스(1150)를 통해 통신할 수 있다. 예시적으로, 프로세서(1100)는 램 모듈들(1300, 1301)을 컴퓨팅 시스템(1000)의 동작 메모리, 버퍼 메모리, 또는 캐시 메모리로서 사용할 수 있다.The nonvolatile memory modules 1200 and 1201 and the RAM modules 1300 and 1301 may communicate with the processor 1100 through the same interface 1150 . For example, the nonvolatile memory modules 1200 and 1201 and the RAM modules 1300 and 1301 may communicate through a double data rate (DDR) interface 1150 . For example, the processor 1100 may use the RAM modules 1300 and 1301 as an operating memory, a buffer memory, or a cache memory of the computing system 1000 .

칩셋(1400)은 프로세서(1100)와 전기적으로 연결되고, 프로세서(1100)의 제어에 따라 컴퓨팅 시스템(1000)의 하드웨어를 제어할 수 있다. 예를 들어, 칩셋(1400)은 주요 버스들을 통해 GPU(1500), 입출력 장치(1600), 및 스토리지 장치(1700) 각각과 연결되고, 주요 버스들에 대한 브릿지 역할을 수행할 수 있다. The chipset 1400 is electrically connected to the processor 1100 , and may control hardware of the computing system 1000 according to the control of the processor 1100 . For example, the chipset 1400 may be connected to each of the GPU 1500 , the input/output device 1600 , and the storage device 1700 through major buses, and may serve as a bridge for the major buses.

GPU(1500)는 컴퓨팅 시스템(1000)의 영상 데이터를 출력하기 위한 일련의 연산 동작을 수행할 수 있다. 예시적으로 GPU(1500)는 시스템-온-칩 형태로 프로세서(1100) 내에 실장될 수 있다.The GPU 1500 may perform a series of arithmetic operations for outputting image data of the computing system 1000 . For example, the GPU 1500 may be mounted in the processor 1100 in a system-on-chip form.

입출력 장치(1600)는 컴퓨팅 시스템(1000)으로 데이터 또는 명령어를 입력하거나 또는 외부로 데이터를 출력하는 다양한 장치들을 포함한다. 예를 들어, 입출력 장치(1600)는 키보드, 키패드, 버튼, 터치 패널, 터치 스크린, 터치 패드, 터치 볼, 카메라, 마이크, 자이로스코프 센서, 진동 센서, 압전 소자 등과 같은 사용자 입력 장치들 및 LCD (Liquid Crystal Display), OLED (Organic Light Emitting Diode) 표시 장치, AMOLED (Active Matrix OLED) 표시 장치, LED, 스피커, 모터 등과 같은 사용자 출력 장치들을 포함할 수 있다.The input/output device 1600 includes various devices that input data or commands to the computing system 1000 or output data to the outside. For example, the input/output device 1600 includes user input devices such as a keyboard, a keypad, a button, a touch panel, a touch screen, a touch pad, a touch ball, a camera, a microphone, a gyroscope sensor, a vibration sensor, a piezoelectric element, and an LCD ( Liquid Crystal Display), an organic light emitting diode (OLED) display device, an active matrix OLED (AMOLED) display device, and user output devices such as an LED, a speaker, and a motor may be included.

스토리지 장치(1700)는 컴퓨팅 시스템(1000)의 저장 매체로서 사용될 수 있다. 스토리지 장치(1600)는 하드 디스크 드라이브, SSD, 메모리 카드, 메모리 스틱 등과 같은 대용량 저장 매체들을 포함할 수 있다.The storage device 1700 may be used as a storage medium of the computing system 1000 . The storage device 1600 may include mass storage media such as a hard disk drive, an SSD, a memory card, a memory stick, and the like.

예시적으로, 불휘발성 메모리 모듈들(1200, 1201)은 프로세서(1100)에 의해 컴퓨팅 시스템(1000)의 저장 매체로서 사용될 수 있다. 불휘발성 메모리 모듈들(1200, 1201) 및 프로세서(1100) 사이의 인터페이스(1150)는 스토리지 장치(1700) 및 프로세서(1100) 사이의 인터페이스보다 고속 인터페이스일 수 있다. 즉, 프로세서(1100)가 불휘발성 메모리 모듈들(1200, 1201)을 저장 매체로서 사용함으로써 컴퓨팅 시스템의 성능이 향상된다. For example, the nonvolatile memory modules 1200 and 1201 may be used by the processor 1100 as a storage medium of the computing system 1000 . The interface 1150 between the nonvolatile memory modules 1200 and 1201 and the processor 1100 may be a higher-speed interface than the interface between the storage device 1700 and the processor 1100 . That is, since the processor 1100 uses the nonvolatile memory modules 1200 and 1201 as storage media, the performance of the computing system is improved.

불휘발성 메모리 모듈들(1200, 1201)은 프로세서(1100)와의 인터페이스 프로토콜에 최적화된 구조의 SRAM을 포함할 수 있다. 즉, 뱅크 그룹 단위로 또는 뱅크 단위로 구분되는 복수의 램을 통해서 프로세서(1100)는 불휘발성 메모리에 접근하기 위한 명령어, 어드레스, 데이터를 불휘발성 메모리 모듈들(1200, 1201)에 제공할 수 있을 것이다. The nonvolatile memory modules 1200 and 1201 may include SRAM having a structure optimized for an interface protocol with the processor 1100 . That is, the processor 1100 can provide the nonvolatile memory modules 1200 and 1201 with commands, addresses, and data for accessing the nonvolatile memory through a plurality of RAMs divided in units of bank groups or banks. will be.

도 17은 도 16의 불휘발성 메모리 모듈들 중 어느 하나를 예시적으로 보여주는 블록도이다. 예시적으로, 도 17은 LRDIMM (Load Reduced DIMM) 형태를 갖는 불휘발성 메모리 모듈(1200)을 보여준다. 예시적으로, 도 17에 도시된 불휘발성 메모리 모듈(1200)은 듀얼 인-라인 메모리 모듈(Dual In-line Memory Module; DIMM)의 형태를 갖고, DIMM 소켓에 장착되어 프로세서(1100)와 통신할 수 있다. 17 is a block diagram exemplarily showing any one of the nonvolatile memory modules of FIG. 16 . For example, FIG. 17 shows a nonvolatile memory module 1200 having a form of a load reduced DIMM (LRDIMM). Illustratively, the nonvolatile memory module 1200 shown in FIG. 17 has the form of a dual in-line memory module (DIMM) and is mounted in a DIMM socket to communicate with the processor 1100 . can

도 17을 참조하면, 불휘발성 메모리 모듈(1200)은 디바이스 컨트롤러(1210), 불휘발성 메모리 장치(1220), 버퍼(1230), 및 직렬 프레즌스 검출 칩(1240)(Serial Presence Detect chip; SPD)를 포함할 수 있다. 디바이스 컨트롤러(1210)는 램(1211)을 포함할 수 있다. 예시적으로, 불휘발성 메모리 장치(1220)는 복수의 불휘발성 메모리들(NVM)을 포함할 수 있다. 불휘발성 메모리 장치(1220)에 포함된 복수의 불휘발성 메모리들 각각은 별도의 칩, 별도의 패키지, 별도의 장치, 또는 별도의 모듈로 각각 구현될 수 있다. 또는 불휘발성 메모리 장치(1220)는 하나의 칩 또는 하나의 패키지로 구현될 수 있다.Referring to FIG. 17 , the nonvolatile memory module 1200 includes a device controller 1210 , a nonvolatile memory device 1220 , a buffer 1230 , and a serial presence detection chip 1240 (Serial Presence Detect chip; SPD). may include The device controller 1210 may include a RAM 1211 . For example, the nonvolatile memory device 1220 may include a plurality of nonvolatile memories NVM. Each of the plurality of nonvolatile memories included in the nonvolatile memory device 1220 may be implemented as a separate chip, a separate package, a separate device, or a separate module. Alternatively, the nonvolatile memory device 1220 may be implemented as one chip or one package.

예시적으로, 디바이스 컨트롤러(1210), 램(1211), 불휘발성 메모리 장치(1220), 및 버퍼(1230)는 도 2에서 설명된 디바이스 컨트롤러(210), 램(224), 버퍼(290), 및 복수의 불휘발성 메모리(280)와 동일하거나 또는 유사하게 동작할 수 있다. 불휘발성 메모리 모듈(1200)은 프로세서(1100)와의 인터페이스 프로토콜에 최적화된 구조의 SRAM을 포함할 수 있다. 즉, 뱅크 그룹 단위로 또는 뱅크 단위로 구분되는 램(1211)을 통해서 프로세서(1100)는 불휘발성 메모리 장치(1220)에 접근하기 위한 명령어, 어드레스, 데이터를 불휘발성 메모리 모듈들(1200, 1205)에 제공할 수 있을 것이다. Exemplarily, the device controller 1210 , the RAM 1211 , the nonvolatile memory device 1220 , and the buffer 1230 include the device controller 210 , the RAM 224 , the buffer 290 described in FIG. 2 , and the plurality of nonvolatile memories 280 may operate the same or similarly. The nonvolatile memory module 1200 may include an SRAM having a structure optimized for an interface protocol with the processor 1100 . That is, the processor 1100 transmits commands, addresses, and data for accessing the nonvolatile memory device 1220 to the nonvolatile memory modules 1200 and 1205 through the RAM 1211 divided by bank group units or bank units. will be able to provide

예시적으로, 디바이스 컨트롤러(1210)는 프로세서(1100)와 복수의 데이터 신호들(DQ) 및 복수의 데이터 스트로브 신호들(DQS)을 송수신할 수 있고, 별도의 신호 라인들을 통해 램 커맨드(CMD_R), 램 어드레스(ADDR_R), 및 클록(CK)을 수신할 수 있다. For example, the device controller 1210 may transmit/receive a plurality of data signals DQ and a plurality of data strobe signals DQS to/from the processor 1100 , and a RAM command CMD_R through separate signal lines. , a RAM address ADDR_R, and a clock CK.

SPD(1240)는 프로그램 가능 읽기 전용 기억 장치(EEPROM)일 수 있다. SPD(1240)는 불휘발성 메모리 모듈(1200)의 초기 정보 또는 장치 정보를 포함할 수 있다. 예시적으로, SPD(1240)는 불휘발성 메모리 모듈(1300)의 모듈 형태, 모듈 구성, 저장 용량, 모듈 종류, 실행 환경 등과 같은 초기 정보 또는 장치 정보를 포함할 수 있다. 불휘발성 메모리 모듈(1200)이 포함된 컴퓨팅 시스템이 부팅될 때, 컴퓨팅 시스템의 프로세서(1100)는 SPD(1240)를 읽고, 이를 기반으로 불휘발성 메모리 모듈(1200)을 인식할 수 있다. 프로세서(1100)는 SPD(1240)를 기반으로 불휘발성 메모리 모듈(1200)을 저장 매체로서 사용할 수 있다.The SPD 1240 may be a programmable read-only memory (EEPROM). The SPD 1240 may include initial information or device information of the nonvolatile memory module 1200 . For example, the SPD 1240 may include initial information or device information such as a module type, a module configuration, a storage capacity, a module type, and an execution environment of the nonvolatile memory module 1300 . When the computing system including the nonvolatile memory module 1200 is booted, the processor 1100 of the computing system may read the SPD 1240 and recognize the nonvolatile memory module 1200 based thereon. The processor 1100 may use the nonvolatile memory module 1200 as a storage medium based on the SPD 1240 .

예시적으로, SPD(1240)는 부가 통신 채널(Side-Band Communication Channel)을 통해 프로세서(1100)와 통신할 수 있다. 프로세서(1100)는 부가 통신 채널을 통해 SPD(1240)와 부가 신호(Side-Band Signal; SBS)을 주고 받을 수 있다. 예시적으로, SPD(1240)는 부가 통신 채널을 통해 디바이스 컨트롤러(1210)와 통신할 수 있다. 예시적으로, 부가 통신 채널은 I2C 통신에 기반된 채널일 수 있다. 예시적으로, SPD(1240), 디바이스 컨트롤러(1210), 및 프로세서(1100)는 I2C 통신을 기반으로 서로 통신하거나 또는 정보를 주고 받을 수 있다.For example, the SPD 1240 may communicate with the processor 1100 through a side-band communication channel. The processor 1100 may send and receive an additional signal (Side-Band Signal; SBS) with the SPD 1240 through an additional communication channel. For example, the SPD 1240 may communicate with the device controller 1210 through an additional communication channel. Exemplarily, the additional communication channel may be a channel based on I2C communication. For example, the SPD 1240 , the device controller 1210 , and the processor 1100 may communicate with each other or exchange information based on I2C communication.

도 18은 도 16의 불휘발성 메모리 모듈들 중 어느 하나를 예시적으로 보여주는 블록도이다. 예시적으로, 도 18은 RDIMM (Registered DIMM) 형태를 갖는 불휘발성 메모리 모듈(2200)의 블록도이다. 예시적으로, 도 18에 도시된 불휘발성 메모리 모듈(2200)은 듀얼 인-라인 메모리 모듈(Dual In-line Memory Module; DIMM)의 형태를 갖고, DIMM 소켓에 장착되어 프로세서(1100)와 통신할 수 있다. 18 is a block diagram exemplarily showing any one of the nonvolatile memory modules of FIG. 16 . For example, FIG. 18 is a block diagram of a nonvolatile memory module 2200 having a registered DIMM (RDIMM) form. Illustratively, the nonvolatile memory module 2200 shown in FIG. 18 has the form of a dual in-line memory module (DIMM) and is mounted in a DIMM socket to communicate with the processor 1100 . can

도 18을 참조하면, 불휘발성 메모리 모듈(2200)은 디바이스 컨트롤러(2210), 불휘발성 메모리 장치(2220), 버퍼(2230), 직렬 프레즌스 검출 칩(2240)(Serial Presence Detect chip; SPD), 및 데이터 버퍼 회로(2250)를 포함한다. 디바이스 컨트롤러(2210)는 램(2211)을 포함한다. 디바이스 컨트롤러(2210), 램(2211), 불휘발성 메모리 장치(2220), 및 SPD(2240)는 도 1 및 도 17에서 설명되었으므로, 이에 대한 상세한 설명은 생략하기로 한다.Referring to FIG. 18 , the nonvolatile memory module 2200 includes a device controller 2210 , a nonvolatile memory device 2220 , a buffer 2230 , a serial presence detection chip 2240 (Serial Presence Detect chip; SPD), and and a data buffer circuit 2250 . The device controller 2210 includes a RAM 2211 . Since the device controller 2210 , the RAM 2211 , the nonvolatile memory device 2220 , and the SPD 2240 have been described with reference to FIGS. 1 and 17 , a detailed description thereof will be omitted.

데이터 버퍼 회로(2250)는 프로세서(1100, 도 16 참조)로부터 데이터 신호(DQ) 및 데이터 스트로브 신호(DQS)를 통해 정보 또는 데이터를 수신하고, 수신된 정보 또는 데이터를 디바이스 컨트롤러(2250)로 전달할 수 있다. 또는 데이터 버퍼 회로(2250)는 디바이스 컨트롤러(2210)로부터 정보 또는 데이터를 수신하고, 수신된 정보 또는 데이터를 데이터 신호(DQ) 및 데이터 스트로브 신호(DQS)를 통해 프로세서(1100)로 전달할 수 있다.The data buffer circuit 2250 receives information or data from the processor 1100 (refer to FIG. 16 ) through the data signal DQ and the data strobe signal DQS, and transmits the received information or data to the device controller 2250 . can Alternatively, the data buffer circuit 2250 may receive information or data from the device controller 2210 and transmit the received information or data to the processor 1100 through the data signal DQ and the data strobe signal DQS.

예시적으로, 데이터 버퍼 회로(2250)는 복수의 데이터 버퍼들(Data Buffer)을 포함할 수 있다. 복수의 데이터 버퍼들(Data Buffer) 각각은 프로세서(1100)와 데이터 신호(DQ) 및 데이터 스트로브 신호(DQS)를 주고 받을 수 있다. 또는 복수의 데이터 버퍼들 각각은 디바이스 컨트롤러(2210)와 신호를 주고 받을 수 있다. 예시적으로, 복수의 데이터 버퍼들 각각은 디바이스 컨트롤러(2210)의 제어에 따라 동작할 수 있다.For example, the data buffer circuit 2250 may include a plurality of data buffers. Each of the plurality of data buffers may transmit and receive a data signal DQ and a data strobe signal DQS to and from the processor 1100 . Alternatively, each of the plurality of data buffers may transmit and receive a signal to and from the device controller 2210 . For example, each of the plurality of data buffers may operate under the control of the device controller 2210 .

예시적으로, 디바이스 컨트롤러(2210)는 프로세서(1100)와의 인터페이스 프로토콜에 최적화된 구조의 램(2211)을 포함할 수 있다. 즉, 뱅크 그룹 단위로 또는 뱅크 단위로 구분되는 램(2211)을 통해서 프로세서(1100)는 불휘발성 메모리(2230)에 접근하기 위한 명령어, 어드레스, 데이터를 불휘발성 메모리 모듈(2200)에 제공할 수 있을 것이다.For example, the device controller 2210 may include a RAM 2211 having a structure optimized for an interface protocol with the processor 1100 . That is, the processor 1100 may provide the nonvolatile memory module 2200 with a command, address, and data for accessing the nonvolatile memory 2230 through the RAM 2211 divided by bank group or bank unit. There will be.

도 19는 본 발명에 따른 불휘발성 메모리 모듈이 적용된 컴퓨팅 시스템의 다른 예를 예시적으로 보여주는 블록도이다. 간결한 설명을 위하여, 앞서 설명된 구성 요소들에 대한 상세한 설명은 생략된다. 도 19를 참조하면, 컴퓨팅 시스템(3000)은 프로세서(3100), 불휘발성 메모리 모듈(3200), 칩셋(3400), GPU(3500), 입출력 장치(3600), 및 스토리지 장치(3700)를 포함한다. 프로세서(3100), 칩셋(3400), GPU(3500), 입출력 장치(3600), 및 스토리지 장치(3700)는 도 16에서 설명된 것과 실질적으로 동일하므로 이에 대한 상세한 설명은 생략하기로 한다. 19 is a block diagram illustrating another example of a computing system to which a nonvolatile memory module according to the present invention is applied. For concise description, detailed descriptions of the above-described components are omitted. Referring to FIG. 19 , the computing system 3000 includes a processor 3100 , a nonvolatile memory module 3200 , a chipset 3400 , a GPU 3500 , an input/output device 3600 , and a storage device 3700 . . Since the processor 3100 , the chipset 3400 , the GPU 3500 , the input/output device 3600 , and the storage device 3700 are substantially the same as those described in FIG. 16 , a detailed description thereof will be omitted.

불휘발성 메모리 모듈(3200)은 프로세서(3100)와 직접적으로 연결될 수 있다. 예를 들어, 불휘발성 메모리 모듈(3200)은 듀얼 인-라인 메모리 모듈(Dual In-line Memory Module; DIMM)의 형태를 갖고, DIMM 소켓에 장착되어 프로세서(3100)와 통신할 수 있다.The nonvolatile memory module 3200 may be directly connected to the processor 3100 . For example, the nonvolatile memory module 3200 may have a form of a dual in-line memory module (DIMM) and may be mounted in a DIMM socket to communicate with the processor 3100 .

불휘발성 메모리 모듈(3200)은 제어 회로(3210), 불휘발성 메모리 장치(3220), 및 램 장치(3230)를 포함할 수 있다. 도 16 내지 도 18의 불휘발성 메모리 모듈들(1200, 2200)과 달리, 프로세서(3100)는 불휘발성 메모리 모듈(3200)의 불휘발성 메모리 장치(3220) 및 램(3230)을 각각 액세스할 수 있다. 좀 더 상세한 예로서, 제어 회로(3210)는 프로세서(3100)의 제어에 따라 수신된 데이터를 불휘발성 메모리 장치(3220)에 저장하거나 또는 램 장치(3230)에 저장할 수 있다. 또는 제어 회로(3210)는 프로세서(3100)의 제어에 따라 불휘발성 메모리 장치(3220)에 저장된 데이터를 프로세서(3100)로 전송하거나 또는 램(3230)에 저장된 데이터를 프로세서(3100)로 전송할 수 있다. 즉, 프로세서(3100)는 불휘발성 메모리 모듈(3200)에 포함된 불휘발성 메모리 장치(3220) 및 램(3230)을 각각 인식할 수 있다. 프로세서(3100)는 불휘발성 메모리 모듈(3200)의 불휘발성 메모리 장치(3220)에 데이터를 저장하거나 또는 저장된 데이터를 읽을 수 있다. 또는 프로세서(3100)는 램(3230)에 데이터를 저장하거나 또는 저장된 데이터를 읽을 수 있다.The nonvolatile memory module 3200 may include a control circuit 3210 , a nonvolatile memory device 3220 , and a RAM device 3230 . Unlike the nonvolatile memory modules 1200 and 2200 of FIGS. 16 to 18 , the processor 3100 may access the nonvolatile memory device 3220 and the RAM 3230 of the nonvolatile memory module 3200 , respectively. . As a more detailed example, the control circuit 3210 may store received data in the nonvolatile memory device 3220 or the RAM device 3230 under the control of the processor 3100 . Alternatively, the control circuit 3210 may transmit data stored in the nonvolatile memory device 3220 to the processor 3100 or data stored in the RAM 3230 to the processor 3100 under the control of the processor 3100 . . That is, the processor 3100 may recognize the nonvolatile memory device 3220 and the RAM 3230 included in the nonvolatile memory module 3200 , respectively. The processor 3100 may store data or read stored data in the nonvolatile memory device 3220 of the nonvolatile memory module 3200 . Alternatively, the processor 3100 may store data in the RAM 3230 or read the stored data.

예시적으로, 프로세서(3100)는 불휘발성 메모리 모듈(3200)의 불휘발성 메모리 장치(3220)를 컴퓨팅 시스템(3000)의 스토리지 매체로서 사용할 수 있고, 프로세서(3100)는 불휘발성 메모리 모듈(3200)의 램(3230)을 컴퓨팅 시스템(3000)의 메인 메모리로서 사용할 수 있다. 즉, 프로세서(3100)는 하나의 DIMM 소켓에 장착된 하나의 메모리 모듈에 포함된 불휘발성 메모리 장치 또는 램 장치를 각각 선택적으로 엑세스할 수 있다.For example, the processor 3100 may use the nonvolatile memory device 3220 of the nonvolatile memory module 3200 as a storage medium of the computing system 3000 , and the processor 3100 may include the nonvolatile memory module 3200 . of RAM 3230 may be used as the main memory of the computing system 3000 . That is, the processor 3100 may selectively access a nonvolatile memory device or a RAM device included in one memory module mounted in one DIMM socket, respectively.

예시적으로, 프로세서(3100)는 DDR(Double Data Rate) 인터페이스(3300)를 통해 불휘발성 메모리 모듈(3200)과 통신할 수 있다.For example, the processor 3100 may communicate with the nonvolatile memory module 3200 through a double data rate (DDR) interface 3300 .

도 20은 도 19의 불휘발성 메모리 모듈을 예시적으로 보여주는 블록도이다. 도 20을 참조하면, 불휘발성 메모리 모듈(3200)은 제어 회로(3210), 불휘발성 메모리 장치(3220), 및 램 장치(3220)를 포함한다. 예시적으로, 불휘발성 메모리 장치(3220)는 복수의 불휘발성 메모리들을 포함할 수 있고, 램 장치(3230)는 복수의 DRAM들을 포함할 수 있다. 예시적으로, 복수의 불휘발성 메모리들은 프로세서(3100)에 의해 컴퓨팅 시스템(3000)의 스토리지로 사용될 수 있다. 예시적으로, 복수의 불휘발성 메모리들(NVM) 각각은 EEPROM (Electrically Erasable and Programmable ROM), 낸드 플래시 메모리, 노어 플래시 메모리, PRAM (Phase-change RAM), ReRAM (Resistive RAM), FRAM (Ferroelectric RAM), STT-MRAM(Spin-Torque Magnetic RAM) 등과 같은 불휘발성 메모리 소자들을 포함할 수 있다. 20 is a block diagram exemplarily illustrating the nonvolatile memory module of FIG. 19 . Referring to FIG. 20 , the nonvolatile memory module 3200 includes a control circuit 3210 , a nonvolatile memory device 3220 , and a RAM device 3220 . For example, the nonvolatile memory device 3220 may include a plurality of nonvolatile memories, and the RAM device 3230 may include a plurality of DRAMs. For example, the plurality of nonvolatile memories may be used as storage of the computing system 3000 by the processor 3100 . Exemplarily, each of the plurality of nonvolatile memories (NVM) may include an electrically erasable and programmable ROM (EEPROM), a NAND flash memory, a NOR flash memory, a phase-change RAM (PRAM), a resistive RAM (ReRAM), and a ferroelectric RAM (FRAM). ) and nonvolatile memory devices such as STT-MRAM (Spin-Torque Magnetic RAM).

복수의 DRAM들은 프로세서(3100)에 의해 컴퓨팅 시스템(3000)의 메인 메모리로서 사용될 수 있다. 예시적으로, 램 장치(3230)는 DRAM, SRAM, SDRAM, PRAM, ReRAM, FRAM, MRAM 등과 같은 랜덤 엑세스 메모리 소자들을 포함할 수 있다.The plurality of DRAMs may be used by the processor 3100 as the main memory of the computing system 3000 . For example, the RAM device 3230 may include random access memory devices such as DRAM, SRAM, SDRAM, PRAM, ReRAM, FRAM, and MRAM.

제어 회로(3210)는 디바이스 컨트롤러(3211) 및 SPD(3212)를 포함한다. 디바이스 컨트롤러(3211)는 프로세서(3100)로부터 커맨드(CMD), 어드레스(ADDR), 및 클록(CK)을 수신할 수 있다. 디바이스 컨트롤러(3211)는 프로세서(3100)로부터 수신된 신호들에 응답하여, 데이터 신호(DQ) 및 데이터 스트로브 신호(DQS)를 통해 수신된 데이터를 불휘발성 메모리 장치(3220) 또는 램 장치(3230)에 선택적으로 저장할 수 있다. 또는 디바이스 컨트롤러(3211)는 프로세서(3100)로부터 수신된 신호들에 응답하여, 불휘발성 메모리 장치(3220) 또는 램 장치(3230)에 저장된 데이터를 데이터 신호(DQ) 및 데이터 스트로브 신호(DQS)를 통해 프로세서(3100)로 선택적으로 전송할 수 있다.The control circuit 3210 includes a device controller 3211 and an SPD 3212 . The device controller 3211 may receive a command CMD, an address ADDR, and a clock CK from the processor 3100 . In response to signals received from the processor 3100 , the device controller 3211 converts data received through the data signal DQ and the data strobe signal DQS to the nonvolatile memory device 3220 or the RAM device 3230 . can optionally be stored in Alternatively, the device controller 3211 transmits the data stored in the nonvolatile memory device 3220 or the RAM device 3230 to the data signal DQ and the data strobe signal DQS in response to signals received from the processor 3100 . It may be selectively transmitted to the processor 3100 through the

예시적으로, 프로세서(3100)는 커맨드(CMD), 어드레스(ADDR), 또는 별도의 신호 또는 별도의 정보를 통해 불휘발성 메모리 장치(3220) 또는 램 장치(3230)를 선택적으로 엑세스할 수 있다. 즉, 프로세서(3100)는 불휘발성 메모리 모듈(3200)에 포함된 불휘발성 메모리 장치(3220) 또는 램 장치(3230)를 선택적으로 엑세스할 수 있다. 예시적으로, 디바이스 컨트롤러(3211)는 도 1 내지 도 17에서 설명된 동작 방법에 따라 서브 데이터를 램(미도시)에 축적하고, 프로세서(3100)의 명령어에 따라 불휘발성 메모리 장치(3220)에 프로그램할 수 있다. For example, the processor 3100 may selectively access the nonvolatile memory device 3220 or the RAM device 3230 through a command CMD, an address ADDR, or a separate signal or separate information. That is, the processor 3100 may selectively access the nonvolatile memory device 3220 or the RAM device 3230 included in the nonvolatile memory module 3200 . For example, the device controller 3211 accumulates sub data in a RAM (not shown) according to the operation method described with reference to FIGS. 1 to 17 , and stores the sub data in the nonvolatile memory device 3220 according to a command of the processor 3100 . can be programmed.

도 21은 도 19의 불휘발성 메모리 모듈을 예시적으로 보여주는 블록도이다. 예시적으로, 도 21의 불휘발성 메모리 모듈(4200)은 듀얼 인-라인 메모리 모듈(Dual In-line Memory Module; DIMM) 형태를 갖고, DIMM 소켓에 장착되어 프로세서(3100)와 통신할 수 있다.21 is a block diagram exemplarily illustrating the nonvolatile memory module of FIG. 19 . For example, the nonvolatile memory module 4200 of FIG. 21 may have a dual in-line memory module (DIMM) form, and may be mounted in a DIMM socket to communicate with the processor 3100 .

도 19 및 도 21을 참조하면, 불휘발성 메모리 모듈(4200)은 제어 회로(4100), 불휘발성 메모리 장치(4220), 및 램(4230)을 포함한다. 제어 회로(4210)는 디바이스 컨트롤러(4211), SPD(4212), 및 데이터 버퍼 회로(4213)를 포함한다.19 and 21 , the nonvolatile memory module 4200 includes a control circuit 4100 , a nonvolatile memory device 4220 , and a RAM 4230 . The control circuit 4210 includes a device controller 4211 , an SPD 4212 , and a data buffer circuit 4213 .

디바이스 컨트롤러(4211)는 프로세서(3100)로부터 커맨드(CMD), 어드레스(ADDR), 및 클록(CK)을 수신한다. 디바이스 컨트롤러(4211)는 수신된 신호들에 응답하여 불휘발성 메모리 장치(4220) 또는 램 장치(4230)를 제어할 수 있다. 프로세서(3100)는 불휘발성 메모리 장치(4220) 또는 램 장치(4230) 각각을 선택적으로 엑세스할 수 있다. 디바이스 컨트롤러(4231)는 프로세서(3100)의 제어에 따라 불휘발성 메모리 장치(4220) 또는 램 장치(4230)를 제어할 수 있다.The device controller 4211 receives a command CMD, an address ADDR, and a clock CK from the processor 3100 . The device controller 4211 may control the nonvolatile memory device 4220 or the RAM device 4230 in response to the received signals. The processor 3100 may selectively access each of the nonvolatile memory device 4220 and the RAM device 4230 . The device controller 4231 may control the nonvolatile memory device 4220 or the RAM device 4230 under the control of the processor 3100 .

데이터 버퍼 회로(4213)는 프로세서(3100)로부터 데이터 신호(DQ) 및 데이터 스트로브 신호(DQS)를 수신하고, 수신된 신호들을 디바이스 컨트롤러(4211) 및 램 장치(4230)로 제공할 수 있다. 또는 데이터 버퍼 회로(4213)는 디바이스 컨트롤러(4211) 또는 램 장치(4230)로부터 수신된 데이터를, 데이터 신호(DQ) 및 데이터 스트로브 신호(DQS)를 통해, 프로세서(3100)로 제공할 수 있다.The data buffer circuit 4213 may receive the data signal DQ and the data strobe signal DQS from the processor 3100 , and provide the received signals to the device controller 4211 and the RAM device 4230 . Alternatively, the data buffer circuit 4213 may provide data received from the device controller 4211 or the RAM device 4230 to the processor 3100 through the data signal DQ and the data strobe signal DQS.

예시적으로, 프로세서(3100)가 불휘발성 메모리 장치(4220)에 데이터를 저장하는 경우, 데이터 신호(DQ) 및 데이터 스트로브 신호(DQS)를 통해 수신되는 데이터는 디바이스 컨트롤러(4211)로 제공되고, 디바이스 컨트롤러(4211)는 수신된 데이터를 가공하여 불휘발성 메모리 장치(4220)로 제공할 수 있다. 또는 프로세서(3100)가 불휘발성 메모리 장치(4220)에 저장된 데이터를 읽는 경우, 데이터 버퍼 회로(4213)는 디바이스 컨트롤러(4211)로부터 제공되는 데이터를, 데이터 신호(DQ) 및 데이터 스트로브 신호(DQS)를 통해, 프로세서(3100)로 제공할 수 있다. 또는 프로세서(3100)가 램 장치(4230)에 데이터를 저장하는 경우, 데이터 버퍼 회로(4213)로 수신된 데이터는 램 장치(4230)로 제공되고, 디바이스 컨트롤러(4231)는 수신된 커맨드(CMD), 어드레스(ADDR), 및 클록(CK)을 램 장치(4230)로 전달할 수 있다. 또는 프로세서(3100)가 램 장치(4230)에 저장된 데이터를 읽는 경우, 디바이스 컨트롤러(4231)는 수신된 커맨드(CMD), 어드레스(ADDR), 및 클록(CK)을 램 장치(4230)로 전달하고, 램 장치(4230)는 전달된 신호들에 응답하여, 데이터를 데이터 버퍼 회로(4213)로 제공하고, 데이터 버퍼 회로(4213)는, 데이터 신호(DQ) 및 데이터 스트로브 신호(DQS)를 통해, 데이터를 프로세서(3100)로 제공할 수 있다. 예시적으로, 디바이스 컨트롤러(3211)는 도 1에서 설명된 동작 방법에 따라 서브 데이터를 램(미도시)에 축적하고, 프로세서(3100)의 명령어에 따라 불휘발성 메모리 장치(4220)에 프로그램할 수 있다. .For example, when the processor 3100 stores data in the nonvolatile memory device 4220, data received through the data signal DQ and the data strobe signal DQS is provided to the device controller 4211, The device controller 4211 may process the received data and provide it to the nonvolatile memory device 4220 . Alternatively, when the processor 3100 reads data stored in the nonvolatile memory device 4220 , the data buffer circuit 4213 converts the data provided from the device controller 4211 into the data signal DQ and the data strobe signal DQS. Through , it may be provided to the processor 3100 . Alternatively, when the processor 3100 stores data in the RAM device 4230 , the data received by the data buffer circuit 4213 is provided to the RAM device 4230 , and the device controller 4231 receives the received command CMD. , the address ADDR, and the clock CK may be transmitted to the RAM device 4230 . Alternatively, when the processor 3100 reads data stored in the RAM device 4230 , the device controller 4231 transfers the received command CMD, the address ADDR, and the clock CK to the RAM device 4230 , , the RAM device 4230 provides data to the data buffer circuit 4213 in response to the transmitted signals, and the data buffer circuit 4213, through a data signal DQ and a data strobe signal DQS, The data may be provided to the processor 3100 . For example, the device controller 3211 may accumulate sub data in a RAM (not shown) according to the operation method described with reference to FIG. 1 , and may program the nonvolatile memory device 4220 according to a command of the processor 3100 . have. .

도 22는 도 19의 불휘발성 메모리 모듈을 예시적으로 보여주는 블록도이다. 도 19를 참조하면, 불휘발성 메모리 모듈(5200)은 제어 회로(5210), 불휘발성 메모리 장치(5220), 및 램 장치(5230)를 포함한다. 제어 회로(5210)는 디바이스 컨트롤러(5211) 및 SPD(5212)를 포함한다. 불휘발성 메모리 모듈(5200)은 도 21의 불휘발성 메모리 모듈(4200)과 유사하게 동작할 수 있다. 하지만, 불휘발성 메모리 모듈(5200)은 도 21의 불휘발성 메모리 모듈(4200)과 달리 데이터 버퍼 회로(4213)를 포함하지 않는다. 즉, 도 22의 불휘발성 메모리 모듈(5200)은 프로세서(3100)로부터 데이터 신호(DQ) 및 데이터 스트로브 신호(DQS)를 통해 수신된 데이터를 디바이스 컨트롤러(5211) 또는 램 장치(5230)로 직접 제공할 수 있다. 또는, 도 22의 불휘발성 메모리 모듈(5200)의 디바이스 컨트롤러(5211)로부터의 데이터 또는 램 장치(5230)로부터의 데이터는, 데이터 신호(DQ) 및 데이터 스트로브 신호(DQS)를 통해, 프로세서(3100)로 직접 제공할 수 있다.22 is a block diagram exemplarily illustrating the nonvolatile memory module of FIG. 19 . Referring to FIG. 19 , the nonvolatile memory module 5200 includes a control circuit 5210 , a nonvolatile memory device 5220 , and a RAM device 5230 . The control circuit 5210 includes a device controller 5211 and an SPD 5212 . The nonvolatile memory module 5200 may operate similarly to the nonvolatile memory module 4200 of FIG. 21 . However, the nonvolatile memory module 5200 does not include the data buffer circuit 4213 unlike the nonvolatile memory module 4200 of FIG. 21 . That is, the nonvolatile memory module 5200 of FIG. 22 directly provides data received from the processor 3100 through the data signal DQ and the data strobe signal DQS to the device controller 5211 or the RAM device 5230 . can do. Alternatively, data from the device controller 5211 of the nonvolatile memory module 5200 of FIG. 22 or data from the RAM device 5230 is transmitted to the processor 3100 through the data signal DQ and the data strobe signal DQS. ) can be provided directly.

예시적으로, 도 21의 불휘발성 메모리 모듈(4200)은 LRDIMM(Load Redued DIMM) 형태의 메모리 모듈이고, 도 22의 불휘발성 메모리 모듈(5200)은 RDIMM(Registered DIMM) 형태의 메모리 모듈일 수 있다.For example, the nonvolatile memory module 4200 of FIG. 21 may be a load redued DIMM (LRDIMM) type memory module, and the nonvolatile memory module 5200 of FIG. 22 may be a registered DIMM (RDIMM) type memory module. .

예시적으로, 디바이스 컨트롤러(5211)는 도 1 내지 도 15에서 설명된 바와 같은 구성 및 배치를 갖는 램을 포함할 것이다.Illustratively, the device controller 5211 may include a RAM having the configuration and arrangement as described in FIGS. 1 to 15 .

도 23은 본 발명의 실시 예에 따른 불휘발성 메모리 시스템이 적용된 서버 시스템을 예시적으로 보여주는 도면이다. 도 23을 참조하면, 서버 시스템(6000)은 복수의 서버 랙들(6100)을 포함할 수 있다. 복수의 서버 랙들(6100) 각각은 복수의 불휘발성 메모리 모듈들(6200)을 포함할 수 있다. 복수의 불휘발성 메모리 모듈들(6200)은 복수의 서버 랙들(6100) 각각에 포함된 프로세서들과 직접적으로 연결될 수 있다. 예를 들어, 복수의 불휘발성 메모리 모듈들(6200)은 듀얼 인-라인 메모리 모듈의 형태를 갖고, 프로세서와 전기적으로 연결된 DIMM 소켓에 장착되어 프로세서와 서로 통신할 수 있다. 예시적으로, 복수의 불휘발성 메모리 모듈들(6200)은 서버 시스템(6000)의 스토리지로서 사용될 수 있다. 23 is a diagram exemplarily illustrating a server system to which a nonvolatile memory system according to an embodiment of the present invention is applied. Referring to FIG. 23 , the server system 6000 may include a plurality of server racks 6100 . Each of the plurality of server racks 6100 may include a plurality of nonvolatile memory modules 6200 . The plurality of nonvolatile memory modules 6200 may be directly connected to the processors included in each of the plurality of server racks 6100 . For example, the plurality of nonvolatile memory modules 6200 may have the form of a dual in-line memory module and may be mounted in a DIMM socket electrically connected to the processor to communicate with the processor. For example, the plurality of nonvolatile memory modules 6200 may be used as storage of the server system 6000 .

본 발명에 따른 불휘발성 메모리 그리고/또는 디바이스 컨트롤러 등은 다양한 형태들의 패키지를 이용하여 실장될 수 있다. 예를 들면, 본 발명에 따른 불휘발성 메모리 그리고/또는 디바이스 컨트롤러는 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP), 등과 같은 패키지들을 이용하여 실장 될 수 있다.The nonvolatile memory and/or the device controller according to the present invention may be mounted using various types of packages. For example, the nonvolatile memory and/or device controller according to the present invention is a PoP (Package on Package), Ball grid arrays (BGAs), Chip scale packages (CSPs), Plastic Leaded Chip Carrier (PLCC), Plastic Dual In- Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package( WSP), etc. can be mounted using packages such as

본 발명의 범위 또는 기술적 사상을 벗어나지 않고 본 발명의 구조가 다양하게 수정되거나 변경될 수 있음은 이 분야에 숙련된 자들에게 자명하다. 상술한 내용을 고려하여 볼 때, 만약 본 발명의 수정 및 변경이 아래의 청구항들 및 동등물의 범주 내에 속한다면, 본 발명이 이 발명의 변경 및 수정을 포함하는 것으로 여겨진다.It will be apparent to those skilled in the art that the structure of the present invention can be variously modified or changed without departing from the scope or spirit of the present invention. In view of the foregoing, it is contemplated that the present invention includes such modifications and variations of the present invention provided that they fall within the scope of the following claims and their equivalents.

10: 스토리지 시스템
100: 호스트
200: 데이터 스토리지
210: 디바이스 컨트롤러
220: 프로세서
230: 물리 계층
232: 램 컨트롤러
234: 램
240: DIMM 컨트롤러
242: 에러 검출기
244: 스트림 패킷 생성기
246: 상태 정보 생성기
248: ECC 인코더
250: 불휘발성 메모리 인터페이스
260: ROM
270: 버퍼 매니저
280: 불휘발성 메모리
290: 버퍼
10: storage system
100: host
200: data storage
210: device controller
220: processor
230: physical layer
232: ram controller
234: ram
240: DIMM controller
242: error detector
244: Stream Packet Generator
246: state information generator
248: ECC encoder
250: non-volatile memory interface
260: ROM
270: buffer manager
280: non-volatile memory
290: buffer

Claims (10)

불휘발성 메모리들; 그리고
호스트로부터 데이터 및 에러 정정 코드를 수신하고, 상기 에러 정정 코드를 이용하여 상기 데이터의 에러를 검출하고, 상기 데이터의 에러를 정정하는 디바이스 컨트롤러를 포함하되,
상기 디바이스 컨트롤러는:
램, 및 상기 호스트로부터 제공되는 램 커맨드 및 램 어드레스에 따라 상기 램을 제어하는 램 컨트롤러를 포함하는 물리 계층;
상기 호스트로부터 제공되어 상기 램에 저장되는 스토리지 커맨드 및 스토리지 어드레스에 기초하여, 상기 데이터가 상기 램에 임시로 저장된 후 상기 스토리지 어드레스에 대응하는 상기 불휘발성 메모리들의 위치에 저장되도록, 상기 물리 계층 및 상기 불휘발성 메모리들을 제어하는 DIMM 컨트롤러; 및
에러 정정 모듈을 실행하여 상기 데이터의 에러를 정정하는 프로세서를 포함하고,
상기 DIMM 컨트롤러는 상기 데이터의 에러를 검출하는 에러 검출 회로를 포함하는 불휘발성 메모리 모듈.
non-volatile memories; and
a device controller receiving data and an error correction code from a host, detecting an error in the data using the error correction code, and correcting an error in the data;
The device controller is:
a physical layer including a RAM and a RAM controller configured to control the RAM according to a RAM command and a RAM address provided from the host;
based on a storage command and a storage address provided from the host and stored in the RAM, the data is temporarily stored in the RAM and then stored in locations of the nonvolatile memories corresponding to the storage address; a DIMM controller for controlling nonvolatile memories; and
A processor for correcting an error in the data by executing an error correction module;
and the DIMM controller includes an error detection circuit configured to detect an error in the data.
제 1 항에 있어서,
상기 호스트와 상기 불휘발성 메모리 모듈은 듀얼 데이터 레이트(dual data rate; DDR) 인터페이스를 통하여 통신하는 불휘발성 메모리 모듈.
The method of claim 1,
The nonvolatile memory module communicates with the host and the nonvolatile memory module through a dual data rate (DDR) interface.
제 1 항에 있어서,
상기 불휘발성 메모리 모듈은 듀얼 인-라인 메모리 모듈(Dual In-line Memory Module; DIMM)인 불휘발성 메모리 모듈.
The method of claim 1,
The nonvolatile memory module is a dual in-line memory module (DIMM).
삭제delete 삭제delete 제 1 항에 있어서,
상기 DIMM 컨트롤러는:
상기 데이터를 스트림 패킷의 형태로 가공하여 상기 불휘발성 메모리로 전송하는 스트림 패킷 생성기; 그리고
상기 데이터의 에러가 정정되지 않은 경우, 상기 정정되지 않은 데이터에 관한 상태 정보를 업데이트하는 상태 정보 생성기를 더 포함하는 불휘발성 메모리 모듈.
The method of claim 1,
The DIMM controller is:
a stream packet generator which processes the data in the form of a stream packet and transmits it to the nonvolatile memory; and
and a state information generator configured to update state information regarding the uncorrected data when the error of the data is not corrected.
제 6 항에 있어서,
상기 DIMM 컨트롤러는 상기 상태 정보를 상기 램으로 전송하는 불휘발성 메모리 모듈.
7. The method of claim 6,
The DIMM controller transmits the status information to the RAM.
제 7 항에 있어서,
상기 상태 정보는 상기 호스트에 의해 액세스 되어, 상기 호스트가 상기 데이터를 재전송하는데 참조되는 불휘발성 메모리 모듈.
8. The method of claim 7,
The state information is accessed by the host, and the host is referenced to retransmit the data.
제 7 항에 있어서,
상기 램은:
상기 스토리지 커맨드 및 상기 스토리지 어드레스를 저장하는 제 1 영역;
상기 데이터를 저장하는 제 2 영역; 및
상기 상태 정보를 저장하는 제 3 영역을 포함하는 불휘발성 메모리 모듈.
8. The method of claim 7,
The ram is:
a first area for storing the storage command and the storage address;
a second area for storing the data; and
and a third area storing the state information.
삭제delete
KR1020150080745A 2015-06-08 2015-06-08 Nonvolatile memory module and operating method thereof KR102290988B1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020150080745A KR102290988B1 (en) 2015-06-08 2015-06-08 Nonvolatile memory module and operating method thereof
US15/096,877 US20160357462A1 (en) 2015-06-08 2016-04-12 Nonvolatile Memory Modules and Data Management Methods Thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150080745A KR102290988B1 (en) 2015-06-08 2015-06-08 Nonvolatile memory module and operating method thereof

Publications (2)

Publication Number Publication Date
KR20160144562A KR20160144562A (en) 2016-12-19
KR102290988B1 true KR102290988B1 (en) 2021-08-19

Family

ID=57735334

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150080745A KR102290988B1 (en) 2015-06-08 2015-06-08 Nonvolatile memory module and operating method thereof

Country Status (1)

Country Link
KR (1) KR102290988B1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102538679B1 (en) * 2018-04-06 2023-06-02 삼성전자주식회사 Memory system and operating method of memory system

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007518166A (en) * 2003-12-31 2007-07-05 サンディスク コーポレイション Flash memory system startup behavior
JP2011154676A (en) * 2009-12-28 2011-08-11 Panasonic Corp Semiconductor recording device, control method of semiconductor recording device, and semiconductor recording system

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100958767B1 (en) * 2001-06-11 2010-05-18 가부시키가이샤 히타치세이사쿠쇼 Memory module
US8874831B2 (en) * 2007-06-01 2014-10-28 Netlist, Inc. Flash-DRAM hybrid memory module

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007518166A (en) * 2003-12-31 2007-07-05 サンディスク コーポレイション Flash memory system startup behavior
JP2011154676A (en) * 2009-12-28 2011-08-11 Panasonic Corp Semiconductor recording device, control method of semiconductor recording device, and semiconductor recording system

Also Published As

Publication number Publication date
KR20160144562A (en) 2016-12-19

Similar Documents

Publication Publication Date Title
US20160357462A1 (en) Nonvolatile Memory Modules and Data Management Methods Thereof
US10223011B2 (en) Storage device including nonvolatile memory device and controller and operating method of the storage device
US10649894B2 (en) Nonvolatile memory module and operation method thereof
KR102473209B1 (en) Storage device and operating method of storage device
KR102403253B1 (en) Storage device including nonvolatile memory device
KR102294848B1 (en) Storage device including nonvolatile memory device and controller
KR102377469B1 (en) Nonvolatile memory device, storage device including nonvolatile memory device and operating method of nonvolatile memory device
KR102321745B1 (en) Dynamic random access memory device, operation method of the same, and memory module including the same
US11449417B2 (en) Memory controller performing host-aware performance booster mode and method of operating the same
KR20160144560A (en) Nonvolatile memory module, storage device, and electronic device generating error information accessed by host
US11017865B2 (en) Memory controller determining optimal read voltage and operating method thereof
CN111445939B (en) Memory device and method of operating the same
US20200357475A1 (en) Storage device and operating method thereof
KR102513903B1 (en) Nonvolatile memory module and memory system
KR102374637B1 (en) Computing system and memory management method therfof
KR102469958B1 (en) Nonvolatile memory device configured to be accessed without block address and method of operating the same
US20160154733A1 (en) Method of operating solid state drive
KR102290988B1 (en) Nonvolatile memory module and operating method thereof
KR20240033792A (en) A storage controller generating a read level for soft decision decoding based on read information and decoding information, a storage device including thereof, and an operating method thereof
JP2023024369A (en) memory device
KR20220033368A (en) Memory system and operating method thereof
KR20160144574A (en) Nonvolatile memory module and data write method thereof
KR102475547B1 (en) Nonvolatile memory device and operation method thereof
KR20210054396A (en) Storage device and operating method thereof
KR102538246B1 (en) Nonvolatile memory moduel

Legal Events

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