KR102557992B1 - 메모리 컨트롤러, 저장 장치, 및 저장 장치의 동작 방법 - Google Patents

메모리 컨트롤러, 저장 장치, 및 저장 장치의 동작 방법 Download PDF

Info

Publication number
KR102557992B1
KR102557992B1 KR1020220059723A KR20220059723A KR102557992B1 KR 102557992 B1 KR102557992 B1 KR 102557992B1 KR 1020220059723 A KR1020220059723 A KR 1020220059723A KR 20220059723 A KR20220059723 A KR 20220059723A KR 102557992 B1 KR102557992 B1 KR 102557992B1
Authority
KR
South Korea
Prior art keywords
data
memory
range
pattern data
memory block
Prior art date
Application number
KR1020220059723A
Other languages
English (en)
Other versions
KR20230068266A (ko
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 CN202211286222.5A priority Critical patent/CN116107491A/zh
Priority to EP22203196.5A priority patent/EP4180937A1/en
Priority to US17/973,135 priority patent/US20230141682A1/en
Publication of KR20230068266A publication Critical patent/KR20230068266A/ko
Application granted granted Critical
Publication of KR102557992B1 publication Critical patent/KR102557992B1/ko

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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced 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/0626Reducing size or complexity of storage 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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
    • G06F2212/1036Life time enhancement

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)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

메모리 컨트롤러, 저장 장치, 및 저장 장치의 동작 방법이 개시된다. 본 개시의 기술적 사상에 따른 저장 장치는, 비휘발성 메모리, 및 쓰기 요청의 논리 어드레스에 대응되는 패턴 데이터를 기초로 데이터를 저장할 선택 메모리 블록을 선택하고, 선택 메모리 블록의 물리 어드레스, 데이터, 및 쓰기 커맨드를 비휘발성 메모리에 제공하는 메모리 컨트롤러를 포함한다.

Description

메모리 컨트롤러, 저장 장치, 및 저장 장치의 동작 방법{MEMORY CONTROLLER, STORAGE DEVICE, AND OPERATING METHOD OF STORAGE DEVICE}
본 개시의 기술적 사상은 전자 장치에 관한 것이며, 더욱 상세하게는 메모리 컨트롤러, 저장 장치, 및 저장 장치의 동작 방법에 관한 것이다.
최근에, 대용량, 고성능 저장 및 메모리 장치들에 대한 요구가 증가되고 있다. 예를 들어, 고화질 비디오 파일들과 같은 디지털 콘텐츠의 생성 및 소비는 엔터프라이즈 사용자들 및 대중을 위해 현존하는 저장 장치들에 고사양을 요구하고 있다. 추가로, 저장 장치들의 접근 시간들은 최근 전자 장치들에서 병목이 되고 있다.
최근에 개발되는 비휘발성 저장 장치들은 상당하게 향상된 접근 시간들을 갖는다. 이러한 비휘발성 저장 장치들은, 플래시 메모리 장치들, 상변화 랜덤 억세스 메모리(PRAM), 스핀-전송 토크 랜덤 억세스 메모리(STT-RAM), 및 저항성 랜덤 억세스 메모리(ReRAM)와 같은 것을 포함한다.
일부 솔리드 스테이트 저장 장치들은 상대적으로 제한된 쓰기 내구성을 갖는다. 따라서, 저장 장치들의 활용이 고화질 비디오들과 같은 대용량의 디지털 파일들의 급증(proliferation) 때문에 증가함에 따라, 급격하게 쓰기 내구성 한계들에 도달하는 이러한 최근에 개발된 저장 장치들의 가능성은 점점 더 증가될 것으로 예상된다.
이러한 비휘발성 메모리 저장 장치들의 수명 연장을 위하여, 웨어 레벨링 처리들 혹은 방법들은 모든 혹은 실질적으로 모든 가용의 메모리 블록들에 걸쳐 쓰기들을 분산 시키도록 종종 채용된다. 일반적으로, 웨어 레벨링 처리들 혹은 방법들은, 저장 장치에서 메모리 칩들 혹은 블록들의 사용을 모니터링 하고, 그리고 저장 장치에서 상대적으로 덜 사용된 블록들에 인커밍(incomming) 쓰기들 및 재쓰기들(rewrites)를 분배한다. 따라서, 일부 메모리 블록들에 쓰기들 및 재쓰기들의 모두가 반복적으로 수행되고, 나머지 메모리 블록들은 사용되지 않거나 덜 사용되게 하는 것 대신에(이는 반복적으로 사용된 메모리 블록들을 빠르게 만료시키고, 저장 장치의 저장 용량을 제한하는 결과를 초래한다), 웨어 레벨링 처리들 혹은 방법들은 메모리 장치의 수명을 연장시키기 위하여 모든 혹은 실질적으로 모든 가용 블록들에 걸쳐 쓰기들 혹은 재쓰기들을 분산시킨다. 따라서, 가용 메모리 블록들의 소수가 급격하게 쓰기 내구성 한계에 도달하고 사용할 수 없게 되는 것을 방지함으로써, 모든 혹은 실질적으로 모든 메모리 블록들이 골고루 사용되거나 활용되게 됨에 따라 저장 장치의 수명이 연장된다.
본 개시의 기술적 사상은, 데이터를 저장할 메모리 블록을 패턴 데이터에 따라 선택하는 메모리 컨트롤러, 저장 장치, 및 저장 장치의 동작 방법을 제공한다.
본 개시의 기술적 사상에 따른 저장 장치는, 복수의 메모리 블록들을 포함하도록 구성된 비휘발성 메모리, 및 쓰기 요청의 논리 어드레스에 대응되는 패턴 데이터를 기초로 복수의 메모리 블록들 중 데이터를 저장할 선택 메모리 블록을 선택하고, 선택 메모리 블록의 물리 어드레스, 데이터, 및 쓰기 커맨드를 비휘발성 메모리에 제공하도록 구성된 메모리 컨트롤러를 포함하고, 패턴 데이터는, 논리 어드레스에 대한 특성 파라미터의 값이 제1 범위에 포함되는 제1 횟수에 관한 제1 카운팅 정보와, 특성 파라미터의 값이 제1 범위와 다른 제2 범위에 포함되는 제2 횟수에 관한 제2 카운팅 정보를 포함한다.
또한, 본 개시의 기술적 사상에 따른 저장 장치의 동작 방법은, 호스트로부터 논리 어드레스 및 데이터를 수신하는 단계, 논리 어드레스에 대응되는 패턴 데이터를 확인하는 단계, 패턴 데이터를 기초로 복수의 메모리 블록들 중 데이터를 저장할 선택 메모리 블록을 선택하는 단계, 및 데이터를 선택 메모리 블록에 저장하는 단계를 포함하고, 패턴 데이터는, 논리 어드레스에 대한 특성 파라미터의 값이 제1 범위에 포함되는 제1 횟수에 관한 제1 카운팅 정보와, 특성 파라미터의 값이 제1 범위와 다른 제2 범위에 포함되는 제2횟수에 관한 제2 카운팅 정보를 포함한다.
또한, 본 개시의 기술적 사상에 따른 메모리 컨트롤러는, 호스트로부터 제공된 논리 어드레스에 대응되는 패턴 데이터를 저장하는 버퍼 메모리, 미리 설정된 초기 시점부터 시간을 카운팅하는 적어도 하나의 카운터, 및 초기 시점부터 논리 어드레스가 액세스되는 시점까지 카운터로부터 카운팅된 시간을 액세스 시간으로 획득하고, 획득된 액세스 시간을 기초로 패턴 데이터를 업데이트하고, 카운터를 초기 시점으로 초기화하는 플래시 변환 계층을 포함하고, 패턴 데이터는, 액세스 시간이 제1 범위에 포함되는 제1 횟수에 관한 제1 카운팅 정보와, 액세스 시간이 제1 범위와 다른 제2 범위에 포함되는 제2 횟수에 관한 제2 카운팅 정보를 포함한다.
또한, 본 개시의 기술적 사상에 따른 저장 장치는, 복수의 메모리 블록들을 포함하도록 구성된 비휘발성 메모리, 및 읽기 요청의 논리 어드레스가 액세스된 액세스 시간을 기초로 미리 저장된 패턴 데이터를 업데이트하고, 논리 어드레스에 대응되는 물리 어드레스 및 읽기 커맨드를 비휘발성 메모리에 제공하도록 구성된 메모리 컨트롤러를 포함하고, 패턴 데이터는, 액세스 시간이 제1 범위에 포함되는 제1 횟수에 관한 제1 카운팅 정보와, 액세스 시간이 제1 범위와 다른 제2 범위에 포함되는 제2 횟수에 관한 제2 카운팅 정보를 포함한다.
본 개시의 기술적 사상에 의하면, 데이터를 저장할 메모리 블록을 패턴 데이터에 따라 선택함으로써 메모리 블록 간의 웨어-아웃(wear-out) 정도를 고르게 분포하는 효과와 메모리 블록의 수명을 증가시키는 효과가 있다.
도 1은 본 개시의 일 실시예에 따른 스토리지 시스템을 설명하기 위한 도면이다.
도 2는 본 개시의 일 실시예에 따른 맵 데이터와 패턴 데이터를 설명하기 위한 도면이다.
도 3은 본 개시의 일 실시예에 따른 데이터를 저장하는 동작 방법을 설명하기 위한 도면이다.
도 4는 본 개시의 일 실시예에 따른 패턴 데이터를 확인하는 방법을 설명하기 위한 흐름도이다.
도 5는 본 개시의 일 실시예에 따른 패턴 데이터를 업데이트하는 방법을 설명하기 위한 흐름도이다.
도 6은 본 개시의 다른 실시예에 따른 패턴 데이터를 업데이트하는 방법을 설명하기 위한 흐름도이다.
도 7은 본 개시의 일 실시예에 따른 논리 어드레스의 액세스 시간을 카운팅하는 동작을 설명하기 위한 도면이다.
도 8은 본 개시의 일 실시예에 따른 메모리 블록에 데이터를 저장하는 방법을 설명하기 위한 흐름도이다.
도 9는 본 개시의 일 실시예에 따른 가비지 컬렉션 동작을 수행하는 방법을 설명하기 위한 흐름도이다.
도 10은 본 개시의 일 실시예에 따라 소스 메모리 블록에 저장된 데이터를 타겟 메모리 블록에 저장하는 동작을 설명하기 위한 도면이다.
도 11은 본 개시의 일 실시예에 따른 데이터를 리드하는 동작 방법을 설명하기 위한 도면이다.
도 12는 본 개시의 일 실시예에 따른 저장 장치가 적용된 전자 시스템을 도시한 도면이다.
도 13은 본 개시의 다른 실시예에 따른 스토리지 시스템을 나타내는 블록도이다.
도 14는 본 개시의 일 실시예에 따른 메모리 시스템을 나타내는 블록도이다.
도 15는 본 개시의 일 실시예에 따른 3D VNAND 구조를 설명하기 위한 도면이다.
이하, 첨부한 도면을 참조하여 본 개시의 실시예에 대해 상세히 설명한다.
도 1은 본 개시의 일 실시예에 따른 스토리지 시스템을 설명하기 위한 도면이다.
도 1을 참조하면, 스토리지 시스템(1)은 호스트(10) 및 저장 장치(100)를 포함할 수 있다.
호스트(10)는 인터페이스를 통하여 저장 장치(100)와 통신할 수 있다. 여기서, 인터페이스는, 예를 들면, NVMe, NVMe MI(Management Interface) 또는 NVMeof (NVMe Over Fabric)으로 구현될 수 있다.
일 실시예에서, 호스트(10)는 저장 장치(100)에 데이터를 저장할 것을 요청하는 쓰기 요청을 저장 장치(100)에 제공할 수 있다. 또한, 호스트(10)는 데이터를 식별하기 위한 논리 어드레스 및 데이터를 저장 장치(100)에 제공할 수 있다. 일 실시예에서, 논리 어드레스는 쓰기 요청에 포함될 수 있다.
저장 장치(100)는 호스트(10)의 쓰기 요청에 응답하여 데이터를 저장하기 위한 저장 매체들을 포함할 수 있다. 일 예로서, 저장 장치(100)는 SSD(Solid State Drive), 임베디드(embedded) 메모리 및 착탈 가능한 외장(external) 메모리 중 적어도 하나를 포함할 수 있다. 저장 장치(100)가 SSD인 경우, 저장 장치(100)는 NVMe(Non-Volatile Memory express) 표준(Specifications)을 따르는 장치일 수 있다. 저장 장치(100)가 임베디드 메모리 혹은 외장(external) 메모리인 경우, 저장 장치(100)는 UFS(universal flash storage) 혹은 eMMC(embedded multi-media card) 표준을 따르는 장치일 수 있다. 호스트(10)와 저장 장치(100)는 각각 채용된 표준 프로토콜에 따른 패킷을 생성하고 이를 전송할 수 있다.
저장 장치(100)는 메모리 컨트롤러(110) 및 비휘발성 메모리(120)를 포함할 수 있다.
메모리 컨트롤러(110)는 저장 장치(100)의 전반적인 동작을 제어할 수 있다. 메모리 컨트롤러(110)는 컨트롤러, 장치 컨트롤러 또는 스토리지 컨트롤러로 지칭될 수도 있다.
전원이 외부로부터 저장 장치(100)에 인가되면, 메모리 컨트롤러(110)는 펌웨어를 실행할 수 있다. 비휘발성 메모리(120)가 플래시 메모리 장치인 경우, 펌웨어는 호스트 인터페이스 레이어(Host Interface Layer: HIL), 플래시 변환 계층(Flash Translation Layer: FTL), 및 플래시 인터페이스 레이어(Flash Interface Layer: FIL)를 포함할 수 있다.
메모리 컨트롤러(110)는 호스트(200)의 쓰기 요청에 응답하여 프로그램 동작(또는 쓰기 동작)을 수행하도록 비휘발성 메모리(120)를 제어할 수 있다. 프로그램 동작 시, 메모리 컨트롤러(110)는 프로그램 커맨드(또는 쓰기 커맨드), 물리 어드레스, 및 데이터를 비휘발성 메모리(120)에 제공할 수 있다.
또는, 메모리 컨트롤러(110)는 호스트(200)의 읽기 요청에 응답하여 읽기 동작을 수행하도록 비휘발성 메모리(120)를 제어할 수 있다. 읽기 동작 시, 메모리 컨트롤러(110)는 읽기 커맨드 및 물리 어드레스를 비휘발성 메모리(120)에 제공할 수 있다.
또는, 메모리 컨트롤러(110)는 호스트(200)의 소거 요청에 응답하여 소거 동작을 수행하도록 비휘발성 메모리(120)를 제어할 수 있다. 소거 동작 시, 메모리 컨트롤러(110)는 소거 커맨드 및 물리 어드레스를 비휘발성 메모리(120)에 제공할 수 있다.
메모리 컨트롤러(110)는 호스트(200)로부터 제공된 요청과 무관하게 자체적으로 생성한 커맨드, 어드레스, 및 데이터를 비휘발성 메모리(120)에 전송할 수 있다. 예를 들면, 메모리 컨트롤러(110)는 배경 동작을 수행하기 위한 커맨드, 어드레스, 및 데이터를 생성하고, 커맨드, 어드레스, 및 데이터를 비휘발성 메모리(120)로 제공할 수 있다. 배경 동작은, 예를 들면, 웨어 레벨링(wear leveling), 리드 리클레임(read reclaim) 또는 가비지 컬렉션(garbage collection)일 수 있다.
일 실시예에서, 메모리 컨트롤러(110)는 쓰기 요청의 논리 어드레스에 대응되는 패턴 데이터(PD)를 기초로 선택 메모리 블록을 선택할 수 있다. 메모리 컨트롤러(110)는 선택 메모리 블록의 물리 어드레스, 데이터, 및 쓰기 커맨드를 비휘발성 메모리(120)에 제공할 수 있다. 선택 메모리 블록의 물리 어드레스, 데이터, 및 쓰기 커맨드는, 메모리 컨트롤러(110)와 비휘발성 메모리(120) 간의 인터페이스를 통해 전달될 수 있다. 여기서, 선택 메모리 블록은 호스트(10)로부터 제공된 데이터가 저장될 메모리 블록일 수 있다. 선택 메모리 블록은 비휘발성 메모리(120)에 포함된 복수의 메모리 블록들(121) 중에서 선택될 수 있다. 패턴 데이터(PD)는 논리 어드레스와 함께 제공되는 데이터의 패턴을 나타낼 수 있다. 패턴 데이터(PD)에 대한 설명은 도 2를 참조하여 후술한다.
다른 실시예에서, 메모리 컨트롤러(110)는, 읽기 요청의 논리 어드레스가 액세스된 액세스 시간을 기초로 미리 저장된 패턴 데이터를 업데이트할 수 있다. 그리고, 메모리 컨트롤러(110)는 논리 어드레스에 대응되는 물리 어드레스 및 읽기 커맨드를 비휘발성 메모리(120)에 제공할 수 있다.
메모리 컨트롤러(110)는 버퍼 메모리(111), 카운터(112), 패턴 생성기(113), 및 스케줄러(114)를 포함할 수 있다.
버퍼 메모리(111)는 패턴 데이터(PD)를 저장할 수 있다. 버퍼 메모리(111)는, 예를 들면, 휘발성 메모리로 구현될 수 있다. 휘발성 메모리는 전력을 공급받는 동안에만 메모리 컨트롤러(110)의 제어에 응답하여 동작할 수 있다. 구체적으로, 휘발성 메모리는 전력을 공급받는 동안에만 데이터를 임시 저장할 수 있다. 휘발성 메모리에는 DRAM(Dynamic random access memory: 동적 임의 접근 메모리), SRAM(Static random access memory: 정적 임의 접근 메모리) 등이 포함될 수 있다. 버퍼 메모리(111)는 도 1에 도시된 바와 같이 메모리 컨트롤러(110)에 포함될 수 있으나, 이에 한정되는 것은 아니다. 다른 실시예에서 버퍼 메모리(111)는 메모리 컨트롤러(110)의 외부에 배치될 수도 있다.
버퍼 메모리(111)는 맵 데이터를 더 저장할 수 있다. 맵 데이터는 논리 어드레스와 물리 어드레스가 간의 맵핑 관계를 나타내는 정보를 포함하는 데이터일 수 있다. 논리 어드레스와 물리 어드레스가 간의 맵핑 관계를 나타내는 정보는 맵 정보로 지칭될 수 있다.
카운터(112)는 미리 설정된 초기 시점부터 시간을 카운팅할 수 있다. 초기 시점은, 예를 들어, 0초일 수 있으나 이에 한정되는 것은 아니다. 카운터(112)는 일정한 주기, 주파수 및 듀티비를 갖는 클럭 신호를 토글링(toggling)함으로써 시간을 카운팅할 수 있다. 일 실시예에서, 카운터(112)는 복수 개일 수 있다. 카운터의 개수는 논리 어드레스의 개수에 대응될 수 있다. 복수의 카운터들 각각은 특정 논리 어드레스가 액세스되는 시간을 카운팅할 수 있다. 예를 들면, 제N 카운터는, 제M 논리 어드레스가 액세스되는 시간을 카운팅할 수 있다. 여기서, N 및 M은 자연수일 수 있다.
패턴 생성기(113)는 논리 어드레스에 대한 특성 파라미터의 값을 기초로 패턴 데이터를 생성할 수 있다. 여기서, 논리 어드레스에 대한 특성 파라미터의 값은, 예를 들면, 논리 어드레스가 액세스되는 시간, 논리 어드레스가 액세스되는 횟수, 및/또는 논리 어드레스에 대응되는 데이터의 크기(또는 청크 사이즈) 등을 포함할 수 있다. 구체적으로 예를 들면, 논리 어드레스에 대한 특성 파라미터의 값이 논리 어드레스가 액세스되는 시간인 경우, 패턴 생성기(113)는 논리 어드레스가 액세스되는 시간을 이용하여 패턴 데이터를 생성할 수 있다. 여기서, 논리 어드레스가 액세스되는 시점은 액세스 시점으로 지칭되고, 초기 시점부터 논리 어드레스가 액세스되는 시점까지 해당되는 시간은 액세스 시간으로 지칭될 수 있다.
패턴 생성기(113)는 패턴 데이터를 업데이트할 수도 있다. 예를 들면, 패턴 생성기(113)는 초기 시점부터 액세스 시점까지 카운터(112)로부터 카운팅된 시간을 액세스 시간으로 획득할 수 있다. 그리고, 패턴 생성기(1130)는 획득된 액세스 시간을 기초로 패턴 데이터를 업데이트할 수 있다. 그리고, 패턴 생성기(1130)는 카운터(112)를 초기 시점으로 초기화할 수 있다. 초기화된 카운터(112)는 초기 시점부터 카운팅할 수 있다.
스케줄러(114)는, 쓰기 동작이 수행되는 경우, 물리 어드레스, 데이터, 및 쓰기 커맨드를 출력할 수 있다. 또는, 스케줄러(114)는, 읽기 동작이 수행되는 경우, 스케줄러(114)는 물리 어드레스, 및 읽기 커맨드를 출력할 수 있다.
다른 실시예에서, 패턴 생성기(113) 및 스케줄러(114)는 플래시 변환 계층으로 구현될 수 있다.
비휘발성 메모리(120)는 메모리 컨트롤러(110)의 제어에 응답하여 동작할 수 있다. 구체적으로, 비휘발성 메모리(120)는 메모리 컨트롤러(110)로부터 커맨드 및 어드레스를 수신하고, 메모리 셀들(미도시) 중 어드레스에 의해 선택된 메모리 셀을 액세스할 수 있다. 비휘발성 메모리(120)는 어드레스에 의해 선택된 메모리 셀에 대해 커맨드가 지시하는 동작을 수행할 수 있다.
비휘발성 메모리(120)는, 예를 들어, 플래시 메모리(flash memory)일 수 있다. 플래시 메모리에는, 예를 들어 낸드 플래시 메모리(NAND flash memory), 노어 플래시 메모리(NOR flash memory) 등이 포함될 수 있다. 비휘발성 메모리(120)가 플래시 메모리를 포함할 때, 플래시 메모리는 2D NAND 메모리 어레이 또는 3D(또는 수직형, Vertical) NAND(VNAND) 메모리 어레이를 포함할 수 있다.
다른 실시예에서, 저장 장치(100)는 다른 다양한 종류의 비휘발성 메모리들을 포함할 수도 있다. 예를 들어, 저장 장치(100)는 MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torque MRAM), CBRAM(Conductive bridging RAM), FeRAM(Ferroelectric RAM), PRAM(Phase-change RAM) 및 다른 다양한 종류의 메모리를 포함할 수 있다.
비휘발성 메모리(120)는 복수의 메모리 블록들(121)을 포함할 수 있다. 복수의 메모리 블록들(121)은 적어도 하나의 유저 메모리 블록(UMB) 및 적어도 하나의 메타 메모리 블록(MMB)을 포함할 수 있다. 유저 메모리 블록(UMB)은 유저 데이터가 저장될 수 있는 메모리 블록일 수 있다. 유저 데이터는 호스트(10)로부터 제공된 데이터를 포함할 수 있다. 쓰기 동작이 수행될 경우, 유저 메모리 블록(UMB)이 선택 메모리 블록이 될 수 있다. 메타 메모리 블록(MMB)은 메타 데이터가 저장될 수 있는 메모리 블록일 수 있다. 메타 데이터는 유저 데이터에 대한 데이터일 수 있다.
일 실시예에서, 메타 데이터는 맵 정보, 무효 데이터 정보, 소거 카운트 정보, 등을 포함할 수 있다. 하지만, 이에 한정되는 것은 아니다. 맵 정보는 논리 어드레스와 물리 어드레스 간의 맵핑 관계를 가리키는 정보일 수 있다. 유효 판단 데이터 정보는 메모리 블록에 저장된 데이터의 유효(valid) 또는 무효(invalid) 여부를 가리키는 정보일 수 있다. 소거 카운트 정보는 메모리 블록의 소거 횟수를 가리키는 정보일 수 있다.
도 2는 본 개시의 일 실시예에 따른 맵 데이터와 패턴 데이터를 설명하기 위한 도면이다.
도 1 및 도 2를 참조하면, 버퍼 메모리(111)는 맵 테이블(200)을 저장할 수 있다. 맵 테이블(200)은 맵 데이터, 패턴 데이터, 및 유효 판단 데이터를 더 포함할 수 있다.
맵 데이터는 맵 정보를 포함할 수 있다. 예를 들면, 논리 어드레스 0(LBA 0)이 물리 어드레스 0(PBA 0)에 맵핑되고, 논리 어드레스 1(LBA 1)이 물리 어드레스 1(PBA 1)에 맵핑되고, 논리 어드레스 2(LBA 2)가 물리 어드레스 2(PBA 2)에 맵핑되며, 논리 어드레스 4(LBA 4)가 물리 어드레스 4(PBA 4)에 맵핑될 수 있다. 논리 어드레스 3(LBA 3)는 물리 어드레스에 맵핑되지 않은 것으로 가정한다.
유효 판단 데이터는 유효 판단 데이터 정보를 포함할 수 있다. 일 실시예에서, 유효 판단 데이터 정보는 하나의 비트 값으로 표현될 수 있다. 비트 값이 1인 경우 데이터가 유효하고, 비트 값이 0인 경우 데이터가 무효할 수 있다. 하지만, 이에 한정되는 것은 아니다.
패턴 데이터는 제1 카운팅 정보 내지 제K 카운팅 정보를 포함할 수 있다. 여기서, K는 2 이상의 정수일 수 있다. 도 2를 참조하여 예를 들면, 패턴 데이터는 제1 카운팅 정보 및 제2 카운팅 정보를 포함할 수 있다. 하지만, 이에 한정되는 것은 아니며, 3 이상의 카운팅 정보가 패턴 데이터에 포함될 수도 있다. 카운팅 정보가 많으면 많을수록, 패턴 데이터의 종류가 증가할 수 있다. 이하에서는 편의상 K는 2인 것으로 가정한다.
카운팅 정보는, 논리 어드레스에 대한 특성 파라미터의 값이 특정 범위에 포함되는 횟수에 관한 정보일 수 있다. 도 2를 참조하여 예를 들면, 제1 카운팅 정보는 제1 횟수에 관한 정보이고 제2 카운팅 정보는 제2 횟수에 관한 정보일 수 있다. 이때 제1 횟수는 특성 파라미터의 값이 제1 범위에 포함되는 횟수이고 제2 횟수는 특성 파라미터의 값이 제2 범위에 포함되는 횟수일 수 있다.
일 실시예에서 특성 파라미터가 액세스 시간인 경우, 제1 카운팅 정보의 제1 횟수는 액세스 시간이 제1 범위에 포함되는 횟수이고, 제2 카운팅 정보의 제2 횟수는 액세스 시간이 제2 범위에 포함되는 횟수일 수 있다. 액세스 시간은 논리 어드레스가 미리 설정된 초기 시점부터 액세스되는 액세스 시점까지 해당되는 기간(period)일 수 있다.
일 실시예에서, 제1 범위의 최댓값은 제2 범위의 최솟값 이하일 수 있다. 예를 들면, 제1 범위의 최댓값은 제2 범위의 최솟값과 같을 수 있다. 하지만, 이에 한정되는 것은 아니다.
일 실시예에서, 패턴 생성기(113)는, 논리 어드레스가 액세스될 때마다, 특성 파라미터의 값이 제1 범위 및 제2 범위 중 어느 범위에 포함되는지 여부를 확인하여, 패턴 데이터를 업데이트할 수 있다. 제1 횟수는 비트 값으로 맵 테이블(200)에 저장될 수 있다. 예를 들면, 제1 횟수가 10인 경우, 맵 테이블(200)에 1010b로 저장될 수 있다. 제2 횟수도 비트 값으로 맵 테이블(200)에 저장될 수 있다. 이 경우, 제1 횟수 및 제2 횟수 자체가 비트 값으로 저장되기 위한 비트 자리가 확보될 필요가 있다.
제1 횟수 및 제2 횟수 자체를 비트 값으로 저장하기 위한 비트 자리는 유한하다. 따라서, 저장 공간을 감소시킬 필요가 있다.
일 실시예에서, 제1 카운팅 정보는, 미리 설정된 제1 횟수 범위에 대응되는 제1 비트 값, 또는 미리 설정된 제2 횟수 범위에 대응되는 제2 비트 값을 포함할 수 있다. 그리고, 제1 횟수 범위의 최댓값은, 제2 횟수 범위의 최솟값보다 작을 수 있다. 예를 들어, 제1 횟수 범위는 0 내지 1000이고, 제2 횟수 범위는 1001 이상일 수 있다. 하지만, 이에 한정되는 것은 아니다. 예를 들어, 제1 비트 값은 0b이고, 제2 비트 값은 1b일 수 있다. 하지만, 이에 한정되는 것은 아니다. 예를 들면, 현재 논리 어드레스 0(LBA 0)이 액세스되고 논리 어드레스 0(LBA 0)의 액세스 시간이 제1 범위에 포함되면, 제1 횟수가 증가될 수 있다. 이 경우, 패턴 생성기(113)는, 증가된 제1 횟수가 제1 횟수 범위에 포함되면, 제1 카운팅 정보가 제1 비트 값을 포함하도록 패턴 데이터를 업데이트할 수 있다. 또는, 패턴 생성기(113)는, 증가된 제1 횟수가 제2 횟수 범위에 포함되면, 제1 카운팅 정보가 제2 비트 값을 포함하도록 패턴 데이터를 업데이트할 수 있다. 예를 들면, 논리 어드레스 0(LBA 0)의 제1 횟수가 500이고 제1 횟수 범위가 0 내지 1000이며 제1 비트 값이 0b인 경우, 논리 어드레스 0(LBA 0)에 대응되는 제1 카운팅 정보는 0b를 포함할 수 있다. 다른 예를 들면, 논리 어드레스 1(LBA 1)의 제1 횟수가 1002이고 제2 횟수 범위가 1001 이상이며 제2 비트 값이 1b인 경우, 논리 어드레스 1(LBA 1)에 대응되는 제1 카운팅 정보는 1b를 포함할 수 있다. 전술한 예시와 같이, 제1 카운팅 정보에서 비트 값이 0b에서 1b로 변경된다면, 이는 상대적으로 짧은 시간 내에 발생하는 논리 어드레스의 액세스가 빈번한 것이다. 이러한 데이터는 핫 데이터일 수 있다.
한편, 제2 카운팅 정보도, 제1 카운팅 정보와 동일하게, 미리 설정된 제1 횟수 범위에 대응되는 제1 비트 값, 또는 미리 설정된 제2 횟수 범위에 대응되는 제2 비트 값을 포함할 수 있다. 그리고, 제1 횟수 범위의 최댓값은, 제2 횟수 범위의 최솟값보다 작을 수 있다. 패턴 생성기(113)는, 증가된 제2 횟수가 제1 횟수 범위에 포함되면, 제2 카운팅 정보가 제1 비트 값을 포함하도록 패턴 데이터를 업데이트할 수 있다. 또는, 패턴 생성기(113)는, 증가된 제2 횟수가 제2 횟수 범위에 포함되면, 제2 카운팅 정보가 제2 비트 값을 포함하도록 패턴 데이터를 업데이트할 수 있다. 예를 들면, 논리 어드레스 0(LBA 0)의 액세스 시간이 제2 범위에 포함되는 것으로 가정한다. 이 경우, 논리 어드레스 0(LBA 0)의 제2 횟수가 1500이고 제2 횟수 범위가 1001 이상이며 제2 비트 값이 1b인 경우, 논리 어드레스 0(LBA 0)에 대응되는 제2 카운팅 정보는 1b를 포함할 수 있다. 전술한 예시와 같이, 제2 카운팅 정보에서 비트 값이 0b에서 1b로 변경된다면, 이는 상대적으로 긴 시간 내에 발생하는 논리 어드레스의 액세스가 빈번한 것이다. 이러한 데이터는 콜드 데이터일 수 있다.
물리 어드레스 0(PBA 0)을 갖는 유저 메모리 블록(예를 들어, 제1 유저 메모리 블록)에 저장된 데이터의 패턴은 {0b, 1b}이고, 물리 어드레스 1(PBA 1)을 갖는 유저 메모리 블록(예를 들어, 제2 유저 메모리 블록)에 저장된 데이터의 패턴은 {1b, 1b}이고, 물리 어드레스 2(PBA 2)를 갖는 유저 메모리 블록(예를 들어, 제3 유저 메모리 블록)에 저장된 데이터의 패턴은 {0b, 0b}이고, 물리 어드레스 4(PBA 4)를 갖는 유저 메모리 블록(예를 들어, 제4 유저 메모리 블록)에 저장된 데이터의 패턴은 {1b, 0b}일 수 있다. 여기서, 패턴들({0b, 0b}, {0b, 1b}, {1b, 0b}, {1b, 1b}) 중 패턴 {1b, 1b}의 데이터가 가장 많이 소거되거나 프로그램될 데이터이고, 패턴 {0b, 0b}의 데이터가 가장 적게 소거되거나 프로그램될 데이터일 수 있다. 제2 유저 메모리 블록의 소거 횟수가 가장 적고, 제3 유저 메모리 블록의 소거 횟수가 가장 많을 수 있다. 전술한 바에 의하면, 상대적으로 많이 소거되거나 프로그램될 데이터가 상대적으로 적은 소거 횟수를 갖는 메모리 블록에 저장될 수 있다. 따라서, 메모리 블록 간의 웨어-아웃(wear-out) 정도가 고르게 분포됨으로써 메모리 블록의 수명을 증가시키는 효과가 있다.
일 실시예에서, 카운팅 정보의 종류가 K개이고, 각 카운팅 정보가 i 자리의 비트를 포함하는 경우, 패턴 데이터의 경우의 수는 2^(K*i)개일 수 있다. 예를 들면, 제1 카운팅 정보 및 제2 카운팅 정보가 각각 1 자리의 비트를 포함하는 경우, 패턴 데이터는 {0b, 0b}, {0b, 1b}, {1b, 0b}, 또는 {1b, 1b}일 수 있고, 패턴 데이터의 경우의 수는 2^2(=4)개일 수 있다.
도 2에서는 제1 카운팅 정보 및 제2 카운팅 정보가 각각 한 자리의 비트로 표현될 수 있으나, 이에 한정되는 것은 아니며 두 자리 이상의 비트로도 표현 가능하다. 제1 카운팅 정보 및 제2 카운팅 정보가 두 자리 이상의 비트로 표현 가능한 경우, 횟수 범위의 개수도 더 많아지고, 이에 따라 패턴 데이터의 종류도 더욱 다양할 수 있다.
전술한 실시예에 따르면, 보다 적은 수의 비트 값으로 패턴 데이터를 저장함으로써, 패턴 데이터의 저장 용량을 감소시킬 수 있는 효과가 있다.
도 3은 본 개시의 일 실시예에 따른 데이터를 저장하는 동작 방법을 설명하기 위한 도면이다.
도 3을 참조하면, 단계 S100에서, 호스트(10)는 쓰기 요청을 저장 장치(100)에 전송할 수 있다. 쓰기 요청은 논리 어드레스를 포함할 수 있다. 그리고, 호스트(10)는 데이터를 저장 장치(100)에 전송할 수 있다.
단계 S110에서, 저장 장치(100)는 논리 어드레스 및 데이터를 수신할 수 있다.
단계 S120에서, 저장 장치(100)는 논리 어드레스에 대응되는 패턴 데이터를 확인할 수 있다.
단계 S130에서, 저장 장치(100)는 패턴 데이터를 기초로 복수의 메모리 블록들 중 선택 메모리 블록(예를 들어, 도 1에 도시된 유저 메모리 블록(UMB))을 선택할 수 있다.
단계 S140에서, 저장 장치(100)는 데이터를 해당 블록, 즉 선택 메모리 블록에 저장할 수 있다.
단계 S150에서, 저장 장치(100)는 완료 응답을 호스트(10)에 전송할 수 있다.
단계 S160에서, 저장 장치(100)는 가비지 컬렉션 동작을 수행할 수 있다. 실시예에 따라 가비지 컬렉션 동작은 가비지 컬렉션 이벤트가 필요한 경우에 수행될 수 있다. 가비지 컬렉션 이벤트는, 예를 들면, 복수의 메모리 블록들 중 프리 메모리 블록의 수가 미리 설정된 기준 개수 이하인 상태일 수 있다.
도 4는 본 개시의 일 실시예에 따른 패턴 데이터를 확인하는 방법을 설명하기 위한 흐름도이다.
도 1 및 도 4를 참조하면, 단계 S210에서, 메모리 컨트롤러(110)는 논리 어드레스를 기초로 특성 파라미터의 값을 획득할 수 있다. 예를 들면, 패턴 생성기(113)는, 논리 어드레스가 액세스될 때의 시간에 해당되는 액세스 시간을 획득할 수 있다.
단계 S220에서, 메모리 컨트롤러(110)는 특성 파라미터의 값을 기초로 패턴 데이터를 업데이트할 수 있다. 일 실시예에서, 패턴 생성기(113)는, 논리 어드레스가 액세스될 때마다, 특성 파라미터의 값을 기초로 패턴 데이터를 업데이트할 수 있다.
단계 S230에서, 메모리 컨트롤러(110)는 업데이트된 패턴 데이터를 저장할 수 있다. 예를 들면, 패턴 생성기(113)는 업데이트된 패턴 데이터를 버퍼 메모리(111)에 저장할 수 있다.
도 5는 본 개시의 일 실시예에 따른 패턴 데이터를 업데이트하는 방법을 설명하기 위한 흐름도이다.
도 4 및 도 5를 참조하면, 단계 S221에서, 메모리 컨트롤러(110)는 특성 파라미터의 값이 제1 범위에 포함되는지 판단할 수 있다. 다른 실시예에서는, 메모리 컨트롤러(110)는 특성 파라미터의 값이 제2 범위에 포함되는지 판단할 수도 있다. 또 다른 실시예에서는, 메모리 컨트롤러(110)는 특성 파라미터의 값이 제1 범위 및 제2 범위 중 어느 범위에 포함되는지 여부를 확인할 수도 있다. 일 실시예에서, 특성 파라미터는 호스트(10)로부터 제공된 데이터의 크기일 수 있다. 데이터의 크기는 데이터의 청크 사이즈(chunk size)로 지칭될 수 있다.
특성 파라미터의 값이 제1 범위에 포함되면(S221, 예), 단계 S222에서 메모리 컨트롤러(110)는 특성 파라미터의 값이 제1 범위에 포함되는 횟수(예를 들어, 전술한 제1 횟수)를 하나 증가시킬 수 있다.
특성 파라미터의 값이 제2 범위에 포함되면(S221, 아니오), 단계 S223에서 메모리 컨트롤러(110)는 특성 파라미터의 값이 제2 범위에 포함되는 횟수(예를 들어, 전술한 제2 횟수)를 하나 증가시킬 수 있다.
단계 S222 또는 단계 S223이 수행된 이후, 단계 S230이 수행될 수 있다.
도 5에 도시된 실시예는 패턴 데이터가 제1 카운팅 정보 및 제2 카운팅 정보를 포함하는 것을 가정한 것이다. 패턴 데이터가 제1 카운팅 정보 내지 제K 카운팅 정보를 포함하는 경우, 메모리 컨트롤러(110)는 특성 파라미터의 값이 제K 범위에 포함되는 횟수를 증가시킬 수 있다.
도 6은 본 개시의 다른 실시예에 따른 패턴 데이터를 업데이트하는 방법을 설명하기 위한 흐름도이다.
도 6에 도시된 실시예에서는, 특성 파라미터가 액세스 시간인 것을 가정한다. 액세스 시간은 미리 설정된 초기 시점부터 논리 어드레스가 액세스되는 시점(예를 들어, 액세스 시점)까지 해당되는 기간일 수 있다.
도 1 및 도 6을 참조하면, 단계 S310에서, 카운터(112)는 미리 설정된 초기 시점부터 시간을 카운팅할 수 있다. 일 실시예에서, 메모리 컨트롤러(110)는 복수의 카운터들을 포함할 수 있고, 복수의 카운터들은 초기 시점부터 시간을 카운팅할 수 있다.
단계 S320에서, 패턴 생성기(113)는, 초기 시점부터 액세스 시점까지 카운팅된 시간을 액세스 시간으로 획득할 수 있다. 도 1 및 도 2를 참조하여 예를 들면, 논리 어드레스 0(LBA 0) 및 논리 어드레스 1(LBA 1)이 각각 액세스된 경우, 패턴 생성기(113)는, 논리 어드레스 0(LBA 0)이 액세스되는 시간을 카운팅하는 하나의 카운터(예를 들면, 제1 카운터)와 논리 어드레스 1(LBA 1)이 액세스되는 시간을 카운팅하는 다른 하나의 카운터(예를 들면, 제2 카운터)로부터, 액세스 시간을 각각 획득할 수 있다.
단계 S330에서, 패턴 생성기(113)는, 액세스 시간이 제1 범위에 포함되는지 판단할 수 있다. 다른 실시예에서는, 패턴 생성기(113)는 획득된 액세스 시간이 제1 범위 및 제2 범위 중 어느 범위에 포함되는지 여부를 확인할 수도 있다.
획득된 액세스 시간이 제1 범위에 포함되면(S330, 예), 단계 S340에서 패턴 생성기(113)는, 획득된 액세스 시간이 제1 범위에 포함되는 횟수(예를 들어, 전술한 제1 횟수)를 하나 증가시킬 수 있다.
단계 S350에서, 패턴 생성기(113)는, 카운팅된 시간을 초기 시점으로 초기화할 수 있다. 도 1 및 도 2를 참조하여 예를 들면, 패턴 생성기(113)는 상술한 예시에서 지칭된 제1 카운터 및 제2 카운터를 초기화할 수 있다.
특성 파라미터의 값이 제2 범위에 포함되면(S330, 아니오), 단계 S360에서 메모리 컨트롤러(110)는 획득된 액세스 시간이 제2 범위에 포함되는 횟수(예를 들어, 전술한 제2 횟수)를 하나 증가시킬 수 있다.
도 7은 본 개시의 일 실시예에 따른 논리 어드레스의 액세스 시간을 카운팅하는 동작을 설명하기 위한 도면이다.
도 1, 도 2 및 도 7을 참조하면, 메모리 컨트롤러(110)는 복수의 카운터들을 포함할 수 있다. 이하에서는 편의상 카운터의 개수는 2개인 것으로 가정한다. 이 경우, 메모리 컨트롤러(110)는 제1 카운터(710) 및 제2 카운터(720)를 포함할 수 있다. 제1 카운터(710)는 제1 논리 어드레스가 액세스되는 시간을 카운팅할 수 있다. 제2 카운터(720)는 제2 논리 어드레스가 액세스되는 시간을 카운팅할 수 있다. 제1 논리 어드레스와 제2 논리 어드레스는 서로 다를 수 있다. 이하에서는 편의상 제1 논리 어드레스는 논리 어드레스 1(LBA 1)이고 제2 논리 어드레스는 논리 어드레스 2(LBA 2)인 것으로 가정한다.
제1 카운터(710) 및 제2 카운터(720)는, 각각 t0 시점부터 시간을 카운팅할 수 있다. 여기서, t0 시점은 초기 시점으로, 예를 들어 0초일 수 있으나 이에 한정되는 것은 아니다.
논리 어드레스 1(LBA 1)이 ta11 시점에서 액세스될 수 있다. 여기서, ta11 시점은 논리 어드레스 1(LBA 1)의 액세스 시점일 수 있다. t0 시점(예를 들면, 0초)부터 ta11 시점까지의 기간은 논리 어드레스 1(LBA 1)의 액세스 시간(AP11)일 수 있다. 패턴 생성기(113)는 제1 카운터(710)가 카운팅한 시간을 획득할 수 있다. 이 경우, 획득된 시간은 액세스 시간(AP11)일 수 있다. 패턴 생성기(113)는, 도 6을 참조하여 전술한 바와 같이, 획득된 액세스 시간(AP11)을 기초로 논리 어드레스 1(LBA 1)에 대응되는 패턴 데이터를 업데이트할 수 있다. 패턴 생성기(113)는 제1 카운터(710)를 초기화할 수 있다. 초기화된 제1 카운터(710)는 t0 시점(예를 들면, 0초)부터 시간을 카운팅할 수 있다.
논리 어드레스 1(LBA 1)이 ta12 시점에서 액세스될 수 있다. 여기서, ta12 시점은 논리 어드레스 1(LBA 1)의 액세스 시점일 수 있다. ta11 시점 이후 t0 시점(예를 들면, 0초)부터 ta12 시점까지의 기간은 논리 어드레스 1(LBA 1)의 액세스 시간(AP12)일 수 있다. 패턴 생성기(113)는 제1 카운터(710)로부터 액세스 시간(AP12)을 획득할 수 있다. 패턴 생성기(113)는, 도 6을 참조하여 전술한 바와 같이, 획득된 액세스 시간(AP12)을 기초로 논리 어드레스 1(LBA 1)에 대응되는 패턴 데이터를 업데이트할 수 있다. 패턴 생성기(113)는 제1 카운터(710)를 초기화할 수 있다. 초기화된 제1 카운터(710)는 t0 시점(예를 들면, 0초)부터 시간을 카운팅할 수 있다.
한편, 논리 어드레스 2(LBA 2)가 ta21 시점에서 액세스될 수 있다. 패턴 생성기(113)는 제2 카운터(720)로부터 액세스 시간(AP21)을 획득할 수 있다. 패턴 생성기(113)는, 도 6을 참조하여 전술한 바와 같이, 획득된 액세스 시간(AP21)을 기초로 논리 어드레스 2(LBA 2)에 대응되는 패턴 데이터를 업데이트할 수 있다. 패턴 생성기(113)는 제2 카운터(720)를 초기화할 수 있다. 초기화된 제2 카운터(720)는 t0 시점(예를 들면, 0초)부터 시간을 카운팅할 수 있다.
한편, 논리 어드레스 2(LBA 2)가 ta22 시점에서 액세스될 수 있다. 패턴 생성기(113)는 제2 카운터(720)로부터 액세스 시간(AP21)을 획득하고, 획득된 액세스 시간(AP21)을 기초로 논리 어드레스 2(LBA 2)에 대응되는 패턴 데이터를 업데이트하며, 제2 카운터(720)를 초기화할 수 있다.
도 8은 본 개시의 일 실시예에 따른 메모리 블록에 데이터를 저장하는 방법을 설명하기 위한 흐름도이다.
도 8을 참조하면, 단계 S410에서, 비휘발성 메모리(120)는 유저 메모리 블록들 및 메타 메모리 블록들을 포함할 수 있다. 그리고, 소거 카운트 정보를 포함하는 메타 데이터가 메타 메모리 블록들 각각에 저장될 수 있다. 메모리 컨트롤러(110)는, 선택 메모리 블록으로 선택된 유저 메모리 블록이 오픈 됐는지 여부를 확인할 수 있다.
유저 메모리 블록이 클로즈된(closed) 경우(단계 S410, 아니오), 메모리 컨트롤러(110)는 패턴 데이터 및 소거 카운트 정보를 기초로 유저 메모리 블록들 중 어느 하나의 유저 메모리 블록을 오픈할 수 있다. 도 2를 참조하여 구체적으로 예를 들면, 논리 어드레스 3(LBA 3)이 액세스되고, 제1 횟수 범위의 최댓값은 제2 횟수 범위의 최솟값보다 작고, 제1 비트 값은 0b이며, 제2 비트 값은 1b인 것으로 가정한다. 이 경우, 논리 어드레스 3(LBA 3)에 대응되는 물리 어드레스가 현재 언맵핑되어 있으므로, 논리 어드레스 3(LBA 3)에 대응되는 물리 어드레스를 갖는 유저 메모리 블록이 클로즈될 수 있다. 논리 어드레스 3(LBA 3)에 대응되는 패턴 데이터의 패턴은 {1b, 1b}이므로, 메모리 컨트롤러(110)는 제2 유저 메모리 블록의 소거 횟수와 동일한 소거 횟수를 갖는 유저 메모리 블록을 오픈할 수 있다. 만약, 논리 어드레스 3(LBA 3)에 대응되는 패턴 데이터의 패턴이 {1b, 0b}이면, 제4 유저 메모리 블록의 소거 횟수와 동일한 소거 횟수를 갖는 유저 메모리 블록을 오픈할 수 있다. 즉, 메모리 컨트롤러(110)는, 제1 패턴 데이터에 대하여 제1 소거 횟수를 갖는 유저 메모리 블록을 오픈하거나 제2 패턴 데이터에 대하여 제2 소거 횟수를 갖는 유저 메모리 블록을 오픈할 수 있다. 하지만, 이에 한정되는 것은 아니다.
단계 S430에서, 메모리 컨트롤러(110)는 오픈된 유저 메모리 블록의 물리 어드레스를 논리 어드레스에 맵핑할 수 있다. 도 2를 참조하여 예를 들면, 메모리 컨트롤러(110)는 오픈된 유저 메모리 블록의 물리 어드레스를 논리 어드레스 3(LBA 3)와 맵핑할 수 있다. 이처럼, 메모리 컨트롤러(110)는 오픈된 유저 메모리 블록의 물리 어드레스를 논리 어드레스에 맵핑함으로써 오픈된 유저 메모리 블록을 선택 메모리 블록으로 선택할 수 있다.
단계 S440에서, 메모리 컨트롤러(110)는 데이터를 저장할 수 있다. 구체적으로, 메모리 컨트롤러(110)는 단계 S430에서 맵핑된 물리 어드레스, 쓰기 커맨드, 및 데이터를 비휘발성 메모리(120)에 제공할 수 있다.
도 9는 본 개시의 일 실시예에 따른 가비지 컬렉션 동작을 수행하는 방법을 설명하기 위한 흐름도이다.
도 9를 참조하면, 단계 S161에서, 복수의 메모리 블록들 중 프리 메모리 블록의 개수가 미리 설정된 기준 개수보다 작은 경우, 가비지 컬렉션 동작이 시작될 수 있다. 가비지 컬렉션 동작이 시작되면, 메모리 컨트롤러(110)는 유효 데이터가 가장 적게 저장된 적어도 하나의 메모리 블록을 소스 메모리 블록으로 선택할 수 있다. 소스 메모리 블록의 개수는 적어도 하나일 수 있다.
단계 S162에서, 메모리 컨트롤러(110)는, 소스 메모리 블록에 저장된 유효 데이터에 대응되는 패턴 데이터를 기초로, 적어도 하나의 타겟 메모리 블록을 선택할 수 있다. 타겟 메모리 블록은 소스 메모리 블록의 수만큼 선택될 수 있다. 예를 들면, 소스 메모리 블록이 1개 선택되면, 타겟 메모리 블록도 1개 선택될 수 있다. 소스 메모리 블록에 저장된 유효 데이터의 패턴 데이터는 동일하고, 타겟 메모리 블록에 저장된 유효 데이터의 패턴 데이터도 동일할 수 있다.
단계 S163에서, 선택 메모리 블록에 저장된 유효 데이터가 타겟 메모리 블록에 저장될 수 있다. 구체적으로 예를 들면, 메모리 컨트롤러(110)는, 유효 데이터를 적어도 하나의 타겟 메모리 블록에 저장하도록 비휘발성 메모리(120)를 제어할 수 있다.
단계 S164에서, 메모리 컨트롤러(110)는, 선택 메모리 블록에 저장된 데이터를 무효로 처리할 수 있다.
도 10은 본 개시의 일 실시예에 따라 소스 메모리 블록에 저장된 데이터를 타겟 메모리 블록에 저장하는 동작을 설명하기 위한 도면이다.
도 10을 참조하면, 소스 메모리 블록(SMB)에서 복수의 유효 데이터(DATA 1, DATA 2, DATA 3, DATA 4, DATA 5, DATA 6, DATA 7)와 복수의 무효 데이터(Invalid)가 저장될 수 있다. 복수의 유효 데이터(DATA 1, DATA 2, DATA 3, DATA 4, DATA 5, DATA 6, DATA 7) 각각의 패턴 데이터는 서로 동일할 수 있다.
복수의 유효 데이터(DATA 1, DATA 2, DATA 3, DATA 4, DATA 5, DATA 6, DATA 7)는 타겟 메모리 블록(TMB)에 복사(copy)될 수 있다. 그리고, 소스 메모리 블록(SMB)에 저장된 데이터는 무효로 처리될 수 있다.
소거 동작은 메모리 블록 단위로 수행될 수 있다. 소스 메모리 블록(SMB)에 저장된 데이터는 블록 단위로 소거될 수 있다.
도 11은 본 개시의 일 실시예에 따른 데이터를 리드하는 동작 방법을 설명하기 위한 도면이다.
도 1 및 도 11을 참조하면, 단계 S500에서, 호스트(10)는 읽기 요청을 저장 장치(100)에 제공할 수 있다.
단계 S510에서, 저장 장치(100)는 논리 어드레스를 수신할 수 있다.
단계 S520에서 저장 장치(100)는 논리 어드레스에 대응되는 패턴 데이터를 확인할 수 있다. 일 실시예에서, 저장 장치(100)에 포함된 메모리 컨트롤러(110)는 읽기 요청의 논리 어드레스가 액세스된 액세스 시간을 기초로 미리 저장된 패턴 데이터를 업데이트할 수 있다. 패턴 데이터를 업데이트하는 실시예는 도 4 내지 도 6을 참조하여 전술한 바와 같다.
단계 S530에서, 저장 장치(100)는 선택 메모리 블록에 저장된 데이터를 리드할 수 있다. 선택 메모리 블록은, 논리 어드레스에 맵핑된 물리 어드레스를 갖는 메모리 블록일 수 있다. 구체적으로 예를 들면, 메모리 컨트롤러(110)는 논리 어드레스에 대응되는 물리 어드레스 및 읽기 커맨드를 비휘발성 메모리(120)에 제공할 수 있다.
단계 S540에서, 저장 장치(100)는 리드 데이터를 호스트(10)에 전송할 수 있다.
전술한 실시예에 의하면, 리드 동작에서도 패턴 데이터를 확인 및 업데이트함으로써 패턴 데이터를 더욱 정확히 확인할 수 있는 효과가 있다.
도 12는 본 개시의 일 실시예에 따른 저장 장치가 적용된 전자 시스템을 도시한 도면이다.
도 12를 참조하면, 전자 시스템(1000)은 기본적으로 휴대용 통신 단말기(mobile phone), 스마트폰(smart phone), 태블릿 PC(tablet personal computer), 웨어러블 기기, 헬스케어 기기 또는 IOT(internet of things) 기기와 같은 모바일(mobile) 시스템일 수 있다. 하지만 전자 시스템(1000)은 반드시 모바일 시스템에 한정되는 것은 아니고, 개인용 컴퓨터(personal computer), 랩탑(laptop) 컴퓨터, 서버(server), 미디어 재생기(media player) 또는 내비게이션(navigation)과 같은 차량용 장비(automotive device) 등이 될 수도 있다.
전자 시스템(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 및/또는 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)와 같은 표준 규약이 적용되는 장치일 수 있으나, 반드시 이에 한정되는 건 아니다.
촬영 장치(1410)는 정지 영상 또는 동영상을 촬영할 수 있으며, 카메라(camera), 캠코더(camcorder) 및/또는 웹캠(webcam) 등일 수 있다. 사용자 입력 장치(1420)는 전자 시스템(1000)의 사용자로부터 입력된 다양한 유형의 데이터를 수신할 수 있으며, 터치 패드(touch pad), 키패드(keypad), 키보드(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) 카드 인터페이스 등과 같은 다양한 인터페이스 방식으로 구현될 수 있다.
도 13은 본 개시의 다른 실시예에 따른 스토리지 시스템을 나타내는 블록도이다.
도 13을 참조하면, 호스트-스토리지 시스템(2000)은 호스트(2100) 및 스토리지 장치(2200)를 포함할 수 있다. 또한, 스토리지 장치(2200)는 스토리지 컨트롤러(2210) 및 비휘발성 메모리(NVM)(2220)를 포함할 수 있다. 또한, 본 발명의 예시적인 실시예에 따라, 호스트(2100)는 호스트 컨트롤러(2110) 및 호스트 메모리(2120)를 포함할 수 있다. 호스트 메모리(2120)는 스토리지 장치(2200)로 전송될 데이터, 혹은 스토리지 장치(2200)로부터 전송된 데이터를 임시로 저장하기 위한 버퍼 메모리로서 기능할 수 있다.
스토리지 장치(2200)는 호스트(2100)로부터의 요청에 따라 데이터를 저장하기 위한 저장 매체들을 포함할 수 있다. 일 예로서, 스토리지 장치(2200)는 SSD(Solid State Drive), 임베디드(embedded) 메모리 및 탈착 가능한 외장(external) 메모리 중 적어도 하나를 포함할 수 있다. 스토리지 장치(2200)가 SSD인 경우, 스토리지 장치(2200)는 NVMe(non-volatile memory express) 표준을 따르는 장치일 수 있다. 스토리지 장치(2200)가 임베디드 메모리 혹은 외장(external) 메모리인 경우, 스토리지 장치(2200)는 UFS(universal flash storage) 혹은 eMMC(embedded multi-media card) 표준을 따르는 장치일 수 있다. 호스트(2100)와 스토리지 장치(2200)는 각각 채용된 표준 프로토콜에 따른 패킷을 생성하고 이를 전송할 수 있다.
스토리지 장치(2200)의 비휘발성 메모리(2220)가 플래시 메모리를 포함할 때, 플래시 메모리는 2D NAND 메모리 어레이나 3D(또는 수직형, Vertical) NAND(VNAND) 메모리 어레이를 포함할 수 있다. 다른 예로서, 스토리지 장치(2200)는 다른 다양한 종류의 비휘발성 메모리들을 포함할 수도 있다. 예를 들어, 스토리지 장치(2200)는 MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torgue MRAM), Conductive bridging RAM(CBRAM), FeRAM(Ferroelectric RAM), PRAM(Phase RAM), 저항 메모리(Resistive RAM) 및 다른 다양한 종류의 메모리가 적용될 수 있다.
일 실시예에 따라, 호스트 컨트롤러(2110)와 호스트 메모리(2120)는 별도의 반도체 칩으로 구현될 수 있다. 또는, 일부 실시예들에서, 호스트 컨트롤러(2110)와 호스트 메모리(2120)는 동일한 반도체 칩에 집적될 수 있다. 일 예로서, 호스트 컨트롤러(2110)는 애플리케이션 프로세서(Application Processor)에 구비되는 다수의 모듈들 중 어느 하나일 수 있으며, 애플리케이션 프로세서는 시스템 온 칩(System on Chip, SoC)으로 구현될 수 있다. 또한, 호스트 메모리(2120)는 애플리케이션 프로세서 내에 구비되는 임베디드 메모리이거나, 또는 애플리케이션 프로세서의 외부에 배치되는 비휘발성 메모리 또는 메모리 모듈일 수 있다.
호스트 컨트롤러(2110)는 호스트 메모리(2120)의 버퍼 영역의 데이터(예컨대, 라이트(Write) 데이터)를 비휘발성 메모리(2220)에 저장하거나, 비휘발성 메모리(2220)의 데이터(예컨대, 리드(Read) 데이터)를 버퍼 영역에 저장하는 동작을 관리할 수 있다.
스토리지 컨트롤러(2210)는 호스트 인터페이스(2211), 메모리 인터페이스(2212) 및 CPU(central processing unit)(2213)를 포함할 수 있다. 또한, 스토리지 컨트롤러(2210)는 플래시 변환 계층(Flash Translation Layer; FTL)(2214), 패킷 매니저(2215), 버퍼 메모리(2216), ECC(error correction code)(2217) 엔진 및 AES(advanced encryption standard) 엔진(2218)을 더 포함할 수 있다. 스토리지 컨트롤러(2210)는 플래시 변환 계층(FTL)(2214)가 로딩되는 워킹 메모리(미도시)를 더 포함할 수 있으며, CPU(2213)가 플래시 변환 계층을 실행하는 것에 의해 비휘발성 메모리(2220)에 대한 쓰기 동작 및 읽기 동작이 제어될 수 있다.
호스트 인터페이스(2211)는 호스트(2100)와 패킷(packet)을 송수신할 수 있다. 호스트(2100)로부터 호스트 인터페이스(2211)로 전송되는 패킷은 커맨드(command) 혹은 비휘발성 메모리(2220)에 저장될 데이터 등을 포함할 수 있으며, 호스트 인터페이스(2211)로부터 호스트(2100)로 전송되는 패킷은 커맨드에 대한 응답(response) 혹은 비휘발성 메모리(2220)로부터 리드된 데이터 등을 포함할 수 있다. 메모리 인터페이스(2212)는 비휘발성 메모리(2220)에 저장될 데이터를 비휘발성 메모리(2220)로 송신하거나, 비휘발성 메모리(2220)로부터 리드된 데이터를 수신할 수 있다. 이러한 메모리 인터페이스(2212)는 토글(Toggle) 혹은 온파이(Open NAND Flash Interface; ONFI)와 같은 표준 규약을 준수하도록 구현될 수 있다.
플래시 변환 계층(2214)은 어드레스 매핑(address mapping), 웨어-레벨링(wear-leveling), 가비지 콜렉션(garbage collection)과 같은 여러 기능을 수행할 수 있다. 어드레스 매핑 동작은 호스트(2100)로부터 수신한 논리 어드레스(logical address)를, 비휘발성 메모리(2220) 내에 데이터를 실제로 저장하는 데 사용되는 물리 어드레스(physical address)로 바꾸는 동작이다. 웨어-레벨링은 비휘발성 메모리(2220) 내의 블록(block)들이 균일하게 사용되도록 하여 특정 블록의 과도한 열화를 방지하기 위한 기술로, 예시적으로 물리 블록(physical block)들의 소거 카운트들을 밸런싱하는 펌웨어 기술을 통해 구현될 수 있다. 가비지 콜렉션은, 블록의 유효 데이터를 새 블록에 복사한 후 기존 블록을 소거(erase)하는 방식을 통해 비휘발성 메모리(2220) 내에서 사용 가능한 용량을 확보하기 위한 기술이다.
패킷 매니저(2215)는 호스트(2100)와 협의된 인터페이스의 프로토콜에 따른 패킷(Packet)을 생성하거나, 호스트(2100)로부터 수신된 패킷(Packet)으로부터 각종 정보를 파싱할 수 있다. 또한, 버퍼 메모리(2216)는 비휘발성 메모리(2220)에 저장될 데이터 혹은 비휘발성 메모리(2220)로부터 리드될 데이터를 임시로 저장할 수 있다. 버퍼 메모리(2216)는 스토리지 컨트롤러(2210) 내에 구비되는 구성일 수 있으나, 스토리지 컨트롤러(2210)의 외부에 배치되어도 무방하다.
ECC 엔진(2217)은 비휘발성 메모리(2220)로부터 리드되는 리드 데이터에 대한 오류 검출 및 정정 기능을 수행할 수 있다. 보다 구체적으로, ECC 엔진(2217)은 비휘발성 메모리(2220)에 저장될 라이트 데이터에 대하여 패리티 비트(parity bit)들을 생성할 수 있으며, 이와 같이 생성된 패리티 비트들은 라이트 데이터와 함께 비휘발성 메모리(2220) 내에 저장될 수 있다. 비휘발성 메모리(2220)로부터의 데이터 리드 시, ECC 엔진(2217)은 리드 데이터와 함께 비휘발성 메모리(2220)로부터 리드되는 패리티 비트들을 이용하여 리드 데이터의 에러를 정정하고, 에러가 정정된 리드 데이터를 출력할 수 있다.
AES 엔진(2218)은, 스토리지 컨트롤러(2210)로 입력되는 데이터에 대한 암호화(encryption) 동작과 복호화(decryption) 동작 중 적어도 하나를, 대칭 키 알고리즘(symmetric-key algorithm)를 이용하여 수행할 수 있다.
도 14는 본 개시의 일 실시예에 따른 메모리 시스템을 나타내는 블록도이다.
도 14를 참조하면, 메모리 시스템(3000)은 메모리 장치(3200) 및 메모리 컨트롤러(3100)를 포함할 수 있다. 메모리 장치(3200)는 복수의 채널들 중 하나를 기반으로 메모리 컨트롤러(3100)와 통신하는 비휘발성 메모리 장치들 중 하나에 대응할 수 있다.
메모리 장치(3200)는 제1 내지 제8 핀들(P11~P18), 메모리 인터페이스 회로(3210), 제어 로직 회로(3220), 및 메모리 셀 어레이(3230)를 포함할 수 있다. 메모리 인터페이스 회로(3210)는 제1 핀(P11)을 통해 메모리 컨트롤러(3100)로부터 칩 인에이블 신호(nCE)를 수신할 수 있다. 메모리 인터페이스 회로(3210)는 칩 인에이블 신호(nCE)에 따라 제2 내지 제8 핀들(P12~P18)을 통해 메모리 컨트롤러(3100)와 신호들을 송수신할 수 있다. 예를 들어, 칩 인에이블 신호(nCE)가 인에이블 상태(예를 들어, 로우 레벨)인 경우, 메모리 인터페이스 회로(3310)는 제2 내지 제8 핀들(P12~P18)을 통해 메모리 컨트롤러(3100)와 신호들을 송수신할 수 있다.
메모리 인터페이스 회로(3210)는 제2 내지 제4 핀들(P12~P14)을 통해 메모리 컨트롤러(3100)로부터 커맨드 래치 인에이블 신호(CLE), 어드레스 래치 인에이블 신호(ALE), 및 쓰기 인에이블 신호(nWE)를 수신할 수 있다. 메모리 인터페이스 회로(3210)는 제7 핀(P17)을 통해 메모리 컨트롤러(3100)로부터 데이터 신호(DQ)를 수신하거나, 메모리 컨트롤러(3100)로 데이터 신호(DQ)를 전송할 수 있다. 데이터 신호(DQ)를 통해 커맨드(CMD), 어드레스(ADDR), 및 데이터(DATA)가 전달될 수 있다. 예를 들어, 데이터 신호(DQ)는 복수의 데이터 신호 라인들을 통해 전달될 수 있다. 이 경우, 제7 핀(P17)은 복수의 데이터 신호들에 대응하는 복수개의 핀들을 포함할 수 있다.
메모리 인터페이스 회로(3210)는 쓰기 인에이블 신호(nWE)의 토글 타이밍들에 기초하여 커맨드 래치 인에이블 신호(CLE)의 인에이블 구간(예를 들어, 하이 레벨 상태)에서 수신되는 데이터 신호(DQ)로부터 커맨드(CMD)를 획득할 수 있다. 메모리 인터페이스 회로(3210)는 쓰기 인에이블 신호(nWE)의 토글 타이밍들에 기초하여 어드레스 래치 인에이블 신호(ALE)의 인에이블 구간(예를 들어, 하이 레벨 상태)에서 수신되는 데이터 신호(DQ)로부터 어드레스(ADDR)를 획득할 수 있다.
예시적인 실시 예에서, 쓰기 인에이블 신호(nWE)는 고정된(static) 상태(예를 들어, 하이(high) 레벨 또는 로우(low) 레벨)를 유지하다가 하이 레벨과 로우 레벨 사이에서 토글할 수 있다. 예를 들어, 쓰기 인에이블 신호(nWE)는 커맨드(CMD) 또는 어드레스(ADDR)가 전송되는 구간에서 토글할 수 있다. 이에 따라, 메모리 인터페이스 회로(3210)는 쓰기 인에이블 신호(nWE)의 토글 타이밍들에 기초하여 커맨드(CMD) 또는 어드레스(ADDR)를 획득할 수 있다.
메모리 인터페이스 회로(3210)는 제5 핀(P15)을 통해 메모리 컨트롤러(3100)로부터 읽기 인에이블 신호(nRE)를 수신할 수 있다. 메모리 인터페이스 회로(3210)는 제6 핀(P16)을 통해 메모리 컨트롤러(3100)로부터 데이터 스트로브 신호(DQS)를 수신하거나, 메모리 컨트롤러(3100)로 데이터 스트로브 신호(DQS)를 전송 가능하다.
메모리 장치(3200)의 데이터(DATA) 출력 동작에서, 메모리 인터페이스 회로(3210)는 데이터(DATA)를 출력하기 전에 제5 핀(P15)을 통해 토글하는 읽기 인에이블 신호(nRE)를 수신할 수 있다. 메모리 인터페이스 회로(3210)는 읽기 인에이블 신호(nRE)의 토글링에 기초하여 토글하는 데이터 스트로브 신호(DQS)를 생성할 수 있다. 예를 들어, 메모리 인터페이스 회로(3210)는 읽기 인에이블 신호(nRE)의 토글링 시작 시간을 기준으로 미리 정해진 딜레이(예를 들어, tDQSRE) 이후에 토글하기 시작하는 데이터 스트로브 신호(DQS)를 생성할 수 있다. 메모리 인터페이스 회로(310)는 데이터 스트로브 신호(DQS)의 토글 타이밍에 기초하여 데이터(DATA)를 포함하는 데이터 신호(DQ)를 전송할 수 있다. 이에 따라, 데이터(DATA)는 데이터 스트로브 신호(DQS)의 토글 타이밍에 정렬되어 메모리 컨트롤러(3100)로 전송될 수 있다.
메모리 장치(3200)의 데이터(DATA) 입력 동작에서, 메모리 컨트롤러(3100)로부터 데이터(DATA)를 포함하는 데이터 신호(DQ)이 수신되는 경우, 메모리 인터페이스 회로(3210)는 메모리 컨트롤러(3100)로부터 데이터(DATA)와 함께 토글하는 데이터 스트로브 신호(DQS)를 수신할 수 있다. 메모리 인터페이스 회로(3210)는 데이터 스트로브 신호(DQS)의 토글 타이밍에 기초하여 데이터 신호(DQ)로부터 데이터(DATA)를 획득할 수 있다. 예를 들어, 메모리 인터페이스 회로(3210)는 데이터 스트로브 신호(DQS)의 상승 에지 및 하강 에지에서 데이터 신호(DQ)를 샘플링함으로써 데이터(DATA)를 획득할 수 있다.
메모리 인터페이스 회로(3210)는 제8 핀(P18)을 통해 레디/비지 출력 신호(nR/B)를 메모리 컨트롤러(3100)로 전송할 수 있다. 메모리 인터페이스 회로(3210)는 레디/비지 출력 신호(nR/B)를 통해 메모리 장치(3200)의 상태 정보를 메모리 컨트롤러(3100)로 전송할 수 있다. 메모리 장치(3200)가 비지 상태인 경우(즉, 메모리 장치(3200) 내부 동작들이 수행 중인 경우), 메모리 인터페이스 회로(3210)는 비지 상태를 나타내는 레디/비지 출력 신호(nR/B)를 메모리 컨트롤러(3100)로 전송할 수 있다. 메모리 장치(3200)가 레디 상태인 경우(즉, 메모리 장치(3200) 내부 동작들이 수행되지 않거나 완료된 경우), 메모리 인터페이스 회로(3210)는 레디 상태를 나타내는 레디/비지 출력 신호(nR/B)를 메모리 컨트롤러(3100)로 전송할 수 있다. 예를 들어, 메모리 장치(3200)가 페이지 리드 명령에 응답하여 메모리 셀 어레이(3230)로부터 데이터(DATA)를 리드하는 동안, 메모리 인터페이스 회로(3210)는 비지 상태(예를 들어, 로우 레벨)를 나타내는 레디/비지 출력 신호(nR/B)를 메모리 컨트롤러(3100)로 전송할 수 있다. 예를 들어, 메모리 장치(3200)가 프로그램 명령에 응답하여 메모리 셀 어레이(3230)로 데이터(DATA)를 프로그램하는 동안, 메모리 인터페이스 회로(3210)는 비지 상태를 나타내는 레디/비지 출력 신호(nR/B)를 메모리 컨트롤러(3100)로 전송할 수 있다.
제어 로직 회로(3220)는 메모리 장치(3200)의 각종 동작을 전반적으로 제어할 수 있다. 제어 로직 회로(3220)는 메모리 인터페이스 회로(3210)로부터 획득된 커맨드/어드레스(CMD/ADDR)를 수신할 수 있다. 제어 로직 회로(3220)는 수신된 커맨드/어드레스(CMD/ADDR)에 따라 메모리 장치(3200)의 다른 구성 요소들을 제어하기 위한 제어 신호들을 생성할 수 있다. 예를 들어, 제어 로직 회로(3220)는 메모리 셀 어레이(3230)에 데이터(DATA)를 프로그램하거나, 또는 메모리 셀 어레이(3230)로부터 데이터(DATA)를 리드하기 위한 각종 제어 신호들을 생성할 수 있다.
메모리 셀 어레이(3230)는 제어 로직 회로(3220)의 제어에 따라 메모리 인터페이스 회로(3210)로부터 획득된 데이터(DATA)를 저장할 수 있다. 메모리 셀 어레이(3230)는 제어 로직 회로(3220)의 제어에 따라 저장된 데이터(DATA)를 메모리 인터페이스 회로(3210)로 출력할 수 있다.
메모리 셀 어레이(3230)는 복수의 메모리 셀들을 포함할 수 있다. 예를 들어, 복수의 메모리 셀들은 플래시 메모리 셀들일 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 메모리 셀들은 RRAM(Resistive Random Access Memory) 셀, FRAM(Ferroelectric Random Access Memory) 셀, PRAM(Phase Change Random Access Memory) 셀, TRAM(Thyristor Random Access Memory) 셀, MRAM(Magnetic Random Access Memory) 셀들일 수 있다. 이하에서는, 메모리 셀들이 낸드(NAND) 플래시 메모리 셀들인 실시 예를 중심으로 본 발명의 실시 예들이 설명될 것이다.
메모리 컨트롤러(3100)는 제1 내지 제8 핀들(P21~P28), 및 컨트롤러 인터페이스 회로(3110)를 포함할 수 있다. 제1 내지 제8 핀들(P21~P28)은 메모리 장치(3200)의 제1 내지 제8 핀들(P11~P18)에 대응할 수 있다. 컨트롤러 인터페이스 회로(3110)는 제1 핀(P21)을 통해 메모리 장치(3200)로 칩 인에이블 신호(nCE)를 전송할 수 있다. 컨트롤러 인터페이스 회로(3110)는 칩 인에이블 신호(nCE)를 통해 선택한 메모리 장치(3200)와 제2 내지 제8 핀들(P22~P28)을 통해 신호들을 송수신할 수 있다.
컨트롤러 인터페이스 회로(3110)는 제2 내지 제4 핀들(P22~P24)을 통해 커맨드 래치 인에이블 신호(CLE), 어드레스 래치 인에이블 신호(ALE), 및 쓰기 인에이블 신호(nWE)를 메모리 장치(3200)로 전송할 수 있다. 컨트롤러 인터페이스 회로(3110)는 제7 핀(P27)을 통해 메모리 장치(3200)로 데이터 신호(DQ)를 전송하거나, 메모리 장치(3200)로부터 데이터 신호(DQ)를 수신할 수 있다.
컨트롤러 인터페이스 회로(3110)는 토글하는 쓰기 인에이블 신호(nWE)와 함께 커맨드(CMD) 또는 어드레스(ADDR)를 포함하는 데이터 신호(DQ)를 메모리 장치(3200)로 전송할 수 있다. 컨트롤러 인터페이스 회로(3110)는 인에이블 상태를 가지는 커맨드 래치 인에이블 신호(CLE)를 전송함에 따라 커맨드(CMD)를 포함하는 데이터 신호(DQ)를 메모리 장치(3200)로 전송하고, 인에이블 상태를 가지는 어드레스 래치 인에이블 신호(ALE)를 전송함에 따라 어드레스(ADDR)를 포함하는 데이터 신호(DQ)를 메모리 장치(3200)로 전송할 수 있다.
컨트롤러 인터페이스 회로(3110)는 제5 핀(P25)을 통해 메모리 장치(3200)로 읽기 인에이블 신호(nRE)를 전송할 수 있다. 컨트롤러 인터페이스 회로(3110)는 제6 핀(P26)을 통해 메모리 장치(3200)로부터 데이터 스트로브 신호(DQS)를 수신하거나, 메모리 장치(3200)로 데이터 스트로브 신호(DQS)를 전송할 수 있다.
메모리 장치(3200)의 데이터(DATA) 출력 동작에서, 컨트롤러 인터페이스 회로(3110)는 토글하는 읽기 인에이블 신호(nRE)를 생성하고, 읽기 인에이블 신호(nRE)를 메모리 장치(3200)로 전송할 수 있다. 예를 들어, 컨트롤러 인터페이스 회로(3110)는 데이터(DATA)가 출력되기 전에 고정된 상태(예를 들어, 하이 레벨 또는 로우 레벨)에서 토글 상태로 변경되는 읽기 인에이블 신호(nRE)를 생성할 수 있다. 이에 따라, 메모리 장치(3200)에서 읽기 인에이블 신호(nRE)에 기초하여 토글하는 데이터 스트로브 신호(DQS)가 생성될 수 있다. 컨트롤러 인터페이스 회로(3110)는 메모리 장치(3200)로부터 토글하는 데이터 스트로브 신호(DQS)와 함께 데이터(DATA)를 포함하는 데이터 신호(DQ)를 수신할 수 있다. 컨트롤러 인터페이스 회로(3110)는 데이터 스트로브 신호(DQS)의 토글 타이밍에 기초하여 데이터 신호(DQ)로부터 데이터(DATA)를 획득할 수 있다.
메모리 장치(3200)의 데이터(DATA) 입력 동작에서, 컨트롤러 인터페이스 회로(3110)는 토글하는 데이터 스트로브 신호(DQS)를 생성할 수 있다. 예를 들어, 컨트롤러 인터페이스 회로(3110)는 데이터(DATA)를 전송하기 전에 고정된 상태(예를 들어, 하이 레벨 또는 로우 레벨)에서 토글 상태로 변경되는 데이터 스트로브 신호(DQS)를 생성할 수 있다. 컨트롤러 인터페이스 회로(3110)는 데이터 스트로브 신호(DQS)의 토글 타이밍들에 기초하여 데이터(DATA)를 포함하는 데이터 신호(DQ)를 메모리 장치(3200)로 전송할 수 있다. 컨트롤러 인터페이스 회로(3110)는 제8 핀(P28)을 통해 메모리 장치(3200)로부터 레디/비지 출력 신호(nR/B)를 수신할 수 있다. 컨트롤러 인터페이스 회로(3110)는 레디/비지 출력 신호(nR/B)에 기초하여 메모리 장치(3200)의 상태 정보를 판별할 수 있다.
도 15는 본 개시의 일 실시예에 따른 3D VNAND 구조를 설명하기 위한 도면이다.
도 15를 참조하면, 메모리 블록(BLKi)은 기판 상에 삼차원 구조로 형성되는 삼차원 메모리 블록을 나타낸다. 예를 들어, 메모리 블록(BLKi)에 포함되는 복수의 메모리 낸드 스트링들은 기판과 수직한 방향으로 형성될 수 있다.
메모리 블록(BLKi)은 비트 라인들(BL1, BL2, BL3)과 공통 소스 라인(CSL) 사이에 연결되는 복수의 메모리 낸드 스트링들(NS11~NS33)을 포함할 수 있다. 복수의 메모리 낸드 스트링들(NS11~NS33) 각각은 스트링 선택 트랜지스터(SST), 복수의 메모리 셀들(MC1, MC2, ..., MC8) 및 접지 선택 트랜지스터(GST)를 포함할 수 있다. 도 15에는 복수의 메모리 낸드 스트링들(NS11~NS33) 각각이 8개의 메모리 셀들(MC1, MC2, ..., MC8)을 포함하는 것으로 도시되어 있으나, 반드시 이에 한정되는 것은 아니다.
스트링 선택 트랜지스터(SST)는 상응하는 스트링 선택 라인(SSL1, SSL2, SSL3)에 연결될 수 있다. 복수의 메모리 셀들(MC1, MC2, ..., MC8)은 각각 상응하는 게이트 라인(GTL1, GTL2, ..., GTL8)에 연결될 수 있다. 게이트 라인(GTL1, GTL2, ..., GTL8)은 워드 라인들에 해당할 수 있으며, 게이트 라인(GTL1, GTL2, ..., GTL8)의 일부는 더미 워드 라인에 해당할 수 있다. 접지 선택 트랜지스터(GST)는 상응하는 접지 선택 라인(GSL1, GSL2, GSL3)에 연결될 수 있다. 스트링 선택 트랜지스터(SST)는 상응하는 비트 라인(BL1, BL2, BL3)에 연결되고, 접지 선택 트랜지스터(GST)는 공통 소스 라인(CSL)에 연결될 수 있다.
동일 높이의 워드 라인(예를 들면, WL1)은 공통으로 연결되고, 접지 선택 라인(GSL1, GSL2, GSL3) 및 스트링 선택 라인(SSL1, SSL2, SSL3)은 각각 분리될 수 있다. 도 15에는 메모리 블록(BLK)이 여덟 개의 게이트 라인(GTL1, GTL2, ..., GTL8) 및 세 개의 비트 라인들(BL1, BL2, BL3)에 연결되는 것으로 도시되어 있으나, 반드시 이에 한정되는 것은 아니다.
전술한 바에 의하면, 데이터를 저장할 메모리 블록을 패턴 데이터에 따라 선택함으로써 메모리 블록 간의 웨어-아웃(wear-out) 정도를 고르게 분포하는 효과와 메모리 블록의 수명을 증가시키는 효과가 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (20)

  1. 호스트의 쓰기 요청에 응답하여 데이터를 저장하는 저장 장치에 있어서,
    복수의 메모리 블록들을 포함하도록 구성된 비휘발성 메모리; 및
    상기 쓰기 요청의 논리 어드레스에 대응되는 패턴 데이터를 기초로 상기 복수의 메모리 블록들 중 상기 데이터를 저장할 선택 메모리 블록을 선택하고, 상기 선택 메모리 블록의 물리 어드레스, 상기 데이터, 및 쓰기 커맨드를 상기 비휘발성 메모리에 제공하도록 구성된 메모리 컨트롤러를 포함하고,
    상기 패턴 데이터는,
    상기 논리 어드레스에 대한 특성 파라미터의 값이 제1 범위에 포함되는 제1 횟수에 관한 제1 카운팅 정보와,
    상기 특성 파라미터의 값이 상기 제1 범위와 다른 제2 범위에 포함되는 제2 횟수에 관한 제2 카운팅 정보를 포함하는 것을 특징으로 하는, 저장 장치.
  2. 제1 항에 있어서,
    상기 메모리 컨트롤러는,
    상기 논리 어드레스가 액세스될 때마다, 상기 특성 파라미터의 값이 상기 제1 범위 및 상기 제2 범위 중 어느 범위에 포함되는지 여부를 확인하여, 상기 패턴 데이터를 업데이트하는 것을 특징으로 하는, 저장 장치.
  3. 제2 항에 있어서,
    상기 메모리 컨트롤러는,
    상기 특성 파라미터의 값이 상기 제1 범위에 포함되면, 상기 제1 횟수를 증가시키고,
    상기 특성 파라미터의 값이 상기 제2 범위에 포함되면, 상기 제2 횟수를 증가시키는 것을 특징으로 하는, 저장 장치.
  4. 제1 항에 있어서,
    상기 특성 파라미터는,
    상기 논리 어드레스가 미리 설정된 초기 시점부터 액세스되는 액세스 시점까지 해당되는 액세스 시간인 것을 특징으로 하는, 저장 장치.
  5. 제4 항에 있어서,
    상기 메모리 컨트롤러는,
    상기 패턴 데이터를 임시 저장하는 버퍼 메모리;
    상기 초기 시점부터 시간을 카운팅하는 카운터;
    상기 초기 시점부터 상기 액세스 시점까지 상기 카운터로부터 카운팅된 시간을 상기 액세스 시간으로 획득하고, 획득된 액세스 시간을 기초로 상기 패턴 데이터를 업데이트하고, 상기 카운터를 상기 초기 시점으로 초기화하는 패턴 생성기; 및
    상기 물리 어드레스, 상기 데이터, 및 상기 쓰기 커맨드를 출력하는 스케줄러를 포함하는 것을 특징으로 하는, 저장 장치.
  6. 제1 항에 있어서,
    상기 복수의 메모리 블록들은,
    유저 데이터가 저장되는 유저 메모리 블록들, 및 메타 데이터가 저장되는 메타 메모리 블록들을 포함하고,
    상기 메타 데이터는,
    메모리 블록의 소거 횟수를 나타내는 소거 카운트 정보를 포함하고,
    상기 메모리 컨트롤러는,
    상기 선택 메모리 블록이 클로즈된(closed) 경우, 상기 패턴 데이터 및 상기 소거 카운트 정보를 기초로 상기 유저 메모리 블록들 중 어느 하나의 유저 메모리 블록을 오픈하고, 오픈된 유저 메모리 블록의 물리 어드레스를 상기 논리 어드레스에 맵핑함으로써 상기 오픈된 유저 메모리 블록을 상기 선택 메모리 블록으로 선택하는 것을 특징으로 하는, 저장 장치.
  7. 제6 항에 있어서,
    상기 메모리 컨트롤러는,
    제1 패턴 데이터에 대하여 제1 소거 횟수를 갖는 유저 메모리 블록을 오픈하거나 제2 패턴 데이터에 대하여 제2 소거 횟수를 갖는 유저 메모리 블록을 오픈하는 것을 특징으로 하는, 저장 장치.
  8. 제1 항에 있어서,
    상기 메모리 컨트롤러는,
    상기 복수의 메모리 블록들 중 프리(free) 메모리 블록의 개수가 미리 설정된 기준 개수보다 작은 경우, 유효 데이터가 가장 적게 저장된 적어도 하나의 메모리 블록을 소스 메모리 블록으로 선택하고,
    상기 유효 데이터에 대응되는 패턴 데이터를 기초로 적어도 하나의 타겟 메모리 블록을 선택하고,
    상기 유효 데이터를 상기 적어도 하나의 타겟 메모리 블록에 저장하도록 상기 비휘발성 메모리를 제어하는 것을 특징으로 하는, 저장 장치.
  9. 저장 장치의 동작 방법에 있어서,
    호스트로부터 논리 어드레스 및 데이터를 수신하는 단계;
    상기 논리 어드레스에 대응되는 패턴 데이터를 확인하는 단계;
    상기 패턴 데이터를 기초로 복수의 메모리 블록들 중 상기 데이터를 저장할 선택 메모리 블록을 선택하는 단계; 및
    상기 데이터를 상기 선택 메모리 블록에 저장하는 단계를 포함하고,
    상기 패턴 데이터는,
    상기 논리 어드레스에 대한 특성 파라미터의 값이 제1 범위에 포함되는 제1 횟수에 관한 제1 카운팅 정보와,
    상기 특성 파라미터의 값이 상기 제1 범위와 다른 제2 범위에 포함되는 제2횟수에 관한 제2 카운팅 정보를 포함하는 것을 특징으로 하는, 저장 장치의 동작 방법.
  10. 제9 항에 있어서,
    상기 패턴 데이터를 확인하는 단계는,
    상기 논리 어드레스가 액세스될 때마다, 상기 특성 파라미터의 값을 기초로 상기 패턴 데이터를 업데이트하는 단계; 및
    업데이트된 패턴 데이터를 버퍼 메모리에 저장하는 단계를 포함하는 것을 특징으로 하는, 저장 장치의 동작 방법.
  11. 제10 항에 있어서,
    상기 특성 파라미터는,
    상기 논리 어드레스가 미리 설정된 초기 시점부터 액세스되는 액세스 시점까지 해당되는 액세스 시간이고,
    상기 패턴 데이터를 업데이트하는 단계는,
    상기 초기 시점부터 시간을 카운팅하는 단계;
    상기 초기 시점부터 상기 액세스 시점까지 카운팅된 시간을 상기 액세스 시간으로 획득하는 단계;
    획득된 액세스 시간이 상기 제1 범위 및 상기 제2 범위 중 어느 범위에 포함되는지 여부를 확인하는 단계;
    확인 결과에 따라 상기 제1 횟수 또는 상기 제2 횟수를 증가시키는 단계; 및
    상기 카운팅된 시간을 상기 초기 시점으로 초기화하는 단계를 포함하는 것을 특징으로 하는, 저장 장치의 동작 방법.
  12. 제10 항에 있어서,
    상기 특성 파라미터는,
    상기 데이터의 크기이고,
    상기 패턴 데이터를 업데이트하는 단계는,
    상기 데이터의 크기가 상기 제1 범위 및 상기 제2 범위 중 어느 범위에 포함되는지 여부를 확인하는 단계; 및
    확인 결과에 따라 상기 제1 횟수 또는 상기 제2 횟수를 증가시키는 단계를 포함하는 것을 특징으로 하는, 저장 장치의 동작 방법.
  13. 제9 항에 있어서,
    상기 복수의 메모리 블록들은,
    유저 데이터가 저장되는 유저 메모리 블록들, 및 메타 데이터가 저장되는 메타 메모리 블록들을 포함하고,
    상기 메타 데이터는,
    메모리 블록의 소거 횟수를 나타내는 소거 카운트 정보를 포함하고,
    상기 선택 메모리 블록은,
    클로즈된(closed) 메모리 블록이고,
    상기 선택 메모리 블록을 선택하는 단계는,
    상기 패턴 데이터 및 상기 소거 카운트 정보를 기초로 상기 유저 메모리 블록들 중 어느 하나의 유저 메모리 블록을 오픈하는 단계;
    오픈된 유저 메모리 블록의 물리 어드레스를 상기 논리 어드레스에 맵핑하는 단계를 포함하는 것을 특징으로 하는, 저장 장치의 동작 방법.
  14. 제13 항에 있어서,
    상기 어느 하나의 유저 메모리 블록을 오픈하는 단계는,
    제1 패턴 데이터에 대하여 제1 소거 횟수를 갖는 유저 메모리 블록을 오픈하거나 제2 패턴 데이터에 대하여 제2 소거 횟수를 갖는 유저 메모리 블록을 오픈하는 것을 특징으로 하는, 저장 장치의 동작 방법.
  15. 제9 항에 있어서,
    상기 복수의 메모리 블록들 중 프리(free) 메모리 블록의 개수를 기초로 가비지 컬렉션 동작을 수행하는 단계를 더 포함하고,
    상기 가비지 컬렉션 동작을 수행하는 단계는,
    유효 데이터가 가장 적게 저장된 적어도 하나의 메모리 블록을 소스 메모리 블록으로 선택하는 단계;
    상기 유효 데이터에 대응되는 패턴 데이터를 기초로 적어도 하나의 타겟 메모리 블록을 선택하는 단계; 및
    상기 유효 데이터를 상기 적어도 하나의 타겟 메모리 블록에 저장하는 단계를 포함하는 것을 특징으로 하는, 저장 장치의 동작 방법.
  16. 호스트로부터 제공된 논리 어드레스에 대응되는 패턴 데이터를 저장하는 버퍼 메모리;
    미리 설정된 초기 시점부터 시간을 카운팅하는 적어도 하나의 카운터; 및
    상기 초기 시점부터 상기 논리 어드레스가 액세스되는 시점까지 상기 카운터로부터 카운팅된 시간을 액세스 시간으로 획득하고, 획득된 액세스 시간을 기초로 상기 패턴 데이터를 업데이트하고, 상기 카운터를 상기 초기 시점으로 초기화하는 플래시 변환 계층을 포함하고,
    상기 패턴 데이터는,
    상기 액세스 시간이 제1 범위에 포함되는 제1 횟수에 관한 제1 카운팅 정보와,
    상기 액세스 시간이 상기 제1 범위와 다른 제2 범위에 포함되는 제2 횟수에 관한 제2 카운팅 정보를 포함하는 특징으로 하는, 메모리 컨트롤러.
  17. 제16 항에 있어서,
    상기 플래시 변환 계층은,
    상기 획득된 액세스 시간이 상기 제1 범위 및 상기 제2 범위 중 어느 범위에 포함되는지 여부를 확인하고,
    상기 획득된 액세스 시간이 상기 제1 범위에 포함되면, 상기 제1 횟수를 증가시킴으로써 상기 패턴 데이터를 업데이트하고,
    상기 획득된 액세스 시간이 상기 제2 범위에 포함되면, 상기 제2 횟수를 증가시킴으로써 상기 패턴 데이터를 업데이트하는 것을 특징으로 하는, 메모리 컨트롤러.
  18. 제17 항에 있어서,
    상기 제1 카운팅 정보는,
    미리 설정된 제1 횟수 범위에 대응되는 제1 비트 값, 또는 미리 설정된 제2 횟수 범위에 대응되는 제2 비트 값을 포함하고,
    상기 제1 횟수 범위의 최댓값은,
    상기 제2 횟수 범위의 최솟값보다 작고,
    상기 플래시 변환 계층은,
    증가된 제1 횟수가 상기 제1 횟수 범위에 포함되면, 상기 제1 카운팅 정보가 상기 제1 비트 값을 포함하도록 상기 패턴 데이터를 업데이트하고,
    상기 증가된 제1 횟수가 상기 제2 횟수 범위에 포함되면, 상기 제1 카운팅 정보가 상기 제2 비트 값을 포함하도록 상기 패턴 데이터를 업데이트하는 것을 특징으로 하는, 메모리 컨트롤러.
  19. 제17 항에 있어서,
    상기 제2 카운팅 정보는,
    미리 설정된 제1 횟수 범위에 대응되는 제1 비트 값, 또는 미리 설정된 제2 횟수 범위에 대응되는 제2 비트 값을 포함하고,
    상기 제1 횟수 범위의 최댓값은,
    상기 제2 횟수 범위의 최솟값보다 작고,
    상기 플래시 변환 계층은,
    증가된 제2 횟수가 상기 제1 횟수 범위에 포함되면, 상기 제2 카운팅 정보가 상기 제1 비트 값을 포함하도록 상기 패턴 데이터를 업데이트하고,
    상기 증가된 제2 횟수가 상기 제2 횟수 범위에 포함되면, 상기 제2 카운팅 정보가 상기 제2 비트 값을 포함하도록 상기 패턴 데이터를 업데이트하는 것을 특징으로 하는, 메모리 컨트롤러.
  20. 제16 항에 있어서,
    상기 적어도 하나의 카운터는,
    제1 논리 어드레스가 액세스되는 시간을 카운팅하는 제1 카운터; 및
    제2 논리 어드레스가 액세스되는 시간을 카운팅하는 제2 카운터를 포함하는 것을 특징으로 하는, 메모리 컨트롤러.
KR1020220059723A 2021-11-10 2022-05-16 메모리 컨트롤러, 저장 장치, 및 저장 장치의 동작 방법 KR102557992B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202211286222.5A CN116107491A (zh) 2021-11-10 2022-10-20 存储器控制器、存储装置和存储装置的操作方法
EP22203196.5A EP4180937A1 (en) 2021-11-10 2022-10-24 Memory controller, storage device, and operating method of storage device
US17/973,135 US20230141682A1 (en) 2021-11-10 2022-10-25 Memory controller, storage device, and operating method of storage device

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20210154272 2021-11-10
KR1020210154272 2021-11-10

Publications (2)

Publication Number Publication Date
KR20230068266A KR20230068266A (ko) 2023-05-17
KR102557992B1 true KR102557992B1 (ko) 2023-07-20

Family

ID=86547569

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220059723A KR102557992B1 (ko) 2021-11-10 2022-05-16 메모리 컨트롤러, 저장 장치, 및 저장 장치의 동작 방법

Country Status (1)

Country Link
KR (1) KR102557992B1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090113121A1 (en) 2004-02-26 2009-04-30 Super Talent Electronics Inc. Swappable Sets of Partial-Mapping Tables in a Flash-Memory System With A Command Queue for Combining Flash Writes
KR102291806B1 (ko) * 2015-04-20 2021-08-24 삼성전자주식회사 불휘발성 메모리 시스템 및 그것의 동작 방법

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102329473B1 (ko) * 2014-11-24 2021-11-19 삼성전자주식회사 프로세서와 이를 포함하는 반도체 장치
KR102559549B1 (ko) * 2018-09-12 2023-07-26 에스케이하이닉스 주식회사 메모리 시스템에서의 블록 상태를 관리하는 방법 및 장치

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090113121A1 (en) 2004-02-26 2009-04-30 Super Talent Electronics Inc. Swappable Sets of Partial-Mapping Tables in a Flash-Memory System With A Command Queue for Combining Flash Writes
KR102291806B1 (ko) * 2015-04-20 2021-08-24 삼성전자주식회사 불휘발성 메모리 시스템 및 그것의 동작 방법

Also Published As

Publication number Publication date
KR20230068266A (ko) 2023-05-17

Similar Documents

Publication Publication Date Title
KR20200095103A (ko) 데이터 저장 장치 및 그 동작 방법
KR20170105760A (ko) 데이터 저장 장치 및 그것의 동작 방법
US11567685B2 (en) Storage controller and storage device including the same
US20140173183A1 (en) Data storage device and method of operating the same
KR20200085967A (ko) 데이터 저장 장치 및 그 동작 방법
US11704048B2 (en) Electronic device
US20230036841A1 (en) Storage devices, storage controllers, and operating methods of storage controllers
CN110119326B (zh) 数据存储装置及其操作方法
US20230266884A1 (en) Operating method for storage controller and storage system including same
US20230152993A1 (en) Storage device
US20230036616A1 (en) Storage devices and operating methods of storage controllers
US11726871B2 (en) Storage controller for selecting a gear level of a storage device and storage system including the same
KR102557992B1 (ko) 메모리 컨트롤러, 저장 장치, 및 저장 장치의 동작 방법
US20220197510A1 (en) Storage device for executing processing code and operating method of the storage device
KR20190041082A (ko) 데이터 저장 장치 및 그것의 동작 방법
US11281590B2 (en) Controller, operating method thereof and storage device including the same
EP4180937A1 (en) Memory controller, storage device, and operating method of storage device
US20230244402A1 (en) Storage device and operating method of storage device
EP4220374A1 (en) Storage device and operating method of storage device
KR102509646B1 (ko) 스토리지 장치
US20230147773A1 (en) Storage device and operating method
US20230069623A1 (en) Storage device and operating method thereof
EP4174663A1 (en) Storage device and operation method thereof
US20230153237A1 (en) Method and device for storing data
KR20230044883A (ko) 저장 장치 및 그의 동작 방법

Legal Events

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