KR20220124318A - 쓰기 동작을 리디렉션하는 스토리지 컨트롤러 및 이의 동작 방법 - Google Patents

쓰기 동작을 리디렉션하는 스토리지 컨트롤러 및 이의 동작 방법 Download PDF

Info

Publication number
KR20220124318A
KR20220124318A KR1020210027516A KR20210027516A KR20220124318A KR 20220124318 A KR20220124318 A KR 20220124318A KR 1020210027516 A KR1020210027516 A KR 1020210027516A KR 20210027516 A KR20210027516 A KR 20210027516A KR 20220124318 A KR20220124318 A KR 20220124318A
Authority
KR
South Korea
Prior art keywords
flash memory
memory area
memory
state information
information
Prior art date
Application number
KR1020210027516A
Other languages
English (en)
Inventor
김민지
정상원
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020210027516A priority Critical patent/KR20220124318A/ko
Priority to EP21199809.1A priority patent/EP4053704B1/en
Priority to US17/526,243 priority patent/US11861192B2/en
Priority to CN202111404294.0A priority patent/CN114995742A/zh
Publication of KR20220124318A publication Critical patent/KR20220124318A/ko
Priority to US18/521,624 priority patent/US20240094930A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0634Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • G06F3/0649Lifecycle management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0617Improving the reliability of storage systems in relation to availability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7202Allocation control and policies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7207Details relating to flash memory management management of metadata or control data

Abstract

본 개시의 일 실시 예에 따른 스토리지 컨트롤러는 호스트 및 복수의 플래시 메모리 영역들과 통신하고, 스토리지 컨트롤러의 동작 방법은, 호스트로부터 복수의 플래시 메모리 영역들 중 제1 플래시 메모리 영역에 대한 쓰기 요청을 수신하는 단계, 상태 정보 세트에 기초하여 제1 플래시 메모리 영역이 사용 불가능하다고 결정하는 단계, 복수의 플래시 메모리 영역들 중 제1 플래시 메모리 영역 대신에 제2 플래시 메모리 영역이 선택되었음을 가리키는 리디렉션 정보를 생성하는 단계, 리디렉션 정보에 기초하여 제2 플래시 메모리 영역에 쓰기 동작을 수행하고, 쓰기 동작에 기초하여 상태 정보 세트에 포함된 제2 플래시 메모리 영역의 상태 정보를 업데이트하는 단계하는 단계, 쓰기 요청의 쓰기 데이터가 제2 플래시 메모리 영역에서 처리되었음을 가리키는 리디렉션 결과 정보를 호스트로 출력하는 단계, 및 호스트로부터 쓰기 데이터에 대응하고 제2 플래시 메모리 영역의 정보를 포함하는 읽기 요청을 수신하는 단계를 포함한다.

Description

쓰기 동작을 리디렉션하는 스토리지 컨트롤러 및 이의 동작 방법{STORAGE CONTROLLER REDIRECTING A WRITE OPERATION AND OPERATING METHOD THEREOF}
본 개시는 스토리지 컨트롤러 및 이의 동작 방법에 관한 것으로, 좀 더 상세하게는 쓰기 동작을 리디렉션하는 스토리지 컨트롤러 및 이의 동작 방법에 관한 것이다.
메모리 장치는 쓰기 요청에 따라 데이터를 저장하고, 읽기 요청에 따라 저장된 데이터를 출력한다. 예를 들어, 메모리 장치는 DRAM(Dynamic Random Access Memory), SRAM(Static RAM), 등과 같이 전원 공급이 차단되면 저장하고 있던 데이터가 소멸되는 휘발성 메모리 장치, 및 플래시 메모리 장치, PRAM(Phase-change RAM), MRAM(Magnetic RAM), RRAM(Resistive RAM), 등과 같이 전원 공급이 차단되어도 저장하고 있던 데이터를 유지하는 비-휘발성 메모리 장치로 구분된다.
플래시 메모리 장치는 대용량 저장 매체로서 널리 사용된다. 예를 들어, 플래시 메모리 장치는 클라우드 컴퓨팅을 위한 서버용 저장 매체로 사용될 수 있다. 여러 사용자들에게 동일한 서비스를 제공하는 멀티-테넌시(multi-tenancy) 환경에서, 사용자들 간 간섭을 줄이고 보안을 강화하기 위해, 플래시 메모리 장치는 물리적으로 분리된 메모리 영역들에서 사용자 별 데이터를 독립적으로 관리할 수 있다. 다만, 사용자의 성향 및 데이터의 크기 등에 따라 특정 메모리 영역에 과도한 워크로드가 집중될 수 있다. 이에 따라, 데이터 처리가 실패하거나, 특정 메모리 영역이 마모되거나, 또는 데이터 처리가 지연될 수 있다.
본 개시의 일 실시 예에 따르면 쓰기 동작을 리디렉션하는 스토리지 컨트롤러 및 이의 동작 방법이 제공된다.
본 개시의 일 실시 예에 따르면, 스토리지 컨트롤러는 호스트 및 복수의 플래시 메모리 영역들과 통신하고, 상기 스토리지 컨트롤러의 동작 방법은, 상기 호스트로부터 상기 복수의 플래시 메모리 영역들 중 제1 플래시 메모리 영역에 대한 쓰기 요청을 수신하는 단계, 상태 정보 세트에 기초하여 상기 제1 플래시 메모리 영역이 사용 불가능하다고 결정하는 단계, 상기 복수의 플래시 메모리 영역들 중 상기 제1 플래시 메모리 영역 대신에 제2 플래시 메모리 영역이 선택되었음을 가리키는 리디렉션(redirection) 정보를 생성하는 단계, 상기 리디렉션 정보에 기초하여 상기 제2 플래시 메모리 영역에 쓰기 동작을 수행하고, 상기 쓰기 동작에 기초하여 상기 상태 정보 세트에 포함된 상기 제2 플래시 메모리 영역의 상태 정보를 업데이트하는 단계하는 단계, 상기 쓰기 요청의 쓰기 데이터가 상기 제2 플래시 메모리 영역에서 처리되었음을 가리키는 리디렉션 결과 정보를 상기 호스트로 출력하는 단계, 및 상기 호스트로부터 상기 쓰기 데이터에 대응하고 상기 제2 플래시 메모리 영역의 정보를 포함하는 읽기 요청을 수신하는 단계를 포함한다.
본 개시의 일 실시 예에 따르면, 스토리지 컨트롤러는 호스트 및 복수의 플래시 메모리 영역들과 통신하고, 상기 스토리지 컨트롤러의 동작 방법은, 상기 복수의 플래시 메모리 영역들을 모니터링하는 단계, 상기 모니터링에 기초하여 상태 정보 세트를 업데이트하는 단계로서, 상기 상태 정보 세트는 상기 복수의 플래시 메모리 영역들에 각각 대응하는 복수의 상태 정보를 포함하는 것, 상기 업데이트된 상태 정보 세트에 기초하여 상기 복수의 플래시 메모리 영역들이 사용 가능한지 여부를 결정하는 단계, 상기 복수의 플래시 메모리 영역들 중 제1 플래시 메모리 영역이 사용 불가능함을 가리키는 모니터링 정보를 생성하는 단계, 및 상기 모니터링 정보를 상기 호스트로 출력하는 단계를 포함한다.
본 개시의 일 실시 예에 따르면, 스토리지 컨트롤러는, 제1 및 제2 플래시 메모리 영역들을 포함하는 복수의 플래시 메모리 영역들에 대응하는 상태 정보 세트를 생성하고, 상기 상태 정보 세트에 기초하여 상기 제1 플래시 메모리 영역이 사용 가능 메모리 조건들을 만족하지 않는다고 결정하고, 그리고 상기 상태 정보 세트에 기초하여 상기 제2 플래시 메모리 영역이 상기 사용 가능 메모리 조건들을 만족한다고 결정하도록 구성된 상태 검사기, 및 상기 제1 플래시 메모리 영역이 상기 사용 가능 메모리 조건들을 만족하지 않음을 가리키는 제1 정보 및 상기 제2 플래시 메모리 영역이 상기 사용 가능 메모리 조건들을 만족함을 가리키는 제2 정보를 호스트로 출력하도록 구성된 인터페이스 회로를 포함하고, 상기 사용 가능 메모리 조건들은, 대응하는 플래시 메모리 영역의 평균 소거 카운트에서 상기 복수의 플래시 메모리 영역들에 대한 복수의 평균 소거 카운트들의 최소 값을 감산한 값이 제1 임계 값보다 작은 것, 상기 대응하는 플래시 메모리 영역의 유효 페이지 카운트 비율이 상기 복수의 플래시 메모리 영역들에 대한 복수의 유효 페이지 카운트 비율들 중 최대 값보다 작은 것, 상기 대응하는 플래시 메모리 영역의 배드 블록의 개수가 상기 복수의 플래시 메모리 영역들에 대한 배드 블록들의 개수들 중 최대 값보다 작은 것, 상기 대응하는 플래시 메모리 영역의 쓰기 증폭 인자가 제2 임계 값보다 작은 것, 그리고 상기 대응하는 플래시 메모리 영역의 메모리 사용 비율이 제3 임계 값보다 작은 것 중 적어도 하나를 포함한다.
본 개시의 일 실시 예에 따르면, 쓰기 동작을 리디렉션하는 스토리지 컨트롤러 및 이의 동작 방법이 제공된다.
또한, 본 개시의 일부 실시 예들에 따르면, 사용 불가능한 메모리 영역에 대한 쓰기 요청을 리디렉션 하거나, 또는 주기적으로 메모리 영역의 상태를 모니터링하고 모니터링 정보를 호스트에 제공함으로써, 데이터 처리의 실패가 억제되고, 메모리 영역의 마모가 억제되고, 데이터 처리 속도가 향상된 스토리지 컨트롤러 및 이의 동작 방법이 제공된다.
도 1은 본 개시의 실시 예에 따른 스토리지 시스템의 블록도이다.
도 2는 본 개시의 일부 실시 예들에 따라 도 1의 스토리지 컨트롤러를 구체화한 블록도이다.
도 3a는 본 개시의 일부 실시 예들에 따라 도 1의 메모리 칩을 구체화한 블록도이다.
도 3b는 도 3a의 메모리 셀 어레이에 포함된 복수의 메모리 블록들 중 하나의 메모리 블록을 도시하는 도면이다.
도 4는 본 개시의 실시 예에 따른 멀티-테넌시 환경에서 동작하는 스토리지 장치를 도시하는 블록도이다.
도 5a 및 도 5b는 본 개시의 일부 실시 예들에 따라 메모리 영역의 상태 정보를 설명하는 도면들이다.
도 6a, 도 6b, 및 도 6c는 본 개시의 일부 실시 예들에 따라 워크로드가 편중된 메모리 영역을 설명하는 도면들이다.
도 7은 본 개시의 일부 실시 예들에 따라 쓰기 요청을 리디렉션하는 방법을 설명하는 도면이다.
도 8은 본 개시의 일부 실시 예들에 따라 메모리 영역의 상태를 모니터링하는 방법을 설명하는 도면이다.
도 9는 본 개시의 일부 실시 예들에 따라 사용 가능 메모리 조건들을 구체화한 도면이다.
도 10은 본 개시의 일부 실시 예들에 따라 쓰기 요청을 리디렉션하는 방법을 설명하는 순서도이다.
도 11은 본 개시의 일부 실시 예들에 따라 메모리 영역의 상태를 모니터링하는 방법을 설명하는 순서도이다.
도 12는 본 개시에 따른 스토리지 장치가 적용된 SSD 시스템의 블록도이다.
이하에서, 본 개시의 기술 분야에서 통상의 지식을 가진 자가 본 개시의 실시 예들을 용이하게 실시할 수 있을 정도로, 본 개시의 실시 예들이 명확하고 상세하게 기재될 것이다.
상세한 설명에서 사용되는 부 또는 유닛(unit), 모듈(module), 계층(layer) 등의 용어를 참조하여 설명되는 구성 요소들 및 도면에 도시된 기능 블록들은 소프트웨어, 또는 하드웨어, 또는 그것들의 조합의 형태로 구현될 수 있다. 예를 들어, 소프트웨어는 기계 코드, 펌웨어, 임베디드 코드, 및 애플리케이션 소프트웨어일 수 있다. 예를 들어, 하드웨어는 전기 회로, 전자 회로, 프로세서, 컴퓨터, 집적 회로, 집적 회로 코어들, 압력 센서, 관성 센서, 멤즈(MEMS; microelectromechanical system), 수동 소자, 또는 그것들의 조합을 포함할 수 있다.
또한, 다르게 정의되지 않는 한, 본 명세서에서 사용되는 기술적 또는 과학적인 의미를 포함하는 모든 용어들은 본 개시의 기술 분야에서의 통상의 기술자에 의해 이해될 수 있는 의미를 갖는다. 일반적으로 사전에서 정의된 용어들은 관련된 기술 분야에서의 맥락적 의미와 동등한 의미를 갖도록 해석되며, 본문에서 명확하게 정의되지 않는 한, 이상적 또는 과도하게 형식적인 의미를 갖도록 해석되지 않는다.
도 1은 본 개시의 실시 예에 따른 스토리지 시스템의 블록도이다. 도 1을 참조하면, 스토리지 시스템(10)은 호스트(11) 및 스토리지 장치(100)를 포함할 수 있다. 일부 실시 예들에서, 스토리지 시스템(10)은 개인용 컴퓨터, 노트북, 랩탑, 서버, 워크스테이션, 태블릿 PC, 스마트폰, 디지털 카메라, 블랙박스 등과 같이 다양한 정보를 처리하도록 구성된 컴퓨팅 시스템일 수 있다.
호스트(11)는 스토리지 시스템(10)의 제반 동작을 제어할 수 있다. 예를 들어, 호스트(11)는 스토리지 장치(100)에 데이터를 저장하거나 또는 스토리지 장치(100)에 저장된 데이터를 읽을 수 있다. 스토리지 장치(100)는 호스트(11)의 제어에 따라 데이터를 저장하거나, 저장된 데이터를 호스트(11)로 전송할 수 있다. 스토리지 장치(100)는 스토리지 컨트롤러(110) 및 비-휘발성 메모리 장치(120)를 포함할 수 있다. 비-휘발성 메모리 장치(120)는 복수의 메모리 칩(MC)들을 포함할 수 있다. 복수의 메모리 칩(MC)들 각각은 데이터를 저장할 수 있다.
스토리지 컨트롤러(110)는 비-휘발성 메모리 장치(120)에 데이터를 저장하거나 또는 비-휘발성 메모리 장치(120)에 저장된 데이터를 읽을 수 있다. 비-휘발성 메모리 장치(120)는 스토리지 컨트롤러(110)의 제어에 따라 동작할 수 있다. 일부 실시 예들에서, 비-휘발성 메모리 장치(120)는 낸드 플래시 메모리일 수 있으나, 본 개시의 범위가 이에 제한되는 것은 아니며, 비-휘발성 메모리 장치(120)는 PRAM, MRAM, RRAM, FRAM 등과 같이 전원 공급이 차단되어도 저장하고 있던 데이터를 유지할 수 있는 다양한 저장 장치들 중 하나일 수 있다.
스토리지 컨트롤러(110)는 상태 검사기(111), 리디렉션(redirection) 장치(112), 및 모니터링 장치(113)를 포함할 수 있다. 상태 검사기(111)는 비-휘발성 메모리 장치(120)의 상태를 검사하고, 상태 정보 세트를 생성할 수 있다. 상태 정보 세트는 복수의 상태 정보(SI)를 포함할 수 있다. 상태 정보(SI)는 대응하는 플래시 메모리 영역(이하에서, 메모리 영역이라고 함)(예를 들어, 플래시 메모리 기반의 메모리 칩(MC) 또는 메모리 칩(MC)에 포함된 메모리 블록)의 상태를 나타내는 정보일 수 있다. 상태 정보(SI)에 대한 보다 상세한 설명은 도 5a 및 도 5b와 함께 후술될 것이다.
상태 검사기(111)는 복수의 상태 정보(SI)에 기초하여 복수의 메모리 영역들 각각이 사용 가능 메모리 조건들을 만족하는지 여부를 결정할 수 있다. 복수의 메모리 영역들은 각각 플레시 메모리 영역일 수 있다. 사용 가능 메모리 조건들은 대응하는 메모리 영역이 사용 가능한지 여부를 결정하는 기준들일 수 있다. 사용 가능 메모리 조건들에 대한 보다 상세한 설명은 도 9와 함께 후술될 것이다.
일부 실시 예들에서, 상태 검사기(111)는 복수의 상태 정보(SI)에 기초하여 복수의 메모리 영역들 각각이 사용 가능 메모리 조건들을 만족하는지 여부를 결정하고, 결정 결과를 호스트(11) 또는 리디렉션 장치(112)에 제공할 수 있다.
리디렉션 장치(112)는 쓰기 요청에 따른 쓰기 동작을 리디렉션하는 장치일 수 있다. 리디렉션은 쓰기 동작이 수행될 메모리 영역을 변경하는 것을 의미할 수 있다. 리디렉션 장치(112)는 상태 검사기(111)와 통신할 수 있다. 예를 들어, 상태 검사기(111)가 호스트(11)로부터 수신된 쓰기 요청에 대응하는 제1 메모리 영역이 사용 불가능하다고 결정하면, 리디렉션 장치(112)는 상태 검사기(111)의 제어에 따라 제1 메모리 영역 대신에 제2 메모리 영역에서 쓰기 동작을 수행할 수 있다. 리디렉션 장치(112)는 리디렉션 결과 정보를 호스트(11)로 출력할 수 있다. 리디렉션 장치(112)의 리디렉션에 의해, 비-휘발성 메모리 장치(120) 내의 메모리 영역들 간 워크로드의 불균형이 해소될 수 있다. 리디렉션 장치(112)에 대한 보다 상세한 설명은 도 7 및 도 10과 함께 후술될 것이다.
모니터링 장치(113)는 비-휘발성 메모리 장치(120)의 상태를 모니터링하는 장치일 수 있다. 모니터링 장치(113)는 상태 검사기(111)와 통신할 수 있다. 예를 들어, 모니터링 장치(113)는, 호스트(11)로부터 별도의 요청 없이, 기준 시간마다 주기적으로 비-휘발성 메모리 장치(120)의 메모리 영역들의 상태들을 모니터링하고, 상태 검사기(111)의 복수의 상태 정보(SI)를 업데이트할 수 있다. 기준 시간은 모니터링 장치(113)가 모니터링을 수행하는 주기를 나타낼 수 있다.
상태 검사기(111)는 업데이트된 복수의 상태 정보(SI)에 기초하여 모니터링 정보를 호스트(11)로 출력할 수 있다. 호스트(11)는 모니터링 정보에 기초하여 사용 불가능한 메모리 영역에 쓰기 요청을 하지 않을 수 있다. 이에 따라, 비-휘발성 메모리 장치(120) 내의 메모리 영역들 간 워크로드의 불균형이 해소될 수 있다. 모니터링 장치(113)에 대한 보다 상세한 설명은 도 8 및 도 11과 함께 후술될 것이다.
상술된 바와 같이, 본 개시에 따르면, 사용 불가능한 메모리 영역에 대한 쓰기 요청을 다른 메모리 영역으로 리디렉션 하는 스토리지 컨트롤러(110)가 제공될 수 있다. 또한, 본 개시에 따르면, 호스트로부터 별도의 요청이 없어도 주기적으로 비-휘발성 메모리 장치(120)의 상태를 모니터링하고, 모니터링 정보를 호스트로 제공하는 스토리지 컨트롤러(110)가 제공될 수 있다.
도 2는 본 개시의 일부 실시 예들에 따라 도 1의 스토리지 컨트롤러를 구체화한 블록도이다. 도 1 및 도 2를 참조하면, 스토리지 컨트롤러(110)는 호스트(11) 및 비-휘발성 메모리 장치(120)와 통신할 수 있다. 스토리지 컨트롤러(110)는 상태 관리 장치를 포함할 수 있다. 상태 관리 장치는 상태 검사기(111), 리디렉션 장치(112), 및 모니터링 장치(113)를 포함할 수 있다. 상태 검사기(111), 리디렉션 장치(112), 및 모니터링 장치(113)는 도 1에서 설명된 상태 검사기(111), 리디렉션 장치(112), 및 모니터링 장치(113)와 유사하므로, 이에 대한 상세한 설명은 생략된다.
스토리지 컨트롤러(110)는 프로세서(114), SRAM(Static Random Access Memory)(115), ROM(Read Only Memory)(116), ECC(Error Correcting Code) 엔진(117), 호스트 인터페이스 회로(118), 및 비-휘발성 메모리 인터페이스 회로(119)를 더 포함할 수 있다. 상태 검사기(111), 리디렉션 장치(112), 모니터링 장치(113), 프로세서(114), SRAM(115), ROM(116), ECC 엔진(117), 호스트 인터페이스 회로(118), 및 비-휘발성 메모리 인터페이스 회로(119)는 버스를 통해 서로 연결될 수 있다.
프로세서(114)는 스토리지 컨트롤러(110)의 제반 동작을 제어할 수 있다. SRAM(115)은 스토리지 컨트롤러(110)의 버퍼 메모리, 캐시 메모리, 또는 동작 메모리로 사용될 수 있다. ROM(116)은 스토리지 컨트롤러(110)가 동작하는데 필요한 다양한 정보를 펌웨어 형태로 저장할 수 있다. 일부 실시 예들에서, 상태 관리 장치는 소프트웨어 형태, 하드웨어 형태, 또는 그것들의 조합의 형태로 제공될 수 있다. 상태 관리 장치가 소프트웨어 형태로 제공되는 경우, 상태 관리 장치는 SRAM(115)에 저장될 수 있고, 프로세서(114)에 의해 구동될 수 있다.
ECC 엔진(117)은 비-휘발성 메모리 장치(120)로부터 읽어진 데이터의 에러를 검출하고 정정할 수 있다. 일부 실시 예들에서, 쓰기, 소거 등의 동작이 많이 수행될수록, 비-휘발성 메모리 장치(120)의 에러 수준은 높아질 수 있다. ECC 엔진(117)은 일정 수준의 에러 정정 능력을 가질 수 있다. 비-휘발성 메모리 장치(120)로부터 읽어진 데이터의 에러가 ECC 엔진(117)의 에러 정정 능력을 초과하는 경우, 비-휘발성 메모리 장치(120)로부터 읽어진 데이터의 에러는 정정되지 않을 수 있다. ECC 엔진(117)에 의해 에러가 정정되지 않는 상황을 최소화하기 위해, 상태 관리 장치는 비-휘발성 메모리 장치 내의 메모리 영역들 간 워크로드를 분산시킬 수 있다.
스토리지 컨트롤러(110)는 호스트 인터페이스 회로(118)를 통해 호스트(11)와 통신할 수 있다. 일부 실시 예들에서, 호스트 인터페이스 회로(118)는 SATA(Serial ATA), PCIe(Peripheral Component Interconnect Express), SAS(Serial Attached SCSI) 인터페이스, NVMe(Nonvolatile Memory express), UFS(Universal Flash Storage) 등과 같은 다양한 인터페이스들 중 적어도 하나를 기반으로 구현될 수 있다.
일부 실시 예들에서, 호스트 인터페이스 회로(118)는 비-휘발성 메모리 장치(120)에 포함된 복수의 메모리 영역들 중 제1 메모리 영역이 사용 가능 메모리 조건들을 만족하지 않음을 가리키는 정보를 호스트(11)로 출력할 수 있다. 일부 실시 예들에서, 호스트 인터페이스 회로(118)는 비-휘발성 메모리 장치(120)에 포함된 복수의 메모리 영역들 중 제2 메모리 영역이 사용 가능 메모리 조건들을 만족함을 가리키는 정보를 호스트(11)로 출력할 수 있다.
일부 실시 예들에서, 호스트 인터페이스 회로(118)는 리디렉션 장치(112)로부터 리디렉션 결과 정보를 수신할 수 있다. 호스트 인터페이스 회로(118)는 리디렉션 결과 정보를 호스트(11)로 출력할 수 있다.
일부 실시 예들에서, 호스트 인터페이스 회로(118)는 상태 검사기(111) 또는 모니터링 장치(113)로부터 모니터링 정보를 수신할 수 있다. 호스트 인터페이스 회로(118)는 모니터링 정보를 호스트(11)로 출력할 수 있다.
스토리지 컨트롤러(110)는 비-휘발성 메모리 인터페이스 회로(119)를 통해 비-휘발성 메모리 장치(120)와 통신할 수 있다. 일부 실시 예들에서, 비-휘발성 메모리 인터페이스 회로(119)는 낸드 인터페이스를 기반으로 구현될 수 있다.
도 3a는 본 개시의 일부 실시 예들에 따라 도 1의 메모리 칩(MC)을 구체화한 블록도이다. 도 3b는 도 3a의 메모리 셀 어레이(121)에 포함된 복수의 메모리 블록들 중 하나의 메모리 블록(BLK)을 도시하는 도면이다.
도 1, 도 3a, 및 도 3b를 참조하면, 비-휘발성 메모리 장치(120)는 복수의 메모리 칩(MC)들을 포함할 수 있다. 메모리 칩(MC)은 스토리지 컨트롤러(110)와 통신할 수 있다. 예를 들어, 메모리 칩(MC)은 스토리지 컨트롤러(110)로부터 어드레스(ADD), 커맨드(CMD), 및 제어 신호(CTR)를 수신할 수 있다. 메모리 칩(MC)은 스토리지 컨트롤러(110)와 데이터를 통신할 수 있다. 메모리 칩(MC)은 메모리 셀 어레이(121), 어드레스 디코더(122), 제어 로직 및 전압 생성 회로(123), 페이지 버퍼(124), 및 I/O(Input/Output) 회로(125)를 포함할 수 있다.
메모리 셀 어레이(121)는 복수의 메모리 블록들을 포함할 수 있다. 복수의 메모리 블록들은 각각 도 3b에서 도시된 메모리 블록(BLK)과 유사한 구조를 가질 수 있다. 도 3b에 도시된 메모리 블록(BLK)은 비-휘발성 메모리 장치(120)의 물리적 소거 단위일 수 있으나, 본 개시가 이에 제한되는 것은 아니며, 물리적 소거 단위는 페이지 단위, 워드라인 단위, 서브 블록 단위 등으로 변경될 수 있다.
도 3b에 도시된 바와 같이, 메모리 블록(BLK)은 복수의 셀 스트링들(CS11, CS12, CS21, CS22)을 포함할 수 있다. 복수의 셀 스트링들(CS11, CS12, CS21, CS22) 각각은 행 방향 및 열 방향으로 배열될 수 있다. 비록, 도면의 간결성을 위해, 도 3b는 4개의 셀 스트링들(CS11, CS12, CS21, CS22)을 도시하지만, 본 개시가 이에 제한되는 것은 아니며, 셀 스트링들의 개수는 행 방향 또는 열 방향으로 증가 또는 감소될 수 있다.
복수의 셀 스트링들(CS11, CS12, CS21, CS22) 중 동일한 열에 위치한 셀 스트링들은 동일한 비트라인과 연결될 수 있다. 예를 들어, 셀 스트링들(CS11, CS21)은 제1 비트라인(BL1)과 연결될 수 있고, 셀 스트링들(CS12, CS22)은 제2 비트라인(BL2)과 연결될 수 있다. 복수의 셀 스트링들(CS11, CS12, CS21, CS22) 각각은 복수의 셀 트랜지스터들을 포함할 수 있다. 복수의 셀 트랜지스터들 각각은 전하 트랩형 플래시(CTF; charge trap flash) 메모리 셀일 수 있다. 복수의 셀 트랜지스터들은 행 방향 및 열 방향에 의해 형성된 평면(예를 들어, 반도체 기판(미도시))과 수직한 방향인 높이 방향으로 적층될 수 있다.
복수의 셀 트랜지스터들은 대응하는 비트라인(예를 들어, BL1 또는 BL2) 및 공통 소스 라인(CSL) 사이에 직렬 연결될 수 있다. 예를 들어, 복수의 셀 트랜지스터들은 스트링 선택 트랜지스터들(SSTb, SSTa), 더미 메모리 셀들(DMC1, DMC2), 메모리 셀들(MC1~MC4), 및 접지 선택 트랜지스터들(GSTa, GSTb)을 포함할 수 있다. 직렬 연결된 스트링 선택 트랜지스터들(SSTb, SSTa)은 직렬 연결된 메모리 셀들(MC1~MC4) 및 대응하는 비트라인(예를 들어, BL1 또는 BL2) 사이에 제공될 수 있다. 직렬 연결된 접지 선택 트랜지스터들(GSTa, GSTb)은 직렬 연결된 메모리 셀들(MC1~MC4) 및 공통 소스 라인(CSL) 사이에 제공될 수 있다.
일부 실시 예들에서, 직렬 연결된 스트링 선택 트랜지스터들(SSTb, SSTa) 및 직렬 연결된 메모리 셀들(MC1~MC4) 사이에 제2 더미 메모리 셀(DMC2)이 제공될 수 있고, 직렬 연결된 메모리 셀들(MC1~MC4) 및 직렬 연결된 접지 선택 트랜지스터들(GSTb, GSTa) 사이에 제1 더미 메모리 셀(DMC1)이 제공될 수 있다.
복수의 셀 스트링들(CS11, CS12, CS21, CS22) 각각의 메모리 셀들(MC1~MC4) 중 동일한 높이에 위치한 메모리 셀들은 서로 동일한 워드라인을 공유할 수 있다. 예를 들어, 복수의 셀 스트링들(CS11, CS12, CS21, CS22) 각각의 제1 메모리 셀들(MC1)은 기판(미도시)으로부터 동일한 높이에 위치할 수 있고, 제1 워드라인(WL1)을 공유할 수 있다. 복수의 셀 스트링들(CS11, CS12, CS21, CS22) 각각의 제2 메모리 셀들(MC2)은 기판(미도시)으로부터 동일한 높이에 위치할 수 있고, 제2 워드라인(WL2)을 공유할 수 있다. 마찬가지로, 복수의 셀 스트링들(CS11, CS12, CS21, CS22) 각각의 제3 및 제4 메모리 셀들(MC3, MC4) 각각은 기판(미도시)으로부터 동일한 높이에 위치할 수 있고, 각각 제3 및 제4 워드라인들(WL3, WL4)을 공유할 수 있다.
복수의 셀 스트링들(CS11, CS12, CS21, CS22) 각각의 더미 메모리 셀들(DMC1, DMC2) 중 동일한 높이에 위치한 더미 메모리 셀들은 서로 동일한 더미 워드라인을 공유할 수 있다. 예를 들어, 복수의 셀 스트링들(CS11, CS12, CS21, CS22) 각각의 제1 더미 메모리 셀들(DMC1)은 제1 더미 워드라인(DWL1)을 공유할 수 있고, 복수의 셀 스트링들(CS11, CS12, CS21, CS22) 각각의 제2 더미 메모리 셀들(DMC2)은 제2 더미 워드라인(DWL2)을 공유할 수 있다.
복수의 셀 스트링들(CS11, CS12, CS21, CS22) 각각의 스트링 선택 트랜지스터들(SST1b, SST1a) 중 동일한 행 및 동일한 높이에 위치한 스트링 선택 트랜지스터들은 동일한 스트링 선택 라인과 연결될 수 있다. 예를 들어, 셀 스트링들(CS11, CS12)의 스트링 선택 트랜지스터들(SSTb)은 스트링 선택 라인(SST1b)과 연결될 수 있고, 셀 스트링들(CS11, CS12)의 스트링 선택 트랜지스터들(SSTa)은 스트링 선택 라인(SST1a)과 연결될 수 있다. 셀 스트링들(CS21, CS22)의 스트링 선택 트랜지스터들(SSTb)은 스트링 선택 라인(SST2b)과 연결될 수 있고, 셀 스트링들(CS21, CS22)의 스트링 선택 트랜지스터들(SSTa)은 스트링 선택 라인(SST2a)과 연결될 수 있다.
복수의 셀 스트링들(CS11, CS12, CS21, CS22) 각각의 접지 선택 트랜지스터들(GSTb, GSTa) 중 동일한 행 및 동일한 높이에 위치한 접지 선택 트랜지스터들은 동일한 접지 선택 라인과 연결될 수 있다. 예를 들어, 셀 스트링들(CS11, CS12)의 접지 선택 트랜지스터들(GSTb)은 접지 선택 라인(GSL1b)과 연결될 수 있고, 셀 스트링들(CS11, CS12)의 접지 선택 트랜지스터들(GSTa)은 접지 선택 라인(GSL1a)과 연결될 수 있다. 셀 스트링들(CS21, CS22)의 접지 선택 트랜지스터들(GSTb)은 접지 선택 라인(GSL2b)과 연결될 수 있고, 셀 스트링들(CS21, CS22)의 접지 선택 트랜지스터들(GSTa)은 접지 선택 라인(GSL2a)과 연결될 수 있다.
일부 실시 예들에서, 도 3b에서 도시된 메모리 블록(BLK)은 예시이며, 셀 스트링들의 개수는 증가 또는 감소될 수 있으며, 셀 스트링들의 개수에 따라 셀 스트링을 구성하는 행들 및 열들의 개수가 증가 또는 감소될 수 있다. 또한, 메모리 블록(BLK)의 셀 트랜지스터들의 개수들은 각각 증가 또는 감소될 수 있으며, 셀 트랜지스터들의 개수들에 따라 메모리 블록(BLK)의 높이가 증가 또는 감소할 수 있고, 셀 트랜지스터들의 개수들에 따라 셀 트랜지스터들과 연결된 라인들의 개수들이 증가 또는 감소될 수 있다.
일부 실시 예들에서, 스토리지 컨트롤러(110)의 상태 검사기(111)는 복수의 상태 정보(SI)에 기초하여 복수의 메모리 영역들 각각이 사용 가능 메모리 조건들을 만족하는지 여부를 결정할 수 있다. 메모리 영역은 비-휘발성 메모리 장치(120) 내에서 데이터를 저장할 수 있는 물리적으로 구분된 임의의 영역을 지칭할 수 있다.
예를 들어, 메모리 영역은 하나의 스토리지 장치(100)에 포함된 복수의 메모리 칩들(MC) 중 하나에 대응하거나, 또는 하나의 메모리 칩(MC)에 포함된 복수의 메모리 블록(BLK)들 중 하나에 대응할 수 있다. 하지만, 본 개시는 이에 제한되지 않으며, 메모리 영역은 메모리 블록(BLK) 내의 하나의 페이지, 하나의 워드라인, 하나의 서브 메모리 블록 등에 대응할 수 있다.
다시 도 1 및 도 3a를 참조하면, 어드레스 디코더(122)는 스토리지 컨트롤러(110)로부터 어드레스(ADD)를 수신할 수 있다. 어드레스 디코더(122)는 스트링 선택 라인(SSL)들, 워드라인(WL)들, 및 접지 선택 라인(GSL)들을 통해 메모리 셀 어레이(121)와 연결될 수 있다. 어드레스 디코더(122)는 어드레스(ADD)를 디코딩하고, 디코딩 결과에 기초하여 스트링 선택 라인(SSL)들, 워드라인(WL)들, 및 접지 선택 라인(GSL)들에 인가되는 전압들을 제어할 수 있다.
제어 로직 및 전압 생성 회로(123)는 스토리지 컨트롤러(110)로부터 커맨드(CMD) 및 제어 신호(CTR)를 수신할 수 있다. 제어 로직 및 전압 생성 회로(123)는 커맨드(CMD) 및 제어 신호(CTR)에 기초하여 어드레스 디코더(122), 페이지 버퍼(124), 및 I/O 회로(125)를 제어할 수 있다. 제어 로직 및 전압 생성 회로(123)는 비-휘발성 메모리 장치(120)가 동작하는데 필요한 다양한 전압들(예를 들어, 읽기 전압들, 프로그램 전압들, 검증 전압들, 소거 전압들 등)을 생성할 수 있다.
페이지 버퍼(124)는 비트라인(BL)들을 통해 메모리 셀 어레이(121)와 연결될 수 있다. 페이지 버퍼(124)는 데이터 라인(DL)들을 통해 I/O 회로(125)로부터 데이터를 수신할 수 있다. 페이지 버퍼(124)는 수신된 데이터에 기초하여 비트라인(BL)들을 제어함으로써, 데이터를 메모리 셀 어레이(121)에 저장할 수 있다. 페이지 버퍼(124)는 비트라인(BL)들의 전압을 감지함으로써, 메모리 셀 어레이(121)에 저장된 데이터를 읽을 수 있다. 페이지 버퍼(124)는 읽은 데이터를 데이터 라인(DL)을 통해 I/O 회로(125)로 제공할 수 있다.
I/O 회로(125)는 데이터 라인(DL)들을 통해 페이지 버퍼(124)와 연결될 수 있다. I/O 회로(125)는 스토리지 컨트롤러(110)로부터 수신된 데이터를 데이터 라인(DL)을 통해 페이지 버퍼(124)로 전달할 수 있다. I/O 회로(125)는 데이터 라인(DL)을 통해 수신된 데이터를 스토리지 컨트롤러(110)로 출력할 수 있다.
일부 실시 예들에서, 도 3a를 참조하여 설명된 어드레스(ADD), 커맨드(CMD), 제어 신호(CTR), 및 데이터는 스토리지 컨트롤러(110)의 비-휘발성 메모리 인터페이스 회로(119)를 통해 송수신될 수 있다.
도 4는 본 개시의 실시 예에 따른 멀티-테넌시(multi-tenancy) 환경에서 동작하는 스토리지 장치를 도시하는 블록도이다. 도 4를 참조하면, 스토리지 장치(100)는 호스트(11)와 통신할 수 있다. 스토리지 장치(100)는 스토리지 컨트롤러(110) 및 복수의 메모리 영역들(MR1~MRN)을 포함할 수 있다. 예를 들어, 복수의 메모리 영역들(MR1~MRN)은 도 1의 비-휘발성 메모리 장치(120)에 포함된 물리적으로 구분된 메모리 영역들일 수 있다.
스토리지 컨트롤러(110)는 상태 정보 세트를 생성할 수 있다. 상태 정보 세트는 복수의 상태 정보(SI1~SIN)를 포함할 수 있다. 복수의 상태 정보(SI1~SIN)는 각각 복수의 메모리 영역들(MR1~MRN)에 대응할 수 있다. 예를 들어, 제1 상태 정보(SI1)는 제1 메모리 영역(MR1)의 상태를 나타낼 수 있다. 제2 상태 정보(SI2)는 제2 메모리 영역(MR2)의 상태를 나타낼 수 있다.
일부 실시 예들에서, 스토리지 장치(100)는 멀티-테넌시 환경에서 동작할 수 있다. 멀티-테넌시 환경은 여러 사용자들에게 동일한 서비스를 제공하는 환경을 의미할 수 있다. 예를 들어, 스토리지 장치(100)는 클라우드 컴퓨팅을 위한 서버용 저장 매체로 사용될 수 있다. 멀티-테넌시 환경에서 사용자들 간 간섭을 줄이고 보안을 강화하기 위해, 사용자들은 서로 다른 메모리 영역을 사용할 수 있다. 예를 들어, 사용자 A는 제1 메모리 영역(MR1)을 사용하고, 사용자 B는 제2 메모리 영역(MR2)을 사용하고, 사용자 C는 제3 메모리 영역(MR3)을 사용할 수 있다.
다만, 사용자의 성향 및 데이터의 크기 등에 따라 특정 메모리 영역에 과도한 워크로드가 집중될 수 있다. 예를 들어, 사용자 A가 고용량의 데이터를 빈번하게 업로드 하거나 다운로드 하는 경우, 제1 메모리 영역(MR1)에서의 데이터 처리가 실패하거나, 제1 메모리 영역(MR1)이 마모(wear out)되거나, 또는 제1 메모리 영역(MR1)에서의 데이터 처리가 지연될 수 있다. 이를 해결하기 위해, 스토리지 장치(100)는 사용자 A에게 추가 메모리 영역(예를 들어, 제4 메모리 영역)을 할당하거나, 또는 사용자 B를 위해 할당되었으나 사용 빈도가 낮은 제2 메모리 영역(MR2)을 사용자 A에게 함께 할당할 수 있다.
만약, 복수의 메모리 영역들(MR1~MRN)이 모두 특정 사용자에게 할당되는 단일-테넌시(single-tenancy) 환경에서 스토리지 장치(100)가 동작한다면, 특정 사용자를 위한 데이터들은 복수의 메모리 영역들(MR1~MRN)에 균형적으로 분산될 수 있다. 반면에, 멀티-테넌시 환경의 경우, 여러 사용자들을 위해 복수의 메모리 영역들(MR1~MRN)이 전용적으로 할당됨에 따라 워크로드의 불균형이 빈번하게 발생할 수 있다. 이에 따라, 워크로드의 불균형을 해소할 방법이 요구된다.
본 개시의 이해를 돕기 위해, 도 4를 참조하여 워크로드의 불균형이 발생할 수 있는 예로서 멀티-테넌시 환경이 설명되었으나, 본 개시는 이에 제한되지 않는다. 스토리지 장치(100)가 단일-테넌시 환경에서 동작하는 경우, 또는 스토리지 장치(100)가 개인용 컴퓨팅 장치에서 사용되는 경우에서, 연관된 데이터의 효율적인 처리 또는 보안 등을 위해서 복수의 메모리 영역들(MR1~MRN)에 데이터가 불균형하게 저장될 수 있으며, 이러한 경우에서도 마찬가지로 워크로드의 불균형을 해소할 방법이 요구된다.
도 5a 및 도 5b는 본 개시의 일부 실시 예들에 따라 메모리 영역의 상태 정보를 설명하는 도면들이다. 도 5a는 특정 메모리 영역에 대한 상태 정보를 예로서 설명하는 도면이다. 도 5b는 복수의 메모리 영역들에 각각 대응하는 복수의 상태 정보를 예로서 설명하는 도면이다.
도 5a를 참조하면, 특정 메모리 영역을 위한 상태 정보가 설명된다. 상태 정보는 대응하는 메모리 영역이 사용 가능한지 여부를 결정하는데 사용될 수 있다. 메모리 영역이 사용 불가능한 경우는 여러 요인들에 의해 결정될 수 있다. 따라서, 상태 정보는 여러 요인들에 대응하는 여러 서브 조건들을 포함할 수 있다. 상태 정보의 구체적인 내용은 인덱스, 내용, 및 값을 참조하여 설명된다.
일부 실시 예들에서, 상태 정보는 평균 소거 카운트에 대한 정보를 포함할 수 있다. 예를 들어, 인덱스 1을 참조하면, 상태 정보는 평균 소거 카운트에 대응하는 값을 포함할 수 있다. 평균 소거 카운트는 대응하는 메모리 영역에 포함된 복수의 메모리 셀들에서 각각 수행된 소거 동작들을 카운트한 값들의 평균을 나타낼 수 있다. 대응하는 메모리 영역에서 프로그램 동작 및 소거 동작이 과도하게 수행된다면, 대응하는 메모리 영역이 마모되어 데이터의 신뢰도가 저하될 수 있다. 이를 방지하기 위해, 스토리지 컨트롤러는 평균 소거 카운트가 높은 메모리 영역을 사용 불가능한 것으로 결정할 수 있다.
일부 실시 예들에서, 상태 정보는 유효 페이지 카운트(VPC; Valid Page Count) 비율에 대한 정보를 포함할 수 있다. 예를 들어, 인덱스 2를 참조하면, 상태 정보는 유효 페이지 카운트 비율에 대응하는 값을 포함할 수 있다. 유효 페이지 카운트 비율은 대응하는 메모리 영역에 포함된 모든 페이지들에 대한 사용 가능한 페이지의 비율을 나타낼 수 있다. 페이지는 도 3a의 페이저 버퍼(124)가 데이터를 처리하는 단위일 수 있고, 도 3b의 메모리 블록(BLK)에서 하나의 워드 라인과 연결된 메모리 셀들에 대응할 수 있다. 대응하는 메모리 영역의 유효 페이지 카운트 비율이 100%이면, 메모리 영역은 용량이 가득 찬 상태일 수 있다.
일부 실시 예들에서, 상태 정보는 배드 블록의 개수에 대한 정보를 포함할 수 있다. 예를 들어, 인덱스 3을 참조하면, 상태 정보는 배드 블록의 개수에 대응하는 값을 포함할 수 있다. 배드 블록은 제조 단계에서 원시적으로 손상된 메모리 블록이거나, 또는 프로그램 동작 및 소거 동작의 반복에 의해 사후적으로 손상된 메모리 블록일 수 있다. 배드 블록은 데이터를 정상적으로 저장할 수 없는 메모리 블록일 수 있다. 메모리 영역이 하나의 메모리 칩에 대응한다면, 배드 블록은 메모리 블록에 대응할 수 있고, 메모리 영역이 하나의 메모리 블록에 대응한다면 배드 블록은 메모리 블록 내 서브 블록에 대응할 수 있다.
일부 실시 예들에서, 상태 정보는 쓰기 증폭 인자(WAF; write amplification factor)에 대한 정보를 포함할 수 있다. 예를 들어, 인덱스 4를 참조하면, 상태 정보는 WAF에 대응하는 값을 포함할 수 있다. WAF는 메모리 영역에서 쓰여진 데이터의 크기를 호스트로부터 요청된 데이터의 크기로 나눈 값일 수 있다. 스토리지 장치는 가비지 컬렉션(GC; garbage collection) 등의 추가적인 동작을 위해서 호스트로부터 요청된 데이터보다 많은 데이터를 쓸 수 있다. WAF의 크기가 작을수록 스토리지 장치의 워크로드가 낮으며, 일반적으로 WAF의 크기는 1보다 작을 수 없다. WAF는 메모리 영역의 워크로드를 결정하기 위한 요인들 중 하나로 사용될 수 있다.
일부 실시 예들에서, 상태 정보는 메모리 사용 비율에 대한 정보를 포함할 수 있다. 예를 들어, 인덱스 5를 참조하면, 상태 정보는 메모리 사용 비율에 대응하는 값을 포함할 수 있다. 메모리 사용 비율은 대응하는 메모리 영역에서 읽기, 쓰기, 가비지 컬렉션, 방어 코드 등에 따라 메모리가 사용되는 정도를 나타낼 수 있다. 방어 코드는 스토리지 장치의 데이터 손상을 억제하거나 복구하기 위한 알고리즘을 의미할 수 있다.
이 때, VPC 비율은 메모리 영역의 데이터 저장 용량을 나타내는 반면, 메모리 사용 비율은 데이터 처리와 관련된 동작이 수행되는 정도를 나타내므로, 메모리 사용 비율은 VPC 비율과 구별된다. 메모리 사용 비율이 높은 상태는 '비지(busy)' 상태로 지칭될 수 있고, 메모리 사용 비율이 낮은 상태는 '유휴(idle)' 상태로 지칭될 수 있다.
상술된 바와 같이, 본 개시의 일 실시 예에 따르면, 스토리지 컨트롤러는 복수의 메모리 영역들에 각각 대응하는 복수의 상태 정보를 포함할 수 있다. 복수의 상태 정보는 각각 대응하는 메모리 영역의 평균 소거 카운트, 대응하는 메모리 영역의 유효 페이지 카운트 비율, 대응하는 메모리 영역의 배드 블록의 개수, 대응하는 메모리 영역의 WAF, 및 대응하는 메모리 영역의 메모리 사용 비율 중 적어도 하나를 포함할 수 있다.
도 5b를 참조하면, 복수의 메모리 영역들(MR1~MR4)에 각각 대응하는 복수의 상태 정보(SI1~SI4)가 도시된다. 제1 상태 정보(SI1)는 제1 메모리 영역(MR1)의 상태를 나타낼 수 있다. 예를 들어, 제1 상태 정보(SI1)는 평균 소거 카운트가 200이고, VPC 비율이 100%이고, 배드 블록의 개수가 6이고, WAF가 5이고, 메모리 사용 비율이 65%임을 나타낼 수 있다.
제2 상태 정보(SI2)는 제2 메모리 영역(MR2)의 상태를 나타낼 수 있다. 예를 들어, 제2 상태 정보(SI2)는 평균 소거 카운트가 300이고, VPC 비율이 70%이고, 배드 블록의 개수가 10이고, WAF가 2이고, 메모리 사용 비율이 85%임을 나타낼 수 있다.
제3 상태 정보(SI3)는 제3 메모리 영역(MR3)의 상태를 나타낼 수 있다. 예를 들어, 제3 상태 정보(SI3)는 평균 소거 카운트가 200이고, VPC 비율이 80%이고, 배드 블록의 개수가 5이고, WAF가 4이고, 메모리 사용 비율이 30%임을 나타낼 수 있다.
제4 상태 정보(SI4)는 제4 메모리 영역(MR4)의 상태를 나타낼 수 있다. 예를 들어, 제4 상태 정보(SI4)는 평균 소거 카운트가 500이고, VPC 비율이 70%이고, 배드 블록의 개수가 7이고, WAF가 1이고, 메모리 사용 비율이 90%임을 나타낼 수 있다.
일부 실시 예들에 따르면, 스토리지 컨트롤러는 복수의 상태 정보(SI1~SI4)에 기초하여 복수의 메모리 영역들(MR1~MR4) 각각이 사용 가능한지 여부를 결정할 수 있다.
예를 들어, 스토리지 컨트롤러는 제1 상태 정보(SI1)에서 VPC 비율이 100%이므로, 제1 메모리 영역(MR1)이 사용 불가능하다고 결정할 수 있다. 스토리지 컨트롤러는 제2 상태 정보(SI2)에 따른 배드 블록의 개수가 다른 상태 정보(SI1, SI3, SI4)에 따른 배드 블록들의 개수들보다 많으므로, 제2 메모리 영역(MR2)이 사용 불가능하다고 결정할 수 있다. 스토리지 컨트롤러는 제3 상태 정보(SI3)에 기초하여 제3 메모리 영역(MR3)이 사용 가능하다고 결정할 수 있다. 스토리지 컨트롤러는 제4 상태 정보(SI4)에 따른 평균 소거 카운트가 다른 상태 정보(SI1, SI2, SI3)에 따른 평균 소거 카운트들보다 높으므로, 제4 메모리 영역(MR4)이 사용 불가능하다고 결정할 수 있다. 다만, 본 개시는 이에 제한되지 않으며, 사용 가능 메모리 조건들에 대한 보다 상세한 설명은 도 9와 함께 후술될 것이다.
도 6a, 도 6b, 및 도 6c는 본 개시의 일부 실시 예들에 따라 워크로드가 편중된 메모리 영역을 설명하는 도면들이다. 도 6a는 VPC 비율이 편중된 메모리 영역을 설명한다. 도 6a를 참조하면, 스토리지 컨트롤러(110)는 제1 내지 제4 상태 정보(SI1~SI4)를 포함할 수 있다. 제1 내지 제4 상태 정보(SI1~SI4)는 각각 제1 내지 제4 메모리 영역들(MR1~MR4)의 VPC 비율들을 나타낼 수 있다.
일부 실시 예들에서, 제1 내지 제4 메모리 영역들(MR1~MR4) 각각의 VPC 비율은 100%, 50%, 90%, 및 70%일 수 있다. 스토리지 컨트롤러(110)는 호스트로부터 제1 메모리 영역(MR1)에 대한 쓰기 요청을 수신할 수 있다. 제1 메모리 영역(MR1)의 VPC 비율은 100%이므로, 제1 메모리 영역(MR1)에서의 쓰기는 실패할 것이다. 스토리지 컨트롤러(110)는 제1 내지 제4 상태 정보(SI1~SI4)에 기초하여 쓰기 요청을 리디렉션할 필요가 있다.
도 6b는 평균 소거 카운트가 편중된 메모리 영역을 설명한다. 도 6b를 참조하면, 스토리지 컨트롤러(110)는 제1 내지 제4 상태 정보(SI1~SI4)를 포함할 수 있다. 제1 내지 제4 상태 정보(SI1~SI4)는 각각 제1 내지 제4 메모리 영역들(MR1~MR4)의 평균 소거 카운트들을 나타낼 수 있다.
일부 실시 예들에서, 제1 내지 제4 메모리 영역들(MR1~MR4) 각각의 평균 소거 카운트는 100, 1000, 100, 및 100일 수 있다. 스토리지 컨트롤러(110)는 호스트로부터 제2 메모리 영역(MR2)에 대한 쓰기 요청을 수신할 수 있다. 제2 메모리 영역(MR2)의 평균 소거 카운트는 다른 메모리 영역들(MR1, MR2, MR4)의 평균 소거 카운트들보다 상대적으로 높으므로, 제2 메모리 영역(MR2)이 다른 메모리 영역들(MR1, MR2, MR4)보다 먼저 마모될 수 있다. 이를 방지하기 위해, 스토리지 컨트롤러(110)는 제1 내지 제4 상태 정보(SI1~SI4)에 기초하여 쓰기 요청을 리디렉션할 필요가 있다.
도 6c는 메모리 사용 비율이 편중된 메모리 영역을 설명한다. 도 6c를 참조하면, 스토리지 컨트롤러(110)는 제1 내지 제4 상태 정보(SI1~SI4)를 포함할 수 있다. 제1 내지 제4 상태 정보(SI1~SI4)는 각각 제1 내지 제4 메모리 영역들(MR1~MR4)의 메모리 사용 비율들을 나타낼 수 있다.
일부 실시 예들에서, 제1 내지 제4 메모리 영역들(MR1~MR4) 각각의 메모리 사용 비율은 10, 5, 95, 및 5일 수 있다. 스토리지 컨트롤러(110)는 호스트로부터 제3 메모리 영역(MR3)에 대한 쓰기 요청을 수신할 수 있다. 제3 메모리 영역(MR3)의 메모리 사용 비율이 높으므로(예를 들어, 방어 코드가 실행됨), 제3 메모리 영역(MR3)에서의 레이턴시(latency)는 다른 메모리 영역들(MR1, MR2, MR4)의 레이턴시들 보다 길 수 있고, 제3 메모리 영역(MR3)에서 쓰기 요청이 처리된다면 데이터 처리가 지연될 수 있다. 이를 방지하기 위해, 스토리지 컨트롤러(110)는 제1 내지 제4 상태 정보(SI1~SI4)에 기초하여 쓰기 요청을 리디렉션할 필요가 있다.
상술된 바와 같이, 도 6a, 도 6b, 및 도 6c를 참조하여, 데이터 처리가 실패하거나, 메모리 영역이 마모되거나, 데이터 처리 속도가 지연될 수 있는 경우들이 예로서 설명되었다. 이를 방지하기 위해, 사용 불가능한 메모리 영역에 대한 쓰기 요청을 리디렉션 하거나, 또는 주기적으로 메모리 영역의 상태를 모니터링하고 모니터링 정보를 호스트에 제공하는 방법이 요구된다.
도 7은 본 개시의 일부 실시 예들에 따라 쓰기 요청을 리디렉션하는 방법을 설명하는 도면이다. 도 7을 참조하면, 스토리지 컨트롤러는 호스트(11)와 통신할 수 있고, 상태 검사기(111) 및 리디렉션 장치(112)를 포함할 수 있다.
상태 검사기(111)는 호스트(11)로부터 제1 메모리 영역(MR1)에 대한 쓰기 요청을 수신할 수 있다. 상태 검사기(111)는 비-휘발성 메모리 장치(120)의 상태를 검사하고, 상태 정보 세트(SIS)를 생성할 수 있다. 상태 정보 세트(SIS)는 복수의 상태 정보(SI1~SIN)를 포함할 수 있다. 복수의 상태 정보(SI1~SIN)는 복수의 메모리 영역들(MR1~MRN)에 각각 대응할 수 있다.
상태 검사기(111)는 상태 정보 세트(SIS)에 기초하여 제1 메모리 영역(MR1)이 사용 가능한지 여부를 결정할 수 있다. 일부 실시 예들에서, 상태 검사기(111)는 제1 메모리 영역(MR1)이 사용 불가능하다고 결정할 수 있다. 예를 들어, 제1 상태 정보(SI1)는 제1 메모리 영역(MR1)의 용량이 초과(즉, VPC 비율이 100%)되었음을 가리킬 수 있다. 상태 검사기(111)는 제1 메모리 영역(MR1) 대신에 제2 메모리 영역(MR2)이 선택되었음을 가리키는 리디렉션 정보를 생성할 수 있다. 상태 검사기(111)는 리디렉션 정보를 리디렉션 장치(112)로 출력할 수 있다.
리디렉션 장치(112)는 비-휘발성 메모리 장치(120)와 통신할 수 있다. 리디렉션 장치(112)는 상태 검사기(111)로부터의 리디렉션 정보에 기초하여 제2 메모리 영역(MR2)에 쓰기 동작을 수행할 수 있다. 즉, 리디렉션 장치(112)는 호스트(11)로부터 제1 메모리 영역(MR1)에 쓰도록 요청된 데이터를 제1 메모리 영역(MR1)이 아닌 제2 메모리 영역(MR2)에 저장할 수 있다.
리디렉션 장치(112)는 리디렉션 결과 정보(RRI)를 호스트(11)로 출력할 수 있다. 리디렉션 결과 정보(RRI)는 쓰기 요청에 따른 쓰기 데이터가 제2 메모리 영역(MR2)에서 처리되었음을 가리키는 정보일 수 있다.
일부 실시 예들에서, 리디렉션 결과 정보(RRI)는 복수의 메모리 영역들(MR1~MRN) 중 리디렉션된 메모리 영역에 대응하는 논리 블록 어드레스(LBA; logic block address), 쓰기 요청에 대응하는 메모리 영역의 정보, 리디렉션된 메모리 영역의 정보, 리디렉션된 이유, 및 상태 정보 세트(SIS) 중 적어도 하나를 포함할 수 있다.
예를 들어, 리디렉션 결과 정보(RRI)는 복수의 메모리 영역들(MR1~MRN) 중 리디렉션된 메모리 영역(MR2)에 대응하는 LBA가 '0xABCD'임을 가리킬 수 있다. 리디렉션 결과 정보(RRI)는 쓰기 요청에 대응하는 메모리 영역이 제1 메모리 영역(MR1)임을 가리킬 수 있다. 리디렉션 결과 정보(RRI)는 리디렉션된 메모리 영역이 제2 메모리 영역(MR2)임을 가리킬 수 있다. 리디렉션 결과 정보(RRI)는 리디렉션된 이유가 용량 초과임을 가리킬 수 있다. 리디렉션 결과 정보(RRI)는 복수의 상태 정보(SI1~SIN)를 갖는 상태 정보 세트(SIS)를 포함할 수 있다.
일부 실시 예들에서, 호스트(11)는 스토리지 컨트롤러로부터 리디렉션 결과 정보(RRI)를 수신할 수 있다. 호스트(11)는 리디렉션 결과 정보(RRI)에 기초하여 쓰기 요청의 데이터가 제2 메모리 영역(MR2)에 저장되었음을 인식할 수 있다. 호스트(11)는, 제2 메모리 영역(MR2)으로 리디렉션된 데이터를 읽기 위해, 쓰기 요청의 데이터에 대응하고 리디렉션된 제2 메모리 영역(MR2)의 정보를 포함하는 읽기 요청을 스토리지 컨트롤러로 출력할 수 있다.
도 8은 본 개시의 일부 실시 예들에 따라 메모리 영역의 상태를 모니터링하는 방법을 설명하는 도면이다. 도 8을 참조하면, 스토리지 컨트롤러는 호스트(11)와 통신할 수 있고, 상태 검사기(111) 및 모니터링 장치(113)를 포함할 수 있다.
모니터링 장치(113)는 비-휘발성 메모리 장치(120)와 통신할 수 있다. 모니터링 장치(113)는 비-휘발성 메모리 장치(120) 내의 복수의 메모리 영역들(MR1~MRN)을 모니터링할 수 있다. 일부 실시 예들에서, 모니터링 장치(113)는 호스트(11)로부터 별도의 요청 없이, 기준 시간마다 주기적으로 비-휘발성 메모리 장치(120)를 모니터링할 수 있다.
모니터링 장치(113)는 복수의 메모리 영역들(MR1~MRN)의 모니터링에 기초하여 상태 검사기(111)의 상태 정보 세트(SIS)를 업데이트할 수 있다. 상태 정보 세트(SIS)는 복수의 상태 정보(SI1~SIN)를 포함할 수 있다. 복수의 상태 정보(SI1~SIN)는 복수의 메모리 영역들(MR1~MRN)에 각각 대응할 수 있다.
상태 검사기(111)는 업데이트된 상태 정보 세트(SIS)에 기초하여 복수의 메모리 영역들(MR1~MRN)이 사용 가능한지 여부를 결정할 수 있다. 상태 검사기(111)는 복수의 메모리 영역들(MR1~MRN)이 사용 가능한지 여부를 포함하는 모니터링 정보(MI)를 생성할 수 있다.
예를 들어, 업데이트된 제1 상태 정보(SI1)는 제1 메모리 영역(MR1)의 용량이 초과(즉, VPC 비율이 100%)되었음을 가리킬 수 있다. 상태 검사기(111)는 업데이트된 제1 상태 정보(SI1)에 기초하여 제1 메모리 영역(MR1)이 사용 불가능하다고 결정할 수 있다. 상태 검사기(111)는 복수의 메모리 영역들(MR1~MRN) 중에서 제1 메모리 영역(MR1)이 사용 불가능함을 가리키는 모니터링 정보(MI)를 생성할 수 있다.
상태 검사기(111)는 모니터링 정보(MI)를 호스트(11)로 출력할 수 있다. 일부 실시 예들에서, 모니터링 정보(MI)는 복수의 메모리 영역들(MR1~MRN) 중 사용 불가능한 메모리 영역의 정보, 사용 불가능한 메모리 영역이 사용 불가능한 이유, 복수의 메모리 영역들(MR1~MRN) 중 사용 가능한 메모리 영역의 정보, 및 업데이트된 상태 정보 세트(SIS) 중 적어도 하나를 포함할 수 있다.
예를 들어, 모니터링 정보(MI)는 복수의 메모리 영역들(MR1~MRN) 중 사용 불가능한 메모리 영역은 제1 메모리 영역(MR1)임을 가리킬 수 있다. 모니터링 정보(MI)는 사용 불가능한 제1 메모리 영역(MR1)이 사용 불가능한 이유가 용량 초과임을 가리킬 수 있다. 모니터링 정보(MI)는 복수의 메모리 영역들(MR1~MRN) 중 사용 가능한 메모리 영역은 제2 메모리 영역(MR2)임을 가리킬 수 있다. 모니터링 정보(MI)는 업데이트된 복수의 상태 정보(SI1~SIN)를 갖는 상태 정보 세트(SIS)를 포함할 수 있다.
일부 실시 예들에서, 호스트(11)는, 스토리지 컨트롤러로부터 모니터링 정보(MI)를 수신할 수 있다. 호스트(11)는 모니터링 정보(MI)에 기초하여 제1 메모리 영역(MR1)이 사용 불가능하다고 결정할 수 있다. 호스트(11)는 모니터링 정보(MI)에 기초하여 제2 메모리 영역(MR2)이 사용 가능하다고 결정할 수 있다. 호스트(11)는 복수의 메모리 영역들(MR1~MRN) 중 사용 가능한 제2 메모리 영역(MR2)에 대한 쓰기 요청을 스토리지 컨트롤러로 출력할 수 있다.
도 9는 본 개시의 일부 실시 예들에 따라 사용 가능 메모리 조건들을 구체화한 도면이다. 도 9를 참조하면, 사용 가능 메모리 조건들이 설명된다. 사용 가능 메모리 조건들은 복수의 메모리 영역들 중 대응하는 메모리 영역이 사용 가능한지 결정하는 기준일 수 있다. 예를 들어, 도 7 및 도 8의 상태 검사기(111)는 도 9의 사용 가능 메모리 조건들에 기초하여 복수의 메모리 영역들 각각이 사용 가능한지 여부를 결정할 수 있다.
본 개시의 일부 실시 예들에 따르면, 사용 가능 메모리 조건들은 평균 소거 카운트에 관한 조건, 유효 페이지 카운트 비율에 관한 조건, 배드 블록의 개수에 관한 조건, 쓰기 증폭 인자(WAF)에 관한 조건, 및 메모리 사용 비율에 관한 조건 중 적어도 하나를 포함할 수 있다.
일부 실시 예들에서, 스토리지 컨트롤러는 대응하는 메모리 영역의 평균 소거 카운트에 기초하여 대응하는 메모리 영역이 사용 가능한지 여부를 결정할 수 있다.
예를 들어, 인덱스 1을 참조하면, 대응하는 메모리 영역의 평균 소거 카운트에서 복수의 메모리 영역들에 대한 복수의 평균 소거 카운트들의 최소 값을 감산한 값이 소거 카운트 임계 값보다 작으면, 스토리지 컨트롤러는 대응하는 메모리 영역이 사용 가능하다고 결정할 수 있다. 인덱스 1에 따른 조건을 만족하면, 대응하는 비트 플래그는 제1 값(예를 들어, 1)으로 결정될 수 있다. 인덱스 1에 따른 조건을 만족하지 않으면, 대응하는 비트 플래그는 제2 값(예를 들어, 0)으로 결정될 수 있다.
인덱스 1에 따른 조건을 만족하지 않는 것은, 대응하는 메모리 영역이 복수의 메모리 영역들에 포함된 다른 메모리 영역들보다 소거 카운트가 상당히 높은 것을 의미할 수 있다. 대응하는 메모리 영역이 집중적으로 마모되어 스토리지 장치의 성능이 저하되는 것을 방지하기 위해, 인덱스 1에 따른 조건을 만족하지 않는 메모리 영역은 사용 불가로 결정될 수 있다.
일부 실시 예들에서, 스토리지 컨트롤러는 대응하는 메모리 영역의 유효 페이지 카운트 비율에 기초하여 대응하는 메모리 영역이 사용 가능한지 여부를 결정할 수 있다.
예를 들어, 인덱스 2를 참조하면, 대응하는 메모리 영역의 유효 페이지 카운트 비율이 복수의 메모리 영역들에 대한 복수의 유효 페이지 카운트 비율들 중 최대 값보다 작으면, 스토리지 컨트롤러는 대응하는 메모리 영역이 사용 가능하다고 결정할 수 있다. 마찬가지로, 인덱스 2에 따른 조건을 만족하면 대응하는 비트 플래그는 제1 값으로 결정되고, 인덱스 2에 따른 조건을 만족하지 않으면 대응하는 비트 플래그는 제2 값으로 결정될 수 있다.
인덱스 2에 따른 조건을 만족하지 않는 것은, 복수의 메모리 영역들 중에서 대응하는 메모리 영역의 여유 용량이 가장 적은 것을 의미할 수 있다. 대응하는 메모리 영역에 집중적으로 데이터가 저장됨에 따라, 추후 읽기 동작에서 대응하는 메모리 영역으로 워크로드가 집중되는 것을 방지하기 위해, 인덱스 2에 따른 조건을 만족하지 않는 메모리 영역은 사용 불가로 결정될 수 있다.
일부 실시 예들에서, 스토리지 컨트롤러는 대응하는 메모리 영역의 배드 블록의 개수에 기초하여 대응하는 메모리 영역이 사용 가능한지 여부를 결정할 수 있다.
예를 들어, 인덱스 3을 참조하면, 대응하는 메모리 영역의 배드 블록의 개수가 복수의 메모리 영역들에 대한 배드 블록들의 개수들 중 최대 값보다 작으면, 스토리지 컨트롤러는 대응하는 메모리 영역이 사용 가능하다고 결정할 수 있다. 마찬가지로, 인덱스 3에 따른 조건을 만족하면 대응하는 비트 플래그는 제1 값으로 결정되고, 인덱스 3에 따른 조건을 만족하지 않으면 대응하는 비트 플래그는 제2 값으로 결정될 수 있다.
인덱스 3에 따른 조건을 만족하지 않는 것은, 복수의 메모리 영역들 중에서 대응하는 메모리 영역의 배드 블록의 개수가 가장 많은 것을 의미할 수 있다. 대응하는 메모리 영역에서 쓰기 동작이 더 수행된다면, 배드 블록의 개수가 증가함에 따라 스토리지 컨트롤러의 ECC 엔진의 정정 에러 정정 능력을 초과하는 에러가 빈번하게 발생할 수 있고, 스토리지 장치의 신뢰도가 저하될 수 있다. 이를 방지하기 위해, 인덱스 3에 따른 조건을 만족하지 않는 메모리 영역은 사용 불가로 결정될 수 있다.
일부 실시 예들에서, 스토리지 컨트롤러는 대응하는 메모리 영역의 WAF에 기초하여 대응하는 메모리 영역이 사용 가능한지 여부를 결정할 수 있다.
예를 들어, 인덱스 4를 참조하면, 대응하는 메모리 영역의 WAF가 WAF 임계 값보다 작으면, 스토리지 컨트롤러는 대응하는 메모리 영역이 사용 가능하다고 결정할 수 있다. 마찬가지로, 인덱스 4에 따른 조건을 만족하면 대응하는 비트 플래그는 제1 값으로 결정되고, 인덱스 4에 따른 조건을 만족하지 않으면 대응하는 비트 플래그는 제2 값으로 결정될 수 있다.
인덱스 4에 따른 조건을 만족하지 않는 것은, 대응하는 메모리 영역이 쓰기 요청을 처리하기에 적합하지 않음을 의미할 수 있다. 예를 들어, 호스트로부터 4KB의 데이터를 저장하기 위한 쓰기 요청이 수신되는 경우, WAF가 10인 메모리 영역은 40KB의 데이터를 쓰는 반면에, WAF가 2인 메모리 영역은 8KB의 데이터를 쓴다. WAF가 높은 부적절한 메모리 영역에서 쓰기 동작이 수행됨에 따라 스토리지 장치의 자원이 낭비되는 것을 방지하기 위해, 인덱스 4에 따른 조건을 만족하지 않는 메모리 영역은 사용 불가로 결정될 수 있다.
일부 실시 예들에서, 스토리지 컨트롤러는 대응하는 메모리 영역의 메모리 사용 비율에 기초하여 대응하는 메모리 영역이 사용 가능한지 여부를 결정할 수 있다.
예를 들어, 인덱스 5를 참조하면, 대응하는 메모리 영역의 메모리 사용 비율이 사용 비율 임계 값보다 작으면, 스토리지 컨트롤러는 대응하는 메모리 영역이 사용 가능하다고 결정할 수 있다. 마찬가지로, 인덱스 5에 따른 조건을 만족하면 대응하는 비트 플래그는 제1 값으로 결정되고, 인덱스 5에 따른 조건을 만족하지 않으면 대응하는 비트 플래그는 제2 값으로 결정될 수 있다.
인덱스 5에 따른 조건을 만족하지 않는 것은, 대응하는 메모리 영역이 다른 동작(예를 들어, 다른 쓰기 요청, 다른 읽기 요청, 가비지 컬렉션, 방어 코드 등)을 수행함에 따라 쓰기 요청을 처리할 수 없는 것을 의미할 수 있다. 예를 들어, 대응하는 메모리 영역의 메모리 사용 비율이 100%이면, 대응하는 메모리 영역은 이전에 요청된 동작의 적어도 일부를 완료한 후에 쓰기 요청을 처리할 수 있으므로, 레이턴시가 길어지고 데이터 처리 속도가 감소할 수 있다. 이를 방지하기 위해, 인덱스 5에 따른 조건을 만족하지 않는 메모리 영역은 사용 불가로 결정될 수 있다.
도 10은 본 개시의 일부 실시 예들에 따라 쓰기 요청을 리디렉션하는 방법을 설명하는 순서도이다. 도 10을 참조하면, 쓰기 요청을 리디렉션하는 스토리지 컨트롤러의 동작 방법이 설명된다. 스토리지 컨트롤러는 호스트 및 복수의 메모리 영역들과 통신할 수 있다.
S110 단계에서, 스토리지 컨트롤러는 호스트로부터 복수의 메모리 영역들 중 제1 메모리 영역에 대한 쓰기 요청을 수신할 수 있다. 일부 실시 예들에서, 복수의 메모리 영역들은 하나의 스토리지 장치에 포함된 복수의 메모리 칩들에 대응하거나, 또는 하나의 메모리 칩에 포함된 복수의 메모리 블록들에 대응할 수 있다.
S120 단계에서, 스토리지 컨트롤러는 상태 정보 세트에 기초하여 제1 메모리 영역이 사용 불가능하다고 결정할 수 있다. 일부 실시 예들에서, 상태 정보 세트는 복수의 메모리 영역들에 각각 대응하는 복수의 상태 정보를 포함할 수 있다. 상태 정보는 대응하는 메모리 영역의 평균 소거 카운트, 대응하는 메모리 영역의 유효 페이지 카운트 비율, 대응하는 메모리 영역의 배드 블록의 개수, 대응하는 메모리 영역의 쓰기 증폭 인자, 및 대응하는 메모리 영역의 메모리 사용 비율 중 적어도 하나를 포함할 수 있다.
일부 실시 예들에서, 스토리지 컨트롤러는 도 9의 사용 가능 메모리 조건들에 기초하여 제1 메모리 영역이 사용 불가능하다고 결정할 수 있다.
S130 단계에서, 스토리지 컨트롤러는 복수의 메모리 영역들 중 제1 메모리 영역 대신에 제2 메모리 영역이 선택되었음을 가리키는 리디렉션 정보를 생성할 수 있다.
일부 실시 예들에서, S130 단계는 상태 정보 세트에 기초하여 제2 메모리 영역이 사용 가능 메모리 조건들을 만족한다고 결정하는 단계를 포함할 수 있다. S130 단계는 사용 가능 메모리 조건들을 만족하는 제2 메모리 영역을 선택하고, 리디렉션 정보를 생성하는 단계를 포함할 수 있다. 이 때, 사용 가능 메모리 조건들은 도 9의 사용 가능 메모리 조건들과 유사할 수 있다.
S140 단계에서, 스토리지 컨트롤러는 S130 단계에서 생성된 리디렉션 정보에 기초하여 제2 메모리 영역에 쓰기 동작을 수행할 수 있다. 일부 실시 예들에서, S140 단계는 쓰기 동작에 기초하여 상태 정보 세트에 포함된 제2 메모리 영역의 상태 정보를 업데이트하는 단계를 포함할 수 있다.
S145 단계에서, 스토리지 컨트롤러는 쓰기 요청의 쓰기 데이터가 제2 메모리 영역에서 처리되었음을 가리키는 리디렉션 결과 정보를 호스트로 출력할 수 있다.
일부 실시 예들에서, 리디렉션 결과 정보는 복수의 메모리 영역들 중 리디렉션된 메모리 영역에 대응하는 논리 블록 어드레스, 쓰기 요청에 대응하는 메모리 영역의 정보, 리디렉션된 메모리 영역의 정보, 리디렉션된 이유, 및 상태 정보 세트 중 적어도 하나를 포함할 수 있다.
일부 실시 예들에서, 스토리지 컨트롤러의 동작 방법은, S145 단계를 수행한 후, 호스트로부터 쓰기 데이터에 대응하고 제2 메모리 영역의 정보를 포함하는 읽기 요청을 수신하는 단계를 더 포함할 수 있다.
도 11은 본 개시의 일부 실시 예들에 따라 메모리 영역의 상태를 모니터링하는 방법을 설명하는 순서도이다. 도 11을 참조하면, 메모리 영역의 상태를 모니터링하는 스토리지 컨트롤러의 동작 방법이 설명된다. 스토리지 컨트롤러는 호스트 및 복수의 메모리 영역들과 통신할 수 있다.
S210 단계에서, 스토리지 컨트롤러는 복수의 메모리 영역들을 모니터링할 수 있다. 일부 실시 예들에서, S210 단계는 기준 시간마다 주기적으로 복수의 메모리 영역들 각각이 사용 가능 메모리 조건들을 만족하는지 여부를 결정하는 단계를 포함할 수 있다. 이 때, 사용 가능 메모리 조건들은 도 9의 사용 가능 메모리 조건들과 유사할 수 있다.
S215 단계에서, 스토리지 컨트롤러는 S210 단계의 모니터링에 기초하여 상태 정보 세트를 업데이트할 수 있다. 상태 정보 세트는 복수의 메모리 영역들에 각각 대응하는 복수의 상태 정보를 포함할 수 있다.
일부 실시 예들에서, 상태 정보는 대응하는 메모리 영역의 평균 소거 카운트, 대응하는 메모리 영역의 유효 페이지 카운트 비율, 대응하는 메모리 영역의 배드 블록의 개수, 대응하는 메모리 영역의 쓰기 증폭 인자, 및 대응하는 메모리 영역의 메모리 사용 비율 중 적어도 하나를 포함할 수 있다.
S220 단계에서, 스토리지 컨트롤러는 업데이트된 상태 정보 세트에 기초하여 복수의 메모리 영역들이 사용 가능한지 여부를 결정할 수 있다.
S230 단계에서, 스토리지 컨트롤러는 복수의 메모리 영역들 중 제1 메모리 영역이 사용 불가능함을 가리키는 모니터링 정보를 생성할 수 있다.
일부 실시 예들에서, 모니터링 정보는 복수의 메모리 영역들 중 사용 불가능한 메모리 영역의 정보, 사용 불가능한 메모리 영역이 사용 불가능한 이유, 복수의 메모리 영역들 중 사용 가능한 메모리 영역의 정보, 및 업데이트된 상태 정보 세트 중 적어도 하나를 포함할 수 있다.
S240 단계에서, 스토리지 컨트롤러는 모니터링 정보를 호스트로 출력할 수 있다. 일부 실시 예들에서, S240 단계에서, 스토리지 컨트롤러는 제2 메모리 영역이 사용 가능 메모리 조건들을 만족함을 가리키는 정보를 포함하는 모니터링 정보를 호스트로 출력할 수 있다. 스토리지 컨트롤러의 동작 방법은, S240 단계를 수행한 후, 호스트로부터 복수의 메모리 영역들 중 제2 메모리 영역에 대한 쓰기 요청을 수신하는 단계를 더 포함할 수 있다. 이 후, 스토리지 컨트롤러는 쓰기 요청에 기초하여 제2 메모리 영역에 쓰기 동작을 수행하고, 쓰기 동작에 기초하여 상태 정보 세트에 포함된 제2 메모리 영역의 상태 정보를 업데이트할 수 있다. 스토리지 컨트롤러는 호스트로부터 쓰기 동작에 대응하고 제2 메모리 영역의 정보를 포함하는 읽기 요청을 수신할 수 있다.
도 12는 본 개시에 따른 스토리지 장치가 적용된 SSD(Solid State Drive) 시스템의 블록도이다. 도 12를 참조하면, SSD 시스템(1000)은 호스트(1100) 및 스토리지 장치(1200)를 포함할 수 있다. 스토리지 장치(1200)는 신호 커넥터(1201)를 통해 호스트(1100)와 신호(SIG)를 주고 받고, 전원 커넥터(1202)를 통해 전원(PWR)을 수신할 수 있다.
스토리지 장치(1200)는 복수의 비-휘발성 메모리들(1211~121N), SSD 컨트롤러(1220), 보조 전원 장치(1230), 및 버퍼 메모리(1240)를 포함할 수 있다. SSD 컨트롤러(1220)는 도 1, 도 2, 도 4, 도 7, 및 도 8의 스토리지 컨트롤러(110)에 대응할 수 있다. SSD 컨트롤러(1220)는 도 10 및 도 11의 동작 방법을 수행할 수 있다. 복수의 비-휘발성 메모리들(1211~121N)은 도 1의 복수의 메모리 칩(MC)들에 대응하거나, 또는 도 4, 도 7, 및 도 8의 복수의 메모리 영역들(MR1~MRN)에 대응할 수 있다. 호스트(1100)는 도 1, 도 4, 도 7, 및 도 8의 호스트(11)에 대응할 수 있다.
SSD 컨트롤러(1220)는 호스트(1100)로부터 수신된 신호(SIG)에 응답하여 복수의 비-휘발성 메모리들(1211~121N)을 제어할 수 있다. 복수의 비-휘발성 메모리들(1211~121N)은 SSD 컨트롤러(1220)의 제어에 따라 동작할 수 있다.
일부 실시 예들에서, SSD 컨트롤러(1220)는 도 1 내지 도 11을 참조하여 설명된 스토리지 컨트롤러와 유사하게, 사용 불가능한 메모리 영역(예를 들어, 비-휘발성 메모리)에 대한 쓰기 요청을 리디렉션 하거나, 또는 주기적으로 메모리 영역의 상태를 모니터링하고 모니터링 정보를 호스트(1100)에 제공할 수 있다. 이에 따라, 데이터 처리의 실패가 억제되고, 메모리 영역의 마모가 억제되고, 데이터 처리 속도가 향상된 스토리지 장치(1200)가 제공될 수 있다.
보조 전원 장치(1230)는 전원 커넥터(1202)를 통해 호스트(1100)와 연결될 수 있다. 보조 전원 장치(1230)는 호스트(1100)로부터 전원(PWR)을 제공받고, 충전될 수 있다. 보조 전원 장치(1230)는 호스트(1100)로부터의 전원 공급이 원활하지 않으면, 스토리지 장치(1200)의 구동을 위한 전원을 제공할 수 있다. 버퍼 메모리(1240)는 스토리지 장치(1200)의 버퍼 메모리로서 사용될 수 있다.
상술된 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.

Claims (10)

  1. 호스트 및 복수의 플래시 메모리 영역들과 통신하는 스토리지 컨트롤러의 동작 방법에 있어서:
    상기 호스트로부터 상기 복수의 플래시 메모리 영역들 중 제1 플래시 메모리 영역에 대한 쓰기 요청을 수신하는 단계;
    상태 정보 세트에 기초하여 상기 제1 플래시 메모리 영역이 사용 불가능하다고 결정하는 단계;
    상기 복수의 플래시 메모리 영역들 중 상기 제1 플래시 메모리 영역 대신에 제2 플래시 메모리 영역이 선택되었음을 가리키는 리디렉션(redirection) 정보를 생성하는 단계;
    상기 리디렉션 정보에 기초하여 상기 제2 플래시 메모리 영역에 쓰기 동작을 수행하고, 상기 쓰기 동작에 기초하여 상기 상태 정보 세트에 포함된 상기 제2 플래시 메모리 영역의 상태 정보를 업데이트하는 단계하는 단계;
    상기 쓰기 요청의 쓰기 데이터가 상기 제2 플래시 메모리 영역에서 처리되었음을 가리키는 리디렉션 결과 정보를 상기 호스트로 출력하는 단계; 및
    상기 호스트로부터 상기 쓰기 데이터에 대응하고 상기 제2 플래시 메모리 영역의 정보를 포함하는 읽기 요청을 수신하는 단계를 포함하는 방법.
  2. 제 1 항에 있어서,
    상기 상태 정보 세트는 상기 복수의 플래시 메모리 영역들에 각각 대응하는 복수의 상태 정보를 포함하고, 상기 복수의 상태 정보는 각각:
    대응하는 플래시 메모리 영역의 평균 소거 카운트;
    상기 대응하는 플래시 메모리 영역의 유효 페이지 카운트 비율;
    상기 대응하는 플래시 메모리 영역의 배드 블록의 개수;
    상기 대응하는 플래시 메모리 영역의 쓰기 증폭 인자(WAF); 및
    상기 대응하는 플래시 메모리 영역의 메모리 사용 비율 중 적어도 하나를 포함하는 방법.
  3. 제 1 항에 있어서,
    상기 상태 정보 세트에 기초하여 상기 제1 플래시 메모리 영역이 사용 불가능하다고 결정하는 단계는:
    상기 제1 플래시 메모리 영역의 평균 소거 카운트에서 상기 복수의 플래시 메모리 영역들에 대한 복수의 평균 소거 카운트들의 최소 값을 감산한 값이 제1 임계 값보다 작지 않으면, 상기 제1 플래시 메모리 영역이 사용 불가능하다고 결정하는 단계를 포함하는 방법.
  4. 제 1 항에 있어서,
    상기 상태 정보 세트에 기초하여 상기 제1 플래시 메모리 영역이 사용 불가능하다고 결정하는 단계는:
    상기 제1 플래시 메모리 영역의 유효 페이지 카운트 비율이 상기 복수의 플래시 메모리 영역들에 대한 복수의 유효 페이지 카운트 비율들 중 최대 값보다 작지 않으면, 상기 제1 플래시 메모리 영역이 사용 불가능하다고 결정하는 단계를 포함하는 방법.
  5. 제 1 항에 있어서,
    상기 상태 정보 세트에 기초하여 상기 제1 플래시 메모리 영역이 사용 불가능하다고 결정하는 단계는:
    상기 제1 플래시 메모리 영역의 배드 블록의 개수가 상기 복수의 플래시 메모리 영역들에 대한 배드 블록들의 개수들 중 최대 값보다 작지 않으면, 상기 제1 플래시 메모리 영역이 사용 불가능하다고 결정하는 단계를 포함하는 방법.
  6. 제 1 항에 있어서,
    상기 상태 정보 세트에 기초하여 상기 제1 플래시 메모리 영역이 사용 불가능하다고 결정하는 단계는:
    상기 제1 플래시 메모리 영역의 쓰기 증폭 인자가 제2 임계 값보다 작지 않으면, 상기 제1 플래시 메모리 영역이 사용 불가능하다고 결정하는 단계를 포함하는 방법.
  7. 제 1 항에 있어서,
    상기 상태 정보 세트에 기초하여 상기 제1 플래시 메모리 영역이 사용 불가능하다고 결정하는 단계는:
    상기 제1 플래시 메모리 영역의 메모리 사용 비율이 제3 임계 값보다 작지 않으면, 상기 제1 플래시 메모리 영역이 사용 불가능하다고 결정하는 단계를 포함하는 방법.
  8. 제 1 항에 있어서,
    상기 리디렉션 결과 정보는:
    상기 복수의 플래시 메모리 영역들 중 리디렉션된 플래시 메모리 영역에 대응하는 논리 블록 어드레스;
    상기 쓰기 요청에 대응하는 플래시 메모리 영역의 정보;
    상기 리디렉션된 플래시 메모리 영역의 정보;
    리디렉션된 이유; 및
    상기 상태 정보 세트 중 적어도 하나를 포함하는 방법.
  9. 호스트 및 복수의 플래시 메모리 영역들과 통신하는 스토리지 컨트롤러의 동작 방법에 있어서:
    상기 복수의 플래시 메모리 영역들을 모니터링하는 단계;
    상기 모니터링에 기초하여 상태 정보 세트를 업데이트하는 단계로서, 상기 상태 정보 세트는 상기 복수의 플래시 메모리 영역들에 각각 대응하는 복수의 상태 정보를 포함하는 것;
    상기 업데이트된 상태 정보 세트에 기초하여 상기 복수의 플래시 메모리 영역들이 사용 가능한지 여부를 결정하는 단계;
    상기 복수의 플래시 메모리 영역들 중 제1 플래시 메모리 영역이 사용 불가능함을 가리키는 모니터링 정보를 생성하는 단계; 및
    상기 모니터링 정보를 상기 호스트로 출력하는 단계를 포함하는 방법.
  10. 제 9 항에 있어서,
    상기 모니터링 정보는:
    상기 복수의 플래시 메모리 영역들 중 사용 불가능한 플래시 메모리 영역의 정보;
    상기 사용 불가능한 플래시 메모리 영역이 사용 불가능한 이유;
    상기 복수의 플래시 메모리 영역들 중 사용 가능한 플래시 메모리 영역의 정보; 및
    상기 업데이트된 상태 정보 세트 중 적어도 하나를 포함하는 방법.
KR1020210027516A 2021-03-02 2021-03-02 쓰기 동작을 리디렉션하는 스토리지 컨트롤러 및 이의 동작 방법 KR20220124318A (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020210027516A KR20220124318A (ko) 2021-03-02 2021-03-02 쓰기 동작을 리디렉션하는 스토리지 컨트롤러 및 이의 동작 방법
EP21199809.1A EP4053704B1 (en) 2021-03-02 2021-09-29 Storage controller redirecting write operation and operating method thereof
US17/526,243 US11861192B2 (en) 2021-03-02 2021-11-15 Storage controller redirecting write operation and operating method thereof
CN202111404294.0A CN114995742A (zh) 2021-03-02 2021-11-24 重定向写入操作的存储控制器及其操作方法
US18/521,624 US20240094930A1 (en) 2021-03-02 2023-11-28 Storage Controller Redirecting Write Operation And Operating Method Thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210027516A KR20220124318A (ko) 2021-03-02 2021-03-02 쓰기 동작을 리디렉션하는 스토리지 컨트롤러 및 이의 동작 방법

Publications (1)

Publication Number Publication Date
KR20220124318A true KR20220124318A (ko) 2022-09-14

Family

ID=78073822

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210027516A KR20220124318A (ko) 2021-03-02 2021-03-02 쓰기 동작을 리디렉션하는 스토리지 컨트롤러 및 이의 동작 방법

Country Status (4)

Country Link
US (2) US11861192B2 (ko)
EP (1) EP4053704B1 (ko)
KR (1) KR20220124318A (ko)
CN (1) CN114995742A (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115202590B (zh) * 2022-09-15 2022-12-16 中电云数智科技有限公司 一种对固态硬盘ssd重定向数据的处理方法及装置
CN116884464B (zh) * 2023-09-06 2023-12-05 上海芯存天下电子科技有限公司 flash芯片的擦除方法、装置及flash芯片

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4575346B2 (ja) 2006-11-30 2010-11-04 株式会社東芝 メモリシステム
JP4461170B2 (ja) * 2007-12-28 2010-05-12 株式会社東芝 メモリシステム
JP2011048852A (ja) 2010-11-02 2011-03-10 Renesas Electronics Corp 不揮発性記憶システム
CN102623306B (zh) * 2012-03-23 2014-04-09 上海华力微电子有限公司 金属-多层绝缘体-金属电容器及其制造方法、集成电路
US9652376B2 (en) * 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US10379741B2 (en) * 2014-04-17 2019-08-13 Seagate Technology Llc Dynamic storage device region provisioning
JP6018725B2 (ja) * 2014-06-27 2016-11-02 華為技術有限公司Huawei Technologies Co.,Ltd. コントローラ、フラッシュメモリ装置及びデータをフラッシュメモリ装置に書き込む方法
US9836419B2 (en) 2014-09-15 2017-12-05 Microsoft Technology Licensing, Llc Efficient data movement within file system volumes
US10254998B2 (en) 2015-11-03 2019-04-09 Samsung Electronics Co., Ltd. Coordinated garbage collection of flash devices in a distributed storage system
KR20190026246A (ko) * 2017-09-04 2019-03-13 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US10459662B1 (en) 2017-09-27 2019-10-29 Amazon Technologies, Inc. Write failure handling for a memory controller to non-volatile memory
CN108763099B (zh) * 2018-04-18 2020-05-08 华为技术有限公司 系统的启动方法、装置、电子设备和存储介质
KR20200053204A (ko) 2018-11-08 2020-05-18 삼성전자주식회사 저장 장치, 저장 장치의 동작 방법 및 저장 장치를 제어하는 호스트의 동작 방법
US11204705B2 (en) 2019-03-05 2021-12-21 Western Digital Technologies, Inc. Retention-aware data tiering algorithm for hybrid storage arrays

Also Published As

Publication number Publication date
CN114995742A (zh) 2022-09-02
US20220283720A1 (en) 2022-09-08
EP4053704A1 (en) 2022-09-07
US11861192B2 (en) 2024-01-02
US20240094930A1 (en) 2024-03-21
EP4053704B1 (en) 2023-09-06

Similar Documents

Publication Publication Date Title
US10489082B2 (en) System and method for using host command data buffers as extended memory device volatile memory
CN109101434B (zh) 存储装置、存储系统及所述存储装置的操作方法
KR102533207B1 (ko) 데이터 저장 장치 및 동작 방법, 이를 포함하는 스토리지 시스템
US10902924B2 (en) Memory system varying pass voltage based on erase count of target memory block and operating method thereof
CN108694989B (zh) 存储设备及其坏块指派方法
US20240094930A1 (en) Storage Controller Redirecting Write Operation And Operating Method Thereof
CN109960466B (zh) 存储器系统及其操作方法
TWI716381B (zh) 資料處理系統
JP2023025687A (ja) メモリ装置およびその動作方法
CN109147854B (zh) 数据存储装置及其操作方法
US11961549B2 (en) Data storage device for refreshing data and operating method thereof
US20230036616A1 (en) Storage devices and operating methods of storage controllers
US11626183B2 (en) Method and storage system with a non-volatile bad block read cache using partial blocks
JP2019185842A (ja) 不揮発性メモリ装置及びその初期化情報を読み取る方法
KR20230094943A (ko) 저장 단편화를 정량화하고 성능 저하를 예측하기 위한 저장 시스템 및 방법
US11119938B2 (en) Apparatus and method to synchronize memory map between a storage device and host
CN113971983A (zh) 非易失性存储器件、操作方法、控制器以及存储设备
US20220188008A1 (en) Data storage apparatus and operation method thereof
US11450394B2 (en) Controller and operating method thereof
EP4336507A1 (en) Storage controller generating read voltages for soft decision decoding based on read information and decoding information, storage device including the same, and operating method thereof
US11487449B2 (en) Data storage device and method for enabling higher lane utilization in run time via device hints on workload patterns
US20240079073A1 (en) Storage controller generating read voltages for soft decision decoding based on read information and decoding information, storage device including the same, and operating method thereof
US11243718B2 (en) Data storage apparatus and operation method i'hereof
US20240028507A1 (en) Storage system and method of operating the storage system
KR20230018873A (ko) 메모리 시스템 및 그 동작 방법

Legal Events

Date Code Title Description
A201 Request for examination