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

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

Info

Publication number
KR20210115954A
KR20210115954A KR1020200032456A KR20200032456A KR20210115954A KR 20210115954 A KR20210115954 A KR 20210115954A KR 1020200032456 A KR1020200032456 A KR 1020200032456A KR 20200032456 A KR20200032456 A KR 20200032456A KR 20210115954 A KR20210115954 A KR 20210115954A
Authority
KR
South Korea
Prior art keywords
super
blocks
core
physical
address
Prior art date
Application number
KR1020200032456A
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 KR1020200032456A priority Critical patent/KR20210115954A/ko
Priority to US17/018,404 priority patent/US11513948B2/en
Priority to CN202011184607.1A priority patent/CN113407110A/zh
Publication of KR20210115954A publication Critical patent/KR20210115954A/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/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/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • 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/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/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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/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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • 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
    • 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)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

메모리 시스템은, 복수의 제1 물리 블록들을 포함하는 제1 메모리 장치; 복수의 제2 물리 블록들을 포함하는 제2 메모리 장치; 제1 논리 어드레스와 연관된 데이터를 저장하는 복수의 제1 슈퍼 블록들 - 상기 복수의 제1 슈퍼 블록들은 상기 복수의 제1 물리 블록들과 매핑됨 -을 관리하는 제1 코어; 제2 논리 어드레스와 연관된 데이터를 저장하는 복수의 제2 슈퍼 블록들 - 상기 복수의 제2 슈퍼 블록들은 상기 복수의 제2 물리 블록들과 매핑됨 -을 관리하는 제2 코어; 상기 제1 및 제2 슈퍼 블록들의 마모도에 기초하여 제1 슈퍼 블록에 매핑된 제1 물리 블록들과 제2 슈퍼 블록에 매핑된 제2 물리 블록들의 매핑을 변경하는 글로벌 웨어레벨링 관리자; 및 호스트로부터 수신한 논리 어드레스를 상기 제1 및 제2 논리 어드레스로 분류하고, 상기 제1 논리 어드레스를 상기 제1 코어로 제공하고 상기 제2 논리 어드레스를 상기 제2 코어로 제공하는 호스트 인터페이스를 포함한다.

Description

컨트롤러 및 메모리 시스템{CONTROLLER AND MEMORY SYSTEM}
본 발명은 메모리 장치를 제어하는 컨트롤러 및 메모리 장치를 제어하는 메모리 시스템에 관한 것이다.
최근 컴퓨터 환경에 대한 패러다임(paradigm)이 언제, 어디서나 컴퓨터 시스템을 사용할 수 있도록 하는 유비쿼터스 컴퓨팅(ubiquitous computing)으로 전환되고 있다. 이로 인해 휴대폰, 디지털 카메라, 노트북 컴퓨터 등과 같은 휴대용 전자 장치의 사용이 급증하고 있다. 이와 같은 휴대용 전자 장치는 일반적으로 메모리 장치를 이용하는 메모리 시스템, 다시 말해 데이터 저장 장치를 사용한다. 데이터 저장 장치는 휴대용 전자 장치의 주 기억 장치 또는 보조 기억 장치로 사용된다.
메모리 장치를 이용한 데이터 저장 장치는 기계적인 구동부가 없어서 안정성 및 내구성이 뛰어나며, 또한 정보의 액세스 속도가 매우 빠르고 전력 소모가 적다는 장점이 있다. 이러한 장점을 갖는 메모리 시스템의 일 예로 데이터 저장 장치는, USB(Universal Serial Bus) 메모리 장치, 다양한 인터페이스를 갖는 메모리 카드, 솔리드 스테이트 드라이브(SSD: Solid State Drive) 등을 포함한다.
본 발명은 서로 다른 메모리 장치에 포함된 물리 블록들 간 마모도를 균등화할 수 있는 메모리 시스템 및 그의 동작 방법을 제공하고자 한다.
본 발명의 실시 예에 따른 메모리 시스템은, 복수의 제1 물리 블록들을 포함하는 제1 메모리 장치; 복수의 제2 물리 블록들을 포함하는 제2 메모리 장치; 제1 논리 어드레스와 연관된 데이터를 저장하는 복수의 제1 슈퍼 블록들 - 상기 복수의 제1 슈퍼 블록들은 상기 복수의 제1 물리 블록들과 매핑됨 -을 관리하는 제1 코어; 제2 논리 어드레스와 연관된 데이터를 저장하는 복수의 제2 슈퍼 블록들 - 상기 복수의 제2 슈퍼 블록들은 상기 복수의 제2 물리 블록들과 매핑됨 -을 관리하는 제2 코어; 상기 제1 및 제2 슈퍼 블록들의 마모도에 기초하여 제1 슈퍼 블록에 매핑된 제1 물리 블록들과 제2 슈퍼 블록에 매핑된 제2 물리 블록들의 매핑을 변경하는 글로벌 웨어레벨링 관리자; 및 호스트로부터 수신한 논리 어드레스를 상기 제1 및 제2 논리 어드레스로 분류하고, 상기 제1 논리 어드레스를 상기 제1 코어로 제공하고 상기 제2 논리 어드레스를 상기 제2 코어로 제공하는 호스트 인터페이스를 포함한다.
본 발명의 실시 예에 따르면, 제1 및 제2 메모리 장치를 제어하는 컨트롤러는, 제1 논리 어드레스와 연관된 데이터를 저장하는 복수의 제1 슈퍼 블록들 - 상기 복수의 제1 슈퍼 블록들은 상기 제1 메모리 장치에 포함된 복수의 제1 물리 블록들과 매핑됨-을 관리하는 제1 코어; 제2 논리 어드레스와 연관된 데이터를 저장하는 복수의 제2 슈퍼 블록들 - 상기 복수의 제2 슈퍼 블록들은 상기 제2 메모리 장치에 포함된 복수의 제2 물리 블록들과 매핑됨-을 관리하는 제2 코어; 상기 제1 및 제2 슈퍼 블록들의 마모도에 기초하여 제1 슈퍼 블록에 매핑된 제1 물리 블록들과 제2 슈퍼 블록에 매핑된 제2 물리 블록들을 매핑하는 글로벌 웨어레벨링 관리자; 및 호스트로부터 수신한 논리 어드레스를 상기 제1 및 제2 논리 어드레스로 분류하고, 상기 제1 논리 어드레스를 상기 제1 코어로 제공하고 상기 제2 논리 어드레스를 상기 제2 코어로 제공하는 호스트 인터페이스를 포함한다.
본 발명은 서로 다른 메모리 장치에 포함된 물리 블록들 간 마모도를 균등화할 수 있는 컨트롤러 및 메모리 시스템을 제공할 수 있다.
본 발명은 복수의 메모리 장치들에 포함된 모든 메모리 블록들을 골고루 사용함으로써 상기 메모리 장치들의 수명을 향상시킬 수 있는 컨트롤러 및 메모리 시스템을 제공할 수 있다.
본 발명에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 발명이 속하는 분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템을 포함하는 데이터 처리 시스템의 블록도이다.
도 2는 메모리 장치의 일 예를 나타내는 블록도이다.
도 3 및 도 4는 본 발명의 실시 예에 따른 메모리 시스템의 동작을 설명하기 위한 도면이다.
도 5는 본 발명의 제1 실시 예에 따른 메모리 시스템의 구조를 나타내는 블록도이다.
도 6a 내지 도 6c는 본 발명의 제1 실시 예에 따른 메모리 시스템의 어드레스 매핑을 나타내는 도면이다.
도 7은 본 발명의 제2 실시 예에 따른 메모리 시스템의 구조를 나타내는 블록도이다.
도 8은 본 발명의 제2 실시 예에 따른 메모리 시스템의 어드레스 매핑을 나타내는 도면이다.
이하, 본 발명에 따른 바람직한 실시 예를 첨부한 도면을 참조하여 상세히 설명한다. 하기의 설명에서는 본 발명에 따른 동작을 이해하는데 필요한 부분만이 설명되며 그 이외 부분의 설명은 본 발명의 요지를 흩뜨리지 않도록 생략될 것이라는 것을 유의하여야 한다.
도 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)은 복수의 메모리 장치(150-1, 150-2, 150-3, 150-4)들 및 컨트롤러(130)를 포함할 수 있다. 복수의 메모리 장치(150-1, 150-2, 150-3, 150-4)들은 호스트(102)를 위한 데이터를 저장할 수 있으며, 컨트롤러(130)는 복수의 메모리 장치(150-1, 150-2, 150-3, 150-4)들의 데이터 저장을 제어할 수 있다.
컨트롤러(130) 및 복수의 메모리 장치(150-1, 150-2, 150-3, 150-4)들은 하나의 반도체 장치로 집적될 수 있다. 일 예로, 컨트롤러(130) 및 복수의 메모리 장치(150-1, 150-2, 150-3, 150-4)들은 하나의 반도체 장치로 집적되어 SSD를 구성할 수 있다. 메모리 시스템(110)이 SSD로 사용되면, 메모리 시스템(110)에 연결된 호스트(102)의 동작 속도는 향상될 수 있다. 게다가, 컨트롤러(130) 및 복수의 메모리 장치(150-1, 150-2, 150-3, 150-4)들은, 하나의 반도체 장치로 집적되어 메모리 카드를 구성할 수도 있다. 예컨대, 컨트롤러(130) 및 복수의 메모리 장치(150-1, 150-2, 150-3, 150-4)들은 PC 카드(PCMCIA: Personal Computer Memory Card International Association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro), SD 카드(SD, miniSD, microSD, SDHC), 유니버설 플래시 기억 장치(UFS) 등과 같은 메모리 카드를 구성할 수 있다.
복수의 메모리 장치(150-1, 150-2, 150-3, 150-4)들 각각은 비휘발성 메모리 장치일 수 있으며, 전원이 공급되지 않아도 저장된 데이터를 유지할 수 있다. 복수의 메모리 장치(150-1, 150-2, 150-3, 150-4)들은 프로그램 동작을 통해 호스트(102)로부터 제공된 데이터를 저장할 수 있고, 리드 동작을 통해 호스트(102)로 복수의 메모리 장치(150-1, 150-2, 150-3, 150-4)들에 저장된 데이터를 제공할 수 있다. 복수의 메모리 장치(150-1, 150-2, 150-3, 150-4)들은 복수의 메모리 블록들을 포함하며, 메모리 블록들 각각은 복수의 페이지들을 포함하며, 상기 페이지들 각각은 워드라인에 연결된 복수의 메모리 셀들을 포함할 수 있다. 일 실시예에서, 복수의 메모리 장치(150-1, 150-2, 150-3, 150-4)들은 플래시 메모리가 될 수 있다. 상기 플래시 메모리는 3차원 스택 구조를 가질 수 있다.
도 2는 메모리 장치(150-1)의 일 예를 나타내는 블록도이다.
도 2는 도 1의 메모리 시스템(110)에 포함된 복수의 메모리 장치(150-1, 150-2, 150-3, 150-4)들 중 제1 메모리 장치(150-1)를 예시적으로 나타낸다.
제1 메모리 장치(150-1)는 복수의 메모리 다이(DIE)들을 포함할 수 있다. 예를 들어, 상기 복수의 메모리 다이(DIE) 각각은 NAND 메모리 다이일 수 있다. 상기 복수의 메모리 다이(DIE)들은 채널(CH)을 통해 컨트롤러(130)와 연결될 수 있다.
각 메모리 다이(DIE)는 메모리 다이(DIE), 플레인, 메모리 블록 및 페이지의 계층 구조를 가질 수 있다. 하나의 메모리 다이(DIE)는 한 번에 하나의 커맨드를 수신할 수 있다. 하나의 메모리 다이(DIE)는 복수의 플레인을 포함할 수 있으며, 상기 복수의 플레인은 상기 메모리 다이(DIE)가 수신한 커맨드를 병렬로 처리할 수 있다. 각 플레인은 복수의 물리 블록을 포함할 수 있다. 물리 블록은 이레이즈 동작의 최소 단위일 수 있다. 하나의 물리 블록은 복수의 페이지를 포함할 수 있다. 페이지는 라이트 동작의 최소 단위일 수 있다. 복수의 메모리 다이(DIE)들은 서로 병렬로 동작할 수 있다.
제2 내지 제4 메모리 장치(150-2, 150-3, 150-4)의 구조는 제1 메모리 장치(150-1)의 구조와 실질적으로 동일하거나 유사할 수 있다. 복수의 메모리 장치(150-1, 150-2, 150-3, 150-4)들은 서로 병렬로 동작할 수 있다.
다시 도 1을 참조하면, 컨트롤러(130)는 서로 내부 버스를 통해 동작 가능하도록 연결된 호스트 인터페이스(132), 복수의 코어(134-1, 134-2, 134-3, 134-4), 복수의 메모리 인터페이스(142-1, 142-2) 및 복수의 메모리(144-1, 144-2, 144-3, 144-4) 및 글로벌 웨어레벨링 관리자(136)를 포함할 수 있다.
높은 데이터 입출력 성능을 제공하기 위해 메모리 시스템(110)은 병렬로 동작하는 복수의 코어(134-1, 134-2, 134-3, 134-4)들을 포함할 수 있다. 복수의 코어(134-1, 134-2, 134-3, 134-4)들은 각각 플래시 변환 계층(FTL: Flash Translation Layer)이라 불리는 펌웨어를 구동할 수 있다.
FTL은 상기 파일 시스템과 플래시 메모리 사이에서 사용되는 펌웨어이다. 한편, 플래시 메모리는 다른 메모리 소자에 비해서 비교적 낮은 단가로 빠른 읽기 속도를 제공할 수 있다. 그러나, 플래시 메모리는 덮어쓰기 연산을 지원하지 않기 때문에 플래시 메모리에 데이터를 라이트하기 위해서 반드시 이레이즈 동작이 선행되어야 한다. 또한, 플래시 메모리에 라이트되는 데이터의 단위보다 이레이즈되는 데이터의 단위가 크다. 플래시 메모리를 포함하는 메모리 시스템(110)이 호스트(102)의 기억장치로 사용되는 경우, 상기 이레이즈 특성으로 인해 하드디스크용 파일 시스템을 그대로 활용할 수 없다. 따라서, 상기 파일 시스템과 플래시 메모리 사이에 FTL이 사용될 수 있다.
그리고, 복수의 코어(134-1, 134-2, 134-3, 134-4)들은 마이크로프로세서 또는 중앙 처리 장치(CPU) 등으로 구현될 수 있다.
호스트 인터페이스(132)는 호스트(102)의 커맨드(command) 및 데이터를 처리하며, USB(Universal Serial Bus), MMC(Multi-Media Card), PCI-E(Peripheral Component Interconnect-Express), SAS(Serial-attached SCSI), SATA(Serial Advanced Technology Attachment), PATA(Parallel Advanced Technology Attachment), SCSI(Small Computer System Interface), ESDI(Enhanced Small Disk Interface), IDE(Integrated Drive Electronics), MIPI(Mobile Industry Processor Interface) 등과 같은 다양한 인터페이스 프로토콜들 중 적어도 하나를 통해 호스트(102)와 통신하도록 구성될 수 있다.
호스트 인터페이스(132)는 호스트(102)와 데이터를 주고받기 위해 호스트 인터페이스 계층(HIL: Host Interface Layer)이라 불리는 펌웨어(firmware)를 구동할 수 있다.
호스트 인터페이스(132)는 호스트(102)로부터 요청들 및 상기 요청들에 대응하는 논리 어드레스(logical address)들을 수신할 수 있다. 예를 들어, 상기 논리 어드레스는 호스트(102)의 파일 시스템에서 사용되는 논리 블록 어드레스(LBA: logical block address)일 수 있다.
호스트 인터페이스(132)는 상기 논리 어드레스들에 기초하여 상기 요청들을 복수의 코어(134-1, 134-2, 134-3, 134-4)들로 분배할 수 있다. 예를 들어, 호스트 인터페이스(132)는 상기 논리 어드레스들의 모듈러 연산 결과값에 따라 상기 요청들을 복수의 코어(134-1, 134-2, 134-3, 134-4)들로 제공할 수 있다.
복수의 메모리 인터페이스(142-1, 142-2)들은 컨트롤러(130)가 호스트(102)로부터의 요청에 응답하여 메모리 장치(150)를 제어하도록 메모리/스토리지(storage) 인터페이스로서의 역할을 할 수 있다. 예를 들어, 복수의 메모리 인터페이스(142-1, 142-2)들은 NAND 플래시 인터페이스로서 동작할 수 있다. 메모리 장치(150)가 플래시 메모리, 특히 NAND 플래시 메모리인 경우, 복수의 메모리 인터페이스(142-1, 142-2)들은 메모리 장치(150)를 위한 제어 신호를 생성하고, 복수의 코어(134-1, 134-2, 134-3, 134-4)들의 제어 하에 메모리 장치(150)로 제공되는 데이터를 처리할 수 있다.
복수의 메모리 인터페이스(142-1, 142-2)들은 플래시 컨트롤러(FCT: Flash controller)라 불리는 펌웨어를 구동할 수 있다
복수의 코어(134-1, 134-2, 134-3, 134-4)들은 복수의 메모리 인터페이스(142-1, 142-2)들을 통해 복수의 메모리 장치(150-1, 150-2, 150-3, 150-4)들을 제어할 수 있다. 복수의 코어(134-1, 134-2, 134-3, 134-4)들은 각각 자신에게 독점적으로 할당된 물리 블록에 액세스할 수 있다. 예를 들어, 제1 코어(134-1)가 제1 메모리 장치(150-1)에 포함된 물리 블록들에 액세스할 수 있을 때 제2 내지 제4 코어(134-2, 134-3, 134-4)는 상기 물리 블록들에 액세스할 수 없다.
복수의 메모리(144-1, 144-2, 144-3, 144-4)들은 메모리 시스템(110) 및 컨트롤러(130)의 동작 메모리로서의 역할을 수행할 수 있으며, 메모리 시스템(110) 및 컨트롤러(130)의 구동을 위한 데이터를 저장할 수 있다. 예를 들어, 제1 메모리(144-1)는 제1 코어(134-1)가 동작을 수행하는 데 필요한 데이터를 저장할 수 있다. 마찬가지로, 제2 내지 제4 메모리(144-2, 144-3, 144-4)는 각각 제2 내지 제4 코어(134-2, 134-3, 134-4)가 동작을 수행하는 데 필요한 데이터를 저장할 수 있다.
복수의 메모리(144-1, 144-2, 144-3, 144-4)들은 휘발성 메모리로 구현될 수 있다. 예컨대, 복수의 메모리(144-1, 144-2, 144-3, 144-4)들은 정적 랜덤 액세스 메모리(SRAM: Static Random Access Memory), 또는 동적 랜덤 액세스 메모리(DRAM: Dynamic Random Access Memory) 등으로 구현될 수 있다. 복수의 메모리(144-1, 144-2, 144-3, 144-4)들은 컨트롤러(130) 내부 또는 외부에 배치될 수 있다. 도 1은 컨트롤러(130) 내부에 배치된 복수의 메모리(144-1, 144-2, 144-3, 144-4)들을 예시한다. 일 실시예에서, 복수의 메모리(144-1, 144-2, 144-3, 144-4)들은 복수의 메모리(144-1, 144-2, 144-3, 144-4)들과 컨트롤러(130) 사이의 데이터를 입출력하는 메모리 인터페이스를 갖는 외부 휘발성 메모리 장치로 구현될 수 있다.
복수의 코어(134-1, 134-2, 134-3, 134-4)들은 호스트 인터페이스(132)로부터 수신된 요청에 대응하는 동작, 즉 포그라운드 동작(foreground operation)을 수행할 수 있다. 예를 들어, 제1 코어(134-1)는 호스트 인터페이스(132)로부터의 라이트 요청에 응하여 제1 메모리 장치(150-1)의 물리 블록에 데이터를 프로그램하도록 제1 메모리 장치(150-1)를 제어하고, 리드 요청에 응하여 제1 메모리 장치(150-1)의 물리 블록으로부터 데이터를 리드하도록 제1 메모리 장치(150-1)를 제어할 수 있다.
또한, 복수의 코어(134-1, 134-2, 134-3, 134-4)들은 복수의 메모리 장치(150-1, 150-2, 150-3, 150-4)들에 대한 백그라운드 동작(background operation)을 수행할 수도 있다.
한편, 복수의 메모리 장치(150-1, 150-2, 150-3, 150-4)들에 포함된 복수의 물리 블록들은 수명이 제한될 수 있다. 따라서, 물리 블록에 정해진 횟수의 이레이즈 동작이 수행되면 해당 메모리 블록을 더 이상 사용할 수 없다. 복수의 코어(134-1, 134-2, 134-3, 134-4)들 각각은 백그라운드 동작으로서 자신에게 독점적으로 할당된 물리 블록들의 로컬 웨어레벨링 동작을 수행할 수 있다.
복수의 코어(134-1, 134-2, 134-3, 134-4)들이 로컬 웨어레벨링 동작만을 수행한다면 메모리 시스템(110)의 모든 물리 블록들의 마모도가 균등화되기는 어렵다. 호스트(102)로부터 수신되는 요청들이 어떤 논리 어드레스들에 대한 요청들인지에 따라 각 코어에 분배되는 요청의 양이 서로 달라질 수 있기 때문이다.
각 코어에 분배되는 요청의 양이 서로 다른 경우라도 동일한 코어에 할당된 물리 블록들끼리는 로컬 웨어레벨링 동작에 의해 마모도가 균등화될 수 있다. 그러나, 서로 다른 코어에 할당된 물리 블록들끼리는 마모도가 균등화되기 어렵다. 예를 들어, 하나의 코어가 하나의 메모리 장치에 일대일로 액세스하는 경우 서로 다른 메모리 장치에 포함된 물리 블록들끼리 마모도가 균등화되기 어렵다. 어떤 메모리 장치의 물리 블록들이 다른 메모리 장치의 물리 블록들보다 더 빠르게 수명이 다하는 경우, 다른 메모리 장치의 물리 블록들의 수명이 남아있더라도 메모리 시스템(110) 전체를 정상적으로 사용할 수 없다.
만약 호스트 인터페이스(132)가 어떤 코어에 연관된 논리 어드레스와 다른 코어에 연관된 논리 어드레스를 스왑(swap)한다면 논리 어드레스가 스왑된 이후에 수신된 요청에 대해서는 코어 간의 요청 수행 빈도가 균등화될 수 있다. 그러나, 상기 논리 어드레스가 스왑된 이후 코어 간의 요청 수행 빈도가 균등화되더라도 이미 불균등하게 마모된 물리 블록들의 마모도가 균등화되지는 않을 수 있다. 따라서, 호스트 인터페이스(132)가 논리 어드레스들을 스왑하는 것만으로는 서로 다른 메모리 장치에 포함된 물리 블록들끼리 마모도를 효과적으로 균등화하기 어렵다.
본 발명의 실시 예에 따르면, 글로벌 웨어레벨링 관리자(136)는 코어들 간에 할당된 물리 블록들을 교환하는 글로벌 웨어레벨링을 수행할 수 있다. 본 발명의 실시 예에 따른 글로벌 웨어레벨링 동작이 도 3 내지 도 5를 참조하여 자세히 설명된다.
도 3 및 도 4는 본 발명의 실시 예에 따른 메모리 시스템(110)의 동작을 설명하기 위한 도면이다.
도 3은 도 1을 참조하여 설명된 호스트 인터페이스(132), 복수의 코어(134-1, 134-2, 134-3, 134-4) 및 글로벌 웨어레벨링 관리자(136)를 도시한다.
호스트 인터페이스(132)는 호스트(102)로부터 논리 어드레스를 포함하는 요청을 수신할 수 있다. 호스트 인터페이스(132)는 상기 요청의 논리 어드레스에 기초하여 복수의 코어(134-1, 134-2, 134-3, 134-4)로 상기 요청을 분배할 수 있다. 예를 들어, 호스트 인터페이스(132)는 논리 어드레스의 모듈러 4 연산의 결과값이 1인 경우 제1 코어(134-1)로, 결과값이 2인 경우 제2 코어(134-2)로, 결과값이 3인 경우 제3 코어(134-3)로, 결과값이 0인 경우 제4 코어(134-4)로 상기 요청을 제공할 수 있다.
복수의 코어(134-1, 134-2, 134-3, 134-4) 각각에 복수의 물리 블록들 및 복수의 슈퍼 블록들이 할당될 수 있다. 각 슈퍼 블록은 하나 이상의 물리 블록들과 매핑될 수 있다. 예를 들어, 복수의 코어(134-1, 134-2, 134-3, 134-4)는 상기 복수의 물리 블록들 중 병렬로 액세스될 수 있는 블록들끼리 슈퍼 블록으로 그루핑하고 슈퍼 블록 단위로 액세스 및 블록 관리를 수행할 수 있다.
메모리 시스템(110)에서 글로벌 웨어레벨링이 수행되기 이전의 초기 상태에 제1 코어(134-1)의 슈퍼 블록들은 제1 메모리 장치(150-1)의 물리 블록들에 매핑될 수 있다. 마찬가지로, 제2 코어 내지 제4 코어(134-2, 134-3, 134-4)의 슈퍼 블록들은 각각 제2 내지 제4 메모리 장치(150-2, 150-3, 150-4)에 포함된 물리 블록들에 매핑될 수 있다. 이하에서 제1 코어(134-1)에 할당된 슈퍼 블록을 제1 슈퍼 블록으로 지칭하고, 제2 코어(134-2)에 할당된 슈퍼 블록을 제2 슈퍼 블록으로 지칭한다. 그리고 제1 메모리 장치(150-1)에 할당된 물리 블록을 제1 물리 블록으로 지칭하고, 제2 메모리 장치(150-2)에 할당된 물리 블록을 제2 물리 블록으로 지칭한다.
복수의 코어(134-1, 134-2, 134-3, 134-4)는 각각 자신에게 할당된 슈퍼 블록들 간에 로컬 웨어레벨링을 수행할 수 있다. 예를 들어, 제1 코어(134-1)는 제1 슈퍼 블록들 간 마모도의 차이가 임계값 이상일 때, 가장 적게 마모된 슈퍼 블록에 저장된 데이터를 가장 크게 마모된 슈퍼 블록으로 옮길 수 있다.
슈퍼 블록의 마모도는 이레이즈 카운트에 의해 판단될 수 있다. 예를 들어, 제1 코어(134-1)는 슈퍼 블록의 마모도를 판단하기 위해 제1 슈퍼 블록들의 이레이즈 횟수를 카운트할 수 있다. 슈퍼 블록의 이레이즈 카운트는 상기 슈퍼 블록에 매핑된 물리 블록들의 이레이즈 카운트로부터 결정될 수 있다.
제1 코어(134-1)는 제1 슈퍼 블록들 중 프리 블록들을 이레이즈 카운트가 가장 낮은 블록부터 가장 높은 블록까지 프리 블록 큐(FREE BLOCK QUEUE)에 정렬할 수 있다. 도 3에서 프리 블록 큐에 큐잉된 슈퍼 블록들은 SB로 도시된다. 프리 블록은 데이터가 저장되지 않은 메모리 블록을 지칭한다. 상기 슈퍼 블록들 각각의 이레이즈 카운트와 상기 프리 블록 큐는 제1 메모리(144-1)에 저장될 수 있으나, 도 3에서 제1 메모리(144-1)는 생략되었다. 이하에서, 동일 코어에서 생성된 슈퍼 블록들 중 이레이즈 카운트가 가장 큰 슈퍼 블록을 로컬 최대 슈퍼 블록, 이레이즈 카운트가 가장 작은 슈퍼 블록을 로컬 최소 슈퍼 블록으로 지칭한다.
제1 코어(134-1)는 로컬 최대 슈퍼 블록과 로컬 최소 슈퍼 블록의 이레이즈 카운트의 차가 임계값을 넘을 때 로컬 최소 슈퍼 블록의 데이터를 로컬 최대 슈퍼 블록에 옮겨 저장하고, 로컬 최소 슈퍼 블록에 유저 데이터가 저장되도록 함으로써 로컬 최소 슈퍼 블록이 자주 사용되도록 할 수 있다. 도 3에서 슈퍼 블록의 데이터가 옮겨 저장되는 로컬 최대 슈퍼 블록은 BGSB(Background Super Block)로, 유저 데이터가 저장되는 로컬 최소 슈퍼 블록은 FGSB(Foreground Super Block)으로 도시된다.
마찬가지로, 제2 내지 제4 코어(134-2, 134-3, 134-4)는 각자에 할당된 슈퍼 블록들의 이레이즈 횟수를 카운트하고, 프리 블록 큐를 생성하고, 로컬 웨어레벨링 동작을 수행할 수 있다. 제3 및 제4 코어(134-3, 134-4)의 프리 블록 큐는 도 3에서 생략되었다.
본 발명의 실시 예에 따르면, 글로벌 웨어레벨링 관리자(136)는 서로 다른 코어에 할당된 슈퍼 블록들의 마모도가 균등화되지 않은 경우 서로 다른 코어 간에 할당된 물리 블록들을 교환하는 글로벌 웨어레벨링 동작을 수행할 수 있다. 예를 들어, 글로벌 웨어레벨링 관리자(136)는 요청 수행 빈도가 가장 높은 코어에 할당된 물리 블록들 중 이레이즈 카운트가 가장 높은 물리 블록과 요청 수행 빈도가 가장 낮은 코어에 할당된 물리 블록들 중 이레이즈 카운트가 가장 낮은 블록을 교환할 수 있다.
글로벌 웨어레벨링 관리자(136)가 글로벌 웨어레벨링 동작을 수행하면, 논리 어드레스별 호스트 요청의 양이 서로 다른 경우라도 메모리 시스템(110) 전체에 포함된 물리 블록들끼리 마모도가 균등화될 수 있다. 본 발명의 실시 예에 따르면, 메모리 시스템(110)의 모든 물리 블록의 수명이 다할 때까지 메모리 시스템(110)이 사용될 수 있기 때문에 메모리 시스템(110)의 수명이 향상될 수 있다.
도 3 및 도 4에서는 제1 코어(134-1)의 요청 수행 빈도가 가장 높고 제2 코어(134-2)의 요청 수행 빈도가 가장 낮아서 코어 간 슈퍼 블록의 마모도가 불균등한 경우를 예로 들어 글로벌 웨어레벨링 동작이 설명된다.
도 4는 본 발명의 실시 예에 따른 메모리 시스템(110)의 동작을 나타낸다.
단계 S401에서, 제1 코어(134-1)는 제1 슈퍼 블록을 이레이즈할 수 있다. 도 3에서 이레이즈될 제1 슈퍼 블록이 제1 코어(134-1) 내의 VBCLOSED로 도시된다.
단계 S403에서, 제1 코어(134-1)는 상기 이레이즈된 제1 슈퍼 블록이 메모리 시스템(110) 전체에서 이레이즈 카운트가 가장 높은 슈퍼 블록인지 판단할 수 있다. 이하에서, 메모리 시스템(110) 전체에서 이레이즈 카운트가 가장 높은 슈퍼 블록을 글로벌 최대 슈퍼 블록으로 지칭한다. 동일 코어에 할당된 슈퍼 블록의 마모도는 로컬 웨어레벨링에 의해 균등하게 유지되므로, 수신되는 요청의 양이 가장 많은 코어의 슈퍼 블록들 중에서 글로벌 최대 슈퍼 블록이 포함될 수 있다.
상기 제1 슈퍼 블록이 글로벌 최대 슈퍼 블록이라면, 단계 S405에서 제1 코어(134-1)는 상기 글로벌 최대 슈퍼 블록과 메모리 시스템(110) 전체에서 가장 이레이즈 카운트가 낮은 슈퍼 블록의 이레이즈 카운트 차이가 임계값 이상인지 판단할 수 있다. 이하에서, 메모리 시스템(110) 전체에서 가장 이레이즈 카운트가 낮은 슈퍼 블록을 글로벌 최소 슈퍼 블록으로 지칭한다. 구현에 따라, 각 코어는 메모리 시스템(110) 전체의 슈퍼 블록들의 이레이즈 카운트를 각 코어에 연동되는 메모리에 저장하고, 상기 이레이즈 카운트로부터 글로벌 최소 슈퍼 블록의 이레이즈 카운트를 획득할 수 있다. 수신되는 요청의 양이 가장 적은 코어의 슈퍼 블록들 중에서 글로벌 최소 슈퍼 블록이 포함될 수 있다. 도 3 및 도 4의 예에서는 제2 코어(134-2)에 할당된 슈퍼 블록들 중 글로벌 최소 슈퍼 블록이 포함될 수 있다.
만약 글로벌 최대 슈퍼 블록과 글로벌 최소 슈퍼 블록의 이레이즈 카운트 차이가 임계값 이상이라면 글로벌 웨어레벨링 관리자(136)는 단계 S407 내지 단계 S415의 글로벌 웨어레벨링 동작을 수행할 수 있다.
단계 S407에서, 제1 코어(134-1)는 글로벌 웨어레벨링 관리자(136)에 글로벌 웨어레벨링 동작을 요청할 수 있다.
단계 S409에서, 글로벌 웨어레벨링 관리자(136)는 제2 코어(134-2)에 상기 글로벌 최소 슈퍼 블록을 요청할 수 있다.
글로벌 최소 슈퍼 블록에 데이터가 저장된 경우, 제2 코어(134-2)는 단계 S411에서 상기 데이터를 제2 슈퍼 블록 중 이레이즈 카운트가 가장 높은 슈퍼 블록, 즉 로컬 최대 슈퍼 블록에 옮겨 저장하고, 상기 글로벌 최소 슈퍼 블록을 이레이즈할 수 있다. 도 3에서 글로벌 최소 슈퍼 블록은 제2 코어(134-2) 내에서 VBCLOSED로 도시된다. 단계 S413에서, 제2 코어(134-2)는 글로벌 웨어레벨링 관리자(136)로 단계 S409의 요청에 대한 응답을 제공할 수 있다.
단계 S415에서, 글로벌 웨어레벨링 관리자(136)는 글로벌 최대 슈퍼 블록에 매핑된 물리 블록들과 글로벌 최소 슈퍼 블록에 매핑된 물리 블록들을 교환할 수 있다. 즉, 글로벌 웨어레벨링 관리자(136)는 글로벌 최대 슈퍼 블록에 매핑된 물리 블록들을 글로벌 최소 슈퍼 블록에 매핑하고, 글로벌 최소 슈퍼 블록에 매핑된 물리 블록들을 글로벌 최대 슈퍼 블록에 매핑할 수 있다. 제1 코어(134-1)에 의해 액세스되었던, 메모리 시스템(110) 전체에서 이레이즈 카운트가 가장 높은 물리 블록들은 앞으로 제2 코어(134-2)에 의해 액세스될 수 있다. 그리고, 제2 코어(134-2)에 의해 액세스되었던, 메모리 시스템(110) 전체에서 이레이즈 카운트가 가장 낮은 물리 블록들은 앞으로 제1 코어(134-1)에 의해 액세스될 수 있다.
글로벌 웨어레벨링 관리자(136)가 상기 물리 블록들을 교환하면 제1 코어(134-1)에 포함된 글로벌 최대 슈퍼 블록은 글로벌 최소 슈퍼 블록으로 변경되고, 제2 코어(134-2)에 포함된 글로벌 최소 슈퍼 블록은 글로벌 최대 슈퍼 블록으로 변경될 수 있다. 슈퍼 블록의 이레이즈 카운트는 해당 슈퍼 블록에 매핑된 물리 블록의 이레이즈 카운트에 따라 결정될 수 있기 때문이다.
제2 코어(134-2)의 요청 수행 빈도가 가장 낮은 경향이 유지된다면 글로벌 최대 슈퍼 블록은 제2 코어(134-2)에 의해 드물게 사용될 수 있다. 제1 코어(134-1)의 요청 수행 빈도가 가장 높은 경향이 유지된다면 글로벌 최소 슈퍼 블록은 제1 코어(134-1)에 의해 자주 사용될 수 있다. 따라서, 메모리 시스템(110) 전체의 슈퍼 블록 및 물리 블록의 마모도가 균등화될 수 있다.
도 5는 본 발명의 제1 실시 예에 따른 메모리 시스템(110)의 구조를 나타내는 블록도이다.
도 6a 내지 도 6c는 본 발명의 제1 실시 예에 따른 메모리 시스템(110)의 어드레스 매핑을 나타내는 도면이다.
도 5에 도시된 메모리 시스템(110)은 도 1에서 설명된 메모리 시스템(110)에 제5 코어(134-5) 및 제5 메모리(144-5)를 더 포함할 수 있다. 도 5에 도시된 메모리 시스템(110)은 복수의 메모리(144-1, 144-2, 144-3, 144-4)들을 포함할 수 있으나 복수의 메모리(144-1, 144-2, 144-3, 144-4)들은 도면에서 생략되었다.
호스트 인터페이스(132)는 HIL을 구동할 수 있다. 도 1 및 도 3을 참조하여 설명된 바와 같이, HIL은 호스트(102)로부터 수신한 요청을, 상기 요청과 연관된 논리 어드레스에 기초하여 복수의 코어(134-1, 134-2, 134-3, 134-4)로 분배할 수 있다.
제1 내지 제4 코어(134-1, 134-2, 134-3, 134-4)는 각각 FTL을 구동할 수 있다. 제1 내지 제4 코어(134-1, 134-2, 134-3, 134-4)가 구동하는 FTL은 도 5에서 각각 제1 FTL, 제2 FTL, 제3 FTL 및 제4 FTL로 도시된다.
각 FTL은 호스트(102)의 파일 시스템에서 사용되는 논리 어드레스를 가상 어드레스로 변환할 수 있다. 가상 어드레스는 도 3을 참조하여 설명된 슈퍼 블록을 가리키는 어드레스일 수 있다. 각 FTL은 논리 어드레스와 가상 어드레스 간 매핑을 나타내는 매핑 테이블을 복수의 메모리(144-1, 144-2, 144-3, 144-4)들에 저장할 수 있다.
도 6a는 제1 메모리(144-1)에 저장되는 L2V(logical to virtual) 매핑 테이블을 예시한다.
제1 메모리(144-1)에 저장되는 L2V 매핑 테이블은 제1 코어(134-1)와 관련된 논리 어드레스(LA)별 가상 어드레스(VA)의 매핑을 포함할 수 있다. 본 발명의 실시 예에서 제1 코어(134-1)는 모듈러 4 연산의 결과값이 1인 논리 어드레스와 연관된 요청만을 수행하므로, 상기 L2V 매핑 테이블은 상기 결과값이 1인 논리 어드레스들만을 포함할 수 있다. 그리고, 상기 L2V 매핑 테이블은 제1 코어(134-1)에 할당된 제1 슈퍼 블록들에 대한 가상 어드레스만을 포함할 수 있다.
다시 도 5를 참조하면, 각 FTL은 물리 블록들과 매핑된 슈퍼 블록들을 관리할 수 있다. 예를 들어, 각 FTL은 슈퍼 블록들의 이레이즈 카운트에 기초하여, 로컬 웨어레벨링 동작을 수행할 수 있다.
제5 코어(134-5)는 글로벌 가상 플래시 계층(GVFL; Global Virtual Flash Layer), 글로벌 플래시 인터페이스 계층(GFIL; Global Flash Interface Layer) 및 글로벌 웨어레벨링 관리자(136)를 구동할 수 있다.
GVFL은 메모리 시스템(110) 전체의 가상 어드레스와 물리 어드레스 간 매핑을 수행할 수 있다. GVFL은 결함 있는 물리 블록들을 제외한 정상 물리 블록들을 슈퍼 블록들에 매핑할 수 있다. GVFL은 가상 어드레스와 물리 어드레스 간 매핑을 나타내는 테이블을 제5 메모리(144-5)에 저장할 수 있다.
도 6b는 제5 메모리(144-5)에 저장되는 V2P 매핑 테이블을 예시한다. 제5 메모리(144-5)에 저장되는 V2P 매핑 테이블은 복수의 코어(134-1, 134-2, 134-3, 134-4)에 할당된 슈퍼 블록들(SB) 및 복수의 메모리 장치(150-1, 150-2, 150-3, 150-4)에 저장된 물리 블록들(PBs)의 매핑을 포함할 수 있다. 슈퍼 블록들 각각은 서로 병렬로 동작 가능한 복수의 물리 블록들과 매핑될 수 있다. 도 6b는 하나의 슈퍼 블록이 네 개의 메모리 다이(DIE1, DIE2, DIE3, DIE4)에 포함된 물리 블록들과 매핑되는 경우를 예시한다. 예를 들어, 제1 코어(134-1)의 제1 슈퍼 블록은 제1 메모리 장치(150-1)의 네 개의 메모리 다이(DIE1, DIE2, DIE3, DIE4)에 포함된 물리 블록들과 매핑될 수 있다.
실시 예에 따라, GVFL은 메모리 장치에서 발생할 수 있는 칩킬(chipkill) 발생에 대비하여 슈퍼 블록의 일부에 패리티 데이터를 저장하는 동작을 더 수행할 수 있다.
다시 도 5를 참조하면, GFIL은 GVFL로부터 변환된 물리 어드레스에 기초하여 메모리 장치로 제공될 커맨드를 생성할 수 있다. 예를 들어, GFIL은 복수의 메모리 장치(150-1, 150-2, 150-3, 150-4)의 물리 블록들에 대한 프로그램 커맨드, 리드 커맨드 및 이레이즈 커맨드 등을 생성할 수 있다.
글로벌 웨어레벨링 관리자(136)는 제5 메모리에 저장된 가상 어드레스와 물리 어드레스 간 매핑을 변경함으로써 글로벌 웨어레벨링을 수행할 수 있다.
다시 도 6b를 참조하면, 글로벌 웨어레벨링이 수행되기 전 제1 코어(134-1)에 할당된 슈퍼 블록들은 각각 제1 메모리 장치(150-1)의 물리 블록에 매핑되고, 제2 코어(134-2)에 할당된 슈퍼 블록들은 각각 제2 메모리 장치(150-2)의 물리 블록에 매핑될 수 있다.
도 6b의 점선은 글로벌 웨어레벨링 동작에 의해 교환된 슈퍼 블록들과 물리 블록들의 매핑을 나타낸다. 글로벌 웨어레벨링 동작이 수행되면 제1 코어(134-1)에 할당된 슈퍼 블록들 중 일부는 제1 메모리 장치(150-1)가 아닌 메모리 장치의 물리 블록에 매핑될 수 있다. 도 6b는 글로벌 웨어레벨링 동작에 의해 제1 코어(134-1)의 제2 슈퍼 블록이 제2 메모리 장치(150-2)의 물리 블록들에 매핑되고, 제2 코어(134-2)의 제5 슈퍼 블록이 제1 메모리 장치(150-1)의 물리 블록들에 매핑되는 경우를 예시한다.
실시 예에 따라, 제5 메모리(144-5)는 코어 간 교환된 물리 블록들의 정보를 포함하는 교환 정보 테이블을 더 저장할 수 있다.
도 6c는 제5 메모리(144-5)에 저장될 수 있는 교환 정보 테이블을 예시한다.
도 6c의 예에서, 교환 정보 테이블은 글로벌 웨어레벨링 동작에 의해 제1 코어(134-1)의 제2 슈퍼 블록에 매핑된 물리 블록들과 제2 코어(134-2)의 제5 슈퍼 블록에 매핑된 물리 블록들이 교환된 상태를 나타낼 수 있다. 상기 물리 블록들이 교환되면 제1 코어(134-1)와 제2 코어(134-2)에 할당된 슈퍼 블록의 마모도가 균등화될 수 있다.
실시 예에 따라, 글로벌 웨어레벨링 관리자(136)는 복수의 코어(134-1, 134-2, 134-3, 134-4)들 간 슈퍼 블록의 마모도가 균등화되면 상기 교환 정보 테이블을 참조하여 가상 블록들과 물리 블록들 간에 교환된 매핑을 교환되기 전의 매핑으로 복구할 수 있다. 예를 들어, 글로벌 웨어레벨링 관리자(136)는 복수의 코어들 간 슈퍼 블록의 이레이즈 카운트가 임계값 미만이면 마모도가 균등화된 것으로 판단하고 가상 블록들과 물리 블록들 간 매핑을 복구할 수 있다. 도 6c의 예에서, 글로벌 웨어레벨링 관리자(136)는 제1 코어(134-1)의 제2 슈퍼 블록에 매핑된 물리 블록들을 제2 코어(134-2)의 제5 슈퍼 블록에 매핑하고, 제2 코어(134-2)의 제5 슈퍼 블록에 매핑된 물리 블록들을 제1 코어(134-1)의 제2 슈퍼 블록에 매핑하고, 제1 코어(134-1)의 제2 슈퍼 블록과 제2 코어(134-2)의 제5 슈퍼 블록을 교환 정보 테이블에서 제거할 수 있다.
메모리 시스템(110)은 제5 코어(134-5)의 연산 처리 성능을 향상시키기 위해 하나 이상의 하드웨어 가속 장치(미도시)를 더 포함할 수 있다. 제1 예로, 하드웨어 가속 장치는 복수의 FTL들로부터 GVFL로 제공되는 커맨드를 큐잉함으로써 제1 내지 제4 코어(134-1, 134-2, 134-3, 134-4)로부터 제5 코어(134-5)로 수신되는 커맨드들을 빠르게 수신할 수 있다. 제2 예로, 하드웨어 가속 장치는 GFIL로부터 복수의 메모리 인터페이스(142-1, 142-2)로 출력되는 커맨드들을 스케줄링함으로써 복수의 메모리 장치(150-1, 150-2, 150-3, 150-4)에서 상기 커맨드들이 병렬 처리되도록 할 수 있다.
복수의 메모리 인터페이스(142-1, 142-2)들은 GFIL로부터 수신한 커맨드에 기초하여 복수의 메모리 장치(150-1, 150-2, 150-3, 150-4)들을 제어할 수 있다. 복수의 메모리 인터페이스(142-1, 142-2)들은 도 1을 참조하여 자세히 설명되었다.
도 7은 본 발명의 제2 실시 예에 따른 메모리 시스템(110)의 구조를 나타내는 블록도이다.
도 8은 본 발명의 제2 실시 예에 따른 메모리 시스템(110)의 어드레스 매핑을 나타내는 도면이다.
도 7에 도시된 메모리 시스템(110)은 도 1에서 설명된 메모리 시스템(110)에 대응할 수 있다. 도 7에 도시된 메모리 시스템(110)은 복수의 메모리(144-1, 144-2, 144-3, 144-4)들을 포함할 수 있으나 복수의 메모리(144-1, 144-2, 144-3, 144-4)들은 도면에서 생략되었다.
호스트 인터페이스(132)는 HIL을 구동할 수 있다. HIL은 호스트(102)로부터 수신한 요청을, 상기 요청과 연관된 논리 어드레스에 기초하여 복수의 코어(134-1, 134-2, 134-3, 134-4)들로 분배할 수 있다.
복수의 코어(134-1, 134-2, 134-3, 134-4)들은 각각 FTL, 가상 플래시 계층(VFL; Virtual Flash Layer), 플래시 인터페이스 계층(FIL; Flash Interface Layer)을 구동할 수 있다.
복수의 코어(134-1, 134-2, 134-3, 134-4)들이 구동하는 FTL은 도 7에서 각각 제1 FTL, 제2 FTL, 제3 FTL 및 제4 FTL로 도시된다.
각 FTL은 논리 어드레스를 가상 어드레스로 변환할 수 있다. 본 발명의 제2 실시 예에 따른 FTL은 도 5를 참조하여 설명된 제1 실시 예에 따른 FTL과 실질적으로 유사한 동작을 수행할 수 있다. 예를 들어, 제1 코어(134-1)에 포함된 제1 FTL은 도 6a에서 설명된 L2V 매핑 테이블과 실질적으로 유사한 테이블을 제1 메모리(144-1)에 저장할 수 있다. 그리고, 각 FTL은 로컬 웨어레벨링 동작을 수행할 수 있다.
복수의 코어(134-1, 134-2, 134-3, 134-4)들이 구동하는 VFL은 도 7에서 각각 제1 VFL, 제2 VFL, 제3 VFL 및 제4 VFL로 도시된다.
각 VFL은 가상 어드레스를 물리 어드레스로 변환할 수 있다. 예를 들어, 제1 VFL은 제1 코어(134-1)에 할당된 슈퍼 블록들을 가리키는 가상 어드레스를 물리 어드레스로 변환할 수 있다. 각 VFL은 가상 어드레스와 물리 어드레스의 매핑을 나타내는 V2P 매핑 테이블을 대응하는 메모리에 저장할 수 있다.
도 8은 제1 메모리(144-1)에 저장된 V2P 매핑 테이블을 예시한다. 제1 메모리(144-1)에 저장되는 V2P 매핑 테이블은 제1 코어(134-1)에 할당된 슈퍼 블록들(SB) 및 상기 슈퍼 블록들에 매핑된 물리 블록들(PBs)을 포함할 수 있다. 마찬가지로, 제2 내지 제4 메모리(144-2, 144-3, 144-4)는 각각 제2 내지 제4 코어(134-2, 134-3, 134-4)에 할당된 슈퍼 블록들과 연관된 V2P 매핑 테이블을 저장할 수 있다. Eh 8은 하나의 슈퍼 블록이 네 개의 메모리 다이(DIE1, DIE2, DIE3, DIE4)에 포함된 물리 블록들과 매핑되는 경우를 예시한다.
실시 예에 따라, 각 VFL은 메모리 장치에서 발생할 수 있는 칩킬 발생에 대비하여 슈퍼 블록들로 구성된 슈퍼블록의 일부에 패리티 데이터를 저장하는 동작을 더 수행할 수 있다.
다시 도 7을 참조하면, 각 FIL은 동일 코어에 포함된 VFL로부터 변환된 물리 어드레스에 기초하여 메모리 장치로 제공될 커맨드를 생성할 수 있다. 복수의 코어(134-1, 134-2, 134-3, 134-4)들이 구동하는 FIL은 도 7에서 각각 제1 FIL, 제2 FIL, 제3 FIL, 제4 FIL로 도시된다. 예를 들어, 제1 FIL은 제1 코어(134-1)에 할당된 물리 블록들에 대한 프로그램 커맨드, 리드 커맨드 및 이레이즈 커맨드 등을 생성할 수 있다. 본 발명의 실시 예에 따르면, 제1 FIL은 제1 메모리 장치(150-1)의 물리 블록들에 대한 커맨드를 생성하는 것으로 제한되지 않고, 글로벌 웨어 레벨링에 따라서 제2 내지 제4 메모리 장치(150-2, 150-3, 150-4)의 물리 블록들에 대한 커맨드를 생성할 수도 있다. 제2 내지 제4 FIL도 마찬가지로 자신이 포함된 코어에 할당된 물리 블록들에 따라 제1 내지 제4 메모리 장치(150-1, 150-2, 150-3, 150-4)를 제어하는 커맨드를 생성할 수 있다.
글로벌 웨어레벨링 관리자(136)는 복수의 메모리(144-1, 144-2, 144-3, 144-4)에 액세스하도록 복수의 코어(134-1, 134-2, 134-3, 134-4)를 제어할 수 있다. 글로벌 웨어레벨링 관리자(136)는 복수의 메모리(144-1, 144-2, 144-3, 144-4)에 저장된 V2P 매핑을 변경함으로써 글로벌 웨어레벨링을 수행할 수 있다.
다시 도 8을 참조하면, 글로벌 웨어레벨링이 수행되기 전 제1 코어(134-1)에 할당된 슈퍼 블록들은 각각 제1 메모리 장치(150-1)의 복수의 메모리 다이(DIE1, DIE2, DIE3, DIE4)의 물리 블록들에 매핑될 수 있다. 도 8에서 점선으로 도시된 부분은 글로벌 웨어레벨링 동작에 의해 제1 코어(134-1)의 제2 슈퍼 블록이 제2 메모리 장치(150-2)의 물리 블록들에 매핑되는 경우를 예시한다.
실시 예에 따라, 메모리 시스템(110)은 글로벌 웨어레벨링 관리자(136)의 구동에 필요한 데이터를 저장하는 제6 메모리(미도시)를 더 포함할 수 있다. 글로벌 웨어레벨링 관리자(136)는 코어 간 교환된 물리 블록들의 정보를 포함하는 교환 정보 테이블을 더 저장할 수 있다. 상기 교환 정보 테이블은 도 6c를 참조하여 설명된 것과 실질적으로 유사하다.
실시 예에 따라, 글로벌 웨어레벨링 관리자(136)는 복수의 코어(134-1, 134-2, 134-3, 134-4)들 간 슈퍼 블록의 마모도가 균등화되면 상기 교환 정보 테이블을 참조하여 가상 블록들과 물리 블록들 간에 교환된 매핑을 교환되기 전의 매핑으로 복구할 수 있다. 다시 교환하고, 상기 교환 정보 테이블에 저장된 상기 물리 블록들의 정보를 제거할 수 있다.
복수의 메모리 인터페이스(142-1, 142-2)들은 복수의 FIL로부터 수신한 커맨드에 기초하여 복수의 메모리 장치(150-1, 150-2, 150-3, 150-4)들을 제어할 수 있다. 복수의 메모리 인터페이스(142-1, 142-2)들은 도 1을 참조하여 자세히 설명되었다.
도 1 내지 도 8을 참조하여 설명된 메모리 시스템(110)은 제1 메모리 장치(150-1), 제2 메모리 장치(150-2), 제1 코어(134-1), 제2 코어(134-2) 글로벌 웨어레벨링 관리자(136) 및 를 호스트 인터페이스(132)를 포함할 수 있다.
제1 메모리 장치(150-1)는 복수의 제1 물리 블록들을 포함하고, 제2 메모리 장치(150-2)는 복수의 제2 물리 블록들을 포함할 수 있다. 제1 코어(134-1)에 할당된 복수의 제1 슈퍼 블록들 각각은 상기 복수의 제1 물리 블록들 중 복수의 물리 블록들에 매핑되고, 제2 코어(134-2)에 할당된 복수의 제2 슈퍼 블록들 각각은 상기 복수의 제2 물리 블록들 중 복수의 물리 블록들에 매핑될 수 있다.
글로벌 웨어레벨링 관리자(136)는 상기 제1 및 제2 슈퍼 블록들의 마모도에 기초하여 상기 제1 슈퍼 블록에 매핑된 제1 물리 블록들과 상기 제2 슈퍼 블록에 매핑된 제2 물리 블록들을 교환할 수 있다. 예를 들어, 글로벌 웨어레벨링 관리자(136)는 요청 수행 빈도가 가장 높은 코어에 포함되는 글로벌 최대 슈퍼 블록과 요청 수행 빈도가 가장 낮은 코어에 포함되는 글로벌 최소 슈퍼 블록 간에 매핑된 물리 블록을 교환할 수 있다.
호스트 인터페이스(132)는 호스트(102)로부터 수신한 논리 어드레스들을 제1 코어(134-1) 및 제2 코어(134-2)에 분배할 수 있다. 예를 들어, 호스트 인터페이스(132)는 정해진 연산에 따라 논리 어드레스들을 제1 및 제2 논리 어드레스로 분류할 수 있으며, 제1 논리 어드레스를 제1 코어(134-1)로 제공하고, 제2 논리 어드레스를 제2 코어(134-2)로 제공할 수 있다.
제1 코어(134-1)는 호스트 인터페이스(132)로부터 제1 논리 어드레스를 수신하면 상기 제1 논리 어드레스에 대응하는 슈퍼 블록 및 상기 슈퍼 블록에 매핑된 물리 블록들을 탐색할 수 있다.
본 발명의 실시 예에 따르면, 메모리 시스템(110) 전체에 포함된 물리 블록들의 마모도가 균등화되어 메모리 시스템(110)의 수명이 향상될 수 있다.
한편, 본 발명의 상세한 설명에서는 구체적인 실시 예에 관해 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로, 본 발명의 범위는 설명된 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구의 범위뿐만 아니라 이 특허청구의 범위와 균등한 것들에 의해 정해져야 한다.
100: 데이터 처리 시스템
102: 호스트
110: 메모리 시스템

Claims (16)

  1. 메모리 시스템에 있어서,
    복수의 제1 물리 블록들을 포함하는 제1 메모리 장치;
    복수의 제2 물리 블록들을 포함하는 제2 메모리 장치;
    제1 논리 어드레스와 연관된 데이터를 저장하는 복수의 제1 슈퍼 블록들 - 상기 복수의 제1 슈퍼 블록들은 상기 복수의 제1 물리 블록들과 매핑됨 -을 관리하는 제1 코어;
    제2 논리 어드레스와 연관된 데이터를 저장하는 복수의 제2 슈퍼 블록들 - 상기 복수의 제2 슈퍼 블록들은 상기 복수의 제2 물리 블록들과 매핑됨 -을 관리하는 제2 코어;
    상기 제1 및 제2 슈퍼 블록들의 마모도에 기초하여 제1 슈퍼 블록에 매핑된 제1 물리 블록들과 제2 슈퍼 블록에 매핑된 제2 물리 블록들의 매핑을 변경하는 글로벌 웨어레벨링 관리자; 및
    호스트로부터 수신한 논리 어드레스를 상기 제1 및 제2 논리 어드레스로 분류하고, 상기 제1 논리 어드레스를 상기 제1 코어로 제공하고 상기 제2 논리 어드레스를 상기 제2 코어로 제공하는 호스트 인터페이스를 포함하는
    메모리 시스템.
  2. 제1항에 있어서,
    슈퍼 블록의 상기 마모도는 상기 슈퍼 블록에 매핑된 물리 블록들의 이레이즈 카운트에 의해 결정되는
    메모리 시스템.
  3. 제2항에 있어서,
    상기 글로벌 웨어레벨링 관리자는
    상기 제1 슈퍼 블록이 상기 메모리 시스템에서 관리되는 슈퍼 블록들 중 마모도가 가장 높은 슈퍼 블록인 글로벌 최대 슈퍼 블록이고, 상기 제2 슈퍼 블록이 상기 메모리 시스템에서 관리되는 슈퍼블록들 중 마모도가 가장 낮은 슈퍼 블록인 글로벌 최소 슈퍼 블록이고, 상기 제1 및 제2 슈퍼 블록의 마모도 차이가 임계값 이상일 때 상기 제1 슈퍼 블록에 매핑된 제1 물리 블록들과 상기 제2 슈퍼 블록에 매핑된 제2 물리 블록들의 매핑을 서로 변경하는
    메모리 시스템.
  4. 제3항에 있어서,
    상기 글로벌 웨어레벨링 관리자는
    상기 제1 및 제2 슈퍼 블록들의 마모도가 임계값 미만이면 상기 매핑이 서로 변경된 제1 물리 블록들과 제2 물리 블록들의 매핑을 변경되기 전의 매핑으로 복구하는
    메모리 시스템.
  5. 제1항에 있어서,
    상기 제1 코어는
    상기 제1 슈퍼 블록들의 어드레스인 제1 가상 어드레스와 상기 제1 논리 어드레스 간 매핑을 수행하는 제1 로컬 FTL(Flash Translation Layer)을 구동하고,
    상기 제2 코어는
    상기 제2 슈퍼 블록들의 어드레스인 제2 가상 어드레스와 상기 제2 논리 어드레스 간 매핑을 수행하는 제2 로컬 FTL을 구동하고,
    상기 메모리 시스템은
    상기 제1, 제2 가상 어드레스 및 상기 제1, 제2 물리 블록들과 연관된 물리 어드레스 간 매핑을 수행하는 글로벌 VFL(Virtual Flash Layer)을 더 포함하는
    메모리 시스템.
  6. 제5항에 있어서,
    상기 제1 및 제2 로컬 FTL로부터 상기 글로벌 VFL로 제공되는 커맨드를 큐잉하는 제1 하드웨어 가속 장치; 및
    상기 제1 및 제2 코어로부터 상기 제1 및 제2 메모리 장치로 제공되는 커맨드들을 스케줄링하는 제2 하드웨어 가속 장치
    를 더 포함하는 메모리 시스템.
  7. 제1항에 있어서,
    상기 제1 코어는
    제1 논리 어드레스 및 상기 제1 슈퍼 블록들과 연관된 제1 가상 어드레스 간 매핑을 수행하는 제1 로컬 FTL를 구동하고, 상기 제1 가상 어드레스 및 물리 어드레스 간 매핑을 수행하는 제1 로컬 VFL를 구동하고,
    상기 제2 코어는
    제2 논리 어드레스 및 상기 제2 슈퍼 블록들과 연관된 제2 가상 어드레스 간 매핑을 수행하는 제2 로컬 FTL를 구동하고, 상기 제2 가상 어드레스 및 물리 어드레스 간 매핑을 수행하는 제2 로컬 VFL를 구동하는
    메모리 시스템.
  8. 제1항에 있어서,
    상기 제1 및 제2 코어는
    상기 제1 슈퍼 블록들의 마모도에 기초하여 상기 제1 슈퍼 블록들 간 데이터를 이동시키는 로컬 웨어레벨링을 수행하는
    메모리 시스템.
  9. 제1 및 제2 메모리 장치를 제어하는 컨트롤러에 있어서,
    제1 논리 어드레스와 연관된 데이터를 저장하는 복수의 제1 슈퍼 블록들 - 상기 복수의 제1 슈퍼 블록들은 상기 제1 메모리 장치에 포함된 복수의 제1 물리 블록들과 매핑됨-을 관리하는 제1 코어;
    제2 논리 어드레스와 연관된 데이터를 저장하는 복수의 제2 슈퍼 블록들 - 상기 복수의 제2 슈퍼 블록들은 상기 제2 메모리 장치에 포함된 복수의 제2 물리 블록들과 매핑됨-을 관리하는 제2 코어;
    상기 제1 및 제2 슈퍼 블록들의 마모도에 기초하여 제1 슈퍼 블록에 매핑된 제1 물리 블록들과 제2 슈퍼 블록에 매핑된 제2 물리 블록들을 매핑하는 글로벌 웨어레벨링 관리자; 및
    호스트로부터 수신한 논리 어드레스를 상기 제1 및 제2 논리 어드레스로 분류하고, 상기 제1 논리 어드레스를 상기 제1 코어로 제공하고 상기 제2 논리 어드레스를 상기 제2 코어로 제공하는 호스트 인터페이스
    를 포함하는 컨트롤러.
  10. 제9항에 있어서,
    슈퍼 블록의 상기 마모도는 상기 슈퍼 블록에 매핑된 물리 블록들의 이레이즈 카운트에 의해 결정되는
    컨트롤러.
  11. 제10항에 있어서,
    상기 글로벌 웨어레벨링 관리자는
    상기 제1 슈퍼 블록이 상기 컨트롤러에서 관리되는 슈퍼 블록들 중 마모도가 가장 높은 슈퍼 블록인 글로벌 최대 슈퍼 블록이고, 상기 제2 슈퍼 블록이 상기 컨트롤러에서 관리되는 슈퍼 블록들 중 마모도가 가장 낮은 슈퍼 블록인 글로벌 최소 슈퍼 블록이고, 상기 제1 및 제2 슈퍼 블록의 마모도 차이가 임계값 이상일 때 상기 제1 슈퍼 블록에 매핑된 제1 물리 블록들과 상기 제2 슈퍼 블록에 매핑된 제2 물리 블록들의 매핑을 서로 변경하는
    컨트롤러.
  12. 제11항에 있어서,
    상기 글로벌 웨어레벨링 관리자는
    상기 제1 및 제2 슈퍼 블록들의 마모도가 임계값 미만이면 상기 매핑이 서로 변경된 제1 물리 블록들과 제2 물리 블록들의 매핑을 변경되기 전의 매핑으로 복구하는
    컨트롤러.
  13. 제9항에 있어서,
    상기 제1 코어는
    상기 제1 슈퍼 블록들의 어드레스인 제1 가상 어드레스와 상기 제1 논리 어드레스 간 매핑을 수행하는 제1 로컬 FTL을 구동하고,
    상기 제2 코어는
    상기 제2 슈퍼 블록들의 어드레스인 제2 가상 어드레스와 상기 제2 논리 어드레스 간 제2 로컬 FTL을 구동하고,
    상기 메모리 시스템은
    상기 제1, 제2 가상 어드레스 및 상기 제1, 제2 물리 블록들과 연관된 물리 어드레스 간 매핑을 수행하는 글로벌 VFL(Virtual Flash Layer)을 더 포함하는
    컨트롤러.
  14. 제13항에 있어서,
    상기 제1 및 제2 로컬 FTL로부터 상기 글로벌 VFL로 제공되는 커맨드를 큐잉하는 제1 하드웨어 가속 장치; 및
    상기 제1 및 제2 코어로부터 상기 제1 및 제2 메모리 장치로 제공되는 커맨드들을 스케줄링하는 제2 하드웨어 가속 장치
    를 더 포함하는 컨트롤러.
  15. 제9항에 있어서,
    상기 제1 코어는
    제1 논리 어드레스 및 상기 제1 슈퍼 블록들과 연관된 제1 가상 어드레스 간 매핑을 수행하는 제1 로컬 FTL을 구동하고, 상기 제1 가상 어드레스 및 물리 어드레스 간 매핑을 수행하는 제1 로컬 VFL을 구동하고,
    상기 제2 코어는
    제2 논리 어드레스 및 상기 제2 슈퍼 블록들과 연관된 제2 가상 어드레스 간 매핑을 수행하는 제2 로컬 FTL을 구동하고, 상기 제2 가상 어드레스 및 물리 어드레스 간 매핑을 수행하는 제2 로컬 VFL을 구동하는
    컨트롤러.
  16. 제9항에 있어서,
    상기 제1 및 제2 코어는
    상기 제1 슈퍼 블록들의 마모도에 기초하여 상기 제1 슈퍼 블록들 간 데이터를 이동시키는 로컬 웨어레벨링을 수행하는
    컨트롤러.

KR1020200032456A 2020-03-17 2020-03-17 컨트롤러 및 메모리 시스템 KR20210115954A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020200032456A KR20210115954A (ko) 2020-03-17 2020-03-17 컨트롤러 및 메모리 시스템
US17/018,404 US11513948B2 (en) 2020-03-17 2020-09-11 Controller and memory system
CN202011184607.1A CN113407110A (zh) 2020-03-17 2020-10-30 控制器和存储器系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200032456A KR20210115954A (ko) 2020-03-17 2020-03-17 컨트롤러 및 메모리 시스템

Publications (1)

Publication Number Publication Date
KR20210115954A true KR20210115954A (ko) 2021-09-27

Family

ID=77677442

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200032456A KR20210115954A (ko) 2020-03-17 2020-03-17 컨트롤러 및 메모리 시스템

Country Status (3)

Country Link
US (1) US11513948B2 (ko)
KR (1) KR20210115954A (ko)
CN (1) CN113407110A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11645197B2 (en) 2020-05-18 2023-05-09 SK Hynix Inc. Memory controller and method of operating the same

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11507301B2 (en) * 2020-02-24 2022-11-22 Sunrise Memory Corporation Memory module implementing memory centric architecture
US11563690B2 (en) * 2020-08-19 2023-01-24 Redpanda Data, Inc. Low latency queuing system
US11481116B2 (en) * 2020-09-09 2022-10-25 Microsoft Technology Licensing, Llc Computing device with independently coherent nodes
KR20220049842A (ko) * 2020-10-15 2022-04-22 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
CN114327281B (zh) * 2021-12-30 2023-12-05 深圳忆联信息系统有限公司 用于ssd的tcg软硬件加速方法、装置、计算机设备及存储介质

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10572824B2 (en) 2003-05-23 2020-02-25 Ip Reservoir, Llc System and method for low latency multi-functional pipeline with correlation logic and selectively activated/deactivated pipelined data processing engines
KR101790165B1 (ko) * 2011-08-09 2017-11-20 삼성전자 주식회사 메모리 시스템 및 그것의 메타 데이터 관리 방법
KR102403266B1 (ko) 2015-06-22 2022-05-27 삼성전자주식회사 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
KR20190063054A (ko) * 2017-11-29 2019-06-07 삼성전자주식회사 메모리 시스템 및 이의 동작 방법
US10445230B2 (en) * 2017-12-08 2019-10-15 Macronix International Co., Ltd. Managing block arrangement of super blocks
JP7077151B2 (ja) * 2018-06-06 2022-05-30 キオクシア株式会社 メモリシステム
KR20200016075A (ko) * 2018-08-06 2020-02-14 에스케이하이닉스 주식회사 메모리 시스템에서의 유효 데이터 탐색 방법 및 장치

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11645197B2 (en) 2020-05-18 2023-05-09 SK Hynix Inc. Memory controller and method of operating the same

Also Published As

Publication number Publication date
US20210294739A1 (en) 2021-09-23
US11513948B2 (en) 2022-11-29
CN113407110A (zh) 2021-09-17

Similar Documents

Publication Publication Date Title
CN110781096B (zh) 用于通过预测需求时间来执行垃圾收集的设备和方法
US11513948B2 (en) Controller and memory system
CN111078582B (zh) 基于模式调整映射段的存储器系统及其操作方法
US11334493B2 (en) Memory system and operating method thereof
KR20210089853A (ko) 컨트롤러 및 컨트롤러의 동작방법
US11334272B2 (en) Memory system and operating method thereof
CN114371812B (zh) 控制器及其操作方法
US11762590B2 (en) Memory system and data processing system including multi-core controller for classified commands
CN112684976A (zh) 用于执行迁移操作的存储器系统及其操作方法
CN114077389A (zh) 控制器、存储器系统以及数据处理系统
US11182289B1 (en) Memory system and operating method thereof
KR20220127076A (ko) 컨트롤러 및 컨트롤러의 동작 방법
KR20210061544A (ko) 컨트롤러 및 컨트롤러의 동작방법
US11409444B2 (en) Memory system and operation method thereof
KR20200014175A (ko) 소요시간을 예측하여 가비지 컬렉션을 수행하는 방법 및 장치
US11182329B2 (en) Data processing system and operating method thereof
KR20210121696A (ko) 컨트롤러 및 메모리 시스템
US11657000B2 (en) Controller and memory system including the same
US20220156003A1 (en) Controller and operation method thereof
CN114328294A (zh) 控制器、其操作方法以及包括控制器的存储器系统
KR20220072357A (ko) 컨트롤러, 및 이를 포함하는 메모리 시스템 및 데이터 처리 시스템

Legal Events

Date Code Title Description
A201 Request for examination