KR102545465B1 - Storage controller and storage device comprising the same - Google Patents
Storage controller and storage device comprising the same Download PDFInfo
- 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
- Legal status (The legal status 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 status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/08—Address circuits; Decoders; Word-line control circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical 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
Description
본 발명은 스토리지 컨트롤러 및 이를 포함하는 스토리지 장치에 관한 것이다.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
스토리지 장치(200)는 호스트(100)로부터의 요청에 따라 데이터를 저장하기 위한 저장 매체들을 포함할 수 있다. 일 예로서, 스토리지 장치(200)는 SSD(Solid State Drive)를 포함할 수 있다. 스토리지 장치(200)가 예를 들어, SSD인 경우, 스토리지 장치(200)는 NVMe(non-volatile memory express) 표준을 따르는 장치일 수 있다. 호스트(100)와 스토리지 장치(200)는 각각 채용된 표준 프로토콜에 따른 패킷을 생성하고 이를 전송할 수 있다.The
스토리지 장치(200)의 비휘발성 메모리 장치(220)가 플래시 메모리를 포함할 때, 상기 플래시 메모리는 2D NAND 메모리 어레이나 3D(또는 수직형, Vertical) NAND(VNAND) 메모리 어레이를 포함할 수 있다.When the
일 실시예에 따라, 호스트 컨트롤러(110)와 호스트 메모리(120)는 별도의 반도체 칩으로 구현될 수 있다. 또는, 일부 실시예들에서, 호스트 컨트롤러(110)와 호스트 메모리(120)는 동일한 반도체 칩에 집적될 수 있다. 일 예로서, 호스트 컨트롤러(110)는 애플리케이션 프로세서(Application Processor)에 구비되는 다수의 모듈들 중 어느 하나일 수 있으며, 상기 애플리케이션 프로세서는 시스템 온 칩(System on Chip, SoC)으로 구현될 수 있다. 또한, 호스트 메모리(120)는 상기 애플리케이션 프로세서 내에 구비되는 임베디드 메모리이거나, 또는 상기 애플리케이션 프로세서의 외부에 배치되는 비휘발성 메모리 또는 메모리 모듈일 수 있다.According to an embodiment, the
호스트 컨트롤러(110)는 호스트 메모리(120)의 버퍼 영역의 데이터(예컨대, 기록 데이터)를 비휘발성 메모리 장치(220)에 저장하거나, 비휘발성 메모리 장치(220)의 데이터(예컨대, 독출 데이터)를 버퍼 영역에 저장하는 동작을 관리할 수 있다.The
스토리지 컨트롤러(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
호스트 인터페이스(211)는 호스트(100)와 패킷(packet)을 송수신할 수 있다. 호스트(100)로부터 호스트 인터페이스(211)로 전송되는 패킷은 커맨드(command) 혹은 비휘발성 메모리 장치(220)에 기록될 데이터 등을 포함할 수 있으며, 호스트 인터페이스(211)로부터 호스트(100)로 전송되는 패킷은 커맨드에 대한 응답(response) 혹은 비휘발성 메모리 장치(220)로부터 독출된 데이터 등을 포함할 수 있다. The
호스트(100)로부터 호스트 인터페이스(211)로 전송되는 커맨드는 예를 들어, 쓰기, 읽기, 또는 트림(Trim) 명령 등일 수 있다.A command transmitted from the
메모리 인터페이스(212)는 비휘발성 메모리 장치(220)에 기록될 데이터를 비휘발성 메모리 장치(220)로 송신하거나, 비휘발성 메모리 장치(220)로부터 독출된 데이터를 수신할 수 있다. 이러한 메모리 인터페이스(212)는 토글(Toggle) 혹은 온파이(Open NAND Flash Interface; ONFI)와 같은 표준 규약을 준수하도록 구현될 수 있다.The
플래시 변환 계층(214)은 어드레스 매핑(address mapping), 웨어-레벨링(wear-leveling), 가비지 콜렉션(garbage collection)과 같은 여러 기능을 수행할 수 있다. 어드레스 매핑 동작은 호스트(100)로부터 수신한 논리 어드레스(logical address)를, 비휘발성 메모리 장치(220) 내에 데이터를 실제로 저장하는 데 사용되는 물리 어드레스(physical address)로 바꾸는 동작이다.The
예를 들어, 플래시 변환 계층(214)은 제1 데이터에 대한 제1 논리 어드레스와 이에 매핑되는 제1 물리 어드레스 정보가 기록된 매핑 테이블을 저장할 수 있다. 즉, 플래시 변환 계층(214)은 제1 데이터에 대한 어드레스 매핑 동작을 수행할 때, 매핑 테이블을 참조하여, 수행할 수 있다.For example, the
웨어-레벨링은 비휘발성 메모리 장치(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
ECC 엔진(217)은 비휘발성 메모리 장치(220)로부터 독출되는 독출 데이터에 대한 오류 검출 및 정정 기능을 수행할 수 있다. 보다 구체적으로, ECC 엔진(217)은 비휘발성 메모리 장치(220)에 기입될 기입 데이터에 대하여 패리티 비트(parity bit)들을 생성할 수 있으며, 이와 같이 생성된 패리티 비트들은 기입 데이터와 함께 비휘발성 메모리 장치(220) 내에 저장될 수 있다. 비휘발성 메모리 장치(220)로부터의 데이터 독출 시, ECC 엔진(217)은 독출 데이터와 함께 비휘발성 메모리 장치(220)로부터 독출되는 패리티 비트들을 이용하여 독출 데이터의 에러를 정정하고, 에러가 정정된 독출 데이터를 출력할 수 있다.The
암복호화 엔진(218)은, 스토리지 컨트롤러(210)로 입력되는 데이터에 대한 암호화(encryption) 동작과 복호화(decryption) 동작 중 적어도 하나의 동작을 수행할 수 있다.The encryption/
예를 들어, 암복호화 엔진(218)은, 대칭 키 알고리즘(symmetric-key algorithm)를 이용하여 암호화 동작 및/또는 복호화 동작을 수행할 수 있다. 이때, 암복호화 엔진(218)은 예를 들어, AES(Advanced Encryption Standard) 알고리즘 또는 DES(Data Encryption Standard) 알고리즘을 이용하여, 암호화 및/또는 복호화 동작을 수행할 수 있다.For example, the encryption/
또한, 예를 들어, 암복호화 엔진(218)은 공개키 암호화 알고리즘을 이용하여 암호화 동작 및/또는 복호화 동작을 수행할 수 있다. 이때, 암복호화 엔진(218)은 예를 들어, 암호화 동작 시 공개키를 이용하여 암호화를 수행하고, 복호화 동작 시 비밀키를 이용하여 복호화를 수행할 수 있다. 예를 들어, 암복호화 엔진(218)은 RSA(Rivest Shamir Adleman), ECC(Elliptic Curve Cryptography), 또는 DH(Diffie-Hellman) 암호화 알고리즘을 이용할 수 있다.Also, for example, the encryption/
이에 제한되지 않고, 암복호화 엔진(218)은 HE(Homomorphic Encryption), PQC(Post-Quantum Cryptography), 또는 FE(Functional Encryption) 등과 같은 양자 암호 기술을 이용하여, 암호화 동작 및/또는 복호화 동작을 수행할 수 있다.Without being limited thereto, the encryption/
쓰기 증폭 관리기(215)는 비휘발성 메모리 장치(220)에 포함된 메모리 셀에 프로그램이 수행될 때, 몇몇 실시예들에 따른 스토리지 장치의 성능을 향상시키도록 도와줄 수 있다. 예를 들어, 쓰기 증폭 관리기(215)는 몇몇 실시예들에 따른 스토리지 장치의 쓰기 증폭 특성을 개선시킬 수 있다. 또한, 예를 들어, 쓰기 증폭 관리기(215)는 몇몇 실시예들에 따른 스토리지 장치의 플러쉬(flush) 동작의 속도를 향상시킬 수 있다.The
이에 대해서, 먼저 비휘발성 메모리 장치(220)의 구조에 대해 도 2를 통해 살펴본다.In this regard, first, the structure of the
도 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
계속하여 도 2를 참조하면, 비휘발성 메모리 장치(300)는 제어 로직 회로(320), 메모리 셀 어레이(330), 페이지 버퍼(340), 전압 생성기(350), 및 로우 디코더(360)를 포함할 수 있다. 도 2에는 도시되지 않았으나, 비휘발성 메모리 장치(300)는 도 1에 도시된 메모리 인터페이스 회로(212)를 더 포함할 수 있고, 또한 컬럼 로직, 프리-디코더, 온도 센서, 커맨드 디코더, 어드레스 디코더 등을 더 포함할 수 있다.With continued reference to FIG. 2 , the
제어 로직 회로(320)는 비휘발성 메모리 장치(300) 내의 각종 동작을 전반적으로 제어할 수 있다. 제어 로직 회로(320)는 메모리 인터페이스 회로(310)로부터의 커맨드(CMD) 및/또는 어드레스(ADDR)에 응답하여 각종 제어 신호들을 출력할 수 있다. 예를 들어, 제어 로직 회로(320)는 전압 제어 신호(CTRL_vol), 로우 어드레스(X-ADDR), 및 컬럼 어드레스(Y-ADDR)를 출력할 수 있다.The
메모리 셀 어레이(330)는 복수의 메모리 블록들(BLK1 내지 BLKz)을 포함할 수 있고(z는 양의 정수), 복수의 메모리 블록들(BLK1 내지 BLKz) 각각은 복수의 메모리 셀들을 포함할 수 있다. 메모리 셀 어레이(330)는 비트 라인들(BL)을 통해 페이지 버퍼부(340)에 연결될 수 있고, 워드 라인들(WL), 스트링 선택 라인들(SSL), 및 그라운드 선택 라인들(GSL)을 통해 로우 디코더(360)에 연결될 수 있다.The
예시적인 실시 예에서, 메모리 셀 어레이(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
페이지 버퍼(340)는 복수의 페이지 버퍼들(PB1 내지 PBn)을 포함할 수 있고(n은 3 이상의 정수), 복수의 페이지 버퍼들(PB1 내지 PBn)은 복수의 비트 라인들(BL)을 통해 메모리 셀들과 각각 연결될 수 있다. 페이지 버퍼(340)는 컬럼 어드레스(Y-ADDR)에 응답하여 비트 라인들(BL) 중 적어도 하나의 비트 라인을 선택할 수 있다. 페이지 버퍼(340)는 동작 모드에 따라 기입 드라이버 또는 감지 증폭기로서 동작할 수 있다. 예를 들어, 프로그램 동작 시, 페이지 버퍼(340)는 선택된 비트 라인으로 프로그램될 데이터에 대응하는 비트 라인 전압을 인가할 수 있다. 독출 동작 시, 페이지 버퍼(340)는 선택된 비트 라인의 전류 또는 전압을 감지하여 메모리 셀에 저장된 데이터를 감지할 수 있다. The
전압 생성기(350)는 전압 제어 신호(CTRL_vol)를 기반으로 프로그램, 독출, 및 소거 동작들을 수행하기 위한 다양한 종류의 전압들을 생성할 수 있다. 예를 들어, 전압 생성기(350)는 워드 라인 전압(VWL)으로서 프로그램 전압, 독출 전압, 프로그램 검증 전압, 소거 전압 등을 생성할 수 있다.The
로우 디코더(360)는 로우 어드레스(X-ADDR)에 응답하여 복수의 워드 라인들(WL) 중 하나를 선택할 수 있고, 복수의 스트링 선택 라인들(SSL) 중 하나를 선택할 수 있다. 예를 들어, 프로그램 동작 시, 로우 디코더(360)는 선택된 워드 라인으로 프로그램 전압 및 프로그램 검증 전압을 인가하고, 독출 동작 시, 선택된 워드 라인으로 독출 전압을 인가할 수 있다.The
메모리 셀 어레이(330)에 포함된 블록에 대해, 제1 블록(BLK1)을 예시로 도 3을 통해 설명한다. 제1 블록(BLK1)에 대한 설명이 다른 블록들(BLK2 내지 BLKz)에도 적용될 수 있음은 물론이다.Blocks included in the
도 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
이하에서의 설명은 2번의 프로그램 수행을 통해 데이터를 기록하는 것을 예로 설명하나, 몇몇 실시예들에 따른 스토리지 장치(200)의 동작은 이에 제한되지 않고, 다른 N번의 프로그램 수행을 통해 데이터가 기록되는 동작에도 적용될 수 있음은 물론이다.In the following description, data is recorded through program execution twice, but the operation of the
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
이에 제한되지 않고, 예를 들어, N회의 프로그램을 통해 데이터가 기록되는 스토리지 장치(200)의 경우, 쓰기 증폭 관리기(215)는 N-1번째 프로그램 동작이 수행된 메모리 셀에 대한 N번째 프로그램 동작을 수행하여 데이터의 기록을 완료하기 전에, N번째 프로그램 동작이 수행되는 메모리 셀이 유효하지 않은 데이터(Invalid data)인지 확인하고, N번째 프로그램 동작을 수행할 수 있다.Without being limited thereto, for example, in the case of the
또한, 쓰기 증폭 관리기(215)는 1번째 프로그램 동작이 수행된 메모리 셀에 대한 2번째 프로그램 동작을 수행하여 데이터의 기록을 완료하기 전에, 오픈 메모리 셀이 포함된 블록을 검출하는 동작을 먼저 수행하고, 오픈 메모리 셀이 포함된 블록이 검출된다면, 오픈 메모리 셀이 포함된 블록으로 1번째 프로그램 동작이 수행된 메모리 셀을 이동시켜 압축을 수행하고, 2번째 프로그램 동작을 수행할 수 있다.In addition, the
이에 제한되지 않고, 예를 들어, N회의 프로그램을 통해 데이터가 기록되는 스토리지 장치(200)의 경우, 쓰기 증폭 관리기(215)는 N-1번째 프로그램 동작이 수행된 메모리 셀에 대한 N번째 프로그램 동작을 수행하여 데이터의 기록을 완료하기 전에, 오픈 메모리 셀이 포함된 블록을 검출하는 동작을 먼저 수행하고, 오픈 메모리 셀이 포함된 블록이 검출된다면, 오픈 메모리 셀이 포함된 블록으로 N-1번째 프로그램 동작이 수행된 메모리 셀을 이동시켜 압축을 수행하고, N번째 프로그램 동작을 수행할 수 있다.Without being limited thereto, for example, in the case of the
이러한 쓰기 증폭 관리기(215)의 동작을 통해, 몇몇 실시예들에 따른 스토리지 장치(200)의 쓰기 증폭 특성이 향상될 수 있다. 또한, 스토리지 장치(200)의 플러쉬(flush) 동작 속도가 향상될 수 있다.Through the operation of the
이하에서, 쓰기 증폭 관리기(215)의 구조 및 동작을 자세히 살펴본다. 이하에서, 몇몇 실시예들에 따른 스토리지 장치(200)가 2번의 프로그램 수행을 통해 데이터가 메모리 셀에 기입되는 것으로 설명하나, 이에 대한 설명이 N번의 프로그램 수행을 통해 데이터가 메모리 셀에 기입되는 스토리지 장치(200)에도 적용될 수 있음은 물론이다.Hereinafter, the structure and operation of the
도 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
도 1, 도 3 및 도 5를 참조하면, 쓰기 증폭 관리기(215)는 플래시 변환 계층 검사기(2150)를 포함한다. 플래시 변환 계층 검사기(2150)는 플래시 변환 계층(214)과 통신하여, 플래시 변환 계층(214) 내의 매핑 테이블을 참조하여, 제1 데이터가 유효하지 않은 데이터인지 확인할 수 있다.Referring to FIGS. 1 , 3 and 5 , the
예를 들어, 플래시 변환 계층 검사기(2150)는 플래시 변환 계층(214) 내의 매핑 테이블을 참조한 결과, 제1 데이터에 대한 제1 논리 어드레스에 대응되는 제1 물리 어드레스가 매핑되어 있지 않다고 판단되면, 제1 데이터를 유효하지 않은 데이터로 판단할 수 있다.For example, as a result of referring to the mapping table in the
다른 예를 들어, 플래시 변환 계층 검사기(2150)는 플래시 변환 계층(214) 내의 매핑 테이블을 참조한 결과, 제1 데이터에 대해, 호스트(100)로부터 트림(trim) 명령이 전송되었다면, 제1 데이터를 유효하지 않은 데이터로 판단할 수 있다.As another example, as a result of referring to the mapping table in the
스토리지 컨트롤러(210), 더 자세히는 스토리지 컨트롤러(210)의 중앙 처리 장치(213)는 쓰기 증폭 관리기(215)로부터 제1 데이터가 유효하지 않은 데이터라는 판단 결과를 수신 받으면, 제1 메모리 셀에 대한 2번째 프로그램 동작을 수행하지 않는다.The
이를 통해, 제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
도 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
만약, 제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
예를 들어, 버퍼 메모리 검사기(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
스토리지 컨트롤러(210), 더 자세히는 스토리지 컨트롤러(210)의 중앙 처리 장치(213)는 쓰기 증폭 관리기(215)로부터 제1 데이터가 유효하지 않은 데이터라는 판단 결과를 수신 받으면, 제1 메모리 셀에 대한 2번째 프로그램 동작을 수행하지 않는다.The
이를 통해, 제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
도 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
만약, 제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
몇몇 실시예들에 따른 도 9의 쓰기 증폭 관리기(215)의 동작을 도 10의 흐름도를 통해 살펴본다.An operation of the
도 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
만약, 버퍼 메모리 검사기(2152)를 통해, 제1 데이터가 버퍼 메모리(216) 내에서 유효하지 않은 데이터로 판단되면(Y), 제1 메모리 셀(MC1)에 대한 2번째 프로그램 동작을 수행하지 않는다.If the first data is determined to be invalid data in the
또한, 만약, 플래시 변환 계층 검사기(2150)를 통해, 제1 데이터가 플래시 변환 계층(214) 내에서 유효하지 않은 데이터로 판단되면(Y), 제1 메모리 셀(MC1)에 대한 2번째 프로그램 동작을 수행하지 않는다.In addition, if the first data is determined to be invalid data in the
즉, 버퍼 메모리 검사기(2152)를 통해, 제1 데이터가 버퍼 메모리(216) 내에서 유효한 데이터로 판단되고(N), 플래시 변환 계층 검사기(2150)를 통해, 제1 데이터가 플래시 변환 계층(214) 내에서 유효한 데이터로 판단된 경우(N), 제1 메모리 셀(MC1)에 대한 2번째 프로그램이 수행될 수 있다.That is, through the
이를 통해, 제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
도 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
만약, 스토리지 컨트롤러(210)가 2번의 프로그램을 통해 메모리 셀들(MC1 내지 MC12)에 데이터를 기록하는데, 2번째 프로그램을 수행하기 전에, 데이터의 유효성을 검사하지 않고, 모든 메모리 셀들(MC1 내지 MC12)에 대해 프로그램을 수행한다면, 도 12와 같이, 제10 메모리 셀(MC10)과 제11 메모리 셀(MC11)이 연결된 제5 워드 라인(WL5)에 대해 불필요한 프로그램 동작을 수행하게 된다.If the
도 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
따라서, 도 13에서와 같이, 스토리지 컨트롤러(210)가 2번의 프로그램을 통해 메모리 셀들(MC1 내지 MC12)에 데이터를 기록하는데, 2번째 프로그램을 수행하기 전에, 쓰기 증폭 관리기(215)를 통해, 데이터의 유효성을 판단한 후, 2번째 프로그램을 수행한다면, 도 13에서와 같이, 제10 메모리 셀(MC10)과 제11 메모리 셀(MC11)이 연결된 제5 워드 라인(WL5)에 대해 불필요한 프로그램 동작을 수행하지 않을 수 있다.Accordingly, as shown in FIG. 13 , the
도 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
쓰기 증폭 관리기(215)는 메모리 셀에 데이터를 기입하기 위한, 마지막 프로그램 동작을 수행하기 전에, 오픈 메모리 셀 검출기(2154)를 통해, 오픈 메모리 셀이 존재하는 블록을 찾을 수 있다.The
예를 들어, 오픈 메모리 셀 검출기(2154)는 제1 블록에 제1 데이터를 기록하기 위해, 2번째 프로그램을 수행하기 전에, 제2 블록에 오픈 메모리 셀이 있는지 확인할 수 있다. 오픈 메모리 셀 검출기(2154)는 제2 블록에 제한되지 않고, 제3 블록 등에 대해서도, 오픈 메모리 셀이 있는지 확인할 수 있다.For example, the open
오픈 메모리 셀은 예를 들어, 제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
제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
도 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
도 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
도 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
메인 프로세서(1100)는 스토리지 시스템(1000)의 전반적인 동작, 보다 구체적으로는 스토리지 시스템(1000)을 이루는 다른 구성 요소들의 동작을 제어할 수 있다. 이와 같은 메인 프로세서(1100)는 범용 프로세서, 전용 프로세서 또는 애플리케이션 프로세서(application processor) 등으로 구현될 수 있다. The
메인 프로세서(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
메모리(1200a, 1200b)는 스토리지 시스템(1000)의 주기억 장치로 사용될 수 있으며, SRAM 및/또는 DRAM 등의 휘발성 메모리를 포함할 수 있으나, 플래시 메모리, PRAM, MRAM 및/또는 RRAM 등의 비휘발성 메모리를 포함할 수도 있다. 메모리(1200a, 1200b)는 메인 프로세서(1100)와 동일한 패키지 내에 구현되는 것도 가능하다.The
스토리지 장치(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
스토리지 장치(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
스토리지 장치(1300a, 및 1300b)들 중 적어도 하나는 도 1 내지 도 17을 통해 상술된 스토리지 장치(200)일 수 있다.At least one of the
촬영 장치(1410)는 정지 영상 또는 동영상을 촬영할 수 있으며, 카메라(camera), 캠코더(camcorder) 및/또는 웹캠(webcam) 등일 수 있다. The photographing
사용자 입력 장치(1420)는 스토리지 시스템(1000)의 사용자로부터 입력된 다양한 유형의 데이터를 수신할 수 있으며, 터치 패드(touch pad), 키패드(keyboard), 키보드(keyboard), 마우스(mouse) 및/또는 마이크(microphone) 등일 수 있다.The
센서(1430)는 스토리지 시스템(1000)의 외부로부터 획득될 수 있는 다양한 유형의 물리량을 감지하고, 감지된 물리량을 전기 신호로 변환할 수 있다. 이와 같은 센서(1430)는 온도 센서, 압력 센서, 조도 센서, 위치 센서, 가속도 센서, 바이오 센서(biosensor) 및/또는 자이로스코프(gyroscope) 센서 등일 수 있다. The
통신 장치(1440)는 다양한 통신 규약에 따라 스토리지 시스템(1000) 외부의 다른 장치들과의 사이에서 신호의 송신 및 수신을 수행할 수 있다. 이와 같은 통신 장치(1440)는 안테나, 트랜시버(transceiver) 및/또는 모뎀(MODEM) 등을 포함하여 구현될 수 있다.The
디스플레이(1450) 및 스피커(1460)는 스토리지 시스템(1000)의 사용자에게 각각 시각적 정보와 청각적 정보를 출력하는 출력 장치로 기능할 수 있다.The
전력 공급 장치(1470)는 스토리지 시스템(1000)에 내장된 배터리(도시 안함) 및/또는 외부 전원으로부터 공급되는 전력을 적절히 변환하여 스토리지 시스템(1000)의 각 구성 요소들에게 공급할 수 있다.The
연결 인터페이스(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
도 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
애플리케이션 서버(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
애플리케이션 서버들(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
일 실시예에서, 네트워크(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,
이하에서는, 애플리케이션 서버(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
애플리케이션 서버(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
스토리지 서버(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
스토리지 서버들(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
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명은 상기 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 제조될 수 있으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.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 데이터에 대한 제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 데이터가 유효하지 않은 데이터인지 확인하는 버퍼 메모리 검사기를 포함하는 스토리지 컨트롤러.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 데이터가 유효하지 않은 데이터인지 확인하는 플래시 변환 계층 검사기를 포함하는 스토리지 컨트롤러.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 데이터가 트림된 데이터인 스토리지 컨트롤러.According to claim 1,
and when the first data is invalid data, the first data is trimmed data.
상기 제1 데이터가 유효하지 않은 데이터인 경우는 상기 제1 데이터가 상기 매핑 테이블에 매핑되어 있지 않은 경우인 스토리지 컨트롤러.According to claim 1,
Where the first data is invalid data, the first data is not mapped to the mapping table.
상기 제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 메모리 셀을 포함하는 비휘발성 메모리 장치; 및
상기 제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.
상기 스토리지 컨트롤러는,
상기 제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.
상기 제1 데이터가 유효하지 않은 데이터인 경우는 상기 제1 데이터가 트림된 데이터인 스토리지 장치.According to claim 8,
and when the first data is invalid data, the first data is trimmed data.
상기 제1 데이터가 유효하지 않은 데이터인 경우는 상기 제1 데이터가 상기 매핑 테이블에 매핑되어 있지 않은 경우인 스토리지 장치.According to claim 8,
If the first data is invalid data, the first data is not mapped to the mapping table.
상기 제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.
상기 제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.
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 EP4184332B1 (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 Active 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) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20250001314A (en) | 2023-06-28 | 2025-01-06 | 주식회사 동희산업 | Apparatus for protecting controller |
Citations (3)
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)
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 |
EP3059679B1 (en) * | 2014-12-05 | 2018-08-22 | Huawei Technologies Co. Ltd. | Controller, flash memory device, method for identifying data block stability and method for storing data on 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 |
-
2022
- 2022-01-19 KR KR1020220007670A patent/KR102545465B1/en active Active
Patent Citations (3)
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 |
---|---|---|
US12248360B2 (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 | |
US12045470B2 (en) | Method of writing data in nonvolatile memory device and nonvolatile memory device performing the same | |
US11682467B2 (en) | Nonvolatile memory device, controller for controlling the same, storage device including the same, and reading method of the same | |
US20240296884A1 (en) | Storage controller and storage device including the same | |
KR102545465B1 (en) | Storage controller and storage device comprising the same | |
US11899941B2 (en) | Storage device and operating method thereof | |
US12242758B2 (en) | Storage device and an operating method of a storage controller thereof | |
US12045472B2 (en) | Storage device supporting multi-tenant operation and methods of operating same | |
US20230126685A1 (en) | Storage device and electronic system | |
KR102508118B1 (en) | Storage device and operating method thereof | |
KR20230068935A (en) | Storage device and method for operating the device | |
KR20230030344A (en) | Three-dimensional(3D) storage device using wafer-to-wafer bonding | |
US20250053471A1 (en) | Storage systems including host and storage devices and methods of operating the same | |
KR102697634B1 (en) | Storage device and electronic system | |
US12056048B2 (en) | System and method for management of electronic memory | |
EP4152333B1 (en) | Operation method of memory controller configured to control memory device | |
EP4290355A1 (en) | Method of writing data in storage device using write throttling and storage device performing the same | |
US20240028507A1 (en) | Storage system and method of operating the storage system | |
US20230092380A1 (en) | Operation method of memory controller configured to control memory device | |
KR20230068939A (en) | Storage device and method for operating the same | |
US20230038363A1 (en) | Three-dimensional storage device using wafer-to-wafer bonding | |
US20230114199A1 (en) | Storage device | |
KR20250023245A (en) | Storage system including host and storage device and operating method of the same | |
KR20230067457A (en) | A storage controller, a storage system and an operating method of the same |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PA0109 | Patent application |
Patent event code: PA01091R01D Comment text: Patent Application Patent event date: 20220119 |
|
PA0201 | Request for examination | ||
PA0302 | Request for accelerated examination |
Patent event date: 20220120 Patent event code: PA03022R01D Comment text: Request for Accelerated Examination Patent event date: 20220119 Patent event code: PA03021R01I Comment text: Patent Application |
|
PE0902 | Notice of grounds for rejection |
Comment text: Notification of reason for refusal Patent event date: 20221220 Patent event code: PE09021S01D |
|
E701 | Decision to grant or registration of patent right | ||
PE0701 | Decision of registration |
Patent event code: PE07011S01D Comment text: Decision to Grant Registration Patent event date: 20230331 |
|
PG1501 | Laying open of application | ||
PG1601 | Publication of registration |