KR20230072365A - 스토리지 컨트롤러 및 이를 포함하는 스토리지 장치 - Google Patents
스토리지 컨트롤러 및 이를 포함하는 스토리지 장치 Download PDFInfo
- Publication number
- KR20230072365A KR20230072365A KR1020220007670A KR20220007670A KR20230072365A KR 20230072365 A KR20230072365 A KR 20230072365A KR 1020220007670 A KR1020220007670 A KR 1020220007670A KR 20220007670 A KR20220007670 A KR 20220007670A KR 20230072365 A KR20230072365 A KR 20230072365A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- memory cell
- block
- program
- memory
- Prior art date
Links
- 230000015654 memory Effects 0.000 claims abstract description 314
- 230000003321 amplification Effects 0.000 claims abstract description 61
- 238000003199 nucleic acid amplification method Methods 0.000 claims abstract description 61
- 238000013507 mapping Methods 0.000 claims abstract description 28
- 238000013519 translation Methods 0.000 claims abstract description 24
- 238000012545 processing Methods 0.000 claims abstract description 15
- 239000000872 buffer Substances 0.000 claims description 45
- 238000006243 chemical reaction Methods 0.000 claims description 15
- 230000006835 compression Effects 0.000 claims description 6
- 238000007906 compression Methods 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 23
- 101100481702 Arabidopsis thaliana TMK1 gene Proteins 0.000 description 20
- 101100481704 Arabidopsis thaliana TMK3 gene Proteins 0.000 description 13
- 238000012795 verification Methods 0.000 description 11
- 238000000034 method Methods 0.000 description 7
- 230000004044 response Effects 0.000 description 7
- 101100049574 Human herpesvirus 6A (strain Uganda-1102) U5 gene Proteins 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 101150064834 ssl1 gene Proteins 0.000 description 5
- 101150062870 ssl3 gene Proteins 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 238000012937 correction Methods 0.000 description 3
- 239000000758 substrate Substances 0.000 description 3
- 101100058970 Arabidopsis thaliana CALS11 gene Proteins 0.000 description 2
- 101100058961 Arabidopsis thaliana CALS2 gene Proteins 0.000 description 2
- 101100058964 Arabidopsis thaliana CALS5 gene Proteins 0.000 description 2
- 102100031885 General transcription and DNA repair factor IIH helicase subunit XPB Human genes 0.000 description 2
- 101000920748 Homo sapiens General transcription and DNA repair factor IIH helicase subunit XPB Proteins 0.000 description 2
- 101100287040 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) ARG82 gene Proteins 0.000 description 2
- 101100341076 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) IPK1 gene Proteins 0.000 description 2
- 238000013478 data encryption standard Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000006866 deterioration Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 238000004377 microelectronic Methods 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 230000003936 working memory Effects 0.000 description 1
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번째 프로그램을 수행하지 않는 중앙 처리 장치를 포함한다
Description
본 발명은 스토리지 컨트롤러 및 이를 포함하는 스토리지 장치에 관한 것이다.
낸드 플래시 메모리(NAND Flash memory)를 포함하는 스토리지 장치는 초소형 전자기기부터 미디어 서버에 이르기까지 현대의 다양한 시스템에서 활용될 수 있다. 이때, 낸드 플래시를 포함하는 스토리지 장치에서, 쓰기 증폭(WAF: Write Amplification)은 가비지 컬렉션(Garbage collection)에 의해 발생되는 것으로 스토리지 장치의 성능을 불규칙하게 만드는 원인이 될 수 있다.
또한, 스토리지 장치와 통신하는 호스트는, 스토리지 장치의 특정 영역에 존재하는 데이터가 더 이상 사용되지 않음을 알리는 트림(Trim) 명령을 스토리지 장치에 전송할 수 있다. 스토리지 장치는 트림 명령을 수신받고, 해당 데이터에 대한 플러시(flush) 동작을 수행할 수 있다.
즉, 스토리지 장치의 성능을 향상시키기 위해, 쓰기 증폭 특성을 개선시키고, 플러시 동작 속도를 향상시킬 필요성이 대두된다.
본 발명이 해결하고자 하는 기술적 과제는 쓰기 증폭(WAF: Write Amplification) 특성이 개선되고, 플러쉬(flush) 동작 속도가 향상된 스토리지 컨트롤러를 제공하는 것이다.
본 발명이 해결하고자 하는 다른 기술적 과제는 쓰기 증폭 특성이 개선되고, 플러쉬 동작 속도가 향상된 스토리지 컨트롤러를 포함하는 스토리지 장치를 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 본 발명의 몇몇 실시예에 따른 스토리지 컨트롤러는, 제1 메모리 셀에 N(N은 1보다 큰 자연수)회 프로그램을 수행하여 제1 데이터를 기록하는 스토리지 컨트롤러로서, 제1 데이터에 대한 제1 논리 어드레스와, 제1 데이터에 대한 제1 물리 어드레스 사이의 매핑 정보를 저장하는 매핑 테이블을 이용하여 어드레스 매핑을 수행하는 플래시 변환 계층, 제1 메모리 셀에 N번째 프로그램이 수행되기 전에, 제1 데이터가 유효하지 않은 데이터(Invalid data)인지 확인하는 쓰기 증폭(WAF: Write Amplification) 관리기, 및 제1 데이터가 유효하지 않은 데이터인 경우, 제1 메모리 셀에 대해 N번째 프로그램을 수행하지 않는 중앙 처리 장치를 포함한다.
상기 기술적 과제를 달성하기 위한 본 발명의 몇몇 실시예에 따른 스토리지 장치는, 제1 메모리 셀에 N(N은 1보다 큰 자연수)회 프로그램을 수행하여 제1 데이터를 기록하는 스토리지 장치로서, 제1 메모리 셀을 포함하는 비휘발성 메모리 장치, 및 제1 메모리 셀에 제1 데이터를 기록하는 스토리지 컨트롤러를 포함하되, 스토리지 컨트롤러는, 제1 데이터에 대한 제1 논리 어드레스와, 제1 데이터에 대한 제1 물리 어드레스 사이의 매핑 정보를 저장하는 매핑 테이블을 이용하여 어드레스 매핑을 수행하는 플래시 변환 계층, 제1 메모리 셀에 N번째 프로그램이 수행되기 전에, 제1 데이터가 유효하지 않은 데이터(Invalid data)인지 확인하는 쓰기 증폭(WAF: Write Amplification) 관리기, 및 제1 데이터가 유효하지 않은 데이터인 경우, 제1 메모리 셀에 대해 N번째 프로그램을 수행하지 않는 중앙 처리 장치를 포함한다.
상기 기술적 과제를 달성하기 위한 본 발명의 몇몇 실시예에 따른 스토리지 장치는, 제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 블록에 수행하는 중앙 처리 장치를 포함한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 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는 몇몇 실시예들에 따른 스토리지 장치가 적용된 데이터 센터를 설명하기 위한 예시적인 블록도이다.
도 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은 몇몇 실시예들에 따른 스토리지 시스템을 설명하기 위한 블록도이다.
도 1을 참조하면, 스토리지 시스템(10)은 호스트(100) 및 스토리지 장치(200)를 포함할 수 있다. 또한, 스토리지 장치(200)는 스토리지 컨트롤러(210) 및 비휘발성 메모리 장치(220)를 포함할 수 있다. 또한, 본 발명의 예시적인 실시예에 따라, 호스트(100)는 호스트 컨트롤러(110) 및 호스트 메모리(120)를 포함할 수 있다. 호스트 메모리(120)는 스토리지 장치(200)로 전송될 데이터, 혹은 스토리지 장치(200)로부터 전송된 데이터를 임시로 저장하기 위한 버퍼 메모리로서 기능할 수 있다.
스토리지 장치(200)는 호스트(100)로부터의 요청에 따라 데이터를 저장하기 위한 저장 매체들을 포함할 수 있다. 일 예로서, 스토리지 장치(200)는 SSD(Solid State Drive)를 포함할 수 있다. 스토리지 장치(200)가 예를 들어, SSD인 경우, 스토리지 장치(200)는 NVMe(non-volatile memory express) 표준을 따르는 장치일 수 있다. 호스트(100)와 스토리지 장치(200)는 각각 채용된 표준 프로토콜에 따른 패킷을 생성하고 이를 전송할 수 있다.
스토리지 장치(200)의 비휘발성 메모리 장치(220)가 플래시 메모리를 포함할 때, 상기 플래시 메모리는 2D NAND 메모리 어레이나 3D(또는 수직형, Vertical) NAND(VNAND) 메모리 어레이를 포함할 수 있다.
일 실시예에 따라, 호스트 컨트롤러(110)와 호스트 메모리(120)는 별도의 반도체 칩으로 구현될 수 있다. 또는, 일부 실시예들에서, 호스트 컨트롤러(110)와 호스트 메모리(120)는 동일한 반도체 칩에 집적될 수 있다. 일 예로서, 호스트 컨트롤러(110)는 애플리케이션 프로세서(Application Processor)에 구비되는 다수의 모듈들 중 어느 하나일 수 있으며, 상기 애플리케이션 프로세서는 시스템 온 칩(System on Chip, SoC)으로 구현될 수 있다. 또한, 호스트 메모리(120)는 상기 애플리케이션 프로세서 내에 구비되는 임베디드 메모리이거나, 또는 상기 애플리케이션 프로세서의 외부에 배치되는 비휘발성 메모리 또는 메모리 모듈일 수 있다.
호스트 컨트롤러(110)는 호스트 메모리(120)의 버퍼 영역의 데이터(예컨대, 기록 데이터)를 비휘발성 메모리 장치(220)에 저장하거나, 비휘발성 메모리 장치(220)의 데이터(예컨대, 독출 데이터)를 버퍼 영역에 저장하는 동작을 관리할 수 있다.
스토리지 컨트롤러(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)에 대한 데이터 기록 및 독출 동작이 제어될 수 있다.
호스트 인터페이스(211)는 호스트(100)와 패킷(packet)을 송수신할 수 있다. 호스트(100)로부터 호스트 인터페이스(211)로 전송되는 패킷은 커맨드(command) 혹은 비휘발성 메모리 장치(220)에 기록될 데이터 등을 포함할 수 있으며, 호스트 인터페이스(211)로부터 호스트(100)로 전송되는 패킷은 커맨드에 대한 응답(response) 혹은 비휘발성 메모리 장치(220)로부터 독출된 데이터 등을 포함할 수 있다.
호스트(100)로부터 호스트 인터페이스(211)로 전송되는 커맨드는 예를 들어, 쓰기, 읽기, 또는 트림(Trim) 명령 등일 수 있다.
메모리 인터페이스(212)는 비휘발성 메모리 장치(220)에 기록될 데이터를 비휘발성 메모리 장치(220)로 송신하거나, 비휘발성 메모리 장치(220)로부터 독출된 데이터를 수신할 수 있다. 이러한 메모리 인터페이스(212)는 토글(Toggle) 혹은 온파이(Open NAND Flash Interface; ONFI)와 같은 표준 규약을 준수하도록 구현될 수 있다.
플래시 변환 계층(214)은 어드레스 매핑(address mapping), 웨어-레벨링(wear-leveling), 가비지 콜렉션(garbage collection)과 같은 여러 기능을 수행할 수 있다. 어드레스 매핑 동작은 호스트(100)로부터 수신한 논리 어드레스(logical address)를, 비휘발성 메모리 장치(220) 내에 데이터를 실제로 저장하는 데 사용되는 물리 어드레스(physical address)로 바꾸는 동작이다.
예를 들어, 플래시 변환 계층(214)은 제1 데이터에 대한 제1 논리 어드레스와 이에 매핑되는 제1 물리 어드레스 정보가 기록된 매핑 테이블을 저장할 수 있다. 즉, 플래시 변환 계층(214)은 제1 데이터에 대한 어드레스 매핑 동작을 수행할 때, 매핑 테이블을 참조하여, 수행할 수 있다.
웨어-레벨링은 비휘발성 메모리 장치(220) 내의 블록(block)들이 균일하게 사용되도록 하여 특정 블록의 과도한 열화를 방지하기 위한 기술로, 예시적으로 물리 블록(physical block)들의 소거 카운트들을 밸런싱하는 펌웨어 기술을 통해 구현될 수 있다. 가비지 콜렉션은, 블록의 유효 데이터를 새 블록에 복사한 후 기존 블록을 소거(erase)하는 방식을 통해 비휘발성 메모리 장치(220) 내에서 사용 가능한 용량을 확보하기 위한 기술이다.
ECC 엔진(217)은 비휘발성 메모리 장치(220)로부터 독출되는 독출 데이터에 대한 오류 검출 및 정정 기능을 수행할 수 있다. 보다 구체적으로, ECC 엔진(217)은 비휘발성 메모리 장치(220)에 기입될 기입 데이터에 대하여 패리티 비트(parity bit)들을 생성할 수 있으며, 이와 같이 생성된 패리티 비트들은 기입 데이터와 함께 비휘발성 메모리 장치(220) 내에 저장될 수 있다. 비휘발성 메모리 장치(220)로부터의 데이터 독출 시, ECC 엔진(217)은 독출 데이터와 함께 비휘발성 메모리 장치(220)로부터 독출되는 패리티 비트들을 이용하여 독출 데이터의 에러를 정정하고, 에러가 정정된 독출 데이터를 출력할 수 있다.
암복호화 엔진(218)은, 스토리지 컨트롤러(210)로 입력되는 데이터에 대한 암호화(encryption) 동작과 복호화(decryption) 동작 중 적어도 하나의 동작을 수행할 수 있다.
예를 들어, 암복호화 엔진(218)은, 대칭 키 알고리즘(symmetric-key algorithm)를 이용하여 암호화 동작 및/또는 복호화 동작을 수행할 수 있다. 이때, 암복호화 엔진(218)은 예를 들어, AES(Advanced Encryption Standard) 알고리즘 또는 DES(Data Encryption Standard) 알고리즘을 이용하여, 암호화 및/또는 복호화 동작을 수행할 수 있다.
또한, 예를 들어, 암복호화 엔진(218)은 공개키 암호화 알고리즘을 이용하여 암호화 동작 및/또는 복호화 동작을 수행할 수 있다. 이때, 암복호화 엔진(218)은 예를 들어, 암호화 동작 시 공개키를 이용하여 암호화를 수행하고, 복호화 동작 시 비밀키를 이용하여 복호화를 수행할 수 있다. 예를 들어, 암복호화 엔진(218)은 RSA(Rivest Shamir Adleman), ECC(Elliptic Curve Cryptography), 또는 DH(Diffie-Hellman) 암호화 알고리즘을 이용할 수 있다.
이에 제한되지 않고, 암복호화 엔진(218)은 HE(Homomorphic Encryption), PQC(Post-Quantum Cryptography), 또는 FE(Functional Encryption) 등과 같은 양자 암호 기술을 이용하여, 암호화 동작 및/또는 복호화 동작을 수행할 수 있다.
쓰기 증폭 관리기(215)는 비휘발성 메모리 장치(220)에 포함된 메모리 셀에 프로그램이 수행될 때, 몇몇 실시예들에 따른 스토리지 장치의 성능을 향상시키도록 도와줄 수 있다. 예를 들어, 쓰기 증폭 관리기(215)는 몇몇 실시예들에 따른 스토리지 장치의 쓰기 증폭 특성을 개선시킬 수 있다. 또한, 예를 들어, 쓰기 증폭 관리기(215)는 몇몇 실시예들에 따른 스토리지 장치의 플러쉬(flush) 동작의 속도를 향상시킬 수 있다.
이에 대해서, 먼저 비휘발성 메모리 장치(220)의 구조에 대해 도 2를 통해 살펴본다.
도 2는 도 1의 비휘발성 메모리 장치를 설명하기 위한 예시적인 블록도이다.
도 2를 참조하면, 도 2의 비휘발성 메모리 장치(300)는 도 1의 비휘발성 메모리 장치(220)에 대응될 수 있다.
계속하여 도 2를 참조하면, 비휘발성 메모리 장치(300)는 제어 로직 회로(320), 메모리 셀 어레이(330), 페이지 버퍼(340), 전압 생성기(350), 및 로우 디코더(360)를 포함할 수 있다. 도 2에는 도시되지 않았으나, 비휘발성 메모리 장치(300)는 도 1에 도시된 메모리 인터페이스 회로(212)를 더 포함할 수 있고, 또한 컬럼 로직, 프리-디코더, 온도 센서, 커맨드 디코더, 어드레스 디코더 등을 더 포함할 수 있다.
제어 로직 회로(320)는 비휘발성 메모리 장치(300) 내의 각종 동작을 전반적으로 제어할 수 있다. 제어 로직 회로(320)는 메모리 인터페이스 회로(310)로부터의 커맨드(CMD) 및/또는 어드레스(ADDR)에 응답하여 각종 제어 신호들을 출력할 수 있다. 예를 들어, 제어 로직 회로(320)는 전압 제어 신호(CTRL_vol), 로우 어드레스(X-ADDR), 및 컬럼 어드레스(Y-ADDR)를 출력할 수 있다.
메모리 셀 어레이(330)는 복수의 메모리 블록들(BLK1 내지 BLKz)을 포함할 수 있고(z는 양의 정수), 복수의 메모리 블록들(BLK1 내지 BLKz) 각각은 복수의 메모리 셀들을 포함할 수 있다. 메모리 셀 어레이(330)는 비트 라인들(BL)을 통해 페이지 버퍼부(340)에 연결될 수 있고, 워드 라인들(WL), 스트링 선택 라인들(SSL), 및 그라운드 선택 라인들(GSL)을 통해 로우 디코더(360)에 연결될 수 있다.
예시적인 실시 예에서, 메모리 셀 어레이(330)는 3차원 메모리 셀 어레이를 포함할 수 있고, 3차원 메모리 셀 어레이는 복수의 낸드 스트링들을 포함할 수 있다. 각 낸드 스트링은 기판 위에 수직으로 적층된 워드 라인들에 각각 연결된 메모리 셀들을 포함할 수 있다. 미국 특허공개공보 제7,679,133호, 미국 특허공개공보 제8,553,466호, 미국 특허공개공보 제8,654,587호, 미국 특허공개공보 제8,559,235호, 및 미국 특허출원공개공보 제2011/0233648호는 본 명세서에 인용 형식으로 결합된다. 예시적인 실시 예에서, 메모리 셀 어레이(330)는 2차원 메모리 셀 어레이를 포함할 수 있고, 2차원 메모리 셀 어레이는 행 및 열 방향을 따라 배치된 복수의 낸드 스트링들을 포함할 수 있다.
페이지 버퍼(340)는 복수의 페이지 버퍼들(PB1 내지 PBn)을 포함할 수 있고(n은 3 이상의 정수), 복수의 페이지 버퍼들(PB1 내지 PBn)은 복수의 비트 라인들(BL)을 통해 메모리 셀들과 각각 연결될 수 있다. 페이지 버퍼(340)는 컬럼 어드레스(Y-ADDR)에 응답하여 비트 라인들(BL) 중 적어도 하나의 비트 라인을 선택할 수 있다. 페이지 버퍼(340)는 동작 모드에 따라 기입 드라이버 또는 감지 증폭기로서 동작할 수 있다. 예를 들어, 프로그램 동작 시, 페이지 버퍼(340)는 선택된 비트 라인으로 프로그램될 데이터에 대응하는 비트 라인 전압을 인가할 수 있다. 독출 동작 시, 페이지 버퍼(340)는 선택된 비트 라인의 전류 또는 전압을 감지하여 메모리 셀에 저장된 데이터를 감지할 수 있다.
전압 생성기(350)는 전압 제어 신호(CTRL_vol)를 기반으로 프로그램, 독출, 및 소거 동작들을 수행하기 위한 다양한 종류의 전압들을 생성할 수 있다. 예를 들어, 전압 생성기(350)는 워드 라인 전압(VWL)으로서 프로그램 전압, 독출 전압, 프로그램 검증 전압, 소거 전압 등을 생성할 수 있다.
로우 디코더(360)는 로우 어드레스(X-ADDR)에 응답하여 복수의 워드 라인들(WL) 중 하나를 선택할 수 있고, 복수의 스트링 선택 라인들(SSL) 중 하나를 선택할 수 있다. 예를 들어, 프로그램 동작 시, 로우 디코더(360)는 선택된 워드 라인으로 프로그램 전압 및 프로그램 검증 전압을 인가하고, 독출 동작 시, 선택된 워드 라인으로 독출 전압을 인가할 수 있다.
메모리 셀 어레이(330)에 포함된 블록에 대해, 제1 블록(BLK1)을 예시로 도 3을 통해 설명한다. 제1 블록(BLK1)에 대한 설명이 다른 블록들(BLK2 내지 BLKz)에도 적용될 수 있음은 물론이다.
도 3은 도 2의 블록을 설명하기 위한 예시적인 회로도이다.
도 3을 참조하면, 도 1 및 도 2의 비휘발성 메모리 장치에 적용될 수 있는 3D V-NAND 구조가 도시된다. 비휘발성 메모리 장치가 3D V-NAND 타입의 플래시 메모리로 구현될 경우, 도 2의 복수의 메모리 블록들(BLK1 내지 BLKz) 각각은 도 3에 도시된 바와 같은 등가 회로로 표현될 수 있다.
도 3에 도시된 메모리 블록(BLK1)은 기판 상에 삼차원 구조로 형성되는 삼차원 메모리 블록을 나타낸다. 예를 들어, 메모리 블록(BLK1)에 포함되는 복수의 메모리 낸드 스트링들(NS11, 내지 NS33)은 상기 기판과 수직한 방향으로 형성될 수 있다.
도 3을 계속하여 참조하면, 메모리 블록(BLK1)은 비트 라인들(BL1, BL2, BL3)과 공통 소스 라인(CSL) 사이에 연결되는 복수의 메모리 낸드 스트링들(NS11 내지 NS33)을 포함할 수 있다. 복수의 메모리 낸드 스트링들(NS11 내지 NS33) 각각은 스트링 선택 트랜지스터(SST), 복수의 메모리 셀들(MC1, MC2, ..., MC8) 및 접지 선택 트랜지스터(GST)를 포함할 수 있다. 도 3에는 복수의 메모리 낸드 스트링들(NS11 내지 NS33) 각각이 8개의 메모리 셀들(MC1, MC2, ..., MC8)을 포함하는 것으로 도시되어 있으나, 반드시 이에 한정되는 것은 아니다.
스트링 선택 트랜지스터(SST)는 상응하는 스트링 선택 라인(SSL1, SSL2, SSL3)에 연결될 수 있다. 복수의 메모리 셀들(MC1, MC2, ..., MC8)은 각각 상응하는 워드 라인(WL1, WL2, ..., WL8)에 연결될 수 있다. 워드 라인(WL1, WL2, ..., WL8)의 일부는 더미 워드 라인에 해당할 수 있다. 접지 선택 트랜지스터(GST)는 상응하는 접지 선택 라인(GSL1, GSL2, GSL3)에 연결될 수 있다. 스트링 선택 트랜지스터(SST)는 상응하는 비트 라인들(BL1, BL2, BL3)에 연결되고, 접지 선택 트랜지스터(GST)는 공통 소스 라인(CSL)에 연결될 수 있다.
동일 높이의 워드 라인(예를 들면, WL1)은 공통으로 연결되고, 접지 선택 라인(GSL1, GSL2, GSL3) 및 스트링 선택 라인(SSL1, SSL2, SSL3)은 각각 분리될 수 있다. 도 3에는 메모리 블록(BLK1)이 여덟 개의 워드 라인(WL1, WL2, ..., WL8) 및 세 개의 비트 라인들(BL1, BL2, BL3)에 연결되는 것으로 도시되어 있으나, 반드시 이에 한정되는 것은 아니다.
도 4는 몇몇 실시예들에 따른 스토리지 장치의 프로그램 동작을 설명하기 위한 그래프들이다.
본 도면에서는 3-비트 데이터가 프로그램되는 예로 설명하였으나, 이에 제한되지 않고, 2-비트 데이터, 및 1-비트 데이터가 프로그램되는 예로 설명될 수 있음은 물론이다.
도 1, 도 3 및 도 4를 참조하면, 스토리지 컨트롤러(210)는 비휘발성 메모리 장치(220)에 데이터를 기록할 수 있다. 예를 들어, 스토리지 컨트롤러(210)는 비휘발성 메모리 장치(220)의 제1 메모리 셀(MC1)에 제1 데이터를 기록할 수 있다. 이때, 스토리지 컨트롤러(210)는 제1 메모리 셀(MC1)에 N(N은 1보다 큰 자연수)회 프로그램을 수행하여, 제1 데이터를 기록할 수 있다. 즉, 스토리지 컨트롤러(210)는 비휘발성 메모리 장치(220)의 메모리 셀에 데이터를 기록할 때, 멀티 프로그램을 수행하여 데이터를 기록할 수 있다.
이하에서의 설명은 2번의 프로그램 수행을 통해 데이터를 기록하는 것을 예로 설명하나, 몇몇 실시예들에 따른 스토리지 장치(200)의 동작은 이에 제한되지 않고, 다른 N번의 프로그램 수행을 통해 데이터가 기록되는 동작에도 적용될 수 있음은 물론이다.
1번째 프로그램 동작(1st PGM)은 각 메모리 셀이 8개의 상태들(E, P11, P12, P13, P14, P15, P16, P17) 중 3-비트 데이터에 대응하는 상태를 갖도록 행해질 수 있다. 8개의 상태들(E, P11~P17)은, 도 4에 도시된 바와 같이, 읽기 마진 없이 서로 인접할 수 있다. 즉, 1번째 프로그램 동작(1st PGM)시 3-비트 데이터가 개략적으로 프로그램될 수 있다.
예시적인 실시예에 있어서, 1번째 프로그램 동작(1st PGM)은 프로그램 루프의 반복시 프로그램 전압이 정해진 증가분만큼 증가하는 증가형 스텝 펄스 프로그래밍(Incremental Step Pulse Programming: ISPP) 기술에 따라 행해질 수 있다.
예시적인 실시예에 있어서, 1번째 프로그램 동작(1st PGM)은 검증 동작을 포함할 수 있다. 검증 동작시, 적어도 하나의 프로그램 상태에 대해서만 검증 동작이 수행될 수 있다. 예를 들어, 1번째 프로그램 동작(1st PGM)에서, 프로그램 상태들(P12, P14, P16)에 대한 검증 동작들이 수행되는 반면에, 프로그램 상태들(P11, P13, P15, P17)에 대한 검증 동작들은 수행되지 않을 수 있다. 즉, 프로그램 상태들(P12, P14, P16)가 검증 패스되면, 1번째 프로그램 동작(1st PGM)은 종료될 수 있다.
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)보다 높을 수 있다.
예시적인 실시예에 있어서, 2번째 프로그램 동작(2nd PGM)은 ISPP 기술에 따라 행해질 수 있다.
예시적인 실시 예에 있어서, 2번째 프로그램 동작(2nd PGM)은 검증 동작을 포함할 수 있다. 검증 동작은 모든 프로그램상태들에 대해서 행해질 수 있다. 모든 프로그램 상태들(P21~P27)이 검증 패스되면, 2번째 프로그램 동작(2nd PGM)이 종료되면서, 데이터의 기록이 완료될 수 있다.
이때, 쓰기 증폭 관리기(215)는 1번째 프로그램 동작이 수행된 메모리 셀에 대한 2번째 프로그램 동작을 수행하여 데이터의 기록을 완료하기 전에, 2번째 프로그램 동작이 수행되는 메모리 셀이 유효하지 않은 데이터(Invalid data)인지 확인하고, 2번째 프로그램 동작을 수행할 수 있다.
이에 제한되지 않고, 예를 들어, N회의 프로그램을 통해 데이터가 기록되는 스토리지 장치(200)의 경우, 쓰기 증폭 관리기(215)는 N-1번째 프로그램 동작이 수행된 메모리 셀에 대한 N번째 프로그램 동작을 수행하여 데이터의 기록을 완료하기 전에, N번째 프로그램 동작이 수행되는 메모리 셀이 유효하지 않은 데이터(Invalid data)인지 확인하고, N번째 프로그램 동작을 수행할 수 있다.
또한, 쓰기 증폭 관리기(215)는 1번째 프로그램 동작이 수행된 메모리 셀에 대한 2번째 프로그램 동작을 수행하여 데이터의 기록을 완료하기 전에, 오픈 메모리 셀이 포함된 블록을 검출하는 동작을 먼저 수행하고, 오픈 메모리 셀이 포함된 블록이 검출된다면, 오픈 메모리 셀이 포함된 블록으로 1번째 프로그램 동작이 수행된 메모리 셀을 이동시켜 압축을 수행하고, 2번째 프로그램 동작을 수행할 수 있다.
이에 제한되지 않고, 예를 들어, N회의 프로그램을 통해 데이터가 기록되는 스토리지 장치(200)의 경우, 쓰기 증폭 관리기(215)는 N-1번째 프로그램 동작이 수행된 메모리 셀에 대한 N번째 프로그램 동작을 수행하여 데이터의 기록을 완료하기 전에, 오픈 메모리 셀이 포함된 블록을 검출하는 동작을 먼저 수행하고, 오픈 메모리 셀이 포함된 블록이 검출된다면, 오픈 메모리 셀이 포함된 블록으로 N-1번째 프로그램 동작이 수행된 메모리 셀을 이동시켜 압축을 수행하고, N번째 프로그램 동작을 수행할 수 있다.
이러한 쓰기 증폭 관리기(215)의 동작을 통해, 몇몇 실시예들에 따른 스토리지 장치(200)의 쓰기 증폭 특성이 향상될 수 있다. 또한, 스토리지 장치(200)의 플러쉬(flush) 동작 속도가 향상될 수 있다.
이하에서, 쓰기 증폭 관리기(215)의 구조 및 동작을 자세히 살펴본다. 이하에서, 몇몇 실시예들에 따른 스토리지 장치(200)가 2번의 프로그램 수행을 통해 데이터가 메모리 셀에 기입되는 것으로 설명하나, 이에 대한 설명이 N번의 프로그램 수행을 통해 데이터가 메모리 셀에 기입되는 스토리지 장치(200)에도 적용될 수 있음은 물론이다.
도 5는 몇몇 실시예들에 따른 쓰기 증폭 관리기를 설명하기 위한 블록도이다.
이하에서는, 스토리지 컨트롤러(210)가 제1 데이터를 제1 메모리 셀(MC1)에 2번의 프로그램 수행을 통해 기록하는 경우를 예를 들어 설명한다. 또한, 제1 메모리 셀(MC1)에 1번의 프로그램이 이미 수행되었고, 제1 데이터가 기록되기 위해, 마지막 2번째 프로그램 수행 동작이 남아있음을 가정한다.
도 1, 도 3 및 도 5를 참조하면, 쓰기 증폭 관리기(215)는 플래시 변환 계층 검사기(2150)를 포함한다. 플래시 변환 계층 검사기(2150)는 플래시 변환 계층(214)과 통신하여, 플래시 변환 계층(214) 내의 매핑 테이블을 참조하여, 제1 데이터가 유효하지 않은 데이터인지 확인할 수 있다.
예를 들어, 플래시 변환 계층 검사기(2150)는 플래시 변환 계층(214) 내의 매핑 테이블을 참조한 결과, 제1 데이터에 대한 제1 논리 어드레스에 대응되는 제1 물리 어드레스가 매핑되어 있지 않다고 판단되면, 제1 데이터를 유효하지 않은 데이터로 판단할 수 있다.
다른 예를 들어, 플래시 변환 계층 검사기(2150)는 플래시 변환 계층(214) 내의 매핑 테이블을 참조한 결과, 제1 데이터에 대해, 호스트(100)로부터 트림(trim) 명령이 전송되었다면, 제1 데이터를 유효하지 않은 데이터로 판단할 수 있다.
스토리지 컨트롤러(210), 더 자세히는 스토리지 컨트롤러(210)의 중앙 처리 장치(213)는 쓰기 증폭 관리기(215)로부터 제1 데이터가 유효하지 않은 데이터라는 판단 결과를 수신 받으면, 제1 메모리 셀에 대한 2번째 프로그램 동작을 수행하지 않는다.
이를 통해, 제1 메모리 셀(MC1)과 연결된 워드 라인(예를 들어, 제1 워드 라인(WL1))이 불필요하게 프로그램되는 경우를 방지할 수 있다.
상술된 쓰기 증폭 관리기(215)를 포함하는 스토리지 장치(200)의 동작을 흐름도를 통해 살펴본다.
도 6은 몇몇 실시예들에 따른 도 5의 쓰기 증폭 관리기의 동작을 설명하기 위한 흐름도이다.
도 1, 도 3, 도 5 및 도 6을 참조하면, 제1 메모리 셀(MC1)에 대하여, 제1 데이터를 기록하기 위해 1번째 프로그램 동작을 수행한다(S100).
이후, 쓰기 증폭 관리기(215) 내의 플래시 변환 계층 검사기(2150)를 통하여, 제1 데이터가 플래시 변환 계층(214) 내에서 유효하지 않은 데이터인지 판단한다(S110).
만약, 제1 데이터가 플래시 변환 계층(214) 내에서 유효한 데이터라고 판단되면(N), 제1 메모리 셀(MC1)에 대해 2번째 프로그램 동작을 수행하여, 제2 데이터를 기록한다(S220).
그렇지 않고, 만약, 제1 데이터가 플래시 변환 계층(214) 내에서 유효하지 않은 데이터라고 판단되면(Y), 제1 메모리 셀(MC1)에 대해 2번째 프로그램 동작을 수행하지 않고, 프로그램 동작을 중지한다.
도 7은 몇몇 실시예들에 따른 다른 쓰기 증폭 관리기를 설명하기 위한 블록도이다.
도 1, 도 3 및 도 7를 참조하면, 쓰기 증폭 관리기(215)는 버퍼 메모리 검사기(2152)를 포함한다. 버퍼 메모리 검사기(2152)는 버퍼 메모리(216)와 통신하여, 버퍼 메모리(216) 내의 제1 데이터가 유효하지 않은 데이터인지 확인할 수 있다.
예를 들어, 버퍼 메모리 검사기(2152)는 버퍼 메모리(216) 내의 제1 데이터가 오버 라이트(over write)된 데이터라고 판단되면, 제1 데이터를 유효하지 않은 데이터라고 판단할 수 있다. 예를 들어, 버퍼 메모리(216) 내의 제1 데이터에 대해, 호스트가 쓰기 명령을 전송하고, 제1 데이터는 비휘발성 메모리 장치에 프로그램되기까지 버퍼 메모리(216)에서 대기 중일 수 있다. 이때, 스토리지 컨트롤러(210)가 제1 데이터에 대해, 쓰기 완료라는 명령을 호스트에 전송하고, 이를 인지한 호스트가 다시 제1 데이터에 대해 쓰기 명령을 전송한 경우, 제1 데이터에 대해 오버 라이트가 되었다고 판단할 수도 있다.
스토리지 컨트롤러(210), 더 자세히는 스토리지 컨트롤러(210)의 중앙 처리 장치(213)는 쓰기 증폭 관리기(215)로부터 제1 데이터가 유효하지 않은 데이터라는 판단 결과를 수신 받으면, 제1 메모리 셀에 대한 2번째 프로그램 동작을 수행하지 않는다.
이를 통해, 제1 메모리 셀(MC1)과 연결된 워드 라인(예를 들어, 제1 워드 라인(WL1))이 불필요하게 프로그램되는 경우를 방지할 수 있다.
상술된 쓰기 증폭 관리기(215)를 포함하는 스토리지 장치(200)의 동작을 흐름도를 통해 살펴본다.
도 8은 몇몇 실시예들에 따른 도 7의 다른 쓰기 증폭 관리기의 동작을 설명하기 위한 흐름도이다.
도 1, 도 3, 도 7 및 도 8을 참조하면, 제1 메모리 셀(MC1)에 대하여, 제1 데이터를 기록하기 위해 1번째 프로그램 동작을 수행한다(S200).
이후, 쓰기 증폭 관리기(215) 내의 버퍼 메모리 검사기(2152)를 통하여, 제1 데이터가 버퍼 메모리(216) 내에서 유효하지 않은 데이터인지 판단한다(S210).
만약, 제1 데이터가 버퍼 메모리(216) 내에서 유효한 데이터라고 판단되면(N), 제1 메모리 셀(MC1)에 대해 2번째 프로그램 동작을 수행하여, 제2 데이터를 기록한다(S220).
그렇지 않고, 만약, 제1 데이터가 버퍼 메모리(216) 내에서 유효하지 않은 데이터라고 판단되면(Y), 제1 메모리 셀(MC1)에 대해 2번째 프로그램 동작을 수행하지 않고, 프로그램 동작을 중지한다.
도 9는 몇몇 실시예들에 따른 다른 쓰기 증폭 관리기를 설명하기 위한 블록도이다.
도 9를 참조하면, 쓰기 증폭 관리기(215)는 도 5 및 도 6을 통해 설명된 플래시 변환 계층 검사기(2150)와 도 7 및 도 8에서 설명된 버퍼 메모리 검사기(2152)를 모두 포함할 수 있다. 즉, 몇몇 실시예들에 따른 쓰기 증폭 관리기(215)는 플래시 변환 계층 검사기(2150)와 버퍼 메모리 검사기(2152)의 병렬적 동작을 통해, 제1 데이터가 유효하지 않은 데이터인지를 판단할 수 있다.
몇몇 실시예들에 따른 도 9의 쓰기 증폭 관리기(215)의 동작을 도 10의 흐름도를 통해 살펴본다.
도 10은 몇몇 실시예들에 따른 도 9의 다른 쓰기 증폭 관리기의 동작을 설명하기 위한 흐름도이다.
도 1, 도 3, 도 9 및 도 10을 참조하면, 제1 메모리 셀(MC1)에 대하여, 제1 데이터를 기록하기 위해 1번째 프로그램 동작을 수행한다(S300).
이후, 버퍼 메모리 검사기(2152)를 통해, 제1 데이터가 버퍼 메모리(216) 내에서 유효하지 않은 데이터인지를 판단할 수 있다(S310). 또한, 플래시 변환 계층 검사기(2150)를 통해, 제1 데이터가 플래시 변환 계층(214) 내에서 유효하지 않은 데이터인지를 판단할 수 있다(S320). 버퍼 메모리 검사기(2152)의 동작과 플래시 변환 계층 검사기(2150)의 동작은 병렬적으로 수행될 수 있다.
만약, 버퍼 메모리 검사기(2152)를 통해, 제1 데이터가 버퍼 메모리(216) 내에서 유효하지 않은 데이터로 판단되면(Y), 제1 메모리 셀(MC1)에 대한 2번째 프로그램 동작을 수행하지 않는다.
또한, 만약, 플래시 변환 계층 검사기(2150)를 통해, 제1 데이터가 플래시 변환 계층(214) 내에서 유효하지 않은 데이터로 판단되면(Y), 제1 메모리 셀(MC1)에 대한 2번째 프로그램 동작을 수행하지 않는다.
즉, 버퍼 메모리 검사기(2152)를 통해, 제1 데이터가 버퍼 메모리(216) 내에서 유효한 데이터로 판단되고(N), 플래시 변환 계층 검사기(2150)를 통해, 제1 데이터가 플래시 변환 계층(214) 내에서 유효한 데이터로 판단된 경우(N), 제1 메모리 셀(MC1)에 대한 2번째 프로그램이 수행될 수 있다.
이를 통해, 제1 메모리 셀(MC1)과 연결된 워드 라인(예를 들어, 제1 워드 라인(WL1))이 불필요하게 프로그램되는 경우를 방지할 수 있다.
도 5 내지 도 10을 통해, 상술된 몇몇 실시예들에 따른 스토리지 컨트롤러(210)의 동작을 블록을 간략화하여 도시한 도면들을 통해 설명한다.
도 11 내지 도 13은 도 5 내지 도 10을 통해 설명된 몇몇 실시예들에 따른 스토리지 컨트롤러의 동작을 설명하기 위한 도면이다.
도 1, 도 5, 도 7, 도 9, 도 11 내지 도 13을 참조하면, 제1 방향으로 연장된 복수의 워드 라인들(WL5 내지 WL8)과 제1 방향과 교차된 제2 방향으로 연장된 복수의 스트링 선택 라인들(SSL1 내지 SSL3)이 교차하는 지점에 메모리 셀들(MC1 내지 MC12)이 형성될 수 있다.
이때, 제10 메모리 셀(MC10)과 제11 메모리 셀(MC11)에 기록되는 데이터가 버퍼 메모리 검사기(2152) 및/또는 플래시 변환 계층 검사기(2150)를 통해, 유효하지 않은 데이터임이 판단된 것으로 가정한다. 이때, 제10 메모리 셀(MC10)과 제11 메모리 셀(MC11)을 유효하지 않은 메모리 셀(Invalid mc)로 정의한다.
만약, 스토리지 컨트롤러(210)가 2번의 프로그램을 통해 메모리 셀들(MC1 내지 MC12)에 데이터를 기록하는데, 2번째 프로그램을 수행하기 전에, 데이터의 유효성을 검사하지 않고, 모든 메모리 셀들(MC1 내지 MC12)에 대해 프로그램을 수행한다면, 도 12와 같이, 제10 메모리 셀(MC10)과 제11 메모리 셀(MC11)이 연결된 제5 워드 라인(WL5)에 대해 불필요한 프로그램 동작을 수행하게 된다.
도 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)에 대해 불필요한 프로그램 동작을 수행하게 된다.
따라서, 도 13에서와 같이, 스토리지 컨트롤러(210)가 2번의 프로그램을 통해 메모리 셀들(MC1 내지 MC12)에 데이터를 기록하는데, 2번째 프로그램을 수행하기 전에, 쓰기 증폭 관리기(215)를 통해, 데이터의 유효성을 판단한 후, 2번째 프로그램을 수행한다면, 도 13에서와 같이, 제10 메모리 셀(MC10)과 제11 메모리 셀(MC11)이 연결된 제5 워드 라인(WL5)에 대해 불필요한 프로그램 동작을 수행하지 않을 수 있다.
도 14는 몇몇 실시예들에 따른 다른 쓰기 증폭 관리기를 설명하기 위한 블록도이다.
도 1 및 도 14를 참조하면, 몇몇 실시예들에 따른 스토리지 컨트롤러(210)의 쓰기 증폭 관리기(215)는 오픈 메모리 셀 검출기(2154)와 메모리 셀 압축기(2156)를 포함한다.
쓰기 증폭 관리기(215)는 메모리 셀에 데이터를 기입하기 위한, 마지막 프로그램 동작을 수행하기 전에, 오픈 메모리 셀 검출기(2154)를 통해, 오픈 메모리 셀이 존재하는 블록을 찾을 수 있다.
예를 들어, 오픈 메모리 셀 검출기(2154)는 제1 블록에 제1 데이터를 기록하기 위해, 2번째 프로그램을 수행하기 전에, 제2 블록에 오픈 메모리 셀이 있는지 확인할 수 있다. 오픈 메모리 셀 검출기(2154)는 제2 블록에 제한되지 않고, 제3 블록 등에 대해서도, 오픈 메모리 셀이 있는지 확인할 수 있다.
오픈 메모리 셀은 예를 들어, 제1 블록에 제1 데이터를 기록하기 위한 2번째 프로그램을 수행하기 전에, 제1 블록을 제외한 나머지 블록 중, 1번째 프로그램이 수행된 워드 라인들 중, 한 번도 프로그램되지 않은 메모리 셀의 위치를 오픈 메모리 셀로 정의할 수 있다.
예를 들어, 제1 블록의 스트링 선택 트랜지스터로부터 일정한 높이에 위치하는 제3 워드 라인에 대한 2번째 프로그램을 수행하기 전에, 제2 블록의 스트링 선택 트랜지스터로부터 제3 워드 라인과 동일한 높이의 제3' 워드 라인에 한 번도 프로그램되지 않은 메모리 셀의 위치가 존재한다고 판단되면, 그 위치를 오픈 메모리 셀로 정의할 수 있다.
이후, 제1 블록에 제1 데이터를 기록하기 위해, 2번째 프로그램을 수행하기 전에, 메모리 셀 압축기(2156)를 통해, 2번째 프로그램이 수행될 메모리 셀을 오픈 메모리 셀의 위치로 이동시켜, 메모리 셀을 압축시킬 수 있다.
이를 통해, 제1 블록에 불필요하게 프로그램되는 워드 라인을 제거할 수 있다.
만약, 제1 블록 역시 오픈 메모리 셀이 존재한다면, 제1 블록과 제2 블록 중 이동시키는 메모리 셀의 개수가 작은 블록의 메모리 셀을 이동시킬 수 있다. 즉, 제1 블록과 제2 블록 중 오픈 메모리 셀이 적게 존재하는 블록으로 2번째 프로그램이 수행될 메모리 셀이 이동할 수 있다.
만약, 제3 블록에 오픈 메모리 셀이 존재한다면, 제1 블록에서 2번째 프로그램이 진행될 메모리 셀이 제3 블록의 오픈 메모리 셀로 이동되어 메모리 셀이 압축될 수도 있다.
이에 대한 동작을, 도 15의 흐름도를 통해 살펴본다.
도 15는 몇몇 실시예들에 따른 도 14의 다른 쓰기 증폭 관리기의 동작을 설명하기 위한 흐름도이다.
도 1, 도 14, 및 도 15를 참조하면, 제1 블록에는 제1 데이터를 기록하고, 제2 블록에는 제2 데이터를 기록하기 위해, 제1 블록과 제2 블록 각각에 대해, 1번째 프로그램이 수행된다(S400).
이후, 제1 블록에는 제1 데이터를 기록하고, 제2 블록에는 제2 데이터를 기록하기 위해, 제1 블록과 제2 블록 각각에 대해, 2번째 프로그램을 수행하기 전에, 제1 블록 또는 제2 블록에 오픈 메모리 셀이 존재하는지, 오픈 메모리 셀 검출기(2154)를 통해 확인한다(S410).
만약, 제1 블록 또는 제2 블록에 오픈 메모리 셀이 존재하지 않는다고 판단되면(N), 제1 블록 및 제2 블록 각각에 대해, 2번째 프로그램을 수행한다(S330).
그렇지 않고, 제1 블록 또는 제2 블록에 오픈 메모리 셀이 존재한다고 판단되면(Y), 오픈 메모리 셀이 존재하는 위치에, 2번째 프로그램이 수행되어야 할 메모리 셀을 이동시켜, 메모리 셀 압축을 메모리 셀 압축기(2156)를 통해 수행한다(S320).
이후, 제1 블록 및 제2 블록에 2번째 프로그램을 수행한다(S330).
도 14 및 도 15를 통해 상술된 설명을, 블록을 간략화 하여 도시한 도면들인 도 16 및 도 17을 통해 설명한다.
도 16 내지 도 17은 도 14 내지 도 15를 통해 설명된 몇몇 실시예들에 따른 쓰기 증폭 관리기의 동작을 설명하기 위한 도면이다.
도 1, 도 14, 도 16, 및 도 17을 참조하면, 제1 블록(BLK1)과 제2 블록(BLK2)에 대해, 오픈 메모리 셀이 존재하는지 확인할 수 있다. 이는 설명을 위한 것으로, 비휘발성 메모리 장치(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))이 위치할 수 있다.
예를 들어, 제1 블록(BLK1)의 메모리 셀들(MC1a 내지 MC6a)들과 제2 블록(BLK2)의 메모리 셀들(MC1b 내지 MC6b)은 프로그램이 완료된 메모리 셀들이라 가정한다.
또한, 제1 블록(BLK1)에 제1 데이터를 기록하기 위해, 메모리 셀들(MC7a 내지 MC11a)에 대해, 1번째 프로그램이 수행되었다고 가정한다. 이때, 제2 블록(BLK2)에는 제2 데이터를 기록하기 위해, 메모리 셀들(MC7b 내지 MC10b)이 1번째 프로그램 수행되었다고 가정한다.
즉, 제1 블록(BLK1)에서 1번째 프로그램된 메모리 셀을 포함하는 워드 라인들(WL5, 및 WL6) 중, 프로그램이 되지 않은 메모리 셀, 즉, 오픈 메모리 셀을 포함한 워드 라인은 제5 워드 라인(WL5)의 메모리 셀(MC12a)가 된다.
오픈 메모리 셀 검출기(2154)는 제1 블록(BLK1)의 메모리 셀(MC12a)를 오픈 메모리 셀로 검출하고, 메모리 셀 압축기(2156)를 통해, 제2 블록(BLK2)에 제2 데이터를 기입하기 위해, 2번째 프로그램이 수행되어야하는 워드 라인들(WL5, 및 WL6) 중, 프로그램이 되지 않은 메모리 셀을 포함하는 워드 라인(WL5)의 메모리 셀(MC10b)을 도 17과 같이, 이동시켜 메모리 셀을 압축시킨다.
도 16에서는 오픈 메모리 셀을 메모리 셀(MC12a)인 것으로 정의하였으나, 이에 제한되지 않고, 제2 블록(BLK2)의 메모리 셀들(MC11b과 MC12b)이 오픈 메모리 셀인 것으로 정의하고, 제1 블록(BLK1)의 메모리 셀들(MC10a와 MC11a)를 제2 블록(BLK2)의 메모리 셀들(MC11b과 MC12b)의 위치로 이동시켜 압축을 수행할 수도 있다.
이를 통해, 도 17과 같이, 제2 블록(BLK2)에서 메모리 셀(MC10b) 위치의 1번째 프로그램된 메모리 셀을 제1 블록(BLK1)의 오픈 메모리 셀 위치(MC12a)로 옮겨 압축을 수행함으로써, 2번째 프로그램 수행 시, 제2 블록(BLK2)에서 불필요하게 프로그램이 수행되는 워드 라인을 줄일 수 있다.
이를 통해, 몇몇 실시예들에 따른 스토리지 장치(200)의 쓰기 증폭 특성을 향상시키고, 플러시 속도를 향상시킬 수 있다.
도 18은 몇몇 실시예들에 따른 스토리지 장치가 적용된 스토리지 시스템을 설명하기 위한 예시적인 블록도이다.
도 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) 등이 될 수도 있다.
도 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) 중 하나 이상을 포함할 수 있다.
메인 프로세서(1100)는 스토리지 시스템(1000)의 전반적인 동작, 보다 구체적으로는 스토리지 시스템(1000)을 이루는 다른 구성 요소들의 동작을 제어할 수 있다. 이와 같은 메인 프로세서(1100)는 범용 프로세서, 전용 프로세서 또는 애플리케이션 프로세서(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)으로 구현될 수도 있다.
메모리(1200a, 1200b)는 스토리지 시스템(1000)의 주기억 장치로 사용될 수 있으며, SRAM 및/또는 DRAM 등의 휘발성 메모리를 포함할 수 있으나, 플래시 메모리, PRAM, MRAM 및/또는 RRAM 등의 비휘발성 메모리를 포함할 수도 있다. 메모리(1200a, 1200b)는 메인 프로세서(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 등의 다른 종류의 비휘발성 메모리를 포함할 수도 있다.
스토리지 장치(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)와 같은 표준 규약이 적용되는 장치일 수 있으나, 반드시 이에 한정되는 건 아니다.
스토리지 장치(1300a, 및 1300b)들 중 적어도 하나는 도 1 내지 도 17을 통해 상술된 스토리지 장치(200)일 수 있다.
촬영 장치(1410)는 정지 영상 또는 동영상을 촬영할 수 있으며, 카메라(camera), 캠코더(camcorder) 및/또는 웹캠(webcam) 등일 수 있다.
사용자 입력 장치(1420)는 스토리지 시스템(1000)의 사용자로부터 입력된 다양한 유형의 데이터를 수신할 수 있으며, 터치 패드(touch pad), 키패드(keyboard), 키보드(keyboard), 마우스(mouse) 및/또는 마이크(microphone) 등일 수 있다.
센서(1430)는 스토리지 시스템(1000)의 외부로부터 획득될 수 있는 다양한 유형의 물리량을 감지하고, 감지된 물리량을 전기 신호로 변환할 수 있다. 이와 같은 센서(1430)는 온도 센서, 압력 센서, 조도 센서, 위치 센서, 가속도 센서, 바이오 센서(biosensor) 및/또는 자이로스코프(gyroscope) 센서 등일 수 있다.
통신 장치(1440)는 다양한 통신 규약에 따라 스토리지 시스템(1000) 외부의 다른 장치들과의 사이에서 신호의 송신 및 수신을 수행할 수 있다. 이와 같은 통신 장치(1440)는 안테나, 트랜시버(transceiver) 및/또는 모뎀(MODEM) 등을 포함하여 구현될 수 있다.
디스플레이(1450) 및 스피커(1460)는 스토리지 시스템(1000)의 사용자에게 각각 시각적 정보와 청각적 정보를 출력하는 출력 장치로 기능할 수 있다.
전력 공급 장치(1470)는 스토리지 시스템(1000)에 내장된 배터리(도시 안함) 및/또는 외부 전원으로부터 공급되는 전력을 적절히 변환하여 스토리지 시스템(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) 카드 인터페이스 등과 같은 다양한 인터페이스 방식으로 구현될 수 있다.
도 19는 몇몇 실시예들에 따른 스토리지 장치가 적용된 데이터 센터를 설명하기 위한 예시적인 블록도이다.
도 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)의 개수는 서로 다를 수 있다.
애플리케이션 서버(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)의 개수는 실시예에 따라 다양하게 선택될 수 있다.
애플리케이션 서버들(3100_1 내지 3100_n) 및 스토리지 서버들(3200_1 내지 3200_m)은 네트워크(3300)를 통해 서로 통신할 수 있다. 네트워크(3300)는 FC(Fibre Channel) 또는 이더넷(Ethernet) 등을 이용하여 구현될 수 있다. 이 때, FC는 상대적으로 고속의 데이터 전송에 사용되는 매체이며, 고성능/고가용성을 제공하는 광 스위치를 사용할 수 있다. 네트워크(3300)의 액세스 방식에 따라 스토리지 서버들(3200_1 내지 3200_m)은 파일 스토리지, 블록 스토리지, 또는 오브젝트 스토리지로서 제공될 수 있다.
일 실시예에서, 네트워크(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) 등의 프로토콜에 따라 구현될 수 있다.
이하에서는, 애플리케이션 서버(3100_1) 및 스토리지 서버(3200_1)를 중심으로 설명하기로 한다. 애플리케이션 서버(3100_1)에 대한 설명은 다른 애플리케이션 서버(3100_n)에도 적용될 수 있고, 스토리지 서버(3200_1)에 대한 설명은 다른 스토리지 서버(3200_m)에도 적용될 수 있다.
애플리케이션 서버(3100_1)는 사용자 또는 클라이언트가 저장 요청한 데이터를 네트워크(3300)를 통해 스토리지 서버들(3200_1 내지 3200_m) 중 하나에 저장할 수 있다. 또한, 애플리케이션 서버(3100_1)는 사용자 또는 클라이언트가 독출 요청한 데이터를 스토리지 서버들(3200_1 내지 3200_m) 중 하나로부터 네트워크(3300)를 통해 획득할 수 있다. 예를 들어, 애플리케이션 서버(3100_1)는 웹 서버 또는 DBMS(Database Management System) 등으로 구현될 수 있다.
애플리케이션 서버(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)를 통해 이동하는 데이터는 보안 또는 프라이버시를 위해 암호화된 데이터일 수 있다.
스토리지 서버(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) 카드 인터페이스 등과 같은 다양한 인터페이스 방식으로 구현될 수 있다.
스토리지 서버(3200_1)는 스위치(3230_1) 및 NIC(3240_1)을 더 포함할 수 있다. 스위치(3230_1)는 프로세서(3210_1)의 제어에 따라 프로세서(3210_1)와 스토리지 장치(3250_1)를 선택적으로 연결시키거나, NIC(3240_1)와 스토리지 장치(3250_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) 중 적어도 하나와 통합될 수도 있다.
스토리지 서버들(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) 정보를 포함할 수 있다. 데이터는 보안 또는 프라이버시를 위해 암호화된 데이터일 수 있다.
스토리지 장치(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) 신호의 상승 엣지 또는 하강 엣지에 따라 페이지 버퍼에 래치될 수 있다.
컨트롤러(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)를 포함할 수 있다.
컨트롤러(3251_1)는 도 1 내지 도 17을 통해 상술된 스토리지 컨트롤러(210)일 수 있으며, 스토리지 장치(3250_1)는 도 1 내지 도 17을 통해 상술된 스토리지 장치(200)일 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명은 상기 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 제조될 수 있으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
10: 스토리지 시스템
100: 호스트
110: 호스트 컨트롤러
120: 호스트 메모리
200: 스토리지 장치
210: 스토리지 컨트롤러
211: 호스트 인터페이스
212: 메모리 인터페이스
213: 중앙 처리 장치
214: 플래시 변환 계층
215: 쓰기 증폭 관리기
216: 버퍼 메모리
217: ECC 엔진
218: 암복호화 엔진
220: 비휘발성 메모리 장치
2150: 플래시 변환 계층 검사기
2152: 버퍼 메모리 검사기
2154: 오픈 메모리 셀 검출기
2156: 메모리 셀 압축기
Claims (20)
- 제1 메모리 셀에 N(N은 1보다 큰 자연수)회 프로그램을 수행하여 제1 데이터를 기록하는 스토리지 컨트롤러로서,
상기 제1 데이터에 대한 제1 논리 어드레스와, 상기 제1 데이터에 대한 제1 물리 어드레스 사이의 매핑 정보를 저장하는 매핑 테이블을 이용하여 어드레스 매핑을 수행하는 플래시 변환 계층;
상기 제1 메모리 셀에 N번째 프로그램이 수행되기 전에, 상기 제1 데이터가 유효하지 않은 데이터(Invalid data)인지 확인하는 쓰기 증폭(WAF: Write Amplification) 관리기; 및
상기 제1 데이터가 유효하지 않은 데이터인 경우, 상기 제1 메모리 셀에 대해 N번째 프로그램을 수행하지 않는 중앙 처리 장치를 포함하는 스토리지 컨트롤러. - 제 1항에 있어서,
상기 제1 데이터를 저장하는 버퍼 메모리를 더 포함하되,
상기 쓰기 증폭 관리기는,
상기 버퍼 메모리에 저장된 상기 제1 데이터가 유효하지 않은 데이터인지 확인하는 버퍼 메모리 검사기를 포함하는 스토리지 컨트롤러. - 제 1항에 있어서,
상기 쓰기 증폭 관리기는,
상기 플래시 변환 계층과 통신하여, 상기 매핑 테이블 내의 상기 제1 데이터가 유효하지 않은 데이터인지 확인하는 플래시 변환 계층 검사기를 포함하는 스토리지 컨트롤러. - 제 1항에 있어서,
상기 제1 데이터가 유효하지 않은 데이터인 경우는 상기 제1 데이터가 트림된 데이터인 스토리지 컨트롤러. - 제 1항에 있어서,
상기 제1 데이터가 유효하지 않은 데이터인 경우는 상기 제1 데이터가 상기 매핑 테이블에 매핑되어 있지 않은 경우인 스토리지 컨트롤러. - 제 1항에 있어서,
상기 제1 메모리 셀과 동일한 워드 라인에 연결된 제2 메모리 셀에 N회 프로그램을 수행하여 제2 데이터를 기록하되,
상기 제1 데이터가 유효하지 않은 데이터인 경우,
상기 제1 메모리 셀은 N번째 프로그램을 수행하지 않고,
상기 제2 메모리 셀은 N회 프로그램을 수행하여 상기 제2 데이터를 기록하는 스토리지 컨트롤러. - 제 6항에 있어서,
상기 제1 메모리 셀 및 상기 제2 메모리 셀과 상기 동일한 워드 라인에 연결된 제3 메모리 셀에 N회 프로그램을 수행하는 스토리지 컨트롤러. - 제1 메모리 셀에 N(N은 1보다 큰 자연수)회 프로그램을 수행하여 제1 데이터를 기록하는 스토리지 장치로서,
상기 제1 메모리 셀을 포함하는 비휘발성 메모리 장치; 및
상기 제1 메모리 셀에 상기 제1 데이터를 기록하는 스토리지 컨트롤러를 포함하되,
상기 스토리지 컨트롤러는,
상기 제1 데이터에 대한 제1 논리 어드레스와, 상기 제1 데이터에 대한 제1 물리 어드레스 사이의 매핑 정보를 저장하는 매핑 테이블을 이용하여 어드레스 매핑을 수행하는 플래시 변환 계층;
상기 제1 메모리 셀에 N번째 프로그램이 수행되기 전에, 상기 제1 데이터가 유효하지 않은 데이터(Invalid data)인지 확인하는 쓰기 증폭(WAF: Write Amplification) 관리기; 및
상기 제1 데이터가 유효하지 않은 데이터인 경우, 상기 제1 메모리 셀에 대해 N번째 프로그램을 수행하지 않는 중앙 처리 장치를 포함하는 스토리지 장치. - 제 8항에 있어서,
상기 스토리지 컨트롤러는,
상기 제1 데이터를 저장하는 버퍼 메모리를 더 포함하되,
상기 쓰기 증폭 관리기는,
상기 버퍼 메모리에 저장된 상기 제1 데이터가 유효하지 않은 데이터인지 확인하는 버퍼 메모리 검사기를 포함하는 스토리지 장치. - 제 8항에 있어서,
상기 쓰기 증폭 관리기는,
상기 플래시 변환 계층과 통신하여, 상기 매핑 테이블 내의 상기 제1 데이터가 유효하지 않은 데이터인지 확인하는 플래시 변환 계층 검사기를 포함하는 스토리지 장치. - 제 8항에 있어서,
상기 제1 데이터가 유효하지 않은 데이터인 경우는 상기 제1 데이터가 트림된 데이터인 스토리지 장치. - 제 8항에 있어서,
상기 제1 데이터가 유효하지 않은 데이터인 경우는 상기 제1 데이터가 상기 매핑 테이블에 매핑되어 있지 않은 경우인 스토리지 장치. - 제 8항에 있어서,
상기 제1 메모리 셀과 동일한 워드 라인에 연결된 제2 메모리 셀에 N회 프로그램을 수행하여 제2 데이터를 기록하되,
상기 제1 데이터가 유효하지 않은 데이터인 경우,
상기 제1 메모리 셀은 N번째 프로그램을 수행하지 않고,
상기 제2 메모리 셀은 N회 프로그램을 수행하여 상기 제2 데이터를 기록하는 스토리지 장치. - 제 13항에 있어서,
상기 제1 메모리 셀 및 상기 제2 메모리 셀과 상기 동일한 워드 라인에 연결된 제3 메모리 셀에 N회 프로그램을 수행하는 스토리지 장치. - 제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 블록에 수행하는 중앙 처리 장치를 포함하는 스토리지 장치. - 제 15항에 있어서,
상기 압축은,
상기 오픈 메모리 셀이 적게 존재하는 블록으로 상기 메모리 셀을 이동시켜 수행되는 스토리지 장치. - 제 16항에 있어서,
상기 이동이 수행되는 상기 N-1번 프로그램된 메모리 셀은,
상기 제1 블록과 상기 제2 블록의 동일한 순서의 워드 라인에 존재하는 메모리 셀인 스토리지 장치. - 제 15항에 있어서,
상기 오픈 메모리 셀은,
상기 제1 블록 또는 상기 제2 블록에, N-1번째 프로그램된 마지막 워드 라인의 비어있는 메모리 셀인 스토리지 장치. - 제 18항에 있어서,
상기 오픈 메모리 셀이 존재하지 않는 경우, 상기 압축이 수행되지 않는 스토리지 장치. - 제 15항에 있어서,
상기 비휘발성 메모리 장치는 제3 블록을 더 포함하며,
상기 스토리지 컨트롤러는 상기 제3 블록에 대해 N회 프로그램을 수행하여 제3 데이터를 기록하되,
상기 오픈 메모리 셀 검출기는, 상기 스토리지 컨트롤러가 상기 제3 블록에 N회 프로그램을 수행하기 전에, 상기 제1 블록 및 상기 제2 블록에 존재하는 상기 오픈 메모리 셀을 검출하는 스토리지 장치.
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 (zh) | 2021-11-17 | 2022-11-15 | 存储控制器和包括该存储控制器的存储设备 |
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 |
---|---|---|---|
KR1020210158688 | 2021-11-17 | ||
KR20210158688 | 2021-11-17 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20230072365A true KR20230072365A (ko) | 2023-05-24 |
KR102545465B1 KR102545465B1 (ko) | 2023-06-21 |
Family
ID=86540660
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020220007670A KR102545465B1 (ko) | 2021-11-17 | 2022-01-19 | 스토리지 컨트롤러 및 이를 포함하는 스토리지 장치 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102545465B1 (ko) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005302290A (ja) * | 2005-05-25 | 2005-10-27 | Fujitsu Ltd | 半導体記憶装置 |
KR20080066959A (ko) * | 2005-10-18 | 2008-07-17 | 쌘디스크 코포레이션 | 수정된 데이터 저장 및 핸들링 방법들 |
KR100903694B1 (ko) * | 2007-03-30 | 2009-06-18 | 스펜션 엘엘씨 | 반도체 장치 및 데이터 써넣기 방법 |
JP2014506688A (ja) * | 2011-06-07 | 2014-03-17 | 株式会社日立製作所 | フラッシュメモリを含むストレージシステム、及び記憶制御方法 |
KR20150129941A (ko) * | 2014-05-12 | 2015-11-23 | 삼성전자주식회사 | 메모리 컨트롤러의 동작 방법 및 불휘발성 메모리 장치 및 메모리 컨트롤러를 포함하는 불휘발성 메모리 시스템 |
KR20160084370A (ko) * | 2014-12-05 | 2016-07-13 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 컨트롤러, 플래시 메모리 장치, 데이터 블록 안정성을 확인하는 방법, 그리고 플래시 메모리 장치에 데이터를 저장하는 방법 |
KR20160139864A (ko) * | 2015-05-29 | 2016-12-07 | 주식회사 이에프텍 | 비휘발성 메모리 시스템 |
KR20170097543A (ko) * | 2016-02-18 | 2017-08-28 | 삼성전자주식회사 | 스트림 감지기를 포함하는 메모리 장치 및 그것의 동작 방법 |
KR20200018999A (ko) * | 2018-08-13 | 2020-02-21 | 에스케이하이닉스 주식회사 | 블록의 상태에 따라 사용 여부를 결정하는 메모리 시스템 및 메모리 시스템의 동작 방법 |
KR20210038096A (ko) * | 2019-09-30 | 2021-04-07 | 에스케이하이닉스 주식회사 | 메모리 시스템, 데이터 시스템 및 그 동작방법 |
-
2022
- 2022-01-19 KR KR1020220007670A patent/KR102545465B1/ko active IP Right Grant
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005302290A (ja) * | 2005-05-25 | 2005-10-27 | Fujitsu Ltd | 半導体記憶装置 |
KR20080066959A (ko) * | 2005-10-18 | 2008-07-17 | 쌘디스크 코포레이션 | 수정된 데이터 저장 및 핸들링 방법들 |
KR100903694B1 (ko) * | 2007-03-30 | 2009-06-18 | 스펜션 엘엘씨 | 반도체 장치 및 데이터 써넣기 방법 |
JP2014506688A (ja) * | 2011-06-07 | 2014-03-17 | 株式会社日立製作所 | フラッシュメモリを含むストレージシステム、及び記憶制御方法 |
KR20150129941A (ko) * | 2014-05-12 | 2015-11-23 | 삼성전자주식회사 | 메모리 컨트롤러의 동작 방법 및 불휘발성 메모리 장치 및 메모리 컨트롤러를 포함하는 불휘발성 메모리 시스템 |
KR20160084370A (ko) * | 2014-12-05 | 2016-07-13 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 컨트롤러, 플래시 메모리 장치, 데이터 블록 안정성을 확인하는 방법, 그리고 플래시 메모리 장치에 데이터를 저장하는 방법 |
KR20160139864A (ko) * | 2015-05-29 | 2016-12-07 | 주식회사 이에프텍 | 비휘발성 메모리 시스템 |
KR20170097543A (ko) * | 2016-02-18 | 2017-08-28 | 삼성전자주식회사 | 스트림 감지기를 포함하는 메모리 장치 및 그것의 동작 방법 |
KR20200018999A (ko) * | 2018-08-13 | 2020-02-21 | 에스케이하이닉스 주식회사 | 블록의 상태에 따라 사용 여부를 결정하는 메모리 시스템 및 메모리 시스템의 동작 방법 |
KR20210038096A (ko) * | 2019-09-30 | 2021-04-07 | 에스케이하이닉스 주식회사 | 메모리 시스템, 데이터 시스템 및 그 동작방법 |
Also Published As
Publication number | Publication date |
---|---|
KR102545465B1 (ko) | 2023-06-21 |
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 | |
US20220164144A1 (en) | Method of writing data in nonvolatile memory device and nonvolatile memory device performing the same | |
US20230126685A1 (en) | Storage device and electronic system | |
US12073884B2 (en) | Storage device and operating method thereof | |
KR102545465B1 (ko) | 스토리지 컨트롤러 및 이를 포함하는 스토리지 장치 | |
KR102692394B1 (ko) | 비휘발성 메모리 장치, 메모리 컨트롤러, 및 이를 포함하는 스토리지 장치의 리드 방법 | |
KR20230068935A (ko) | 스토리지 장치 및 그 구동 방법 | |
EP4184332B1 (en) | Storage controller and storage device including the same | |
KR20230030344A (ko) | 웨이퍼-투-웨이퍼 본딩을 이용하는 3차원 스토리지 장치 | |
KR102697634B1 (ko) | 스토리지 장치 및 전자 시스템 | |
US11899941B2 (en) | Storage device and operating method thereof | |
US12056048B2 (en) | System and method for management of electronic memory | |
US12045472B2 (en) | Storage device supporting multi-tenant operation and methods of operating same | |
US20240028507A1 (en) | Storage system and method of operating the storage system | |
EP4290355A1 (en) | Method of writing data in storage device using write throttling and storage device performing the same | |
US20230092380A1 (en) | Operation method of memory controller configured to control memory device | |
US20230038363A1 (en) | Three-dimensional storage device using wafer-to-wafer bonding | |
KR20230068939A (ko) | 스토리지 장치 및 그 구동 방법 | |
EP4152333A2 (en) | Operation method of memory controller configured to control memory device | |
EP4432286A1 (en) | Storage device, electronic device, and method for controlling memory | |
KR20230067457A (ko) | 스토리지 컨트롤러, 스토리지 시스템 및 그 동작방법 | |
CN116107494A (zh) | 存储装置、存储系统及其存储控制器的操作方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right |