KR20200050169A - 스토리지 장치, 스토리지 시스템 및 스토리지 장치의 동작 방법 - Google Patents

스토리지 장치, 스토리지 시스템 및 스토리지 장치의 동작 방법 Download PDF

Info

Publication number
KR20200050169A
KR20200050169A KR1020180132843A KR20180132843A KR20200050169A KR 20200050169 A KR20200050169 A KR 20200050169A KR 1020180132843 A KR1020180132843 A KR 1020180132843A KR 20180132843 A KR20180132843 A KR 20180132843A KR 20200050169 A KR20200050169 A KR 20200050169A
Authority
KR
South Korea
Prior art keywords
host
storage
memory
loading
mapping tables
Prior art date
Application number
KR1020180132843A
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 KR1020180132843A priority Critical patent/KR20200050169A/ko
Priority to US16/506,793 priority patent/US11036425B2/en
Priority to CN201910773518.1A priority patent/CN111143233A/zh
Priority to EP19193480.1A priority patent/EP3647958B1/en
Publication of KR20200050169A publication Critical patent/KR20200050169A/ko
Priority to US17/316,422 priority patent/US11513728B2/en

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/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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
    • G06F3/0656Data buffering arrangements
    • 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
    • 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
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device

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)
  • Computer Security & Cryptography (AREA)
  • Memory System (AREA)

Abstract

스토리지 장치는 메인 스토리지 및 스토리지 컨트롤러를 포함한다. 상기 메인 스토리지는 데이터를 저장하며, 복수의 비휘발성 메모리 장치들을 구비한다. 상기 스토리지 컨트롤러는 상기 메인 스토리를 제어한다. 상기 스토리지 컨트롤러는 외부의 호스트 장치에 포함되는 호스트 메모리 버퍼의 사이즈 및 상기 호스트 장치의 데이터 액세스 패턴과 관련된 지역성 정보 중 적어도 하나에 기초하여 상기 비휘발성 메모리 장치들 각각에 저장되며 상기 비휘발성 메모리 장치들 각각의 물리 어드레스와 논리 어드레스 사이의 매핑 관계를 나타내는 매핑 테이블들의 적어도 일부 및 상기 매핑 테이블들의 어드레스 정보를 저장하는 디렉토리들의 일부 중 적어도 하나를 상기 호스트 메모리 버퍼에 로딩한다.

Description

스토리지 장치, 스토리지 시스템 및 스토리지 장치의 동작 방법{STORAGE DEVICE, STORAGE SYSTEM AND METHOD OF OPERATING STORAGE DEVICE}
본 발명은 데이터 처리에 관한 것으로, 보다 상세하게는 스토리지 장치, 이를 포함하는 스토리지 시스템 및 스토리지 장치의 동작 방법에 관한 것이다.
호스트(Host)는 FTL(Flash translation layer)을 이용하여 플래시 메모리 셀을 포함하는 데이터 저장 장치를 사용할 수 있다. FTL은 맵핑(Mapping) 기법을 이용하여, 호스트에서 생성되는 논리적 어드레스(Logical address)와 데이터 저장 장치 내 플래시 메모리 셀의 물리적 어드레스(Physical address)를 맵핑할 수 있다. FTL에 의한 맵핑 테이블(Mapping table)은 데이터 저장 장치에 저장될 수 있다.
일반적으로 데이터 저장 장치는 맵핑 테이블에 빠르게 접근하기 위해 별도의 휘발성 메모리(Volatile memory)를 포함할 수 있다. 데이터 저장 장치는 전원이 들어오면 맵핑 테이블을 휘발성 메모리에 저장할 수 있다. 상술한 휘발성 메모리는 DRAM(Dynamic random access memory) 또는 SRAM(Static random access memory)일 수 있다. 하지만, 휘발성 메모리로 인하여 데이터 저장 장치의 면적 및 비용이 증가되는 문제점이 있다.
본 발명의 일 목적은 매핑 테이블에 대한 액세스 시간을 단축시킬 수 있는 스토리지 장치를 제공하는 것이다.
본 발명의 일 목적은 매핑 테이블에 대한 액세스 시간을 단축시킬 수 있는 스토리지 장치를를 포함하는 스토리지 시스템을 제공하는 것이다.
본 발명의 일 목적은 매핑 테이블에 대한 액세스 시간을 단축시킬 수 있는 스토리지 장치의 동작 방법을 제공하는 것이다.
본 발명의 실시예들에 따른 스토리지 장치는 메인 스토리지 및 스토리지 컨트롤러를 포함한다. 상기 메인 스토리지는 데이터를 저장하며, 복수의 비휘발성 메모리 장치들을 구비한다. 상기 스토리지 컨트롤러는 상기 메인 스토리를 제어한다. 상기 스토리지 컨트롤러는 외부의 호스트 장치에 포함되는 호스트 메모리 버퍼의 사이즈 및 상기 호스트 장치의 데이터 액세스 패턴과 관련된 지역성 정보 중 적어도 하나에 기초하여 상기 비휘발성 메모리 장치들 각각에 저장되며 상기 비휘발성 메모리 장치들 각각의 물리 어드레스와 논리 어드레스 사이의 매핑 관계를 나타내는 매핑 테이블들의 적어도 일부 및 상기 매핑 테이블들의 어드레스 정보를 저장하는 디렉토리들의 일부 중 적어도 하나를 상기 호스트 메모리 버퍼에 로딩한다.
본 발명의 실시예들에 따른 스토리지 장치는 스토리지 시스템은 스토리지 장치 및 호스트 장치를 포함한다. 상기 스토리지 장치는 데이터를 저장하며 복수의 비휘발성 메모리 장치들을 구비하는 메인 스토리지 및 상기 메인 스토리지를 제어하는 스토리지 컨트롤러를 포함한다. 상기 호스트 장치는 호스트 메모리를 포함하고, 상기 스토리지 장치를 제어한다. 상기 호스트 장치는 상기 스토리지 장치의 리퀘스트에 응답하여 상기 호스트 메모리의 일부를 상기 스토리지 컨트롤러가 액세스할 수 있는 호스트 메모리 버퍼로 할당한다. 상기 스토리지 컨트롤러는 상기 호스트 메모리 버퍼의 사이즈 및 상기 호스트 장치의 데이터 액세스 패턴과 관련된 지역성 정보 중 적어도 하나에 기초하여 상기 비휘발성 메모리 장치들 각각에 저장되며 상기 비휘발성 메모리 장치들 각각의 물리 어드레스와 논리 어드레스 사이의 매핑 관계를 나타내는 매핑 테이블들의 적어도 일부 및 상기 매핑 테이블들의 어드레스 정보를 저장하는 디렉토리들의 일부 중 적어도 하나를 상기 호스트 메모리 버퍼에 로딩한다.
본 발명의 실시예들에 따른 데이터를 저장하며 복수의 비휘발성 메모리 장치들을 구비하는 메인 스토리지 및 상기 메인 스토리지를 제어하는 스토리지 컨트롤러를 구비하는 스토리지 장치의 동작 방법에서는 상기 스토리지 장치를 제어하는 외부의 호스트 장치에 포함되는 호스트 메모리 버퍼의 사이즈 정보를 상기 호스트 장치로부터 수신하고, 상기 사이즈 정보 및 상기 호스트 장치의 데이터 액세스 패턴과 관련된 지역성 정보 중 적어도 하나에 기초하여 상기 비휘발성 메모리 장치들 각각에 저장되며 상기 비휘발성 메모리 장치들 각각의 물리 어드레스와 논리 어드레스 사이의 매핑 관계를 나타내는 매핑 테이블들의 적어도 일부 및 상기 매핑 테이블들의 어드레스 정보를 저장하는 디렉토리들의 일부 중 적어도 하나를 상기 호스트 메모리 버퍼에 로딩하고, 상기 호스트 장치로부터의 커맨드 및 어드레스에 기초하여 상기 호스트 메모리 버퍼를 참조하여 상기 커맨드가 지시하는 메모리 동작을 상기 어드레스가 지정하는 메모리 영역에 수행한다.
본 발명의 실시예들에 따르면, 호스트 메모리의 일부 영역으로 할당되는 호스트 메모리 버퍼의 사이즈가 스토리지 장치에 포함되는 메인 스토리지의 매핑 테이블들의 전체 어드레스 영역을 커버할 수 없는 경우에, 스토리지 컨트롤러는 호스트 메모리 버퍼의 크기 및 데이터 액세스 패턴과 관련된 지역성 정보 중 적어도 하나에 기초하여 매핑 테이블들의 적어도 일부 및 디렉토리들의 일부를 동적으로 호스트 메모리 버퍼에 로딩한다. 스토리지 컨트롤러는 호스트 메모리 버퍼를 참조하여 논리 어드레스에 대응되는 물리 어드레스가 지정하는 메모리 영역에 메모리 동작을 수행할 수 있다. 따라서, 스토리지 장치는 매핑 테이블들에 대한 액세스 타임을 감소시킬 수 있다.
도 1은 본 발명의 일 실시예에 따른 스토리지 시스템(또는, 데이터 저장 시스템)을 나타내는 블록도이다.
도 2는 본 발명의 실시예들에 따른 도 1의 호스트 장치를 나타내는 블록도이다.
도 3은 본 발명의 실시예들에 따른 도 2의 호스트 메모리를 나타낸다.
도 4는 본 발명의 실시예에 따른 도 1의 스토리지 시스템에서 스토리지 컨트롤러를 나타내는 블록도이다.
도 5는 본 발명의 실시예들에 따른 도 4의 로딩 컨트롤러를 나타내는 블록도이다.
도 6은 도 1의 스토리지 시스템의 동작을 예시적으로 나타낸다.
도 7a는 비휘발성 메모리 장치들 각각에 저장되는 디렉토리와 매핑 테이블들을 나타낸다.
도 7b는 도 7a의 디렉토리를 나타낸다.
도 8은 도 6의 스토리지 시스템의 동작의 일 예를 나타낸다.
도 9는 도 8의 동작시에 호스트 메모리 버퍼를 나타낸다.
도 10은 도 6의 스토리지 시스템의 동작의 일 예를 나타낸다.
도 11은 도 10의 동작시에 호스트 메모리 버퍼를 나타낸다.
도 12는 도 1의 스토리지 시스템에서 메인 스토리지의 채널 및 웨이의 구성을 예시적으로 나타낸다.
도 13은 도 1의 스토리지 장치에서 스토리지 컨트롤러와 하나의 비휘발성 메모리 장치의 연결을 나타낸다.
도 14는 본 발명의 실시예들에 따른 도 13의 비휘발성 메모리 장치를 나타내는 블록도이다.
도 15는 도 14의 비휘발성 메모리 장치에서 메모리 셀 어레이를 나타내는 블록도이다.
도 16은 도 15의 메모리 블록들 중 하나의 메모리 블록을 나타내는 회로도이다.
도 17은 도 16의 메모리 블록의 하나의 셀 스트링의 구조의 예를 보여준다.
도 18은 본 발명의 실시예들에 따른 스토리지 장치의 동작 방법을 나타내는 흐름도이다.
도 19는 도 18의 동작 방법에서 호스트 메모리 버퍼에 로딩하는 단계를 상세히 나타내는 흐름도이다.
도 20은 본 발명의 실시예들에 따른 스토리지 시스템을 나타내는 블록도이다.
도 21은 본 발명의 실시예에 따른 도 20의 스토리지 시스템에서 스토리지 컨트롤러를 나타내는 블록도이다.
도 22a는 도 1의 스토리지 장치에서 호스트 메모리 버퍼의 크기에 따른 매핑 테이블 액세스 시간을 나타낸다.
도 22b는 도 20의 스토리지 장치 및 도 21의 스토리지 컨트롤러에서 버퍼 메모리의 크기에 따른 매핑 테이블 액세스 시간을 나타낸다.
도 23은 본 발명의 실시예들에 따른 스토리지 장치를 포함하는 시스템을 나타내는 블록도이다.
도 24는 본 발명의 실시예들에 따른 모바일 장치를 나타내는 블록도이다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 일 실시예에 따른 스토리지 시스템(또는, 데이터 저장 시스템)을 나타내는 블록도이다.
도 1을 참조하면, 본 발명의 일 실시예에 따른 스토리지 시스템(10)은 호스트 장치(100) 및 솔리드 스테이트 드라이브(solid state drive, 또는 스토리지 장치, 200)를 포함할 수 있다.
호스트 장치(100)는 솔리드 스테이트 드라이브(200)의 동작을 전반적으로 제어한다. 호스트 장치(100)는 솔리드 스테이트 드라이브(200)와 신호를 교환한다. 상기 신호는 리퀘스트(또는 커맨드), 어드레스, 데이터 등을 포함할 수 있다.
스토리지 장치(200)는 스토리지 컨트롤러(300) 및 메인 스토리지(400)를 포함할 수 있고, 메인 스토리지(400)는 복수의 비휘발성 스토리지들(410~4k0)을 포함할 수 있다. 여기서, 복수의 비휘발성 스토리지들(410~4k0)은 낸드 플래시 메모리들로 구현될 수 있다. 여기서, k는 3 이상의 자연수일 수 있다.
실시예에 있어서, 스토리지 장치(200)는 캐시(210)를 더 포함할 수 있다. 캐시(210)는 스토리지 컨트롤러(300) 및 메인 스토리지(200)에 연결되고, 복수의 비휘발성 스토리지들(410~4k0)에 저장된 메타 데이터를 임시로 저장할 수 있다. 스토리지 컨트롤러(300)는 캐시(210)에 임시로 저장된 메타 데이터를 이용하여 메인 스토리지(400)를 설정할 수 있다.
스토리지 컨트롤러(300)는 호스트 장치(100)와 리퀘스트, 어드레스, 데이터와 같은 신호를 교환할 수 있다. 스토리지 컨트롤러(300)는 호스트 장치(100)의 리퀘스트에 따라 해당 비휘발성 스토리지에 데이터를 기입하거나 해당 비휘발성 스토리지로부터 데이터를 독출할 수 있다.
복수의 비휘발성 스토리지들(410~4k0)은 스토리지 장치(200)의 저장 매체로 사용된다. 복수의 비휘발성 스토리지들(410~4k0)은 복수의 채널 그룹들(CHG1~CHGk)을 통해 스토리지 컨트롤러(300)와 연결될 수 있다. 복수의 채널 그룹들(CHG1~CHGk) 각각은 적어도 하나의 채널을 포함할 수 있다. 하나의 채널 그룹에는 하나 또는 그 이상의 비휘발성 스토리지가 연결될 수 있다. 하나의 채널 그룹에 연결되는 비휘발성 스토리지는 동일한 데이터 버스에 연결될 수 있다.
도시되지는 않았지만, 스토리지 장치(200)는 호스트 장치(100)와 연결하기 위한 패드를 더 포함할 수 있다. 스토리지 장치(200)는 패드를 통하여 호스트 장치(100)에 손쉽게 탈부착 될 수 있다.
패드는 스토리지 장치(200) 내부에 형성될 수 있으며, 스토리지 장치(200) 외부에 커넥터 형태로 형성될 수도 있다. 한편, 실시 예에 있어서, 스토리지 장치(200)는 패드를 포함하지 않을 수 있으며, 라우팅 공정을 통하여 호스트 장치(100)에 연결될 수도 있다.
도 2는 본 발명의 실시예들에 따른 도 1의 호스트 장치를 나타내는 블록도이다.
도 2를 참조하면, 호스트 장치(100)는 프로세서(110), ROM(read only memory, 120), 호스트 메모리(130), 스토리지 인터페이스(150), 사용자 인터페이스(140). 메모리 컨트롤러(160) 및 버스(170)를 포함할 수 있다.
버스(170)는 호스트 장치(100)의 프로세서(110), 롬(120), 호스트 메모리(130), 스토리지 인터페이스(150), 사용자 인터페이스(150), 메모리 컨트롤러(160) 간의 데이터를 전송하는 전송로를 의미한다.
롬(120)에는 다양한 어플리케이션(application) 프로그램들이 저장되어 있다. 실시예에 있어서, ATA(Advanced Technology Attachment), SCSI(Small Computer System Interface), eMMC(embedded Multi Media Card), UFS(Universal flash storage), NVMe(nonvolatile memory express) 등과 같은 스토리지 프로토콜을 지원하는 애플리케이션 프로그램들이 롬(120)에 저장될 수 있다.
호스트 메모리(130)에는 데이터 또는 프로그램이 일시적으로 저장될 수 있다.
스토리지 인터페이스(150)는 SATA 인터페이스, PATA 인터페이스, USB(Universal Serial Bus) 또는 SAS 인터페이스, eMMC 인터페이스, UFS 인터페이스, NVMe 인터페이스 등과 같은 스토리지 프로토콜을 지원하는 인터페이스를 포함할 수 있다. 특히 호스트 장치(100)는 스토리지 장치(200)와 NVMe 방식에 의하여 인터페이스 동작을 수행할 수 있다.
사용자 인터페이스(140)는 사용자와 호스트 기기, 컴퓨터 프로그램 등 사이에서 정보를 주고받을 수 있는 물리적 또는 가상적 매개체로서 물리적인 하드웨어와 논리적인 소프트웨어를 포함한다. 즉, 사용자 인터페이스(140)는 사용자가 호스트 장치(100)를 조작할 수 있는 입력 장치와 사용자 입력에 대한 처리 결과를 표시하는 출력 장치를 포함할 수 있다.
프로세서(110)는 호스트 장치(100)의 전반적인 동작을 제어한다. 프로세서(110)는 ROM(120)에 저장된 어플리케이션(application) 또는 툴(tool)을 이용하여 스토리지 장치(200)에 데이터를 저장하기 위한 리퀘스트(또는 커맨드) 또는 스토리지 장치(200)로부터 데이터를 독출하기 위한 리퀘스트(또는 커맨드)를 생성시켜 스토리지 인터페이스(150)를 통하여 스토리지 장치(200)로 전달하도록 제어할 수 있다.
메모리 컨트롤러(160)는 프로세서(110)의 제어에 따라 호스트 메모리(130)를 제어할 수 있다. 특히, 메모리 컨트롤러(160)는 프로세서(110)의 제어에 따라 호스트 메모리(130)의 일부 영역을 스토리지 장치(200)가 액세스할 수 있는 호스트 메모리 버퍼로 할당할 수 있다.
도 3은 본 발명의 실시예들에 따른 도 2의 호스트 메모리를 나타낸다.
도 3을 참조하면, 호스트 메모리(130)는 호스트 영역(131) 및 호스트 메모리 버퍼(HMB, 133)를 포함할 수 있다. 호스트 영역(131)는 호스트 장치(100)에 의하여 사용될 수 있고, 호스트 메모리 버퍼(133)는 스토리지 장치(200)에 의하여 사용될 수 있다.
호스트 메모리 버퍼(133)는 스토리지 컨트롤러(300)가 로딩한 디렉토리(DIR1) 및 매핑 테이블들(MT1~MTp, p는 2 이상의 자연수)과 같은 메타 데이터(MTDT)를 저장할 수 있다.
매핑 테이블들(MT1~MTp)은 비휘발성 스토리지들(410~4k0)에 포함되는 비휘발성 메모리 장치들 각각의 물리 어드레스와 논리 어드레스 사이의 매핑 관계를 나타낼 수 있고, 디렉토리(DIR1)는 하나의 비휘발성 메모리 장치에 저장되는 매핑 테이블들의 어드레스 정보를 저장할 수 있다. 스토리지 컨트롤러(300)는 메타 데이터(MTDT)를 참조하여 호스트 장치(100)로부터의 논리 어드레스를 물리 어드레스로 변환하고, 상기 물리 어드레스에 기반하여 비휘발성 메모리 장치들 중 적어도 하나에 대한 메모리 동작을 수행할 수 있다. 상기 메모리 동작은 프로그램 동작, 독출 동작 및 독출 동작을 포함할 수 있다.
프로세서(110)는 메인 스토리지(400)에 저장된 소스 코드들을 호스트 메모리(130)의 호스트 영역(131)에 로드하고, 호스트 영역(131)에 로딩된 코드들을 실행함으로써, 운영체제, 어플리케이션과 같은 다양한 소프트웨어들을 구동할 수 있다. 또한, 프로세서(110)는 스토리지 장치(200)에 저장된 데이터를 호스트 영역(131)에 로드하고, 호스트 영역(131)에 로드된 데이터를 처리할 수 있다. 프로세서(110)는 는 호스트 영역(131)에 저장된 데이터 중 장기적으로 보존하고자 하는 스토리지 장치(200)에 저장할 수 있다.
도 4는 본 발명의 실시예에 따른 도 1의 스토리지 시스템에서 스토리지 컨트롤러를 나타내는 블록도이다.
스토리지 컨트롤러(300)는 중앙 처리 장치(CPU)와 같은 프로세서(310), 지역성 모니터(320), ECC(Error correction code) 엔진(330), 호스트 인터페이스(340), 로딩 컨트롤러(360), 비휘발성 메모리 인터페이스(350) 및 버스(315)를 포함하여 구성될 수 있다.
버스(315)는 프로세서(310), 지역성 모니터(320), ECC 엔진(330), 호스트 인터페이스(340), 로딩 컨트롤러(360) 및 비휘발성 메모리 인터페이스(350) 사이의 데이터를 전송하는 전송로를 의미한다.
프로세서(310)는 호스트 장치(100)와 비휘발성 스토리지들(410~4k0) 사이의 데이터 교환을 위한 동작을 수행할 수 있다. 프로세서(310)는 펌웨어(311) 및 플래시 변환 계층(flash translation layer, FTL)(313)를 구동할 수 있다.
호스트 인터페이스(340)는 호스트 장치(100)와 연결되고, 비휘발성 메모리 인터페이스(350)는 비휘발성 스토리지들(410~4k0)과 연결된다. 프로세서(310)는 호스트 인터페이스(340)를 통하여 상기 호스트 장치(100)와 통신할 수 있다.
예를 들어, 호스트 인터페이스(340)는 SATA 인터페이스, PATA 인터페이스, USB(Universal Serial Bus) 또는 SAS 인터페이스, eMMC 인터페이스, UFS 인터페이스, NVMe 인터페이스 등과 같은 다양한 인터페이스 프로토콜들 중 적어도 하나를 통해 호스트 장치(100)와 통신하도록 구성될 수 있다.
또한, 프로세서(310)는 비휘발성 메모리 인터페이스(350)를 통하여 비휘발성 스토리지들(410~4k0)과 통신할 수 있다. 비휘발성 메모리 인터페이스(350)는 비휘발성 스토리지들(410~4k0)의 수만큼 구비되어 비휘발성 스토리지들(400a~400k) 각각과 연결될 수 있다.
ECC 엔진(330)은 상기 호스트 장치(100)로부터 제공된 데이터를 ECC 인코딩하여 비휘발성 스토리지들(400a~400k)에 제공하고, 비휘발성 스토리지들(400a~400k)로부터 독출된 데이터를 ECC 디코딩하여 호스트 장치(100)에 제공할 수 있다.
지역성 모니터(320)는 호스트 장치(320)로부터 수신되는 호스트 어드레스(HADDR), 즉 물리 어드레스에 기초하여 물리 어드레스의 지역성(locality)을 모니터링하고, 물리 어드레스가 지역성을 가지는 경우 이를 나타내는 지역성 정보(LIN)를 로딩 컨트롤러(360)에 제공할 수 있다.
여기서 지역성이라고 함은 데이터가 자주 사용되는 정도를 나타내는 것으로, 같은 데이터가 짧은 시간 안에 반복적으로 사용되거나 공간적으로 근처에 있는 여러 데이터가 짧은 시간 안에 접근되는 경우 지역성이 높다고 할 수 있다. 지역성 모니터(320)는 사용 횟수가 많거나 사용 빈도가 높은 데이터는 지역성이 높고, 사용 횟수가 적거나 사용 빈도가 낮은 데이터는 지역성이 낮은 것으로 판단할 수 있다.
데이터의 지역성은 해당 데이터가 저장된 메모리 어드레스의 지역성으로 달리 표현될 수 있다. 따라서 지역성 모니터(320)는 커맨드의 접근 횟수가 많거나 일정 시간 구간 동안에 커맨드의 접근 빈도가 높은 메모리 어드레스는 지역성이 높고, 접근 횟수가 적거나 접근 빈도가 낮은 메모리 어드레스는 지역성이 낮은 것으로 판단할 수 있다.
로딩 컨트롤러(360)는 호스트 메모리 버퍼(133)의 사이즈를 나타내는 사이즈 정보(HMSN) 및 지역성 정보(LIN)에 기초하여 상기 디렉토리들 및 상기 매핑 테이블들의 호스트 메모리 버퍼(133)로의 로딩을 제어할 수 있다. 로딩 컨트롤러(360)는 상기 로딩 제어에 관련된 로딩 모드 신호(LMS)를 생성하고, 로딩 모드 신호(LMS)를 비휘발성 인터페이스(350)를 통하여 비휘발성 스토리지들(400a~400k)에 제공할 수 있다. 로딩 컨트롤러(360)는 레지스터(363)를 포함할 수 있다.
비휘발성 스토리지들(400a~400k)은 각각 로딩 모드 신호(LMS)를 수신하고, 로딩 모드 신호(LMS)가 지시하는 로딩 동작에 따라 내부에 저장된 디렉토리 및 매핑 테이블의 일부를 스토리지 컨트롤러(300)를 통하여 호스트 메모리 버퍼(133)에 로딩할 수 있다.
도 5는 본 발명의 실시예들에 따른 도 4의 로딩 컨트롤러를 나타내는 블록도이다.
도 5를 참조하면, 로딩 컨트롤러(360)는 제1 비교기(361), 카운터(362), 레지스터(363), 제2 비교기(364) 및 로딩 모드 신호 생성기(365)를 포함할 수 있다.
제1 비교기(361)는 사이즈 정보(HMSN)와 제1 기준값(SREF)을 비교하여 제1 비교 신호(CS1)를 출력한다. 카운터(362)는 호스트 장치(100)로부터 수신한 논리 어드레스가 호스트 메모리 버퍼(133)를 참조한 검색에서 발견되지 않는 미스 횟수(MISS)를 카운팅하여 카운팅 값(CV)을 제공한다. 제2 비교기(364)는 카운팅 값(CV)과 제2 기준값(CREF)을 비교하여 제2 비교 신호(CS2)를 출력한다. 레지스터(363)는 제1 기준값(SREF)과 제2 기준값(CREF)를 저장한다.
로딩 모드 신호 생성기(365)는 제1 비교 신호(CS1), 제2 비교 신호(CS2) 및 지역성 정보(LIN)를 수신하고, 제1 비교 신호(CS1), 제2 비교 신호(CS2) 및 지역성 정보(LIN)에 기초하여 로딩 모드 신호(LMS)를 생성할 수 있다.
예를 들어, 제1 비교 신호(CS1)가 사이즈 정보(HMSN)가 제1 기준값(SREF)보다 작음을 나타내는 경우에, 로딩 모드 신호 생성기(365)는 상기 디렉토리들의 일부의 우선적 로딩을 지시하는 로딩 모드 신호(LMS)를 생성할 수 있다. 예를 들어, 제1 비교 신호(CS1)가 사이즈 정보(HMSN)가 제1 기준값(SREF)보다 크거나 같음을 나타내는 경우에, 로딩 모드 신호 생성기(365)는 디렉토리들의 적어도 하나와 매핑 테이블들의 일부의 병합 로딩을 지시하는 로딩 모드 신호(LMS)를 생성할 수 있다. 이 때, 디렉토리들의 적어도 하나와 매핑 테이블들의 일부는 1:N의 비율로 호스트 메모리 버퍼(133)에 로딩될 수 있다.
실시예에 있어서, 로딩 컨트롤러(360)는 호스트 메모리 버퍼(133)의 사이즈 정보(HMSN)에 기초하여 N 값을 설정할 수 있다. 실시예에 있어서, 로딩 컨트롤러(360)는 호스트 메모리 버퍼(133)의 사이즈 정보(HMSN) 및 지역성 정보(LIN)에 기초하여 N 값을 설정할 수 있다. 즉, 로딩 컨트롤러(360)는 호스트 메모리 버퍼(133)의 사이즈 정보(HMSN) 및 지역성 정보(LIN)에 기초하여 디렉토리들 및 매핑 테이블들의 로딩 비율을 결정할 수 있다. 여기서, 디렉토리들의 일부는 제1 세트라 칭하고, 매핑 테이블들의 일부는 제2 세트라 칭할 수 있다.
예를 들어, 제2 비교 신호(CS2)가 카운팅 값(CV)이 제2 기준값(CREF)보다 크거나 같음을 나타내는 경우에, 로딩 모드 신호 생성기(365)는 호스트 메모리 버퍼(133)에 로딩된 디렉토리들의 일부와 매핑 테이블들의 일부 의 갱신을 지시하는 로딩 모드 신호(LMS)를 생성할 수 있다. 로딩 모드 신호(LMS)가 갱신을 지시하는 경우, 비휘발성 스토리지들(410~4k0) 각각은 디렉토리들의 다른 일부 및 매핑 테이블들의 다른 일부 중 하나를 스토리지 컨트롤러(300)를 통하여 호스트 메모리 버퍼(133)에 로딩할 수 있다.
즉, 로딩 모드 신호(LMS)는 복수의 로딩 모드들 중 하나를 지정할 수 있다. 복수의 로딩 모드들은 제1 로딩 모드, 제2 로딩 모드 및 제3 로딩 모드를 포함할 수 있다. 제1 로딩 모드는 상술한 바와 같이 디렉토리들의 일부의 우선적 로딩을 지시할 수 있다. 제2 로딩 모드는 상술한 바와 같이, 디렉토리들의 적어도 하나와 매핑 테이블들의 일부의 병합 로딩을 지시할 수 있다. 제3 로딩 모드는 매핑 테이블들의 우선적 로딩을 지시할 수 있다.
도 6은 도 1의 스토리지 시스템의 동작을 예시적으로 나타낸다.
도 1 내지 도 6를 참조하면, S10 단계는 스토리지 시스템(10)의 부팅 동작을 나타낸다. S10 단계에서는 S11, S12, S13, S14, S16 단계들이 수핼될 수 있다. S11 단계에서 프로세서(110)는 스토리지 컨트롤러(300)를 인식할 수 있다. S12 단계에서 스토리지 컨트롤러(300)는 프로세서(110)로 호스트 메모리 버퍼(133)의 사용을 요구할 수 있다.
S13 단계에서 프로세서(110)는 스토리지 컨트롤러(300)의 요청을 참조하여 호스트 메모리(130)의 일부 영역을 호스트 메모리 버퍼(133)로 할당하고, S14 단계에서 할당 결과와 호스트 메모리 버퍼(133)의 사이즈 정보를 스토리지 컨트롤러(300)에 알릴 수 있다.
프로세서(110)는 셋 피쳐(set features) 커맨드를 통하여 할당 결과와 사이즈 정보를 스토리지 컨트롤러(300)에 알릴 수 있다. S16 단계에서, 스토리지 컨트롤러(300)는 사이즈 정보에 적어도 기초하여 매핑 테이블들의 적어도 일부 및 디렉토리들의 일부 중 적어도 하나를 호스트 메모리 버퍼(133)에 로딩할 수 있다.
S20 단계에서, 호스트 장치(100) 및 스토리지 장치(200)는 노멀 동작을 수행한다. S20 단계는 S21 단계 및 S22 단계를 포함할 수 있다.
S21 단계에서, 호스트 장치(100)는 스토리지 장치(200)에 커맨드(CMD) 및 어드레스(ADDR)를 전송한다. S22 단계에서 스토리지 컨트롤러(300)는 호스트 메모리 버퍼(133)에 로딩된 매핑 테이블들의 적어도 일부 및 디렉토리들의 일부를 참조하여 어드레스(ADDR)를 물리 어드레스로 변환하고, 상기 물리 어드레스가 지정하는 메모리 영역에 커맨드(CMD)가 지시하는 메모리 동작을 수행한다. S22 단계에서, 메모리 동작의 결과에 따라 스토리지 장치(200)와 호스트 장치(100) 사이에 데이터(DATA)가 교환될 수 있다.
도 7a는 비휘발성 메모리 장치들 각각에 저장되는 디렉토리와 매핑 테이블들을 나타낸다.
도 7a를 참조하면, 비휘발성 메모리 장치들(NVM1~NVMk) 중 비휘발성 메모리 장치(NVM1)의 메타 영역에는 디렉토리(DIR1) 및 매핑 테이블들(MT11~MT1s)이 저장될 수 있고, 비휘발성 메모리 장치(NVMg)의 메타 영역에는 디렉토리(DIRg) 및 매핑 테이블들(MTk1~MTgs)이 저장될 수 있고, 비휘발성 메모리 장치(NVMk)의 메타 영역에는 디렉토리(DIRk) 및 매핑 테이블들(MTk1~MTks)이 저장될 수 있다.
매핑 테이블(MT11)에는 비휘발성 메모리 장치(NVM1)의 메모리 블록들의 논리 페이지 번호들(논리 어드레스들, LPN1~LPNj), 논리 페이지 번호들(LPN1~LPNj)에 대응되는 물리 페이지 번호들(물리 어드레스들, PPN2~PPNr), 지역성 여부를 나타내는 비트 맵(BM) 및 액세스 중요도를 나타내는 제1 우선순위 정보(PR11)를 저장할 수 있다.
스토리지 컨트롤러(300)의 프로세서(310)는 스토리지 장치(200)의 노멀 동작에서 비휘발성 메모리 장치들(NVM1~NVMk) 각각의 메모리 블록들에 대한 프로그램 동작 및 독출 동작 시의 특정 메모리 블록에 대한 액세스 빈도 및 지역성 등에 기초하여 비트 맵(BM)의 논리 레벨을 결정하고, 제1 우선순위 정보(PR11)의 값을 결정할 수 있다.
도 7b는 도 7a의 디렉토리를 나타낸다.
도 7b를 참조하면, 디렉토리(DIR1)는 매핑 테이블들(MT11~MT1s)의 어드레스 정보들(MPPN1~MPPNs)과 액세스 중요도를 나타내는 제2 우선순위 정보(PR21)를 저장할 수 있다. 어드레스 정보(MPPN1)는 매핑 테이블(MT11)이 저장되는 메모리 블록(BLK1)의 페이지(PG2)에 대한 물리 어드레스 정보를 포함할 수 있다. 스토리지 컨트롤러(300)의 프로세서(310)는 디렉토리(DIR1)에 포함되는 매핑 테이블들(MT11~MT1s) 각각의 제1 우선순위 정보 및 비트 맵에 기초하여 제2 우선순위 정보(PR21)을 결정할 수 있다.
도 8은 도 6의 스토리지 시스템의 동작의 일 예를 나타낸다.
도 8은 호스트 메모리 버퍼(133)의 크기가 제1 기준값 보다 작은 경우를 나타낸다.
도 8의 동작은 단계(S15)를 더 포함하고, 단계(S16a)가 다르다는 점이 도 8의 동작과 차이가 있다. 따라서 부팅 동작(S10a)도 부팅 동작(S10)과 다르다.
도 8을 참조하면, 호스트 컨트롤러(300)는 단계(S14)에서 전송된 호스트 메모리 버퍼(133)의 사이즈 정보(HMSN)를 제1 기준값과 비교하고, 사이즈 정보(HMSN)가 제1 기준값보다 작은 경우 이를 나타내는 로딩 모드 신호(LMS)를 메인 스토리지(400)에 제공한다. 단계(S16a)에서 호스트 컨트롤러(300)는 디렉토리들의 우선순위 정보에 기초하여 디렉토리들 중 일부를 우선적으로 호스트 메모리 버퍼(133)에 로딩한다.
도 9는 도 8의 동작시에 호스트 메모리 버퍼를 나타낸다.
도 9를 참조하면, 호스트 메모리 버퍼(HMB)의 사이즈가 제1 기준값보다 작은 경우에, 호스트 메모리 버퍼(HMB)에는 스토리지 컨트롤러(300)에 의하여 일부 디렉토리들(DIR1~DIRg)이 로딩될 수 있다.
도 10은 도 6의 스토리지 시스템의 동작의 일 예를 나타낸다.
도 10은 호스트 메모리 버퍼(133)의 크기가 제1 기준값 보다 크거나 같은 경우를 나타낸다.
도 10의 동작은 단계(S15)를 더 포함하고, 단계(S16b)가 다르다는 점이 도 8의 동작과 차이가 있다. 따라서 부팅 동작(S10b)도 부팅 동작(S10)과 다르다.
도 10을 참조하면, 호스트 컨트롤러(300)는 단계(S14)에서 전송된 호스트 메모리 버퍼(133)의 사이즈 정보(HMSN)를 제1 기준값과 비교하고, 사이즈 정보(HMSN)가 제1 기준값보다 크거나 같은 경우 이를 나타내는 로딩 모드 신호(LMS)를 메인 스토리지(400)에 제공한다. 단계(S16b)에서 호스트 컨트롤러(300)는 우선순위 정보 및 지역성 정보(LIN)에 기초하여 디렉토리들 중 적어도 하나 및 매핑 테이블들 중 일부를 호스트 메모리 버퍼(133)에 로딩한다.
도 11은 도 10의 동작시에 호스트 메모리 버퍼를 나타낸다.
도 11을 참조하면, 호스트 메모리 버퍼(HMB)의 사이즈가 제1 기준값보다 크거나 같은 경우에, 호스트 메모리 버퍼(HMB)에는 스토리지 컨트롤러(300)에 의하여 적어도 하나의 디렉토리(DIR1)와 일부 매핑 테이블들(MT21~MT2q, MTg1~MTgq)이 로딩될 수 있다. 적어도 하나의 디렉토리(DIR1)와 일부 매핑 테이블들(MT21~MT2q, MTg1~MTgq)은 1: N(N은 3 이상의 자연수)의 비율로 로딩될 수 있다. 스토리지 컨트롤러(300)는 사이즈 정보(HMSN) 및 지역성 정보(LIN)에 기초하여 N 값을 조절할 수 있다.
적어도 하나의 디렉토리(DIR1)와 일부 매핑 테이블들(MT21~MT2q, MTg1~MTgq)은 서로 다른 비휘발성 메모리 장치들과 관련될 수 있다. 즉, 적어도 하나의 디렉토리(DIR1)와 일부 매핑 테이블들(MT21~MT2q, MTg1~MTgq)은 서로 독립적일 수 있다.
도 12는 도 1의 스토리지 시스템에서 메인 스토리지의 채널 및 웨이의 구성을 예시적으로 나타낸다.
도 12를 참조하면, 채널 그룹들(CHG1~CHGk) 각각에는 비휘발성 스토리지들(410~4k0)이 각각 연결될 수 있다. 채널 그룹들(CHG1~CHGk) 각각에 접속된 비휘발성 스토리지들(410~4k0)은 m 개의 웨이들(way1~waym)을 구성할 수 있다. 각 채널 그룹에 구성된 m 개의 웨이에는 m 개의 비휘발성 메모리 장치들(411~41m, 421~42m, …, 4k1~4km)이 연결될 수 있다. 여기서, m은 3 이상의 자연수일 수 있다.
웨이(way)는 동일한 채널을 공유하는 비휘발성 메모리 장치들을 구분하기 위한 단위이다. 채널 번호와 웨이 번호에 따라서 각각의 비휘발성 메모리 장치가 식별될 수 있다.
도 13은 도 1의 스토리지 장치에서 스토리지 컨트롤러와 하나의 비휘발성 메모리 장치의 연결을 나타낸다.
도 13을 참조하면, 비휘발성 메모리 장치(411)는 스토리지 컨트롤러(300)의 제어에 따라 소거, 기입, 독출 동작 등을 수행할 수 있다. 이를 위하여, 비휘발성 메모리 장치(411)는 입출력 라인을 통해 커맨드(CMD), 어드레스(ADDR) 및 데이터(DATA)를 입력받는다. 또한, 비휘발성 메모리 장치(411)는 제어 라인을 통하여 제어 신호(CTRL)를 제공받을 수 있고 파워 라인을 통해 파워(PWR)를 제공받을 수 있다. 또한, 비휘발성 메모리 장치(411)는 제어 라인을 통하여 상태 신호(RnB)를 스토리지 컨트롤러(300)에 제공할 수 있다.
도 14는 본 발명의 실시예들에 따른 도 13의 비휘발성 메모리 장치를 나타내는 블록도이다.
도 14를 참조하면, 비휘발성 메모리 장치(411)는 메모리 셀 어레이(420), 어드레스 디코더(450), 페이지 버퍼 회로(430), 데이터 입출력 회로(440), 제어 회로(460) 및 전압 생성기(470)를 포함할 수 있다.
메모리 셀 어레이(420)는 스트링 선택 라인(SSL), 복수의 워드라인들(WLs) 및 접지 선택 라인(GSL)을 통해 어드레스 디코더(450)와 연결될 수 있다. 또한, 메모리 셀 어레이(420)는 복수의 비트 라인들(BLs)을 통해 페이지 버퍼 회로(430)와 연결될 수 있다. 메모리 셀 어레이(420)는 복수의 워드 라인들(WLs) 및 복수의 비트 라인들(BLs)에 연결되는 복수의 메모리 셀들을 포함할 수 있다.
일 실시예에 있어서, 메모리 셀 어레이(420)는 기판 상에 삼차원 구조(또는 수직 구조)로 형성되는 삼차원(three dimensional) 메모리 셀 어레이일 수 있다. 이 경우, 메모리 셀 어레이(420)는 서로 적층되어 형성되는 복수의 메모리 셀들을 포함하는 수직 메모리 셀 스트링들을 포함할 수 있다. 다른 실시예에 있어서, 메모리 셀 어레이(420)는 기판 상에 이차원 구조(또는 수평 구조)로 형성되는 이차원(two dimensional) 메모리 셀 어레이일 수 있다.
도 15는 도 14의 비휘발성 메모리 장치에서 메모리 셀 어레이를 나타내는 블록도이다.
도 15를 참조하면, 메모리 셀 어레이(420)는 복수의 메모리 블록들(BLK1~BLKz)을 포함한다. 복수의 메모리 블록들(BLK1~BLKz)은 제1 내지 제3 방향들(D1~D3)을 따라 신장된다. 실시예에 있어서, 메모리 블록들(BLK1~BLKz)은 도6에 도시된 어드레스 디코더(450)에 의해 선택된다. 예를 들면, 어드레스 디코더(450)는 메모리 블록들(BLK1~BLKz) 중 블록 어드레스에 대응하는 메모리 블록(BLK)을 선택할 수 있다.
도 16은 도 15의 메모리 블록들 중 하나의 메모리 블록을 나타내는 회로도이다.
도 16에 도시된 메모리 블록(BLKi)은 기판(SUB) 상에 삼차원 구조로 형성되는 삼차원 메모리 메모리 블록을 나타낸다. 예를 들어, 메모리 블록(BLKi)에 포함되는 복수의 메모리 셀 스트링들은 상기 기판(SUB)과 수직한 방향(PD)으로 적층될 수 있다.
도 16을 참조하면, 메모리 블록(BLKi)은 비트 라인들(BL1, BL2, BL3)과 공통 소스 라인(CSL) 사이에 연결되는 복수의 메모리 셀 스트링들(NS11~NS33)을 포함할 수 있다. 복수의 메모리 셀 스트링들(NS11~NS33) 각각은 스트링 선택 트랜지스터(SST), 복수의 메모리 셀들(MC1, MC2, ..., MC8) 및 접지 선택 트랜지스터(GST)를 포함할 수 있다.
스트링 선택 트랜지스터(SST)는 상응하는 스트링 선택 라인(SSL1, SSL2, SSL3)에 연결될 수 있다. 복수의 메모리 셀들(MC1, MC2, ..., MC8)은 각각 상응하는 워드 라인(WL1, WL2, ..., WL8)에 연결될 수 있다. 접지 선택 트랜지스터(GST)는 상응하는 접지 선택 라인(GSL1, GSL2, GSL3)에 연결될 수 있다. 스트링 선택 트랜지스터(SST)는 상응하는 비트 라인(BL1, BL2, BL3)에 연결되고, 접지 선택 트랜지스터(GST)는 공통 소스 라인(CSL)에 연결될 수 있다.
동일 높이의 워드 라인(예를 들면, WL1)은 공통으로 연결되고, 접지 선택 라인(GSL1, GSL2, GSL3) 및 스트링 선택 라인(SSL1, SSL2, SSL3)은 각각 분리될 수 있다.
도 17은 도 16의 메모리 블록의 하나의 셀 스트링의 구조의 예를 보여준다.
도 16 및 도 17을 참조하면, 셀 스트링(NS11)에는 기판(SUB) 위에 기판과 수직인 방향으로 신장되어 기판(SUB)과 접촉하는 필라(PL)가 제공될 수 있다. 도 17에 도시된 접지 선택 라인(GSL1), 워드 라인들(WL1~WL8), 그리고 스트링 선택 라인(SSL1)은 각각 기판(SUB)과 평행한 도전 물질들, 예를 들어 금속 물질들로 형성될 수 있다. 필라(PL)는 접지 선택 라인(GSL1), 워드 라인들(WL1~WL8), 그리고 스트링 선택 라인(SSL1)을 형성하는 도전 물질들을 관통하여 기판(SUB)과 접촉할 수 있다.
도 17에서, 절단 선(A-A')에 따른 단면도가 함께 도시되어 있다. 예시적으로, 제1 워드 라인(WL1)에 대응하는 제1 메모리 셀(MC1)의 단면도가 도시된다. 필라(PL)는 원통형의 바디(BD)를 포함할 수 있다. 바디(BD)의 내부에 에어갭(AG)이 제공될 수 있다.
바디(BD)는 P-타입 실리콘을 포함하며, 채널이 형성되는 영역일 수 있다. 필라(PL)는 바디(BD)를 둘러싸는 원통형의 터널 절연막(TI) 및 터널 절연막(TI)을 둘러싸는 원통형의 전하 포획 막(CT)을 더 포함할 수 있다. 제1 워드 라인(WL1) 및 필라(PL)의 사이에 블로킹 절연막(BI)이 제공될 수 있다. 바디(BD), 터널 절연막(TI), 전하 포획 막(CT), 블로킹 절연막(BI), 그리고 제1 워드 라인(WL1)은 기판(SUB) 또는 기판(SUB)의 상부 면과 수직인 방향으로 형성된 전하 포획형 트랜지스터일 수 있다. 스트링 선택 트랜지스터(SST), 접지 선택 트랜지스터(GST) 및 다른 메모리 셀들은 제1 메모리 셀(MC1)과 동일한 구조를 가질 수 있다.
다시 도 14를 참조하면, 제어 회로(460)는 스토리지 컨트롤러(300)로부터 커맨드(CMD) 및 어드레스 신호(ADDR)를 수신하고, 커맨드(CMD) 및 어드레스 신호(ADDR)에 기초하여 비휘발성 메모리 장치(411)의 소거 루프, 프로그램 루프 및 독출 동작을 제어할 수 있다. 여기서 프로그램 루프는 프로그램 동작과 프로그램 검증 동작을 포함할 수 있고, 소거 루프는 소거 동작과 소거 검증 동작을 포함할 수 있다.
예를 들어, 제어 회로(460)는 커맨드 신호(CMD)에 기초하여 전압 생성기(470)를 제어하기 위한 제어 신호들(CTLs)을 생성하고, 어드레스 신호(ADDR)에 기초하여 로우 어드레스(R_ADDR) 및 컬럼 어드레스(C_ADDR)를 생성할 수 있다. 제어 회로(460)는 로우 어드레스(R_ADDR)를 어드레스 디코더(430)에 제공하고, 컬럼 어드레스(C_ADDR)를 데이터 입출력 회로(440)에 제공할 수 있다.
어드레스 디코더(430)는 스트링 선택 라인(SSL), 복수의 워드 라인들(WLs) 및 접지 선택 라인(GSL)을 통해 메모리 셀 어레이(420)와 연결될 수 있다. 프로그램 동작 또는 독출 동작 시, 어드레스 디코더(450)는 제어 회로(460)로부터 제공되는 로우 어드레스(R_ADDR)에 기초하여 복수의 워드 라인들(WLs) 중의 하나를 선택 워드라인인 제1 워드라인 결정하고, 복수의 워드 라인들(WLs) 중에서 제1 워드라인을 제외한 나머지 워드 라인들을 비선택 워드라인들로 결정할 수 있다.
전압 생성기(470)는 제어 회로(460)로부터 제공되는 제어 신호들(CTLs)에 기초하여 파워(PWR)를 이용하여 비휘발성 메모리 장치(411)의 동작에 필요한 워드 라인 전압들(VWLs)을 생성할 수 있다. 전압 생성기(470)로부터 생성되는 워드 라인 전압들(VWLs)은 어드레스 디코더(430)를 통해 복수의 워드 라인들(WLs)에 인가될 수 있다.
예를 들어, 소거 동작 시, 전압 생성기(470)는 메모리 블록의 웰에 소거 전압을 인가하고 메모리 블록의 모든 워드라인들에 접지 전압을 인가할 수 있다. 소거 검증 동작 시, 전압 생성기(470)는 하나의 메모리 블록의 모든 워드라인들에 소거 검증 전압을 인가하거나 워드라인 단위로 소거 검증 전압을 인가할 수 있다.
예를 들어, 프로그램 동작 시, 전압 생성기(470)는 제1 워드라인에 프로그램 전압을 인가하고, 비선택 워드라인들에는 프로그램 패스 전압을 인가할 수 있다. 또한 프로그램 검증 동작 시, 전압 생성기(470)는 제1 워드라인에 프로그램 검증 전압을 인가하고, 비선택 워드라인들에는 검증 패스 전압을 인가할 수 있다.
또한, 독출 동작 시, 전압 생성기(470)는 제1 워드라인에 독출 전압을 인가하고, 비선택 워드라인들에는 독출 패스 전압을 인가할 수 있다.
페이지 버퍼 회로(430)는 복수의 비트 라인들(BLs)을 통해 메모리 셀 어레이(420)와 연결될 수 있다. 페이지 버퍼 회로(430)는 복수의 페이지 버퍼를 포함할 수 있다. 일 실시예에 있어서, 하나의 페이지 버퍼에 하나의 비트 라인이 연결될 수 있다. 다른 실시예에 있어서, 하나의 페이지 버퍼에 두 개 이상의 비트 라인들이 연결될 수 있다.
페이지 버퍼 회로(430)는 프로그램 동작 시 선택된 페이지에 프로그램될 데이터를 임시로 저장하고, 독출 동작 시 선택된 페이지로부터 독출된 데이터를 임시로 저장할 수 있다.
데이터 입출력 회로(440)는 데이터 라인들(DLs)을 통해 페이지 버퍼 회로(430)와 연결될 수 있다. 프로그램 동작 시, 데이터 입출력 회로(440)는 스토리지 컨트롤러(300)로부터 데이터(DATA)를 수신하고, 제어 회로(460)로부터 제공되는 컬럼 어드레스(C_ADDR)에 기초하여 데이터(DATA)를 페이지 버퍼 회로(430)에 제공할 수 있다.
독출 동작 시, 데이터 입출력 회로(440)는 제어 회로(500)로부터 제공되는 컬럼 어드레스(C_ADDR)에 기초하여 페이지 버퍼 회로(430)에 저장된 데이터(DATA)를 상기 스토리지 컨트롤러(300)에 제공할 수 있다.
또한, 페이지 버퍼 회로(430)와 데이터 입출력 회로(440)는 메모리 셀 어레이(420)의 제1 저장 영역으로부터 데이터를 독출하고, 독출된 데이터를 메모리 셀 어레이(420)의 제2 저장 영역에 기입할 수 있다. 즉, 페이지 버퍼 회로(430)와 데이터 입출력 회로(440)는 카피-백(copy-back) 동작을 수행할 수 있다. 페이지 버퍼 회로(430)와 데이터 입출력 회로(440)는 제어 회로(460)에 의하여 제어될 수 있다.
도 18은 본 발명의 실시예들에 따른 스토리지 장치의 동작 방법을 나타내는 흐름도이다.
도 1 내지 도 18을 참조하면, 데이터를 저장하며 복수의 비휘발성 메모리 장치들을 구비하는 메인 스토리지(400) 및 상기 메인 스토리지(400)를 제어하는 스토리지 컨트롤러(300)를 구비하는 스토리지 장치(200)의 동작 방법에서는 스토리지 컨트롤러(300)가 스토리지 장치(200)를 제어하는 외부의 호스트 장치(100)에 포함되는 호스트 메모리 버퍼(133)의 사이즈 정보(HMSN)를 호스트 장치(100)로부터 수신한다(S610). 호스트 장치(100)는 스토리지 컨트롤러(300)의 요청에 응답하여 호스트 메모리(130)의 영역 일부를 호스트 메모리 버퍼(133)로 할당하고, 할당 결과와 호스트 메모리 버퍼(133)의 사이즈 정보(HMSN)를 스토리지 컨트롤러(300)에 전송할 수 있다.
스토리지 컨트롤러(300)는 상기 사이즈 정보(HMSN) 및 호스트 장치(100)의 데이터 액세스 패턴과 관련된 지역성 정보(LIN) 중 적어도 하나에 기초하여 상기 비휘발성 메모리 장치들 각각에 저장되며 상기 비휘발성 메모리 장치들 각각의 물리 어드레스와 논리 어드레스 사이의 매핑 관계를 나타내는 매핑 테이블(MTs)의 적어도 일부 및 상기 매핑 테이블들(MTs)의 어드레스 정보를 저장하는 디렉토리들(DIRs)의 일부 중 적어도 하나를 호스트 메모리 버퍼(133)에 로딩한다(S620).
스토리지 컨트롤러(300)는 호스트 장치(100)로부터의 커맨드(CMD) 및 어드레스(ADDR)에 기초하여 호스트 메모리 버퍼(133)를 참조하여 커맨드(CMD)가 지시하는 메모리 동작을 어드레스(ADDR)가 지정하는 메모리 영역에 수행한다(S670).
도 19는 도 18의 동작 방법에서 호스트 메모리 버퍼에 로딩하는 단계를 상세히 나타내는 흐름도이다.
도 3 내지 도 19를 참조하면, 매핑 테이블(MTs)의 적어도 일부 및 디렉토리들(DIRs)의 일부 중 적어도 하나를 호스트 메모리 버퍼(133)에 로딩(S620)하기 위하여, 스토리지 컨트롤러(300)의 로딩 컨트롤러(360)는 호스트 메모리 버퍼(133)의 사이즈 정보(HMSN)를 제1 기준값(SREF)과 비교하여 호스트 메모리 버퍼(133)의 사이즈가 제1 기준값(SREF)보다 작은지 여부를 판단한다(S630).
호스트 메모리 버퍼(133)의 사이즈가 제1 기준값(SREF)보다 작은 경우(S630에서 YES), 스토리지 컨트롤러(300)는 디렉토리들의 제2 우선순위 정보에 기초하여 디렉토리들의 일부를 호스트 메모리 버퍼(133)에 우선적으로 로딩한다(S640).
호스트 메모리 버퍼(133)의 사이즈가 제1 기준값(SREF)보다 크거나 같은 경우(S630에서 NO), 스토리지 컨트롤러(300)는 매핑 테이블들의 제1 우선순위 정보, 디렉토리들의 제2 우선순위 정보 및 지역성 정보(LIN)에 기초하여 디렉토리들의 적어도 하나 및 매핑 테이블들의 일부를 호스트 메모리 버퍼(133)에 로딩한다(S650).
따라서, 본 발명의 실시예들에 따르면, 호스트 메모리(130)의 일부 영역으로 할당되는 호스트 메모리 버퍼(133)의 사이즈가 스토리지 장치(300)에 포함되는 메인 스토리지(400)의 매핑 테이블들의 전체 어드레스 영역을 커버할 수 없는 경우에, 스토리지 컨트롤러(300)는 호스트 메모리 버퍼(133)의 크기 및 데이터 액세스 패턴과 관련된 지역성 정보(LIN) 중 적어도 하나에 기초하여 매핑 테이블들의 적어도 일부 및 디렉토리들의 일부를 동적으로 호스트 메모리 버퍼(133)에 로딩한다. 스토리지 컨트롤러(300)는 호스트 메모리 버퍼(133)를 참조하여 논리 어드레스에 대응되는 물리 어드레스가 지정하는 메모리 영역에 메모리 동작을 수행할 수 있다. 따라서, 매핑 테이블들에 대한 액세스 타임을 감소시킬 수 있다.
도 20은 본 발명의 실시예들에 따른 스토리지 시스템을 나타내는 블록도이다.
도 20을 참조하면, 스토리지 시스템(10a)은 호스트 장치(100a) 및 스토리지 장치(200a)를 포함할 수 있다.
도 20의 스토리지 시스템(10a)은 호스트 장치(100a)가 호스트 메모리의 일부 영역을 호스트 메모리 버퍼로 할당하지 않고, 스토리지 컨트롤러(300a)가 내부에 포함되는 버퍼 메모리의 크기 및 지역성 정보에 기초하여 디렉토리들의 일부 및 매핑 테이블들의 일부 중 적어도 일부를 로딩한 후 메모리 동작을 수행한다는 점에서 도 1의 스토리지 시스템(10)과 차이가 있고, 다른 구성 및 동작은 도 1의 스토리지 시스템(10)과 실질적으로 동일하므로 중복되는 설명은 생략한다.
스토리지 장치(200a)는 스토리지 컨트롤러(300a) 및 메인 스토리지(400)를 포함할 수 있고, 메인 스토리지(400)는 복수의 비휘발성 스토리지들(410~4k0)을 포함할 수 있다.
도 21은 본 발명의 실시예에 따른 도 20의 스토리지 시스템에서 스토리지 컨트롤러를 나타내는 블록도이다.
도 21을 참조하면, 스토리지 컨트롤러(300a)는 중앙 처리 장치(CPU)와 같은 프로세서(310), 지역성 모니터(320), ECC(Error correction code) 엔진(330), 호스트 인터페이스(340), 버퍼 메모리(370), 비휘발성 메모리 인터페이스(350) 및 버스(315)를 포함하여 구성될 수 있다. 프로세서(310)는 로딩 컨트롤러(370a)를 포함할 수 있다.
실시예에 있어서, 로딩 컨트롤러(370a)는 프로세서(310) 내부에 포함되지 않고, 별도의 구성 요소로서 스토리지 컨트롤러(300a)에 포함될 수 있다.
스토리지 컨트롤러(300a)의 구성과 동작은 도 4의 스토리지 컨트롤러(300)의 구성 및 동작과 실질적으로 유사하므로 중복되는 설명은 생략한다.
버퍼 메모리(370)는 스토리지 장치(300a)에 포함되는 메인 스토리지(400)의 매핑 테이블들의 전체 어드레스 영역을 커버할 수 없는 사이즈를 가진다고 가정한다.
지역성 모니터(320)는 호스트 장치(320)로부터 수신되는 호스트 어드레스(HADDR), 즉 논리 어드레스에 기초하여 물리 어드레스의 지역성(locality)을 모니터링하고, 물리 어드레스가 지역성을 가지는 경우 이를 나타내는 지역성 정보(LIN)를 로딩 컨트롤러(360a)에 제공할 수 있다.
로딩 컨트롤러(360a)는 버퍼 메모리(370)의 사이즈를 나타내는 사이즈 정보(BMSN) 및 지역성 정보(LIN)에 기초하여 상기 디렉토리들 및 상기 매핑 테이블들의 버퍼 메모리(370)로의 로딩을 제어할 수 있다. 로딩 컨트롤러(360a)는 상기 로딩 제어에 관련된 로딩 모드 신호를 생성하고, 로딩 모드 신호를 비휘발성 인터페이스(350)를 통하여 비휘발성 스토리지들(400a~400k)에 제공할 수 있다.
로딩 컨트롤러(360a)는 사이즈 정보(BMSN) 및 제1 기준값을 비교하고, 버퍼 메모리(133)의 사이즈가 제1 기준값보다 작은 경우에, 디렉토리들(371)의 일부가 버퍼 메모리(370)에 우선적으로 로딩되도록 로딩 모드 신호(LMS1)를 생성할 수 있다.
로딩 컨트롤러(360a)는 사이즈 정보(BMSN) 및 제1 기준값을 비교하고, 버퍼 메모리(133)의 사이즈가 제1 기준값보다 크거나 같은 경우에, 디렉토리들(371)의 적어도 하나 및 매핑 테이블들(373)의 일부가 버퍼 메모리(370)에 로딩되도록 로딩 모드 신호(LMS1)를 생성할 수 있다.
따라서, 본 발명의 실시예들에 따르면, 버퍼 메모리(370)의 일부 또는 전체 영역의 사이즈가 스토리지 장치(300a)에 포함되는 메인 스토리지(400)의 매핑 테이블들의 전체 어드레스 영역을 커버할 수 없는 경우에, 스토리지 컨트롤러(300a)는 버퍼 메모리(370)의 크기 및 데이터 액세스 패턴과 관련된 지역성 정보(LIN) 중 적어도 하나에 기초하여 매핑 테이블들의 적어도 일부 및 디렉토리들의 일부를 동적으로 버퍼 메모리(370)에 로딩한다. 스토리지 컨트롤러(300a)는 버퍼 메모리(370)를 참조하여 논리 어드레스에 대응되는 물리 어드레스가 지정하는 메모리 영역에 메모리 동작을 수행할 수 있다. 따라서, 매핑 테이블들에 대한 액세스 타임을 감소시킬 수 있다.
도 22a는 도 1의 스토리지 장치에서 호스트 메모리 버퍼의 크기에 따른 매핑 테이블 액세스 시간을 나타낸다
도 22a에서 N은 32임을 가정한다.
도 22a에서 참조번호(711)는 호스트 메모리 버퍼(HMB)에 디렉토리들 중 일부를 로딩할 때의 액세스 시간을 나타내고, 참조 번호(712)는 호스트 메모리 버퍼의 크기 및 지역성을 반영하여 디렉토리 및 매핑 테이블들을 1: N의 비율로 호스트 메모리 버퍼(HMB)에 로딩할 때의 액세스 시간을 나타내고, 참조 번호(713)는 매핑 테이블들의 일부를 호스트 메모리 버퍼(HMB)에 로딩할 때의 액세스 시간을 나타낸다.
도 22a를 참조하면, 호스트 메모리 버퍼(HMB)의 사이즈가 제1 기준 사이즈(SERF11)보다 작은 경우에는, 참조번호(711)가 나타내는 바와 같이, 호스트 메모리 버퍼(HMB)에 디렉토리들 중 일부를 로딩하고 매핑 테이블들을 액세스하는 경우에 액세스 시간이 짧다는 것을 알 수 있다. 호스트 메모리 버퍼(HMB)의 사이즈가 제1 기준 사이즈(SERF11)보다 크거나 같은 경우에는 참조번호(712)가 나타내는 바와 같이, 디렉토리 및 매핑 테이블들을 1: N의 비율로 호스트 메모리 버퍼(HMB)에 로딩하고, 매핑 테이블들을 액세스하는 경우에 액세스 시간이 짧다는 것을 알 수 있다.
또한 호스트 메모리 버퍼(HMB)의 사이즈가 제2 기준 사이즈(SERF12)보다 크거나 같은 경우에는 참조번호(713)가 나타내는 바와 같이, 매핑 테이블들의 일부를 호스트 메모리 버퍼(HMB)에 로딩하고, 매핑 테이블들을 액세스하는 경우에 액세스 시간이 두번째로 짧다는 것을 알 수 있다.
도 22b는 도 20의 스토리지 장치 및 도 21의 스토리지 컨트롤러에서 버퍼 메모리의 크기에 따른 매핑 테이블 액세스 시간을 나타낸다.
도 22b에서 N은 32임을 가정한다.
도 22b에서 참조번호(721)는 버퍼 메모리(370)에 디렉토리들 중 일부를 로딩할 때의 액세스 시간을 나타내고, 참조 번호(7222)는 버퍼 메모리(370)의 크기 및 지역성을 반영하여 디렉토리 및 매핑 테이블들을 1: N의 비율로 버퍼 메모리(370)에 로딩할 때의 액세스 시간을 나타내고, 참조 번호(723)는 매핑 테이블들의 일부를 버퍼 메모리(370)에 로딩할 때의 액세스 시간을 나타낸다.
도 22b를 참조하면, 버퍼 메모리(370)의 사이즈가 제1 기준 사이즈(SREF21)보다 작은 경우에는, 참조번호(721)가 나타내는 바와 같이, 버퍼 메모리(370)에 디렉토리들 중 일부를 로딩하고 매핑 테이블들을 액세스하는 경우에 액세스 시간이 짧다는 것을 알 수 있다.
버퍼 메모리(370)의 사이즈가 제1 기준 사이즈(SERF21)보다 크거나 같은 경우에는 참조번호(722)가 나타내는 바와 같이, 디렉토리 및 매핑 테이블들을 1: N의 비율로 버퍼 메모리(730)에 로딩하고, 매핑 테이블들을 액세스하는 경우의 액세스 시간과 디렉토리들 중 일부를 로딩하고 매핑 테이블들을 액세스하는 경우의 액세스 시간이 실질적으로 동일하다는 것을 알 수 있다.
도 23은 본 발명의 실시예들에 따른 스토리지 장치를 포함하는 시스템을 나타내는 블록도이다.
도 23을 참조하면, 시스템(1000)은 호스트 장치(2000) 및 스토리지 장치(3000)를 포함한다. 예를 들어, 스토리지 장치(3000)는 에스에스디(SSD, solid state drive), 임베디드 멀티미디어 카드(eMMC, embedded multimedia card) 등일 수 있다.
호스트 장치(2000)는 스토리지 장치(3000)의 데이터 처리 동작, 예를 들어, 데이터 독출 동작 또는 데이터 기입 동작 등을 제어할 수 있다.
호스트 장치(2000)는 버스(20)를 통하여 연결된 프로세서(CPU)(2100), 호스트 메모리(HMEM)(2200) 및 호스트 컨트롤러 인터페이스(HCI)(2300)를 포함할 수 있다. 호스트 메모리(2200)는 전술한 바와 같이 디렉토리들의 일부 및 매핑 테이블들의 일부를 저장하는 호스트 메모리 버퍼(HMB)를 할당할 수 있다. 프로세서(2100)에 의해 운영 체제(OS) 및/또는 호스트 펌웨어(FW)(2110)가 구동될 수 있다. 프로세서(2100)는 운영 체제/호스트 펌웨어(2110)를 구동하여 여러가지 동작들을 수행할 수 있다.
호스트 컨트롤러 인터페이스(2300)는 스토리지 장치(3000)와 인터페이스하기 위한 구성요소이다. 호스트 컨트롤러 인터페이스(2300)는 스토리지 장치(3000)로 커맨드를 발급하고, 커맨드에 대한 응답을 스토리지 장치(3000)로부터 수신하고, 스토리지 장치(3000)에 저장될 기입 데이터를 전송하고, 스토리지 장치(3000)로부터 독출한 독출 데이터를 수신한다.
스토리지 장치(3000)는 복수의 비휘발성 메모리 장치들(NVM)(3100) 및 스토리지 컨트롤러(3200)를 포함한다.
비휘발성 메모리 장치들(3100)은 옵션적으로 외부 고전압(VPP)을 제공받도록 구현될 수 있다. 스토리지 컨트롤러(3200)는 복수의 채널들(CH1~CHi)을 통하여 비휘발성 메모리 장치들(1100)에 연결된다. 스토리지 컨트롤러(3200)는 버스(30)를 통하여 연결된 적어도 하나의 프로세서(3210), 로딩 컨트롤러(3220), ECC 엔진(3240), 지역성 모니터(3210), 호스트 인터페이스(3230), 및 비휘발성 메모리 인터페이스(3250)를 포함한다.
프로세서(3210)는 스토리지 컨트롤러(3200)의 전반적인 동작을 제어하도록 구성된다. 예를 들면, 프로세서(3210)는 플래시 변환 계층(FTL, Flash Translation Layer) 등을 포함하는 펌웨어(3212)를 운용하도록 구성된다. 플래시 변환 계층(FTL)은 다양한 기능들을 수행할 수 있다. 예를 들면, 플래시 변환 계층(FTL)은 어드레스 맵핑 동작, 독출 교정 동작, 에러 정정 동작, 등을 수행하는 다양한 계층들을 포함할 수 있다.
지역성 모니터(3260)는 전술한 바와 같이, 데이터의 지역성을 모니터링하고, 지역성이 모니터링되는 경우, 이를 나타내는 지역성 정보를 로딩 컨트롤러(3240)에 제공할 수 있다.
로딩 컨트롤러(3240)는 전술한 바와 같이, 호스트 메모리 버퍼(HMB)의 크기 및 지역성 정보 중 적어도 하나에 기초하여 매핑 테이블들의 적어도 일부 및 디렉토리들의 일부를 동적으로 호스트 메모리 버퍼(HMB)에 로딩할 수 있다.
호스트 인터페이스(3230)는 호스트 장치(2000)와의 인터페이스 기능을 제공할 수 있다. 비휘발성 메모리 인터페이스(3250)는 비휘발성 메모리 장치(3100)와의 인터페이스 기능을 제공할 수 있다. 호스트 장치(2000)와 스토리지 장치(3000)는 버스(15)를 통하여 상호 연결될 수 있다.
도 24는 본 발명의 실시예들에 따른 모바일 장치를 나타내는 블록도이다.
도 24를 참조하면, 모바일 장치(4000)는 어플리케이션 프로세서(4100), 통신 모듈(4200), 디스플레이/터치 모듈(4300), 데이터 저장 장치(4400), 및 모바일 램(4500)을 포함한다.
어플리케이션 프로세서(4100)는 모바일 장치(4000)의 전반적인 동작을 제어한다. 어플리케이션 프로세서(4100)는 인터넷 브라우저, 게임, 동영상 등을 제공하는 어플리케이션들을 실행할 수 있다. 통신 모듈(4200)은 외부와의 유선 통신 및/또는 무선 통신을 제어하도록 구현될 수 있다. 디스플레이/터치 모듈(4300)은 어플리케이션 프로세서(4100)에서 처리된 데이터를 디스플레이 하거나, 터치 패널로부터 데이터를 입력 받도록 구현될 수 있다. 데이터 저장 장치(4400)는 사용자의 데이터를 저장하도록 구현될 수 있다.
데이터 저장 장치(4400)는 임베디드 멀티미디어 카드(eMMC, embedded multimedia card), 솔리드 스테이트 드라이브(SSD, solid state drive), 유니버셜 플래시 스토리지(UFS, universal flash storage) 장치일 수 있다. 데이터 저장 장치(4400)는 로딩 컨트롤러(4410)를 포함하여 모바일 램(4500)의 호스트 메모리 버퍼(4510)에 매핑 테이블들의 적어도 일부 및 디렉토리들의 일부를 동적으로 로딩할 수 있다.
모바일 램(4500)은 모바일 장치(4000)의 처리 동작 시 필요한 데이터를 임시로 저장하도록 구현될 수 있다. 예를 들어, 모바일 램(4500)은 DDR SDRAM, LPDDR SDRAM, GDDR SDRAM, RDRAM 등과 같은 동적 랜덤 액세스 메모리일 수 있다.
이상 설명한 바와 같이, 본 발명의 실시예들에 따른 스토리지 장치 및 스토리지 장치의 동작 방법은 호스트 메모리 버퍼의 크기 및 데이터 액세스 패턴과 관련된 지역성 정보 중 적어도 하나에 기초하여 매핑 테이블들의 적어도 일부 및 디렉토리들의 일부를 동적으로 호스트 메모리 버퍼에 로딩하여 매핑 테이블들에 대한 액세스 타임을 감소시킬 수 있다.
본 발명은 스토리지 장치를 구비하는 임의의 전자 장치에 유용하게 이용될 수 있다. 예를 들어, 본 발명은 스토리지 장치를 구비하는 휴대폰(Mobile Phone), 스마트 폰(Smart Phone), 개인 정보 단말기(Personal Digital Assistant; PDA), 휴대형 멀티미디어 플레이어(Portable Multimedia Player; PMP), 디지털 카메라(Digital Camera), 음악 재생기(Music Player), 휴대용 게임 콘솔(Portable Game Console), 네비게이션(Navigation) 시스템 등에 적용될 수 있다.
상술한 바와 같이, 본 발명의 바람직한 실시예를 참조하여 설명하였지만 해당 기술 분야에서 통상의 지식을 가진 자라면 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.

Claims (20)

  1. 데이터를 저장하며, 복수의 비휘발성 메모리 장치들을 구비하는 메인 스토리지; 및
    상기 메인 스토리를 제어하는 스토리지 컨트롤러를 포함하고,
    상기 스토리지 컨트롤러는 외부의 호스트 장치에 포함되는 호스트 메모리 버퍼의 사이즈 및 상기 호스트 장치의 데이터 액세스 패턴과 관련된 지역성 정보 중 적어도 하나에 기초하여 상기 비휘발성 메모리 장치들 각각에 저장되며 상기 비휘발성 메모리 장치들 각각의 물리 어드레스와 논리 어드레스 사이의 매핑 관계를 나타내는 매핑 테이블들의 적어도 일부 및 상기 매핑 테이블들의 어드레스 정보를 저장하는 디렉토리들의 일부 중 적어도 하나를 상기 호스트 메모리 버퍼에 로딩하는 스토리지 장치.
  2. 제1항에 있어서,
    상기 매핑 테이블들 각각은 액세스 중요도를 나타내는 제1 우선순위 정보를 저장하고,
    상기 디렉토리들 각각은 액세스 중요도를 나타내는 제2 우선순위 정보를 저장하는 스토리지 장치.
  3. 제2항에 있어서,
    상기 호스트 메모리 버퍼의 사이즈가 기준값보다 작은 경우에, 상기 스토리지 컨트롤러는 상기 제2 우선선위 정보에 기초하여 상기 디렉토리들의 일부를 상기 호스트 메모리 버퍼에 우선적으로 로딩하는 스토리지 장치.
  4. 제2항에 있어서,
    상기 호스트 메모리 버퍼의 사이즈가 기준값보다 크거나 같은 경우에, 상기 스토리지 컨트롤러는 상기 제1 우선순위 정보와 상기 제2 우선순위 정보 및 상기 지역성 정보에 기초하여 상기 디렉토리들 중 적어도 하나와 상기 매핑 테이블들의 적어도 일부를 상기 호스트 메모리 버퍼에 로딩하는 스토리지 장치.
  5. 제4항에 있어서,
    상기 디렉토리들 중 적어도 하나와 상기 매핑 테이블들의 적어도 일부는 서로 다른 비휘발성 메모리 장치들에 관련되는 스토리지 장치.
  6. 제4항에 있어서,
    상기 디렉토리들 중 적어도 하나와 상기 매핑 테이블들의 적어도 일부는 1: N(N은 3 이상의 자연수)의 비율을 가지는 스토리지 장치.
  7. 제6항에 있어서,
    상기 스토리지 컨트롤러는 상기 호스트 메모리 버퍼의 사이즈에 기초하여 상기 N 값을 결정하는 스토리지 장치.
  8. 제6항에 있어서,
    상기 스토리지 컨트롤러는 상기 지역성 정보에 기초하여 상기 N 값을 결정하는 스토리지 장치.
  9. 제1항에 있어서,
    상기 스토리지 컨트롤러는 상기 호스트 메모리 버퍼의 사이즈 및 상기 지역성 정보에 기초하여 상기 디렉토리들 및 상기 매핑 테이블들의 로딩 비율을 결정하고 상기 결정된 로딩 비율에 따라 상기 디렉토리들의 적어도 하나 및 상기 매핑 테이블들의 일부를 상기 호스트 메모리 버퍼에 로딩하는 스토리지 장치.
  10. 제9항에 있어서,
    상기 매핑 테이블들 각각은 액세스 중요도를 나타내는 제1 우선순위 정보를 저장하고,
    상기 디렉토리들 각각은 액세스 중요도를 나타내는 제2 우선순위 정보를 저장하고,
    상기 스토리지 컨트롤러는 상기 제1 우선순위 정보 및 상기 제2 우선순위 정보에 기초하여 상기 호스트 메모리 버퍼에 로딩되는 상기 적어도 하나의 디렉토리 및 상기 일부의 매핑 테이블들을 선택하는 스토리지 장치.
  11. 제1항에 있어서, 상기 스토리지 컨트롤러는
    상기 호스트로부터의 상기 메인 스토리지에 대한 액세스를 나타내는 호스트 액세스 어드레스를 모니터링하여 상기 지역성 정보를 생성하는 지역성 모니터; 및
    상기 호스트 메모리 버퍼의 사이즈를 나타내는 사이즈 정보 및 상기 지역성 정보에 기초하여 상기 디렉토리들 및 상기 매핑 테이블들의 상기 호스트 메모리 버퍼로의 로딩을 제어하는 로딩 컨트롤러를 포함하는 스토리지 장치.
  12. 제11항에 있어서, 상기 로딩 컨트롤러는
    상기 사이즈 정보와 제1 기준값을 비교하여 제1 비교 신호를 제공하는 제1 비교기;
    상기 호스트 장치로부터 수신된 상기 논리 어드레스가 상기 호스트 메모리 버퍼를 참조한 검색에서 발견되지 않는 미스 횟수를 카운팅하여 카운팅 값을 제공하는 카운터;
    상기 카운팅 값과 제2 기준값을 비교하여 제2 비교 신호를 제공하는 제2 비교기;
    상기 제1 비교 신호, 상기 제2 비교 신호 및 상기 지역성 정보에 기초하여 복수의 로딩 모드들 중 하나를 지정하는 로딩 모드 신호를 생성하는 로딩 모드 신호 생성기; 및
    상기 제1 기준값 및 상기 제2 기준값을 저장하는 레지스터를 포함하는 스토리지 장치.
  13. 제12항에 있어서,
    상기 제1 비교 신호가 상기 사이즈 정보가 상기 제1 기준값보다 작음을 나타내는 경우에, 상기 로딩 모드 신호 생성기는 상기 디렉토리들의 일부의 우선적 로딩을 지시하는 상기 로딩 모드 신호를 생성하는 스토리지 장치.
  14. 제12항에 있어서,
    상기 제1 비교 신호가 상기 사이즈 정보가 상기 제1 기준값보다 크거나 같음을 나타내는 경우에, 상기 로딩 모드 신호 생성기는 상기 디렉토리들의 적어도 하나와 상기 매핑 테이블들의 일부의 병합 로딩을 지시하는 상기 로딩 모드 신호를 생성하는 스토리지 장치.
  15. 제1항에 있어서,
    상기 스토리지 컨트롤러는 상기 스토리지 장치의 부팅 동작 중에, 상기 디렉토리들의 일부 및 상기 매핑 테이블들의 일부 및 적어도 하나를 상기 호스트 메모리 버퍼에 로딩하는 스토리지 장치.
  16. 제15항에 있어서,
    상기 스토리지 컨트롤러는 상기 부팅 동작이 완료된 후, 상기 호스트 장치로부터의 커맨드 및 어드레스를 수신하고, 상기 호스트 메모리 버퍼를 참조하여 상기 어드레스가 지정하는 물리 어드레스를 검색한 후, 상기 커맨드가 지시하는 메모리 동작을 상기 물리 어드레스가 지정하는 메모리 영역에 수행하는 스토리지 장치.
  17. 제1항에 있어서, 상기 복수의 비휘발성 메모리 장치들 각각은
    복수의 메모리 블록들로 구분되며, 워드라인들 및 비트라인들에 연결되는 복수의 비휘발성 메모리 셀들을 포함하는 메모리 셀 어레이를 포함하고,
    상기 메모리 셀 어레이는 상응하는 디렉토리 및 상응하는 매핑 테이블들을 저장하는 메타 데이터 영역을 포함하고,
    상기 복수의 메모리 블록들 중 적어도 하나는 기판 위에 순차적으로 적층되는 복수의 메모리 셀들을 구비하는 낸드 스트링들을 포함하는 스토리지 장치.
  18. 데이터를 저장하며 복수의 비휘발성 메모리 장치들을 구비하는 메인 스토리지 및 상기 메인 스토리지를 제어하는 스토리지 컨트롤러를 구비하는 스토리지 장치; 및
    호스트 메모리를 포함하고, 상기 스토리지 장치를 제어하는 호스트 장치를 포함하고,
    상기 호스트 장치는 상기 스토리지 장치의 리퀘스트에 응답하여 상기 호스트 메모리의 일부를 상기 스토리지 컨트롤러가 액세스할 수 있는 호스트 메모리 버퍼로 할당하고,
    상기 스토리지 컨트롤러는 상기 호스트 메모리 버퍼의 사이즈 및 상기 호스트 장치의 데이터 액세스 패턴과 관련된 지역성 정보 중 적어도 하나에 기초하여 상기 비휘발성 메모리 장치들 각각에 저장되며 상기 비휘발성 메모리 장치들 각각의 물리 어드레스와 논리 어드레스 사이의 매핑 관계를 나타내는 매핑 테이블들의 적어도 일부 및 상기 매핑 테이블들의 어드레스 정보를 저장하는 디렉토리들의 일부 중 적어도 하나를 상기 호스트 메모리 버퍼에 로딩하는 스토리지 시스템.
  19. 제18항에 있어서, 상기 호스트 장치는
    상기 스토리지 장치와의 인터페이스를 수행하는 스토리지 인터페이스;
    상기 호스트 메모리를 제어하는 메모리 컨트롤러; 및
    상기 스토리지 인터페이스와 상기 메모리 컨트롤러를 제어하는 프로세서를 더 포함하고,
    상기 매핑 테이블들 각각은 액세스 중요도를 나타내는 제1 우선순위 정보를 저장하고,
    상기 디렉토리들 각각은 액세스 중요도를 나타내는 제2 우선순위 정보를 저장하고,
    상기 스토리지 컨트롤러는 상기 제1 우선순위 정보 및 상기 제2 우선순위 정보에 기초하여 상기 호스트 메모리 버퍼에 로딩되는 상기 일부의 디렉토리 및 상기 일부의 매핑 테이블들을 선택하는 스토리지 시스템.
  20. 데이터를 저장하며 복수의 비휘발성 메모리 장치들을 구비하는 메인 스토리지 및 상기 메인 스토리지를 제어하는 스토리지 컨트롤러를 구비하는 스토리지 장치의 동작 방법으로서,
    상기 스토리지 장치를 제어하는 외부의 호스트 장치에 포함되는 호스트 메모리 버퍼의 사이즈 정보를 상기 호스트 장치로부터 수신하는 단계;
    상기 사이즈 정보 및 상기 호스트 장치의 데이터 액세스 패턴과 관련된 지역성 정보 중 적어도 하나에 기초하여 상기 비휘발성 메모리 장치들 각각에 저장되며 상기 비휘발성 메모리 장치들 각각의 물리 어드레스와 논리 어드레스 사이의 매핑 관계를 나타내는 매핑 테이블들의 적어도 일부 및 상기 매핑 테이블들의 어드레스 정보를 저장하는 디렉토리들의 일부 중 적어도 하나를 상기 호스트 메모리 버퍼에 로딩하는 단계; 및
    상기 호스트 장치로부터의 커맨드 및 어드레스에 기초하여 상기 호스트 메모리 버퍼를 참조하여 상기 커맨드가 지시하는 메모리 동작을 상기 어드레스가 지정하는 메모리 영역에 수행하는 단계를 포함하는 스토리지 장치의 동작 방법.
KR1020180132843A 2018-11-01 2018-11-01 스토리지 장치, 스토리지 시스템 및 스토리지 장치의 동작 방법 KR20200050169A (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020180132843A KR20200050169A (ko) 2018-11-01 2018-11-01 스토리지 장치, 스토리지 시스템 및 스토리지 장치의 동작 방법
US16/506,793 US11036425B2 (en) 2018-11-01 2019-07-09 Storage devices, data storage systems and methods of operating storage devices
CN201910773518.1A CN111143233A (zh) 2018-11-01 2019-08-21 存储设备及操作存储设备的方法
EP19193480.1A EP3647958B1 (en) 2018-11-01 2019-08-23 Storage devices methods of operating storage devices and storage systems
US17/316,422 US11513728B2 (en) 2018-11-01 2021-05-10 Storage devices, data storage systems and methods of operating storage devices

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180132843A KR20200050169A (ko) 2018-11-01 2018-11-01 스토리지 장치, 스토리지 시스템 및 스토리지 장치의 동작 방법

Publications (1)

Publication Number Publication Date
KR20200050169A true KR20200050169A (ko) 2020-05-11

Family

ID=67742329

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180132843A KR20200050169A (ko) 2018-11-01 2018-11-01 스토리지 장치, 스토리지 시스템 및 스토리지 장치의 동작 방법

Country Status (4)

Country Link
US (2) US11036425B2 (ko)
EP (1) EP3647958B1 (ko)
KR (1) KR20200050169A (ko)
CN (1) CN111143233A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102497130B1 (ko) * 2021-11-11 2023-02-07 삼성전자주식회사 스토리지 장치 및 그것의 동작 방법

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210143387A (ko) * 2020-05-20 2021-11-29 에스케이하이닉스 주식회사 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법
US11734018B2 (en) 2020-07-17 2023-08-22 Western Digital Technologies, Inc. Parallel boot execution of memory devices
KR20230037240A (ko) * 2021-09-09 2023-03-16 에스케이하이닉스 주식회사 호스트 장치, 메모리 컨트롤러 및 이를 포함하는 컴퓨팅 시스템
US11704236B2 (en) * 2021-11-17 2023-07-18 Western Digital Technologies, Inc. Method and storage system with a layered caching policy
US20240086071A1 (en) * 2022-09-12 2024-03-14 Western Digital Technologies, Inc. Ssd use of host memory buffer for improved performance

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6377500B1 (en) * 1999-11-11 2002-04-23 Kabushiki Kaisha Toshiba Memory system with a non-volatile memory, having address translating function
US6581074B1 (en) * 2000-10-06 2003-06-17 Microsoft Corporation Directory synchronization
US7444389B2 (en) * 2003-12-09 2008-10-28 Emc Corporation Methods and apparatus for generating a content address to indicate data units written to a storage system proximate in time
US7509474B2 (en) * 2005-06-08 2009-03-24 Micron Technology, Inc. Robust index storage for non-volatile memory
US7734603B1 (en) * 2006-01-26 2010-06-08 Netapp, Inc. Content addressable storage array element
KR101736384B1 (ko) * 2010-09-29 2017-05-16 삼성전자주식회사 비휘발성 메모리 시스템
US9244833B2 (en) * 2012-05-30 2016-01-26 Silicon Motion, Inc. Data-storage device and flash memory control method
US20140181402A1 (en) * 2012-12-21 2014-06-26 Advanced Micro Devices, Inc. Selective cache memory write-back and replacement policies
KR102254392B1 (ko) 2014-05-12 2021-05-25 삼성전자주식회사 메모리 컨트롤러의 동작 방법 및 불휘발성 메모리 장치 및 메모리 컨트롤러를 포함하는 불휘발성 메모리 시스템
US9563382B2 (en) 2014-06-05 2017-02-07 Sandisk Technologies Llc Methods, systems, and computer readable media for providing flexible host memory buffer
US9507722B2 (en) * 2014-06-05 2016-11-29 Sandisk Technologies Llc Methods, systems, and computer readable media for solid state drive caching across a host bus
KR20160070920A (ko) * 2014-12-10 2016-06-21 에스케이하이닉스 주식회사 맵 테이블을 갖는 컨트롤러 및 반도체 메모리 장치를 포함하는 메모리 시스템 및 그것의 동작 방법
US10007433B2 (en) 2015-01-21 2018-06-26 Sandisk Technologies Llc Systems and methods for performing adaptive host memory buffer caching of transition layer tables
CN106033319A (zh) * 2015-03-11 2016-10-19 广明光电股份有限公司 固态硬盘动态建立转换层的方法
US20170235681A1 (en) * 2016-02-12 2017-08-17 Kabushiki Kaisha Toshiba Memory system and control method of the same
US10642496B2 (en) 2016-04-01 2020-05-05 Sandisk Technologies Inc. Out of order read transfer with host memory buffer
US10102135B2 (en) 2016-04-06 2018-10-16 Dell Products, Lp Dynamically-adjusted host memory buffer
US20170300422A1 (en) * 2016-04-14 2017-10-19 Micron Technology, Inc. Memory device with direct read access
US20170351452A1 (en) 2016-06-01 2017-12-07 Intel Corporation Dynamic host memory buffer allocation
KR102667430B1 (ko) 2016-08-04 2024-05-23 삼성전자주식회사 호스트 메모리를 이용하는 데이터 저장 장치 및 그것의 동작 방법
US10055164B2 (en) 2016-09-07 2018-08-21 Sandisk Technologies Llc Data storage at an access device
KR102683696B1 (ko) 2016-11-15 2024-07-09 삼성전자주식회사 호스트 메모리 버퍼(Host Memory Buffer)를 관리하기 위한 NVMe(Non-Volatile Memory Express) 컨트롤러를 포함하는 솔리드 스테이트 저장 장치(solid state storage device), 이를 포함하는 시스템 및 호스트의 호스트 메모리 버퍼를 관리하는 방법
JP2019020788A (ja) * 2017-07-11 2019-02-07 東芝メモリ株式会社 メモリシステムおよび制御方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102497130B1 (ko) * 2021-11-11 2023-02-07 삼성전자주식회사 스토리지 장치 및 그것의 동작 방법
US12072801B2 (en) 2021-11-11 2024-08-27 Samsung Electronics Co., Ltd. Storage device and method for restoring meta data thereof

Also Published As

Publication number Publication date
EP3647958B1 (en) 2022-06-08
EP3647958A1 (en) 2020-05-06
US20210263675A1 (en) 2021-08-26
US11036425B2 (en) 2021-06-15
US11513728B2 (en) 2022-11-29
US20200142630A1 (en) 2020-05-07
CN111143233A (zh) 2020-05-12

Similar Documents

Publication Publication Date Title
EP3647958B1 (en) Storage devices methods of operating storage devices and storage systems
KR20190054974A (ko) 메모리 시스템 및 그것의 동작 방법
KR102263046B1 (ko) 메모리 장치, 메모리 시스템, 상기 메모리 장치의 동작 방법 및 상기 메모리 시스템의 동작 방법
US20160196216A1 (en) Mapping table managing method and associated storage system
KR20210068894A (ko) 스토리지 장치 및 상기 스토리지 장치의 동작 방법
KR20190106228A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
KR102287760B1 (ko) 메모리 시스템 및 상기 메모리 시스템의 동작 방법
CN110888597B (zh) 存储设备、存储系统以及操作存储设备的方法
US11875055B2 (en) Storage device that receives inode address information to reduce external communication overhead
CN114267392A (zh) 存储器控制器、存储装置及其操作方法
TWI716381B (zh) 資料處理系統
CN113253912B (zh) 存储器系统及其操作方法
KR20200044461A (ko) 메모리 시스템 및 그것의 동작방법
KR102435863B1 (ko) 스토리지 장치 및 그것을 포함하는 서버 시스템의 매칭 키 검색 방법
CN114115708A (zh) 存储装置及其操作方法
KR20200079852A (ko) 메모리 시스템 및 그것의 동작방법
KR20200033459A (ko) 메모리 시스템 및 그것의 동작방법
KR20210128780A (ko) 메모리 컨트롤러 및 이를 포함하는 저장 장치
KR102271502B1 (ko) 메모리 장치 및 그 제어 방법
KR20200113990A (ko) 메모리 시스템 내 메모리 장치의 동작 상태를 확인하는 방법 및 장치
CN113806240A (zh) 存储装置及其操作方法
KR20180032352A (ko) 가변 소거 유닛 크기를 가지는 스토리지 디바이스 및 이를 포함하는 레이드 스토리지 시스템
CN113126895B (zh) 存储装置及其操作方法
US20210334173A1 (en) Storage device and method of operating the same
KR102693841B1 (ko) 저장 장치 및 그 동작 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal