KR20210155593A - 메모리 시스템 및 메모리 시스템의 동작방법 - Google Patents

메모리 시스템 및 메모리 시스템의 동작방법 Download PDF

Info

Publication number
KR20210155593A
KR20210155593A KR1020200073022A KR20200073022A KR20210155593A KR 20210155593 A KR20210155593 A KR 20210155593A KR 1020200073022 A KR1020200073022 A KR 1020200073022A KR 20200073022 A KR20200073022 A KR 20200073022A KR 20210155593 A KR20210155593 A KR 20210155593A
Authority
KR
South Korea
Prior art keywords
memory device
cores
memory
device information
information
Prior art date
Application number
KR1020200073022A
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 KR1020200073022A priority Critical patent/KR20210155593A/ko
Priority to US17/015,306 priority patent/US11182289B1/en
Priority to CN202110066161.0A priority patent/CN113805792A/zh
Publication of KR20210155593A publication Critical patent/KR20210155593A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0873Mapping of cache memory to specific storage devices or parts thereof
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • G06F3/0649Lifecycle management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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/1016Performance improvement
    • G06F2212/1024Latency reduction
    • 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/7208Multiple device management, e.g. distributing data over multiple flash devices
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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

본 기술은 복수의 메모리장치; 및 상기 복수의 메모리장치 각각에 대응하여 제어하는 복수의 코어를 포함하는 컨트롤러를 포함하는 메모리 시스템에 있어서, 상기 컨트롤러는, 논리주소와 코어 간의 매핑정보 및 코어와 메모리장치정보 간의 매핑정보에 기초하여 호스트로부터의 요청에 메모리 장치 정보를 할당하여 상기 복수의 코어 중 어느 하나의 코어로 제공할 수 있으며, 라이트 카운트를 기반으로 글로벌웨어레벨링 동작 여부를 결정하는 호스트 인터페이스 유닛; 및 상기 글로벌웨어레벨링 동작에 응하여 상기 코어와 메모리장치정보 간의 매핑정보를 교환(SWAP)하여 변경할 수 있으며, 상기 복수의 코어 각각에 할당된 메모리장치정보에 대응하여 상기 메모리장치의 오픈블록 정보를 할당하여 복수의 코어로 전달하는 블록 관리자를 포함할 수 있다.

Description

메모리 시스템 및 메모리 시스템의 동작방법{MEMORY SYSTEM AND OPERATING METHOD THEREOF}
본 발명은 반도체 장치에 관한 것으로서, 구체적으로 비휘발성 메모리 셀을 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법에 관한 것이다.
최근 컴퓨터 환경에 대한 패러다임(paradigm)이 언제, 어디서나 컴퓨터 시스템을 사용할 수 있도록 하는 유비쿼터스 컴퓨팅(ubiquitous computing)으로 전환되고 있다. 이로 인해 휴대폰, 디지털 카메라, 노트북 컴퓨터 등과 같은 휴대용 전자 장치의 사용이 급증하고 있다. 이와 같은 휴대용 전자 장치는 일반적으로 메모리 장치를 이용하는 메모리 시스템, 다시 말해 데이터 저장 장치를 사용한다. 데이터 저장 장치는 휴대용 전자 장치의 주 기억 장치 또는 보조 기억 장치로 사용된다.
비휘발성 메모리 장치를 이용한 데이터 저장 장치는 하드 디스크와 달리 기계적인 구동부가 없어서 안정성 및 내구성이 뛰어나며, 또한 정보의 액세스 속도가 매우 빠르고 전력 소모가 적다는 장점이 있다. 이러한 장점을 갖는 메모리 시스템의 일 예로 데이터 저장 장치는, USB(Universal Serial Bus) 메모리 장치, 다양한 인터페이스를 갖는 메모리 카드, 솔리드 스테이트 드라이브(SSD: Solid State Drive) 등을 포함한다.
본 발명은 메모리 시스템 내에 포함된 메모리장치 간 마모도를 효과적으로 균등화할 수 있는 컨트롤러 및 메모리 시스템을 제공하고자 한다.
본 기술은 복수의 메모리장치; 및 상기 복수의 메모리장치 각각에 대응하여 제어하는 복수의 코어를 포함하는 컨트롤러를 포함하는 메모리 시스템에 있어서, 상기 컨트롤러는, 논리주소와 코어 간의 매핑정보 및 코어와 메모리장치정보 간의 매핑정보에 기초하여 호스트로부터의 요청에 메모리 장치 정보를 할당하여 상기 복수의 코어 중 어느 하나의 코어로 제공할 수 있으며, 라이트 카운트를 기반으로 글로벌웨어레벨링 동작 여부를 결정하는 호스트 인터페이스 유닛; 및 상기 글로벌웨어레벨링 동작에 응하여 상기 코어와 메모리장치정보 간의 매핑정보를 교환(SWAP)하여 변경할 수 있으며, 상기 복수의 코어 각각에 할당된 메모리장치정보에 대응하여 상기 메모리장치의 오픈블록 정보를 할당하여 복수의 코어로 전달하는 블록 관리자를 포함할 수 있다.
본 기술은 복수의 메모리장치 및 상기 복수의 메모리장치 각각에 대응하여 제어하는 복수의 코어를 포함하는 컨트롤러를 포함하는 메모리 시스템 동작방법에 있어서, 상기 복수의 각 코어에 대응하는 라이트 카운트를 기반으로 글로벌웨어레벨링 동작 여부를 결정하는 단계; 상기 글로벌 웨어레벨링 동작이 결정되면, 호스트 요청에 대한 배리어 동작을 수행하는 단계; 상기 복수의 각 코어의 라이트 카운트에 기초하여 코어와 메모리장치정보 간의 매핑 정보를 교환하여 변경하는 단계; 및 상기 복수의 각 코어마다 할당된 오픈블록을 클로즈한 후, 상기 변경된 코어와 메모리장치정보간의 매핑정보에 기초하여 새로운 오픈블록을 복수의 코어에게 할당하는 단계를 포함할 수 있다.
본 발명은 복수의 각 코어에 대응하는 라이트 횟수에 따라, 복수의 각 코어 간의 글로벌 웨어 레벨링(Global Wear Leveling) 동작을 수행할 수 있으며, 글로벌 웨어 레벨링 수행 시, 복수의 메모리장치에 저장된 데이터의 이동 없이, 복수의 코어 각각에 대응하는 메모리장치 정보만을 스왑(SWAP)함으로써 메모리장치 간 마모도를 효과적으로 균등화 할 수 있다.
본 발명에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 발명이 속하는 분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템을 포함하는 데이터 처리 시스템의 도면이다.
도 2는 본 발명의 실시예에 따른 메모리 시스템에서 사용되는 슈퍼 메모리블록의 개념을 설명하기 위해 도시한 도면이다.
도 3은 본 발명의 일실시예를 설명하기 위한 컨트롤러에 대해 구체적으로 설명한 도면이다.
도 4는 본 발명의 일실시예를 설명하기 위한 논리주소-코어 매핑테이블을 나타낸 도면이다.
도 5는 본 발명의 일실시예를 설명하기 위한 코어-메모리장치정보 매핑테이블을 나타낸 도면이다.
도 6는 본 발명의 일실시예를 설명하기 위한 제1 및 제2 논리-물리주소(L2P) 매핑 테이블을 나타낸 도면이다.
도 7은 본 발명의 일실시예에 따른 라이트 동작 방법을 설명하기 위한 순서도이다.
도 8은 본 발명의 일실시예에 따른 글로벌웨어레벨링 동작을 설명하기 위한 순서도이다.
도 9는 본 발명의 일실시예에 따른 리드 동작을 설명하기 위한 순서도이다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 설명하기로 한다. 그러나, 본 발명은 이하에서 개시되는 실시예에 한정되는 것이 아니라 서로 다른 다양한 형태로 구성될 수 있으며, 단지 본 실시예는 본 발명의 개시가 완전하도록하며 통상의 지식을 가진자에게 본 발명의 범주를 완전하게 알려주기 위해 제공되는 것이다.
도 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) 및 복수의 코어(142, 144)를 통해 상기 복수의 메모리장치를 제어하는 컨트롤러(130)를 포함할 수 있다. 복수의 메모리장치(152,154)은 호스트(102)를 위한 데이터를 저장할 수 있다. 복수의 코어(142, 144)는 복수의 메모리장치(152,154)의 데이터 저장을 제어할 수 있다.
복수의 메모리장치(152,154)들 각각은 비휘발성 메모리장치일 수 있으며, 전원이 공급되지 않아도 저장된 데이터를 유지할 수 있다. 복수의 메모리장치(152,154)은 프로그램 동작을 통해 호스트(102)로부터 제공된 데이터를 저장할 수 있고, 리드 동작을 통해 호스트(102)로 복수의 메모리장치(152,154)에 저장된 데이터를 제공할 수 있다. 복수의 메모리장치(152,154)은 복수의 메모리 블록들을 포함하며, 메모리 블록들 각각은 복수의 페이지들을 포함하며, 상기 페이지들 각각은 워드라인에 연결된 복수의 메모리 셀들을 포함할 수 있다. 일 실시예에서, 복수의 메모리장치(152,154)은 플래시 메모리가 될 수 있다. 상기 플래시 메모리는 3차원 스택 구조를 가질 수 있다. 여기도 도 2를 통해 복수의 메모리장치 중 제1메모리장치(152)를 일례로 하여 설명하기로 한다.
컨트롤러(130)는 호스트 인터페이스 유닛(120), 멀티 코어부(140), 블록관리부(170) 및 메모리 인터페이스 유닛(160)을 포함할 수 있다.
호스트 인터페이스 유닛(120)은 호스트(102)로부터 전달되는 커맨드, 데이터, 논리주소 등을 주고받기 위한 것이다. 호스트 인터페이스 유닛(120)은 논리주소와 코어 간 매핑 및 코어와 메모리장치 간 매핑에 기초하여 호스트(102)로부터의 요청을 복수의 코어(142, 144) 중 어느 하나로 제공할 수 있다. 즉, 호스트(102)로부터의 요청을 각 코어에 분배함으로써 복수의 코어(142, 144)의 병렬처리 성능을 향상시킬 수 있다. 상기 요청은 호스트(102)에서 사용되는 논리주소, 일례로 논리 블록 주소(LBA)를 포함할 수 있다.
멀티 코어부(140)은 복수의 코어(142,144)을 포함할 수 있다. 일례로, 복수의 코어(142, 144)는 제1코어(142) 및 제2코어(144)를 포함할 수 있다. 복수의 코어(142, 144)은 복수의 메모리장치(152, 154)과 일대일로 연결될 수 있다. 각 코어는 정해진 메모리장치를 제어할 수 있다. 복수의 코어(142, 144)은 서로 병렬로 동작할 수 있다. 복수의 코어(142, 144)는 호스트 인터페이스 유닛(120)에 의해 분배된 논리주소를 포함하는 요청 및 메모리장치 정보를 전달받으면 각 코어는 블록관리부(146)로부터 메모리장치 정보에 포함된 오픈블록을 할당받아 요청을 처리할 수 있다.
여기서, 복수의 코어(142,144)는 복수의 메모리장치(152,154)과 하나의 반도체 장치로 집적될 수 있다. 일 예로, 복수의 코어(142, 144) 및 복수의 메모리장치(152,154)은 하나의 반도체 장치로 집적되어 SSD를 구성할 수 있다. 메모리 시스템(110)이 SSD로 사용되면, 메모리 시스템(110)에 연결된 호스트(102)의 동작 속도는 향상될 수 있다. 게다가, 복수의 코어(142, 144) 및 복수의 메모리장치(152,154)은 하나의 반도체 장치로 집적되어 메모리 카드를 구성할 수도 있다. 예컨대, 복수의 코어(142, 144) 및 복수의 메모리장치(152,154)은 PC 카드(PCMCIA: Personal Computer Memory Card International Association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro), SD 카드(SD, miniSD, microSD, SDHC), 유니버설 플래시 기억 장치(UFS) 등과 같은 메모리 카드를 구성할 수 있다.
복수의 코어(142, 144)은 호스트(102)로부터의 요청에 응하여 포그라운드 동작(foreground operation)을 수행할 수 있다. 일례로, 제1 코어(142)는 호스트(102)로부터의 라이트 요청에 응하여 제1 메모리장치(152)의 메모리 블록에 데이터를 프로그램하도록 제1 메모리장치(152)를 제어하고, 리드 요청에 응하여 제1 메모리장치(152)의 메모리 블록으로부터 데이터를 리드하도록 제1 메모리장치(152)를 제어할 수 있다. 제2 코어(144)는 호스트(102)로부터의 라이트 요청에 응하여 제2 메모리장치(154)의 메모리 블록에 데이터를 프로그램하도록 제2 메모리장치(154)를 제어하고, 리드 요청에 응하여 제2 메모리장치(154)의 메모리 블록으로부터 데이터를 리드하도록 제2 메모리장치(154)를 제어할 수 있다.
또한, 복수의 코어(142, 144)은 복수의 메모리장치(152, 154)에 대한 백그라운드 동작(background operation)을 수행할 수도 있다.
블록관리부(170)는 복수의 코어(142, 144)별로 제어하는 복수의 메모리장치에 포함된 오픈 블록 정보를 관리한다. 즉, 복수의 코어(142, 144)가 호스트로부터 전달받은 라이트 요청을 수행하기 위해, 복수의 각 코어마다 오픈 블록 정보를 할당한다. 또한, 블록관리부(170)는 복수의 메모리장치에 포함된 복수의 메모리 블록의 유효 페이지 개수의 정보도 관리할 수 있다.
메모리(131)는 메모리 시스템(110)의 동작 메모리로서의 역할을 수행할 수 있으며, 메모리 시스템(110)의 구동을 위한 데이터를 저장할 수 있다. 복수의 코어(142, 144)은 호스트(102)로부터의 요청에 응하여 복수의 메모리장치(152,154)이 리드, 프로그램, 이레이즈 동작을 수행하도록 복수의 메모리장치(152,154)을 제어할 수 있다. 복수의 코어(142, 144)은 복수의 메모리장치(152,154)로부터 독출되는 데이터를 호스트(102)로 제공할 수 있으며, 호스트(102)로부터 제공되는 데이터를 복수의 메모리장치(152,154)에 저장할 수 있다. 메모리(190)는 복수의 코어(142, 144)과 복수의 메모리장치(152,154)이 이러한 동작을 수행하는 데 필요한 데이터를 저장할 수 있다.
메모리(131)는 휘발성 메모리로 구현될 수 있다. 예컨대, 메모리(190)는 정적 랜덤 액세스 메모리(SRAM: Static Random Access Memory), 또는 동적 랜덤 액세스 메모리(DRAM: Dynamic Random Access Memory) 등으로 구현될 수 있다. 메모리(190)는 컨트롤러(130) 내부 또는 외부에 배치될 수 있다. 도 1은 메모리(190)가 컨트롤러(130) 내부에 배치되는 경우를 예시한다.
메모리 인터페이스 유닛(160)은 복수의 코어(142,144)부터 요청에 따른 물리주소를 전달받으면, 물리주소에 대응하는 메모리장치에 요청을 처리할 수 있다. 또한, 컨트롤러(130)가 호스트(102)로부터의 요청에 응답하여 메모리장치(150)를 제어하기 위해, 컨트롤러(130)와 메모리장치(150) 간의 인터페이싱을 수행하는 메모리/스토리지(storage) 인터페이스가 된다. 여기서, 메모리 인터페이스 유닛(160)은, 복수의 메모리장치(152, 154)가 플래시 메모리, 특히 일 예로 메모리장치(152, 154)가 NAND 플래시 메모리일 경우에 NAND 플래시 컨트롤러(NFC: NAND Flash Controller)로서, 코어(142, 144)의 제어에 따라, 메모리장치(152, 154)의 제어 신호를 생성하고 데이터를 처리한다. 그리고, 메모리 인터페이스 유닛(160)은, 컨트롤러(130)와 메모리장치(150) 간의 커맨드 및 데이터를 처리하는 인터페이스, 일 예로 NAND 플래시 인터페이스의 동작, 특히 컨트롤러(130)와 메모리장치(152,154) 간 데이터 입출력을 지원하며, 메모리장치(152,154)와 데이터를 주고 받는 영역으로 플래시 인터페이스 유닛(FIL: Flash Interface Layer, 이하 'FIL'이라 칭하기로 함)이라 불리는 펌웨어(firmware)를 통해 구동될 수 있다.
한편, 복수의 메모리장치(152, 154)에 포함된 메모리 블록들은 수명이 제한될 수 있다. 따라서, 메모리 블록에 정해진 횟수의 이레이즈/라이트(Erase/Write) 동작이 수행되면 해당 메모리 블록을 더 이상 사용할 수 없다. 각 코어는 백그라운드 동작으로서 자신이 제어하는 메모리장치에 대한 로컬 웨어레벨링 동작을 수행할 수 있다. 일례로, 코어는 메모리장치 내의 메모리 블록들 중 마모도가 낮은 메모리 블록에 자주 액세스되는 데이터가 저장되도록 함으로써 메모리장치 내의 메모리 블록들 간 마모도를 균등화할 수 있다. 복수의 코어(142, 144)이 로컬 웨어레벨링 동작을 수행하면 개별 메모리장치 내의 메모리 블록들끼리는 마모도가 균등화될 수 있다.
한편, 호스트(102)로부터 수신되는 요청들이 어떤 논리주소들에 대한 요청들인지에 따라 각 코어에 분배되는 요청의 양이 서로 달라질 수 있다. 각 코어에 분배되는 요청의 양이 균등하지 않다면 메모리장치 간에는 메모리 블록들이 균등하게 마모되지 않을 수 있다. 복수의 코어(142, 144)이 로컬 웨어레벨링 동작을 수행하더라도 메모리장치 간에는 메모리 블록들의 마모도가 균등화되기 어렵다. 어떤 메모리장치의 메모리 블록들이 다른 메모리장치의 메모리 블록들보다 더 빠르게 수명이 다하는 경우, 다른 메모리장치의 메모리 블록들의 수명이 남아있더라도 메모리 시스템(110) 전체를 정상적으로 사용할 수 없다.
본 발명의 실시 예에 따르면, 컨트롤러(130)는 복수의 코어(142,144) 각각에서 수행된 라이트 카운트에 따른 복수의 메모리장치(152, 154) 간 마모도 차이에 기초하여 복수의 코어(142,144)와 복수의 메모리장치(152,154) 간의 매핑 정보를 변경하며, 변경된 매핑에 따라 호스트(102)로부터 전달받은 요청에 대응하여 동작할 수 있도록 글로벌 웨어레벨링 동작을 수행할 수 있다. 이와 관련하여 도 3 내지 도 6를 통해 구체적으로 설명하기로 한다.
도 2는 도 1의 메모리 시스템(110)에 포함된 복수의 메모리장치(152,154)들 중 제1 메모리장치(152)를 예시적으로 나타낸다.
제1 메모리장치(152)는 복수의 메모리 다이(DIE)들을 포함할 수 있다. 일례로, 상기 복수의 메모리 다이(DIE) 각각은 NAND 메모리 다이일 수 있다. 상기 복수의 메모리 다이(DIE)들은 채널(CH)을 통해 컨트롤러(130)와 연결될 수 있다.
각 메모리 다이(DIE)는 메모리 다이(DIE), 플레인, 메모리 블록 및 페이지의 유닛 구조를 가질 수 있다. 하나의 메모리 다이(DIE)는 한 번에 하나의 커맨드를 수신할 수 있다. 하나의 메모리 다이(DIE)는 복수의 플레인을 포함할 수 있으며, 상기 복수의 플레인은 상기 메모리 다이(DIE)가 수신한 커맨드를 병렬로 처리할 수 있다. 각 플레인은 복수의 메모리 블록을 포함할 수 있다. 메모리 블록은 이레이즈 동작의 최소 단위일 수 있다. 하나의 메모리 블록은 복수의 페이지를 포함할 수 있다. 페이지는 라이트 동작의 최소 단위일 수 있다. 복수의 메모리 다이(DIE)들은 서로 병렬로 동작할 수 있다.
또한, 제2메모리장치(154)의 구조는 제1메모리장치(152)의 구조와 실질적으로 동일하거나 유사할 수 있다. 복수의 메모리장치(152, 154)들은 서로 병렬로 동작할 수 있다.
도 3은 본 발명의 일실시예를 설명하기 위한 컨트롤러에 대한 도면이다.
도 3을 참조하면, 호스트 인터페이스 유닛(120)은 매핑관리자(122) 및 글로벌웨어레벨링관리자(124)를 포함할 수 있다.
매핑관리자(122)는 호스트(102)로부터 전달되는 커맨드, 데이터 및 논리주소 등을 포함하는 요청을 순차적으로 버퍼(미도시)에 저장한 뒤, 순서에 따라 요청 내에 포함된 논리주소를 복수의 코어 중 어느 하나의 코어로 분배한다.
구체적으로, 매핑관리자(122)는 호스트(102)로부터의 요청에 포함된 논리주소를 코어 개수로 모듈러 연산을 수행하고, 모듈러 연산 결과에 따라 상기 요청을 각 코어로 분배할 수 있다. 즉, 복수의 코어 개수가 n개인 경우, 'LBA%n' 연산 결과에 따라 복수의 코어 중 어느 하나를 선택할 수 있다. 여기서, 'LBA%n' 연산은 'LBA'를 n개(n은 코어의 개수)로 나눈 나머지를 나타낸다. 일례로, 도 4의 논리주소-코어 매핑테이블에 따르면, 어떤 요청에 포함된 논리주소의 모듈러 연산 결과값이 '0'인 경우, 매핑관리자(122)는 해당 요청을 제1 코어(142)로 분배할 수 있다. 그리고, 어떤 요청에 포함된 논리주소의 모듈러 연산 결과값이 '1'인 경우, 매핑관리자(122)는 해당 요청을 제2 코어(144)로 분배할 수 있다. 여기서, 호스트(102)로부터의 요청을 각 코어로 분배하기 위해 모듈러 연산을 사용하여 설명하고 있지만, 모듈러 연산 이외 다른 연산을 적용하여 상기 요청을 각 코어로 분배할 수도 있다. 이때, 모듈러 연산 이외 다른 연산은 하나의 논리주소가 하나의 코어에만 매핑될 수 있도록 산출되는 연산을 적용한다.
또한, 매핑관리자(122)는 호스트(102)로부터 전달받은 요청에 포함된 논리주소를 내부 논리주소로 변환할 수 있다. 일례로, 호스트로부터 전달받은 논리주소가 'LBA0'인 경우, 제1코어(142)로 분배되며, 제1코어(142)에서 메모리장치의 실제 물리주소로 변환시키기 위한 내부 논리주소는 'CLBA0'로 변환될 수 있다. 호스트로부터 전달받은 논리주소가 'LBA1'인 경우, 제2코어(144)로 분배되며, 제2코어(144)에서 메모리장치의 실제 물리주소로 변환시키기 위한 내부 논리주소는 'CLBA0'로 변환될 수 있다. 그리고, 호스트로부터 전달받은 논리주소가 'LBA2'인 경우, 제1코어(142)로 분배되며, 제1코어(142)에서 메모리장치의 실제 물리주소로 변환시키기 위한 내부 논리주소는 'CLBA1'로 변환될 수 있다.
그리고, 매핑관리자(122)는 변환된 내부 논리주소(CLBA)를 포함하는 요청 및 분배된 코어정보를 글로벌웨어레벨링 관리자(124)에 전달한다.
글로벌웨어레벨링관리자(124)는 카운팅 유닛(1241), 메모리장치정보할당유닛(1242) 및 모니터링유닛(1243)을 포함할 수 있다.
카운팅 유닛(1241)은 매핑관리자(122)로부터 전달받은 요청이 라이트 요청인 경우, 내부논리주소와 코어 간의 매핑에 기초하여, 내부논리주소의 해당 코어의 라이트 카운트를 증가시킬 수 있다. 여기서, 복수의 코어(152,154) 각각에 대한 라이트 카운트를 관리하는 이유는 모니터링유닛(1243)를 통해 주기적으로 글로벌웨어레벨링 수행 여부를 판단하기 위함이다.
메모리장치정보할당유닛(1242)은 매핑관리자(122)로부터 전달받은 요청이 라이트 요청인 경우, 상기 요청의 논리주소에 내부논리주소와 코어 간의 매핑에 기초하여 코어-메모리장치정보 매핑테이블에서 확인하여 복수의 메모리장치 정보 중 해당되는 메모리장치 정보를 할당한 후 해당 코어로 전달한다. 코어-메모리장치정보 매핑테이블은 복수의 코어 및 복수의 코어 각각에 대응하여 매핑된 메모리장치정보를 포함하고 있다. 코어-메모리장치정보 매핑테이블은 메모리에 저장될 수 있다. 일례로, 도 5의 코어-메모리장치정보 매핑테이블에 따르면, 제1코어(142) 및 제2코어(144)가 저장되어 있으며, 제1코어(142)에는 요청에 기초하여 제1메모리장치에 엑세스할 수 있도록 제1메모리장치정보(MD1)가 대응되어 있으며, 제2코어(144)에는 요청에 기초하여 제2메모리장치에 엑세스할 수 있도록 제2메모리장치정보(MD2)가 저장되어 있다. 즉, 'LBA0'를 처리할 코어가 제1코어(142)인 경우, 'LBA0'에 제1메모리장치정보(MD1)를 할당하여 제1코어(142)로 전달한다.
모니터링 유닛(1243)은 복수의 코어(142,144) 각각에 대응하는 라이트 카운트를 기반으로 복수의 메모리장치(152, 154) 각각의 마모도를 모니터링할 수 있다. 즉, 메모리장치의 최근 라이트 카운트가 높을수록 메모리장치의 마모도의 증가 속도가 빠른 것으로 판단할 수 있다. 어떤 코어에서 호스트(102)로부터의 라이트 요청이 많이 수신될수록 해당 코어에서 제어되는 메모리장치의 라이트 동작이 많이 발생할 수 있다. 마모도의 증가 속도가 빠른 메모리장치를 제어하는 코어일수록 최근 호스트(102)로부터의 요청을 많이 수신하는 것으로 판단할 수 있다. 따라서, 복수의 코어(142,144) 각각에 대응하는 라이트 카운트에 기초하여 복수의 코어 각각에 해당되는 메모리장치의 마모도 및 마모도의 증가속도를 판단할 수 있으며, 이를 통해 글로벌 웨어레벨링 동작을 트리거할 수 있다. 따라서, 글로벌웨어레벨링 수행 여부를 판단하기 위해, 주기적으로 타이머(미도시) 호출에 의해 복수의 코어 각각의 라이트 카운트가 라이트임계값(TH) 이상인지 확인할 수 있다. 본 발명에서 모니터링 유닛(1243)이 주기적으로 라이트 카운트를 확인하는 것을 일례로 하여 설명하고 있지만, 호스트로부터 전달받은 요청이 완료될 때마다 확인하거나, 메모리장치가 비활성일 때에도 확인할 수 있다. 복수의 코어(142,144) 각각의 라이트 카운트가 라인트 임계값(TH) 이상인 경우, 글로벌 웨어레벨링 동작 수행을 결정한다. 일례로, 라이트 임계값(TH)인 '30'인 경우, 모니터링 유닛(1243)은 주기적으로 메모리(131)에 저장된 코어별로 대응하는 라이트 카운트를 모니터링한 결과, 제1코어(142)의 라이트 카운트가 '40'이고, 제2코어(144)의 라이트카운트가 '25' 일 때, 제1코어(142)의 라이트 카운트가 라이트임계값(TH) 이상이기 때문에, 제1코어(142)의 라이트 로드가 많은 것으로 판단하여, 복수의 코어간의 글로벌 웨어레벨링 동작 수행을 결정한다.
위와같이, 글로벌웨어레벨링 동작 수행이 결정되면, 제1글로벌웨어레벨링단계, 제2글로벌웨어레벨링단계 및 제3글로벌웨러레벨링 단계를 거쳐 글로벌웨어레벨링 동작을 수행할 수 있다.
먼저, 제1글로벌웨어레벨링단계에 있어서, 모니터링 유닛(1243)은, 호스트 요청에 대한 배리어 동작을 수행할 수 있다. 즉, 호스트 요청에 대한 배리어 동작을 수행한다는 것은, 호스트 요청을 홀드(hold)시킨 후, 현재 처리 중인 요청까지만 완료하는 것을 의미할 수 있다.
다음으로, 제2글로벌웨어레벨링단계를 수행하기 위해, 모니터링 유닛(1243)은 호스트 요청에 대한 배리어 동작을 수행 후, 블록관리자(170)에 포함된 메모리장치정보교환부(1702)에 복수의 코어와 복수의 메모리장치간의 매핑 정보 변경 요청을 전달한다.
마지막으로, 제3글로벌웨어레벨링단계에 있어서, 모니터링 유닛(1243)은 블록관리자(170)를 통해 복수의 코어와 복수의 메모리장치간의 매핑 정보 변경이 완료되면, 복수의 코어(142, 144)에게 변경된 복수의 코어와 복수의 메모리장치간의 매핑 정보 및 사용중인 오픈블록 클로즈 요청을 전달한다.
블록 관리자(170)는 오픈블록관리자(1701) 및 메모리장치정보교환부(1702)를 포함할 수 있다.
오픈블록관리자(1701)는 복수의 코어(142, 144)로부터 각 코어별로 제어되는 메모리장치의 오픈블록정보 요청을 전달받으면, 복수의 코어로부터 전달받은 오픈블록정보 요청에 포함된 메모리장치정보를 확인한 후, 메모리장치정보에 대응하는 오픈블록리스트에 포함된 하나 이상의 오픈 블록 중 어느 하나의 오픈블록정보를 해당 코어에 할당한다.
메모리장치정보교환부(1702)는 모니터링유닛(1243)으로부터 복수의 코어와 복수의 메모리장치간의 매핑 정보 변경 요청을 전달받으면, 각 코어의 라이트 카운트에 기초하여 코어-메모리장치정보 매핑테이블에 포함된 복수의 코어와 복수의 메모리장치간의 매핑 정보를 교환하여 변경할 수 있다. 즉, 메모리장치정보교환부(1702)는 복수의 코어 중 라이트 카운트가 가장 높은 코어에 대응하는 메모리장치정보와 복수의 코어 중 라이트 카운트가 가장 낮은 코어에 대응하는 메모리장치정보를 교환할 수 있다. 일례로, 도 5의 코어-메모리장치정보 매핑테이블을 참조하면, 메모리장치정보교환부(1702)는 코어-메모리장치정보 매핑테이블에 포함된 복수의 각 코어(142, 144) 별로 대응되는 제1 메모리장치(152) 정보와 제2 메모리장치정보(154)를 교환(SWAP)하여 매핑 정보를 변경할 수 있다. 이와 같이, 복수의 각 코어별로 대응되는 제1 메모리장치(152) 정보와 제2 메모리장치정보(154)를 교환(SWAP)하여 매핑 정보를 변경함으로써, 제1 코어(142)에 의해 제2메모리장치(154)가 제어될 수 있으며, 제2코어(142)에 의해 제1메모리장치(152)가 제어될 수 있다. 따라서, 제1코어로 분배된 논리주소를 포함한 라이트 요청에 대응하는 동작은 제2메모리장치(154)에 수행될 수 있고, 제2코어로 분배된 논리주소를 포함한 라이트 요청에 대응하는 동작은 제1메모리장치(152)에서 수행될 수 있다. 이와 같이, 각 코어별로 대응하는 메모리장치 정보를 교환함으로써, 복수의 메모리장치(152, 154)에 저장된 데이터를 이동시키지 않고도 효과적인 글로벌웨어레벨링 동작을 수행할 수 있다.
다음으로, 멀티 코어에 포함된 복수의 코어(142, 144)는 호스트 인터페이스 유닛(120)으로부터 내부 논리주소를 포함하는 요청과 메모리장치정보를 수신하여 처리할 수 있다. 구체적으로, 복수의 코어(142, 144)는 전달받은 요청이 라이트요청인 경우, 내부논리주소를 메모리장치정보에 대응하는 메모리장치의 실제 물리주소로 변환하기 위해, 오픈블록이 존재하는지 확인한다. 확인 결과, 오픈블록이 존재하지 않는 경우, 오픈블록관리자(1701)에게 메모리장치 정보에 대응하는 오픈블록 정보를 요청하여 오픈 블록 정보를 전달받는다. 복수의 코어(142, 144)는 오픈 블록 정보를 기반으로, 내부 논리주소를 물리주소로 변환하여 해당 코어에 대응하는 논리-물리주소(L2P) 매핑테이블에 저장하며, 메모리 인터페이스 유닛(160)에 요청, 메모리장치정보 및 물리주소를 전달한다. 여기서, 복수의 코어(142, 144)는 라이트 요청을 전달받을 때마다 오픈블록관리자에게 오픈블록정보를 요청하는 것이 아니라, 사용 중인 오픈블록에 데이터를 라이트할 수 있는 공간이 존재하지 않는 경우, 오픈블록관리자에게 오픈 블록 정보 할당을 요청하여 오픈 블록 정보를 전달받는다. 복수의 코어(142, 144)는 오픈블록 정보를 기반으로 내부 논리주소를 물리주소로 변환시킨다. 일례로, 도 6의 제1 및 제2 논리-물리주소(L2P) 매핑 테이블을 살펴보면, 제1논리-물리주소(L2P) 매핑 테이블은 제1코어에 의해 관리되며, 제2논리-물리주소(L2P) 매핑 테이블은 제2코어에 의해 관리된다. 제1 및 제2 논리-물리주소(L2P) 매핑 테이블은 복수의 L2P세그먼트(L2P S1 ~ L2P Sj)를 포함할 수 있다. 복수의 L2P 세그먼트들(L2P S1 ~ L2P Sj)은 호스트(102)로부터 수신되는 논리 어드레스들 전체를 기 설정된 개수로 그룹핑하여 생성될 수 있다. 각 L2P세그먼트(L2P S1 ~ L2P Sj)는 제N인덱스에 대응하여 내부논리주소(CORE-LBA), 내부논리주소에 대응하는 물리주소(PBA) 및 물리주소에 대응하여 데이터가 저장될 메모리장치에 대한 메모리장치정보(Memory Info.)를 포함할 수 있다. 여기서, 메모리장치정보(Memory Info.)는 호스트인터페이스유닛(120)에 포함된 메모리장치정보할당부(1242)를 통해 각 코어 별로 할당된 메모리장치에 대한 정보를 나타낸다. 구체적으로, 도 6에 있어서, 제1 및 제2논리-물리주소(L2P) 매핑 테이블에는, 제1세그먼트(S1)만 일례로 하여 설명하기로 한다. 제1인덱스에 대응하여 내부논리주소(CORE-LBA)로써 'CLBA0', 물리주소로써 'PBA1' 및 메모리장치정보로써, 'MD1'가 저장되어 있으며, 제2인덱스에 대응하여 내부논리주소(CORE-LBA)로써 'CLBA1', 물리주소로써 'PBA2' 및 메모리장치정보로써, 'MD2'가 저장되어 있다.
제2논리-물리주소(L2P) 매핑 테이블에는 제1인덱스에 대응하여 내부논리주소(CORE-LBA)로써 'CLBA0', 물리주소로써 'PBA1' 및 메모리장치정보로써, 'MD2'가 저장되어 있으며, 제2인덱스에 대응하여 내부논리주소(CORE-LBA)로써 'CLBA1', 물리주소로써 'PBA2' 및 메모리장치정보로써, 'MD1'가 저장되어 있다.
여기서, 제1 및 제2 논리-물리주소(L2P) 매핑 테이블에서 제1인덱스와 제2인덱스의 메모리 장치 정보가 서로 상이함을 알 수 있다. 이는, 제1인덱스의 메모리장치정보인 'MD1'은 글로벌웨어레벨링이 수행되기 전에 라이트된 정보이고, 제2인덱스의 메모리장치정보인 'MD2'는 글로벌웨어레벨링 동작으로 인해 복수의 코어와 복수의 메모리장치간의 매핑정보가 변경된 이후에 호스트로부터 전달받은 요청의 논리주소에 대응하여 할당받은 정보이다.
또한, 복수의 코어(142, 144)는 리드요청을 전달받은 경우, 호스트 인터페이스 유닛(120)으로부터 논리주소에 기초하여 리드 요청을 수신하여 처리할 수 있다. 즉, 복수의 코어(142, 144)는 각 코어별로 대응되는 L2P 매핑테이블에서 전달된 리드 요청의 내부논리주소에 해당하는 메모리장치정보 및 물리주소를 확인한다. 확인결과, L2P 매핑테이블에서 전달된 리드 요청의 내부논리주소에 해당하는 메모리장치정보 및 물리주소가 존재하는 경우(MAP HIT), 멀티 코어는 확인된 메모리장치정보 및 물리주소를 기반으로 해당 메모리장치의 블록 내 페이지에서 데이터를 리드하기 위해, 메모리인터페이스유닛(160)에 요청, 메모리장치정보 및 물리주소를 전달한다. 반면에, L2P 매핑테이블에서 전달된 리드 요청의 내부논리주소에 해당하는 메모리장치정보 및 물리주소가 존재하지 않는 경우(MAP MISS), L1 매핑테이블(미도시)을 통해, 요청의 논리주소가 포함된 L2P세그먼트에 대한 위치정보를 확인한다. 여기서. L1매핑테이블은 L2P 매핑테이블에 포함된 L2P 세그먼트들(L2P S1 ~ L2P Sj) 각각에 대한 위치 정보 즉, 물리 어드레스(PBA)들 및 메모리장치정보를 저장할 수 있다. L1 매핑테이블(미도시)을 통해 확인된 L2P세그먼트의 위치정보를 기반으로 메모리 인터페이스 유닛(160)을 통해, 해당 메모리 장치로부터 저장된 L2P세그먼트를 메모리(131)로 로드한다. 그리고, L2P세그먼트를 참조하여 내부논리주소에 대응하는 메모리장치정보 및 물리주소를 확인하여 메모리인터페이스유닛(160)을 통해, 리드 동작을 수행할 수 있다.
한편, 복수의 코어(142, 144)는 호스트 인터페이스 유닛(120)으로부터 복수의 코어와 복수의 메모리장치간의 매핑 정보 및 사용중인 오픈블록 클로즈 요청을 전달받아 제3글로벌웨어레벨링동작단계를 수행할 수 있다. 복수의 코어(142, 144)는 현재 사용 중인 오픈 블록을 클로즈 시킨 후, 오픈블록관리자(1701)에게 변경된 메모리장치 정보를 포함한 오픈 블록 정보 재할당 요청을 하며, 요청에 대응하여 변경된 메모리장치 정보의 오픈블록 정보를 재할당 받을 수 있다.
다음으로 메모리 인터페이스 유닛(160)은 복수의 각 코어(142, 144)로부터 전달받은 요청, 메모리장치정보 및 물리주소를 기반으로 메모리 장치에 요청을 수행한다. 즉, 메모리 인터페이스 유닛(160)은 복수의 각 코어(142, 144)로부터 라이트 요청, 메모리장치정보 및 물리주소를 전달받으면, 메모리 장치정보를 통해 메모리 장치를 확인한 후, 해당 물리주소에 데이터를 라이트할 수 있다. 그리고, 메모리 인터페이스 유닛(160)은 복수의 각 코어(142, 144)로부터 리드 요청, 메모리장치정보 및 물리주소를 전달받으면, 해당 메모리장치정보를 통해 메모리 장치를 확인한 후, 해당 물리주소로부터 데이터를 리드할 수 있다.
도 7은 본 발명의 일실시예에 따른 라이트 동작 방법을 설명하기 위한 순서도이다.
도 7을 참조하면, S701단계에 있어서, 호스트인터페이스유닛(120)은 글로벌웨어레벨링 수행 여부를 판단하기 위해, 주기적으로 타이머(미도시) 호출에 의해 복수의 코어 각각의 라이트 카운트가 임계값 이상인지 확인할 수 있다. 복수의 코어(142,144) 각각의 라이트 카운트가 임계값 미만인 경우, 호스트(102)로부터 라이트 요청 및 논리주소를 수신할 수 있다(S703). 반면에, 복수의 코어(142,144) 각각의 라이트 카운트가 임계값 이상인 경우, 글로벌 웨어레벨링 동작 수행을 결정한다. 이와 관련하여 도 8에서 설명하기로 한다.
S705단계에 있어서, 호스트인터페이스유닛(120)은 호스트(102)로부터 전달받은 라이트 요청에 포함된 논리주소를 복수의 코어 중 어느 하나의 코어로 분배한 후, 논리주소를 내부논리주소로 변환하여 내부논리주소와 코어 간의 매핑관계를 관리할 수 있다.
S707단계에 있어서, 호스트인터페이스유닛(120)은 내부논리주소와 코어 간의 매핑에 기초하여, 내부논리주소의 해당 코어의 라이트 카운트 증가 및 코어의 매핑관계에 따라 메모리장치 정보 할당할 수 있다.
S709단계에 있어서, 호스트인터페이스유닛(120)은 내부논리주소와 코어 간의 매핑에 기초하여, 내부논리주소를 포함한 라이트 요청 및 메모리장치정보를 해당 코어로 전달할 수 있다.
S711 및 S713단계에 있어서, 복수의 코어(142, 144) 중 어느 하나의 코어는 호스트 인터페이스 유닛(120)으로부터 내부 논리주소를 포함하는 요청과 메모리장치정보를 수신하여 처리할 수 있다. 복수의 코어(142, 144)는 전달받은 라이트 요청의 내부논리주소를 메모리장치정보에 대응하는 메모리장치의 실제 물리주소로 변환하기 위해, 오픈블록이 존재하는지 확인한다.
확인 결과, 오픈블록이 존재하지 않는 경우, 블록관리자(170)에게 메모리장치 정보에 대응하는 오픈블록 정보를 요청한다(S715단계).
S717 및 S718단계에 있어서, 블록관리자(170)는 메모리장치 정보에 대응하는 오픈 블록 정보를 할당하여 해당 코어에 오픈블록 정보를 전달한다(S717)
S719단계에 있어서, 멀티 코어(140)는 전달받은 오픈블록정보를 기반으로, 요청에 대응하여 오픈 블록 정보를 전달받는다. 전달받은 오픈블록 정보를 기반으로 내부 논리주소를 물리주소로 변환시킨 후, 논리-물리주소(L2P) 매핑 테이블에 저장한다.
S721단계에 있어서, 멀티 코어(140)는 라이트 요청, 메모리장치 정보 및 물리주소를 메모리 인터페이스 유닛(160)에 전달한다.
S723 및 S725단계에 있어서, 메모리 인터페이스 유닛(160)은 전달받은 라이트 요청, 메모리장치 정보 및 물리주소를 기반으로 해당 메모리장치의 물리주소에 라이트 동작을 수행한다.
도 8은 본 발명의 일실시예에 따른 글로벌웨어레벨링 동작을 설명하기 위한 순서도이다.
도 8을 참조하면, S801단계에 있어서, 호스트인터페이스유닛(120)은 글로벌웨어레벨링 수행 여부를 판단하기 위해, 주기적으로 타이머(미도시) 호출에 의해 복수의 코어 각각의 라이트 카운트가 임계값 이상인지 확인할 수 있다. 복수의 코어(142,144) 각각의 라이트 카운트가 임계값 이상인 경우, 글로벌 웨어레벨링 동작 수행을 결정한다. 글로벌 웨어레벨링 동작 수행이 결정되면, 제1글로벌웨어레벨링단계, 제2글로벌웨어레벨링단계 및 제3글로벌웨러레벨링 단계를 거쳐 글로벌웨어레벨링을 수행할 수 있다.
S803단계에 있어서, 호스트인터페이스유닛(120)은 호스트 요청에 대한 배리어 동작을 수행할 수 있다(제1글로벌웨어레벨링단계). 즉, 호스트 요청에 대한 배리어 동작을 수행한다는 것은, 호스트 요청에 따른 커맨드의 생성을 지연(delay)시키고, 호스트 요청을 홀드(hold)하는 것을 의미할 수 있다.
S805단계에 있어서, 호스트인터페이스유닛(120)은 호스트 요청에 대한 배리어 동작을 수행 후, 블록관리자(170)에게 복수의 코어와 복수의 메모리장치간의 매핑 교환 요청을 전달한다.
S807 및 S809단계에 있어서, 블록관리자(170)는 호스트인터페이스유닛(120)으로부터 복수의 코어와 복수의 메모리장치 정보간의 매핑 교환 요청을 전달받으면, 각 코어의 라이트 카운트에 기초하여 코어-메모리장치정보 매핑테이블 에 포함된 복수의 코어와 복수의 메모리장치간의 매핑 정보(이하, 코어-메모리장치 매핑정보)를 변경할 수 있다. 즉, 메모리장치정보교환부(1702)는 상기 복수의 코어 중 라이트 카운트가 가장 높은 코어에 대응하는 메모리장치정보와 복수의 코어 중 라이트 카운트가 가장 낮은 코어에 대응하는 메모리장치정보를 교환하여 상기 코어와 메모리장치정보 간의 매핑정보를 교환할 수 있다.
그리고, 블록관리자(170)는 호스트인터페이스유닛(120)에 각 코어에 대응하는 메모리장치 정보 교환 완료 메시지를 전달한다.
S811단계에 있어서, 블록관리자(170)는 복수의 코어와 복수의 메모리장치간의 매핑 정보 및 사용중인 오픈블록 클로즈를 요청한다.
S813 및 S815단계에 있어서, 복수의 코어(142, 144)는 호스트 인터페이스 유닛(120)으로부터 복수의 코어와 복수의 메모리장치간의 매핑 정보 및 사용중인 오픈블록 클로즈 요청을 전달받으면, 현재 사용 중이 오픈 블록을 클로즈 시킨 후(제3글로벌웨어레벨링동작단계), 블록관리자(170)에게 변경된 메모리장치 정보를 포함한 오픈 블록 정보 재할당 요청을 수행할 수 있다.
S817 및 S819단계에 있어서, 블록관리자(170)는 멀티 코어로부터 변경된 메모리장치 정보를 포함한 오픈 블록 정보 재할당 요청을 전달받으면, 변경된 코어-메모리장치정보 매핑테이블을 기반으로 변경된 메모리장치 정보에 대응하여 오픈블록 정보를 재할당하여 각 코어에 재할당된 오픈블록 정보를 전달할 수 있다.
도 9는 본 발명의 일실시예에 따른 리드 동작을 설명하기 위한 순서도이다.
도 9를 참조하면, S901단계 및 S903단계에 있어서, 호스트인터페이스유닛(120)은 호스트(102)로부터 전달받은 리드 요청에 포함된 논리주소를 복수의 코어 중 어느 하나의 코어로 분배한 후, 논리주소를 내부논리주소로 변환하여 내부논리주소와 코어 간의 매핑관계를 관리할 수 있다.
S905단계에 있어서, 호스트인터페이스유닛(120)은 내부논리주소와 코어 간의 매핑에 기초하여, 내부논리주소를 포함한 리드 요청을 해당 코어에 전달한다.
S907단계에 있어서, 내부논리주소를 포함한 리드 요청을 전달받은 복수의 코어(142, 144) 중 어느 하나의 코어는 메모리에 저장된 코어에 대응하는 L2P 매핑테이블에서 리드 요청의 내부논리주소에 해당하는 메모리장치정보 및 물리주소가 존재하는지 확인한다.
확인결과, L2P 매핑테이블에 리드 요청의 내부논리주소에 해당하는 메모리장치정보 및 물리주소가 존재하는 경우(MAP HIT)(YES), 해당 코어는 확인된 메모리장치정보 및 물리주소를 기반으로 해당 메모리장치의 블록 내 페이지에서 데이터를 리드하기 위해, 메모리인터페이스유닛(160)에 리드 요청, 메모리장치정보 및 물리주소를 전달한다(S909).
반면에, L2P 매핑테이블에서 전달된 리드 요청의 내부논리주소에 해당하는 메모리장치정보 및 물리주소가 존재하지 않는 경우(MAP MISS)(NO), 메모리(131)에 저장된 L1매핑테이블(미도시)을 통해, 리드요청의 논리주소가 포함된 L2P세그먼트에 대한 위치정보를 확인한다(S911). 여기서. L1매핑테이블은 L2P 매핑테이블에 포함된 L2P 세그먼트들(L2P S1 ~ L2P Sj) 각각에 대한 위치 정보 즉, 물리 어드레스(PBA)들 및 메모리장치정보를 저장할 수 있다.
S913단계에 있어서, L1매핑테이블(미도시)에서 확인된 L2P세그먼트의 위치정보를 메모리 인터페이스 유닛(160)에 전달한다.
S915 및 S917단계에 있어서, 메모리 인터페이스 유닛(160)은 전달받은 L2P세그먼트의 위치정보를 기반으로 해당 메모리 장치로부터 L2P세그먼트를 메모리(131)에 로드한 후, 해당 코어에게 로드 완료 메시지를 전달한다.
S919 및 S921단계에 있어서, 복수의 코어 중 어느 하나의 코어는 로드된 맵세그먼트로부터 리드 요청의 내부논리주소에 대응하는 메모리장치정보 및 물리주소를 확인하여 메모리인터페이스유닛(160)에 전달한다.
S923 및 S925단계에 있어서, 메모리 인터페이스유닛(160)은 메모리 장치 정보 및 물리주소를 기반으로 리드 동작을 수행한 후 호스트 인터페스이스유닛(120)에 리드 동작 완료 메시지를 전달한다.
한편, 본 발명의 상세한 설명에서는 구체적인 실시 예에 관해 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로, 본 발명의 범위는 설명된 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구의 범위뿐만 아니라 이 특허청구의 범위와 균등한 것들에 의해 정해져야 한다.

Claims (20)

  1. 복수의 메모리장치; 및
    상기 복수의 메모리장치 각각에 대응하여 제어하는 복수의 코어를 포함하는 컨트롤러를 포함하는 메모리 시스템에 있어서,
    상기 컨트롤러는,
    논리주소와 코어 간의 매핑정보 및 코어와 메모리장치정보 간의 매핑정보에 기초하여 호스트로부터의 요청에 메모리 장치 정보를 할당하여 상기 복수의 코어 중 어느 하나의 코어로 제공할 수 있으며, 라이트 카운트를 기반으로 글로벌웨어레벨링 동작 여부를 결정하는 호스트 인터페이스 유닛; 및
    상기 글로벌웨어레벨링 동작에 응하여 상기 코어와 메모리장치정보 간의 매핑정보를 교환(SWAP)하여 변경할 수 있으며, 상기 복수의 코어 각각에 할당된 메모리장치정보에 대응하여 상기 메모리장치의 오픈블록 정보를 할당하여 복수의 코어로 전달하는 블록 관리자
    를 포함하는 메모리 시스템.
  2. 제1항에 있어서,
    상기 호스트인터페이스유닛으로부터 상기 요청 및 상기 메모리장치정보를 전달받으면, 상기 블록관리자에게 상기 메모리장치정보에 대응하는 오픈블록 정보를 요청하여 상기 오픈블록 정보를 할당받은 후, 논리주소를 물리주소로 변환하여 상기 요청을 처리할 수 있으며, 상기 논리주소에 대응하는 메모리장치 정보 및 물리주소를 논리-물리 매핑테이블에 저장하는 상기 복수의 코어를
    더 포함하는 메모리 시스템.
  3. 제1항에 있어서,
    상기 호스트 인터페이스유닛은,
    상기 복수의 메모리장치의 마모도를 결정하기 위해 주기적으로 상기 복수의 코어 각각에 대응하는 라이트 카운트가 라이트 임계값 이상인지 모니터링하며, 상기 복수의 코어 각각의 라이트 카운트 중 어느 하나 이상의 코어의 라이트 카운트가 라이트 임계값 이상인 경우, 상기 글로벌웨어레벨링 동작을 결정하며,
    상기 글로벌웨어레벨링 동작 결정에 응하여, 상기 호스트로부터의 요청에 대한 배리어 동작을 수행한 후, 상기 블록관리자에게 상기 코어와 메모리장치정보 간의 매핑정보 교환을 요청하는
    메모리 시스템.
  4. 제3항에 있어서,
    상기 블록관리자는,
    상기 호스트인터페이스유닛으로부터 상기 코어와 메모리장치정보 간의 매핑정보 교환 요청을 전달받으면, 상기 복수의 코어 각각에 대응하는 라이트 카운트에 기초하여 상기 코어와 메모리장치정보 간의 매핑정보를 교환(SWAP)하여 변경하는 메모리 시스템.
  5. 제4항에 있어서,
    상기 블록관리자는,
    상기 복수의 코어 중 라이트 카운트가 가장 높은 코어에 대응하는 메모리장치정보와 복수의 코어 중 라이트 카운트가 가장 낮은 코어에 대응하는 메모리장치정보를 교환하여 상기 코어와 메모리장치정보 간의 매핑정보를 변경하는
    메모리 시스템.
  6. 제1항에 있어서,
    상기 호스트 인터페이스 유닛은,
    상기 블록 관리자에 의해 변경된 상기 코어와 메모리 장치정보 간의 매핑 정보에 기초하여, 상기 변경된 메모리장치정보를 상기 복수의 각각의 코어에게 전달하는 메모리 시스템.
  7. 제6항에 있어서,
    상기 복수의 코어는,
    상기 호스트인터페이스유닛으로부터 상기 변경된 메모리장치정보를 전달받으면, 현재 사용 중인 오픈 블록을 클로즈 시키며, 상기 블록관리자로부터 상기 변경된 메모리장치정보에 대응하는 새로운 오픈블록 정보를 재할당받는 메모리 시스템.
  8. 제1항에 있어서,
    상기 복수의 코어 중 어느 하나의 코어가,
    상기 호스트 인터페이스 유닛을 통해 리드 요청을 전달받는 경우, 상기 코어의 논리-물리매핑테이블로부터 상기 리드 요청의 논리주소에 대응하는 메모리장치정보 및 물리주소를 확인하여, 메모리인터페이스유닛에 상기 리드 요청, 메모리장치정보 및 물리주소를 전달하여 상기 리드 요청을 처리하는 메모리 시스템.
  9. 제8항에 있어서,
    상기 복수의 코어는,
    상기 복수의 각 코어별로 대응되는 논리-물리매핑테이블에 상기 리드 요청의 논리주소에 대응하는 메모리장치정보 및 물리주소가 존재하는 경우,
    메모리 인터페이스에 상기 리드 요청, 메모리장치정보 및 물리주소를 전달하여 리드 요청을 수행하는 메모리 시스템.
  10. 제8항에 있어서,
    상기 복수의 코어는,
    상기 복수의 각 코어별로 대응되는 논리-물리매핑테이블에 상기 리드 요청의 논리주소에 대응하는 메모리장치정보 및 물리주소가 존재하지 않는 경우,
    L1매핑테이블에서 리드 요청의 논리주소를 포함하는 맵세그먼트의 위치정보를 확인하여, 메모리인터페이스유닛을 통해 상기 복수의 메모리 장치 중 어느 하나의 메모리 장치로부터 상기 맵세그먼트를 상기 논리-물리매핑테이블에 로드하며, 상기 로드된 맵세그먼트로부터 리드 요청의 논리주소에 대응하는 메모리장치정보 및 물리주소를 확인하여 상기 메모리 인터페이스 유닛을 통해 리드 요청을 수행하는 메모리 시스템.
  11. 제1항에 있어서,
    상기 복수의 코어로부터 요청, 물리주소 및 메모리 장치 정보를 전달받은 후, 상기 전달받은 메모리 장치 정보를 기반으로 메모리 장치를 선택하여 상기 물리주소에 상기 요청을 처리하는 메모리 인터페이스 유닛을 더 포함하는 메모리 시스템.
  12. 복수의 메모리장치 및 상기 복수의 메모리장치 각각에 대응하여 제어하는 복수의 코어를 포함하는 컨트롤러를 포함하는 메모리 시스템 동작방법에 있어서,
    상기 복수의 각 코어에 대응하는 라이트 카운트를 기반으로 글로벌웨어레벨링 동작 여부를 결정하는 단계;
    상기 글로벌 웨어레벨링 동작이 결정되면, 호스트 요청에 대한 배리어 동작을 수행하는 단계;
    상기 복수의 각 코어의 라이트 카운트에 기초하여 코어와 메모리장치정보 간의 매핑 정보를 교환하여 변경하는 단계; 및
    상기 복수의 각 코어마다 할당된 오픈블록을 클로즈한 후, 상기 변경된 코어와 메모리장치정보간의 매핑정보에 기초하여 새로운 오픈블록을 복수의 코어에게 할당하는 단계
    를 포함하는 메모리 시스템 동작 방법.
  13. 제12항에 있어서,
    상기 복수의 각 코어에 대응하는 라이트 카운트를 기반으로 글로벌웨어레벨링 동작 여부를 결정하는 단계는,
    상기 복수의 메모리장치의 마모도를 결정하기 위해 주기적으로 상기 복수의 코어 각각에 대응하는 라이트 카운트가 라이트 임계값 이상인지 모니터링하는 단계; 및
    상기 복수의 코어 각각의 라이트 카운트 중 어느 하나 이상의 코어의 라이트 카운트가 라이트 임계값 이상인 경우, 글로벌웨어레벨링 동작을 결정하는 단계
    를 포함하는 메모리 시스템 동작 방법.
  14. 제12항에 있어서,
    상기 복수의 각 코어의 라이트 카운트에 기초하여 코어와 메모리장치정보 간의 매핑 정보를 교환하여 변경하는 단계는,
    상기 복수의 코어 중 라이트 카운트가 가장 높은 코어에 대응하는 메모리장치정보와 복수의 코어 중 라이트 카운트가 가장 낮은 코어에 대응하는 메모리장치정보를 교환하여 상기 코어와 메모리장치정보 간의 매핑정보를 변경하는 단계
    를 포함하는 메모리 시스템 동작 방법.
  15. 제13항에 있어서,
    상기 복수의 코어 각각의 라이트 카운트 중 어느 하나 이상의 코어의 라이트 카운트가 라이트 임계값 미만인 경우는,
    호스트로부터의 요청에 논리주소와 코어 간의 매핑정보 및 코어와 메모리장치정보 간의 매핑정보에 기초하여 메모리 장치 정보를 할당하여 상기 복수의 코어 중 어느 하나의 코어로 제공하는 단계
    를 포함하는 메모리 시스템 동작 방법.
  16. 제15항에 있어서,
    상기 호스트로부터의 요청에 논리주소와 코어 간의 매핑정보 및 코어와 메모리장치정보 간의 매핑정보에 기초하여 메모리 장치 정보를 할당하여 상기 복수의 코어 중 어느 하나의 코어로 제공하는 단계는,
    상기 요청의 논리주소를 상기 복수의 코어 개수를 이용하여 모듈러 연산을 수행하고, 상기 모듈러 연산 결과에 따라 상기 논리주소와 코어 간 매핑정보를 확인하여 상기 요청에 해당하는 코어를 분배하는 단계; 및
    상기 요청에 코어를 분배한 후에, 상기 코어와 메모리장치정보 간 매핑정보에서, 상기 분배된 코어에 대응하는 메모리장치정보를 확인하여 상기 요청에 상기 메모리장치 정보를 할당하는 단계
    를 포함하는 메모리 시스템 동작 방법.
  17. 제15항에 있어서,
    상기 복수의 코어 중 어느 하나의 코어가 라이트 요청 및 메모리치정보를 전달받을 경우,
    상기 라이트 요청의 논리주소를 상기 할당된 메모리장치정보에 대응하는 메모리장치의 물리주소로 변환하기 위해, 오픈블록이 존재하는지 확인하며, 오픈블록이 존재하지 않은 경우, 상기 메모리장치정보에 대응하는 오픈블록을 할당받아 상기 라리트 요청을 처리하는 단계
    를 포함하는 메모리 시스템 동작 방법.
  18. 제14항에 있어서,
    상기 복수의 코어 중 어느 하나의 코어가 리드 요청 및 메모리치정보를 전달받을 경우,
    상기 코어에 대응되는 논리-물리매핑테이블에서 상기 리드 요청의 논리주소에 대응하는 메모리장치정보 및 물리주소가 존재하는지 확인하는 단계를 포함하는 메모리 시스템 동작 방법.
  19. 제18항에 있어서,
    확인 결과, 상기 복수의 각 코어별로 대응되는 논리-물리매핑테이블에 상기 리드 요청의 논리주소에 대응하는 메모리장치정보 및 물리주소가 존재하는 경우, 상기 메모리 장치 정보 및 물리주소를 기반으로 리드 요청을 수행하는 단계를 포함하는 메모리 시스템.
  20. 제18항에 있어서,
    확인 결과, 상기 복수의 각 코어별로 대응되는 논리-물리매핑테이블에 상기 리드 요청의 논리주소에 대응하는 메모리장치정보 및 물리주소가 존재하지 않는 경우,
    L1매핑테이블에서 리드 요청의 논리주소가 저장된 맵세그먼트의 위치정보를 확인하는 단계;
    상기 맵세그먼트의 위치정보를 기반으로 해당 메모리 장치로부터 상기 리드 요청의 논리주소에 대응하는 메모리장치정보 및 물리주소를 로드하는 단계; 및
    상기 로드된 메모리장치정보 및 물리주소를 이용하여 상기 리드 요청을 수행하는 단계
    를 포함하는 메모리 시스템 동작 방법.
KR1020200073022A 2020-06-16 2020-06-16 메모리 시스템 및 메모리 시스템의 동작방법 KR20210155593A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020200073022A KR20210155593A (ko) 2020-06-16 2020-06-16 메모리 시스템 및 메모리 시스템의 동작방법
US17/015,306 US11182289B1 (en) 2020-06-16 2020-10-13 Memory system and operating method thereof
CN202110066161.0A CN113805792A (zh) 2020-06-16 2021-01-19 存储器系统及其操作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200073022A KR20210155593A (ko) 2020-06-16 2020-06-16 메모리 시스템 및 메모리 시스템의 동작방법

Publications (1)

Publication Number Publication Date
KR20210155593A true KR20210155593A (ko) 2021-12-23

Family

ID=78703477

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200073022A KR20210155593A (ko) 2020-06-16 2020-06-16 메모리 시스템 및 메모리 시스템의 동작방법

Country Status (3)

Country Link
US (1) US11182289B1 (ko)
KR (1) KR20210155593A (ko)
CN (1) CN113805792A (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220049842A (ko) * 2020-10-15 2022-04-22 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
CN117573583A (zh) * 2024-01-12 2024-02-20 上海励驰半导体有限公司 数据处理方法、装置、芯片及交通设备

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4897524B2 (ja) * 2007-03-15 2012-03-14 株式会社日立製作所 ストレージシステム及びストレージシステムのライト性能低下防止方法
US9652376B2 (en) * 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
CA2896128C (en) * 2013-06-29 2018-04-03 Huawei Technologies Co., Ltd. Method, apparatus, and controller for managing storage array
US9626288B2 (en) 2013-08-14 2017-04-18 Skyera, Llc Address translation for a non-volatile memory storage device
KR102545189B1 (ko) * 2018-09-07 2023-06-19 삼성전자주식회사 스토리지 장치, 스토리지 시스템 및 스토리지 장치의 동작 방법

Also Published As

Publication number Publication date
US11182289B1 (en) 2021-11-23
US20210390044A1 (en) 2021-12-16
CN113805792A (zh) 2021-12-17

Similar Documents

Publication Publication Date Title
CN110781096B (zh) 用于通过预测需求时间来执行垃圾收集的设备和方法
CN107885456B (zh) 减少io命令访问nvm的冲突
CN110955384B (zh) 数据储存装置以及非挥发式存储器控制方法
KR20210108107A (ko) 메모리 시스템 및 그것의 동작방법
CN111078582B (zh) 基于模式调整映射段的存储器系统及其操作方法
US11513948B2 (en) Controller and memory system
JP2018049522A (ja) メモリシステム及び制御方法
JP2018120439A (ja) メモリシステムおよび制御方法
CN109101185B (zh) 固态存储设备及其写命令和读命令处理方法
US11392309B2 (en) Memory system for performing migration operation and operating method thereof
KR20130096881A (ko) 플래시 메모리 장치
KR102595233B1 (ko) 데이터 처리 시스템 및 그것의 동작 방법
US20230244394A1 (en) Gradually Reclaim Storage Space Occupied by a Proof of Space Plot in a Solid State Drive
KR20210039872A (ko) 프리 블록의 할당을 관리하는 호스트 시스템, 이를 포함하는 데이터 처리 시스템 및 호스트 시스템의 동작방법
KR20210155593A (ko) 메모리 시스템 및 메모리 시스템의 동작방법
CN112130749A (zh) 数据储存装置以及非挥发式存储器控制方法
JP2019148913A (ja) メモリシステム
CN113986773A (zh) 基于固态硬盘的写放大优化方法、装置及计算机设备
CN107885667B (zh) 降低读命令处理延迟的方法与装置
US11409444B2 (en) Memory system and operation method thereof
US11461013B2 (en) Controller, operating method of the controller and memory system
KR20200014175A (ko) 소요시간을 예측하여 가비지 컬렉션을 수행하는 방법 및 장치
US11698739B2 (en) Memory system and operating method thereof
CN110928482A (zh) 部分页条带与使用部分页条带的存储设备及其方法
US11657000B2 (en) Controller and memory system including the same