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

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

Info

Publication number
KR20210068699A
KR20210068699A KR1020190158001A KR20190158001A KR20210068699A KR 20210068699 A KR20210068699 A KR 20210068699A KR 1020190158001 A KR1020190158001 A KR 1020190158001A KR 20190158001 A KR20190158001 A KR 20190158001A KR 20210068699 A KR20210068699 A KR 20210068699A
Authority
KR
South Korea
Prior art keywords
storage
data
host device
metadata
storage controller
Prior art date
Application number
KR1020190158001A
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 KR1020190158001A priority Critical patent/KR20210068699A/ko
Priority to US16/896,934 priority patent/US11461041B2/en
Priority to DE102020115969.2A priority patent/DE102020115969A1/de
Priority to CN202011362480.8A priority patent/CN112988627A/zh
Publication of KR20210068699A publication Critical patent/KR20210068699A/ko
Priority to US17/897,534 priority patent/US11875055B2/en

Links

Images

Classifications

    • 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
    • G06F13/1673Details of memory controller using buffers
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension
    • G06F12/063Address space extension for I/O modules, e.g. memory mapped I/O
    • 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/0877Cache access modes
    • G06F12/0882Page mode
    • 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
    • G06F13/1684Details of memory controller using multiple buses
    • 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/061Improving I/O performance
    • 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/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • 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/0643Management of files
    • 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
    • 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
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/18Bit line organisation; Bit line lay-out
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/14Word line organisation; Word line lay-out
    • 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/65Details of virtual memory and virtual address translation
    • G06F2212/652Page size control
    • 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

Abstract

스토리지 장치는 비휘발성 스토리지, 스토리지 컨트롤러 및 버퍼 메모리를 포함한다. 상기 비휘발성 스토리지는 제1 영역 및 제2 영역을 구비하고 상기 제2 영역에 사용자 데이터를 저장하고, 상기 제1 영역에 상기 사용자 데이터에 관련된 메타데이터 세트를 데이터 구조체로 저장한다. 상기 스토리지 컨트롤러는 상기 비휘발성 스토리지를 제어한다. 상기 버퍼 메모리는 상기 스토리지 컨트롤러에 연결되고, 외부의 호스트 장치의 파일 시스템이 생성한 상기 데이터 구조체를 상기 비휘발성 스토리지로부터 로딩받는다. 상기 호스트 장치가 상기 사용자 데이터 중 타겟 데이터를 액세스하는 경우, 상기 스토리지 컨트롤러는 상기 호스트 장치로부터 상기 타겟 데이터에 관련된 메타 데이터를 저장하는 아이노드의 어드레스 정보를 수신하고, 상기 아이노드의 어드레스 정보에 기초하여 상기 버퍼 메모리에 로딩된 상기 메타데이터 세트에서 관련 메타 데이터를 참조하여 상기 타겟 데이터를 액세스한다.

Description

스토리지 장치, 스토리지 시스템 및 스토리지 장치의 동작 방법{STORAGE DEVICE, STORAGE SYSTEM AND METHOD OF OPERATING STORAGE DEVICE}
본 발명은 데이터 처리에 관한 것으로, 보다 상세하게는 스토리지 장치, 이를 포함하는 스토리지 시스템 및 스토리지 장치의 동작 방법에 관한 것이다.
컴퓨팅 장치는 데스크톱 컴퓨터, 노트북 컴퓨터, 스마트폰, 스마트태블릿 등을 포함한다. 전통적으로, 컴퓨팅 장치의 스토리지 장치로 하드 디스크 드라이브가 사용되어 왔다. 그러나, 근래에 스마트폰, 스마트태블릿 등과 같은 모바일 장치는 휴대성을 지원하기 위해 낸드 플래시 메모리, PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등과 같은 비휘발성 메모리 장치를 스토리지 장치로 사용한다. 또한, 노트북 컴퓨터 및 데스크톱 컴퓨터에서도 비휘발성 메모리 장치를 스토리지 장치로 사용하는 빈도가 증가하고 있다.
비휘발성 메모리 장치는 하드 디스크 드라이브와 비교하여 상대적으로 짧은 역사를 갖는다. 따라서, 스토리지 장치를 관리하는 기존의 파일 시스템들은 하드 디스크 드라이브의 동작 특성에 적합하게 설계된 것이 대부분이다. 비휘발성 메모리 장치와 하드 디스크 드라이브의 동작 특성의 차이로 인해, 이러한 기존의 파일 시스템들은 비휘발성 메모리 장치의 동작 성능을 충분히 이용하지 못하고 있다. 따라서, 비휘발성 메모리 장치의 동작 성능을 충분히 활용할 수 있는 새로운 파일 시스템들, 즉 스토리지 장치를 액세스하는 방법에 대한 연구가 절실히 요구되고 있다.
본 발명의 일 목적은 확정적인 호스트 장치와의 입출력 오버헤드를 감소시킬 수 있는 스토리지 장치를 제공하는 것이다.
본 발명의 일 목적은 호스트 장치와의 입출력 오버헤드를 감소시킬 수 있는 스토리지 장치를 포함하는 스토리지 시스템을 제공하는 것이다
본 발명의 일 목적은 호스트 장치와의 입출력 오버헤드를 감소시킬 수 있는 스토리지 장치의 동작 방법을 제공하는 것이다.
상기 목적을 달성하기 위한 본 발명의 실시예들에 따른 스토리지 장치는 비휘발성 스토리지, 스토리지 컨트롤러 및 버퍼 메모리를 포함한다. 상기 비휘발성 스토리지는 제1 영역 및 제2 영역을 구비하고 상기 제2 영역에 사용자 데이터를 저장하고, 상기 제1 영역에 상기 사용자 데이터에 관련된 메타데이터 세트를 데이터 구조체로 저장한다. 상기 스토리지 컨트롤러는 상기 비휘발성 스토리지를 제어한다. 상기 버퍼 메모리는 상기 스토리지 컨트롤러에 연결되고, 외부의 호스트 장치의 파일 시스템이 생성한 상기 데이터 구조체를 상기 비휘발성 스토리지로부터 로딩받는다. 상기 호스트 장치가 상기 사용자 데이터 중 타겟 데이터를 액세스하는 경우, 상기 스토리지 컨트롤러는 상기 호스트 장치로부터 상기 타겟 데이터에 관련된 메타 데이터를 저장하는 아이노드의 어드레스 정보를 수신하고, 상기 아이노드의 어드레스 정보에 기초하여 상기 버퍼 메모리에 로딩된 상기 메타데이터 세트에서 관련 메타 데이터를 참조하여 상기 타겟 데이터를 액세스한다.
상기 목적을 달성하기 위한 본 발명의 실시예들에 따른 스토리지 시스템은 스토리지 장치 및 호스트 장치를 포함한다. 상기 스토리지 장치는 제1 영역과 제2 영역을 구비하는 비휘발성 스토리지 및 상기 비휘발성 스토리지를 제어하는 스토리지 컨트롤러를 구비한다. 상기 호스트 장치는 상기 스토리지 장치를 제어하며, 사용자 데이터를 관리하는데 관계되는 메타 데이터 세트를 생성하는 파일 시스템을 포함한다. 상기 스토리지 컨트롤러는 상기 비휘발성 스토리지의 상기 제1 영역에 상기 상기 메타 데이터 세트를 데이터 구조체로 저장하고, 상기 비휘발성 스토리지의 상기 제2 영역에 상기 사용자 데이터를 저장한다. 상기 스토리지 장치는 상기 메타데이터 세트를 상기 비휘발성 스토리지로부터 로딩받는 버퍼 메모리를 더 포함한다. 상기 호스트 장치가 상기 사용자 데이터 중 타겟 데이터를 액세스하는 경우, 상기 스토리지 컨트롤러는 상기 호스트 장치로부터 상기 타겟 데이터에 관련된 메타 데이터를 저장하는 아이노드의 어드레스 정보를 수신하고, 상기 아이노드의 어드레스 정보에 기초하여 상기 버퍼 메모리에 로딩된 상기 메타데이터 세트에서 관련 메타 데이터를 참조하여 상기 타겟 데이터를 액세스한다.
상기 목적을 달성하기 위한 본 발명의 실시예들에 따른 사용자 데이터 및 상기 사용자 데이터의 관리에 관계되는 메타 데이터 세트를 저장하는 비휘발성 스토리지 및 상기 비휘발성 스토리지를 제어하는 스토리지 컨트롤러를 구비하는 스토리지 장치의 동작 방법이 제공된다. 상기 방법에 의하면 상기 스토리지 컨트롤러가 외부의 호스트 장치로부터 제공되는 상기 메타 데이터 세트와 상기 사용자 데이터를 상기 비휘발성 스토리지의 제1 영역과 제2 영역에 각각 저장하고, 상기 스토리지 컨트롤러가 상기 사용자 데이터 중 타겟 데이터와 관련된 메타 데이터를 저장하는 아이노드의 어드레스 정보를 상기 호스트 장치로부터 수신하고, 상기 스토리지 컨트롤러가 상기 아이노드의 어드레스 정보에 기초하여 상기 메타데이터 세트를 상기 비휘발성 스토리지로부터 버퍼 메모리에 로딩시키고, 상기 스토리지 컨트롤러가 상기 메타데이터 세트에서 상기 관련 메타데이터를 참조하여 상기 제2 영역에 저장된 상기 타겟 데이터를 액세스한다.
본 발명의 실시예들에 따르면, 스토리지 장치, 스토리지 시스템 및 스토리지 장치의 동작 방법에서는 사용자 데이터의 관리에 관계되는 메타 데이터 세트를 스토리지 장치의 비휘발성 스토리지에 저장하고, 스토리지 컨트롤러는 스토리지 장치에 저장된 상기 메타 데이터 세트의 논리 정보를 이용하여 비휘발성 스토리지를 액세스함으로써 스토리지 장치와 호스트 장치 사이의 입출력 오버헤드를 감소시켜 스토리지 장치의 성능을 향상시킬 수 있다.
도 1은 본 발명의 일 실시예에 따른 스토리지 시스템을 나타내는 블록도이다.
도 2는 본 발명의 실시예들에 따른 도 1의 호스트 장치를 나타내는 블록도이다.
도 3은 본 발명의 실시예들에 따른 도 2의 스토리지 장치에서 호스트 메모리를 나타낸다.
도 4는 본 발명의 실시예에 따른 도 1의 스토리지 장치에서 스토리지 컨트롤러를 나타내는 블록도이다.
도 5는 도 1의 스토리지 시스템에서 비휘발성 스토리지의 채널 및 웨이의 구성을 예시적으로 나타낸다.
도 6은 도 1의 스토리지 장치의 비휘발성 스토리지를 설명하기 위한 블록도이다.
도 7는 도 1의 스토리지 장치에 저장되는 파일의 구조를 설명하기 위한 도면이다.
도 8은 도 1의 스토리지 장치의 비휘발성 스토리지를 설명하기 위한 블록도이다.
도 9는 도 8의 노드 어드레스 테이블을 설명하기 위한 도면이다.
도 10은 도 3의 파일 시스템이 생성하는 메타 데이터 세트를 나타낸다.
도 11a는 도 1의 호스트 장치의 기입 리퀘스트에 따라 기입 동작이 수행되는 것을 나타낸다.
도 11b는 도 1의 호스트 장치의 독출 리퀘스트에 따라 사용자 데이터에 대한 독출 동작이 수행되는 것을 나타낸다.
도 11c는 도 1의 스토리지 장치가 메타 데이터 세트(MDS)를 갱신하는 것을 나타낸다.
도 12는 도 1의 스토리지 장치에서 스토리지 컨트롤러와 하나의 비휘발성 메모리 장치의 연결을 나타내는 블록도이다.
도 13은 본 발명의 실시예들에 따른 도 12에서 비휘발성 메모리 장치를 나타내는 블록도이다.
도 14은 도 13의 비휘발성 메모리 장치에서 메모리 셀 어레이를 나타내는 블록도이다.
도 15은 도 14의 메모리 블록들 중 하나의 메모리 블록을 나타내는 회로도이다.
도 16는 도 15의 메모리 블록의 하나의 셀 스트링의 구조의 예를 보여준다.
도 17은 도 1의 스토리지 시스템에서 한번의 리퀘스트에 응답하여 연속적인 독출 동작이 수행되는 것을 나타낸다.
도 18은 도 1의 스토리지 장치에서 스토리지 컨트롤러가 메타데이터를 갱신하는 것을 나타낸다.
도 19는 도 4의 스토리지 컨트롤러가 도 10의 메타데이터 세트를 참조하여 데이터의 속성을 구분하는 것을 나타낸다.
도 20은 메타데이터 세트에 포함되는 비트맵을 나타낸다.
도 21은 본 발명의 실시예들에 따른 스토리지 장치의 동작 방법을 나타내는 흐름도이다.
도 22는 본 발명의 실시예들에 따른 스토리지 장치를 포함하는 시스템을 나타내는 블록도이다.
도 23은 본 발명의 실시예들에 따른 모바일 장치를 나타내는 블록도이다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 일 실시예에 따른 스토리지 시스템(또는, 데이터 자장 시스템)을 나타내는 블록도이다.
도 1을 참조하면, 본 발명의 일 실시예에 따른 스토리지 시스템(10)은 호스트 장치(100) 및 스토리지 장치(또는 solid state drive(SSD), 200)를 포함할 수 있다.
호스트 장치(100)는 스토리지 장치(200)의 동작을 전반적으로 제어한다. 호스트 장치(100)는 스토리지 장치(200)와 신호를 교환한다. 상기 신호는 리퀘스트(또는 커맨드), 어드레스, 데이터 등을 포함할 수 있다.
스토리지 장치(200)는 스토리지 컨트롤러(300) 및 비휘발성 스토리지(400)를 포함할 수 있고, 비휘발성 스토리지(400)는 복수의 비휘발성 메모리 장치들(400a~400k)을 포함할 수 있다. 여기서, 복수의 비휘발성 메모리 자치들(400a~400k)은 낸드 플래시 메모리들로 구현될 수 있다. 여기서, k는 3 이상의 자연수일 수 있다.
스토리지 컨트롤러(300)는 호스트 장치(100)의 리퀘스트에 따라 해당 비휘발성 스토리지에 데이터를 기입하거나 해당 비휘발성 스토리지로부터 데이터를 독출할 수 있다.
스토리지 컨트롤러(300)는 플래시 변환 계층(flash translation layer(FTL), 305)을 포함할 수 있다.
FTL(305)은 컨트롤러(120)에 의해 구동되는 펌웨어 또는 소프트웨어일 수 있다. FTL(305)은 호스트 장치(100)에 의해 관리되는 저장 공간의 논리 어드레스를 비휘발성 스토리지(400)의 저장 공간의 물리 어드레스로 변환할 수 있다. 즉, 스토리지 컨트롤러(300)는 호스트 장치(100)로부터 수신되는 논리 어드레스 기반 요청의 논리 어드레스를 변환 계층(128)을 이용하여 물리 어드레스로 변환할수 있다. FTL(305)은 비휘발성 스토리지(400)를 관리하고, 비휘발성 스토리지(400)의 동작 성능을 개선하기 위한 다양한 배경 동작들을 수행할 수 있다.
이하에서, 사용자 데이터 및 메타데이터 세트가 정의된다. 사용자 데이터는 호스트 장치(100)를 이용하는 사용자가 스토리지 장치(200) 또는 비휘발성 스토리지(400)에 기입하는 데이터일 수 있다. 예를 들어, 사용자 데이터는 스토리지 시스템(10)에 설치되는 운영 체제 또는 응용의 설치 데이터, 운영 체제 또는 응용에 의해 생성되는 워드 파일, 스프레드시트 파일, 데이터베이스 파일, 멀티미디어 파일, 압축 파일과 같은 다양한 데이터를 포함할수 있다.
메타데이터 세트는 호스트 장치(100)가 스토리지 장치(100)를 관리하기 위해 생성하는 데이터일 수 있다. 예를 들어, 메타데이터 세트는 스토리지 장치(200)에 대응하는 파일 시스템의 데이터를 포함할 수 있다. 메타데이터 세트는 파워 오프 시에도 유지될 수 있도록, 사용자의 개입 없이 호스트 장치(100) 또는 파일 시스템에 의해 스토리지 장치(100) 또는 비휘발성 스토리지(400)에 기입될 수 있다.
실시예에 있어서, 스토리지 장치(200)는 스토리지 컨트롤러(300)에 연결되는 버퍼 메모리(220)를 더 포함할 수 있다.
버퍼 메모리(220)는 호스트 장치(100)로부터 전달받은 데이터를 임시로 저장하거나, 비휘발성 메모리 장치들(400a~400k)로부터 독출한 데이터를 임시로 저장하는 버퍼 영역으로 사용된다.
또한, 버퍼 메모리(220)은 비휘발성 메모리 장치들(400a~400k)의 효율적 관리를 위해 사용되는 소프트웨어(S/W)를 구동하는데 사용될 수 있다. 또한, DRAM(220)은 호스트 장치(100)에 의하여 비휘발성 메모리 장치들(400a~400k) 중 적어도 하나에 저장된 메타 데이터를 로딩받아 저장하거나, 캐시 데이터를 저장하는데 사용될 수 있다. 실시예에 있어서, 버퍼 메모리(220)는 디램(DRAM) 또는 에스램(SRAM) 등의 휘발성 메모리를 포함할 수 있다.
비휘발성 메모리 장치들(400a~400k)은 스토리지 장치(200)의 저장 매체로 사용된다. 비휘발성 메모리 장치들(400a~400k)은 복수의 채널 그룹들(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) 및 버스(170)를 포함할 수 있다. 실시예에 있어서, 호스트 장치(100)는 메모리 컨트롤러(160)를 더 포함할 수 있다.
버스(170)는 호스트 장치(100)의 프로세서(110), 롬(120), 호스트 메모리(130), 스토리지 인터페이스(150), 사용자 인터페이스(150), 메모리 컨트롤러(160) 간의 데이터를 전송하는 전송로를 의미한다.
프로세서(110)는 호스트 장치(100)의 전반적인 동작을 제어한다. 프로세서(110)는 호스트 메모리(120)에 로드(load)된 소프트웨어를 실행할 수 있다. 예를 들어, 프로세서(110)는 응용 프로그램(application program), 파일 시스템(file system), 입출력 스케줄러(block I/O scheduler), 및 장치 드라이버(device driver)를 실행할 수 있다. 프로세서(110)은 동종 멀티-코어 프로세서(homogeneous multi-core processor)들 또는 이종 멀티-코어 프로세서(heterogeneous multi-core processor)들을 포함할 수 있다. 예를 들어, 프로세서(110)는 CPU(central processing unit), ISP(image signal processing unit), DSP(digital signal processing unit), GPU(graphics processing unit), VPU(vision processing unit), 및 NPU(neural processing unit) 중 적어도 하나를 포함할 수 있다.
롬(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)에는 데이터 또는 프로그램이 일시적으로 저장될 수 있다. 호스트 메모리(130)에는 스토리지 시스템(10) 내 모든 하드웨어와 소프트웨어를 관리하는 운영 체제(OS)가 로드(load)될 수 있다.
스토리지 인터페이스(150)는 SATA 인터페이스, PATA 인터페이스, USB(Universal Serial Bus) 또는 SAS 인터페이스, eMMC 인터페이스, UFS 인터페이스, NVMe 인터페이스 등과 같은 스토리지 프로토콜을 지원하는 인터페이스를 포함할 수 있다.
사용자 인터페이스(140)는 사용자와 호스트 기기, 컴퓨터 프로그램 등 사이에서 정보를 주고받을 수 있는 물리적 또는 가상적 매개체로서 물리적인 하드웨어와 논리적인 소프트웨어를 포함한다. 즉, 사용자 인터페이스(140)는 사용자가 호스트 장치(100)를 조작할 수 있는 입력 장치와 사용자 입력에 대한 처리 결과를 표시하는 출력 장치를 포함할 수 있다.
메모리 컨트롤러(160)는 호스트 메모리(130)를 제어할 수 있다.
도 3은 본 발명의 실시예들에 따른 도 2의 스토리지 장치에서 호스트 메모리를 나타낸다.
도 3을 참조하면, 호스트 메모리(130)에는 유저 영역(user space)에 포함되는 응용 프로그램(131)과 커널(kernel) 영역에 포함되는 파일 시스템(132), 입출력 스케줄러(133), 및 장치 드라이버 (135)가 로드될 수 있다.
호스트 메모리(130)에 로드된 소프트웨어 계층들(131~133, 135)은 스토리지 장치(200)를 접근하기 위한 소프트웨어 스택(stack)에 포함될 수 있다. 호스트 메모리(130)는 DRAM(dynamic random access memory) 장치 또는 SRAM(static random access memory) 장치를 포함할 수 있다.
응용 프로그램(131)은 기본적인 서비스로서 실행되거나 또는 사용자의 요청에 의해 실행될 수 있다. 응용 프로그램(131)이 위치하는 유저 공간과 파일 시스템(132), 입출력 스케줄러(133), 장치 드라이버(135) 등을 포함하는 커널이 위치하는 커널 공간은 서로 분리될 수 있다. 응용 프로그램(131)은 스토리지 장치(200)와 같은 자원을 직접적으로 접근할 수 없다. 대신에, 응용 프로그램(131)은 시스템 호출(system call) 함수가 포함된 라이브러리(미도시) 상에 정의된 함수를 호출할 수 있고 커널에 필요한 작업을 요청할 수 있다. 시스템 호출 함수가 호출되면, 유저 모드에서 커널 모드로 전환될 수 있다(switch).
파일 시스템(132)은 스토리지 장치(200)에 저장되는 파일 또는 데이터(사용자 데이터)를 관리할 수 있다. 예를 들어, 파일 시스템(122)은 FAT(file allocation table), NTFS(new technology file system), HFS(hierarchical file system), HPFS(high performance file system), UFS(unix file system), ext2(secondary extended file system), ext3, ext4, JFS(journaling file system), ISO 9660, Files-11, VxFS(veritas file system), ZFS, ReiserFS, UDF(universal disk format) 등을 포함할 수 있다. 특히, 파일 시스템(132)은 SPO(sudden power off) 또는 시스템 오류(system crash)로 인해 데이터베이스, 파일, 또는 데이터의 일관성이 유지되지 않는 것을 방지하기 위해 저널링(journaling)을 수행할 수 있다.
파일 시스템(132)는 사용자 데이터를 비휘발성 스토리지(400)에 저장하면서, 사용자 데이터의 관리에 사용되는 메타 데이터 세트(MDS)를 생성하고 생성된 메타 데이터 세트(MDS)를 비휘발성 스토리지(400)에 데이터 구조체로서 저장할 수 있다. 또한 파일 시스템(132)은 메타 데이터 세트(MDS)를 호스트 메모리(130)에 저장할 수 있다.
입출력 스케줄러(133)는 블록 계층에 위치할 수 있다. 입출력 스케줄러(123)는 파일 시스템(132)으로부터 입출력(I/O) 요청들을 수신하고 수신된 IO 요청들을 스케줄러 큐(134)에 저장할 수 있다. 입출력 스케줄러(133)는 스케줄러 큐(134)를 관리할 수 있다. 입출력 스케줄러(133)는 I/O 요청들을 병합하거나 I/O 요청들의 순서를 조정할 수 있다(재배열(re-ordering)).
장치 드라이버(135)는 스토리지 장치(200)와 같은 하드웨어 장치를 제어하기 위해 커널의 일부분으로서 동작하는 프로그램이다. 장치 드라이버(135)는 스케줄러 큐(134)에서 I/O 요청들을 제거하고 스토리지 장치(200)를 제어하는 커맨드를 생성할 수 있다. 장치 드라이버(135)는 스케줄러 큐(134)의 I/O 요청들을 처리할 수 있다. 실시 예에 있어서, 호스트 메모리(130)에 로드되는 프로그램, 소프트웨어 계층은 도 2에서 도시된 것으로 한정되지 않는다.
도 4는 본 발명의 실시예에 따른 도 1의 스토리지 장치에서 스토리지 컨트롤러를 나타내는 블록도이다.
스토리지 컨트롤러(300)는 중앙 처리 장치(CPU)와 같은 프로세서(310), SRAM(320), ECC(Error correction code) 엔진(330), 호스트 인터페이스(340), ROM(360), 비휘발성 메모리 인터페이스(350) 및 버스(315)를 포함하여 구성될 수 있다.
버스(315)는 프로세서(310), SRAM(320), ECC 엔진(330), 호스트 인터페이스(340), ROM(360) 및 비휘발성 메모리 인터페이스(350) 사이의 데이터를 전송하는 전송로를 의미한다. 프로세서(310)는 호스트 장치(100)와 비휘발성 메모리 장치들(400a~400k) 사이의 데이터 교환을 위한 동작을 수행할 수 있다.
호스트 인터페이스(340)는 호스트 장치(100)와 연결되고, 비휘발성 메모리 인터페이스(350)는 비휘발성 메모리 장치들(400a~400k)과 연결된다. 프로세서(310)는 호스트 인터페이스(340)를 통하여 상기 호스트 장치(100)와 통신할 수 있다. 예를 들어, 호스트 인터페이스(340)는 SATA 인터페이스, PATA 인터페이스, USB(Universal Serial Bus) 또는 SAS 인터페이스, eMMC 인터페이스, UFS 인터페이스, NVMe 인터페이스 등과 같은 다양한 인터페이스 프로토콜들 중 적어도 하나를 통해 호스트 장치(100)와 통신하도록 구성될 수 있다.
또한, 프로세서(310)는 비휘발성 메모리 인터페이스(350)를 통하여 비휘발성 메모리 장치들(400a~400k)과 통신할 수 있다. 비휘발성 메모리 인터페이스(350)는 비휘발성 메모리 장치들(400a~400k)의 수만큼 구비되어 비휘발성 메모리 장치들(400a~400k) 각각과 연결될 수 있다.
ECC 엔진(330)은 상기 호스트 장치(100)로부터 제공된 데이터를 ECC 인코딩하여 비휘발성 메모리 장치들(400a~400k)에 제공하고, 비휘발성 메모리 장치들(400a~400k)로부터 독출된 데이터를 ECC 디코딩하여 호스트 장치(100)에 제공할 수 있다.
SRAM(320)은 메타데이터 세트(327), 맵핑 테이블(325) 및 펌웨어(329)를 저장할 수 있다. 프로세서(310)는 메타데이터 세트(327)를 펌웨어(329)와 결합하여 비휘발성 메모리 장치들(400a~400k)에 대한 액세스를 제어할 수 있다. ROM(360)은 스토리지 컨트롤러(300)가 동작하는데 요구되는 다양한 정보들을 펌웨어 형태로 저장할 수 있다.
도 5는 도 1의 스토리지 시스템에서 비휘발성 스토리지의 채널 및 웨이의 구성을 예시적으로 나타낸다.
도 5를 참조하면, 채널 그룹들(CHG1~CHGk) 각각에는 비휘발성 스토리지들(410~4k0)이 각각 연결될 수 있다. 채널 그룹들(CHG1~CHGk) 각각에 접속된 비휘발성 메모리 장치들(400a~400k)은 m 개의 웨이들(way1~waym)을 구성할 수 있다. 각 채널 그룹에 구성된 m 개의 웨이에는 m 개의 비휘발성 메모리 장치들(411~41m, 421~42m, …, 4k1~4km)이 연결될 수 있다. 여기서, m은 3 이상의 자연수일 수 있다.
웨이(way)는 동일한 채널을 공유하는 비휘발성 메모리 장치들을 구분하기 위한 단위이다. 채널 번호와 웨이 번호에 따라서 각각의 비휘발성 메모리 장치가 식별될 수 있다.
도 6 및 도 8은 도 1의 스토리지 장치의 비휘발성 스토리지를 설명하기 위한 블록도이다. 도 7는 도 1의 스토리지 장치에 저장되는 파일의 구조를 설명하기 위한 도면이다. 도 9는 도 8의 노드 어드레스 테이블을 설명하기 위한 도면이다.
스토리지 장치(200)의 비휘발성 스토리지(400)는 도 6에 도시된 것과 같이 구성될 수 있다. 세그먼트(SEGMENT)(53)는 다수의 블록(BLK)(51)을 포함하고, 섹션(SECTION)(55)은 다수의 세그먼트(53)를 포함하고, 존(ZONE)(57)은 다수의 섹션(55)을 포함할 수 있다.
예를 들어, 블록(51)은 4Kbyte이고, 세그먼트(53)는 512개의 블록(51)을 포함하여 2Mbyte일 수 있다. 이러한 구성은, 스토리지 장치(200)의 포맷(format) 시점에서 결정될 수 있으나, 이에 한정되는 것은 아니다. 섹션(55)과 존(57)의 사이즈는 포맷 시점에서 수정될 수도 있다.
한편, 스토리지 장치(200)에 저장되는 파일은 도 7에 도시된 것과 같은, 인덱싱 구조(indexing structure)를 가질 수 있다. 하나의 파일은 다수의 데이터와, 다수의 데이터와 연관된 다수의 노드를 포함할 수 있다. 데이터 블록(70)은 데이터를 저장하는 부분이고, 노드 블록(80, 81~88, 91~95)은 노드를 저장하는 부분이다.
노드 블록(80, 81~88, 91~95)은 다이렉트 노드 블록(direct node block)(81~88), 인다이렉트 노드 블록(indirect node block)(91~95), 아이노드 블록(inode block)(80)을 포함할 수 있다.
다이렉트 노드 블록(81~88)은 데이터 블록(70)을 직접 가리키는 데이터 포인터(data pointer)를 포함한다. 인다이렉트 노드 블록(91~95)은 데이터 블록(70)이 아닌, 다른 노드 블록(83~88)(즉, 하위의 노드 블록)을 가리키는 포인터를 포함한다. 인다이렉트 노드 블록(91~95)은 예를 들어, 제1 인다이렉트 노드 블록(91~94), 제2 인다이렉트 노드 블록(95) 등을 포함할 수 있다. 제1 인다이렉트 노드 블록(91~94)은 다이렉트 노드 블록(83~88)을 가리키는 제1 노드 포인터를 포함한다. 제2 인다이렉트 노드 블록(95)은 제1 인다이렉트 노드 블록(93, 94)을 가리키는 제2 노드 포인터를 포함한다.
아이노드 블록(80)은 데이터 포인터, 다이렉트 노드 블록(81, 82)를 가리키는 제1 노드 포인터, 제1 인다이렉트노드 블록(91, 92)을 가리키는 제2 노드 포인터, 제2 인다이렉트 노드 블록(95)를 가리키는 제3 노드 포인터 중 적어도 하나를 포함할 수 있다. 하나의 파일은 예를 들어, 최대 3Tbyte일 수 있고, 이러한 대용량의 파일을 다음과 같은 인덱스 구조를 가질 수 있다.
예를 들어, 아이노드 블록(80) 내의 데이터 포인터는 994개이고, 994개의 데이터 포인터 각각은 994개의 데이터 블록(70) 각각을 가리킬 수 있다. 제1 노드 포인터는 2개이고, 2개의 제1 노드 포인터 각각은 2개의 다이렉트 노드 블록(81, 82)를 가리킬 수 있다. 제2 노드 포인터는 2개이고, 2개의 제2 노드 포인터 각각은 2개의 제1 인다이렉트 노드 블록(91, 92)을 가리킬 수 있다. 제3 노드 포인터는 1개이고, 제2 인다이렉트 노드 블록(95)를 가리킬 수 있다.
또한, 파일별로 아이노드 메타데이터를 포함하는 아이노드 페이지가 존재한다.
한편, 도 8에서와 같이, 비휘발성 스토리지(400)는 제1 영역(RG1)과 제2 영역(RG2)으로 나누어질 수 있다. 파일시스템(132)은 포맷(format)할 때, 장치(20)를 제1 영역(RG1)과 제2 영역(RG2)으로 나눌 수 있으나, 이에 한정되는 것은 아니다. 제1 영역(RG1)은 시스템 전체로 관리되는 각종 정보(메타 데이터 세트)가 저장되는 영역으로, 예를 들어, 현재 할당된 파일 수, 유효한 페이지 수, 위치 등의 정보를 포함할 수 있다. 제2 영역(RG2)은 실제 사용자가 사용하고 있는 각종 디렉토리 정보, 데이터, 파일 정보 등을 저장하는 공간이다.
구체적으로, 제1 영역(RG1)은 슈퍼블록(61, 62), 체크포인트 영역(CheckPoint area, CP)(63), 세그먼트 정보 테이블(Segment Information Table, SIT)(64), 노드 어드레스 테이블(Node Address Table, NAT)(65), 세그먼트요약 영역(Segment Summary Area, SSA)(66) 등을 포함할 수 있다.
먼저, 슈퍼블록(61, 62)에는, 파일시스템(132)의 디폴트 정보가 저장된다. 예를 들어, 블록(51)의 크기, 블록(51)의 개수, 파일시스템(16)의 상태 플러그(clean, stable, active, logging, unknown) 등이 저장될 수 있다. 도시된 것과 같이, 슈퍼블록(61, 62)은 2개일 수 있고, 각각에는 동일한 내용이 저장될 수 있다. 따라서, 둘 중 어느 하나에 문제가 발생하더라도, 다른 하나를 이용할 수 있다.
체크포인트 영역(63)은 체크포인트를 저장한다. 체크포인트는 논리적인 중단점으로서, 이러한 중단점까지의 상태가 완전하게 보존된다. 스토리지 시스템(10)의 동작 중에 사고(예를 들어, 파워 오프(sudden power off))가 발생하면, 파일 시스템(132)은 보존된 체크포인트를 이용하여 데이터를 복구할 수 있다. 이러한 체크포인트의 생성 시점은, 예를 들어, 주기적으로 생성, System shutdown 시점 등일 수 있으나, 이에 한정되는 것은 아니다.
노드 어드레스 테이블(65)은 도 9에 도시된 것과 같이, 노드 각각에 대응되는 다수의 노드 식별자(NODE ID)와, 다수의 노드 식별자 각각에 대응되는 다수의 물리 어드레스를 포함할 수 있다.
예를 들어, 노드 식별자 ND1에 대응되는 노드 블록은 물리 어드레스 a에 대응되고, 노드 식별자 ND2에 대응되는 노드 블록은 물리 어드레스 b에 대응되고, 노드 식별자 ND3에 대응되는 노드 블록은 물리 어드레스 c에 대응될 수 있다. 모든 노드(아이노드, 다이렉트 노드, 인다이렉트 노드 등)는 각각 고유의 노드 식별자를 갖는다. 다르게 설명하면, 모든 노드(아이노드, 다이렉트 노드, 인다이렉트 노드 등)는 노드 어드레스 테이블(65)로부터 고유의 노드 식별자를 할당 받을 수 있다. 노드 어드레스 테이블(65)은 아이노드의 노드 식별자, 다이렉트 노드의 노드 식별자 및 인다이렉트 노드의 노드 식별자 등을 저장할 수 있다. 각 노드 식별자에 대응되는 각 물리 어드레스는 업데이트(update)될 수 있다.
세그먼트 정보 테이블(64)는 각 세그먼트의 유효한 페이지의 개수와, 다수의 페이지의 비트맵을 포함한다. 비트맵은 각 페이지가 유효한지 여부를 0 또는 1로 표시한 것을 의미한다. 세그먼트 정보 테이블(64)은 클리닝(cleaning) 작업(또는 가비지 컬렉션(garbage collection))에서 사용될 수 있다. 특히 비트맵은 클리닝 작업을 수행할 때, 불필요한 독출 요청을 줄일 수 있고, 어댑티브 데이터 로깅(adaptive data logging)시 블록 할당할 때 이용될 수 있다.
세그먼트 요약 영역(66)는 제2 영역(RG2)의 각 세그먼트의 요약 정보를 모아둔 영역이다. 구체적으로, 세그먼트 요약 영역(66)은 제2 영역(RG2)의 각 세그먼트의 다수의 블록이 속하는 노드의 정보를 기술한다. 세그먼트 요약 영역(66)은 클리닝(cleaning) 작업(또는 가비지 컬렉션(garbage collection))에서 사용될 수 있다.
구체적으로 설명하면, 노드 블록(80, 81~88, 91~95)은 데이터 블록(70) 또는 하위의 노드 블록(예를 들어, 다이렉트 노드 블록 등)의 위치를 확인하기 위해, 노드 식별자 목록 또는 어드레스를 가지고 있다. 이와는 반대로, 세그먼트 요약 영역(66)은 데이터 블록(70) 또는 하위의 노드 블록(80, 81~88, 91~95)이 상위의 노드 블록(80, 81~88, 91~95)의 위치를 확인할 수 있는 인덱스(index)를 제공한다. 세그먼트 요약 영역(66)은 다수의 세그먼트 요약 블록을 포함한다. 하나의 세그먼트 요약 블록은, 제2 영역(RG2)에 위치한 하나의 세그먼트에 대한 정보를 가지고 있다. 또한, 세그먼트 요약 블록은 다수의 요약 정보로 구성되어 있으며, 하나의 요약 정보는 하나의 데이터 블록 또는 하나의 노드 블록에 대응된다.
또한, 제2 영역(RG2)은 서로 분리된 데이터 세그먼트(data segment)(DS0, DS1)과 노드 세그먼트(node segment)(NS0, NS1)을 포함할 수 있다. 다수의 데이터는 데이터 세그먼트(DS0, DS1)에 저장되고, 다수의 노드는 노드 세그먼트(NS0, NS1)에 저장될 수 있다. 데이터와 노드가 분리되는 영역이 서로 다르면, 효율적으로 세그먼트를 관리할 수 있고, 데이터를 리드할 때 보다 효과적으로 빠른 시간 내에 리드할 수 있다.
한편, 제2 영역(RG2)은 순차적 라이트(sequential write) 방식으로 사용되는 영역이고, 제1 영역(RG1)은 랜덤 라이트(random write) 방식으로 사용되는 영역일 수 있다.
또한, 제2 영역(RG2)은 데이터 블록을 포함하고, 제1 영역(RG1)은 아이노드 목록을 포함한다고 설명될 수 있다.
도 10은 도 3의 파일 시스템이 생성하는 메타 데이터 세트를 나타낸다.
도 10을 참조하면, 메타 데이터 세트(327)는 다양한 데이터 필드들을 포함할 수 있다.
이러한 데이터 필드들은 파일 명칭(371), 파일이 생성된 날짜(372), (본문에서 사용되는 "날짜"의 용어는 날짜 및 시간을 모두 포함하는 것으로 의도됨,) 파일이 최근 변경된 날짜(373), 파일이 최근에 액세스된 날짜(374), 파일에 대한 종류(375)(예를 들어, 실행 가능, 문서, 텍스트 파일, 또는 다른 것들), 파일의 크기(376), 파일을 저장하는 컨테이너(377), 파일의 소유자(378) 및 삭제 날짜(379)를 포함할 수 있다.
도 11a 내지 도 11c는 도 1의 스토리지 시스템의 동작을 나타내는 도면들이다.
도 11a는 도 1의 호스트 장치(100)의 기입 리퀘스트에 따라 기입 동작이 수행되는 것을 나타낸다.
도 11a를 참조하면, 호스트 장치(100)는 기입 리퀘스트(REQ), 사용자 데이터(DATA) 및 파일 시스템(132)이 생성한 메타 데이터 세트(MDS)를 스토리지 장치(200)에 제공할 수 있고, 이에 따라 사용자 데이터(DATA)와 메타 데이터 세트(327)가 비휘발성 메모리 장치(400a)의 제2 영역과 제1 영역에 각각 저장될 수 있다(511).
도 11b는 도 1의 호스트 장치(100)의 독출 리퀘스트에 따라 사용자 데이터에 대한 독출 동작이 수행되는 것을 나타낸다.
도 11b를 참조하면, 독출 동작을 수행하기 위하여 호스트 장치(100)는 독출 리퀘스트(REQ)와 사용자 데이터(DATA)에 관련된 메타 데이터를 저장하는 아이노드의 어드레스 정보(INDINF)를 스토리지 장치(200)에 제공한다.
스토리지 컨트롤러(300)는 독출 리퀘스트(REQ)와 아이노드의 어드레스 정보(INDINF)에 기초하여 메타 데이터 세트(327)를 버퍼 메모리(220)에 로딩시키고(513), 버퍼 메모리에 로딩된 메타 데이터 세트(327)를 참조하여, 사용자 데이터(DATA) 또는 사용자 데이터(DTA)의 일부인 타겟 데이터가 저장된 물리 페이지들의 물리 어드레스를 검색하고, 상기 물리 페이지지들을 액세스하여 사용자 데이터(DATA) 또는 사용자 데이터(DTA)의 일부인 타겟 데이터를 호스트 장치(100)에 제공한다. 즉 호스트 장치(100)는 독출 동작을 수행하기 위하여 타겟 데이터의 논리 어드레스들을 스토리지 장치(200)에 제공하는 대신 사용자 데이터(DATA)에 관련된 메타 데이터를 저장하는 아이노드의 어드레스 정보(INDINF)만을 스토리지 장치(200)에 제공하여 호스트 장치(100)와 스토리지 장치(200) 사이의 입출력 오버헤드를 감소시킬 수 있다.
도 11c는 도 1의 스토리지 장치(200)가 메타 데이터 세트(MDS)를 갱신하는 것을 나타낸다.
도 11c를 참조하면, 버퍼 메모리(220)에 로딩된 메타 데이터 세트(MTS)의 갱신이 필요한 경우에, 스토리지 컨트롤러(300)는 메타 데이터 세트(MTS)를 갱신하고, 갱신된 메타 데이터 세트(MTS')를 비휘발성 메모리 장치(400a)에 주기적으로 또는 비주기적으로 플러쉬할 수 있다(515). 또한 메타 데이터 세트의 일관성을 유지하기 위하여, 스토리지 컨트롤러(300)는 갱신된 메타 데이터 세트(MTS')를 호스트 장치(100)에 전송할 수 있다. 스토리지 컨트롤러(300)는 호스트 장치(100)와 스토리지 장치(200)의 유휴 시간에 갱신된 메타 데이터 세트(MTS')를 호스트 장치(100)에 전송할 수 있다.
도 12는 도 1의 스토리지 장치에서 스토리지 컨트롤러와 하나의 비휘발성 메모리 장치의 연결을 나타내는 블록도이다.
도 12를 참조하면, 비휘발성 메모리 장치(400a)는 스토리지 컨트롤러(300)의 제어에 따라 소거, 기입, 독출 동작 등을 수행할 수 있다. 이를 위하여, 비휘발성 메모리 장치(400a)는 입출력 라인을 통해 커맨드(CMD), 어드레스(ADDR) 및 데이터(DATA)를 입력받는다. 또한, 비휘발성 메모리 장치(400a)는 제어 라인을 통하여 제어 신호(CTRL)를 제공받을 수 있고 파워 라인을 통해 파워(PWR)를 제공받을 수 있다. 또한, 비휘발성 메모리 장치(400a)는 제어 라인을 통하여 상태 신호(RnB)를 스토리지 컨트롤러(300)에 제공할 수 있다.
도 13은 본 발명의 실시예들에 따른 도 12에서 비휘발성 메모리 장치를 나타내는 블록도이다.
도 13을 참조하면, 비휘발성 메모리 장치(400a)는 메모리 셀 어레이(420), 어드레스 디코더(450), 페이지 버퍼 회로(430), 데이터 입출력 회로(440), 제어 회로(460) 및 전압 생성기(470)를 포함할 수 있다.
메모리 셀 어레이(420)는 스트링 선택 라인(SSL), 복수의 워드라인들(WLs) 및 접지 선택 라인(GSL)을 통해 어드레스 디코더(450)와 연결될 수 있다. 또한, 메모리 셀 어레이(420)는 복수의 비트 라인들(BLs)을 통해 페이지 버퍼 회로(430)와 연결될 수 있다. 메모리 셀 어레이(420)는 복수의 워드 라인들(WLs) 및 복수의 비트 라인들(BLs)에 연결되는 복수의 메모리 셀들을 포함할 수 있다.
일 실시예에 있어서, 메모리 셀 어레이(420)는 기판 상에 삼차원 구조(또는 수직 구조)로 형성되는 삼차원(three dimensional) 메모리 셀 어레이일 수 있다. 이 경우, 메모리 셀 어레이(420)는 서로 적층되어 형성되는 복수의 메모리 셀들을 포함하는 수직 메모리 셀 스트링들을 포함할 수 있다. 다른 실시예에 있어서, 메모리 셀 어레이(420)는 기판 상에 이차원 구조(또는 수평 구조)로 형성되는 이차원(two dimensional) 메모리 셀 어레이일 수 있다.
도 14은 도 13의 비휘발성 메모리 장치에서 메모리 셀 어레이를 나타내는 블록도이다.
도 14를 참조하면, 메모리 셀 어레이(420)는 복수의 메모리 블록들(BLK1~BLKz)을 포함한다. 복수의 메모리 블록들(BLK1~BLKz)은 제1 내지 제3 방향들(D1~D3)을 따라 신장된다. 실시예에 있어서, 메모리 블록들(BLK1~BLKz)은 도 13에 도시된 어드레스 디코더(450)에 의해 선택된다. 예를 들면, 어드레스 디코더(450)는 메모리 블록들(BLK1~BLKz) 중 블록 어드레스에 대응하는 메모리 블록(BLK)을 선택할 수 있다.
도 15은 도 14의 메모리 블록들 중 하나의 메모리 블록을 나타내는 회로도이다.
도 15에 도시된 메모리 블록(BLKi)은 기판(SUB) 상에 삼차원 구조로 형성되는 삼차원 메모리 메모리 블록을 나타낸다. 예를 들어, 메모리 블록(BLKi)에 포함되는 복수의 메모리 셀 스트링들은 상기 기판(SUB)과 수직한 방향(PD)으로 적층될 수 있다.
도 15를 참조하면, 메모리 블록(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)은 각각 분리될 수 있다.
도 16는 도 15의 메모리 블록의 하나의 셀 스트링의 구조의 예를 보여준다.
도 15 및 도 16을 참조하면, 셀 스트링(NS11)에는 기판(SUB) 위에 기판과 수직인 방향으로 신장되어 기판(SUB)과 접촉하는 필라(PL)가 제공될 수 있다. 도 16에 도시된 접지 선택 라인(GSL1), 워드 라인들(WL1~WL8), 그리고 스트링 선택 라인(SSL1)은 각각 기판(SUB)과 평행한 도전 물질들, 예를 들어 금속 물질들로 형성될 수 있다. 필라(PL)는 접지 선택 라인(GSL1), 워드 라인들(WL1~WL8), 그리고 스트링 선택 라인(SSL1)을 형성하는 도전 물질들을 관통하여 기판(SUB)과 접촉할 수 있다.
도 16에서, 절단 선(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)과 동일한 구조를 가질 수 있다.
다시 도 13을 참조하면, 제어 회로(460)는 스토리지 컨트롤러(300)로부터 커맨드(CMD) 및 어드레스 신호(ADDR)를 수신하고, 커맨드(CMD) 및 어드레스 신호(ADDR)에 기초하여 비휘발성 메모리 장치(400a)의 소거 루프, 프로그램 루프 및 독출 동작을 제어할 수 있다. 여기서 프로그램 루프는 프로그램 동작과 프로그램 검증 동작을 포함할 수 있고, 소거 루프는 소거 동작과 소거 검증 동작을 포함할 수 있다.
예를 들어, 제어 회로(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)를 이용하여 비휘발성 메모리 장치(400a)의 동작에 필요한 워드 라인 전압들(VWLs)을 생성할 수 있다. 전압 생성기(470)로부터 생성되는 워드 라인 전압들(VWLs)은 어드레스 디코더(450)를 통해 복수의 워드 라인들(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)에 의하여 제어될 수 있다.
제어 회로(460)는 메모리 셀 어레이(420)에 대한 프로그램 동작, 소거 동작 및 독출 동작의 완료 및/또는 진행 여부를 나타내는 상태 신호(RnB)를 생성하는 상태 신호 생성기(465)를 포함할 수 있다.
스토리지 컨트롤러(300)는 상태 신호(RnB)에 기초하여 비휘발성 메모리 장치들(400a~400k) 각각의 유휴 상태를 판단할 수 있다.
도 17은 도 1의 스토리지 시스템에서 한번의 리퀘스트에 응답하여 연속적인 독출 동작이 수행되는 것을 나타낸다.
도 17을 참조하면, 타겟 데이터를 지정하는 논리 어드레스들이 비연속적인 경우에도 호스트 장치(100)는 독출 리퀘스트와 아이노드의 어드레스 정보(LBA of INODE)를 스토리지 장치(200)에 전송하고, 스토리지 컨트롤러(300)는 이에 응답하여 메타 데이터 세트(MTS)를 버퍼 메모리(200)에 로딩하고(621), 로딩된 메타 데이터 세트(MTS)를 참조하여 타겟 데이터가 저장된 비연속적인 물리 페이지들로부터 연속적으로 데이터를 독출할 수 있다(622, 623, 624, 625).
도 18은 도 1의 스토리지 장치에서 스토리지 컨트롤러가 메타데이터를 갱신하는 것을 나타낸다.
도 18을 참조하면, 타겟 데이터가 연속적인 논리 페이지들(LPN0~NPN3)에 대응되는, 비연속적인 물리 어드레스들을 가지는 제1 물리 페이지들(PPN0, PPN2, PPN4. PPN6)에 저장되어 있는 경우, 스토리지 컨트롤러(300)는 타겟 데이터가 연속적인 논리 페이지들(LPN0~NPN3)에 대응되는, 연속적인 물리 어드레스들을 가지는 제2 물리 페이지들(PPN40, PPN41, PPN42. PPN43)에 저장되도록 맵핑 테이블(MTa)을 맵핑 테이블(MTb)로 갱신할 수 있다.
즉, 스토리지 컨트롤러(300)는 스토리지 컨트롤러(300)는 타겟 데이터가 연속적인 논리 페이지들(LPN0~NPN3)에 대응되는, 연속적인 물리 어드레스들을 가지는 제2 물리 페이지들(PPN40, PPN41, PPN42. PPN43)에 저장되도록 타겟 데이터와 관련된 메타데이터를 갱신할 수 있다. 여기서 맴핑 테이블(MTa)은 메타데이터 세트의 일부로서, 비휘발성 스토리지 내(400)에서의 물리 어드레스와 상기 물리 어드레스에 대응되는 논리 어드레스 사이의 맵핑 정보를 저장한다.
도 19는 도 4의 스토리지 컨트롤러가 도 10의 메타데이터 세트를 참조하여 데이터의 속성을 구분하는 것을 나타낸다.
도 19를 참조하면, 스토리지 컨트롤러(300)는 도 10의 메터 데이터 세트(327)의 액세스 날짜(374)를 참조하여 데이터의 속성을 핫 데이터 또는 콜드 데이터로 구분할 수 있다. 즉, 스토리지 컨트롤러(300)는 액세스 날짜(374)가 기준 날짜 이후인 경우에는 데이터의 속성을 핫 데이터로 판단하고, 액세스 날짜(374)가 기준 날짜 이전인 경우에는 데이터의 속성을 콜드 데이터로 판단할 수 있다.
도 20은 메타데이터 세트에 포함되는 비트맵을 나타낸다.
도 20을 참조하면, 사용자 데이터(DATA)는 복수의 서브 데이터들(SDT0, SDT1, SDT2, SDT3)를 포함하고, 제1 블록(BLK1)은 물리 페이지들(PPN0~PPN4)을 포함하고, 제2 블록(BLK2)은 물리 페이지들(PPN5~PPN9)을 포함하고, 맵핑 테이블(MTa)에 저장된 정보와 같이, 논리 페이지들(LPN0~NPN3)은 물리 페이지들(PPN0, PPN2, PPN4, PPN6)에 각각 대응된다. 서브 데이터들(SDT0, SDT1, SDT2)은 제1 메모리 블록(BLK1)의 물리 페이지들(PPN0, PPN2, PPN4)에 저장되고 서브 데이터(SDT3)는 제2 메모리 블록(BLK2)의 물리 페이지(PPN6)에 저장된다.
비트맵(BTM)은 메타데이터 세트(MTS)의 일부로서 포함되고, 논리 페이지들(LPN0~NPN3) 각각의 유효 여부를 논리 레벨로 나타낼 수 있다. 예를 들어, 로직 하이 레벨은 해당 페이지가 유효임을 나타내고, 로직 로우 레벨은 해당 페이지가 무효임을 나타낼 수 있다. 스토리지 컨트롤러(300)는 비트맵(BTM)을 참조하여, 호스트 장치(100)로부터의 리퀘스트와 무관하게 서브 데이터(SDT3)를 삭제할 수 있다. 즉, 스토리지 컨트롤러(300)는 비트맵(BTM)을 참조하여, 호스트 장치(100)로부터의 리퀘스트와 무관하게 사용자 데이터의 적어도 일부를 삭제할 수 있다.
또한 스토리지 컨트롤러(300)는 사용자 데이터(DATA)가 저장되는 채널을 호스트 장치로부터의 리퀘스트와 무관하게 상기 복수의 채널들 중 제1 채널에서 제2 채널로 변경할 수 있다.
또한 스토리지 컨트롤러(300)는 FTL(305)을 이용하여 메타데이터 세트(MDS)가 저장되는 메모리 블록의 프로그램/소거 사이클에 기초하여 상기 메타데이터 세트를 상기 복수의 비휘발성 메모리 장치들 중 제1 비휘발성 메모리 장치로부터 제2 비휘발성 메모리 장치로 이동시킬 수 있다.
도 20에서 참조 번호(710)는 스토리지 컨트롤러(300)의 소프트웨어 계층을 나타내고, 참조 번호(720)는 비휘발성 스토리지(400)의 물리 계층을 나타낸다.
도 21은 본 발명의 실시예들에 따른 스토리지 장치의 동작 방법을 나타내는 흐름도이다.
도 1 내지 도 21을 참조하면, 사용자 데이터(DATA) 및 상기 사용자 데이터(DATA)의 관리에 관계되는 메타데이터 세트(MTS))를 저장하는 비휘발성 스토리지(400) 및 상기 비휘발성 스토리지(400)를 제어하는 스토리지 컨트롤러(300)를 구비하는 스토리지 장치(200)의 동작 방법이 제공된다.
상기 방법에 의하면, 스토리지 장치(200)는 외부의 호스트 장치(100)로부터 제공되는 상기 메타 데이터 세트(MTS)와 상기 사용자 데이터(DATA))를 상기 비휘발성 스토리지(400)의 제1 영역(RG11)과 제2 영역(ㄲㅎ2)에 각각 저장한다(S110).
스토리지 컨트롤러(300)는 상기 사용자 데이터(DATA) 중 타겟 데이터와 관련된 메타데이터를 저장하는 아이노드의 어드레스 정보(INDINF)를 상기 호스트 장치(100)로부터 수신한다(S120).
상기 스토리지 컨트롤러(300)가 상기 아이노드의 어드레스 정보(INDINF)에 기초하여 상기 관련된 메타 데이터를 상기 비휘발성 스토리지(400)로부터 버퍼 메모리(220)에 로딩시킨다(S130).
상기 스토리지 컨트롤러(300)가 상기 관련된 메타 데이터를 참조하여 상기 제2 영역에 저장된 상기 타겟 데이터를 액세스하고(S140), 액세스된 타겟 데이터를 호스트 장치(100)에 전송한다.
본 발명의 실시예들에 따른 스토리지 장치, 스토리지 시스템 및 스토리지 장치의 동작 방법에서는 사용자 데이터의 관리에 관계되는 메타 데이터 세트를 스토리지 장치의 비휘발성 스토리지에 저장하고, 스토리지 컨트롤러는 스토리지 장치에 저장된 상기 메타 데이터 세트의 논리 정보를 이용하여 비휘발성 스토리지를 액세스함으로써 스토리지 장치와 호스트 장치 사이의 입출력 오버헤드를 감소시켜 스토리지 장치의 성능을 향상시킬 수 있다.
도 22는 본 발명의 실시예들에 따른 스토리지 장치를 포함하는 시스템을 나타내는 블록도이다.
도 22를 참조하면, 시스템(1000)은 호스트 장치(2000) 및 스토리지 장치(3000)를 포함한다. 예를 들어, 스토리지 장치(3000)는 에스에스디(SSD, solid state drive), 임베디드 멀티미디어 카드(eMMC, embedded multimedia card) 등 비휘발성 스토리지를 데이터 저장 미디어로 사용하는 장치일 수 있다.
호스트 장치(2000)는 스토리지 장치(3000)의 데이터 처리 동작, 예를 들어, 데이터 독출 동작 또는 데이터 기입 동작 등을 제어할 수 있다.
호스트 장치(2000)는 버스(20)를 통하여 연결된 프로세서(CPU)(2100), 호스트 메모리(HMEM)(2200) 및 호스트 컨트롤러 인터페이스(HCI)(2300)를 포함할 수 있다. 호스트 메모리(2200)는 전술한 바와 같이 파일 시스템이 생성한 메타데이터 세트를 저장할 수 있다. 프로세서(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), ECC 엔진(3220), 버퍼 메모리(3240), 호스트 인터페이스(3230), 및 비휘발성 메모리 인터페이스(3250)를 포함한다.
프로세서(3210)는 스토리지 컨트롤러(3200)의 전반적인 동작을 제어하도록 구성된다. 예를 들면, 프로세서(3210)는 플래시 변환 계층(FTL, Flash Translation Layer) 등을 포함하는 펌웨어(3212)를 운용하도록 구성된다. 플래시 변환 계층(FTL)은 다양한 기능들을 수행할 수 있다. 예를 들면, 플래시 변환 계층(FTL)은 어드레스 맵핑 동작, 독출 교정 동작 등을 수행하는 다양한 계층들을 포함할 수 있다.
ECC 엔진(3220)은 기입 데이터에 대하여 ECC 인코딩을 수행하고, 독출 데이터에 대하여 ECC 디코딩을 수행할 수 있다.
호스트 인터페이스(3230)는 호스트 장치(2000)와의 인터페이스 기능을 제공할 수 있다. 비휘발성 메모리 인터페이스(3250)는 비휘발성 메모리 장치(3100)와의 인터페이스 기능을 제공할 수 있다. 호스트 장치(2000)와 스토리지 장치(3000)는 버스(15)를 통하여 상호 연결될 수 있다.
버퍼 메모리(3240)는 메타데이터 세트(MDS)를 저장할 수 있다.
호스트 장치(2000)는 전술한 바와 같이 사용자 데이터를 비휘발성 메모리 장치들(3100)에 저장하는 경우, 사용자 데이터의 관리에 관계되는 메타데이터 세트를 생성하고, 메타데이터 세트를 비휘발성 메모리 장치들(3100)에 저장할 수 있다. 호스트 장치(2000)는 사용자 데이터의 적어도 일부를 독출하는 경우, 상기 일부 데이터에 관련된 메타 데이터를 저장하는 아이노드의 어드레스 정보를 스토리지 컨트롤러(3200)에 제공하고, 스토리지 컨트롤러(3200)는 아이노드의 어드레스 정보에 기초하여 메타 데이터 세트(MDS)를 버퍼 메모리(3240)에 로딩시키고, 로딩된 메타 데이터 세트를 참조하여 일부 데이터를 액세스할 수 있다. 따라서 스토리지 컨트롤러(3200)는 상기 로딩된 메타 데이터 세트의 논리 정보를 이용하여 비휘발성 스토리지를 액세스함으로써 스토리지 장치(3000)와 호스트 장치(2000) 사이의 입출력 오버헤드를 감소
도 23은 본 발명의 실시예들에 따른 모바일 장치를 나타내는 블록도이다.
도 23을 참조하면, 모바일 장치(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)는 사용자 데이터의 관리에 관계되는 메타데이터 세트(MDS)(4410)를 저장하고, 메타데이터 세트(MDS)의 논리 정보를 이용하여 사용자 데이터를 액세스할 수 있다.
모바일 램(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. 제1 영역 및 제2 영역을 구비하고 상기 제2 영역에 사용자 데이터를 저장하고, 상기 제1 영역에 상기 사용자 데이터에 관련된 메타데이터 세트를 데이터 구조체로 저장하는 비휘발성 스토리지;
    상기 비휘발성 스토리지를 제어하는 스토리지 컨트롤러; 및
    상기 스토리지 컨트롤러에 연결되고, 외부의 호스트 장치의 파일 시스템이 생성한 상기 메타데이터 세트를 상기 비휘발성 스토리지로부터 로딩받는 버퍼 메모리를 포함하고,
    상기 호스트 장치가 상기 사용자 데이터 중 타겟 데이터를 액세스하는 경우, 상기 스토리지 컨트롤러는 상기 호스트 장치로부터 상기 타겟 데이터에 관련된 메타 데이터를 저장하는 아이노드의 어드레스 정보를 수신하고, 상기 아이노드의 어드레스 정보에 기초하여 상기 버퍼 메모리에 로딩된 상기 메타데이터 세트에서 관련 메타 데이터를 참조하여 상기 타겟 데이터를 액세스하는 스토리지 장치.
  2. 제1항에 있어서,
    상기 관련 메타 데이터는 상기 타겟 데이터의 상기 비휘발성 스토리지 내에서의 물리 어드레스와 상기 물리 어드레스에 대응되는 논리 어드레스 사이의 맵핑 정보를 저장하는 맵핑 테이블을 포함하는 스토리지 장치.
  3. 제2항에 있어서,
    상기 스토리지 컨트롤러는 상기 맵핑 테이블에서 상기 타겟 데이터의 논리 어드레스에 기초하여 상기 대응되는 물리 어드레스를 참조하고, 상기 물리 어드레스에 대응되는, 상기 비휘발성 스토리지의 메모리 영역에 저장된 상기 타겟 데이터를 액세스하는 스토리지 장치.
  4. 제1항에 있어서,
    상기 제2 영역은 데이터 블록을 포함하고,
    상기 제1 영역은 아이노드 목록을 포함하는 스토리지 장치.
  5. 제1항에 있어서,
    상기 타겟 데이터를 지정하는 논리 어드레스들이 비연속적인 경우, 상기 스토리지 컨트롤러는 상기 호스트 장치로부터의 한번의 리퀘스트에 응답하여 상기 타겟 데이터를 상기 비휘발성 스토리지로부터 독출하고 독출된 상기 타겟 데이터를 상기 호스트 장치에 전송하는 스토리지 장치.
  6. 제1항에 있어서,
    상기 스토리지 컨트롤러는 상기 메타 데이터 세트에 대한 갱신이 필요한 경우, 상기 호스트 장치와는 독립적으로 상기 메타 데이터 세트에 대한 갱신을 수행하고, 상기 갱신된 메타 데이터 세트를 주기적 또는 비주기적으로 상기 비휘발성 스토리지에 플러쉬하는 스토리지 장치.
  7. 제1항에 있어서,
    상기 스토리지 컨트롤러는 상기 메타 데이터 세트에 포함되는 액세스 날짜에 기초하여 상기 사용자 데이터 세트의 속성을 핫 데이터 및 콜드 데이터 중 하나로 판단하는 스토리지 장치.
  8. 제1항에 있어서,
    상기 스토리지 컨트롤러는 상기 타겟 데이터가 비연속적인 물리 어드레스들을 가지는 제1 물리 페이지들에 저장되어 있는 경우, 상기 타겟 데이터가 연속적인 물리 어드레스들을 가지는 제2 물리 데이터에 저장되도록 상기 관련 메타데이터를 갱신하는 스토리지 장치.
  9. 제1항에 있어서,
    상기 사용자 데이터는 복수의 서브 데이터를 포함하고,
    상기 메타데이터 세트는 상기 복수의 서브 데이터 각각의 유효 여부를 나타내는 비트맵을 포함하고,
    상기 스토리지 컨트롤러는 상기 비트맵을 참조하여 상기 호스트 장치로부터의 리퀘스트와 무관하게 상기 복수의 서브 데이터 중 적어도 일부를 삭제하는 스토리지 장치.
  10. 제1항에 있어서,
    상기 비휘발성 스토리지는 복수의 채널들 각각을 통하여 상기 스토리지 컨트롤러에 연결되는 복수의 비휘발성 메모리 장치들을 포함하고,
    상기 복수의 비휘발성 메모리 장치들 각각은 복수의 메모리 블록들을 포함하고,
    상기 복수의 메모리 블록들 중 적어도 하나는 기판 위에 순차적으로 적층되는 복수의 메모리 셀들을 구비하는 낸드 스트링들을 포함하는 스토리지 장치.
  11. 제1 영역과 제2 영역을 구비하는 비휘발성 스토리지 및 상기 비휘발성 스토리지를 제어하는 스토리지 컨트롤러를 구비하는 스토리지 장치; 및
    상기 스토리지 장치를 제어하며, 사용자 데이터를 관리하는데 관계되는 메타 데이터 세트를 생성하는 파일 시스템을 포함하는 호스트 장치를 포함하고,
    상기 스토리지 컨트롤러는 상기 비휘발성 스토리지의 상기 제1 영역에 상기 상기 메타 데이터 세트를 데이터 구조체로 저장하고, 상기 비휘발성 스토리지의 상기 제2 영역에 상기 사용자 데이터를 저장하고,
    상기 스토리지 장치는 상기 메타데이터 세트를 상기 비휘발성 스토리지로부터 로딩받는 버퍼 메모리를 더 포함하고,
    상기 호스트 장치가 상기 사용자 데이터 중 타겟 데이터를 액세스하는 경우, 상기 스토리지 컨트롤러는 상기 호스트 장치로부터 상기 타겟 데이터에 관련된 메타 데이터를 저장하는 아이노드의 어드레스 정보를 수신하고, 상기 아이노드의 어드레스 정보에 기초하여 상기 버퍼 메모리에 로딩된 상기 메타데이터 세트에서 관련 메타 데이터를 참조하여 상기 타겟 데이터를 액세스하는 스토리지 시스템.
  12. 제11항에 있어서,
    상기 관련 메타 데이터는 상기 타겟 데이터의 상기 비휘발성 스토리지 내에서의 물리 어드레스와 상기 물리 어드레스에 대응되는 논리 어드레스 사이의 맵핑 정보를 저장하는 맵핑 테이블을 포함하는 스토리지 시스템.
  13. 제11항에 있어서,
    상기 스토리지 컨트롤러는 상기 메타 데이터 세트에 대한 갱신이 필요한 경우, 상기 호스트 장치와는 독립적으로 상기 메타 데이터 세트에 대한 갱신을 수행하고,
    상기 갱신된 메타 데이터 세트를 상기 호스트 장치에 전송하는 스토리지 시스템.
  14. 제13항에 있어서,
    상기 스토리지 컨트롤러는 상기 스토리지 컨트롤러와 상기 호스트 장치의 유휴 시간 동안에 상기 갱신된 메타 데이터 세트를 상기 호스트 장치에 전송하는 스토리지 시스템.
  15. 제11항에 있어서,
    상기 스토리지 컨트롤러는 상기 타겟 데이터가 비연속적인 물리 어드레스들을 가지는 제1 물리 페이지들에 저장되어 있는 경우, 상기 타겟 데이터가 연속적인 물리 어드레스들을 가지는 제2 물리 페이지들에 저장되도록 상기 관련 메타데이터를 갱신하고,
    상기 갱신된 관련 메타데이터를 상기 호스트 장치에 전송하는 스토리지 시스템.
  16. 제15항에 있어서,
    상기 스토리지 컨트롤러는 상기 스토리지 컨트롤러와 상기 호스트 장치의 유휴 시간 동안에 상기 갱신된 관련 메타데이터를 상기 호스트 장치에 전송하는 스토리지 시스템.
  17. 제11항에 있어서,
    상기 비휘발성 스토리지는 복수의 채널들 각각을 통하여 상기 스토리지 컨트롤러에 연결되는 복수의 비휘발성 메모리 장치들을 포함하고,
    상기 복수의 비휘발성 메모리 장치들 각각은 복수의 메모리 블록들을 포함하고,
    상기 복수의 메모리 블록들 중 적어도 하나는 기판 위에 순차적으로 적층되는 복수의 메모리 셀들을 구비하는 낸드 스트링들을 포함하는 스토리지 시스템.
  18. 제17항에 있어서,
    상기 스토리지 컨트롤러는 상기 사용자 데이터가 저장되는 채널을 상기 호스트 장치로부터의 리퀘스트와 무관하게 상기 복수의 채널들 중 제1 채널에서 제2 채널로 변경하는 스토리지 시스템.
  19. 제17항에 있어서,
    상기 스토리지 컨트롤러는 상기 메타데이터 세트가 저장되는 메모리 블록의 프로그램/소거 사이클에 기초하여 상기 메타데이터 세트를 상기 복수의 비휘발성 메모리 장치들 중 제1 비휘발성 메모리 장치로부터 제2 비휘발성 메모리 장치로 이동시키는 스토리지 시스템.
  20. 사용자 데이터 및 상기 사용자 데이터의 관리에 관계되는 메타 데이터 세트를 저장하는 비휘발성 스토리지 및 상기 비휘발성 스토리지를 제어하는 스토리지 컨트롤러를 구비하는 스토리지 장치의 동작 방법으로서,
    상기 스토리지 컨트롤러가 외부의 호스트 장치로부터 제공되는 상기 메타 데이터 세트와 상기 사용자 데이터를 상기 비휘발성 스토리지의 제1 영역과 제2 영역에 각각 저장하는 단계;
    상기 스토리지 컨트롤러가 상기 사용자 데이터 중 타겟 데이터와 관련된 메타 데이터를 저장하는 아이노드의 어드레스 정보를 상기 호스트 장치로부터 수신하는 단계;
    상기 스토리지 컨트롤러가 상기 아이노드의 어드레스 정보에 기초하여 상기 메타데이터 세트를 상기 비휘발성 스토리지로부터 버퍼 메모리에 로딩시키는 단계; 및
    상기 스토리지 컨트롤러가 상기 메타데이터 세트에서 상기 관련 메타데이터를 참조하여 상기 제2 영역에 저장된 상기 타겟 데이터를 액세스하는 단계를 포함하는 스토리지 장치의 동작 방법.
KR1020190158001A 2019-12-02 2019-12-02 스토리지 장치, 스토리지 시스템 및 스토리지 장치의 동작 방법 KR20210068699A (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020190158001A KR20210068699A (ko) 2019-12-02 2019-12-02 스토리지 장치, 스토리지 시스템 및 스토리지 장치의 동작 방법
US16/896,934 US11461041B2 (en) 2019-12-02 2020-06-09 Storage device that receives inode address information to reduce external communication overhead
DE102020115969.2A DE102020115969A1 (de) 2019-12-02 2020-06-17 Speichervorrichtungen, speichersysteme und verfahren zum betreiben von speichervorrichtungen
CN202011362480.8A CN112988627A (zh) 2019-12-02 2020-11-27 存储设备、存储系统和操作存储设备的方法
US17/897,534 US11875055B2 (en) 2019-12-02 2022-08-29 Storage device that receives inode address information to reduce external communication overhead

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190158001A KR20210068699A (ko) 2019-12-02 2019-12-02 스토리지 장치, 스토리지 시스템 및 스토리지 장치의 동작 방법

Publications (1)

Publication Number Publication Date
KR20210068699A true KR20210068699A (ko) 2021-06-10

Family

ID=75896555

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190158001A KR20210068699A (ko) 2019-12-02 2019-12-02 스토리지 장치, 스토리지 시스템 및 스토리지 장치의 동작 방법

Country Status (4)

Country Link
US (2) US11461041B2 (ko)
KR (1) KR20210068699A (ko)
CN (1) CN112988627A (ko)
DE (1) DE102020115969A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102365312B1 (ko) * 2021-06-17 2022-02-23 삼성전자주식회사 스토리지 컨트롤러, 연산 스토리지 장치, 및 연산 스토리지 장치의 동작 방법

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230024420A1 (en) * 2021-07-16 2023-01-26 Samsung Electronics Co., Ltd. Methods and devices for file read latency reduction
CN114168075A (zh) * 2021-11-29 2022-03-11 华中科技大学 基于数据关联性提升负载访问性能的方法、设备及系统
CN116955219B (zh) * 2023-09-13 2024-01-19 新华三信息技术有限公司 一种数据镜像方法、装置、主机及存储介质

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6044205A (en) 1996-02-29 2000-03-28 Intermind Corporation Communications system for transferring information between memories according to processes transferred with the information
US7596639B2 (en) * 2004-09-01 2009-09-29 Lsi Corporation Skip mask table automated context generation
KR101447188B1 (ko) 2007-07-31 2014-10-08 삼성전자주식회사 플래시 메모리에 최적화된 입출력 제어 방법 및 장치
KR101430762B1 (ko) 2008-02-29 2014-08-18 한양대학교 산학협력단 비휘발성 랜덤 액세스 메모리를 이용한 스토리지 시스템,파일 시스템 및 데이터 관리 방법 그리고 기억장치
JP4498456B1 (ja) * 2009-02-19 2010-07-07 株式会社東芝 データ記憶制御装置及びデータ記憶制御方法
US8516219B2 (en) * 2009-07-24 2013-08-20 Apple Inc. Index cache tree
US8290996B2 (en) 2010-07-30 2012-10-16 International Business Machines Corporation Data sharing for file clones using reverse ditto references
KR101795629B1 (ko) * 2011-02-15 2017-11-13 삼성전자주식회사 호스트에서 파일 시스템 관리 방법 및 상기 방법을 수행할 수 있는 장치들
US10019451B2 (en) 2011-09-29 2018-07-10 Quantum Corporation Path lookup in a hierarchical file system
KR101962786B1 (ko) * 2012-03-23 2019-03-27 삼성전자주식회사 불휘발성 메모리 장치, 메모리 시스템 및 그것의 프로그램 방법
KR101977575B1 (ko) 2012-09-28 2019-05-13 삼성전자 주식회사 디렉토리 엔트리 조회 장치, 그 방법 및 디렉토리 엔트리 조회 프로그램이 기록된 기록 매체
US9652376B2 (en) * 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US9575884B2 (en) * 2013-05-13 2017-02-21 Qualcomm Incorporated System and method for high performance and low cost flash translation layer
CN103500076A (zh) * 2013-10-13 2014-01-08 张维加 一种基于多通道slc nand与dram缓存的新usb协议计算机加速设备
KR102254392B1 (ko) * 2014-05-12 2021-05-25 삼성전자주식회사 메모리 컨트롤러의 동작 방법 및 불휘발성 메모리 장치 및 메모리 컨트롤러를 포함하는 불휘발성 메모리 시스템
KR101674176B1 (ko) 2014-07-24 2016-11-08 성균관대학교산학협력단 파일 단위 순서 모드 저널링 기법을 이용한 fsync 시스템 호출 처리 장치 및 방법
US10372684B2 (en) 2015-01-09 2019-08-06 Quantum Corporation Metadata peering with improved inodes
KR102506135B1 (ko) * 2015-03-16 2023-03-07 삼성전자주식회사 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
US10552058B1 (en) * 2015-07-17 2020-02-04 Radian Memory Systems, Inc. Techniques for delegating data processing to a cooperative memory controller
JP6604115B2 (ja) 2015-09-25 2019-11-13 富士通株式会社 ストレージ装置およびストレージ制御プログラム
US10261705B2 (en) * 2016-12-15 2019-04-16 Alibaba Group Holding Limited Efficient data consistency verification for flash storage
US11461287B2 (en) * 2017-10-26 2022-10-04 EMC IP Holding Company LLC Managing a file system within multiple LUNS while different LUN level policies are applied to the LUNS
KR102421149B1 (ko) * 2018-01-02 2022-07-14 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
CN107844431B (zh) * 2017-11-03 2022-01-25 合肥兆芯电子有限公司 映射表更新方法、存储器控制电路单元与存储器存储装置
KR102567140B1 (ko) * 2017-11-24 2023-08-16 삼성전자주식회사 데이터 관리 방법 및 이를 수행하는 저장 장치
US20190034427A1 (en) 2017-12-28 2019-01-31 Intel Corporation Data management system employing a hash-based and tree-based key-value data structure
KR20200144582A (ko) * 2018-05-18 2020-12-29 마이크론 테크놀로지, 인크. 관리형 nand 디바이스에서의 호스트 가속 작동
US10783120B1 (en) * 2018-06-28 2020-09-22 Amazon Technologies, Inc. Service-based storage synchronization
TWI693516B (zh) * 2018-11-13 2020-05-11 群聯電子股份有限公司 映射表更新方法、記憶體控制電路單元與記憶體儲存裝置
US11226907B2 (en) * 2018-12-19 2022-01-18 Micron Technology, Inc. Host-resident translation layer validity check techniques
US11301369B2 (en) * 2019-01-24 2022-04-12 Western Digital Technologies, Inc. Logical to physical mapping management using low-latency non-volatile memory
JP2020154603A (ja) * 2019-03-19 2020-09-24 キオクシア株式会社 メモリシステム
US11010079B2 (en) * 2019-04-09 2021-05-18 Intel Corporation Concept for storing file system metadata within solid-stage storage devices
US11175856B2 (en) * 2019-11-08 2021-11-16 Micron Technology, Inc. Background operation selection based on host idle time

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102365312B1 (ko) * 2021-06-17 2022-02-23 삼성전자주식회사 스토리지 컨트롤러, 연산 스토리지 장치, 및 연산 스토리지 장치의 동작 방법
US11645011B2 (en) 2021-06-17 2023-05-09 Samsung Electronics Co., Ltd. Storage controller, computational storage device, and operational method of computational storage device

Also Published As

Publication number Publication date
CN112988627A (zh) 2021-06-18
US11875055B2 (en) 2024-01-16
US11461041B2 (en) 2022-10-04
US20210165604A1 (en) 2021-06-03
US20220413754A1 (en) 2022-12-29
DE102020115969A1 (de) 2021-06-02

Similar Documents

Publication Publication Date Title
CN108509480B (zh) 配置为执行非阻塞控制更新操作的数据存储设备
US11875055B2 (en) Storage device that receives inode address information to reduce external communication overhead
KR102050725B1 (ko) 컴퓨팅 시스템 및 컴퓨팅 시스템의 데이터 관리 방법
CN111352581A (zh) 在存储设备中写入数据的方法、存储设备、和存储系统
US10289340B2 (en) Coalescing metadata and data writes via write serialization with device-level address remapping
KR102050732B1 (ko) 컴퓨팅 시스템 및 컴퓨팅 시스템의 데이터 관리 방법
US20150193339A1 (en) System and method for efficient address translation of flash memory device
US11360908B2 (en) Memory-efficient block/object address mapping
US10120606B2 (en) Data storage devices including storage controller circuits to select data streams based on application tags and computing systems including the same
JP2019125366A (ja) バリアーコマンドに基づいてデータを順に格納するストレージ装置
CN110968522B (zh) 存储器系统及其操作方法、包括存储器系统的数据库系统
KR20200086143A (ko) 저장 장치 및 그것의 데이터 처리 방법
CN113900584A (zh) 存储器系统、存储器控制器以及操作存储器系统的方法
US11422930B2 (en) Controller, memory system and data processing system
KR20200019421A (ko) 메모리 시스템 내 대용량 데이터 저장이 가능한 블록에서의 유효 데이터 체크 방법 및 장치
US20170123705A1 (en) Convertible Leaf Memory Mapping
KR20200050169A (ko) 스토리지 장치, 스토리지 시스템 및 스토리지 장치의 동작 방법
KR101008032B1 (ko) 메타 데이터 관리 시스템 및 방법
CN112988615A (zh) 键值存储设备和操作方法
CN112181287A (zh) 基于键值存储数据的存储设备及其操作方法
KR20210012085A (ko) 저널 리플레이를 개선하기 위한 스토리지 장치, 그것의 동작 방법, 및 스토리지 장치를 포함하는 전자 장치
US11256418B2 (en) Logical address history management in memory device
KR20210039185A (ko) 메모리 시스템에서 멀티 스트림 동작을 제공하는 방법 및 장치
KR20200113990A (ko) 메모리 시스템 내 메모리 장치의 동작 상태를 확인하는 방법 및 장치
CN115390747A (zh) 存储设备及其操作方法