KR102545465B1 - Storage controller and storage device comprising the same - Google Patents

Storage controller and storage device comprising the same Download PDF

Info

Publication number
KR102545465B1
KR102545465B1 KR1020220007670A KR20220007670A KR102545465B1 KR 102545465 B1 KR102545465 B1 KR 102545465B1 KR 1020220007670 A KR1020220007670 A KR 1020220007670A KR 20220007670 A KR20220007670 A KR 20220007670A KR 102545465 B1 KR102545465 B1 KR 102545465B1
Authority
KR
South Korea
Prior art keywords
data
memory cell
program
memory
invalid
Prior art date
Application number
KR1020220007670A
Other languages
Korean (ko)
Other versions
KR20230072365A (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 US17/847,948 priority Critical patent/US12014772B2/en
Priority to EP22192775.9A priority patent/EP4184332A1/en
Priority to CN202211427871.2A priority patent/CN116136829A/en
Publication of KR20230072365A publication Critical patent/KR20230072365A/en
Application granted granted Critical
Publication of KR102545465B1 publication Critical patent/KR102545465B1/en
Priority to US18/662,681 priority patent/US20240296884A1/en

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/08Address circuits; Decoders; Word-line control circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Read Only Memory (AREA)

Abstract

스토리지 컨트롤러 및 이를 포함하는 스토리지 장치가 제공된다. 몇몇 실시예들에 따른 스토리지 컨트롤러는 제1 메모리 셀에 N(N은 1보다 큰 자연수)회 프로그램을 수행하여 제1 데이터를 기록하는 스토리지 컨트롤러로서, 제1 데이터에 대한 제1 논리 어드레스와, 제1 데이터에 대한 제1 물리 어드레스 사이의 매핑 정보를 저장하는 매핑 테이블을 이용하여 어드레스 매핑을 수행하는 플래시 변환 계층, 제1 메모리 셀에 N번째 프로그램이 수행되기 전에, 제1 데이터가 유효하지 않은 데이터(Invalid data)인지 확인하는 쓰기 증폭(WAF: Write Amplification) 관리기, 및 제1 데이터가 유효하지 않은 데이터인 경우, 제1 메모리 셀에 대해 N번째 프로그램을 수행하지 않는 중앙 처리 장치를 포함한다A storage controller and a storage device including the same are provided. A storage controller according to some embodiments is a storage controller that writes first data by performing a program on a first memory cell N times (where N is a natural number greater than 1), and includes a first logical address for the first data; A flash conversion layer that performs address mapping using a mapping table storing mapping information between first physical addresses for 1 data, data where the first data is invalid before the Nth program is performed on the first memory cell a write amplification (WAF) manager that checks whether data is invalid, and a central processing unit that does not perform an N-th program for the first memory cell when the first data is invalid data

Figure R1020220007670
Figure R1020220007670

Description

스토리지 컨트롤러 및 이를 포함하는 스토리지 장치{Storage controller and storage device comprising the same}Storage controller and storage device including the same

본 발명은 스토리지 컨트롤러 및 이를 포함하는 스토리지 장치에 관한 것이다.The present invention relates to a storage controller and a storage device including the same.

낸드 플래시 메모리(NAND Flash memory)를 포함하는 스토리지 장치는 초소형 전자기기부터 미디어 서버에 이르기까지 현대의 다양한 시스템에서 활용될 수 있다. 이때, 낸드 플래시를 포함하는 스토리지 장치에서, 쓰기 증폭(WAF: Write Amplification)은 가비지 컬렉션(Garbage collection)에 의해 발생되는 것으로 스토리지 장치의 성능을 불규칙하게 만드는 원인이 될 수 있다.A storage device including a NAND flash memory can be used in a variety of modern systems, from micro-electronic devices to media servers. At this time, in a storage device including a NAND flash, write amplification (WAF) is generated by garbage collection and may cause irregular performance of the storage device.

또한, 스토리지 장치와 통신하는 호스트는, 스토리지 장치의 특정 영역에 존재하는 데이터가 더 이상 사용되지 않음을 알리는 트림(Trim) 명령을 스토리지 장치에 전송할 수 있다. 스토리지 장치는 트림 명령을 수신받고, 해당 데이터에 대한 플러시(flush) 동작을 수행할 수 있다.Also, a host communicating with the storage device may transmit a trim command notifying that data existing in a specific area of the storage device is no longer used, to the storage device. The storage device may receive a trim command and perform a flush operation on corresponding data.

즉, 스토리지 장치의 성능을 향상시키기 위해, 쓰기 증폭 특성을 개선시키고, 플러시 동작 속도를 향상시킬 필요성이 대두된다.That is, in order to improve the performance of the storage device, there is a need to improve write amplification characteristics and improve flush operation speed.

본 발명이 해결하고자 하는 기술적 과제는 쓰기 증폭(WAF: Write Amplification) 특성이 개선되고, 플러쉬(flush) 동작 속도가 향상된 스토리지 컨트롤러를 제공하는 것이다.A technical problem to be solved by the present invention is to provide a storage controller with improved write amplification (WAF) characteristics and improved flush operation speed.

본 발명이 해결하고자 하는 다른 기술적 과제는 쓰기 증폭 특성이 개선되고, 플러쉬 동작 속도가 향상된 스토리지 컨트롤러를 포함하는 스토리지 장치를 제공하는 것이다.Another technical problem to be solved by the present invention is to provide a storage device including a storage controller with improved write amplification characteristics and improved flush operation speed.

본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.The technical problems of the present invention are not limited to the technical problems mentioned above, and other technical problems not mentioned will be clearly understood by those skilled in the art from the following description.

상기 기술적 과제를 달성하기 위한 본 발명의 몇몇 실시예에 따른 스토리지 컨트롤러는, 제1 메모리 셀에 N(N은 1보다 큰 자연수)회 프로그램을 수행하여 제1 데이터를 기록하는 스토리지 컨트롤러로서, 제1 데이터에 대한 제1 논리 어드레스와, 제1 데이터에 대한 제1 물리 어드레스 사이의 매핑 정보를 저장하는 매핑 테이블을 이용하여 어드레스 매핑을 수행하는 플래시 변환 계층, 제1 메모리 셀에 N번째 프로그램이 수행되기 전에, 제1 데이터가 유효하지 않은 데이터(Invalid data)인지 확인하는 쓰기 증폭(WAF: Write Amplification) 관리기, 및 제1 데이터가 유효하지 않은 데이터인 경우, 제1 메모리 셀에 대해 N번째 프로그램을 수행하지 않는 중앙 처리 장치를 포함한다.In order to achieve the above technical problem, a storage controller according to some embodiments of the present invention is a storage controller that writes first data by performing a program N (where N is a natural number greater than 1) times in a first memory cell, A flash conversion layer that performs address mapping using a mapping table storing mapping information between a first logical address for data and a first physical address for first data, and an N-th program is performed in the first memory cell Before, a Write Amplification (WAF) manager checks whether the first data is invalid data, and if the first data is invalid data, performs an N-th program on the first memory cell. It includes a central processing unit that does not.

상기 기술적 과제를 달성하기 위한 본 발명의 몇몇 실시예에 따른 스토리지 장치는, 제1 메모리 셀에 N(N은 1보다 큰 자연수)회 프로그램을 수행하여 제1 데이터를 기록하는 스토리지 장치로서, 제1 메모리 셀을 포함하는 비휘발성 메모리 장치, 및 제1 메모리 셀에 제1 데이터를 기록하는 스토리지 컨트롤러를 포함하되, 스토리지 컨트롤러는, 제1 데이터에 대한 제1 논리 어드레스와, 제1 데이터에 대한 제1 물리 어드레스 사이의 매핑 정보를 저장하는 매핑 테이블을 이용하여 어드레스 매핑을 수행하는 플래시 변환 계층, 제1 메모리 셀에 N번째 프로그램이 수행되기 전에, 제1 데이터가 유효하지 않은 데이터(Invalid data)인지 확인하는 쓰기 증폭(WAF: Write Amplification) 관리기, 및 제1 데이터가 유효하지 않은 데이터인 경우, 제1 메모리 셀에 대해 N번째 프로그램을 수행하지 않는 중앙 처리 장치를 포함한다.In order to achieve the above technical problem, a storage device according to some embodiments of the present invention is a storage device that writes first data by performing a program N times (where N is a natural number greater than 1) in a first memory cell. A non-volatile memory device including a memory cell, and a storage controller configured to write first data to a first memory cell, wherein the storage controller includes a first logical address for the first data and a first logical address for the first data. A flash translation layer that performs address mapping using a mapping table storing mapping information between physical addresses, and checking whether the first data is invalid data before the Nth program is performed on the first memory cell. and a write amplification (WAF) manager that does not perform an N-th program on the first memory cell when the first data is invalid.

상기 기술적 과제를 달성하기 위한 본 발명의 몇몇 실시예에 따른 스토리지 장치는, 제1 블록과 제2 블록에 대해, N(N은 1보다 큰 자연수)회 프로그램을 수행하여 제1 블록에 제1 데이터를 기록하고, 제2 블록에 제2 데이터를 기록하는 스토리지 장치로서, 제1 블록과 제2 블록을 포함하는 비휘발성 메모리 장치, 및 제1 블록에 제1 데이터를 기록하고, 제2 블록에 제2 데이터를 기록하는 스토리지 컨트롤러를 포함하되, 스토리지 컨트롤러는, 제1 블록과 제2 블록에 N번째 프로그램을 수행하기 전, 제1 블록 또는 제2 블록에 오픈 메모리 셀이 존재하는지 확인하는 오픈 메모리 셀 검출기와, 제1 블록 또는 제2 블록에 오픈 메모리 셀이 존재하는 경우, 제1 블록 또는 제2 블록 내의 N-1번 프로그램된 메모리 셀을 다른 블록으로 이동시켜 압축시키는 메모리 셀 압축기를 포함하는 쓰기 증폭 관리기, 및 메모리 셀 압축기를 통해, 메모리 셀이 압축된 이후 N번째 프로그램을 제1 블록과 제2 블록에 수행하는 중앙 처리 장치를 포함한다.In order to achieve the above technical problem, a storage device according to some embodiments of the present invention performs a program N (N is a natural number greater than 1) times on a first block and a second block to store first data in the first block. , and write second data to a second block, a non-volatile memory device including a first block and a second block, and first data to be written to the first block, and second data to the second block 2 A storage controller for recording data, wherein the storage controller checks whether an open memory cell exists in the first block or the second block before performing an Nth program on the first block and the second block. Write including a detector and a memory cell compressor for moving memory cells programmed N-1 times in a first block or a second block to another block when an open memory cell exists in the first block or the second block and compressing the memory cell and a central processing unit that executes an Nth program on a first block and a second block after the memory cell is compressed through an amplification manager and a memory cell compressor.

기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.Details of other embodiments are included in the detailed description and drawings.

도 1은 몇몇 실시예들에 따른 스토리지 시스템을 설명하기 위한 블록도이다.
도 2는 도 1의 비휘발성 메모리 장치를 설명하기 위한 예시적인 블록도이다.
도 3은 도 2의 블록을 설명하기 위한 예시적인 회로도이다.
도 4는 몇몇 실시예들에 따른 스토리지 장치의 프로그램 동작을 설명하기 위한 그래프들이다.
도 5는 몇몇 실시예들에 따른 쓰기 증폭 관리기를 설명하기 위한 블록도이다.
도 6은 몇몇 실시예들에 따른 도 5의 쓰기 증폭 관리기의 동작을 설명하기 위한 흐름도이다.
도 7은 몇몇 실시예들에 따른 다른 쓰기 증폭 관리기를 설명하기 위한 블록도이다.
도 8은 몇몇 실시예들에 따른 도 7의 다른 쓰기 증폭 관리기의 동작을 설명하기 위한 흐름도이다.
도 9는 몇몇 실시예들에 따른 다른 쓰기 증폭 관리기를 설명하기 위한 블록도이다.
도 10은 몇몇 실시예들에 따른 도 9의 다른 쓰기 증폭 관리기의 동작을 설명하기 위한 흐름도이다.
도 11 내지 도 13은 도 5 내지 도 10을 통해 설명된 몇몇 실시예들에 따른 스토리지 컨트롤러의 동작을 설명하기 위한 도면이다.
도 14는 몇몇 실시예들에 따른 다른 쓰기 증폭 관리기를 설명하기 위한 블록도이다.
도 15는 몇몇 실시예들에 따른 도 14의 다른 쓰기 증폭 관리기의 동작을 설명하기 위한 흐름도이다.
도 16 내지 도 17은 도 14 내지 도 15를 통해 설명된 몇몇 실시예들에 따른 쓰기 증폭 관리기의 동작을 설명하기 위한 도면이다.
도 18은 몇몇 실시예들에 따른 스토리지 장치가 적용된 스토리지 시스템을 설명하기 위한 예시적인 블록도이다.
도 19는 몇몇 실시예들에 따른 스토리지 장치가 적용된 데이터 센터를 설명하기 위한 예시적인 블록도이다.
1 is a block diagram illustrating a storage system according to some embodiments.
FIG. 2 is an exemplary block diagram illustrating the nonvolatile memory device of FIG. 1 .
FIG. 3 is an exemplary circuit diagram for explaining the blocks of FIG. 2 .
4 are graphs for describing a program operation of a storage device according to some embodiments.
5 is a block diagram illustrating a write amplification manager according to some embodiments.
6 is a flowchart illustrating an operation of the write amplification manager of FIG. 5 according to some embodiments.
7 is a block diagram illustrating another write amplification manager according to some embodiments.
8 is a flowchart illustrating an operation of another write amplification manager of FIG. 7 according to some embodiments.
9 is a block diagram illustrating another write amplification manager according to some embodiments.
10 is a flowchart illustrating an operation of another write amplification manager of FIG. 9 according to some embodiments.
11 to 13 are diagrams for explaining operations of the storage controller according to the exemplary embodiments described above with reference to FIGS. 5 to 10 .
14 is a block diagram illustrating another write amplification manager according to some embodiments.
15 is a flowchart illustrating an operation of another write amplification manager of FIG. 14 according to some embodiments.
16 and 17 are diagrams for explaining operations of the write amplification manager according to some embodiments described with reference to FIGS. 14 and 15 .
18 is an exemplary block diagram illustrating a storage system to which a storage device according to some embodiments is applied.
19 is an exemplary block diagram illustrating a data center to which a storage device according to some embodiments is applied.

도 1은 몇몇 실시예들에 따른 스토리지 시스템을 설명하기 위한 블록도이다.1 is a block diagram illustrating a storage system according to some embodiments.

도 1을 참조하면, 스토리지 시스템(10)은 호스트(100) 및 스토리지 장치(200)를 포함할 수 있다. 또한, 스토리지 장치(200)는 스토리지 컨트롤러(210) 및 비휘발성 메모리 장치(220)를 포함할 수 있다. 또한, 본 발명의 예시적인 실시예에 따라, 호스트(100)는 호스트 컨트롤러(110) 및 호스트 메모리(120)를 포함할 수 있다. 호스트 메모리(120)는 스토리지 장치(200)로 전송될 데이터, 혹은 스토리지 장치(200)로부터 전송된 데이터를 임시로 저장하기 위한 버퍼 메모리로서 기능할 수 있다.Referring to FIG. 1 , a storage system 10 may include a host 100 and a storage device 200 . Also, the storage device 200 may include a storage controller 210 and a non-volatile memory device 220 . Also, according to an exemplary embodiment of the present invention, the host 100 may include a host controller 110 and a host memory 120 . The host memory 120 may function as a buffer memory for temporarily storing data to be transmitted to the storage device 200 or data transmitted from the storage device 200 .

스토리지 장치(200)는 호스트(100)로부터의 요청에 따라 데이터를 저장하기 위한 저장 매체들을 포함할 수 있다. 일 예로서, 스토리지 장치(200)는 SSD(Solid State Drive)를 포함할 수 있다. 스토리지 장치(200)가 예를 들어, SSD인 경우, 스토리지 장치(200)는 NVMe(non-volatile memory express) 표준을 따르는 장치일 수 있다. 호스트(100)와 스토리지 장치(200)는 각각 채용된 표준 프로토콜에 따른 패킷을 생성하고 이를 전송할 수 있다.The storage device 200 may include storage media for storing data according to a request from the host 100 . As an example, the storage device 200 may include a solid state drive (SSD). When the storage device 200 is, for example, an SSD, the storage device 200 may be a device conforming to the non-volatile memory express (NVMe) standard. The host 100 and the storage device 200 may respectively generate and transmit packets according to adopted standard protocols.

스토리지 장치(200)의 비휘발성 메모리 장치(220)가 플래시 메모리를 포함할 때, 상기 플래시 메모리는 2D NAND 메모리 어레이나 3D(또는 수직형, Vertical) NAND(VNAND) 메모리 어레이를 포함할 수 있다.When the nonvolatile memory device 220 of the storage device 200 includes a flash memory, the flash memory may include a 2D NAND memory array or a 3D (or vertical) NAND (VNAND) memory array.

일 실시예에 따라, 호스트 컨트롤러(110)와 호스트 메모리(120)는 별도의 반도체 칩으로 구현될 수 있다. 또는, 일부 실시예들에서, 호스트 컨트롤러(110)와 호스트 메모리(120)는 동일한 반도체 칩에 집적될 수 있다. 일 예로서, 호스트 컨트롤러(110)는 애플리케이션 프로세서(Application Processor)에 구비되는 다수의 모듈들 중 어느 하나일 수 있으며, 상기 애플리케이션 프로세서는 시스템 온 칩(System on Chip, SoC)으로 구현될 수 있다. 또한, 호스트 메모리(120)는 상기 애플리케이션 프로세서 내에 구비되는 임베디드 메모리이거나, 또는 상기 애플리케이션 프로세서의 외부에 배치되는 비휘발성 메모리 또는 메모리 모듈일 수 있다.According to an embodiment, the host controller 110 and the host memory 120 may be implemented as separate semiconductor chips. Alternatively, in some embodiments, the host controller 110 and the host memory 120 may be integrated on the same semiconductor chip. As an example, the host controller 110 may be any one of a plurality of modules included in an application processor, and the application processor may be implemented as a system on chip (SoC). In addition, the host memory 120 may be an embedded memory included in the application processor, or may be a non-volatile memory or a memory module disposed outside the application processor.

호스트 컨트롤러(110)는 호스트 메모리(120)의 버퍼 영역의 데이터(예컨대, 기록 데이터)를 비휘발성 메모리 장치(220)에 저장하거나, 비휘발성 메모리 장치(220)의 데이터(예컨대, 독출 데이터)를 버퍼 영역에 저장하는 동작을 관리할 수 있다.The host controller 110 stores data (eg, write data) in the buffer area of the host memory 120 in the nonvolatile memory device 220 or stores data (eg, read data) in the nonvolatile memory device 220. You can manage the operation of saving to the buffer area.

스토리지 컨트롤러(210)는 호스트 인터페이스(211), 메모리 인터페이스(212) 및 중앙 처리 장치(CPU: central processing unit)(213)를 포함할 수 있다. 또한, 스토리지 컨트롤러(210)는 플래시 변환 레이어(Flash Translation Layer; FTL)(214), 쓰기 증폭(WAF: Write Amplification) 관리기(215), 버퍼 메모리(216), ECC(error correction code)(217) 엔진 및 암복호화(Encryption/Decryption) 엔진(218)을 더 포함할 수 있다. 스토리지 컨트롤러(210)는 플래시 변환 레이어(FTL)(214)가 로딩되는 워킹 메모리(미도시)를 더 포함할 수 있으며, 중앙 처리 장치(213)가 플래시 변환 레이어를 실행하는 것에 의해 비휘발성 메모리 장치(220)에 대한 데이터 기록 및 독출 동작이 제어될 수 있다.The storage controller 210 may include a host interface 211 , a memory interface 212 , and a central processing unit (CPU) 213 . In addition, the storage controller 210 includes a flash translation layer (FTL) 214, a write amplification (WAF) manager 215, a buffer memory 216, and an error correction code (ECC) 217. An engine and encryption/decryption (Encryption/Decryption) engine 218 may be further included. The storage controller 210 may further include a working memory (not shown) into which the flash translation layer (FTL) 214 is loaded, and the central processing unit 213 executes the flash translation layer, thereby a non-volatile memory device. Data write and read operations for 220 can be controlled.

호스트 인터페이스(211)는 호스트(100)와 패킷(packet)을 송수신할 수 있다. 호스트(100)로부터 호스트 인터페이스(211)로 전송되는 패킷은 커맨드(command) 혹은 비휘발성 메모리 장치(220)에 기록될 데이터 등을 포함할 수 있으며, 호스트 인터페이스(211)로부터 호스트(100)로 전송되는 패킷은 커맨드에 대한 응답(response) 혹은 비휘발성 메모리 장치(220)로부터 독출된 데이터 등을 포함할 수 있다. The host interface 211 may transmit/receive packets with the host 100 . A packet transmitted from the host 100 to the host interface 211 may include a command or data to be written to the non-volatile memory device 220, and is transmitted from the host interface 211 to the host 100. The packet may include a response to a command or data read from the non-volatile memory device 220 .

호스트(100)로부터 호스트 인터페이스(211)로 전송되는 커맨드는 예를 들어, 쓰기, 읽기, 또는 트림(Trim) 명령 등일 수 있다.A command transmitted from the host 100 to the host interface 211 may be, for example, a write, read, or trim command.

메모리 인터페이스(212)는 비휘발성 메모리 장치(220)에 기록될 데이터를 비휘발성 메모리 장치(220)로 송신하거나, 비휘발성 메모리 장치(220)로부터 독출된 데이터를 수신할 수 있다. 이러한 메모리 인터페이스(212)는 토글(Toggle) 혹은 온파이(Open NAND Flash Interface; ONFI)와 같은 표준 규약을 준수하도록 구현될 수 있다.The memory interface 212 may transmit data to be written to the nonvolatile memory device 220 to the nonvolatile memory device 220 or may receive data read from the nonvolatile memory device 220 . Such a memory interface 212 may be implemented to comply with standards such as Toggle or Open NAND Flash Interface (ONFI).

플래시 변환 계층(214)은 어드레스 매핑(address mapping), 웨어-레벨링(wear-leveling), 가비지 콜렉션(garbage collection)과 같은 여러 기능을 수행할 수 있다. 어드레스 매핑 동작은 호스트(100)로부터 수신한 논리 어드레스(logical address)를, 비휘발성 메모리 장치(220) 내에 데이터를 실제로 저장하는 데 사용되는 물리 어드레스(physical address)로 바꾸는 동작이다.The flash translation layer 214 may perform various functions such as address mapping, wear-leveling, and garbage collection. The address mapping operation is an operation of changing a logical address received from the host 100 into a physical address used to actually store data in the nonvolatile memory device 220 .

예를 들어, 플래시 변환 계층(214)은 제1 데이터에 대한 제1 논리 어드레스와 이에 매핑되는 제1 물리 어드레스 정보가 기록된 매핑 테이블을 저장할 수 있다. 즉, 플래시 변환 계층(214)은 제1 데이터에 대한 어드레스 매핑 동작을 수행할 때, 매핑 테이블을 참조하여, 수행할 수 있다.For example, the flash conversion layer 214 may store a mapping table in which a first logical address for first data and first physical address information mapped thereto are recorded. That is, when performing an address mapping operation on the first data, the flash conversion layer 214 may refer to a mapping table to perform the address mapping operation.

웨어-레벨링은 비휘발성 메모리 장치(220) 내의 블록(block)들이 균일하게 사용되도록 하여 특정 블록의 과도한 열화를 방지하기 위한 기술로, 예시적으로 물리 블록(physical block)들의 소거 카운트들을 밸런싱하는 펌웨어 기술을 통해 구현될 수 있다. 가비지 콜렉션은, 블록의 유효 데이터를 새 블록에 복사한 후 기존 블록을 소거(erase)하는 방식을 통해 비휘발성 메모리 장치(220) 내에서 사용 가능한 용량을 확보하기 위한 기술이다.Wear-leveling is a technique for preventing excessive deterioration of a specific block by ensuring that blocks in the non-volatile memory device 220 are uniformly used. For example, firmware balancing erase counts of physical blocks It can be realized through technology. Garbage collection is a technique for securing usable capacity in the nonvolatile memory device 220 by copying valid data of a block to a new block and then erasing the old block.

ECC 엔진(217)은 비휘발성 메모리 장치(220)로부터 독출되는 독출 데이터에 대한 오류 검출 및 정정 기능을 수행할 수 있다. 보다 구체적으로, ECC 엔진(217)은 비휘발성 메모리 장치(220)에 기입될 기입 데이터에 대하여 패리티 비트(parity bit)들을 생성할 수 있으며, 이와 같이 생성된 패리티 비트들은 기입 데이터와 함께 비휘발성 메모리 장치(220) 내에 저장될 수 있다. 비휘발성 메모리 장치(220)로부터의 데이터 독출 시, ECC 엔진(217)은 독출 데이터와 함께 비휘발성 메모리 장치(220)로부터 독출되는 패리티 비트들을 이용하여 독출 데이터의 에러를 정정하고, 에러가 정정된 독출 데이터를 출력할 수 있다.The ECC engine 217 may perform error detection and correction functions for read data read from the nonvolatile memory device 220 . More specifically, the ECC engine 217 may generate parity bits for write data to be written in the non-volatile memory device 220, and the parity bits generated in this way are used together with the write data in the non-volatile memory. may be stored within device 220 . When data is read from the non-volatile memory device 220, the ECC engine 217 corrects an error in the read data using parity bits read from the non-volatile memory device 220 together with the read data, and the error is corrected. Read data can be output.

암복호화 엔진(218)은, 스토리지 컨트롤러(210)로 입력되는 데이터에 대한 암호화(encryption) 동작과 복호화(decryption) 동작 중 적어도 하나의 동작을 수행할 수 있다.The encryption/decryption engine 218 may perform at least one of an encryption operation and a decryption operation on data input to the storage controller 210 .

예를 들어, 암복호화 엔진(218)은, 대칭 키 알고리즘(symmetric-key algorithm)를 이용하여 암호화 동작 및/또는 복호화 동작을 수행할 수 있다. 이때, 암복호화 엔진(218)은 예를 들어, AES(Advanced Encryption Standard) 알고리즘 또는 DES(Data Encryption Standard) 알고리즘을 이용하여, 암호화 및/또는 복호화 동작을 수행할 수 있다.For example, the encryption/decryption engine 218 may perform an encryption operation and/or a decryption operation using a symmetric-key algorithm. In this case, the encryption/decryption engine 218 may perform an encryption and/or decryption operation using, for example, an Advanced Encryption Standard (AES) algorithm or a Data Encryption Standard (DES) algorithm.

또한, 예를 들어, 암복호화 엔진(218)은 공개키 암호화 알고리즘을 이용하여 암호화 동작 및/또는 복호화 동작을 수행할 수 있다. 이때, 암복호화 엔진(218)은 예를 들어, 암호화 동작 시 공개키를 이용하여 암호화를 수행하고, 복호화 동작 시 비밀키를 이용하여 복호화를 수행할 수 있다. 예를 들어, 암복호화 엔진(218)은 RSA(Rivest Shamir Adleman), ECC(Elliptic Curve Cryptography), 또는 DH(Diffie-Hellman)  암호화 알고리즘을 이용할 수 있다.Also, for example, the encryption/decryption engine 218 may perform an encryption operation and/or a decryption operation using a public key encryption algorithm. In this case, the encryption/decryption engine 218 may perform encryption using a public key during an encryption operation, and decryption using a private key during a decryption operation, for example. For example, the encryption/decryption engine 218 may use Rivest Shamir Adleman (RSA), Elliptic Curve Cryptography (ECC), or Diffie-Hellman (DH) encryption algorithms.

이에 제한되지 않고, 암복호화 엔진(218)은 HE(Homomorphic Encryption), PQC(Post-Quantum Cryptography), 또는 FE(Functional Encryption) 등과 같은 양자 암호 기술을 이용하여, 암호화 동작 및/또는 복호화 동작을 수행할 수 있다.Without being limited thereto, the encryption/decryption engine 218 performs an encryption operation and/or a decryption operation using a quantum cryptography technology such as Homomorphic Encryption (HE), Post-Quantum Cryptography (PQC), or Functional Encryption (FE). can do.

쓰기 증폭 관리기(215)는 비휘발성 메모리 장치(220)에 포함된 메모리 셀에 프로그램이 수행될 때, 몇몇 실시예들에 따른 스토리지 장치의 성능을 향상시키도록 도와줄 수 있다. 예를 들어, 쓰기 증폭 관리기(215)는 몇몇 실시예들에 따른 스토리지 장치의 쓰기 증폭 특성을 개선시킬 수 있다. 또한, 예를 들어, 쓰기 증폭 관리기(215)는 몇몇 실시예들에 따른 스토리지 장치의 플러쉬(flush) 동작의 속도를 향상시킬 수 있다.The write amplification manager 215 may help improve the performance of the storage device according to some embodiments when a program is performed on a memory cell included in the nonvolatile memory device 220 . For example, the write amplification manager 215 may improve write amplification characteristics of a storage device according to some embodiments. Also, for example, the write amplification manager 215 may improve the speed of a flush operation of a storage device according to some embodiments.

이에 대해서, 먼저 비휘발성 메모리 장치(220)의 구조에 대해 도 2를 통해 살펴본다.In this regard, first, the structure of the non-volatile memory device 220 will be reviewed through FIG. 2 .

도 2는 도 1의 비휘발성 메모리 장치를 설명하기 위한 예시적인 블록도이다.FIG. 2 is an exemplary block diagram illustrating the nonvolatile memory device of FIG. 1 .

도 2를 참조하면, 도 2의 비휘발성 메모리 장치(300)는 도 1의 비휘발성 메모리 장치(220)에 대응될 수 있다.Referring to FIG. 2 , the nonvolatile memory device 300 of FIG. 2 may correspond to the nonvolatile memory device 220 of FIG. 1 .

계속하여 도 2를 참조하면, 비휘발성 메모리 장치(300)는 제어 로직 회로(320), 메모리 셀 어레이(330), 페이지 버퍼(340), 전압 생성기(350), 및 로우 디코더(360)를 포함할 수 있다. 도 2에는 도시되지 않았으나, 비휘발성 메모리 장치(300)는 도 1에 도시된 메모리 인터페이스 회로(212)를 더 포함할 수 있고, 또한 컬럼 로직, 프리-디코더, 온도 센서, 커맨드 디코더, 어드레스 디코더 등을 더 포함할 수 있다.With continued reference to FIG. 2 , the nonvolatile memory device 300 includes a control logic circuit 320, a memory cell array 330, a page buffer 340, a voltage generator 350, and a row decoder 360. can do. Although not shown in FIG. 2 , the nonvolatile memory device 300 may further include the memory interface circuit 212 shown in FIG. 1 , and may also include a column logic, a pre-decoder, a temperature sensor, a command decoder, an address decoder, and the like. may further include.

제어 로직 회로(320)는 비휘발성 메모리 장치(300) 내의 각종 동작을 전반적으로 제어할 수 있다. 제어 로직 회로(320)는 메모리 인터페이스 회로(310)로부터의 커맨드(CMD) 및/또는 어드레스(ADDR)에 응답하여 각종 제어 신호들을 출력할 수 있다. 예를 들어, 제어 로직 회로(320)는 전압 제어 신호(CTRL_vol), 로우 어드레스(X-ADDR), 및 컬럼 어드레스(Y-ADDR)를 출력할 수 있다.The control logic circuit 320 may generally control various operations within the nonvolatile memory device 300 . The control logic circuit 320 may output various control signals in response to the command CMD and/or the address ADDR from the memory interface circuit 310 . For example, the control logic circuit 320 may output a voltage control signal CTRL_vol, a row address X-ADDR, and a column address Y-ADDR.

메모리 셀 어레이(330)는 복수의 메모리 블록들(BLK1 내지 BLKz)을 포함할 수 있고(z는 양의 정수), 복수의 메모리 블록들(BLK1 내지 BLKz) 각각은 복수의 메모리 셀들을 포함할 수 있다. 메모리 셀 어레이(330)는 비트 라인들(BL)을 통해 페이지 버퍼부(340)에 연결될 수 있고, 워드 라인들(WL), 스트링 선택 라인들(SSL), 및 그라운드 선택 라인들(GSL)을 통해 로우 디코더(360)에 연결될 수 있다.The memory cell array 330 may include a plurality of memory blocks BLK1 to BLKz (where z is a positive integer), and each of the plurality of memory blocks BLK1 to BLKz may include a plurality of memory cells. there is. The memory cell array 330 may be connected to the page buffer unit 340 through bit lines BL, and may include word lines WL, string select lines SSL, and ground select lines GSL. It can be connected to the row decoder 360 through

예시적인 실시 예에서, 메모리 셀 어레이(330)는 3차원 메모리 셀 어레이를 포함할 수 있고, 3차원 메모리 셀 어레이는 복수의 낸드 스트링들을 포함할 수 있다. 각 낸드 스트링은 기판 위에 수직으로 적층된 워드 라인들에 각각 연결된 메모리 셀들을 포함할 수 있다. 미국 특허공개공보 제7,679,133호, 미국 특허공개공보 제8,553,466호, 미국 특허공개공보 제8,654,587호, 미국 특허공개공보 제8,559,235호, 및 미국 특허출원공개공보 제2011/0233648호는 본 명세서에 인용 형식으로 결합된다. 예시적인 실시 예에서, 메모리 셀 어레이(330)는 2차원 메모리 셀 어레이를 포함할 수 있고, 2차원 메모리 셀 어레이는 행 및 열 방향을 따라 배치된 복수의 낸드 스트링들을 포함할 수 있다.In an exemplary embodiment, the memory cell array 330 may include a 3D memory cell array, and the 3D memory cell array may include a plurality of NAND strings. Each NAND string may include memory cells respectively connected to word lines vertically stacked on a substrate. U.S. Patent Publication No. 7,679,133, U.S. Patent Publication No. 8,553,466, U.S. Patent Publication No. 8,654,587, U.S. Patent Publication No. 8,559,235, and U.S. Patent Application Publication No. 2011/0233648 are incorporated herein by reference. are combined In an exemplary embodiment, the memory cell array 330 may include a 2D memory cell array, and the 2D memory cell array may include a plurality of NAND strings disposed along row and column directions.

페이지 버퍼(340)는 복수의 페이지 버퍼들(PB1 내지 PBn)을 포함할 수 있고(n은 3 이상의 정수), 복수의 페이지 버퍼들(PB1 내지 PBn)은 복수의 비트 라인들(BL)을 통해 메모리 셀들과 각각 연결될 수 있다. 페이지 버퍼(340)는 컬럼 어드레스(Y-ADDR)에 응답하여 비트 라인들(BL) 중 적어도 하나의 비트 라인을 선택할 수 있다. 페이지 버퍼(340)는 동작 모드에 따라 기입 드라이버 또는 감지 증폭기로서 동작할 수 있다. 예를 들어, 프로그램 동작 시, 페이지 버퍼(340)는 선택된 비트 라인으로 프로그램될 데이터에 대응하는 비트 라인 전압을 인가할 수 있다. 독출 동작 시, 페이지 버퍼(340)는 선택된 비트 라인의 전류 또는 전압을 감지하여 메모리 셀에 저장된 데이터를 감지할 수 있다. The page buffer 340 may include a plurality of page buffers PB1 to PBn (n is an integer greater than or equal to 3), and the plurality of page buffers PB1 to PBn may include a plurality of bit lines BL. Each of the memory cells may be connected. The page buffer 340 may select at least one bit line from among the bit lines BL in response to the column address Y-ADDR. The page buffer 340 may operate as a write driver or a sense amplifier according to an operation mode. For example, during a program operation, the page buffer 340 may apply a bit line voltage corresponding to data to be programmed to a selected bit line. During a read operation, the page buffer 340 may detect data stored in a memory cell by sensing a current or voltage of a selected bit line.

전압 생성기(350)는 전압 제어 신호(CTRL_vol)를 기반으로 프로그램, 독출, 및 소거 동작들을 수행하기 위한 다양한 종류의 전압들을 생성할 수 있다. 예를 들어, 전압 생성기(350)는 워드 라인 전압(VWL)으로서 프로그램 전압, 독출 전압, 프로그램 검증 전압, 소거 전압 등을 생성할 수 있다.The voltage generator 350 may generate various types of voltages for performing program, read, and erase operations based on the voltage control signal CTRL_vol. For example, the voltage generator 350 may generate a program voltage, a read voltage, a program verify voltage, an erase voltage, and the like as the word line voltage VWL.

로우 디코더(360)는 로우 어드레스(X-ADDR)에 응답하여 복수의 워드 라인들(WL) 중 하나를 선택할 수 있고, 복수의 스트링 선택 라인들(SSL) 중 하나를 선택할 수 있다. 예를 들어, 프로그램 동작 시, 로우 디코더(360)는 선택된 워드 라인으로 프로그램 전압 및 프로그램 검증 전압을 인가하고, 독출 동작 시, 선택된 워드 라인으로 독출 전압을 인가할 수 있다.The row decoder 360 may select one of the plurality of word lines WL and select one of the plurality of string select lines SSL in response to the row address X-ADDR. For example, during a program operation, the row decoder 360 may apply a program voltage and a program verify voltage to the selected word line, and during a read operation, may apply a read voltage to the selected word line.

메모리 셀 어레이(330)에 포함된 블록에 대해, 제1 블록(BLK1)을 예시로 도 3을 통해 설명한다. 제1 블록(BLK1)에 대한 설명이 다른 블록들(BLK2 내지 BLKz)에도 적용될 수 있음은 물론이다.Blocks included in the memory cell array 330 will be described with reference to FIG. 3 by taking the first block BLK1 as an example. Of course, the description of the first block BLK1 can also be applied to the other blocks BLK2 to BLKz.

도 3은 도 2의 블록을 설명하기 위한 예시적인 회로도이다.FIG. 3 is an exemplary circuit diagram for explaining the blocks of FIG. 2 .

도 3을 참조하면, 도 1 및 도 2의 비휘발성 메모리 장치에 적용될 수 있는 3D V-NAND 구조가 도시된다. 비휘발성 메모리 장치가 3D V-NAND 타입의 플래시 메모리로 구현될 경우, 도 2의 복수의 메모리 블록들(BLK1 내지 BLKz) 각각은 도 3에 도시된 바와 같은 등가 회로로 표현될 수 있다.Referring to FIG. 3 , a 3D V-NAND structure applicable to the nonvolatile memory devices of FIGS. 1 and 2 is shown. When the nonvolatile memory device is implemented as a 3D V-NAND type flash memory, each of the plurality of memory blocks BLK1 to BLKz of FIG. 2 may be expressed as an equivalent circuit as shown in FIG. 3 .

도 3에 도시된 메모리 블록(BLK1)은 기판 상에 삼차원 구조로 형성되는 삼차원 메모리 블록을 나타낸다. 예를 들어, 메모리 블록(BLK1)에 포함되는 복수의 메모리 낸드 스트링들(NS11, 내지 NS33)은 상기 기판과 수직한 방향으로 형성될 수 있다.The memory block BLK1 shown in FIG. 3 represents a three-dimensional memory block formed in a three-dimensional structure on a substrate. For example, the plurality of memory NAND strings NS11 to NS33 included in the memory block BLK1 may be formed in a direction perpendicular to the substrate.

도 3을 계속하여 참조하면, 메모리 블록(BLK1)은 비트 라인들(BL1, BL2, BL3)과 공통 소스 라인(CSL) 사이에 연결되는 복수의 메모리 낸드 스트링들(NS11 내지 NS33)을 포함할 수 있다. 복수의 메모리 낸드 스트링들(NS11 내지 NS33) 각각은 스트링 선택 트랜지스터(SST), 복수의 메모리 셀들(MC1, MC2, ..., MC8) 및 접지 선택 트랜지스터(GST)를 포함할 수 있다. 도 3에는 복수의 메모리 낸드 스트링들(NS11 내지 NS33) 각각이 8개의 메모리 셀들(MC1, MC2, ..., MC8)을 포함하는 것으로 도시되어 있으나, 반드시 이에 한정되는 것은 아니다.3, the memory block BLK1 may include a plurality of memory NAND strings NS11 to NS33 connected between the bit lines BL1, BL2, and BL3 and the common source line CSL. there is. Each of the plurality of memory NAND strings NS11 to NS33 may include a string select transistor SST, a plurality of memory cells MC1 , MC2 , ..., MC8 , and a ground select transistor GST. 3 shows that each of the plurality of memory NAND strings NS11 to NS33 includes eight memory cells MC1, MC2, ..., MC8, but is not necessarily limited thereto.

스트링 선택 트랜지스터(SST)는 상응하는 스트링 선택 라인(SSL1, SSL2, SSL3)에 연결될 수 있다. 복수의 메모리 셀들(MC1, MC2, ..., MC8)은 각각 상응하는 워드 라인(WL1, WL2, ..., WL8)에 연결될 수 있다. 워드 라인(WL1, WL2, ..., WL8)의 일부는 더미 워드 라인에 해당할 수 있다. 접지 선택 트랜지스터(GST)는 상응하는 접지 선택 라인(GSL1, GSL2, GSL3)에 연결될 수 있다. 스트링 선택 트랜지스터(SST)는 상응하는 비트 라인들(BL1, BL2, BL3)에 연결되고, 접지 선택 트랜지스터(GST)는 공통 소스 라인(CSL)에 연결될 수 있다. The string select transistor SST may be connected to corresponding string select lines SSL1 , SSL2 , and SSL3 . The plurality of memory cells MC1 , MC2 , ..., MC8 may be connected to corresponding word lines WL1 , WL2 , ..., WL8 , respectively. Some of the word lines WL1 , WL2 , ..., WL8 may correspond to dummy word lines. The ground select transistor GST may be connected to corresponding ground select lines GSL1 , GSL2 , and GSL3 . The string select transistor SST may be connected to corresponding bit lines BL1 , BL2 , and BL3 , and the ground select transistor GST may be connected to the common source line CSL.

동일 높이의 워드 라인(예를 들면, WL1)은 공통으로 연결되고, 접지 선택 라인(GSL1, GSL2, GSL3) 및 스트링 선택 라인(SSL1, SSL2, SSL3)은 각각 분리될 수 있다. 도 3에는 메모리 블록(BLK1)이 여덟 개의 워드 라인(WL1, WL2, ..., WL8) 및 세 개의 비트 라인들(BL1, BL2, BL3)에 연결되는 것으로 도시되어 있으나, 반드시 이에 한정되는 것은 아니다.Word lines (eg, WL1) having the same height may be commonly connected, and ground select lines GSL1, GSL2, and GSL3 and string select lines SSL1, SSL2, and SSL3 may be separated from each other. Although the memory block BLK1 is illustrated in FIG. 3 as being connected to eight word lines WL1, WL2, ..., WL8 and three bit lines BL1, BL2, and BL3, it is not necessarily limited thereto. no.

도 4는 몇몇 실시예들에 따른 스토리지 장치의 프로그램 동작을 설명하기 위한 그래프들이다.4 are graphs for describing a program operation of a storage device according to some embodiments.

본 도면에서는 3-비트 데이터가 프로그램되는 예로 설명하였으나, 이에 제한되지 않고, 2-비트 데이터, 및 1-비트 데이터가 프로그램되는 예로 설명될 수 있음은 물론이다.Although this figure has been described as an example of programming 3-bit data, it is not limited thereto, and examples of programming 2-bit data and 1-bit data can be described as a matter of course.

도 1, 도 3 및 도 4를 참조하면, 스토리지 컨트롤러(210)는 비휘발성 메모리 장치(220)에 데이터를 기록할 수 있다. 예를 들어, 스토리지 컨트롤러(210)는 비휘발성 메모리 장치(220)의 제1 메모리 셀(MC1)에 제1 데이터를 기록할 수 있다. 이때, 스토리지 컨트롤러(210)는 제1 메모리 셀(MC1)에 N(N은 1보다 큰 자연수)회 프로그램을 수행하여, 제1 데이터를 기록할 수 있다. 즉, 스토리지 컨트롤러(210)는 비휘발성 메모리 장치(220)의 메모리 셀에 데이터를 기록할 때, 멀티 프로그램을 수행하여 데이터를 기록할 수 있다.Referring to FIGS. 1 , 3 and 4 , the storage controller 210 may write data to the non-volatile memory device 220 . For example, the storage controller 210 may write first data in the first memory cell MC1 of the nonvolatile memory device 220 . At this time, the storage controller 210 may write the first data in the first memory cell MC1 by performing the program N times (where N is a natural number greater than 1). That is, when writing data to the memory cells of the nonvolatile memory device 220, the storage controller 210 may write the data by performing a multi-program.

이하에서의 설명은 2번의 프로그램 수행을 통해 데이터를 기록하는 것을 예로 설명하나, 몇몇 실시예들에 따른 스토리지 장치(200)의 동작은 이에 제한되지 않고, 다른 N번의 프로그램 수행을 통해 데이터가 기록되는 동작에도 적용될 수 있음은 물론이다.In the following description, data is recorded through program execution twice, but the operation of the storage device 200 according to some embodiments is not limited thereto, and data is recorded through program execution N times. Of course, it can also be applied to motion.

1번째 프로그램 동작(1st PGM)은 각 메모리 셀이 8개의 상태들(E, P11, P12, P13, P14, P15, P16, P17) 중 3-비트 데이터에 대응하는 상태를 갖도록 행해질 수 있다. 8개의 상태들(E, P11~P17)은, 도 4에 도시된 바와 같이, 읽기 마진 없이 서로 인접할 수 있다. 즉, 1번째 프로그램 동작(1st PGM)시 3-비트 데이터가 개략적으로 프로그램될 수 있다.The first program operation (1st PGM) may be performed so that each memory cell has a state corresponding to 3-bit data among eight states (E, P11, P12, P13, P14, P15, P16, P17). As shown in FIG. 4 , the eight states E and P11 to P17 may be adjacent to each other without a read margin. That is, during the first program operation (1st PGM), 3-bit data can be roughly programmed.

예시적인 실시예에 있어서, 1번째 프로그램 동작(1st PGM)은 프로그램 루프의 반복시 프로그램 전압이 정해진 증가분만큼 증가하는 증가형 스텝 펄스 프로그래밍(Incremental Step Pulse Programming: ISPP) 기술에 따라 행해질 수 있다.In an exemplary embodiment, the first program operation (1st PGM) may be performed according to an incremental step pulse programming (ISPP) technique in which a program voltage increases by a predetermined increment when a program loop is repeated.

예시적인 실시예에 있어서, 1번째 프로그램 동작(1st PGM)은 검증 동작을 포함할 수 있다. 검증 동작시, 적어도 하나의 프로그램 상태에 대해서만 검증 동작이 수행될 수 있다. 예를 들어, 1번째 프로그램 동작(1st PGM)에서, 프로그램 상태들(P12, P14, P16)에 대한 검증 동작들이 수행되는 반면에, 프로그램 상태들(P11, P13, P15, P17)에 대한 검증 동작들은 수행되지 않을 수 있다. 즉, 프로그램 상태들(P12, P14, P16)가 검증 패스되면, 1번째 프로그램 동작(1st PGM)은 종료될 수 있다.In an exemplary embodiment, the first program operation (1st PGM) may include a verify operation. During the verification operation, the verification operation may be performed only for at least one program state. For example, in the first program operation (1st PGM), verification operations for program states P12, P14, and P16 are performed, whereas verification operations for program states P11, P13, P15, and P17 are performed. may not be performed. That is, if the program states P12, P14, and P16 pass the verification, the first program operation (1st PGM) may end.

2번째 프로그램 동작(2nd PGM)은 1번째 프로그램 동작(1st PGM)을 통해 형성된 개략적인 상태들(rough states) (P11~P17)을 좀더 세밀한 상태들(P21~P27)로 재프로그램하기 위해서 행해질 수 있다. 여기서, 상태들(P21~P27)은, 도 4에 도시된 바와 같이, 소정의 읽기 마진을 갖도록 인접할 수 있다. 즉, 2번째 프로그램 동작(2nd PGM)에서는 1번째 프로그램 동작(1st PGM)에서 프로그램된 3-비트 데이터가 재프로그램될 수 있다. 앞서 설명된 바와 같이, 2번째 프로그램 동작(2nd PGM)에서 사용되는 3-비트 데이터는 1번째 프로그램 동작(1st PGM)에서 사용된 것과 동일하다. 도 4에 도시된 바와 같이, 1번째 프로그램 동작(1st PGM)이 수행된 메모리 셀들의 상태(P11)는 2번째 프로그램 동작(2nd PGM)시 상태(P21)로 재프로그램될 수 있다. 이는 2번째 프로그램 동작(2nd PGM)이 수행된 메모리 셀들의 상태(P21)에 대응하는 문턱 전압 산포가 1번째 프로그램 동작(1st PGM)이 수행된 메모리 셀들의 상태(P11)에 대응하는 문턱 전압 산포보다 좁게 형성되게 만들 수 있다. 다시 말해서, 2번째 프로그램 동작(2nd PGM)이 수행된 메모리 셀들의 상태(P21)를 검증하기 위한 검증 전압(VR21)은 1번째 프로그램 동작(1st PGM)이 수행된 메모리 셀들의 상태(P11)를 검증하기 위한 검증 전압(VR11)보다 높을 수 있다.The 2nd program operation (2nd PGM) can be performed to reprogram the rough states (P11 to P17) formed through the 1st program operation (1st PGM) into more detailed states (P21 to P27). there is. Here, states P21 to P27 may be adjacent to each other with a predetermined read margin, as shown in FIG. 4 . That is, in the second program operation (2nd PGM), 3-bit data programmed in the first program operation (1st PGM) can be reprogrammed. As described above, the 3-bit data used in the 2nd program operation (2nd PGM) is the same as that used in the 1st program operation (1st PGM). As shown in FIG. 4 , states P11 of memory cells subjected to a first program operation (1st PGM) may be reprogrammed to a state P21 during a second program operation (2nd PGM). This means that the threshold voltage distribution corresponding to the state P21 of the memory cells in which the second program operation (2nd PGM) was performed is the threshold voltage distribution corresponding to the state P11 of the memory cells in which the first program operation (1st PGM) was performed. It can be made more narrow. In other words, the verification voltage VR21 for verifying the states P21 of the memory cells on which the 2nd program operation (2nd PGM) has been performed determines the states P11 of the memory cells on which the 1st program operation (1st PGM) has been performed. It may be higher than the verification voltage (VR11) for verification.

예시적인 실시예에 있어서, 2번째 프로그램 동작(2nd PGM)은 ISPP 기술에 따라 행해질 수 있다.In an exemplary embodiment, the second program operation (2nd PGM) may be performed according to ISPP technology.

예시적인 실시 예에 있어서, 2번째 프로그램 동작(2nd PGM)은 검증 동작을 포함할 수 있다. 검증 동작은 모든 프로그램상태들에 대해서 행해질 수 있다. 모든 프로그램 상태들(P21~P27)이 검증 패스되면, 2번째 프로그램 동작(2nd PGM)이 종료되면서, 데이터의 기록이 완료될 수 있다.In an exemplary embodiment, the second program operation (2nd PGM) may include a verification operation. A verification operation can be performed for all program states. When all program states P21 to P27 pass the verification, the second program operation (2nd PGM) ends, and data writing can be completed.

이때, 쓰기 증폭 관리기(215)는 1번째 프로그램 동작이 수행된 메모리 셀에 대한 2번째 프로그램 동작을 수행하여 데이터의 기록을 완료하기 전에, 2번째 프로그램 동작이 수행되는 메모리 셀이 유효하지 않은 데이터(Invalid data)인지 확인하고, 2번째 프로그램 동작을 수행할 수 있다.At this time, the write amplification manager 215 performs a second program operation on the memory cell to which the first program operation has been performed, and before data writing is completed, the memory cell to which the second program operation is performed has invalid data ( Invalid data), and the second program operation can be performed.

이에 제한되지 않고, 예를 들어, N회의 프로그램을 통해 데이터가 기록되는 스토리지 장치(200)의 경우, 쓰기 증폭 관리기(215)는 N-1번째 프로그램 동작이 수행된 메모리 셀에 대한 N번째 프로그램 동작을 수행하여 데이터의 기록을 완료하기 전에, N번째 프로그램 동작이 수행되는 메모리 셀이 유효하지 않은 데이터(Invalid data)인지 확인하고, N번째 프로그램 동작을 수행할 수 있다.Without being limited thereto, for example, in the case of the storage device 200 in which data is written through N times of programming, the write amplification manager 215 performs the Nth program operation on the memory cell in which the N−1th program operation has been performed. Before data writing is completed by performing , it may be checked whether a memory cell in which the N th program operation is performed is invalid data, and then the N th program operation may be performed.

또한, 쓰기 증폭 관리기(215)는 1번째 프로그램 동작이 수행된 메모리 셀에 대한 2번째 프로그램 동작을 수행하여 데이터의 기록을 완료하기 전에, 오픈 메모리 셀이 포함된 블록을 검출하는 동작을 먼저 수행하고, 오픈 메모리 셀이 포함된 블록이 검출된다면, 오픈 메모리 셀이 포함된 블록으로 1번째 프로그램 동작이 수행된 메모리 셀을 이동시켜 압축을 수행하고, 2번째 프로그램 동작을 수행할 수 있다.In addition, the write amplification manager 215 first performs an operation of detecting a block including an open memory cell before completing the writing of data by performing a second program operation on the memory cell for which the first program operation has been performed, and , If a block including an open memory cell is detected, the memory cell on which the first program operation has been performed may be moved to the block including the open memory cell, compression may be performed, and a second program operation may be performed.

이에 제한되지 않고, 예를 들어, N회의 프로그램을 통해 데이터가 기록되는 스토리지 장치(200)의 경우, 쓰기 증폭 관리기(215)는 N-1번째 프로그램 동작이 수행된 메모리 셀에 대한 N번째 프로그램 동작을 수행하여 데이터의 기록을 완료하기 전에, 오픈 메모리 셀이 포함된 블록을 검출하는 동작을 먼저 수행하고, 오픈 메모리 셀이 포함된 블록이 검출된다면, 오픈 메모리 셀이 포함된 블록으로 N-1번째 프로그램 동작이 수행된 메모리 셀을 이동시켜 압축을 수행하고, N번째 프로그램 동작을 수행할 수 있다.Without being limited thereto, for example, in the case of the storage device 200 in which data is written through N times of programming, the write amplification manager 215 performs the Nth program operation on the memory cell in which the N−1th program operation has been performed. Before completing data writing by performing , an operation of detecting a block including an open memory cell is first performed, and if a block including an open memory cell is detected, the block containing the open memory cell is the N-1th block. A memory cell on which a program operation has been performed may be moved to perform compression, and an Nth program operation may be performed.

이러한 쓰기 증폭 관리기(215)의 동작을 통해, 몇몇 실시예들에 따른 스토리지 장치(200)의 쓰기 증폭 특성이 향상될 수 있다. 또한, 스토리지 장치(200)의 플러쉬(flush) 동작 속도가 향상될 수 있다.Through the operation of the write amplification manager 215 , write amplification characteristics of the storage device 200 according to some embodiments may be improved. Also, a flush operation speed of the storage device 200 may be improved.

이하에서, 쓰기 증폭 관리기(215)의 구조 및 동작을 자세히 살펴본다. 이하에서, 몇몇 실시예들에 따른 스토리지 장치(200)가 2번의 프로그램 수행을 통해 데이터가 메모리 셀에 기입되는 것으로 설명하나, 이에 대한 설명이 N번의 프로그램 수행을 통해 데이터가 메모리 셀에 기입되는 스토리지 장치(200)에도 적용될 수 있음은 물론이다.Hereinafter, the structure and operation of the write amplification manager 215 will be described in detail. Hereinafter, the storage device 200 according to some embodiments will be described as having data written into memory cells through two program executions, but a description of this will be described as a storage device in which data are written into memory cells through N program executions. Of course, it can also be applied to the device 200.

도 5는 몇몇 실시예들에 따른 쓰기 증폭 관리기를 설명하기 위한 블록도이다.5 is a block diagram illustrating a write amplification manager according to some embodiments.

이하에서는, 스토리지 컨트롤러(210)가 제1 데이터를 제1 메모리 셀(MC1)에 2번의 프로그램 수행을 통해 기록하는 경우를 예를 들어 설명한다. 또한, 제1 메모리 셀(MC1)에 1번의 프로그램이 이미 수행되었고, 제1 데이터가 기록되기 위해, 마지막 2번째 프로그램 수행 동작이 남아있음을 가정한다. Hereinafter, a case in which the storage controller 210 writes first data into the first memory cell MC1 through two program executions will be described as an example. Also, it is assumed that one program has already been performed on the first memory cell MC1 and the second and last program execution operation remains in order to write the first data.

도 1, 도 3 및 도 5를 참조하면, 쓰기 증폭 관리기(215)는 플래시 변환 계층 검사기(2150)를 포함한다. 플래시 변환 계층 검사기(2150)는 플래시 변환 계층(214)과 통신하여, 플래시 변환 계층(214) 내의 매핑 테이블을 참조하여, 제1 데이터가 유효하지 않은 데이터인지 확인할 수 있다.Referring to FIGS. 1 , 3 and 5 , the write amplification manager 215 includes a flash translation layer checker 2150 . The flash conversion layer checker 2150 may communicate with the flash conversion layer 214 and check whether the first data is invalid by referring to a mapping table in the flash conversion layer 214 .

예를 들어, 플래시 변환 계층 검사기(2150)는 플래시 변환 계층(214) 내의 매핑 테이블을 참조한 결과, 제1 데이터에 대한 제1 논리 어드레스에 대응되는 제1 물리 어드레스가 매핑되어 있지 않다고 판단되면, 제1 데이터를 유효하지 않은 데이터로 판단할 수 있다.For example, as a result of referring to the mapping table in the flash translation layer 214, the flash translation layer checker 2150 determines that the first physical address corresponding to the first logical address for the first data is not mapped. 1 Data can be judged as invalid data.

다른 예를 들어, 플래시 변환 계층 검사기(2150)는 플래시 변환 계층(214) 내의 매핑 테이블을 참조한 결과, 제1 데이터에 대해, 호스트(100)로부터 트림(trim) 명령이 전송되었다면, 제1 데이터를 유효하지 않은 데이터로 판단할 수 있다.As another example, as a result of referring to the mapping table in the flash translation layer 214, the flash translation layer checker 2150 determines the first data if a trim command is transmitted from the host 100 for the first data. It can be judged as invalid data.

스토리지 컨트롤러(210), 더 자세히는 스토리지 컨트롤러(210)의 중앙 처리 장치(213)는 쓰기 증폭 관리기(215)로부터 제1 데이터가 유효하지 않은 데이터라는 판단 결과를 수신 받으면, 제1 메모리 셀에 대한 2번째 프로그램 동작을 수행하지 않는다.The storage controller 210, more specifically, the central processing unit 213 of the storage controller 210 receives a result of determining that the first data is invalid from the write amplification manager 215, for the first memory cell. The second program operation is not performed.

이를 통해, 제1 메모리 셀(MC1)과 연결된 워드 라인(예를 들어, 제1 워드 라인(WL1))이 불필요하게 프로그램되는 경우를 방지할 수 있다.Through this, it is possible to prevent unnecessary programming of the word line (eg, the first word line WL1) connected to the first memory cell MC1.

상술된 쓰기 증폭 관리기(215)를 포함하는 스토리지 장치(200)의 동작을 흐름도를 통해 살펴본다.The operation of the storage device 200 including the above-described write amplification manager 215 will be reviewed through a flowchart.

도 6은 몇몇 실시예들에 따른 도 5의 쓰기 증폭 관리기의 동작을 설명하기 위한 흐름도이다.6 is a flowchart illustrating an operation of the write amplification manager of FIG. 5 according to some embodiments.

도 1, 도 3, 도 5 및 도 6을 참조하면, 제1 메모리 셀(MC1)에 대하여, 제1 데이터를 기록하기 위해 1번째 프로그램 동작을 수행한다(S100).Referring to FIGS. 1, 3, 5, and 6 , a first program operation is performed to write first data to the first memory cell MC1 (S100).

이후, 쓰기 증폭 관리기(215) 내의 플래시 변환 계층 검사기(2150)를 통하여, 제1 데이터가 플래시 변환 계층(214) 내에서 유효하지 않은 데이터인지 판단한다(S110).Thereafter, it is determined whether the first data is invalid data in the flash translation layer 214 through the flash translation layer checker 2150 in the write amplification manager 215 (S110).

만약, 제1 데이터가 플래시 변환 계층(214) 내에서 유효한 데이터라고 판단되면(N), 제1 메모리 셀(MC1)에 대해 2번째 프로그램 동작을 수행하여, 제2 데이터를 기록한다(S220).If it is determined that the first data is valid data in the flash conversion layer 214 (N), a second program operation is performed on the first memory cell MC1 to write the second data (S220).

그렇지 않고, 만약, 제1 데이터가 플래시 변환 계층(214) 내에서 유효하지 않은 데이터라고 판단되면(Y), 제1 메모리 셀(MC1)에 대해 2번째 프로그램 동작을 수행하지 않고, 프로그램 동작을 중지한다.Otherwise, if it is determined that the first data is invalid data in the flash conversion layer 214 (Y), the second program operation is not performed on the first memory cell MC1 and the program operation is stopped. do.

도 7은 몇몇 실시예들에 따른 다른 쓰기 증폭 관리기를 설명하기 위한 블록도이다.7 is a block diagram illustrating another write amplification manager according to some embodiments.

도 1, 도 3 및 도 7를 참조하면, 쓰기 증폭 관리기(215)는 버퍼 메모리 검사기(2152)를 포함한다. 버퍼 메모리 검사기(2152)는 버퍼 메모리(216)와 통신하여, 버퍼 메모리(216) 내의 제1 데이터가 유효하지 않은 데이터인지 확인할 수 있다.1, 3 and 7, the write amplification manager 215 includes a buffer memory checker 2152. The buffer memory checker 2152 may communicate with the buffer memory 216 to check whether the first data in the buffer memory 216 is invalid.

예를 들어, 버퍼 메모리 검사기(2152)는 버퍼 메모리(216) 내의 제1 데이터가 오버 라이트(over write)된 데이터라고 판단되면, 제1 데이터를 유효하지 않은 데이터라고 판단할 수 있다. 예를 들어, 버퍼 메모리(216) 내의 제1 데이터에 대해, 호스트가 쓰기 명령을 전송하고, 제1 데이터는 비휘발성 메모리 장치에 프로그램되기까지 버퍼 메모리(216)에서 대기 중일 수 있다. 이때, 스토리지 컨트롤러(210)가 제1 데이터에 대해, 쓰기 완료라는 명령을 호스트에 전송하고, 이를 인지한 호스트가 다시 제1 데이터에 대해 쓰기 명령을 전송한 경우, 제1 데이터에 대해 오버 라이트가 되었다고 판단할 수도 있다.For example, if it is determined that the first data in the buffer memory 216 is overwritten data, the buffer memory inspector 2152 may determine that the first data is invalid data. For example, a host transmits a write command to first data in the buffer memory 216, and the first data may remain on standby in the buffer memory 216 until it is programmed into the non-volatile memory device. At this time, when the storage controller 210 transmits a write completion command for the first data to the host, and the host recognizing this transmits a write command for the first data again, an overwrite is performed for the first data. may be judged to have been

스토리지 컨트롤러(210), 더 자세히는 스토리지 컨트롤러(210)의 중앙 처리 장치(213)는 쓰기 증폭 관리기(215)로부터 제1 데이터가 유효하지 않은 데이터라는 판단 결과를 수신 받으면, 제1 메모리 셀에 대한 2번째 프로그램 동작을 수행하지 않는다.The storage controller 210, more specifically, the central processing unit 213 of the storage controller 210 receives a result of determining that the first data is invalid from the write amplification manager 215, for the first memory cell. The second program operation is not performed.

이를 통해, 제1 메모리 셀(MC1)과 연결된 워드 라인(예를 들어, 제1 워드 라인(WL1))이 불필요하게 프로그램되는 경우를 방지할 수 있다.Through this, it is possible to prevent unnecessary programming of the word line (eg, the first word line WL1) connected to the first memory cell MC1.

상술된 쓰기 증폭 관리기(215)를 포함하는 스토리지 장치(200)의 동작을 흐름도를 통해 살펴본다.The operation of the storage device 200 including the above-described write amplification manager 215 will be reviewed through a flowchart.

도 8은 몇몇 실시예들에 따른 도 7의 다른 쓰기 증폭 관리기의 동작을 설명하기 위한 흐름도이다.8 is a flowchart illustrating an operation of another write amplification manager of FIG. 7 according to some embodiments.

도 1, 도 3, 도 7 및 도 8을 참조하면, 제1 메모리 셀(MC1)에 대하여, 제1 데이터를 기록하기 위해 1번째 프로그램 동작을 수행한다(S200).Referring to FIGS. 1, 3, 7, and 8 , a first program operation is performed to write first data to the first memory cell MC1 (S200).

이후, 쓰기 증폭 관리기(215) 내의 버퍼 메모리 검사기(2152)를 통하여, 제1 데이터가 버퍼 메모리(216) 내에서 유효하지 않은 데이터인지 판단한다(S210).Thereafter, it is determined whether the first data is invalid data in the buffer memory 216 through the buffer memory checker 2152 in the write amplification manager 215 (S210).

만약, 제1 데이터가 버퍼 메모리(216) 내에서 유효한 데이터라고 판단되면(N), 제1 메모리 셀(MC1)에 대해 2번째 프로그램 동작을 수행하여, 제2 데이터를 기록한다(S220).If it is determined that the first data is valid data in the buffer memory 216 (N), a second program operation is performed on the first memory cell MC1 to write the second data (S220).

그렇지 않고, 만약, 제1 데이터가 버퍼 메모리(216) 내에서 유효하지 않은 데이터라고 판단되면(Y), 제1 메모리 셀(MC1)에 대해 2번째 프로그램 동작을 수행하지 않고, 프로그램 동작을 중지한다.Otherwise, if it is determined that the first data is invalid data in the buffer memory 216 (Y), the second program operation is not performed on the first memory cell MC1 and the program operation is stopped. .

도 9는 몇몇 실시예들에 따른 다른 쓰기 증폭 관리기를 설명하기 위한 블록도이다.9 is a block diagram illustrating another write amplification manager according to some embodiments.

도 9를 참조하면, 쓰기 증폭 관리기(215)는 도 5 및 도 6을 통해 설명된 플래시 변환 계층 검사기(2150)와 도 7 및 도 8에서 설명된 버퍼 메모리 검사기(2152)를 모두 포함할 수 있다. 즉, 몇몇 실시예들에 따른 쓰기 증폭 관리기(215)는 플래시 변환 계층 검사기(2150)와 버퍼 메모리 검사기(2152)의 병렬적 동작을 통해, 제1 데이터가 유효하지 않은 데이터인지를 판단할 수 있다.Referring to FIG. 9 , the write amplification manager 215 may include both the flash translation layer checker 2150 described with reference to FIGS. 5 and 6 and the buffer memory checker 2152 described with reference to FIGS. 7 and 8 . . That is, the write amplification manager 215 according to some embodiments may determine whether the first data is invalid through parallel operations of the flash translation layer inspector 2150 and the buffer memory inspector 2152. .

몇몇 실시예들에 따른 도 9의 쓰기 증폭 관리기(215)의 동작을 도 10의 흐름도를 통해 살펴본다.An operation of the write amplification manager 215 of FIG. 9 according to some embodiments will be described through a flowchart of FIG. 10 .

도 10은 몇몇 실시예들에 따른 도 9의 다른 쓰기 증폭 관리기의 동작을 설명하기 위한 흐름도이다.10 is a flowchart illustrating an operation of another write amplification manager of FIG. 9 according to some embodiments.

도 1, 도 3, 도 9 및 도 10을 참조하면, 제1 메모리 셀(MC1)에 대하여, 제1 데이터를 기록하기 위해 1번째 프로그램 동작을 수행한다(S300).Referring to FIGS. 1, 3, 9, and 10 , a first program operation is performed to write first data to the first memory cell MC1 (S300).

이후, 버퍼 메모리 검사기(2152)를 통해, 제1 데이터가 버퍼 메모리(216) 내에서 유효하지 않은 데이터인지를 판단할 수 있다(S310). 또한, 플래시 변환 계층 검사기(2150)를 통해, 제1 데이터가 플래시 변환 계층(214) 내에서 유효하지 않은 데이터인지를 판단할 수 있다(S320). 버퍼 메모리 검사기(2152)의 동작과 플래시 변환 계층 검사기(2150)의 동작은 병렬적으로 수행될 수 있다.Thereafter, it may be determined whether the first data is invalid data in the buffer memory 216 through the buffer memory checker 2152 (S310). In addition, it is possible to determine whether the first data is invalid data in the flash conversion layer 214 through the flash conversion layer checker 2150 (S320). The operation of the buffer memory checker 2152 and the operation of the flash translation layer checker 2150 may be performed in parallel.

만약, 버퍼 메모리 검사기(2152)를 통해, 제1 데이터가 버퍼 메모리(216) 내에서 유효하지 않은 데이터로 판단되면(Y), 제1 메모리 셀(MC1)에 대한 2번째 프로그램 동작을 수행하지 않는다.If the first data is determined to be invalid data in the buffer memory 216 through the buffer memory checker 2152 (Y), the second program operation for the first memory cell MC1 is not performed. .

또한, 만약, 플래시 변환 계층 검사기(2150)를 통해, 제1 데이터가 플래시 변환 계층(214) 내에서 유효하지 않은 데이터로 판단되면(Y), 제1 메모리 셀(MC1)에 대한 2번째 프로그램 동작을 수행하지 않는다.In addition, if the first data is determined to be invalid data in the flash conversion layer 214 through the flash conversion layer checker 2150 (Y), a second program operation for the first memory cell MC1 is performed. does not perform

즉, 버퍼 메모리 검사기(2152)를 통해, 제1 데이터가 버퍼 메모리(216) 내에서 유효한 데이터로 판단되고(N), 플래시 변환 계층 검사기(2150)를 통해, 제1 데이터가 플래시 변환 계층(214) 내에서 유효한 데이터로 판단된 경우(N), 제1 메모리 셀(MC1)에 대한 2번째 프로그램이 수행될 수 있다.That is, through the buffer memory inspector 2152, the first data is determined as valid data in the buffer memory 216 (N), and through the flash translation layer inspector 2150, the first data is determined as the flash translation layer 214 ), a second program for the first memory cell MC1 may be performed (N).

이를 통해, 제1 메모리 셀(MC1)과 연결된 워드 라인(예를 들어, 제1 워드 라인(WL1))이 불필요하게 프로그램되는 경우를 방지할 수 있다.Through this, it is possible to prevent unnecessary programming of the word line (eg, the first word line WL1) connected to the first memory cell MC1.

도 5 내지 도 10을 통해, 상술된 몇몇 실시예들에 따른 스토리지 컨트롤러(210)의 동작을 블록을 간략화하여 도시한 도면들을 통해 설명한다.5 to 10, operations of the storage controller 210 according to some of the above-described embodiments will be described with simplified block diagrams.

도 11 내지 도 13은 도 5 내지 도 10을 통해 설명된 몇몇 실시예들에 따른 스토리지 컨트롤러의 동작을 설명하기 위한 도면이다.11 to 13 are diagrams for explaining operations of the storage controller according to the exemplary embodiments described above with reference to FIGS. 5 to 10 .

도 1, 도 5, 도 7, 도 9, 도 11 내지 도 13을 참조하면, 제1 방향으로 연장된 복수의 워드 라인들(WL5 내지 WL8)과 제1 방향과 교차된 제2 방향으로 연장된 복수의 스트링 선택 라인들(SSL1 내지 SSL3)이 교차하는 지점에 메모리 셀들(MC1 내지 MC12)이 형성될 수 있다.1, 5, 7, 9, and 11 to 13, a plurality of word lines WL5 to WL8 extending in a first direction and a second direction crossing the first direction Memory cells MC1 to MC12 may be formed at points where the plurality of string selection lines SSL1 to SSL3 intersect.

이때, 제10 메모리 셀(MC10)과 제11 메모리 셀(MC11)에 기록되는 데이터가 버퍼 메모리 검사기(2152) 및/또는 플래시 변환 계층 검사기(2150)를 통해, 유효하지 않은 데이터임이 판단된 것으로 가정한다. 이때, 제10 메모리 셀(MC10)과 제11 메모리 셀(MC11)을 유효하지 않은 메모리 셀(Invalid mc)로 정의한다.At this time, it is assumed that the data written in the tenth memory cell MC10 and the eleventh memory cell MC11 are determined to be invalid data through the buffer memory inspector 2152 and/or the flash translation layer inspector 2150. do. At this time, the tenth memory cell MC10 and the eleventh memory cell MC11 are defined as invalid memory cells Invalid mc.

만약, 스토리지 컨트롤러(210)가 2번의 프로그램을 통해 메모리 셀들(MC1 내지 MC12)에 데이터를 기록하는데, 2번째 프로그램을 수행하기 전에, 데이터의 유효성을 검사하지 않고, 모든 메모리 셀들(MC1 내지 MC12)에 대해 프로그램을 수행한다면, 도 12와 같이, 제10 메모리 셀(MC10)과 제11 메모리 셀(MC11)이 연결된 제5 워드 라인(WL5)에 대해 불필요한 프로그램 동작을 수행하게 된다.If the storage controller 210 writes data to the memory cells MC1 to MC12 through two programs, all memory cells MC1 to MC12 do not check the validity of the data before performing the second program. If a program is performed for , an unnecessary program operation is performed on the fifth word line WL5 to which the tenth memory cell MC10 and the eleventh memory cell MC11 are connected, as shown in FIG. 12 .

도 12를 예를 들면, 메모리 셀들(MC1 내지 MC12)에 대한 2번의 멀티 프로그램을 수행하기 위해, 제1 메모리 셀(MC1)부터 제6 메모리 셀(MC6)까지 차례대로, 0부터 5의 순서로 1번째 프로그램을 수행할 수 있다. 이후, 제1 메모리 셀(MC1)부터 제3 메모리 셀(MC3)까지 6부터 8의 순서로 2번째 프로그램을 수행할 수 있다. 이후, 제7 메모리 셀(MC7)부터 제9 메모리 셀(MC9)까지 9부터 11의 순서로 1번째 프로그램을 수행할 수 있다. 이후, 제4 메모리 셀(MC4)부터 제6 메모리 셀(MC6)까지 12부터 14의 순서로 2번째 프로그램을 수행할 수 있다. 이후, 제10 메모리 셀(MC10)부터 제12 메모리 셀(MC12)까지 15부터 17의 순서로 1번째 프로그램을 수행할 수 있다. 이후, 제7 메모리 셀(MC7)부터 제9 메모리 셀(MC9)까지 18부터 20의 순서로 2번째 프로그램이 수행될 수 있다. 제12 메모리 셀(MC12) 이후의 메모리 셀들은 생략된 관계로, 21 내지 23의 순서로 프로그램되는 동작은 도 12에 도시되지 않았으나, 21 내지 23의 순서로 프로그램이 수행된 이후, 제10 메모리 셀(MC10) 내지 제12 메모리 셀(MC12)까지 24부터 26의 순서로 2번째 프로그램이 수행될 수 있다. 즉, 스토리지 컨트롤러(210)가 2번의 프로그램을 통해 메모리 셀들(MC1 내지 MC12)에 데이터를 기록하는데, 2번째 프로그램을 수행하기 전에, 데이터의 유효성을 검사하지 않고, 모든 메모리 셀들(MC1 내지 MC12)에 대해 프로그램을 수행한다면, 도 12와 같이, 제10 메모리 셀(MC10)과 제11 메모리 셀(MC11)이 연결된 제5 워드 라인(WL5)에 대해 불필요한 프로그램 동작을 수행하게 된다.Referring to FIG. 12 as an example, in order to perform two multi-programs on the memory cells MC1 to MC12, the first memory cell MC1 to the sixth memory cell MC6 are sequentially numbered from 0 to 5. The first program can be executed. Thereafter, a second program may be performed in the order of 6 to 8 from the first memory cell MC1 to the third memory cell MC3. Thereafter, the first program may be performed in the order of 9 to 11 from the seventh memory cell MC7 to the ninth memory cell MC9. Thereafter, the second program may be performed in the order of 12 to 14 from the fourth memory cell MC4 to the sixth memory cell MC6. Thereafter, the first program may be performed in the order of 15 to 17 from the tenth memory cell MC10 to the twelfth memory cell MC12. Thereafter, a second program may be performed in the order of 18 to 20 from the seventh memory cell MC7 to the ninth memory cell MC9 . Since the memory cells after the twelfth memory cell MC12 are omitted, the operation of programming in the order of 21 to 23 is not shown in FIG. 12, but after the programming in the order of 21 to 23 is performed, the tenth memory cell A second program may be performed in the order of 24 to 26 from (MC10) to the twelfth memory cell (MC12). That is, the storage controller 210 writes data to the memory cells MC1 to MC12 through two programs, and before performing the second program, data validity is not checked, and all the memory cells MC1 to MC12 If a program is performed for , an unnecessary program operation is performed on the fifth word line WL5 to which the tenth memory cell MC10 and the eleventh memory cell MC11 are connected, as shown in FIG. 12 .

따라서, 도 13에서와 같이, 스토리지 컨트롤러(210)가 2번의 프로그램을 통해 메모리 셀들(MC1 내지 MC12)에 데이터를 기록하는데, 2번째 프로그램을 수행하기 전에, 쓰기 증폭 관리기(215)를 통해, 데이터의 유효성을 판단한 후, 2번째 프로그램을 수행한다면, 도 13에서와 같이, 제10 메모리 셀(MC10)과 제11 메모리 셀(MC11)이 연결된 제5 워드 라인(WL5)에 대해 불필요한 프로그램 동작을 수행하지 않을 수 있다.Accordingly, as shown in FIG. 13 , the storage controller 210 writes data to the memory cells MC1 to MC12 through two programs. Prior to performing the second program, the data is written through the write amplification manager 215 If the second program is performed after determining the validity of , as shown in FIG. 13 , an unnecessary program operation is performed on the fifth word line WL5 to which the 10th memory cell MC10 and the 11th memory cell MC11 are connected. may not

도 14는 몇몇 실시예들에 따른 다른 쓰기 증폭 관리기를 설명하기 위한 블록도이다.14 is a block diagram illustrating another write amplification manager according to some embodiments.

도 1 및 도 14를 참조하면, 몇몇 실시예들에 따른 스토리지 컨트롤러(210)의 쓰기 증폭 관리기(215)는 오픈 메모리 셀 검출기(2154)와 메모리 셀 압축기(2156)를 포함한다.1 and 14 , the write amplification manager 215 of the storage controller 210 according to some embodiments includes an open memory cell detector 2154 and a memory cell compressor 2156.

쓰기 증폭 관리기(215)는 메모리 셀에 데이터를 기입하기 위한, 마지막 프로그램 동작을 수행하기 전에, 오픈 메모리 셀 검출기(2154)를 통해, 오픈 메모리 셀이 존재하는 블록을 찾을 수 있다.The write amplification manager 215 may find a block in which an open memory cell exists, through the open memory cell detector 2154, before performing a final program operation for writing data into the memory cell.

예를 들어, 오픈 메모리 셀 검출기(2154)는 제1 블록에 제1 데이터를 기록하기 위해, 2번째 프로그램을 수행하기 전에, 제2 블록에 오픈 메모리 셀이 있는지 확인할 수 있다. 오픈 메모리 셀 검출기(2154)는 제2 블록에 제한되지 않고, 제3 블록 등에 대해서도, 오픈 메모리 셀이 있는지 확인할 수 있다.For example, the open memory cell detector 2154 may check whether there are open memory cells in the second block before performing a second program to write the first data in the first block. The open memory cell detector 2154 is not limited to the second block and may check whether an open memory cell exists in a third block or the like.

오픈 메모리 셀은 예를 들어, 제1 블록에 제1 데이터를 기록하기 위한 2번째 프로그램을 수행하기 전에, 제1 블록을 제외한 나머지 블록 중, 1번째 프로그램이 수행된 워드 라인들 중, 한 번도 프로그램되지 않은 메모리 셀의 위치를 오픈 메모리 셀로 정의할 수 있다.An open memory cell, for example, before performing a second program for writing first data in a first block, among word lines on which the first program is executed, among blocks other than the first block, is never programmed. A location of an unopened memory cell may be defined as an open memory cell.

예를 들어, 제1 블록의 스트링 선택 트랜지스터로부터 일정한 높이에 위치하는 제3 워드 라인에 대한 2번째 프로그램을 수행하기 전에, 제2 블록의 스트링 선택 트랜지스터로부터 제3 워드 라인과 동일한 높이의 제3' 워드 라인에 한 번도 프로그램되지 않은 메모리 셀의 위치가 존재한다고 판단되면, 그 위치를 오픈 메모리 셀로 정의할 수 있다.For example, before performing the second program on the third word line located at a certain height from the string select transistor of the first block, the third' from the string select transistor of the second block has the same height as the third word line. If it is determined that a location of a memory cell that has never been programmed in a word line exists, the location may be defined as an open memory cell.

이후, 제1 블록에 제1 데이터를 기록하기 위해, 2번째 프로그램을 수행하기 전에, 메모리 셀 압축기(2156)를 통해, 2번째 프로그램이 수행될 메모리 셀을 오픈 메모리 셀의 위치로 이동시켜, 메모리 셀을 압축시킬 수 있다.Thereafter, in order to write the first data in the first block, before the second program is performed, the memory cell where the second program is to be executed is moved to the position of the open memory cell through the memory cell compressor 2156, cells can be compressed.

이를 통해, 제1 블록에 불필요하게 프로그램되는 워드 라인을 제거할 수 있다.Through this, word lines unnecessarily programmed in the first block may be removed.

만약, 제1 블록 역시 오픈 메모리 셀이 존재한다면, 제1 블록과 제2 블록 중 이동시키는 메모리 셀의 개수가 작은 블록의 메모리 셀을 이동시킬 수 있다. 즉, 제1 블록과 제2 블록 중 오픈 메모리 셀이 적게 존재하는 블록으로 2번째 프로그램이 수행될 메모리 셀이 이동할 수 있다.If open memory cells are also present in the first block, memory cells of a block having a smaller number of memory cells to be moved may be moved between the first block and the second block. That is, a memory cell in which a second program is to be executed may be moved to a block having a small number of open memory cells among the first block and the second block.

만약, 제3 블록에 오픈 메모리 셀이 존재한다면, 제1 블록에서 2번째 프로그램이 진행될 메모리 셀이 제3 블록의 오픈 메모리 셀로 이동되어 메모리 셀이 압축될 수도 있다.If an open memory cell exists in the third block, a memory cell to be programmed second in the first block may be moved to an open memory cell in the third block, and the memory cell may be compressed.

이에 대한 동작을, 도 15의 흐름도를 통해 살펴본다.The operation for this will be reviewed through the flowchart of FIG. 15 .

도 15는 몇몇 실시예들에 따른 도 14의 다른 쓰기 증폭 관리기의 동작을 설명하기 위한 흐름도이다.15 is a flowchart illustrating an operation of another write amplification manager of FIG. 14 according to some embodiments.

도 1, 도 14, 및 도 15를 참조하면, 제1 블록에는 제1 데이터를 기록하고, 제2 블록에는 제2 데이터를 기록하기 위해, 제1 블록과 제2 블록 각각에 대해, 1번째 프로그램이 수행된다(S400).1, 14, and 15, in order to record first data in the first block and second data in the second block, for each of the first block and the second block, a first program This is performed (S400).

이후, 제1 블록에는 제1 데이터를 기록하고, 제2 블록에는 제2 데이터를 기록하기 위해, 제1 블록과 제2 블록 각각에 대해, 2번째 프로그램을 수행하기 전에, 제1 블록 또는 제2 블록에 오픈 메모리 셀이 존재하는지, 오픈 메모리 셀 검출기(2154)를 통해 확인한다(S410).Thereafter, in order to record the first data in the first block and the second data in the second block, before performing a second program on each of the first block and the second block, the first block or the second block Whether an open memory cell exists in the block is checked through the open memory cell detector 2154 (S410).

만약, 제1 블록 또는 제2 블록에 오픈 메모리 셀이 존재하지 않는다고 판단되면(N), 제1 블록 및 제2 블록 각각에 대해, 2번째 프로그램을 수행한다(S330).If it is determined that no open memory cell exists in the first block or the second block (N), a second program is performed on each of the first block and the second block (S330).

그렇지 않고, 제1 블록 또는 제2 블록에 오픈 메모리 셀이 존재한다고 판단되면(Y), 오픈 메모리 셀이 존재하는 위치에, 2번째 프로그램이 수행되어야 할 메모리 셀을 이동시켜, 메모리 셀 압축을 메모리 셀 압축기(2156)를 통해 수행한다(S320).Otherwise, if it is determined that an open memory cell exists in the first block or the second block (Y), the memory cell where the second program is to be executed is moved to the location where the open memory cell exists, and the memory cell is compressed. It is performed through the cell compressor 2156 (S320).

이후, 제1 블록 및 제2 블록에 2번째 프로그램을 수행한다(S330).Thereafter, a second program is performed on the first block and the second block (S330).

도 14 및 도 15를 통해 상술된 설명을, 블록을 간략화 하여 도시한 도면들인 도 16 및 도 17을 통해 설명한다.The above description with reference to FIGS. 14 and 15 will be described with reference to FIGS. 16 and 17, which are drawings showing simplified blocks.

도 16 내지 도 17은 도 14 내지 도 15를 통해 설명된 몇몇 실시예들에 따른 쓰기 증폭 관리기의 동작을 설명하기 위한 도면이다.16 and 17 are diagrams for explaining operations of the write amplification manager according to some embodiments described with reference to FIGS. 14 and 15 .

도 1, 도 14, 도 16, 및 도 17을 참조하면, 제1 블록(BLK1)과 제2 블록(BLK2)에 대해, 오픈 메모리 셀이 존재하는지 확인할 수 있다. 이는 설명을 위한 것으로, 비휘발성 메모리 장치(220)에 존재하는 어떤 블록에 대해서도 오픈 메모리 셀이 존재하는지 확인할 수 있음은 물론이다.Referring to FIGS. 1 , 14 , 16 , and 17 , it may be checked whether open memory cells are present in the first block BLK1 and the second block BLK2 . This is for explanation, and it is needless to say that it is possible to check whether an open memory cell is present in any block present in the nonvolatile memory device 220 .

제1 블록(BLK1)과 제2 블록(BLK2) 각각은 제4 워드 라인(WL4) 내지 제8 워드 라인(WL8)들을 포함한다. 또한, 제1 블록(BLK1)과 제2 블록(BLK2) 각각은 제1 스트링 선택 라인(SSL1) 내지 제3 스트링 선택 라인(SSL3)을 포함한다. 즉, 제1 블록(BLK1)과 제2 블록(BLK2) 각각에는 제4 워드 라인(WL4) 내지 제8 워드 라인(WL8)들과 제1 스트링 선택 라인(SSL1) 내지 제3 스트링 선택 라인(SSL3)이 교차하는 위치에, 메모리 셀들(제1 블록(BLK1)에는 메모리 셀들(MC1a 내지 MC15a), 그리고 제2 블록(BLK2)에는 메모리 셀들(MC1b 내지 MC15b))이 위치할 수 있다.Each of the first block BLK1 and the second block BLK2 includes a fourth word line WL4 to an eighth word line WL8 . Also, each of the first block BLK1 and the second block BLK2 includes a first string selection line SSL1 to a third string selection line SSL3 . That is, the fourth word line WL4 to eighth word lines WL8 and the first string select line SSL1 to third string select line SSL3 are provided in each of the first block BLK1 and the second block BLK2. ) may intersect memory cells (memory cells MC1a to MC15a in the first block BLK1 and memory cells MC1b to MC15b in the second block BLK2).

예를 들어, 제1 블록(BLK1)의 메모리 셀들(MC1a 내지 MC6a)들과 제2 블록(BLK2)의 메모리 셀들(MC1b 내지 MC6b)은 프로그램이 완료된 메모리 셀들이라 가정한다.For example, it is assumed that the memory cells MC1a to MC6a of the first block BLK1 and the memory cells MC1b to MC6b of the second block BLK2 are memory cells whose programming has been completed.

또한, 제1 블록(BLK1)에 제1 데이터를 기록하기 위해, 메모리 셀들(MC7a 내지 MC11a)에 대해, 1번째 프로그램이 수행되었다고 가정한다. 이때, 제2 블록(BLK2)에는 제2 데이터를 기록하기 위해, 메모리 셀들(MC7b 내지 MC10b)이 1번째 프로그램 수행되었다고 가정한다.Also, it is assumed that a first program is performed on the memory cells MC7a to MC11a in order to write the first data in the first block BLK1. At this time, it is assumed that the first program is performed on the memory cells MC7b to MC10b to write the second data in the second block BLK2.

즉, 제1 블록(BLK1)에서 1번째 프로그램된 메모리 셀을 포함하는 워드 라인들(WL5, 및 WL6) 중, 프로그램이 되지 않은 메모리 셀, 즉, 오픈 메모리 셀을 포함한 워드 라인은 제5 워드 라인(WL5)의 메모리 셀(MC12a)가 된다.That is, among the word lines WL5 and WL6 including the first programmed memory cell in the first block BLK1, the word line including the unprogrammed memory cell, that is, the open memory cell, is the fifth word line. It becomes the memory cell MC12a of (WL5).

오픈 메모리 셀 검출기(2154)는 제1 블록(BLK1)의 메모리 셀(MC12a)를 오픈 메모리 셀로 검출하고, 메모리 셀 압축기(2156)를 통해, 제2 블록(BLK2)에 제2 데이터를 기입하기 위해, 2번째 프로그램이 수행되어야하는 워드 라인들(WL5, 및 WL6) 중, 프로그램이 되지 않은 메모리 셀을 포함하는 워드 라인(WL5)의 메모리 셀(MC10b)을 도 17과 같이, 이동시켜 메모리 셀을 압축시킨다.The open memory cell detector 2154 detects the memory cell MC12a of the first block BLK1 as an open memory cell and writes second data into the second block BLK2 through the memory cell compressor 2156. , among the word lines WL5 and WL6 on which the second program is to be performed, the memory cell MC10b of the word line WL5 including the unprogrammed memory cell is moved as shown in FIG. 17 to change the memory cell. Compress.

도 16에서는 오픈 메모리 셀을 메모리 셀(MC12a)인 것으로 정의하였으나, 이에 제한되지 않고, 제2 블록(BLK2)의 메모리 셀들(MC11b과 MC12b)이 오픈 메모리 셀인 것으로 정의하고, 제1 블록(BLK1)의 메모리 셀들(MC10a와 MC11a)를 제2 블록(BLK2)의 메모리 셀들(MC11b과 MC12b)의 위치로 이동시켜 압축을 수행할 수도 있다.In FIG. 16 , the open memory cell is defined as the memory cell MC12a, but is not limited thereto, and the memory cells MC11b and MC12b of the second block BLK2 are defined as open memory cells, and the first block BLK1 Compression may be performed by moving the memory cells MC10a and MC11a of the second block BLK2 to the positions of the memory cells MC11b and MC12b.

이를 통해, 도 17과 같이, 제2 블록(BLK2)에서 메모리 셀(MC10b) 위치의 1번째 프로그램된 메모리 셀을 제1 블록(BLK1)의 오픈 메모리 셀 위치(MC12a)로 옮겨 압축을 수행함으로써, 2번째 프로그램 수행 시, 제2 블록(BLK2)에서 불필요하게 프로그램이 수행되는 워드 라인을 줄일 수 있다. Through this, as shown in FIG. 17 , compression is performed by moving the first programmed memory cell at the location of the memory cell MC10b in the second block BLK2 to the open memory cell location MC12a in the first block BLK1, When the second program is executed, word lines on which the program is unnecessarily executed in the second block BLK2 may be reduced.

이를 통해, 몇몇 실시예들에 따른 스토리지 장치(200)의 쓰기 증폭 특성을 향상시키고, 플러시 속도를 향상시킬 수 있다.Through this, write amplification characteristics and flush speed of the storage device 200 according to some embodiments may be improved.

도 18은 몇몇 실시예들에 따른 스토리지 장치가 적용된 스토리지 시스템을 설명하기 위한 예시적인 블록도이다.18 is an exemplary block diagram illustrating a storage system to which a storage device according to some embodiments is applied.

도 18의 스토리지 시스템(1000)은 기본적으로 휴대용 통신 단말기(mobile phone), 스마트폰(smart phone), 태블릿 PC(tablet personal computer), 웨어러블 기기, 헬스케어 기기 또는 IOT(internet of things) 기기와 같은 모바일(mobile) 시스템일 수 있다. 하지만 도 18의 스토리지 시스템(1000)은 반드시 모바일 시스템에 한정되는 것은 아니고, 개인용 컴퓨터(personal computer), 랩탑(laptop) 컴퓨터, 서버(server), 미디어 재생기(media player) 또는 내비게이션(navigation)과 같은 차량용 장비(automotive device) 등이 될 수도 있다.The storage system 1000 of FIG. 18 is basically a mobile phone, a smart phone, a tablet personal computer (PC), a wearable device, a healthcare device, or an internet of things (IOT) device. It may be a mobile system. However, the storage system 1000 of FIG. 18 is not necessarily limited to a mobile system, and may be used in a personal computer, a laptop computer, a server, a media player, or a navigation device. It may be an automotive device or the like.

도 18을 참조하면, 스토리지 시스템(1000)은 메인 프로세서(main processor)(1100), 메모리(1200a, 및 1200b) 및 스토리지 장치(1300a, 1300b)를 포함할 수 있으며, 추가로 촬영 장치(image capturing device)(1410), 사용자 입력 장치(user input device)(1420), 센서(1430), 통신 장치(1440), 디스플레이(1450), 스피커(1460), 전력 공급 장치(power supplying device)(1470) 및 연결 인터페이스(connecting interface)(1480) 중 하나 이상을 포함할 수 있다.Referring to FIG. 18 , the storage system 1000 may include a main processor 1100, memories 1200a and 1200b, and storage devices 1300a and 1300b, and additionally includes an image capturing device. device 1410, user input device 1420, sensor 1430, communication device 1440, display 1450, speaker 1460, power supplying device 1470 and a connecting interface 1480.

메인 프로세서(1100)는 스토리지 시스템(1000)의 전반적인 동작, 보다 구체적으로는 스토리지 시스템(1000)을 이루는 다른 구성 요소들의 동작을 제어할 수 있다. 이와 같은 메인 프로세서(1100)는 범용 프로세서, 전용 프로세서 또는 애플리케이션 프로세서(application processor) 등으로 구현될 수 있다. The main processor 1100 may control the overall operation of the storage system 1000 and, more specifically, the operation of other components constituting the storage system 1000 . The main processor 1100 may be implemented as a general-purpose processor, a dedicated processor, or an application processor.

메인 프로세서(1100)는 하나 이상의 CPU 코어(1110)를 포함할 수 있으며, 메모리(1200a, 1200b) 및/또는 스토리지 장치(1300a, 1300b)를 제어하기 위한 컨트롤러(1120)를 더 포함할 수 있다. 실시예에 따라서는, 메인 프로세서(1100)는 AI(artificial intelligence) 데이터 연산 등 고속 데이터 연산을 위한 전용 회로인 가속기(accelerator)(1130)를 더 포함할 수 있다. 이와 같은 가속기(1130)는 GPU(Graphics Processing Unit), NPU(Neural Processing Unit) 및/또는 DPU(Data Processing Unit) 등을 포함할 수 있으며, 메인 프로세서(1100)의 다른 구성 요소와는 물리적으로 독립된 별개의 칩(chip)으로 구현될 수도 있다.The main processor 1100 may include one or more CPU cores 1110 and may further include a controller 1120 for controlling the memories 1200a and 1200b and/or the storage devices 1300a and 1300b. Depending on embodiments, the main processor 1100 may further include an accelerator 1130 that is a dedicated circuit for high-speed data operations such as artificial intelligence (AI) data operations. Such an accelerator 1130 may include a graphics processing unit (GPU), a neural processing unit (NPU), and/or a data processing unit (DPU), and may be physically independent from other components of the main processor 1100. It may be implemented as a separate chip.

메모리(1200a, 1200b)는 스토리지 시스템(1000)의 주기억 장치로 사용될 수 있으며, SRAM 및/또는 DRAM 등의 휘발성 메모리를 포함할 수 있으나, 플래시 메모리, PRAM, MRAM 및/또는 RRAM 등의 비휘발성 메모리를 포함할 수도 있다. 메모리(1200a, 1200b)는 메인 프로세서(1100)와 동일한 패키지 내에 구현되는 것도 가능하다.The memories 1200a and 1200b may be used as main memory devices of the storage system 1000 and may include volatile memories such as SRAM and/or DRAM, but may include non-volatile memories such as flash memory, PRAM, MRAM, and/or RRAM. may also include The memories 1200a and 1200b may also be implemented in the same package as the main processor 1100 .

스토리지 장치(1300a, 및 1300b)는 전원 공급 여부와 관계 없이 데이터를 저장하는 비휘발성 저장 장치로서 기능할 수 있으며, 메모리(1200a, 1200b)에 비해 상대적으로 큰 저장 용량을 가질 수 있다. 스토리지 장치(1300a, 1300b)는 스토리지 컨트롤러(1310a, 1310b)와, 스토리지 컨트롤러(1310a, 1310b)의 제어 하에 데이터를 저장하는 비휘발성 메모리(non-volatile memory, NVM)(1320a, 1320b)를 포함할 수 있다. 비휘발성 메모리(1320a, 1320b)는 2D(2-dimensional) 구조 혹은 3D(3-dimensional) V-NAND(Vertical NAND) 구조의 플래시 메모리를 포함할 수 있으나, PRAM 및/또는 RRAM 등의 다른 종류의 비휘발성 메모리를 포함할 수도 있다. The storage devices 1300a and 1300b may function as non-volatile storage devices that store data regardless of whether or not power is supplied, and may have a relatively large storage capacity compared to the memories 1200a and 1200b. The storage devices 1300a and 1300b may include storage controllers 1310a and 1310b and non-volatile memories (NVMs) 1320a and 1320b that store data under the control of the storage controllers 1310a and 1310b. can Non-volatile memory (1320a, 1320b) may include a flash memory of a 2-dimensional (2D) structure or a 3-dimensional (3D) V-NAND (Vertical NAND) structure, but other types of PRAM and / or RRAM, etc. It may also include non-volatile memory.

스토리지 장치(1300a, 및 1300b)는 메인 프로세서(1100)와는 물리적으로 분리된 상태로 스토리지 시스템(1000)에 포함될 수도 있고, 메인 프로세서(1100)와 동일한 패키지 내에 구현될 수도 있다. 또한, 스토리지 장치(1300a, 1300b)는 SSD(solid state device) 혹은 메모리 카드(memory card)와 같은 형태를 가짐으로써, 후술할 연결 인터페이스(1480)와 같은 인터페이스를 통해 스토리지 시스템(1000)의 다른 구성 요소들과 탈부착 가능하도록 결합될 수도 있다. 이와 같은 스토리지 장치(1300a, 1300b)는 UFS(Universal Flash Storage), eMMC(embedded multi-media card) 혹은 NVMe(non-volatile memory express)와 같은 표준 규약이 적용되는 장치일 수 있으나, 반드시 이에 한정되는 건 아니다.The storage devices 1300a and 1300b may be included in the storage system 1000 while being physically separated from the main processor 1100 or implemented in the same package as the main processor 1100 . In addition, since the storage devices 1300a and 1300b have a form such as a solid state device (SSD) or a memory card, other components of the storage system 1000 can be provided through an interface such as a connection interface 1480 to be described later. It may be coupled to be detachable with elements. The storage devices 1300a and 1300b may be devices to which standard rules such as UFS (Universal Flash Storage), eMMC (embedded multi-media card), or NVMe (non-volatile memory express) are applied, but are not necessarily limited thereto. It's not.

스토리지 장치(1300a, 및 1300b)들 중 적어도 하나는 도 1 내지 도 17을 통해 상술된 스토리지 장치(200)일 수 있다.At least one of the storage devices 1300a and 1300b may be the storage device 200 described above with reference to FIGS. 1 to 17 .

촬영 장치(1410)는 정지 영상 또는 동영상을 촬영할 수 있으며, 카메라(camera), 캠코더(camcorder) 및/또는 웹캠(webcam) 등일 수 있다. The photographing device 1410 may capture a still image or a video, and may be a camera, a camcorder, and/or a webcam.

사용자 입력 장치(1420)는 스토리지 시스템(1000)의 사용자로부터 입력된 다양한 유형의 데이터를 수신할 수 있으며, 터치 패드(touch pad), 키패드(keyboard), 키보드(keyboard), 마우스(mouse) 및/또는 마이크(microphone) 등일 수 있다.The user input device 1420 may receive various types of data input from a user of the storage system 1000, and may use a touch pad, a keypad, a keyboard, a mouse, and/or a touch pad. Alternatively, it may be a microphone or the like.

센서(1430)는 스토리지 시스템(1000)의 외부로부터 획득될 수 있는 다양한 유형의 물리량을 감지하고, 감지된 물리량을 전기 신호로 변환할 수 있다. 이와 같은 센서(1430)는 온도 센서, 압력 센서, 조도 센서, 위치 센서, 가속도 센서, 바이오 센서(biosensor) 및/또는 자이로스코프(gyroscope) 센서 등일 수 있다. The sensor 1430 can detect various types of physical quantities that can be obtained from the outside of the storage system 1000 and convert the sensed physical quantities into electrical signals. The sensor 1430 may be a temperature sensor, a pressure sensor, an illuminance sensor, a position sensor, an acceleration sensor, a biosensor, and/or a gyroscope sensor.

통신 장치(1440)는 다양한 통신 규약에 따라 스토리지 시스템(1000) 외부의 다른 장치들과의 사이에서 신호의 송신 및 수신을 수행할 수 있다. 이와 같은 통신 장치(1440)는 안테나, 트랜시버(transceiver) 및/또는 모뎀(MODEM) 등을 포함하여 구현될 수 있다.The communication device 1440 may transmit and receive signals with other devices outside the storage system 1000 according to various communication protocols. Such a communication device 1440 may be implemented by including an antenna, a transceiver, and/or a modem (MODEM).

디스플레이(1450) 및 스피커(1460)는 스토리지 시스템(1000)의 사용자에게 각각 시각적 정보와 청각적 정보를 출력하는 출력 장치로 기능할 수 있다.The display 1450 and the speaker 1460 may function as output devices that output visual information and auditory information to the user of the storage system 1000 , respectively.

전력 공급 장치(1470)는 스토리지 시스템(1000)에 내장된 배터리(도시 안함) 및/또는 외부 전원으로부터 공급되는 전력을 적절히 변환하여 스토리지 시스템(1000)의 각 구성 요소들에게 공급할 수 있다.The power supply device 1470 may appropriately convert power supplied from a battery (not shown) and/or an external power source built into the storage system 1000 and supply it to each component of the storage system 1000 .

연결 인터페이스(1480)는 스토리지 시스템(1000)과, 스토리지 시스템(1000)에 연결되어 시스템(1000과 데이터를 주고받을 수 있는 외부 장치 사이의 연결을 제공할 수 있다. 연결 인터페이스(1480)는 ATA(Advanced Technology Attachment), SATA(Serial ATA), e-SATA(external SATA), SCSI(Small Computer Small Interface), SAS(Serial Attached SCSI), PCI(Peripheral Component Interconnection), PCIe(PCI express), NVMe, IEEE 1394, USB(universal serial bus), SD(secure digital) 카드, MMC(multi-media card), eMMC, UFS, eUFS(embedded Universal Flash Storage), CF(compact flash) 카드 인터페이스 등과 같은 다양한 인터페이스 방식으로 구현될 수 있다.The connection interface 1480 may provide a connection between the storage system 1000 and an external device that is connected to the storage system 1000 and can exchange data with the system 1000. The connection interface 1480 is an ATA (ATA) Advanced Technology Attachment), Serial ATA (SATA), external SATA (e-SATA), Small Computer Small Interface (SCSI), Serial Attached SCSI (SAS), Peripheral Component Interconnection (PCI), PCI express (PCIe), NVMe, IEEE Implemented in various interface methods such as 1394, USB (universal serial bus), SD (secure digital) card, MMC (multi-media card), eMMC, UFS, eUFS (embedded universal flash storage), CF (compact flash) card interface, etc. It can be.

도 19는 몇몇 실시예들에 따른 스토리지 장치가 적용된 데이터 센터를 설명하기 위한 예시적인 블록도이다.19 is an exemplary block diagram illustrating a data center to which a storage device according to some embodiments is applied.

도 19를 참조하면, 데이터 센터(3000)는 각종 데이터를 모아두고 서비스를 제공하는 시설로서, 데이터 스토리지 센터라고 지칭될 수도 있다. 데이터 센터(3000)는 검색 엔진 및 데이터 베이스 운용을 위한 시스템일 수 있으며, 은행 등의 기업 또는 정부기관에서 사용되는 컴퓨팅 시스템일 수 있다. 데이터 센터(3000)는 애플리케이션 서버들(3100_1 내지 3100_n) 및 스토리지 서버들(3200_1 내지 3200_m)을 포함할 수 있다. 애플리케이션 서버들(3100_1 내지 3100_n)의 개수 및 스토리지 서버들(3200_1 내지 3200_m)의 개수는 실시예에 따라 다양하게 선택될 수 있고, 애플리케이션 서버들(3100_1 내지 3100_n)의 개수 및 스토리지 서버들(3200_1 내지 3200_m)의 개수는 서로 다를 수 있다.Referring to FIG. 19 , a data center 3000 is a facility that stores various types of data and provides services, and may also be referred to as a data storage center. The data center 3000 may be a system for operating a search engine and database, and may be a computing system used by companies such as banks or government agencies. The data center 3000 may include application servers 3100_1 to 3100_n and storage servers 3200_1 to 3200_m. The number of application servers 3100_1 to 3100_n and the number of storage servers 3200_1 to 3200_m may be variously selected according to embodiments, and the number of application servers 3100_1 to 3100_n and storage servers 3200_1 to 3200_m 3200_m) may be different from each other.

애플리케이션 서버(3100_1) 또는 스토리지 서버(3200_1)는 프로세서(3110, 3210) 및 메모리(3120, 3220) 중 적어도 하나를 포함할 수 있다. 스토리지 서버(3200_1)를 예시로 설명하면, 프로세서(3210_1)는 스토리지 서버(3200_1)의 전반적인 동작을 제어할 수 있고, 메모리(3220)에 액세스하여 메모리(3220)에 로딩된 명령어 및/또는 데이터를 실행할 수 있다. 메모리(3220)는 DDR SDRAM(Double Data Rate Synchronous DRAM), HBM(High Bandwidth Memory), HMC(Hybrid Memory Cube), DIMM(Dual In-line Memory Module), Optane DIMM 및/또는 NVMDIMM(Non-Volatile DIMM)일 수 있다. 실시예에 따라, 스토리지 서버(3200_1)에 포함되는 프로세서(3210_1)의 개수 및 메모리(3220)의 개수는 다양하게 선택될 수 있다. 일 실시예에서, 프로세서(3210_1)와 메모리(3220)는 프로세서-메모리 페어를 제공할 수 있다. 일 실시예에서, 프로세서(3210_1)와 메모리(3220)의 개수는 서로 다를 수도 있다. 프로세서(3210_1)는 단일 코어 프로세서 또는 다중 코어 프로세서를 포함할 수 있다. 스토리지 서버(3200_1)에 대한 상기 설명은, 애플리케이션 서버(3100_1)에도 유사하게 적용될 수 있다. 실시예에 따라, 애플리케이션 서버(3100_1)는 스토리지 장치(3150)를 포함하지 않을 수도 있다. 스토리지 서버(3200_1)는 적어도 하나 이상의 스토리지 장치(3250_1)를 포함할 수 있다. 스토리지 서버(3200_1)에 포함되는 스토리지 장치(3250_1)의 개수는 실시예에 따라 다양하게 선택될 수 있다.The application server 3100_1 or the storage server 3200_1 may include at least one of processors 3110 and 3210 and memories 3120 and 3220 . Taking the storage server 3200_1 as an example, the processor 3210_1 may control overall operations of the storage server 3200_1, access the memory 3220, and send instructions and/or data loaded into the memory 3220. can run The memory 3220 includes DDR double data rate synchronous DRAM (SDRAM), high bandwidth memory (HBM), hybrid memory cube (HMC), dual in-line memory module (DIMM), Optane DIMM, and/or non-volatile DIMM (NVMDIMM). ) can be. According to embodiments, the number of processors 3210_1 and the number of memories 3220 included in the storage server 3200_1 may be variously selected. In one embodiment, processor 3210_1 and memory 3220 may provide a processor-memory pair. In one embodiment, the number of processors 3210_1 and memories 3220 may be different from each other. The processor 3210_1 may include a single-core processor or a multi-core processor. The above description of the storage server 3200_1 may be similarly applied to the application server 3100_1. According to embodiments, the application server 3100_1 may not include the storage device 3150. The storage server 3200_1 may include one or more storage devices 3250_1. The number of storage devices 3250_1 included in the storage server 3200_1 may be variously selected according to embodiments.

애플리케이션 서버들(3100_1 내지 3100_n) 및 스토리지 서버들(3200_1 내지 3200_m)은 네트워크(3300)를 통해 서로 통신할 수 있다. 네트워크(3300)는 FC(Fibre Channel) 또는 이더넷(Ethernet) 등을 이용하여 구현될 수 있다. 이 때, FC는 상대적으로 고속의 데이터 전송에 사용되는 매체이며, 고성능/고가용성을 제공하는 광 스위치를 사용할 수 있다. 네트워크(3300)의 액세스 방식에 따라 스토리지 서버들(3200_1 내지 3200_m)은 파일 스토리지, 블록 스토리지, 또는 오브젝트 스토리지로서 제공될 수 있다.The application servers 3100_1 to 3100_n and the storage servers 3200_1 to 3200_m may communicate with each other through the network 3300 . The network 3300 may be implemented using Fiber Channel (FC) or Ethernet. At this time, FC is a medium used for relatively high-speed data transmission, and an optical switch providing high performance/high availability may be used. According to the access method of the network 3300, the storage servers 3200_1 to 3200_m may be provided as file storage, block storage, or object storage.

일 실시예에서, 네트워크(3300)는 SAN(Storage Area Network)와 같은 스토리지 전용 네트워크일 수 있다. 예를 들어, SAN은 FC 네트워크를 이용하고 FCP(FC Protocol)에 따라 구현된 FC-SAN일 수 있다. 다른 예를 들어, SAN은 TCP/IP 네트워크를 이용하고 iSCSI(SCSI over TCP/IP 또는 Internet SCSI) 프로토콜에 따라 구현된 IP-SAN일 수 있다. 다른 실시예에서, 네트워크(3300)는 TCP/IP 네트워크와 같은 일반 네트워크일 수 있다. 예를 들어, 네트워크(3300)는 FCoE(FC over Ethernet), NAS(Network Attached Storage), NVMe-oF(NVMe over Fabrics) 등의 프로토콜에 따라 구현될 수 있다.In one embodiment, network 3300 may be a storage-only network, such as a Storage Area Network (SAN). For example, the SAN may be an FC-SAN that uses an FC network and is implemented according to FC Protocol (FCP). As another example, the SAN may be an IP-SAN using a TCP/IP network and implemented according to the iSCSI (SCSI over TCP/IP or Internet SCSI) protocol. In another embodiment, network 3300 may be a generic network such as a TCP/IP network. For example, the network 3300 may be implemented according to protocols such as FC over Ethernet (FCoE), Network Attached Storage (NAS), and NVMe over Fabrics (NVMe-oF).

이하에서는, 애플리케이션 서버(3100_1) 및 스토리지 서버(3200_1)를 중심으로 설명하기로 한다. 애플리케이션 서버(3100_1)에 대한 설명은 다른 애플리케이션 서버(3100_n)에도 적용될 수 있고, 스토리지 서버(3200_1)에 대한 설명은 다른 스토리지 서버(3200_m)에도 적용될 수 있다.Hereinafter, the application server 3100_1 and the storage server 3200_1 will be mainly described. The description of the application server 3100_1 may be applied to other application servers 3100_n, and the description of the storage server 3200_1 may also be applied to other storage servers 3200_m.

애플리케이션 서버(3100_1)는 사용자 또는 클라이언트가 저장 요청한 데이터를 네트워크(3300)를 통해 스토리지 서버들(3200_1 내지 3200_m) 중 하나에 저장할 수 있다. 또한, 애플리케이션 서버(3100_1)는 사용자 또는 클라이언트가 독출 요청한 데이터를 스토리지 서버들(3200_1 내지 3200_m) 중 하나로부터 네트워크(3300)를 통해 획득할 수 있다. 예를 들어, 애플리케이션 서버(3100_1)는 웹 서버 또는 DBMS(Database Management System) 등으로 구현될 수 있다.The application server 3100_1 may store data requested by a user or client to be stored in one of the storage servers 3200_1 to 3200_m through the network 3300 . Also, the application server 3100_1 may acquire data requested by a user or client to read from one of the storage servers 3200_1 to 3200_m through the network 3300 . For example, the application server 3100_1 may be implemented as a web server or a database management system (DBMS).

애플리케이션 서버(3100_1)는 네트워크(3300)를 통해 다른 애플리케이션 서버(3100_n)에 포함된 메모리(3120_n) 또는 스토리지 장치(3150_n)에 액세스할 수 있고, 또는 네트워크(3300)를 통해 스토리지 서버들(3200_1-3200_m)에 포함된 메모리들(3220_1-3220_m) 또는 스토리지 장치(3250_1-3250_m)에 액세스할 수 있다. 이로써, 애플리케이션 서버(3100_1)는 애플리케이션 서버들(3100_1-3100_n) 및/또는 스토리지 서버들(3200_1-3200_m)에 저장된 데이터에 대해 다양한 동작들을 수행할 수 있다. 예를 들어, 애플리케이션 서버(3100_1)는 애플리케이션 서버들(3100_1-3100_n) 및/또는 스토리지 서버들(3200_1-3200_m) 사이에서 데이터를 이동 또는 카피(copy)하기 위한 명령어를 실행할 수 있다. 이 때 데이터는 스토리지 서버들(3200_1-3200_m)의 스토리지 장치(3250_1-3250_m)로부터 스토리지 서버들(3200_1-3200_m)의 메모리들(3220_1-3220_m)을 거쳐서, 또는 바로 애플리케이션 서버들(3100_1-3100_n)의 메모리(3120-3120n)로 이동될 수 있다. 네트워크(3300)를 통해 이동하는 데이터는 보안 또는 프라이버시를 위해 암호화된 데이터일 수 있다.The application server 3100_1 may access the memory 3120_n or the storage device 3150_n included in another application server 3100_n through the network 3300, or may access the storage servers 3200_1- through the network 3300. The memories 3220_1 to 3220_m or the storage devices 3250_1 to 3250_m included in the 3200_m may be accessed. Accordingly, the application server 3100_1 may perform various operations on data stored in the application servers 3100_1 to 3100_n and/or the storage servers 3200_1 to 3200_m. For example, the application server 3100_1 may execute a command for moving or copying data between the application servers 3100_1 to 3100_n and/or the storage servers 3200_1 to 3200_m. At this time, the data is transferred from the storage devices 3250_1-3250_m of the storage servers 3200_1-3200_m through the memories 3220_1-3220_m of the storage servers 3200_1-3200_m or directly to the application servers 3100_1-3100_n. may be moved to the memories 3120-3120n of Data traveling through the network 3300 may be encrypted data for security or privacy.

스토리지 서버(3200_1)를 예시로 설명하면, 인터페이스(3254_1)는 프로세서(3210_1)와 컨트롤러(3251_1)의 물리적 연결 및 NIC(Network InterConnect)(3240_1)와 컨트롤러(3251_1)의 물리적 연결을 제공할 수 있다. 예를 들어, 인터페이스(3254_1)는 스토리지 장치(3250_1)를 전용 케이블로 직접 접속하는 DAS(Direct Attached Storage) 방식으로 구현될 수 있다. 또한, 예를 들어, 인터페이스(3254_1)는 ATA(Advanced Technology Attachment), SATA(Serial ATA), e-SATA(external SATA), SCSI(Small Computer Small Interface), SAS(Serial Attached SCSI), PCI(Peripheral Component Interconnection), PCIe(PCI express), NVMe(NVM express), IEEE 1394, USB(universal serial bus), SD(secure digital) 카드, MMC(multi-media card), eMMC(embedded multi-media card), UFS(Universal Flash Storage), eUFS(embedded Universal Flash Storage), 및/또는 CF(compact flash) 카드 인터페이스 등과 같은 다양한 인터페이스 방식으로 구현될 수 있다.Taking the storage server 3200_1 as an example, the interface 3254_1 may provide a physical connection between the processor 3210_1 and the controller 3251_1 and a network interconnect (NIC) 3240_1 and the controller 3251_1. . For example, the interface 3254_1 may be implemented in a Direct Attached Storage (DAS) method that directly connects the storage device 3250_1 with a dedicated cable. Also, for example, the interface 3254_1 may include Advanced Technology Attachment (ATA), Serial ATA (SATA), external SATA (e-SATA), Small Computer Small Interface (SCSI), Serial Attached SCSI (SAS), and Peripheral SATA (PCI). Component Interconnection), PCIe (PCI express), NVMe (NVM express), IEEE 1394, USB (universal serial bus), SD (secure digital) card, MMC (multi-media card), eMMC (embedded multi-media card), It may be implemented in various interface methods such as UFS (Universal Flash Storage), eUFS (embedded Universal Flash Storage), and/or CF (compact flash) card interface.

스토리지 서버(3200_1)는 스위치(3230_1) 및 NIC(3240_1)을 더 포함할 수 있다. 스위치(3230_1)는 프로세서(3210_1)의 제어에 따라 프로세서(3210_1)와 스토리지 장치(3250_1)를 선택적으로 연결시키거나, NIC(3240_1)와 스토리지 장치(3250_1)를 선택적으로 연결시킬 수 있다.The storage server 3200_1 may further include a switch 3230_1 and a NIC 3240_1. The switch 3230_1 may selectively connect the processor 3210_1 and the storage device 3250_1 or selectively connect the NIC 3240_1 and the storage device 3250_1 under the control of the processor 3210_1.

일 실시예에서 NIC(3240_1)는 네트워크 인터페이스 카드, 네트워크 어댑터 등을 포함할 수 있다. NIC(3240_1)는 유선 인터페이스, 무선 인터페이스, 블루투스 인터페이스, 광학 인터페이스 등에 의해 네트워크(3300)에 연결될 수 있다. NIC(3240_1)는 내부 메모리, DSP(Digital Signal Processor), 호스트 버스 인터페이스 등을 포함할 수 있으며, 호스트 버스 인터페이스를 통해 프로세서(3210_1) 및/또는 스위치(3230_1) 등과 연결될 수 있다. 호스트 버스 인터페이스는, 앞서 설명한 인터페이스(3254_1)의 예시들 중 하나로 구현될 수도 있다. 일 실시예에서, NIC(3240_1)는 프로세서(3210_1), 스위치(3230_1), 스토리지 장치(3250_1) 중 적어도 하나와 통합될 수도 있다.In one embodiment, the NIC 3240_1 may include a network interface card, a network adapter, and the like. The NIC 3240_1 may be connected to the network 3300 through a wired interface, a wireless interface, a Bluetooth interface, an optical interface, or the like. The NIC 3240_1 may include an internal memory, a digital signal processor (DSP), a host bus interface, and the like, and may be connected to the processor 3210_1 and/or the switch 3230_1 through the host bus interface. The host bus interface may be implemented as one of the examples of the interface 3254_1 described above. In one embodiment, the NIC 3240_1 may be integrated with at least one of the processor 3210_1 , the switch 3230_1 , and the storage device 3250_1 .

스토리지 서버들(3200_1-3200_m) 또는 애플리케이션 서버들(3100_1-3100_n)에서 프로세서는 스토리지 장치(3150_1-3150_n, 3250_1-3250_m) 또는 메모리(3120_1-3120_n, 3220_1-3220_m)로 커맨드를 전송하여 데이터를 프로그램하거나 리드할 수 있다. 이 때 데이터는 ECC(Error Correction Code) 엔진을 통해 에러 정정된 데이터일 수 있다. 데이터는 데이터 버스 변환(Data Bus Inversion: DBI) 또는 데이터 마스킹(Data Masking: DM) 처리된 데이터로서, CRC(Cyclic Redundancy Code) 정보를 포함할 수 있다. 데이터는 보안 또는 프라이버시를 위해 암호화된 데이터일 수 있다.In the storage servers 3200_1-3200_m or application servers 3100_1-3100_n, the processor transmits commands to the storage devices 3150_1-3150_n and 3250_1-3250_m or memories 3120_1-3120_n and 3220_1-3220_m to program data. or can lead. In this case, the data may be error-corrected data through an Error Correction Code (ECC) engine. The data is data subjected to data bus inversion (DBI) or data masking (DM) processing, and may include Cyclic Redundancy Code (CRC) information. The data may be encrypted data for security or privacy.

스토리지 장치(3150_1-3150_n, 3250_1-3250_m)는 프로세서로부터 수신된 리드 커맨드에 응답하여, 제어 신호 및 커맨드/어드레스 신호를 NAND 플래시 메모리 장치(3252_1-3252_m)로 전송할 수 있다. 이에 따라 NAND 플래시 메모리 장치(3252_1-3252_m)로부터 데이터를 독출하는 경우, RE(Read Enable) 신호는 데이터 출력 제어 신호로 입력되어, 데이터를 DQ 버스로 출력하는 역할을 할 수 있다. RE 신호를 이용하여 DQS(Data Strobe)가 생성될 수 있다. 커맨드와 어드레스 신호는 WE(Write Enable) 신호의 상승 엣지 또는 하강 엣지에 따라 페이지 버퍼에 래치될 수 있다.The storage devices 3150_1 to 3150_n and 3250_1 to 3250_m may transmit control signals and command/address signals to the NAND flash memory devices 3252_1 to 3252_m in response to a read command received from the processor. Accordingly, when data is read from the NAND flash memory devices 3252_1 to 3252_m, the RE (Read Enable) signal may be input as a data output control signal and output data to the DQ bus. A Data Strobe (DQS) may be generated using the RE signal. Command and address signals may be latched in the page buffer according to a rising edge or a falling edge of a write enable (WE) signal.

컨트롤러(3251_1)는 스토리지 장치(3250_1)의 동작을 전반적으로 제어할 수 있다. 일 실시예에서, 컨트롤러(3251_1)는 SRAM(Static Random Access Memory)을 포함할 수 있다. 컨트롤러(3251_1)는 기입 커맨드에 응답하여 낸드 플래시(3252_1)에 데이터를 기입할 수 있고, 또는 독출 커맨드에 응답하여 낸드 플래시(3252_1)로부터 데이터를 독출할 수 있다. 예를 들어, 기입 커맨드 및/또는 독출 커맨드는 스토리지 서버(3200_1) 내의 프로세서(3210_1), 다른 스토리지 서버(3200_m) 내의 프로세서(3210_m) 또는 애플리케이션 서버(3100_1, 3100_n) 내의 프로세서(3110_1, 3110_n)로부터 제공될 수 있다. DRAM(3253_1)은 낸드 플래시(3252_1)에 기입될 데이터 또는 낸드 플래시(3252_1)로부터 독출된 데이터를 임시 저장(버퍼링)할 수 있다. 또한, DRAM(3253_1)은 메타 데이터를 저장할 수 있다. 여기서, 메타 데이터는 사용자 데이터 또는 낸드 플래시(3252_1)를 관리하기 위해 컨트롤러(3251_1)에서 생성된 데이터이다. 스토리지 장치(3250_1)는 보안 또는 프라이버시를 위해 SE(Secure Element)를 포함할 수 있다.The controller 3251_1 may control overall operations of the storage device 3250_1. In one embodiment, the controller 3251_1 may include static random access memory (SRAM). The controller 3251_1 may write data into the NAND flash 3252_1 in response to a write command, or may read data from the NAND flash 3252_1 in response to a read command. For example, a write command and/or a read command may be received from a processor 3210_1 in a storage server 3200_1, a processor 3210_m in another storage server 3200_m, or a processor 3110_1 or 3110_n in application servers 3100_1 or 3100_n. can be provided. The DRAM 3253_1 may temporarily store (buffer) data to be written to the NAND flash 3252_1 or data read from the NAND flash 3252_1. Also, the DRAM 3253_1 may store meta data. Here, the meta data is user data or data generated by the controller 3251_1 to manage the NAND flash 3252_1. The storage device 3250_1 may include a Secure Element (SE) for security or privacy.

컨트롤러(3251_1)는 도 1 내지 도 17을 통해 상술된 스토리지 컨트롤러(210)일 수 있으며, 스토리지 장치(3250_1)는 도 1 내지 도 17을 통해 상술된 스토리지 장치(200)일 수 있다.The controller 3251_1 may be the storage controller 210 described above with reference to FIGS. 1 to 17 , and the storage device 3250_1 may be the storage device 200 described above with reference to FIGS. 1 to 17 .

이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명은 상기 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 제조될 수 있으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.Although the embodiments of the present invention have been described with reference to the accompanying drawings, the present invention is not limited to the above embodiments and can be manufactured in a variety of different forms, and those skilled in the art in the art to which the present invention belongs A person will understand that the present invention may be embodied in other specific forms without changing the technical spirit or essential features. Therefore, the embodiments described above should be understood as illustrative in all respects and not limiting.

10: 스토리지 시스템 100: 호스트 110: 호스트 컨트롤러 120: 호스트 메모리 200: 스토리지 장치 210: 스토리지 컨트롤러 211: 호스트 인터페이스 212: 메모리 인터페이스 213: 중앙 처리 장치 214: 플래시 변환 계층 215: 쓰기 증폭 관리기 216: 버퍼 메모리 217: ECC 엔진 218: 암복호화 엔진 220: 비휘발성 메모리 장치 2150: 플래시 변환 계층 검사기 2152: 버퍼 메모리 검사기 2154: 오픈 메모리 셀 검출기 2156: 메모리 셀 압축기DESCRIPTION OF SYMBOLS 10: storage system 100: host 110: host controller 120: host memory 200: storage device 210: storage controller 211: host interface 212: memory interface 213: central processing unit 214: flash translation layer 215: write amplification manager 216: buffer memory 217: ECC engine 218: Encryption/decryption engine 220: Non-volatile memory device 2150: Flash translation layer checker 2152: Buffer memory checker 2154: Open memory cell detector 2156: Memory cell compressor

Claims (20)

제1 메모리 셀에 N(N은 1보다 큰 자연수)회 프로그램을 수행하여 제1 데이터를 기록하는 스토리지 컨트롤러로서,
상기 제1 데이터에 대한 제1 논리 어드레스와, 상기 제1 데이터에 대한 제1 물리 어드레스 사이의 매핑 정보를 저장하는 매핑 테이블을 이용하여 어드레스 매핑을 수행하는 플래시 변환 계층;
상기 제1 메모리 셀에 N번째 프로그램이 수행되기 전에, 상기 제1 데이터가 유효하지 않은 데이터(Invalid data)인지 확인하는 쓰기 증폭(WAF: Write Amplification) 관리기; 및
상기 제1 데이터가 유효하지 않은 데이터인 경우, 상기 제1 메모리 셀에 대해 N번째 프로그램을 수행하지 않는 중앙 처리 장치를 포함하고,
상기 제1 메모리 셀과 동일한 워드 라인에 연결된 제2 메모리 셀에 N회 프로그램을 수행하여 제2 데이터를 기록하되,
상기 제1 데이터가 유효하지 않은 데이터인 경우,
상기 제1 메모리 셀은 N번째 프로그램을 수행하지 않고,
상기 제2 메모리 셀은 N회 프로그램을 수행하여 상기 제2 데이터를 기록하는 스토리지 컨트롤러.
A storage controller that writes first data by performing a program N (N is a natural number greater than 1) times in a first memory cell,
a flash conversion layer performing address mapping using a mapping table storing mapping information between a first logical address for the first data and a first physical address for the first data;
a write amplification (WAF) manager checking whether the first data is invalid data before an Nth program is performed on the first memory cell; and
a central processing unit not performing an N-th program on the first memory cell when the first data is invalid;
writing second data by performing a program N times in a second memory cell connected to the same word line as the first memory cell;
If the first data is invalid data,
The first memory cell does not perform the Nth program;
The second memory cell writes the second data by performing a program N times.
제 1항에 있어서,
상기 제1 데이터를 저장하는 버퍼 메모리를 더 포함하되,
상기 쓰기 증폭 관리기는,
상기 버퍼 메모리에 저장된 상기 제1 데이터가 유효하지 않은 데이터인지 확인하는 버퍼 메모리 검사기를 포함하는 스토리지 컨트롤러.
According to claim 1,
Further comprising a buffer memory for storing the first data,
The write amplification manager,
and a buffer memory checker configured to check whether the first data stored in the buffer memory is invalid.
제 1항에 있어서,
상기 쓰기 증폭 관리기는,
상기 플래시 변환 계층과 통신하여, 상기 매핑 테이블 내의 상기 제1 데이터가 유효하지 않은 데이터인지 확인하는 플래시 변환 계층 검사기를 포함하는 스토리지 컨트롤러.
According to claim 1,
The write amplification manager,
and a flash translation layer checker configured to communicate with the flash translation layer and check whether the first data in the mapping table is invalid.
제 1항에 있어서,
상기 제1 데이터가 유효하지 않은 데이터인 경우는 상기 제1 데이터가 트림된 데이터인 스토리지 컨트롤러.
According to claim 1,
and when the first data is invalid data, the first data is trimmed data.
제 1항에 있어서,
상기 제1 데이터가 유효하지 않은 데이터인 경우는 상기 제1 데이터가 상기 매핑 테이블에 매핑되어 있지 않은 경우인 스토리지 컨트롤러.
According to claim 1,
Where the first data is invalid data, the first data is not mapped to the mapping table.
삭제delete 제 1항에 있어서,
상기 제1 메모리 셀 및 상기 제2 메모리 셀과 상기 동일한 워드 라인에 연결된 제3 메모리 셀에 N회 프로그램을 수행하는 스토리지 컨트롤러.
According to claim 1,
A storage controller configured to program a third memory cell connected to the same word line as the first memory cell and the second memory cell N times.
제1 메모리 셀에 N(N은 1보다 큰 자연수)회 프로그램을 수행하여 제1 데이터를 기록하는 스토리지 장치로서,
상기 제1 메모리 셀을 포함하는 비휘발성 메모리 장치; 및
상기 제1 메모리 셀에 상기 제1 데이터를 기록하는 스토리지 컨트롤러를 포함하되,
상기 스토리지 컨트롤러는,
상기 제1 데이터에 대한 제1 논리 어드레스와, 상기 제1 데이터에 대한 제1 물리 어드레스 사이의 매핑 정보를 저장하는 매핑 테이블을 이용하여 어드레스 매핑을 수행하는 플래시 변환 계층;
상기 제1 메모리 셀에 N번째 프로그램이 수행되기 전에, 상기 제1 데이터가 유효하지 않은 데이터(Invalid data)인지 확인하는 쓰기 증폭(WAF: Write Amplification) 관리기; 및
상기 제1 데이터가 유효하지 않은 데이터인 경우, 상기 제1 메모리 셀에 대해 N번째 프로그램을 수행하지 않는 중앙 처리 장치를 포함하고,
상기 쓰기 증폭 관리기는,
상기 플래시 변환 계층과 통신하여, 상기 매핑 테이블 내의 상기 제1 데이터가 유효하지 않은 데이터인지 확인하는 플래시 변환 계층 검사기를 포함하는 스토리지 장치.
A storage device that writes first data by performing a program N (N is a natural number greater than 1) times in a first memory cell,
a non-volatile memory device including the first memory cell; and
a storage controller to write the first data to the first memory cell;
The storage controller,
a flash conversion layer performing address mapping using a mapping table storing mapping information between a first logical address for the first data and a first physical address for the first data;
a write amplification (WAF) manager checking whether the first data is invalid data before an Nth program is performed on the first memory cell; and
a central processing unit not performing an N-th program on the first memory cell when the first data is invalid;
The write amplification manager,
and a flash translation layer checker configured to communicate with the flash translation layer and check whether the first data in the mapping table is invalid.
제 8항에 있어서,
상기 스토리지 컨트롤러는,
상기 제1 데이터를 저장하는 버퍼 메모리를 더 포함하되,
상기 쓰기 증폭 관리기는,
상기 버퍼 메모리에 저장된 상기 제1 데이터가 유효하지 않은 데이터인지 확인하는 버퍼 메모리 검사기를 포함하는 스토리지 장치.
According to claim 8,
The storage controller,
Further comprising a buffer memory for storing the first data,
The write amplification manager,
and a buffer memory checker configured to check whether the first data stored in the buffer memory is invalid.
삭제delete 제 8항에 있어서,
상기 제1 데이터가 유효하지 않은 데이터인 경우는 상기 제1 데이터가 트림된 데이터인 스토리지 장치.
According to claim 8,
and when the first data is invalid data, the first data is trimmed data.
제 8항에 있어서,
상기 제1 데이터가 유효하지 않은 데이터인 경우는 상기 제1 데이터가 상기 매핑 테이블에 매핑되어 있지 않은 경우인 스토리지 장치.
According to claim 8,
If the first data is invalid data, the first data is not mapped to the mapping table.
제 8항에 있어서,
상기 제1 메모리 셀과 동일한 워드 라인에 연결된 제2 메모리 셀에 N회 프로그램을 수행하여 제2 데이터를 기록하되,
상기 제1 데이터가 유효하지 않은 데이터인 경우,
상기 제1 메모리 셀은 N번째 프로그램을 수행하지 않고,
상기 제2 메모리 셀은 N회 프로그램을 수행하여 상기 제2 데이터를 기록하는 스토리지 장치.
According to claim 8,
writing second data by performing a program N times in a second memory cell connected to the same word line as the first memory cell;
If the first data is invalid data,
The first memory cell does not perform the Nth program;
The storage device of claim 1 , wherein the second memory cell writes the second data by performing a program N times.
제 13항에 있어서,
상기 제1 메모리 셀 및 상기 제2 메모리 셀과 상기 동일한 워드 라인에 연결된 제3 메모리 셀에 N회 프로그램을 수행하는 스토리지 장치.
According to claim 13,
and performing programming N times on a third memory cell connected to the same word line as the first memory cell and the second memory cell.
삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete
KR1020220007670A 2021-11-17 2022-01-19 Storage controller and storage device comprising the same KR102545465B1 (en)

Priority Applications (4)

Application Number Priority Date Filing Date Title
US17/847,948 US12014772B2 (en) 2021-11-17 2022-06-23 Storage controller and storage device including the same
EP22192775.9A EP4184332A1 (en) 2021-11-17 2022-08-30 Storage controller and storage device including the same
CN202211427871.2A CN116136829A (en) 2021-11-17 2022-11-15 Memory controller and memory device including the same
US18/662,681 US20240296884A1 (en) 2021-11-17 2024-05-13 Storage controller and storage device including the same

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20210158688 2021-11-17
KR1020210158688 2021-11-17

Publications (2)

Publication Number Publication Date
KR20230072365A KR20230072365A (en) 2023-05-24
KR102545465B1 true KR102545465B1 (en) 2023-06-21

Family

ID=86540660

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220007670A KR102545465B1 (en) 2021-11-17 2022-01-19 Storage controller and storage device comprising the same

Country Status (1)

Country Link
KR (1) KR102545465B1 (en)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005302290A (en) 2005-05-25 2005-10-27 Fujitsu Ltd Semiconductor memory
KR100903694B1 (en) 2007-03-30 2009-06-18 스펜션 엘엘씨 Semiconductor device and data writing method
JP2014506688A (en) 2011-06-07 2014-03-17 株式会社日立製作所 Storage system including flash memory and storage control method

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7173852B2 (en) * 2003-10-03 2007-02-06 Sandisk Corporation Corrected data storage and handling methods
KR102254392B1 (en) * 2014-05-12 2021-05-25 삼성전자주식회사 Operating method of memory controller and nonvolatile memory system including nonvolatile memory device and memory controller
JP6147933B2 (en) * 2014-12-05 2017-06-14 華為技術有限公司Huawei Technologies Co.,Ltd. Controller, flash memory device, method for identifying data block stability, and method for storing data in flash memory device
KR101718713B1 (en) * 2015-05-29 2017-03-22 주식회사 이에프텍 Non-volatile memory system
US9898200B2 (en) * 2016-02-18 2018-02-20 Samsung Electronics Co., Ltd Memory device having a translation layer with multiple associative sectors
KR102533072B1 (en) * 2018-08-13 2023-05-17 에스케이하이닉스 주식회사 Memory system and operation method for determining availability based on block status
KR20210038096A (en) * 2019-09-30 2021-04-07 에스케이하이닉스 주식회사 Memory system, data processing system and method for operation the same

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005302290A (en) 2005-05-25 2005-10-27 Fujitsu Ltd Semiconductor memory
KR100903694B1 (en) 2007-03-30 2009-06-18 스펜션 엘엘씨 Semiconductor device and data writing method
JP2014506688A (en) 2011-06-07 2014-03-17 株式会社日立製作所 Storage system including flash memory and storage control method

Also Published As

Publication number Publication date
KR20230072365A (en) 2023-05-24

Similar Documents

Publication Publication Date Title
US11803436B2 (en) Storage device and storage system including the same
US11482263B2 (en) Non-volatile memory device, controller for controlling the same, storage device including the same, and reading method thereof
US11682467B2 (en) Nonvolatile memory device, controller for controlling the same, storage device including the same, and reading method of the same
US12045470B2 (en) Method of writing data in nonvolatile memory device and nonvolatile memory device performing the same
US20230126685A1 (en) Storage device and electronic system
KR102508118B1 (en) Storage device and operating method thereof
KR102545465B1 (en) Storage controller and storage device comprising the same
KR20230068935A (en) Storage device and method for operating the device
KR20230030344A (en) Three-dimensional(3D) storage device using wafer-to-wafer bonding
EP4184332A1 (en) Storage controller and storage device including the same
KR20220122826A (en) Nonvolatile memory device, memory controller, and method of reading of storage device comprising the same
US11899941B2 (en) Storage device and operating method thereof
KR102697634B1 (en) Storage device and electronic system
US12056048B2 (en) System and method for management of electronic memory
EP4290355A1 (en) Method of writing data in storage device using write throttling and storage device performing the same
US12045472B2 (en) Storage device supporting multi-tenant operation and methods of operating same
US20240028507A1 (en) Storage system and method of operating the storage system
US20230038363A1 (en) Three-dimensional storage device using wafer-to-wafer bonding
US20230092380A1 (en) Operation method of memory controller configured to control memory device
KR20230068939A (en) Storage device and method for operating the same
EP4152333A2 (en) Operation method of memory controller configured to control memory device
US20230114199A1 (en) Storage device
KR20230067457A (en) A storage controller, a storage system and an operating method of the same
CN116107494A (en) Storage device, storage system and operation method of storage controller of storage system
KR20230059239A (en) Storage device

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right