KR20210121696A - 컨트롤러 및 메모리 시스템 - Google Patents

컨트롤러 및 메모리 시스템 Download PDF

Info

Publication number
KR20210121696A
KR20210121696A KR1020200038852A KR20200038852A KR20210121696A KR 20210121696 A KR20210121696 A KR 20210121696A KR 1020200038852 A KR1020200038852 A KR 1020200038852A KR 20200038852 A KR20200038852 A KR 20200038852A KR 20210121696 A KR20210121696 A KR 20210121696A
Authority
KR
South Korea
Prior art keywords
state
memory
manager
remap
memory devices
Prior art date
Application number
KR1020200038852A
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 KR1020200038852A priority Critical patent/KR20210121696A/ko
Priority to US17/036,759 priority patent/US11461013B2/en
Priority to CN202110078814.7A priority patent/CN113535078B/zh
Publication of KR20210121696A publication Critical patent/KR20210121696A/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/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/0658Controller construction arrangements
    • 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
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • 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
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • 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/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • 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/7211Wear leveling

Abstract

메모리 시스템은 복수의 메모리 장치들; 각각이 상기 복수의 메모리 장치들 중 대응하는 메모리 장치를 제어하는 복수의 코어들; 및 호스트로부터의 요청을 논리 어드레스와 코어 간 매핑에 기초하여 상기 복수의 코어들 중 어느 하나로 제공하는 호스트 인터페이스 계층, 트리거에 응하여 상기 논리 어드레스와 코어 간 매핑을 변경하는 리맵 관리자, 상기 변경된 매핑에 기초하여 복수의 메모리 장치들 간 데이터를 교환하는 데이터 교환부 및 상태 관리자를 포함하는 컨트롤러를 포함하고, 상기 상태 관리자는 상기 데이터를 교환하는 동작의 수행 또는 완료 여부에 따라 상기 메모리 시스템의 상태를 결정하고, 상기 메모리 시스템의 상태 및 상기 복수의 메모리 장치들의 마모도 차이에 기초하여 상기 트리거를 상기 리맵 관리자로 제공한다.

Description

컨트롤러 및 메모리 시스템{CONTROLLER AND MEMORY SYSTEM}
본 발명은 메모리 장치를 제어하는 컨트롤러 및 메모리 장치를 포함하는 메모리 시스템에 관한 것이다.
최근 컴퓨터 환경에 대한 패러다임(paradigm)이 언제, 어디서나 컴퓨터 시스템을 사용할 수 있도록 하는 유비쿼터스 컴퓨팅(ubiquitous computing)으로 전환되고 있다. 이로 인해 휴대폰, 디지털 카메라, 노트북 컴퓨터 등과 같은 휴대용 전자 장치의 사용이 급증하고 있다. 이와 같은 휴대용 전자 장치는 일반적으로 메모리 장치를 이용하는 메모리 시스템, 다시 말해 데이터 저장 장치를 사용한다. 데이터 저장 장치는 휴대용 전자 장치의 주 기억 장치 또는 보조 기억 장치로 사용된다.
메모리 장치를 이용한 데이터 저장 장치는 기계적인 구동부가 없어서 안정성 및 내구성이 뛰어나며, 또한 정보의 액세스 속도가 매우 빠르고 전력 소모가 적다는 장점이 있다. 이러한 장점을 갖는 메모리 시스템의 일 예로 데이터 저장 장치는, USB(Universal Serial Bus) 메모리 장치, 다양한 인터페이스를 갖는 메모리 카드, 솔리드 스테이트 드라이브(SSD: Solid State Drive) 등을 포함한다.
본 발명은 메모리 시스템 내에 포함된 메모리 장치들 간 마모도를 효과적으로 균등화할 수 있는 컨트롤러 및 메모리 시스템을 제공하고자 한다.
본 발명의 실시 예에 따른 메모리 시스템은 복수의 메모리 장치들; 각각이 상기 복수의 메모리 장치들 중 대응하는 메모리 장치를 제어하는 복수의 코어들; 및 호스트로부터의 요청을 논리 어드레스와 코어 간 매핑에 기초하여 상기 복수의 코어들 중 어느 하나로 제공하는 호스트 인터페이스 계층, 트리거에 응하여 상기 논리 어드레스와 코어 간 매핑을 변경하는 리맵 관리자, 상기 변경된 매핑에 기초하여 복수의 메모리 장치들 간 데이터를 교환하는 데이터 교환부 및 상태 관리자를 포함하는 컨트롤러를 포함하고, 상기 상태 관리자는 상기 데이터를 교환하는 동작의 수행 또는 완료 여부에 따라 상기 메모리 시스템의 상태를 결정하고, 상기 메모리 시스템의 상태 및 상기 복수의 메모리 장치들의 마모도 차이에 기초하여 상기 트리거를 상기 리맵 관리자로 제공한다.
본 발명의 실시 예에 따르면, 호스트로부터의 요청을 각각 대응하는 메모리 장치를 제어하는 복수의 코어들로 분배하는 컨트롤러는, 상기 요청을 논리 어드레스와 코어 간 매핑에 기초하여 상기 복수의 코어들 중 어느 하나로 제공하는 호스트 인터페이스 계층, 트리거에 응하여 상기 논리 어드레스와 코어 간 매핑을 변경하는 리맵 관리자, 상기 변경된 매핑에 기초하여 상기 복수의 코어들과 대응하는 메모리 장치들 간 데이터를 교환하는 데이터 교환부 및 상태 관리자를 포함하고, 상기 상태 관리자는 상기 데이터를 교환하는 동작의 수행 또는 완료 여부에 따라 상기 메모리 시스템의 상태를 결정하고, 상기 컨트롤러의 상태 및 상기 메모리 장치들의 마모도 차이에 기초하여 상기 트리거를 상기 리맵 관리자로 제공한다.
본 발명은 메모리 시스템 내에 포함된 메모리 장치들 간 마모도를 효과적으로 균등화할 수 있는 컨트롤러 및 메모리 시스템을 제공할 수 있다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템을 포함하는 데이터 처리 시스템의 도면이다.
도 2는 메모리 장치의 일 예를 나타내는 도면이다.
도 3은 본 발명의 실시 예에 따른 글로벌 웨어레벨링 관리자를 설명하기 위한 도면이다.
도 4a 내지 도 4c는 본 발명의 실시 예에 따른 모니터링부의 동작을 설명하기 위한 도면이다.
도 5는 본 발명의 실시 예에 따른 상태 관리자를 예시한다.
도 6a 내지 도 6c는 상태 관리자의 리맵 검증 동작을 설명하기 위한 도면이다.
도 7a 내지 도 7c는 본 발명의 실시 예에 따른 리맵 관리자 및 데이터 교환부의 동작을 설명하는 도면이다.
이하, 본 발명에 따른 바람직한 실시 예를 첨부한 도면을 참조하여 상세히 설명한다. 하기의 설명에서는 본 발명에 따른 동작을 이해하는데 필요한 부분만이 설명되며 그 이외 부분의 설명은 본 발명의 요지를 흩뜨리지 않도록 생략될 것이라는 것을 유의하여야 한다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템(110)을 포함하는 데이터 처리 시스템(100)의 도면이다.
도 1을 참조하면, 데이터 처리 시스템(100)은 호스트(102) 및 메모리 시스템(110)을 포함한다.
호스트(102)는 전자 장치, 예컨대 휴대폰, MP3 플레이어, 랩탑 컴퓨터 등과 같은 휴대용 전자 장치들, 또는 데스크탑 컴퓨터, 게임기, TV, 프로젝터 등과 같은 전자 장치들을 포함할 수 있다.
호스트(102)는 적어도 하나의 운영 시스템(OS: operating system)을 포함할 수 있다. 운영 시스템은 호스트(102)의 기능 및 동작을 전반적으로 관리 및 제어하고, 데이터 처리 시스템(100) 또는 메모리 시스템(110)을 사용하는 사용자와 호스트(102) 간에 상호 동작을 제공한다. 운영 시스템은 사용자의 사용 목적 및 용도에 상응한 기능 및 동작을 지원하며, 호스트(102)의 이동성(mobility)에 따라 일반 운영 시스템과 모바일 운용 시스템으로 구분할 수 있다. 운영 시스템에서의 일반 운영 시스템 시스템은, 사용자의 사용 환경에 따라 개인용 운영 시스템과 기업용 운영 시스템으로 구분할 수 있다.
메모리 시스템(110)은 호스트(102)의 요청에 응하여 호스트(102)의 데이터를 저장하기 위해 동작할 수 있다. 예컨대, 메모리 시스템(110)은 솔리드 스테이트 드라이브(SSD: Solid State Drive), MMC, eMMC(embedded MMC), RS-MMC(Reduced Size MMC), micro-MMC 형태의 멀티 미디어 카드(MMC: Multi Media Card), SD, mini-SD, micro-SD 형태의 시큐어 디지털(SD: Secure Digital) 카드, USB(Universal Storage Bus) 저장 장치, UFS(Universal Flash Storage) 장치, CF(Compact Flash) 카드, 스마트 미디어(Smart Media) 카드, 메모리 스틱(Memory Stick) 등과 같은 다양한 종류의 저장 장치들 중 어느 하나로 구현될 수 있다.
메모리 시스템(110)은 다양한 종류의 저장 장치에 의해 구현될 수 있다. 예컨대, 상기 저장 장치는 DRAM(Dynamic Random Access Memory), SRAM(Static RAM) 등과 같은 휘발성 메모리 장치와, ROM(Read Only Memory), MROM(Mask ROM), PROM(Programmable ROM), EPROM(Erasable ROM), EEPROM(Electrically Erasable ROM), FRAM(Ferromagnetic ROM), PRAM(Phase change RAM), MRAM(Magnetic RAM), RRAM(Resistive RAM), 플래시 메모리 등과 같은 비휘발성 메모리 장치를 포함할 수 있다. 상기 플래시 메모리는 3차원 스택 구조를 가질 수 있다.
메모리 시스템(110)은 복수의 메모리 장치들(152, 154, 156, 158) 및 복수의 코어들(132, 134, 136, 138), 컨트롤러(170) 및 메모리(190)를 포함할 수 있다. 복수의 메모리 장치들(152, 154, 156, 158)은 호스트(102)를 위한 데이터를 저장할 수 있다. 복수의 코어들(132, 134, 136, 138)은 복수의 메모리 장치들(152, 154, 156, 158)의 데이터 저장을 제어할 수 있다.
복수의 코어들(132, 134, 136, 138) 및 복수의 메모리 장치들(152, 154, 156, 158)은 하나의 반도체 장치로 집적될 수 있다. 일 예로, 복수의 코어들(132, 134, 136, 138) 및 복수의 메모리 장치들(152, 154, 156, 158)은 하나의 반도체 장치로 집적되어 SSD를 구성할 수 있다. 메모리 시스템(110)이 SSD로 사용되면, 메모리 시스템(110)에 연결된 호스트(102)의 동작 속도는 향상될 수 있다. 게다가, 복수의 코어들(132, 134, 136, 138) 및 복수의 메모리 장치들(152, 154, 156, 158)은 하나의 반도체 장치로 집적되어 메모리 카드를 구성할 수도 있다. 예컨대, 복수의 코어들(132, 134, 136, 138) 및 복수의 메모리 장치들(152, 154, 156, 158)은 PC 카드(PCMCIA: Personal Computer Memory Card International Association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro), SD 카드(SD, miniSD, microSD, SDHC), 유니버설 플래시 기억 장치(UFS) 등과 같은 메모리 카드를 구성할 수 있다.
복수의 메모리 장치(152, 154, 156, 158)들 각각은 비휘발성 메모리 장치일 수 있으며, 전원이 공급되지 않아도 저장된 데이터를 유지할 수 있다. 복수의 메모리 장치(152, 154, 156, 158)들은 프로그램 동작을 통해 호스트(102)로부터 제공된 데이터를 저장할 수 있고, 리드 동작을 통해 호스트(102)로 복수의 메모리 장치(152, 154, 156, 158)들에 저장된 데이터를 제공할 수 있다. 복수의 메모리 장치(152, 154, 156, 158)들은 복수의 메모리 블록들을 포함하며, 메모리 블록들 각각은 복수의 페이지들을 포함하며, 상기 페이지들 각각은 워드라인에 연결된 복수의 메모리 셀들을 포함할 수 있다. 일 실시예에서, 복수의 메모리 장치(152, 154, 156, 158)들은 플래시 메모리가 될 수 있다. 상기 플래시 메모리는 3차원 스택 구조를 가질 수 있다.
도 2는 메모리 장치(152)의 일 예를 나타내는 도면이다.
도 2는 도 1의 메모리 시스템(110)에 포함된 복수의 메모리 장치(152, 154, 156, 158)들 중 제1 메모리 장치(152)를 예시적으로 나타낸다.
제1 메모리 장치(152)는 복수의 메모리 다이(DIE)들을 포함할 수 있다. 예를 들어, 상기 복수의 메모리 다이(DIE) 각각은 NAND 메모리 다이일 수 있다. 상기 복수의 메모리 다이(DIE)들은 채널(CH)을 통해 컨트롤러(130)와 연결될 수 있다.
각 메모리 다이(DIE)는 메모리 다이(DIE), 플레인, 메모리 블록 및 페이지의 계층 구조를 가질 수 있다. 하나의 메모리 다이(DIE)는 한 번에 하나의 커맨드를 수신할 수 있다. 하나의 메모리 다이(DIE)는 복수의 플레인을 포함할 수 있으며, 상기 복수의 플레인은 상기 메모리 다이(DIE)가 수신한 커맨드를 병렬로 처리할 수 있다. 각 플레인은 복수의 메모리 블록을 포함할 수 있다. 메모리 블록은 이레이즈 동작의 최소 단위일 수 있다. 하나의 메모리 블록은 복수의 페이지를 포함할 수 있다. 페이지는 라이트 동작의 최소 단위일 수 있다. 복수의 메모리 다이(DIE)들은 서로 병렬로 동작할 수 있다.
제2 내지 제4 메모리 장치(154, 156, 158)의 구조는 제1 메모리 장치(152)의 구조와 실질적으로 동일하거나 유사할 수 있다. 복수의 메모리 장치(152, 154, 156, 158)들은 서로 병렬로 동작할 수 있다.
다시 도 1을 참조하면, 복수의 코어들(132, 134, 136, 138)은 복수의 메모리 장치들(152, 154, 156, 158)과 일대일로 연결될 수 있다. 각 코어는 정해진 메모리 장치를 제어할 수 있다. 복수의 코어들(132, 134, 136, 138)은 서로 병렬로 동작할 수 있다.
복수의 코어들(132, 134, 136, 138)은 호스트(102)로부터의 요청에 응하여 포그라운드 동작(foreground operation)을 수행할 수 있다. 예를 들어, 제1 코어(132)는 호스트(102)로부터의 라이트 요청에 응하여 제1 메모리 장치(152)의 메모리 블록에 데이터를 프로그램하도록 제1 메모리 장치(152)를 제어하고, 리드 요청에 응하여 제1 메모리 장치(152)의 메모리 블록으로부터 데이터를 리드하도록 제1 메모리 장치(152)를 제어할 수 있다.
또한, 복수의 코어들(132, 134, 136, 138)은 복수의 메모리 장치들(152, 154, 156, 158)에 대한 백그라운드 동작(background operation)을 수행할 수도 있다.
컨트롤러(170)는 호스트(102)로부터의 요청을 각 코어에 분배함으로써 복수의 코어들(132, 134, 136, 138)의 병렬처리 성능을 향상시킬 수 있다. 상기 요청은 호스트(102)에서 사용되는 논리 어드레스, 예를 들어 논리 블록 어드레스(LBA)를 포함할 수 있다. 컨트롤러(170)는 논리 어드레스와 코어 간 매핑 및 상기 요청의 논리 어드레스에 기초하여 상기 요청을 각 코어에 분배할 수 있다. 논리 어드레스에 기초하여 호스트(102)로부터의 요청이 각 코어로 분배되므로, 각 코어는 정해진 논리 어드레스에 대한 요청만을 처리할 수 있다.
메모리(190)는 메모리 시스템(110)의 동작 메모리로서의 역할을 수행할 수 있으며, 메모리 시스템(110)의 구동을 위한 데이터를 저장할 수 있다. 복수의 코어들(132, 134, 136, 138)은 호스트(102)로부터의 요청에 응하여 복수의 메모리 장치들(152, 1554, 156, 158)이 리드, 프로그램, 이레이즈 동작을 수행하도록 복수의 메모리 장치들(152, 1554, 156, 158)을 제어할 수 있다. 복수의 코어들(132, 134, 136, 138)은 복수의 메모리 장치들(152, 1554, 156, 158)로부터 독출되는 데이터를 호스트(102)로 제공할 수 있으며, 호스트(102)로부터 제공되는 데이터를 복수의 메모리 장치들(152, 1554, 156, 158)에 저장할 수 있다. 메모리(190)는 복수의 코어들(132, 134, 136, 138)과 복수의 메모리 장치들(152, 1554, 156, 158)이 이러한 동작을 수행하는 데 필요한 데이터를 저장할 수 있다.
메모리(190)는 휘발성 메모리로 구현될 수 있다. 예컨대, 메모리(190)는 정적 랜덤 액세스 메모리(SRAM: Static Random Access Memory), 또는 동적 랜덤 액세스 메모리(DRAM: Dynamic Random Access Memory) 등으로 구현될 수 있다. 메모리(190)는 컨트롤러(170) 내부 또는 외부에 배치될 수 있다. 도 1은 메모리(190)가 컨트롤러(170) 외부에 배치되는 경우를 예시한다.
한편, 복수의 메모리 장치들(152, 154, 156, 158)에 포함된 메모리 블록들은 수명이 제한될 수 있다. 따라서, 메모리 블록에 정해진 횟수의 이레이즈 동작이 수행되면 해당 메모리 블록을 더 이상 사용할 수 없다. 각 코어는 백그라운드 동작으로서 자신이 제어하는 메모리 장치에 대한 로컬 웨어레벨링 동작을 수행할 수 있다. 예를 들어, 코어는 메모리 장치 내의 메모리 블록들 중 마모도가 낮은 메모리 블록에 자주 액세스되는 데이터가 저장되도록 함으로써 메모리 장치 내의 메모리 블록들 간 마모도를 균등화할 수 있다. 복수의 코어들(132, 134, 136, 138)이 로컬 웨어레벨링 동작을 수행하면 개별 메모리 장치 내의 메모리 블록들끼리는 마모도가 균등화될 수 있다.
호스트(102)로부터 수신되는 요청들이 어떤 논리 어드레스들에 대한 요청들인지에 따라 각 코어에 분배되는 요청의 양이 서로 달라질 수 있다. 각 코어에 분배되는 요청의 양이 균등하지 않다면 메모리 장치들 간에는 메모리 블록들이 균등하게 마모되지 않을 수 있다. 복수의 코어들(132, 134, 136, 138)이 로컬 웨어레벨링 동작을 수행하더라도 메모리 장치들 간에는 메모리 블록들의 마모도가 균등화되기 어렵다. 어떤 메모리 장치의 메모리 블록들이 다른 메모리 장치의 메모리 블록들보다 더 빠르게 수명이 다하는 경우, 다른 메모리 장치의 메모리 블록들의 수명이 남아있더라도 메모리 시스템(110) 전체를 정상적으로 사용할 수 없다.
본 발명의 실시 예에 따르면, 컨트롤러(170)는 복수의 메모리 장치들(152, 154, 156, 158) 간 마모도 차이에 기초하여 논리 어드레스와 코어 간 매핑을 변경하고, 변경된 매핑에 따라 메모리 장치들 간 데이터를 교환하는 글로벌 웨어레벨링 동작을 수행할 수 있다.
컨트롤러(170)는 호스트 인터페이스 계층(172), 글로벌 웨어레벨링 관리자(174) 및 데이터 교환부(176)를 포함할 수 있다. 실시 예에 따라, 컨트롤러(170)는 글로벌 웨어레벨링 관리자(174)를 주기적으로 제어하기 위한 타이머(178)를 더 포함할 수 있다.
호스트 인터페이스 계층(172)은 논리 어드레스와 코어 간 매핑에 기초하여 호스트(102)로부터의 요청을 복수의 코어들(132, 134, 136, 138) 중 어느 하나로 제공할 수 있다. 예를 들어, 호스트 인터페이스 계층(172)은 상기 요청의 논리 어드레스의 모듈러 연산 결과에 따라 상기 요청을 각 코어에 분배할 수 있으나, 요청을 분배하는 방법은 이에 제한되지 않는다.
글로벌 웨어레벨링 관리자(174)는 복수의 메모리 장치들(152, 154, 156, 158)의 마모도를 모니터링하고, 메모리 장치들 간 마모도의 차이에 기초하여 논리 어드레스와 코어 간 매핑을 변경할 수 있다. 예를 들어, 글로벌 웨어레벨링 관리자(174)는 제1 메모리 장치(152)와 제2 메모리 장치(154)간 마모도 차이를 완화하기 위해 제1 코어(132)로 제공되던 제1 논리 어드레스에 대한 요청이 제2 코어(134)로 제공되고, 제2 코어(134)로 제공되던 제2 논리 어드레스에 대한 요청이 제1 코어(132)로 제공되도록 논리 어드레스와 코어 간 매핑을 변경할 수 있다.
데이터 교환부(176)는 상기 변경된 논리 어드레스와 코어 간 매핑에 따라 복수의 메모리 장치들(152, 154, 156, 158)에 저장된 데이터를 이동시킬 수 있다. 예를 들어, 데이터 교환부(176)는 제1 메모리 장치(152)에 저장된 상기 제1 논리 어드레스에 대한 데이터를 제2 메모리 장치(154)로 이동시키고, 제2 메모리 장치(154)에 저장된 상기 제1 논리 어드레스에 대한 데이터를 제1 메모리 장치(152)로 이동시킬 수 있다.
타이머(178)는 글로벌 웨어레벨링 관리자(174)의 동작을 시간 주기적으로 호출할 수 있다.
도 3은 본 발명의 실시 예에 따른 글로벌 웨어레벨링 관리자(174)를 설명하기 위한 도면이다.
글로벌 웨어레벨링 관리자(174)는 모니터링부(302), 상태 관리자(304) 및 리맵 관리자(306)를 포함할 수 있다.
모니터링부(302)는 복수의 메모리 장치들(152, 154, 156, 158) 각각의 마모도를 모니터링할 수 있다. 실시 예에 따라, 모니터링부(302)는 메모리 장치에 포함된 메모리 블록들의 이레이즈 카운트에 기초하여 해당 메모리 장치의 마모도 및 마모도의 증가 속도를 판단할 수 있다. 모니터링부(302)가 메모리 장치들의 마모도 및 마모도의 증가 속도를 판단하는 동작은 타이머(178)의 호출에 의해 주기적으로 수행될 수 있다. 모니터링부(302)의 동작의 일 예가 도 4a 내지 도 4c를 참조하여 후술된다.
상태 관리자(304)는 메모리 시스템(110)의 상태에 따라 서로 다른 조건으로 글로벌 웨어레벨링 동작을 트리거할 수 있다. 예를 들어, 상태 관리자(304)는 데이터 교환부(176)의 데이터 교환 동작의 수행 또는 완료 여부에 따라 메모리 시스템(110)의 상태를 결정할 수 있다. 상태 관리자(304)는 상기 결정된 상태에 따라 모니터링부(302)의 동작을 활성화 또는 비활성화하고, 모니터링부(302)가 활성화된 경우 메모리 장치들 간 마모도의 차이에 기초하여 리맵 관리자(306)가 논리 어드레스와 코어 간 매핑을 변경하도록 제어할 수 있다. 상태 관리자(304)가 메모리 시스템(110)의 상태에 따라 글로벌 웨어레벨링 동작의 트리거 조건을 달리함으로써 글로벌 웨어레벨링 동작이 불필요하게 자주 수행되는 것을 방지할 수 있다. 상태 관리자(304)의 제어에 따라 글로벌 웨어레벨링 동작이 적시에 수행되면 메모리 시스템(110)의 성능 및 수명이 향상될 수 있다. 상태 관리자(304)의 동작의 일 예가 도 5 내지 도 6c를 참조하여 후술된다.
리맵 관리자(306)는 상태 관리자(304)의 제어에 응하여 논리 어드레스와 코어 간 매핑을 변경할 수 있다. 예를 들어, 리맵 관리자(306)는 마모도가 가장 낮은 메모리 장치를 제어하는 코어에 매핑된 논리 어드레스와 최근 가장 빠르게 마모도가 증가하는 메모리 장치를 제어하는 코어에 매핑된 논리 어드레스를 교환할 수 있다. 리맵 관리자(306)는 논리 어드레스와 코어 간 매핑에 따라 메모리 장치들의 데이터를 교환하도록 데이터 교환부(176)를 제어할 수 있다. 리맵 관리자 및 데이터 교환부(176)의 동작의 일 예가 도 7a 내지 도 7c를 참조하여 설명된다.
도 4a 내지 도 4c는 본 발명의 실시 예에 따른 모니터링부(302)의 동작을 설명하기 위한 도면이다.
도 4a는 각 메모리 장치에 포함된 메모리 블록들의 이레이즈 카운트 변화를 시계열적으로 나타낸다.
모니터링부(302)는 타이머(178)의 제어에 따라 주기적으로 각 메모리 장치의 마모도를 판단할 수 있다. 도 4a의 시간축(TIME)에 모니터링부(302)가 마모도를 판단하는 시점(time point)이 표시된다. 도 4a는 시점들 중에서 제1 시점(T1), 제2 시점(T2) 및 제3 시점(T3)에서의 메모리 블록들의 이레이즈 카운트를 예시한다. 이레이즈 카운트는 누적 이레이즈 카운트, 기준 이레이즈 카운트 및 윈도우 이레이즈 카운트를 포함할 수 있다.
메모리 장치별 누적 이레이즈 카운트는 각 메모리 장치 내부 메모리 블록들의 누적된 이레이즈 카운트를 합하여 결정될 수 있다. 메모리 장치별 내부 메모리 블록들의 이레이즈 카운트는 각 메모리 장치를 제어하는 코어에서 카운트될 수 있으며, 메모리(190)로부터 획득될 수 있다. 모니터링부(302)는 메모리 장치별 누적 이레이즈 카운트에 기초하여 메모리 장치별 마모도를 판단할 수 있다.
메모리 장치별 윈도우 이레이즈 카운트는 각 메모리 장치 내부 메모리 블록들의 정해진 시간 범위 내에서의 이레이즈 카운트 증가량을 합하여 결정될 수 있다. 이하에서, 상기 정해진 시간 범위를 시간 윈도우로 지칭한다. 시간 윈도우는 메모리 시스템 전체의 이레이즈 카운트가 정해진 수만큼 증가할 때마다 리셋될 수 있다. 예를 들어, 모니터링부(302)는 어떤 시간 윈도우에서 메모리 장치들의 윈도우 이레이즈 카운트의 합이 정해진 임계값 이상이면 새로운 시간 윈도우에서 이레이즈 카운트를 결정할 수 있다. 도 4a는 정해진 수의 최근 시간 윈도우에 대한 복수의 윈도우 이레이즈 카운트를 예시한다. 모니터링부(302)는 메모리 장치별 적어도 하나의 윈도우 이레이즈 카운트에 기초하여 메모리 장치별 마모도의 증가 속도를 판단할 수 있다.
기준 이레이즈 카운트는 시간 윈도우가 리셋될 때의 누적 이레이즈 카운트를 나타낼 수 있다. 모니터링부(302)는 윈도우 이레이즈 카운트를 현재의 누적 이레이즈 카운트에서 기준 이레이즈 카운트를 뺀 값으로 결정할 수 있다.
이하에서, 도 4a의 예를 통해 누적 이레이즈 카운트, 기준 이레이즈 카운트 및 윈도우 이레이즈 카운트를 설명한다. 도 4a는 제1 시점(T1)이 제1 시간 윈도우의 시작점인 경우를 나타낸다. 제1 시점(T1)에서, 모니터링부(302)는 메모리 장치별 누적 이레이즈 카운트를 메모리 장치별 기준 이레이즈 카운트로 결정할 수 있다. 도 4a에 도시된 복수의 윈도우 이레이즈 카운트 중 파선으로 둘러싸인 이레이즈 카운트는 현재 시간 윈도우인 제1 시간 윈도우에서의 제1 윈도우 이레이즈 카운트를 나타낸다. 제1 시점(T1)은 시간 윈도우의 시작점이므로, 메모리 장치별 윈도우 이레이즈 카운트는 (0, 0, 0, 0)으로 초기화될 수 있다.
모니터링부(302)는 제1 시점(T1) 이후에 타이머(178)의 호출에 따라 누적 이레이즈 카운트 및 윈도우 이레이즈 카운트를 갱신할 수 있다. 도 4a는 제2 시점(T2)에서의 누적 이레이즈 카운트, 기준 이레이즈 카운트 및 윈도우 이레이즈 카운트를 예시한다. 제2 시점(T2)에서의 기준 이레이즈 카운트는 제1 시점(T1)의 기준 이레이즈 카운트와 동일할 수 있다. 제2 시점(T2)에서의 누적 이레이즈 카운트는 제1 시점(T1) 이후에 메모리 장치들의 메모리 블록들에서 이레이즈 동작이 수행됨에 따라 증가할 수 있다. 제2 시점(T2)에서의 윈도우 이레이즈 카운트 (3, 1, 1, 1)은 누적 이레이즈 카운트 (4, 5, 4, 3)과 기준 이레이즈 카운트 (1, 4, 3, 2)의 차로 결정될 수 있다.
모니터링부(302)는 갱신된 윈도우 이레이즈 카운트에 기초하여 시간 윈도우를 갱신할지 여부를 결정할 수 있다. 모니터링부(302)는 어떤 시간 윈도우에서 메모리 장치들의 윈도우 이레이즈 카운트의 합이 정해진 임계값 미만이면 시간 윈도우를 갱신하지 않을 수 있다. 도 4a는 제2 시점(T2)에서 제1 윈도우 이레이즈 카운트의 합 (3+1+1+1)이 임계값 '10' 미만으로 판단되어 모니터링부(302)가 시간 윈도우를 갱신하지 않는 경우를 예시한다.
도 4a는 제3 시점(T3)에서의 누적 이레이즈 카운트, 기준 이레이즈 카운트 및 윈도우 이레이즈 카운트를 예시한다. 제3 시점(T3)에서의 기준 이레이즈 카운트는 제1 시점(T1)의 기준 이레이즈 카운트와 동일할 수 있다. 제3 시점(T3)에서의 누적 이레이즈 카운트는 제2 시점(T2) 이후에 메모리 장치들의 메모리 블록들에서 이레이즈 동작이 수행됨에 따라 증가할 수 있다. 제3 시점(T3)에서의 윈도우 이레이즈 카운트 (7, 1, 2, 1)은 누적 이레이즈 카운트 (8, 5, 5, 3)과 기준 이레이즈 카운트(1, 4, 3, 2)의 차로 결정될 수 있다.
모니터링부(302)는 갱신된 윈도우 이레이즈 카운트에 기초하여 시간 윈도우를 갱신할지 여부를 결정할 수 있다. 도 4a는, 제3 시점(T3)에서 제1 윈도우 이레이즈 카운트의 합 (7+1+2+1)이 임계값 '10' 이상으로 판단되어 모니터링부(302)가 시간 윈도우를 갱신하는 경우를 예시한다.
모니터링부(302)는 제1 시간 윈도우를 제2 시간 윈도우로 갱신하면서 기준 이레이즈 카운트를 갱신하고 및 윈도우 이레이즈 카운트를 새로이 카운트할 수 있다. 도 4a의 예에서, 모니터링부(302)는 기준 이레이즈 카운트를 제3 시점(T3)에서의 이레이즈 카운트인 (8, 5, 5, 3) 으로 갱신할 수 있다. 복수의 윈도우 이레이즈 카운트 중 파선으로 둘러싸인 이레이즈 카운트는 제2 시간 윈도우에서의 제2 윈도우 이레이즈 카운트를 나타낸다. 메모리 장치별 제2 윈도우 이레이즈 카운트는 (0, 0, 0, 0)으로 초기화될 수 있다. 실시 예에 따라, 모니터링부(302)는 정해진 수의 윈도우 이레이즈 카운트를 메모리(190)에 저장할 수 있다. 도 4a의 예에서, 모니터링부(302)는 최근 4개의 윈도우 이레이즈 카운트를 메모리(190)에 저장할 수 있다. 모니터링부(302)는 제2 윈도우의 시작점인 제3 시점(T3) 이후에도 제1 윈도우 이레이즈 카운트를 메모리(190)에 유지할 수 있다.
도 4b는 각 메모리 장치에 포함된 메모리 블록들의 최근 이레이즈 카운트를 나타낸다.
모니터링부(302)는 적어도 하나의 윈도우 이레이즈 카운트에 기초하여 메모리 장치별 최근 이레이즈 카운트를 결정할 수 있다. 예를 들어, 모니터링부(302)는 메모리(190)에 저장된 메모리 장치별 복수의 윈도우 이레이즈 카운트의 합을 메모리 장치별 최근 이레이즈 카운트로 결정할 수 있다. 모니터링부(302)는 메모리 장치별 최근 이레이즈 카운트에 기초하여 최근 메모리 장치별 마모도의 증가 속도를 판단할 수 있다.
도 4c는 메모리 장치별 최근 이레이즈 카운트에 따른 메모리 장치별 마모도의 증가 속도를 예시한다.
모니터링부(302)는 메모리 장치의 최근 이레이즈 카운트가 높을수록 메모리 장치의 마모도의 증가 속도가 빠른 것으로 판단할 수 있다. 한편, 어떤 코어에서 호스트(102)로부터의 요청이 많이 수신될수록 해당 코어에서 제어되는 메모리 장치의 이레이즈 동작이 많이 발생할 수 있다. 따라서, 마모도의 증가 속도가 빠른 메모리 장치를 제어하는 코어일수록 최근 호스트(102)로부터의 요청을 많이 수신하는 것으로 판단할 수 있다.
도 5는 본 발명의 실시 예에 따른 상태 관리자(304)를 예시한다.
상태 관리자(304)는 메모리 시스템(110)의 복수의 상태에 따라 서로 다른 기준으로 리맵 관리자(306)를 제어할 수 있다.
상기 복수의 상태는 데이터 교환 상태, 리맵 검증 상태 및 대기 상태를 포함할 수 있다.
데이터 교환 상태는 데이터 교환부(176)가 메모리 장치들 간 데이터를 교환하는 상태를 나타낸다. 리맵 검증 상태는 모니터링부(302)가 데이터 교환 동작이 완료된 이후 메모리 장치들 간 마모도 차이가 완화되는지 여부를 검증하는 상태를 나타낸다. 대기 상태는 상기 데이터 교환 상태 및 리맵 검증 상태를 제외한 상태를 나타낸다.
도 5를 참조하여 복수의 상태에 따른 상태 관리자(304)의 동작을 설명한다.
메모리 시스템(110)의 초기 상태는 대기 상태일 수 있다. 대기 상태에서 상태 관리자(304)는 모니터링부(302)가 메모리 장치별 마모도 차이를 모니터링하도록 제어할 수 있다. 상태 관리자(304)는 모니터링부(302)의 모니터링 결과 메모리 장치들의 마모도 차이가 트리거 임계치 이상이면 리맵 관리자(306)가 논리 어드레스와 코어 간 매핑을 변경하도록 제어할 수 있다.
데이터 교환부(176)는 상기 변경된 논리 어드레스와 코어 간 매핑에 기초하여 메모리 장치들 간 데이터를 교환하도록 복수의 코어들을 제어할 수 있다. 단계 S502에서, 상태 관리자(304)는 현재 상태를 대기 상태에서 데이터 교환 상태로 변경할 수 있다.
데이터 교환 상태에서 상태 관리자(304)는 모니터링부(302)를 비활성화할 수 있다. 모니터링부(302)가 비활성화 상태일 때라도 메모리 장치들의 메모리 블록별 누적 이레이즈 카운트는 각 코어에 의해 카운트될 수 있다. 그러나, 모니터링부(302)는 비활성화 상태일 때 메모리 장치들의 마모도 차가 임계치 이상인지 여부는 판단하지 않을 수 있다. 상태 관리자(304)는 모니터링부(302)를 비활성화함으로써 데이터 교환 동작 중에는 메모리 장치들의 마모도 차이에 관계없이 데이터 교환 동작이 다시 트리거되는 일을 방지할 수 있다.
데이터 교환 동작이 완료되면 단계 S504에서 상태 관리자(304)는 현재 상태를 데이터 교환 상태에서 리맵 검증 상태로 변경할 수 있다. 리맵 검증 상태에서 상태 관리자(304)는 모니터링부(302)를 활성화할 수 있다. 활성화된 모니터링부(302)는 메모리 장치들 간 마모도의 차이를 모니터링할 수 있다. 상태 관리자(304)는 리맵 검증 상태에서 논리 어드레스와 코어 간 매핑 변경에 따라 메모리 장치들 간 마모도의 차이가 완화되는지 여부를 검증할 수 있다. 상태 관리자(304)는 검증 결과 메모리 장치들 간 마모도의 차이가 완화되었다고 판단되는 경우 단계 S506에서 리맵 검증 상태를 대기 상태로 변경할 수 있다. 상태 관리자(304)는 검증 결과 메모리 장치들 간 마모도의 차이가 완화되지 않았다고 판단되는 경우 단계 S508에서 리맵 검증 상태를 데이터 교환 상태로 변경하고, 리맵 관리자(306)가 논리 어드레스와 코어 간 매핑을 다시 변경하도록 제어할 수 있다. 상태 관리자(304)의 리맵 검증 동작이 도 6a 내지 도 6c를 예로 들어 설명된다.
도 6a 내지 도 6c는 상태 관리자(304)의 리맵 검증 동작을 설명하기 위한 도면이다.
도 6a 내지 도 6c는 시간(TIME)에 따른 메모리 장치들 간 누적 이레이즈 카운트의 차이(EC GAP)를 나타내는 그래프이다.
누적 이레이즈 카운트는 메모리 장치의 마모도의 일 예로서 도시된다. 메모리 장치들 간 누적 이레이즈 카운트의 차이는 메모리 장치별 누적 이레이즈 카운트의 최댓값과 최솟값의 차로 결정될 수 있다.
도 6a는 리맵 검증 결과 리맵 검증 상태에서 대기 상태로 변경되는 제1 예를 나타낸다.
모니터링부(302)는 데이터 교환 상태에는 이레이즈 카운트의 차이를 모니터링하지 않을 수 있다. 이레이즈 카운트의 차이가 모니터링되지 않는 시구간에서 이레이즈 카운트는 점선으로 도시된다.
상태 관리자(304)는 데이터 교환 동작이 완료되면 데이터 교환 상태를 리맵 검증 상태로 변경하고, 모니터링부(302)를 활성화할 수 있다. 모니터링부(302)가 활성화되면 상태 관리자(304)는 메모리 장치들 간 이레이즈 카운트의 차이 값을 획득할 수 있다. 상태 관리자(304)는 상기 이레이즈 카운트의 차이 값에 기초하여 메모리 장치들 간 마모도의 차이가 완화되었는지 판단할 수 있다.
이레이즈 카운트의 차이 값이 성공 임계치(TH_SUCCESS) 미만인 경우, 상태 관리자(304)는 논리 어드레스와 코어 간 매핑 변경에 따라 메모리 장치들 간 마모도의 차이가 완화되었다고 판단하고 데이터 교환 상태를 대기 상태로 변경할 수 있다. 성공 임계치는 논리 어드레스와 코어 간 매핑 변경에 따라 메모리 장치들 간 마모도의 차이를 완화하는 데 성공하였는지를 판단하는 기준일 수 있다. 데이터 교환 상태가 대기 상태로 변경되면, 상태 관리자(304)는 이레이즈 카운트의 차이 값이 트리거 임계치(TH_TRIGGER) 이상이 될 때 데이터 교환 동작을 수행할 수 있다. 트리거 임계치는 상태 관리자(304)가 대기 상태에서 글로벌 웨어레벨링 동작을 트리거하는 기준일 수 있다.
상기 트리거 임계치와 상기 성공 임계치는 서로 다른 값을 가질 수 있다. 예를 들어, 도 6a에 예시된 것과 같이 성공 임계치는 트리거 임계치보다 낮은 값으로 설정될 수 있다.
도 6b는 리맵 검증 결과 리맵 검증 상태에서 대기 상태로 변경되는 제2 예를 나타낸다.
도 6a를 참조하여 설명된 바와 마찬가지로, 상태 관리자(304)는 데이터 교환 동작이 완료되면 데이터 교환 상태를 리맵 검증 상태로 변경하고, 모니터링부(302)로부터의 이레이즈 카운트의 차이 값에 기초하여 메모리 장치들 간 마모도의 차이가 완화되었는지 판단할 수 있다.
이레이즈 카운트의 차이 값이 성공 임계치 이상인 경우 상태 관리자(304)는 메모리 장치들 간 마모도의 차이가 완화되지 않았다고 판단할 수 있다. 도 6b는 데이터 교환 동작을 완료한 직후 이레이즈 카운트의 차이 값이 성공 임계치 이상인 경우를 예시한다.
데이터 교환 동작 이후에 충분한 시간이 지나고, 논리 어드레스와 코어 간 변경된 어드레스 매핑에 기초하여 호스트(102)로부터의 다수의 요청이 처리되면 메모리 장치 간 마모도 차이가 완화될 수 있다. 그러나 데이터 교환 동작 직후에는 메모리 장치 간 마모도 차이가 충분히 완화되지 않거나, 데이터 교환 동작 수행 전보다 마모도 차이가 오히려 증가할 수도 있다.
본 발명의 실시 예에 따르면, 상태 관리자(304)는 데이터 교환 직후에 메모리 장치 간 마모도 차이가 트리거 임계치 이상이더라도, 정해진 조건을 만족하는 경우 마모도 차이가 성공 임계치 미만으로 감소할 때까지는 데이터 교환 동작을 다시 트리거하지 않을 수 있다.
도 6b의 예에서, 상태 관리자(304)는 데이터 교환 동작을 완료한 직후 마모도의 차이 값이 성공 임계치를 넘는 경우, 데이터 교환 동작을 완료한 직후 마모도의 차이 값을 실패 임계치(TH_FAIL)로 결정할 수 있다. 실패 임계치는 논리 어드레스와 코어 간 매핑 변경에 따라 메모리 장치들 간 마모도의 차이를 완화하는 데 실패하였는지를 판단하는 기준일 수 있다. 상태 관리자(304)는 정해진 수의 시간 윈도우 이후에 메모리 장치 간 마모도 차이가 실패 임계치 이상인지 판단할 수 있다.
도 6b의 예에서, 두 개의 시간 윈도우 이후에 메모리 장치 간 마모도 차이가 실패 임계치 미만이 되면 상태 관리자(304)는 메모리 장치 간 마모도 차이가 트리거 임계치 이상이더라도 데이터 교환 동작을 트리거하지 않을 수 있다. 상태 관리자(304)는 이후에 메모리 장치 간 마모도 차이가 완화되어 성공 임계치 미만이 되면 메모리 시스템(110)의 상태를 리맵 검증 상태에서 대기 상태로 변경할 수 있다.
도 6c는 리맵 검증 결과 리맵 검증 상태에서 데이터 교환 상태로 변경되는 예를 나타낸다.
도 6b를 참조하여 설명된 바와 같이, 상태 관리자(304)는 리맵 검증 상태에서는 상기 마모도의 차이 값이 트리거 임계치를 넘더라도 논리 어드레스와 코어 간 매핑을 변경하지 않을 수 있다. 도 6c의 예에서, 상태 관리자(304)는 두 개의 시간 윈도우 이후에 메모리 장치 간 마모도 차이가 실패 임계치 이상인지 판단할 수 있다.
상기 마모도 차이가 실패 임계치 이상인 경우, 상태 관리자(304)는 논리 어드레스와 코어 간 매핑을 변경했음에도 불구하고 마모도 차이를 균등화하는 데 실패한 것으로 판단할 수 있다. 상태 관리자(304)는 논리 어드레스와 코어 간 매핑을 다시 변경하도록 리맵 제어부(306)를 제어할 수 있다. 리맵 제어부(306)가 논리 어드레스와 코어 간 매핑을 변경하면, 데이터 교환부(176)는 상기 변경된 매핑에 따라 메모리 장치 간 데이터를 교환할 수 있다.
본 발명의 실시 예에 따르면, 데이터 교환 동작 직후에 메모리 장치 간 마모도가 균등화되는 추세를 반영하여 논리 어드레스와 코어 간 매핑을 변경할지 여부를 결정할 수 있다. 즉, 상태 관리자(304)는 메모리 시스템(110)의 상태에 따라 다른 조건을 적용하여 글로벌 웨어레벨링을 수행함으로써 잦은 글로벌 웨어레벨링으로 인한 메모리 시스템(110)의 성능 저하를 방지할 수 있다.
도 7a 내지 도 7c는 본 발명의 실시 예에 따른 리맵 관리자(306) 및 데이터 교환부(176)의 동작을 설명하는 도면이다.
도 7a는 논리 어드레스와 코어 간 매핑이 변경되기 전의 제1 매핑(702)을 나타낸다.
실시 예에 따라, 호스트 인터페이스 계층(172)은 호스트(102)로부터의 요청에 포함된 논리 어드레스를 코어 개수로 모듈러 연산을 수행하고, 모듈러 연산 결과에 따라 상기 요청을 각 코어로 분배할 수 있다. 예를 들어, 제1 매핑(702)에 따르면 어떤 요청에 포함된 논리 어드레스의 모듈러 연산 결과값이 '1'인 경우 호스트 인터페이스 계층(172)은 해당 요청을 제1 코어(132)로 제공할 수 있다. 제1 코어(132)는 상기 요청에 기초하여 제1 메모리 장치(152)에 액세스할 수 있다.
도 7b는 논리 어드레스와 코어 간 매핑이 변경된 후의 제2 매핑(704)을 나타낸다.
리맵 관리자(306)는 상태 관리자(304)의 제어에 따라 메모리 장치들 간 마모도의 차이가 정해진 조건을 만족하면 논리 어드레스와 코어 간 매핑을 변경할 수 있다. 예를 들어, 리맵 관리자(306)는 누적 마모도가 가장 낮은 메모리 장치를 제어하는 코어에 매핑된 논리 어드레스와 최근 마모도가 가장 높은 메모리 장치를 제어하는 코어에 매핑된 논리 어드레스를 교환할 수 있다. 최근 마모도가 가장 높은 메모리 장치는 최근 호스트(102)로부터의 요청이 가장 많이 처리된 메모리 장치일 수 있다. 따라서, 리맵 관리자(306)의 상기 교환에 따라 누적 마모도가 가장 낮은 메모리 장치에 호스트(102)로부터 가장 많은 요청이 수신되어서 메모리 장치들 간 마모도가 균등화될 수 있다.
도 7b는 제1 코어에 매핑된 논리 어드레스와 제2 코어에 매핑된 논리 어드레스가 교환되는 경우를 예시한다. 예를 들어, 제2 매핑(704)에 따르면 어떤 요청에 포함된 논리 어드레스의 모듈러 연산 결과값이 '1'인 경우 호스트 인터페이스 계층(172)은 해당 요청을 제2 코어(134)로 제공할 수 있다. 제2 코어(134)는 상기 요청에 기초하여 제2 메모리 장치(154)에 액세스할 수 있다.
논리 어드레스와 코어 간 매핑이 제1 매핑(702)에서 제2 매핑(704)으로 변경되면 데이터 교환부(176)는 제1 메모리 장치(152)와 제2 메모리 장치(154) 간에 저장된 데이터를 교환할 수 있다. 예를 들어, 데이터 교환부(176)는 제1 메모리 장치(152)에 저장되었던, 모듈러 연산 결과값이 '1'인 논리 어드레스에 대한 데이터를 제2 메모리 장치(154)로 이동시킬 수 있다. 예를 들어, 데이터 교환부(176)는 제1 메모리 장치(152)로부터 데이터를 리드하도록 제1 코어(132)를 제어할 수 있다. 데이터 교환부(176)는 제1 메모리 장치(152)로부터 리드된 데이터가 메모리(190)에 저장되면, 해당 데이터를 제2 메모리 장치(154)에 저장하도록 제2 코어(134)를 제어할 수 있다. 마찬가지로, 데이터 교환부(176)는 제2 메모리 장치(154)에 저장되었던, 모듈러 연산 결과값이 '2'인 논리 어드레스에 대한 데이터를 제1 메모리 장치(152)로 이동시킬 수 있다.
실시 예에 따라, 데이터 교환부(176)는 데이터 교환을 논리 어드레스 순서대로 수행할 수 있다.
도 7c는 데이터 교환 동작 중의 논리 어드레스와 코어 간 매핑 방법을 설명하기 위한 도면이다.
복수의 논리 어드레스는 정해진 크기로 그룹화될 수 있다. 이하에서 논리 어드레스가 그룹화된 단위를 청크(chunk)로 지칭한다. 도 7c는 논리 어드레스 순서로 배열된 복수의 청크를 예시한다.
데이터 교환부(176)는 청크 단위로 데이터 교환 동작을 수행할 수 있다. 예를 들어, 제1 청크의 논리 어드레스들에 연관된 데이터는 복수의 메모리 장치들(152, 154, 156, 158)에 나누어 저장될 수 있다. 데이터 교환부(176)는 논리 어드레스와 코어 간 매핑이 제1 매핑(702)에서 제2 매핑(704)으로 변경될 때 제1 청크의 논리 어드레스에 연관된 데이터 중 제1 메모리 장치(152)에 저장된 데이터와 제2 메모리 장치(154)에 저장된 데이터를 교환할 수 있다. 데이터 교환부(176)는 제1 청크의 데이터 교환 동작이 완료되면 제2 청크의 데이터 교환 동작을 수행할 수 있다.
호스트 인터페이스 계층(172)은 데이터 교환 동작이 수행되는 중에 호스트(102)로부터 요청을 수신하면, 상기 요청의 논리 어드레스 및 현재 데이터 교환 동작이 수행되는 데이터의 논리 어드레스의 비교 결과에 따라 제1 매핑(702) 또는 제2 매핑(704)에 기초하여 상기 요청을 복수의 코어들(132, 134, 136, 138) 중 어느 하나로 제공할 수 있다.
도 7c는 복수의 청크 중 제1 및 제2 청크의 데이터 교환 동작이 완료되고, 제3 청크의 데이터 교환 동작이 수행되고 있으며, 제2 및 제5 청크의 데이터 교환 동작이 수행되지 않은 경우를 예시한다.
호스트 인터페이스 계층(172)은 제1 내지 제2 청크에 포함된 논리 어드레스를 포함하는 요청을 수신하면, 해당 요청을 제2 매핑(704)에 기초하여 복수의 코어들(132, 134, 136, 138) 중 어느 하나로 제공할 수 있다. 호스트 인터페이스 계층(172)은 제3 청크의 논리 어드레스를 포함하는 요청을 수신하면, 제3 청크의 데이터 교환 동작이 완료될 때까지 대기한 후 해당 요청을 제2 매핑(704)에 기초하여 복수의 코어들(132, 134, 136, 138) 중 어느 하나로 제공할 수 있다. 호스트 인터페이스 계층(172)은 제4 내지 제5 청크에 포함된 논리 어드레스를 포함하는 요청을 수신하면, 해당 요청을 제1 매핑(704)에 기초하여 복수의 코어들(132, 134, 136, 138) 중 어느 하나로 제공할 수 있다.
도 1 내지 도 7c를 참조하여 설명된 본 발명의 실시 예에 따르면, 메모리 시스템(110)은 복수의 메모리 장치(152, 154, 156, 158), 복수의 메모리 장치들(152, 154, 156, 158) 중 대응하는 메모리 장치를 제어하는 복수의 코어들(132, 134, 136, 138) 및 호스트(102)로부터의 요청을 논리 어드레스에 기초하여 복수의 코어들(132, 134, 136, 138)로 제공하는 컨트롤러(170)를 포함할 수 있다.
컨트롤러(170)는 논리 어드레스와 코어 간 매핑에 기초하여 상기 요청을 복수의 코어들(132, 134, 136, 138) 중 어느 하나로 제공하는 호스트 인터페이스 계층(172), 복수의 메모리 장치(152, 154, 156, 158)의 마모도를 모니터링하는 모니터링부(302), 메모리 시스템(110)의 복수의 상태 및 복수의 메모리 장치(152, 154, 156, 158)의 마모도 차이에 기초하여 글로벌 웨어레벨링 동작을 트리거하는 상태 관리자(304), 상기 글로벌 웨어레벨링 동작의 트리거 여부에 따라 논리 어드레스와 코어 간 매핑을 변경하는 리맵 관리자(306)를 포함할 수 있다. 컨트롤러(170)는 리맵 관리자(306)에 의해 변경된 매핑에 기초하여 메모리 장치들 간 데이터를 교환하는 데이터 교환부(176)를 더 포함할 수 있다.
본 발명의 실시 예에 따르면, 상태 관리자(304)는 데이터 교환 상태, 리맵 검증 상태, 대기 상태 등 메모리 시스템(110)의 복수의 상태에 따라 다른 조건으로 글로벌 웨어레벨링 동작을 트리거할 수 있다. 예를 들어, 상태 관리자(304)는 데이터 교환 상태에서 데이터 교환 동작이 다시 트리거되지 않도록 하거나, 데이터 교환 동작 완료 후에 정해진 시간 범위에서 메모리 장치들 간 마모도 차이가 증가하는 조건 하에서 데이터 교환 동작이 트리거되도록 함으로써 글로벌 웨어레벨링 동작이 자주 트리거되어 메모리 장치들 간 불필요하게 데이터가 자주 교환되는 문제를 방지할 수 있다. 따라서, 본 발명의 실시 예에 따른 메모리 시스템(110)은 성능 저하를 최소화하면서 내부의 메모리 장치들 간 마모도를 균등화하여 메모리 시스템(110)의 수명을 향상시킬 수 있다.
한편, 본 발명의 상세한 설명에서는 구체적인 실시 예에 관해 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로, 본 발명의 범위는 설명된 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구의 범위뿐만 아니라 이 특허청구의 범위와 균등한 것들에 의해 정해져야 한다.
100: 데이터 처리 시스템
102: 호스트
110: 메모리 시스템

Claims (20)

  1. 메모리 시스템에 있어서,
    복수의 메모리 장치들;
    각각이 상기 복수의 메모리 장치들 중 대응하는 메모리 장치를 제어하는 복수의 코어들; 및
    호스트로부터의 요청을 논리 어드레스와 코어 간 매핑에 기초하여 상기 복수의 코어들 중 어느 하나로 제공하는 호스트 인터페이스 계층, 트리거에 응하여 상기 논리 어드레스와 코어 간 매핑을 변경하는 리맵 관리자, 상기 변경된 매핑에 기초하여 복수의 메모리 장치들 간 데이터를 교환하는 데이터 교환부 및 상태 관리자를 포함하는 컨트롤러를 포함하고,
    상기 상태 관리자는
    상기 데이터를 교환하는 동작의 수행 또는 완료 여부에 따라 상기 메모리 시스템의 상태를 결정하고, 상기 메모리 시스템의 상태 및 상기 복수의 메모리 장치들의 마모도 차이에 기초하여 상기 트리거를 상기 리맵 관리자로 제공하는
    메모리 시스템.
  2. 제1항에 있어서,
    상기 상태 관리자는
    상기 데이터를 교환하는 동작의 완료시 상기 메모리 시스템의 상태를 리맵 검증 상태로 결정하고, 상기 리맵 검증 상태의 정해진 시간 범위에서 상기 마모도 차이가 증가하면 상기 트리거를 상기 리맵 관리자로 제공하는
    메모리 시스템.
  3. 제2항에 있어서,
    상기 메모리 시스템의 대기 상태에서 상기 마모도 차이가 트리거 임계치 이상일 때 상기 트리거를 상기 리맵 관리자로 제공하는
    메모리 시스템.
  4. 제3항에 있어서,
    상기 상태 관리자는
    상기 리맵 검증 상태에서 상기 마모도 차이가 상기 트리거 임계치보다 낮은 성공 임계치 미만이면 상기 리맵 검증 상태를 대기 상태로 변경하는
    메모리 시스템.
  5. 제2항에 있어서,
    상기 컨트롤러는
    상기 복수의 메모리 장치들의 마모도를 모니터링하는 모니터링부를 더 포함하고,
    상기 상태 관리자는
    상기 데이터를 교환하는 동작의 수행 중에 상기 메모리 시스템의 상태를 데이터 교환 상태로 결정하고, 상기 데이터 교환 상태에서 상기 모니터링부를 비활성화하고, 상기 리맵 검증 상태에서 상기 모니터링부를 활성화하는
    메모리 시스템.
  6. 제1항에 있어서,
    상기 마모도 차이는 상기 복수의 메모리 장치들 중 마모도가 가장 높은 메모리 장치와 마모도가 가장 낮은 메모리 장치의 마모도 차로 결정되는
    메모리 시스템.
  7. 제1항에 있어서,
    상기 리맵 관리자는
    상기 복수의 메모리 장치들 중 마모도가 가장 낮은 메모리 장치를 제어하는 코어에 매핑된 논리 어드레스와 상기 복수의 메모리 장치들 중 마모도의 증가 속도가 가장 빠른 코어에 매핑된 논리 어드레스를 교환함으로써 상기 논리 어드레스와 코어 간 매핑을 변경하는
    메모리 시스템.
  8. 제1항에 있어서,
    상기 리맵 관리자는
    상기 복수의 메모리 장치들 중 마모도가 가장 낮은 메모리 장치를 제어하는 코어에 매핑된 논리 어드레스와 상기 복수의 코어들 중 최근 요청 처리량이 가장 많은 코어에 매핑된 논리 어드레스를 교환함으로써 상기 논리 어드레스와 코어 간 매핑을 변경하는
    메모리 시스템.
  9. 제8항에 있어서,
    상기 리맵 관리자는
    상기 복수의 메모리 장치들 각각의 누적 이레이즈 카운트에 기초하여 메모리 장치별 마모도를 결정하고,
    상기 복수의 메모리 장치들 각각의 최근 이레이즈 카운트에 기초하여 코어별 최근 요청 처리량을 결정하는
    메모리 시스템.
  10. 제1항에 있어서,
    상기 데이터 교환부는
    상기 데이터의 논리 어드레스 순서대로 상기 데이터를 교환하는 동작을 수행하고,
    상기 호스트 인터페이스 계층은
    상기 요청에 포함된 논리 어드레스와 현재 데이터 교환 동작이 수행되는 데이터의 논리 어드레스의 비교 결과에 따라, 변경된 매핑 또는 이전 매핑에 기초하여 상기 요청을 상기 복수의 코어들 중 어느 하나로 제공하는
    메모리 시스템.
  11. 호스트로부터의 요청을, 각각 대응하는 메모리 장치를 제어하는 복수의 코어들로 분배하는 컨트롤러에 있어서,
    상기 요청을 논리 어드레스와 코어 간 매핑에 기초하여 상기 복수의 코어들 중 어느 하나로 제공하는 호스트 인터페이스 계층, 트리거에 응하여 상기 논리 어드레스와 코어 간 매핑을 변경하는 리맵 관리자, 상기 변경된 매핑에 기초하여 상기 복수의 코어들과 대응하는 메모리 장치들 간 데이터를 교환하는 데이터 교환부 및 상태 관리자를 포함하고,
    상기 상태 관리자는
    상기 데이터를 교환하는 동작의 수행 또는 완료 여부에 따라 상기 메모리 시스템의 상태를 결정하고, 상기 컨트롤러의 상태 및 상기 메모리 장치들의 마모도 차이에 기초하여 상기 트리거를 상기 리맵 관리자로 제공하는
    컨트롤러.
  12. 제11항에 있어서,
    상기 상태 관리자는
    상기 데이터를 교환하는 동작의 완료시 상기 컨트롤러의 상태를 리맵 검증 상태로 결정하고, 상기 리맵 검증 상태의 정해진 시간 범위에서 상기 마모도 차이가 증가하면 상기 트리거를 상기 리맵 관리자로 제공하는
    컨트롤러.
  13. 제12항에 있어서,
    상기 컨트롤러의 대기 상태에서 상기 마모도 차이가 트리거 임계치 이상일 때 상기 트리거를 상기 리맵 관리자로 제공하는
    컨트롤러.
  14. 제13항에 있어서,
    상기 상태 관리자는
    상기 리맵 검증 상태에서 상기 마모도 차이가 상기 트리거 임계치보다 낮은 성공 임계치 미만이면 상기 리맵 검증 상태를 대기 상태로 변경하는
    컨트롤러.
  15. 제12항에 있어서,
    상기 컨트롤러는
    상기 복수의 메모리 장치들의 마모도를 모니터링하는 모니터링부를 더 포함하고,
    상기 상태 관리자는
    상기 데이터를 교환하는 동작의 수행 중에 상기 컨트롤러의 상태를 데이터 교환 상태로 결정하고, 상기 데이터 교환 상태에서 상기 모니터링부를 비활성화하고, 상기 리맵 검증 상태에서 상기 모니터링부를 활성화하는
    컨트롤러.
  16. 제11항에 있어서,
    상기 마모도 차이는 상기 메모리 장치들 중 마모도가 가장 높은 메모리 장치와 마모도가 가장 낮은 메모리 장치의 마모도 차로 결정되는
    컨트롤러.
  17. 제11항에 있어서,
    상기 리맵 관리자는
    상기 메모리 장치들 중 마모도가 가장 낮은 메모리 장치를 제어하는 코어에 매핑된 논리 어드레스와 상기 메모리 장치들 중 마모도의 증가 속도가 가장 빠른 코어에 매핑된 논리 어드레스를 교환함으로써 상기 논리 어드레스와 코어 간 매핑을 변경하는
    컨트롤러.
  18. 제11항에 있어서,
    상기 리맵 관리자는
    상기 메모리 장치들 중 마모도가 가장 낮은 메모리 장치를 제어하는 코어에 매핑된 논리 어드레스와 상기 복수의 코어들 중 최근 요청 처리량이 가장 많은 코어에 매핑된 논리 어드레스를 교환함으로써 상기 논리 어드레스와 코어 간 매핑을 변경하는
    컨트롤러.
  19. 제8항에 있어서,
    상기 리맵 관리자는
    상기 메모리 장치들 각각의 누적 이레이즈 카운트에 기초하여 메모리 장치별 마모도를 결정하고,
    상기 메모리 장치들 각각의 최근 이레이즈 카운트에 기초하여 코어별 최근 요청 처리량을 결정하는
    컨트롤러.
  20. 제11항에 있어서,
    상기 데이터 교환부는
    상기 데이터의 논리 어드레스 순서대로 상기 데이터를 교환하는 동작을 수행하고,
    상기 호스트 인터페이스 계층은
    상기 요청에 포함된 논리 어드레스와 현재 데이터 교환 동작이 수행되는 데이터의 논리 어드레스의 비교 결과에 따라, 변경된 매핑 또는 이전 매핑에 기초하여 상기 요청을 상기 복수의 코어들 중 어느 하나로 제공하는
    컨트롤러.

KR1020200038852A 2020-03-31 2020-03-31 컨트롤러 및 메모리 시스템 KR20210121696A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020200038852A KR20210121696A (ko) 2020-03-31 2020-03-31 컨트롤러 및 메모리 시스템
US17/036,759 US11461013B2 (en) 2020-03-31 2020-09-29 Controller, operating method of the controller and memory system
CN202110078814.7A CN113535078B (zh) 2020-03-31 2021-01-21 控制器、控制器的操作方法以及存储器系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200038852A KR20210121696A (ko) 2020-03-31 2020-03-31 컨트롤러 및 메모리 시스템

Publications (1)

Publication Number Publication Date
KR20210121696A true KR20210121696A (ko) 2021-10-08

Family

ID=77855899

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200038852A KR20210121696A (ko) 2020-03-31 2020-03-31 컨트롤러 및 메모리 시스템

Country Status (3)

Country Link
US (1) US11461013B2 (ko)
KR (1) KR20210121696A (ko)
CN (1) CN113535078B (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220049842A (ko) * 2020-10-15 2022-04-22 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101437123B1 (ko) * 2008-04-01 2014-09-02 삼성전자 주식회사 메모리 시스템 및 그것의 마모도 관리 방법
KR101969883B1 (ko) * 2012-04-13 2019-04-17 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
JP6139807B2 (ja) * 2014-12-04 2017-05-31 株式会社東芝 ストレージ装置、ストレージ装置の制御方法、及びプログラムを記憶するコンピュータ読み取り可能な不揮発性記憶媒体
KR102403266B1 (ko) 2015-06-22 2022-05-27 삼성전자주식회사 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
US10157141B2 (en) * 2016-03-09 2018-12-18 Toshiba Memory Corporation Memory system and method of controlling nonvolatile memory
KR20180123385A (ko) * 2017-05-08 2018-11-16 에스케이하이닉스 주식회사 메모리 시스템 및 이를 이용한 웨어-레벨링 방법
KR20200007595A (ko) * 2018-07-13 2020-01-22 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
KR20200033625A (ko) * 2018-09-20 2020-03-30 에스케이하이닉스 주식회사 메모리 시스템에서의 유효 데이터 체크 방법 및 장치

Also Published As

Publication number Publication date
CN113535078B (zh) 2024-04-02
US20210303176A1 (en) 2021-09-30
CN113535078A (zh) 2021-10-22
US11461013B2 (en) 2022-10-04

Similar Documents

Publication Publication Date Title
US20220091740A1 (en) Memory devices and electronic systems having a hybrid cache including static and dynamic caches, and related methods
US10789160B2 (en) Utilizing different data storage policies in response to different characteristics of data
CN110781096B (zh) 用于通过预测需求时间来执行垃圾收集的设备和方法
US11449418B2 (en) Controller and method for selecting victim block for wear leveling operation
US10860231B2 (en) Memory system for adjusting map segment based on pattern and operating method thereof
US11436140B2 (en) Memory control system for setting garbage collection frequency higher in dirty mode
US11513948B2 (en) Controller and memory system
US11132143B2 (en) Universal flash storage (UFS) device and computing device and computing device including storage UFS device for reporting buffer size based on reuse time after erase
TWI735918B (zh) 用來進行記憶裝置的存取管理之方法、記憶裝置及其控制器、主裝置以及電子裝置
US11392309B2 (en) Memory system for performing migration operation and operating method thereof
US11334272B2 (en) Memory system and operating method thereof
US11526296B2 (en) Controller providing host with map information of physical address for memory region, and operation method thereof
KR20210051873A (ko) 컨트롤러 및 메모리 시스템
US11182289B1 (en) Memory system and operating method thereof
KR20210121696A (ko) 컨트롤러 및 메모리 시스템
US11216383B2 (en) Storage device providing a virtual memory region, electronic system including the same, and method of operating the same
US11409444B2 (en) Memory system and operation method thereof
KR20230064849A (ko) 스토리지 장치 및 그 동작 방법
KR20220127076A (ko) 컨트롤러 및 컨트롤러의 동작 방법
KR20220096013A (ko) 컨트롤러 및 이를 포함하는 메모리 시스템
KR20220072357A (ko) 컨트롤러, 및 이를 포함하는 메모리 시스템 및 데이터 처리 시스템
KR20220042673A (ko) 컨트롤러, 컨트롤러의 동작 방법, 및 이를 포함하는 메모리 시스템

Legal Events

Date Code Title Description
A201 Request for examination