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

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

Info

Publication number
KR20200088635A
KR20200088635A KR1020190005162A KR20190005162A KR20200088635A KR 20200088635 A KR20200088635 A KR 20200088635A KR 1020190005162 A KR1020190005162 A KR 1020190005162A KR 20190005162 A KR20190005162 A KR 20190005162A KR 20200088635 A KR20200088635 A KR 20200088635A
Authority
KR
South Korea
Prior art keywords
lock
write
host
request
memory
Prior art date
Application number
KR1020190005162A
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 KR1020190005162A priority Critical patent/KR20200088635A/ko
Priority to US16/711,076 priority patent/US11216214B2/en
Priority to CN201911285111.0A priority patent/CN111538683B/zh
Publication of KR20200088635A publication Critical patent/KR20200088635A/ko

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/1689Synchronisation and timing concerns
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • 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/20Handling requests for interconnection or transfer for access to input/output bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • 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/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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7207Details relating to flash memory management management of metadata or control data
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

FTL(Flash Translation Layer)을 각각 포함하는 복수의 호스트와 연결되는 메모리 시스템은, 상기 복수의 호스트 중 어느 하나의 호스트로부터의 라이트 요청을 위한 라이트 잠금이 설정되면 상기 어느 하나의 호스트로부터의 라이트 요청 수신만을 허용하는 컨트롤러; 및 상기 컨트롤러에 의해 제어되며, 상기 어느 하나의 호스트로부터의 라이트 요청에 따라 라이트 동작을 수행하는 메모리 장치를 포함하며, 상기 컨트롤러는, 상기 라이트 잠금 요청을 수신하면 상기 메모리 장치에 잠금이 설정되어 있는지 여부에 따라 라이트 잠금을 설정하고 상기 라이트 동작이 종료되면 상기 라이트 잠금을 해제하는 잠금 관리부, 및 상기 라이트 동작의 성공 여부에 따라 상기 어느 하나의 호스트를 제외한 나머지 호스트의 FTL의 FTL 메타데이터의 동기화를 제어하는 동기화 관리부를 포함한다.

Description

메모리 시스템 및 메모리 시스템의 동작방법 {MEMORY SYSTEM AND OPERATION METHOD THEREOF}
본 발명은 메모리 시스템 및 메모리 시스템을 포함하는 데이터 처리 시스템에 관한 것이다.
최근 컴퓨터 환경에 대한 패러다임(paradigm)이 언제, 어디서나 컴퓨터 시스템을 사용할 수 있도록 하는 유비쿼터스 컴퓨팅(ubiquitous computing)으로 전환되고 있다. 이로 인해 휴대폰, 디지털 카메라, 노트북 컴퓨터 등과 같은 휴대용 전자 장치의 사용이 급증하고 있다. 이와 같은 휴대용 전자 장치는 일반적으로 메모리 장치를 이용하는 메모리 시스템, 다시 말해 데이터 저장 장치를 사용한다. 데이터 저장 장치는 휴대용 전자 장치의 주 기억 장치 또는 보조 기억 장치로 사용된다.
메모리 장치를 이용한 데이터 저장 장치는 기계적인 구동부가 없어서 안정성 및 내구성이 뛰어나며, 또한 정보의 액세스 속도가 매우 빠르고 전력 소모가 적다는 장점이 있다. 이러한 장점을 갖는 메모리 시스템의 일 예로 데이터 저장 장치는, USB(Universal Serial Bus) 메모리 장치, 다양한 인터페이스를 갖는 메모리 카드, 솔리드 스테이트 드라이브(SSD: Solid State Drive) 등을 포함한다.
본 발명은 메모리 시스템에 접속된 복수의 호스트 각각에 포함된 FTL 메타데이터의 동기화를 지원하는 데이터 처리 시스템 및 그의 동작 방법의 제공을 목적으로 한다.
본 발명의 일 실시예에 따르면, FTL(Flash Translation Layer)을 각각 포함하는 복수의 호스트와 연결되는 메모리 시스템은, 상기 복수의 호스트 중 어느 하나의 호스트로부터의 라이트 요청을 위한 라이트 잠금이 설정되면 상기 어느 하나의 호스트로부터의 라이트 요청 수신만을 허용하는 컨트롤러; 및 상기 컨트롤러에 의해 제어되며, 상기 어느 하나의 호스트로부터의 라이트 요청에 따라 라이트 동작을 수행하는 메모리 장치를 포함하며, 상기 컨트롤러는, 상기 라이트 잠금 요청을 수신하면 상기 메모리 장치에 잠금이 설정되어 있는지 여부에 따라 라이트 잠금을 설정하고 상기 라이트 동작이 종료되면 상기 라이트 잠금을 해제하는 잠금 관리부, 및 상기 라이트 동작의 성공 여부에 따라 상기 어느 하나의 호스트를 제외한 나머지 호스트의 FTL의 FTL 메타데이터의 동기화를 제어하는 동기화 관리부를 포함한다.
본 발명의 일 실시예에 따르면, FTL(Flash Translation Layer)을 각각 포함하는 복수의 호스트와 연결되는 메모리 시스템의 동작 방법은, 상기 복수의 호스트 중 어느 하나의 호스트로부터의 라이트 잠금 요청을 수신하면 메모리 장치에 잠금이 설정되어 있는지 여부에 따라 라이트 잠금을 설정하는 단계; 상기 라이트 잠금이 설정되면 상기 어느 하나의 호스트로부터의 라이트 요청만을 수신하고, 상기 라이트 요청에 따라 라이트 동작을 수행하는 단계; 상기 라이트 동작이 종료되면 상기 라이트 잠금을 해제하는 단계; 및 상기 라이트 동작의 성공 여부에 따라 상기 어느 하나의 호스트를 제외한 나머지 호스트의 FTL의 FTL 메타데이터의 동기화를 제어하는 단계를 포함한다.
본 발명은 메모리 시스템에 접속된 복수의 호스트 각각에 포함된 FTL 메타데이터의 동기화를 지원하는 데이터 처리 시스템 및 그의 동작 방법을 제공할 수 있다.
도 1은 데이터 처리 시스템(100)의 일 예를 개략적으로 도시한 도면이다.
도 2는 다중 포트(Multi-port)를 지원하는 오픈 채널 메모리 시스템을 포함하는 데이터 처리 시스템(100)의 일 예를 개략적으로 도시한 도면이다.
도 3은 본 발명의 일 실시예에 따른 데이터 처리 시스템(100)의 구조를 개략적으로 나타낸 도면이다.
도 4a 및 도 4b는 본 발명의 일 실시예에 따른 데이터 처리 시스템(100)의 부팅 동작을 설명하기 위한 도면이다.
도 5a 내지 5d는 본 발명의 일 실시예에 따른 데이터 처리 시스템(100)의 라이트 동작을 설명하기 위한 도면이다.
도 6a 내지 도 6b는 본 발명의 일 실시예에 따른 데이터 처리 시스템(100)의 리드 동작을 설명하기 위한 도면이다.
도 7은 본 발명의 일 실시예에 따른 데이터 처리 시스템(100)에 포함될 수 있는 데이터를 개략적으로 도시한 도면이다.
도 8은 단일 루트 입/출력 가상화(Single Root I/O virtualization. SR-IOV)를 지원하는 오픈 채널 메모리 시스템을 포함하는 데이터 처리 시스템(100)의 일 예를 개략적으로 도시한 도면이다.
도 9는 본 발명에 따른 메모리 시스템(130)이 적용된 사용자 시스템을 개략적으로 도시한 도면이다.
이하, 본 발명에 따른 바람직한 실시 예를 첨부한 도면을 참조하여 상세히 설명한다. 하기의 설명에서는 본 발명에 따른 동작을 이해하는데 필요한 부분만이 설명되며 그 이외 부분의 설명은 본 발명의 요지를 흩뜨리지 않도록 생략될 것이라는 것을 유의하여야 한다.
이하, 도면들을 참조하여 본 발명의 실시 예들에 대해서 보다 구체적으로 설명하기로 한다.
도 1은 데이터 처리 시스템(100)의 일 예를 개략적으로 도시한 도면이다.
데이터 처리 시스템(100)은 호스트(110) 및 메모리 시스템(130)을 포함할 수 있다.
호스트(110)는 유무선 전자 장치, 예컨대 휴대폰, MP3 플레이어, 랩탑 컴퓨터와 같은 휴대용 전자 장치들 또는 데스크탑 컴퓨터, 게임기, TV, 프로젝터와 같은 전자 장치들을 포함할 수 있다.
메모리 시스템(130)은 호스트(110)의 요청에 응하여 데이터를 저장할 수 있다. 메모리 시스템(130)은 호스트(110)의 주 기억장치 또는 보조 기억장치로 사용될 수 있다. 메모리 시스템(130)은 호스트(110)와 연결되는 호스트 인터페이스 프로토콜에 따라, 다양한 종류의 저장 장치들 중 어느 하나로 구현될 수 있다.
메모리 시스템(130)은 메모리 장치(170) 및 메모리 장치(170)를 제어하는 컨트롤러(150)를 포함할 수 있다.
메모리 장치(170)는 플래시 메모리 장치일 수 있다. 플래시 메모리는 메모리 셀 트랜지스터들로 구성된 메모리 셀 어레이에 데이터를 저장할 수 있다. 플래시 메모리는 다이, 플레인, 블록 및 페이지 계층 구조를 가질 수 있다. 한 다이는 한 번에 하나의 커맨드를 수신할 수 있다. 플래시 메모리는 복수의 다이를 포함할 수 있다. 한 다이는 복수의 플레인을 포함할 수 있으며, 상기 복수의 플레인은 상기 다이가 수신한 커맨드를 병렬로 처리할 수 있다. 각 플레인은 복수의 블록을 포함할 수 있다. 블록은 이레이즈 동작의 최소 단위일 수 있다. 한 블록은 복수의 페이지를 포함할 수 있다. 페이지는 라이트 동작의 최소 단위일 수 있다.
플래시 메모리는 다른 메모리 소자에 비해서 비교적 낮은 단가로 빠른 읽기 속도를 제공할 수 있다. 그러나, 플래시 메모리는 덮어쓰기 연산을 지원하지 않기 때문에 플래시 메모리에 데이터를 라이트하기 위해서 반드시 이레이즈 동작이 선행되어야 한다. 또한, 플래시 메모리에 라이트되는 데이터의 단위보다 이레이즈되는 데이터의 단위가 크다. 플래시 메모리를 포함하는 메모리 시스템(130)이 호스트(110)의 기억장치로 사용되는 경우, 상기 이레이즈 특성으로 인해 하드디스크용 파일 시스템을 그대로 활용할 수 없다. 따라서 상기 파일 시스템과 플래시 메모리 사이에 플래시 변환 계층(Flash Translation Layer: FTL)이 사용된다. 플래시 메모리에 데이터를 라이트하기 위해서, FTL은 파일 시스템의 논리 어드레스(logical address)를 플래시 메모리의 물리 어드레스(physical address)로 매핑(mapping)할 수 있다.
컨트롤러(150)는 호스트 인터페이스(152), 프로세서(154), 메모리(156) 및 메모리 인터페이스(158)를 포함할 수 있다.
호스트 인터페이스(152)는 호스트(110)와 메모리 시스템(130) 사이의 인터페이싱을 지원할 수 있다. 호스트(110)와 메모리 시스템(130)은 예컨대 포트(port)를 통해 전기적으로 연결될 수 있다. 호스트 인터페이스(152)는 예컨대 PCI-E(Peripheral Component Interconnect-Express), SAS(Serial-attached SCSI), SATA(Serial Advanced Technology Attachment)와 같은 인터페이스 프로토콜을 사용하여 호스트(110)로부터 커맨드를 수신하고, 호스트(110)로 상기 커맨드를 전송할 수 있다. 그리고, 호스트 인터페이스(152)는 호스트(110) 및 메모리 시스템(130) 사이의 데이터 입출력을 지원할 수 있다.
메모리(156)는 메모리 시스템(130)의 동작 데이터를 저장할 수 있다. 메모리(156)는 상기 동작 데이터를 저장하기 위해 버퍼, 캐시, 큐 등을 포함할 수 있다.
메모리 인터페이스(158)는 컨트롤러(150)와 메모리 장치(170) 사이의 인터페이싱을 지원할 수 있다. 메모리 장치(170)가 플래시 메모리인 경우, 메모리 인터페이스 유닛(142)은 플래시 컨트롤러로서 프로세서(154)의 제어에 응하여 메모리 장치(170)의 제어 신호를 생성하여 메모리 장치(170)로 전송할 수 있다. 그리고, 메모리 인터페이스 유닛(142)은 컨트롤러(150)와 메모리 장치(170) 사이의 데이터 입출력을 지원할 수 있다.
메모리 인터페이스(158)는 메모리 장치(170)에 프로그램될 데이터에 패리티 비트를 부가하는 ECC 인코더(미도시) 및 상기 패리티 비트를 이용하여 메모리 장치(170)로부터 리드된 데이터의 에러를 검출 및 정정하는 ECC 디코더(미도시)를 포함할 수 있다.
프로세서(154)는 메모리 시스템(130)의 전반적인 동작을 제어할 수 있다.
구현에 따라, 호스트 인터페이스(152) 및 메모리 인터페이스(158)는 메모리(156)에 로드되어 프로세서(154)에서 구동될 수 있다. 다른 예로, 호스트 인터페이스(152) 및 메모리 인터페이스(158)는 FPGA(Field Programmable Gate Array)와 같은 하드웨어 장치로 구현될 수 있다.
한편, 메모리 시스템(130)은 오픈 채널 SSD(Open-channel SSD)일 수 있다. 오픈 채널 SSD는 호스트(110)가 오픈 채널 SSD의 자원을 효율적으로 이용할 수 있도록 내부의 정보를 호스트(110)에 공개할 수 있다. 예컨대, 상기 내부의 정보는 다이, 플레인, 블록, 페이지와 같은 계층 구조 정보를 포함할 수 있다.
오픈 채널 SSD를 저장 장치로 하는 호스트(110)는 FTL을 포함하며, 상기 공개된 내부의 정보에 기초하여 파일 시스템의 논리 어드레스를 메모리 장치(170)의 물리 어드레스로 직접 변환하여 메모리 장치(170)에 액세스할 수 있다. 본 명세서에서는 상기 FTL의 메타데이터를 FTL 메타데이터로 지칭한다. 상기 FTL 메타데이터는 물리 어드레스 대 논리 어드레스 사이의 맵 데이터 및 각 블록이 오픈 블록인지 여부와 같은 블록 상태 정보 등을 포함할 수 있다.
상기 오픈 채널 SSD를 저장 장치로 사용하는 호스트(110)는 상기 내부의 정보 및 FTL 메타데이터에 기초하여, 라이트 데이터가 한 페이지 크기가 될 때까지 내부 메모리에 상기 라이트 데이터를 버퍼링하고, 논리 어드레스를 물리 어드레스로 직접 매핑하고, 오픈 채널 SSD로 라이트 요청을 제공함으로써 해당 물리 어드레스에 데이터를 저장하도록 메모리 장치(170)를 제어할 수 있다.
본 명세서에서는 상기 오픈 채널 SSD와 같이, FTL 메타데이터를 호스트(110)에 공개하는 메모리 시스템을 오픈 채널 메모리 시스템으로 정의한다.
본 발명의 일 실시예에 따른 메모리 시스템(130)은 오픈 채널 메모리 시스템일 수 있다. 메모리 시스템(130)을 저장 장치로 사용하는 호스트(110)는 파일 시스템(112), FTL(114), 메모리(116) 및 장치 드라이버(118)를 포함할 수 있다.
파일 시스템(112)은 운영 체제(Operating System: OS)의 파일들을 관리할 수 있다. 파일 시스템(112)은 예컨대 논리 블록 주소 지정(Logical Block Addressing) 스킴을 사용하여 메모리 시스템(130)에 저장되는 데이터의 위치를 논리 어드레스로 지정할 수 있다.
상술한 바와 같이, FTL(114)은 FTL 메타데이터에 기초하여 논리 어드레스와 물리 어드레스 간의 어드레스 매핑을 수행하여 맵 데이터를 생성할 수 있다. 그리고 FTL(114)은 상기 FTL 메타데이터에 기초하여 파일 시스템(112)의 상기 논리 어드레스를 메모리 시스템(130)의 물리 어드레스로 변환할 수 있다.
FTL(114)은 메모리 장치(170)의 포그라운드 동작(foreground operation)을 제어하기 위해 리드 커맨드 및 라이트 커맨드를 생성할 수 있다.
FTL(114)은 메모리 장치(170)와 관련된 백그라운드 동작(background operation)을 수행할 수도 있다. FTL(114)은 메모리 블록들의 유효 페이지들을 프리 블록에 카피하고, 기존 메모리 블록들을 이레이즈하는 가비지 콜렉션 동작을 수행할 수 있다.
또한, FTL(114)은 메모리 블록들의 마모도가 균등하게 유지될 수 있도록 라이트 동작을 수행할 때 마모도가 낮은 블록이 우선적으로 할당되도록 상기 어드레스 매핑을 수행할 수 있다. 뿐만 아니라, FTL(114)은 배드 블록 관리를 수행함으로써 호스트(110)가 배드 블록에 액세스하지 않도록 상기 어드레스 매핑을 수행할 수 있다.
메모리(116)는 호스트(110)의 동작 데이터를 저장할 수 있다. 예컨대, 메모리(116)는 FTL(114)의 동작을 위해 메모리 장치(170)의 FTL 메타데이터를 저장할 수 있다.
장치 드라이버(118)는 호스트(110)에 접속된 메모리 시스템(130)을 제어할 수 있다. 예컨대, 장치 드라이버(118)는 FTL(114)에서 생성된 커맨드를 메모리 시스템(130)으로 전송함으로써 메모리 장치(170)의 리드 및 라이트 동작을 제어할 수 있다. 장치 드라이버(118)는 호스트 인터페이스(152)와 같은 인터페이스 프로토콜을 사용하여 호스트(110) 및 메모리 시스템(130) 사이의 데이터 입출력을 지원할 수 있다.
구현에 따라, 파일 시스템(112), FTL(114) 및 장치 드라이버(118)는 호스트(110)의 메모리(116)에 로드되어 호스트(110)의 프로세서(미도시)에서 구동될 수 있다. 다른 예로, 파일 시스템(112), FTL(114) 및 장치 드라이버(118)는 FPGA와 같은 하드웨어 장치로 구현될 수 있다.
도 2는 다중 포트(Multi-port)를 지원하는 오픈 채널 메모리 시스템을 포함하는 데이터 처리 시스템(100)의 일 예를 개략적으로 도시한 도면이다.
데이터 처리 시스템(100)은 메모리 시스템(130) 및 복수의 호스트를 포함할 수 있다. 메모리 시스템(130)은 컨트롤러(150) 및 메모리 장치(170)를 포함할 수 있다.
구현에 따라, 메모리 시스템(130)은 다중 포트를 지원하는 오픈 채널 메모리 시스템일 수 있다.
메모리 시스템(130)은 다중 포트를 지원하므로, 복수의 프로세서 각각이 다중 포트 각각에 독립적으로 연결되어 메모리 시스템(130)의 자원을 공유할 수 있다.
예컨대, 메모리 시스템(130)은 듀얼 포트를 지원할 수 있다. 도 2를 참조하면, 제1 호스트(110a) 및 제2 호스트(110b)가 듀얼 포트 각각에 독립적으로 연결되어 메모리 시스템(130)의 자원을 공유할 수 있다.
한편, 메모리 시스템(130)은 오픈 채널 메모리 시스템이므로, 복수의 호스트 각각이 물리 어드레스를 이용하여 메모리 장치(170)에 액세스할 수 있다. 각 호스트가 독립적으로 어드레스 변환을 수행하여 메모리 장치(170)에 액세스하기 위해, 제1 호스트(110a)는 제1 FTL(114a)을 포함하고, 제2 호스트(110b)는 제2 FTL(114b)을 포함할 수 있다.
제1 호스트(110a)의 FTL이 메모리 시스템(130)에 데이터를 라이트하기 위해 논리 어드레스를 물리 어드레스로 매핑하면 FTL 메타데이터가 변경될 수 있다. 본 명세서에서는 상기 FTL 메타데이터의 변경된 부분을 갱신 FTL 메타데이터로 지칭한다. 제2 호스트(110b)의 내부 FTL 메타데이터에 상기 갱신 FTL 메타데이터가 반영되지 않으면, 제2 호스트(110b)는 의도치 않은 데이터를 리드하거나, 이미 데이터가 라이트된 메모리 영역에 라이트 동작을 수행하는 오류를 일으킬 수 있다.
본 발명의 일 실시예에 따르면, 메모리 시스템(130)은 복수의 호스트에 의한 라이트 동작이 동시에 수행되지 않도록 제어할 수 있다. 구체적으로, 메모리 시스템(130)은 복수의 호스트 중 예컨대 제1 호스트(110a)로부터의 라이트 잠금 요청을 수신하면, 메모리 장치(170)의 잠금 상태에 기초하여 라이트 잠금을 설정하고, 제1 호스트(110a)로부터 라이트 요청을 수신하여 라이트 동작을 수행할 수 있다.
메모리 시스템(130)은 상기 라이트 잠금이 설정된 경우, 제2 호스트(110b)로부터 라이트 또는 리드 잠금 요청을 수신하더라도 상기 라이트 잠금이 해제되기 전까지는 상기 라이트 또는 리드 잠금 요청을 차단할 수 있다. 그리고, 메모리 시스템(130)은 상기 라이트 동작이 완료되면, 상기 라이트 잠금을 해제하고, 상기 복수의 호스트와 메모리 시스템(130)의 내부 FTL 메타데이터를 동기화할 수 있다.
따라서, 메모리 시스템(130)은 복수의 호스트에서 동시에 라이트 동작이 수행되거나, 라이트 동작과 리드 동작이 동시에 수행되는 일을 방지할 수 있다. 그리고, 복수의 호스트 각각의 FTL 메타데이터를 동기화함으로써 각 호스트가 의도치 않은 데이터를 리드하거나, 이미 데이터가 라이트된 메모리 영역에 라이트 동작을 수행하는 오류를 방지할 수 있다. 따라서, 데이터 처리 시스템(100)의 신뢰성이 향상될 수 있다.
도 3은 본 발명의 일 실시예에 따른 데이터 처리 시스템(100)의 구조를 개략적으로 나타낸 도면이다.
데이터 처리 시스템(110)은 메모리 시스템(130) 및 메모리 시스템(130)에 각각 연결된 복수의 호스트를 포함할 수 있다. 설명의 편의를 위해, 도 3은 제1 호스트(110a) 및 제2 호스트(110b)만이 연결된 메모리 시스템(130)을 예시하고 있다.
제1 호스트(110a)는 제1 파일 시스템(112a), 제1 FTL(114a), 제1 장치 드라이버(118a) 및 제1 메모리(116a) 를 포함할 수 있다. 제1 파일 시스템(112a), 제1 FTL(114a) 및 제1 장치 드라이버(118a)는 각각 도 1에서 설명된 파일 시스템(112), FTL(114), 장치 드라이버(118)와 대응할 수 있다.
제1 메모리(116a)는 제1 호스트(110a)의 동작 데이터를 저장할 수 있다. 구체적으로, 제1 메모리(116a)는 제1 FTL(114a)의 어드레스 변환을 위해 FTL 메타데이터(FTL metadata)를 저장할 수 있다. 그리고, 제1 파일 시스템(112a), 제1 FTL(114a) 및 제1 장치 드라이버(118a)는 제1 메모리(116a)에 로드되어 제1 호스트(110a) 내부의 프로세서(미도시)에서 구동될 수 있다.
제2 호스트(110b)는 제2 파일 시스템(112a), 제2 FTL(114b), 제2 장치 드라이버(118a) 및 제2 메모리(116b) 를 포함할 수 있다. 제2 파일 시스템(112a), 제2 FTL(114b), 제2 장치 드라이버(118a) 및 제2 메모리(116b)는 각각 도 1에서 설명된 파일 시스템(112), FTL(114), 메모리(116) 및 장치 드라이버(118)와 대응할 수 있다.
메모리 시스템(130)은 오픈 채널 메모리 시스템으로서, 멀티 포트를 지원할 수 있다. 메모리 시스템(130)은 메모리 장치(170) 및 메모리 장치(170)를 제어하는 컨트롤러(150)를 포함할 수 있다.
컨트롤러(150)는 호스트 인터페이스(152), 프로세서(154), 메모리(156), 메모리 인터페이스(158), 잠금 관리부(160) 및 동기화 관리부(162)를 포함할 수 있다. 호스트 인터페이스(152), 프로세서(154), 메모리(156) 및 메모리 인터페이스(158)는 도 1을 참조하여 설명된 것과 대응한다.
메모리 장치(170)는 도 1을 참조하여 설명된 것과 대응한다. 메모리 장치(170)는 FTL 메타데이터를 저장할 수 있다. 메모리 장치(170)는 자신의 현재 맵 데이터 및 블록 상태 정보를 반영하는 FTL 메타데이터를 저장할 수 있다. 그리고, 메모리 장치(170)는 비휘발성 메모리 장치로서, 데이터 처리 시스템(100)의 전원 공급이 중단된 경우도 상기 FTL 메타데이터를 유지할 수 있다.
잠금 관리부(160)는 각 호스트의 잠금 요청에 응하여 메모리 장치(170)에 라이트 잠금 또는 리드 잠금을 설정할 수 있다. 어느 하나의 호스트의 라이트 잠금이 설정되면, 컨트롤러(150)는 해당 호스트의 라이트 요청만을 허용할 수 있다. 적어도 어느 하나의 호스트의 리드 잠금이 설정되면 컨트롤러(150)는 해당 호스트의 리드 요청 수신만을 허용할 수 있다.
잠금 관리부(160)는 메모리 장치(170)의 동일한 메모리 영역에서는 동시에 하나의 라이트 잠금만을 설정할 있다. 즉, 잠금 관리부(160)는 동일한 메모리 영역에 동시에 복수의 라이트 동작이 수행되지 않도록 제어할 수 있다.
잠금 관리부(160)는 동일한 메모리 영역에 리드 잠금 및 라이트 잠금이 동시에 설정되지 않도록 할 수 있다. 즉, 잠금 관리부(160)는 동일한 메모리 영역에 라이트 동작 및 리드 동작이 동시에 수행되지 않도록 제어할 수 있다.
잠금 관리부(160)는 동일한 메모리 영역에 동시에 둘 이상의 리드 잠금을 설정할 있다. 즉, 잠금 관리부(160)는 동일한 메모리 영역에 동시에 복수의 리드 동작이 수행되는 것은 허용할 수 있다.
일 실시예에서, 상기 메모리 영역은 메모리 장치(170) 전부에 해당할 수 있다. 즉, 잠금 관리부(160)는 메모리 장치(170)에 라이트 동작이 수행되는 중에 메모리 장치(170)에 라이트 동작 및 리드 동작이 동시에 수행되지 않도록 제어할 수 있다. 잠금 관리부(160)가 각 호스트의 잠금 요청에 응하여 메모리 장치(170) 전부에 라이트 잠금 또는 리드 잠금을 설정하는 일 예는 도 4a 내지 도 6b을 참조하여 후술된다.
일 실시예에서, 메모리 장치(170)는 복수의 메모리 영역을 포함할 수 있다. 일 예로, 메모리 영역이 하나의 블록에 대응하는 경우, 잠금 관리부(160)는 메모리 장치(170)의 어떤 블록에 라이트 동작이 수행되는 중이라면 동일 블록에 라이트 동작 및 리드 동작이 수행되지 않도록 하되, 다른 블록에 라이트 동작 및 리드 동작이 수행되는 것은 허용할 수 있다. 잠금 관리부(160)가 메모리 장치(170)의 각 영역별로 라이트 잠금 또는 리드 잠금을 설정하는 일 예는 도 7을 참조하여 후술된다.
동기화 관리부(162)는 복수의 호스트와 메모리 시스템(130)의 FTL 메타데이터의 동기화를 제어할 수 있다. 예컨대, 동기화 관리부(162)는 예컨대 제1 호스트(110a)의 라이트 요청에 응하여 메모리 시스템(130)의 라이트 동작이 완료되어 라이트 잠금이 해제되면 복수의 호스트 각각으로 상기 라이트 잠금 해제 신호를 전송할 수 있다. 필요한 경우 동기화 관리부(162)는 상기 라이트 동작에 의해 갱신된 FTL 메타데이터를 제2 호스트(110b)로 전송할 수 있다.
도 4a 및 도 4b는 본 발명의 일 실시예에 따른 데이터 처리 시스템(100)의 부팅 동작을 설명하기 위한 도면이다.
도 4a는 도 3을 참조하여 설명된 데이터 처리 시스템(100)의 부팅 동작을 예시하는 흐름도이다.
도 4b는 도 3을 참조하여 설명된 데이터 처리 시스템(100)에 저장될 수 있는 초기 데이터를 개략적으로 나타내는 도면이다. 구체적으로, 도 4b는 제1 호스트(110a)에 포함된 제1 메모리(116a), 제2 호스트(110b)에 포함된 제2 메모리(116b), 메모리 시스템(130)의 컨트롤러(150)에 포함된 메모리(156) 및 메모리 장치(170)에 저장될 수 있는 데이터의 일부를 예시한다. 데이터 처리 시스템(100)에 포함될 수 있는 다른 구성은 도 4b에서 생략되었다.
도 4a를 참조하면, 단계 S402에서 데이터 처리 시스템(100)에 전원이 인가되면 제1 호스트(110a)는 내부 롬(ROM, Read-only Memory)(미도시)에 저장된 부트로더에 포함된 커맨드에 응하여 내부 시스템을 초기화할 수 있다. 제1 호스트(110a)는 자신이 메모리 시스템(130)과 정상적으로 연결되었는지 확인할 수 있다.
단계 S404에서, 제1 호스트(110a)는 비휘발성 스토리지, 예컨대 메모리 시스템(130)으로부터 부트이미지를 수신할 수 있다. 상기 부트이미지는 제1 파일 시스템(112a), 제1 FTL(114a) 및 제1 장치 드라이버(116a)를 구동하기 위한 커맨드 및 데이터를 포함할 수 있다.
단계 S406에서, 제1 호스트(110a) 내부의 프로세서(미도시)는 상기 부트이미지에 포함된 커맨드에 응하여 운영 체제를 구동할 수 있다. 운영 체제는 도 3을 참조하여 설명된 제1 파일 시스템(112a), 제1 FTL(114a), 제1 장치 드라이버(118a)를 포함할 수 있다.
단계 S402 내지 단계 S406에서 설명된 제1 호스트(110a)의 동작과 마찬가지로, 단계 S408 내지 단계 S412에서 제2 호스트(110b)는 내부 시스템을 초기화하고, 메모리 시스템(130)으로부터 부트이미지를 수신하고, 상기 수신된 부트이미지에 기초하여 제2 파일 시스템(112a), 제2 FTL(114b), 제2 장치 드라이버(118a)를 포함하는 운영 체제를 구동할 수 있다.
단계 S414에서, 메모리 시스템(130)은 상기 제1 및 제2 호스트(110b)로부터 수신한 호스트 정보에 기초하여 현재 연결중인 호스트 정보를 메모리(156)에 저장할 수 있다.
단계 S416에서, 메모리 시스템(130)은 잠금 관리부(160) 및 동기화 관리부(162) 등 내부 구성요소들을 구동할 수 있다. 일 예로, 호스트 인터페이스(152), 메모리 인터페이스(158), 잠금 관리부(160) 및 동기화 관리부(162)가 펌웨어로 구현되어 프로세서(154)에서 구동될 수 있다.
단계 S418에서, 메모리 시스템(130)은 메모리 장치(170)에 저장된 FTL 메타데이터의 버전 값을 초기화할 수 있다.
FTL 메타데이터의 버전 값은 각 호스트에서 변경되는 FTL 메타데이터를 동기화하기 위한 수단이다. 각 호스트는 내부 메모리에 저장된 FTL 메타데이터의 버전 값을 메모리(156)에 저장된 버전 값과 비교함으로써 호스트 내부의 FTL 메타데이터가 최신 버전인지 확인할 수 있다. 상기 호스트 내부의 FTL 메타데이터가 최신 버전이 아니면 FTL 메타데이터를 동기화할 수 있다.
도 4b를 참조하면, 메모리(156)에 호스트 상태 정보로서 상기 제1 및 제2 호스트(110a, 110b)의 활성화 여부를 나타내는 데이터, FTL 메타데이터의 초기화된 버전 값이 저장될 수 있다. 잠금 상태(lock status)는 메모리 시스템(130)에 리드 잠금 및 라이트 잠금이 설정되었는지 여부를 나타내는 데이터이다.
다시 도 4a를 참조하면, 단계 S420 및 단계 S422에서 메모리 시스템(130)은 메모리 장치(170) 내부에 저장된 FTL 메타데이터 및 이의 버전 값을 제1 및 제2 호스트(110a, 110b)로 전송할 수 있다.
도 4b를 참조하면, 제1 및 제2 메모리(116a, 116b)는 메모리 시스템(130)으로부터 수신한 상기 FTL 메타데이터를 이의 버전 값과 함께 저장할 수 있다.
도 4a 및 도 4b에서 설명된 부팅 동작을 수행한 이후 도 5a 내지 도 7을 참조하여 후술되는 바와 같이 메모리 시스템(130)에 연결된 복수의 호스트 각각의 FTL 메타데이터가 동기화되어 동작할 수 있다.
도 5a 내지 5d는 본 발명의 일 실시예에 따른 데이터 처리 시스템(100)의 라이트 동작을 설명하기 위한 도면이다.
도 5a는 도 3을 참조하여 설명된 데이터 처리 시스템(100)의 라이트 동작을 예시하는 흐름도이다.
단계 S502에서, 제1 호스트(110a) 내부에서 라이트 데이터가 발생하면 제1 파일 시스템(112a)은 제1 메모리(116a)의 라이트 버퍼에 상기 라이트 데이터를 버퍼링할 수 있다. 설명의 편의를 위하여 제1 호스트(110a) 내부에서 생성되는 라이트 데이터를 제1 라이트 데이터로 지칭한다.
단계 S504에서, 상기 제1 라이트 데이터가 라이트 동작을 수행하기에 충분한 크기로 버퍼링되면 제1 FTL(114a)은 상기 제1 라이트 데이터를 라이트할 논리 어드레스 및 물리 어드레스 간 매핑을 수행하여 제1 맵 데이터를 생성할 수 있다. 예컨대, 상기 라이트 동작을 수행하기에 충분한 크기는 메모리 장치(170)의 한 페이지 크기일 수 있다. 또 하나의 예로, 상기 라이트 동작을 수행하기에 충분한 크기는 슈퍼블록에 포함된 블록의 개수, 원 샷 프로그램을 수행하는 페이지 수 및 상기 한 페이지 크기에 기초하여 결정될 수 있다.
필요한 경우, 예컨대 오픈 블록을 클로즈하고 새로운 오픈 블록에 상기 제1 라이트 데이터를 라이트하고자 하는 경우, 제1 FTL(114a)은 블록 상태 정보를 갱신할 수 있다.
단계 S506에서, 제1 FTL(114a)은 제1 장치 드라이버(118a)를 통해 메모리 시스템(130)으로 제1 라이트 잠금 요청을 전송할 수 있다.
단계 S508에서, 메모리 시스템(130)의 잠금 관리부(160)는 상기 제1 라이트 잠금 요청에 응하여, 메모리 장치(170)의 잠금 상태를 판단할 수 있다. 잠금 관리부(160)는 상기 잠금 상태를 판단하기 위해 메모리(156)에 액세스할 수 있다.
단계 S508의 판단 결과 리드 잠금 및 라이트 잠금 중 어느 하나의 잠금이 이미 설정된 경우, 메모리 시스템(130)은 상기 잠금이 해제되기 전까지는 제1 라이트 잠금 요청에 응하여 라이트 잠금을 설정하지 않을 수 있다. 잠금이 설정된 상태에서 메모리 시스템(130)이 라이트 잠금 요청을 수신한 경우의 동작은 단계 S534 내지 단계 S566에서 자세히 설명된다.
단계 S508의 판단 결과 리드 잠금 및 라이트 잠금이 설정되지 않은 경우, 단계 S510에서 잠금 관리부(160)는 제1 라이트 동작을 수행하기 위해 라이트 잠금을 설정할 수 있다. 제1 호스트(110a)로부터의 라이트 잠금 요청에 응하여 라이트 잠금이 설정되었으므로, 컨트롤러(150)는 제1 호스트(110a)로부터의 라이트 요청 수신만을 허용할 수 있다.
단계 S512에서, 잠금 관리부(160)는 호스트 인터페이스(152)를 통해 제1 호스트(110a)로 라이트 잠금이 설정된 것을 알리는 라이트 잠금 설정 신호를 전송할 수 있다.
단계 S514에서, 상기 제1 FTL(114a)은 제1 장치 드라이버(118a)를 통해 상기 제1 라이트 데이터를 메모리 장치(170)에 라이트하라는 제1 라이트 요청을 메모리 시스템(130)으로 전송할 수 있다.
구체적으로, 상기 제1 라이트 요청은 제1 라이트 커맨드, 상기 제1 라이트 데이터 및 제1 갱신 FTL 메타데이터를 포함할 수 있다. 상기 제1 갱신 FTL 메타데이터는 제1 호스트(110a)의 FTL 메타데이터에서 상기 제1 라이트 데이터를 라이트하기 위해 변경된 부분이다. 상기 제1 갱신 FTL 메타데이터는 상기 제1 맵 데이터를 포함할 수 있고, 블록 상태 정보가 갱신된 경우 상기 블록 상태 정보의 변경된 부분도 포함할 수 있다.
단계 S516에서 프로세서(154)는 메모리 인터페이스(158)를 통해 상기 제1 라이트 커맨드, 상기 제1 갱신 FTL 메타데이터에 포함된 물리 어드레스 및 제1 라이트 데이터를 메모리 장치(170)로 전송할 수 있다.
도 5b는 단계 S502 내지 단계 S516의 동작이 수행된 이후 데이터 처리 시스템(100)에 저장될 수 있는 데이터를 예시한다.
메모리(156)의 잠금 상태(lock status)를 참조하면, 제1 호스트(110a)의 라이트 잠금이 설정되어 있을 수 있다. 메모리(156)를 참조하면, FTL 메타데이터 버전(FTL metadata version) 값은 1일 수 있다. 즉, 상기 제1 FTL 메타데이터가 수신되었으나, 아직 상기 제1 라이트 동작이 수행되지 않아서 메모리 시스템(130)에 상기 제1 갱신 FTL 메타데이터가 반영되지 않았을 수 있다. 제1 및 제2 메모리(116a, 116b)의 내부의 FTL 메타데이터도 제1 버전일 수 있다.
단계 S518에서 메모리 장치(170)는 상기 제1 라이트 커맨드에 응하여 상기 물리 어드레스에 상기 제1 라이트 데이터를 라이트할 수 있다.
제1 라이트 동작이 종료되면, 단계 S520에서 메모리 장치(170)는 메모리 인터페이스(158)를 통해 컨트롤러(150)로 라이트 동작 종료 신호를 전송할 수 있다. 라이트 동작 종료 신호는 라이트 동작 성공 신호 및 라이트 동작 실패 신호 중 어느 하나를 포함할 수 있다.
컨트롤러(130)가 라이트 동작 성공 신호를 수신하면 동기화 관리부(162)는 메모리 장치(170)에 저장된 FTL 메타데이터에 상기 제1 FTL 메타데이터를 반영하고, 메모리(156)에 저장된 FTL 메타데이터의 버전 값을 변경할 수 있다.
도 5c는 단계 S518이 수행된 경우에 데이터 처리 시스템(100)에 저장될 수 있는 데이터를 예시하고 있다. 메모리(156)를 참조하면, 메모리 장치(170)에 저장된 FTL 메타데이터가 갱신되고, FTL 메타데이터의 버전 값이 변경될 수 있다. 한편, 제1 메모리(116a)에 저장된 FTL 메타데이터의 버전 값은 변경되지 않을 수 있다.
제1 라이트 동작이 실패한 경우 메모리 장치(170)에 저장된 FTL 메타데이터는 변경되지 않을 수 있다. 따라서 상기 제1 라이트 동작이 실패한 경우 FTL 메타데이터의 버전 값은 변경되지 않을 수 있다.
단계 S522에서, 잠금 관리부(160)는 제1 호스트(110a)의 라이트 잠금을 해제할 수 있다.
단계 S524 및 단계 S526에서, 동기화 관리부(162)는 제1 호스트(110a) 및 제2 호스트(110b)로 라이트 잠금이 해제된 것을 알리는 라이트 잠금 해제 신호를 전송할 수 있다.
단계 S528에서, 제1 호스트(110a)는 상기 라이트 잠금 해제 신호에 응하여 제1 메모리(116a)에 저장된 FTL 메타데이터의 버전 값과 메모리(156)에 저장된 FTL 메타데이터의 버전 값이 일치하는지 판단할 수 있다. 버전 값이 일치하지 않는 경우, FTL 메타데이터가 갱신되었으므로 제1 갱신 메타데이터를 제1 메모리(116a)에 저장된 FTL 메타데이터에 반영하고, 제1 메모리(116a)에 저장된 버전 값을 메모리(156)에 저장된 버전 값과 일치시킬 수 있다.
단계 S530에서, 제2 호스트(110b)는 상기 라이트 잠금 해제 신호에 응하여 제2 메모리(116b)에 저장된 FTL 메타데이터와 메모리(156)에 저장된 FTL 메타데이터의 버전 값이 일치하는지 판단할 수 있다. 버전 값이 일치하지 않는 경우, 제2 호스트(110b)는 단계 S532에서 메모리 시스템(130)으로부터 제1 갱신 FTL 메타데이터를 수신하여 상기 제2 메모리(116b)에 저장된 FTL 메타데이터에 반영하고, 제2 메모리(116b)에 저장된 버전 값을 메모리(156)에 저장된 버전 값과 일치시킬 수 있다.
한편, FTL 메타데이터 중 맵 데이터는 자주 변경될 수 있고, 블록 상태 정보는 드물게 변경될 수 있다. 일 실시예에서, 동기화 관리부(162)는 상기 맵 데이터와 블록 상태 정보가 각각 변경되었는지 여부에 따라 각각의 버전 값을 독립적으로 변경할 수 있다. 제1 및 제2 호스트(110a, 110b)는 상기 맵 데이터와 블록 상태 정보의 버전 값을 메모리(156)에 저장된 버전 값들과 각각 비교하고, 맵 데이터와 블록 상태 정보를 독립적으로 동기화할 수 있다.
도 5d는 단계 S532의 동작이 종료된 이후 데이터 처리 시스템(100)에 저장될 수 있는 데이터를 예시하고 있다. 메모리(156)를 참조하면, 라이트 잠금은 해제될 수 있다. 제1 및 제2 메모리(116a, 116b)를 참조하면, 메모리 시스템(130)에서 제1 갱신 FTL 메타데이터가 각각 상기 제1 및 제2 메모리(116a, 116b)에 반영되어 FTL 메타데이터 버전 값이 변경될 수 있다.
한편, 제2 호스트(110b)는 제1 호스트(110a)와 독립적으로 동작하여 제2 라이트 데이터를 생성할 수 있다. 단계 S534에서 제2 파일 시스템(112a)은 상기 제2 라이트 데이터를 제2 메모리(116b)에 버퍼링하고, 단계 S536에서, 제2 FTL(114b)은 상기 제2 라이트 데이터를 라이트할 논리 어드레스 및 물리 어드레스 간 매핑을 수행하고, 제2 갱신 FTL 메타데이터를 생성할 수 있다.
단계 S538에서, 제2 FTL(114b)은 제2 장치 드라이버(118a)를 통해 메모리 시스템(130)으로 제2 라이트 잠금 요청을 전송할 수 있다.
단계 S540에서, 잠금 관리부(160)는 상기 제2 라이트 잠금 요청에 응하여 메모리(156)에 저장된 메모리 장치(170)의 잠금 상태를 판단할 수 있다. 단계 S538의 동작이 제1 호스트(110a) 및 메모리 시스템(130)이 단계 S510 내지 단계 S522의 동작을 수행하는 중에 수행된 경우, 잠금 관리부(160)는 메모리 장치(170)에 잠금이 설정되어 있는 것으로 판단할 수 있다.
본 발명의 일 실시예에 따르면, 단계 S542에서 잠금 관리부(160)는 상기 제2 라이트 잠금 요청을 메모리(156)에 큐잉하고 라이트 잠금이 해제될 때까지 대기할 수 있다.
단계 S522에서 라이트 잠금을 해제하고 단계 S524, 단계 S526 및 단계 S532에서 각 호스트로 신호를 전송한 이후, 단계 S544에서 잠금 관리부(160)는 상기 큐잉된 제2 라이트 잠금 요청에 응하여 라이트 잠금을 설정할 수 있다. 제2 호스트(110b)의 라이트 잠금 요청에 응하여 라이트 잠금이 설정되었으므로 컨트롤러(150)는 제2 호스트(110b)로부터의 라이트 요청 수신만을 허용할 수 있다.
단계 S546에서, 잠금 관리부(160)는 호스트 인터페이스(152)를 통해 상기 제2 호스트(110b)로 라이트 잠금 설정 신호를 전송할 수 있다.
단계 S548에서, 상기 제2 호스트(110b)는 제2 라이트 요청을 메모리 시스템(130)으로 전송할 수 있다. 상기 제2 라이트 요청은 제2 라이트 커맨드, 상기 제2 라이트 데이터 및 제2 갱신 FTL 메타데이터를 포함할 수 있다. 상기 제2 갱신 FTL 메타데이터는 단계 S536에서 갱신된 FTL 메타데이터일 수 있다. 그러나, 단계 S530에서 상기 제2 호스트(110b) 내부의 FTL 메타데이터는 갱신되었으므로, 필요한 경우 상기 제2 FTL(114b)은 어드레스 매핑을 다시 수행하여 제2 갱신 FTL 메타데이터를 다시 생성할 수 있다.
단계 S550 내지 단계 S566은, 단계 S516 내지 단계 S532와 대응할 수 있다. 요컨대, 단계 S550 내지 단계 S566에서 메모리 시스템(130)은 상기 제2 라이트 커맨드에 응하여 상기 제2 FTL 메타데이터에 포함된 물리 어드레스에 상기 제2 라이트 데이터를 라이트하고, 라이트 동작이 완료되면 라이트 잠금을 해제할 수 있다. 메모리 시스템(130)이 라이트 잠금 해제 신호를 복수의 호스트로 각각 전송하면, 각 호스트는 FTL 메타데이터의 버전 값을 비교하여 FTL 메타데이터를 동기화할 수 있다.
한편, 본 발명의 일 실시예에 따르면, 단계 S540의 판단 결과 잠금 관리부(160)가 메모리 시스템(130)에 잠금이 설정되어 있는 경우, 단계 S542와 같이 라이트 잠금 요청을 큐잉하는 대신 상기 제2 호스트(110b)로 라이트 잠금 실패 신호를 전송할 수 있다. 이후, 상기 제2 호스트(110b)는 제2 라이트 잠금 요청을 다시 전송할 수 있다.
본 발명의 일 실시예에 따르면, 단계 S540에서 잠금 관리부(160)가 메모리 장치(170)에 잠금이 설정되어 있는 것으로 판단한 경우, 단계 S542의 동작 및 라이트 잠금 실패 신호를 전송하는 동작을 소정 기준에 따라 선택적으로 수행할 수 있다.
예컨대, 잠금 관리부(160)는 라이트 잠금이 해제되기까지의 예상 소요 시간이 임계치 미만인 경우 단계 S542의 동작을 수행하고, 상기 예상 소요 시간이 임계치 이상인 경우 상기 제2 호스트(110b)로 라이트 잠금 실패 신호를 전송할 수 있다.
잠금 관리부(160)는 라이트 데이터의 크기 및 가비지 콜렉션에 소요되는 시간 등에 기초하여 라이트 시간을 결정할 수 있다. 잠금 관리부(160)는 상기 라이트 시간, 메모리 시스템(130)의 라이트 동작이 시작된 시각 및 현재 시각에 기초하여 상기 예상 소요 시간을 계산할 수 있다.
도 6a 내지 도 6b는 본 발명의 일 실시예에 따른 데이터 처리 시스템(100)의 리드 동작을 설명하기 위한 도면이다.
도 6a는 도 3을 참조하여 설명된 데이터 처리 시스템(100)의 리드 동작을 예시하는 흐름도이다.
제1 파일 시스템(112a)이 메모리 시스템(130)에 저장된 데이터를 리드하고자 하는 경우, 단계 S602에서 제1 FTL(114a)은 FTL 메타데이터를 참조하여 리드하고자 하는 데이터의 논리 어드레스를 물리 어드레스로 변환할 수 있다. 설명의 편의를 위하여 상기 물리 어드레스를 제1 물리 어드레스로 지칭한다.
단계 S604에서, 제1 FTL(114a)은 제1 장치 드라이버(118a)를 통해 메모리 시스템(130)으로 제1 라이트 잠금 요청을 전송할 수 있다.
단계 S606에서, 잠금 관리부(160)는 메모리(156)의 잠금 상태에 기초하여 현재 메모리 시스템(130)에 잠금이 설정되어 있는지 판단할 수 있다.
단계 S606의 판단 결과 메모리 시스템(130)에 라이트 잠금이 설정된 경우, 메모리 시스템(130)은 상기 라이트 잠금이 해제되기 전까지는 제1 호스트(110a)의 리드 동작을 허용하지 않을 수 있다.
메모리 시스템(130)에 라이트 잠금이 설정된 경우, 실시예에 따라 잠금 관리부(160)는 호스트로 리드 잠금 실패 신호를 전송할 수도 있고, 상기 제1 리드 잠금 요청을 큐잉할 수도 있다. 실시예에 따라, 잠금 관리부(160)는 상기 리드 잠금 실패 신호를 전송하는 동작 및 제1 리드 잠금 요청을 큐잉하는 동작을 소정 기준에 따라 선택적으로 수행할 수 있다. 예컨대, 상기 소정 기준은 라이트 잠금이 해제되기까지의 예상 소요 시간이 임계치 미만인지 여부일 수 있다.
반면에, 단계 S606의 판단 결과 리드 잠금이 설정되거나 어떠한 잠금도 설정되지 않은 경우, 메모리 시스템(130)은 단계 S608에서 상기 제1 리드 잠금 요청에 응하여 제1 호스트(110a)의 리드 잠금을 설정할 수 있다. 상기 리드 잠금이 설정되면 컨트롤러(150)는 제1 호스트(110a)로부터의 리드 요청 수신만을 허용할 수 있다.
단계 S610에서, 잠금 관리부(160)는 호스트 인터페이스(152)를 통해 상기 제1 호스트(110a)로 리드 잠금이 설정된 것을 알리는 리드 잠금 설정 신호를 전송할 수 있다.
단계 S612에서, 제1 FTL(114a)은 제1 장치 드라이버(118a)를 통해 상기 제1 물리 어드레스에 저장된 데이터의 리드 동작을 수행하라는 제1 리드 요청을 메모리 시스템(130)으로 전송할 수 있다. 상기 제1 리드 요청은 제1 리드 커맨드 및 상기 제1 물리 어드레스를 포함할 수 있다.
단계 S614에서, 프로세서(154)는 메모리 인터페이스(158)를 통해 메모리 장치(170)로 제1 리드 커맨드 및 제1 물리 어드레스를 전송할 수 있다.
단계 S616에서, 메모리 장치(170)는 제1 리드 커맨드에 응하여 제1 물리 어드레스에 저장된 제1 리드 데이터를 리드할 수 있다.
단계 S616에서 메모리 장치(170)가 제1 리드 데이터를 성공적으로 리드하면, 단계 S618에서 메모리 장치(170)는 상기 제1 리드 데이터를 컨트롤러(150)로 전송할 수 있다.
단계 S620에서, 메모리 인터페이스(158)는 상기 제1 리드 데이터를 메모리(156)에 버퍼링할 수 있다.
단계 S622에서, 프로세서(154)는 제1 리드 데이터를 제1 호스트(110a)로 전송할 수 있다.
단계 S624에서, 잠금 관리부(160)는 제1 호스트(110a)의 리드 잠금을 해제할 수 있다.
한편, 단계 S616에서 메모리 장치(170)가 제1 리드 데이터를 리드하는 데 실패하면, 프로세서(154)는 실패 신호를 제1 호스트(110a)로 전송하고, 단계 S624에서 잠금 관리부(160)는 제1 호스트(110a)의 리드 잠금을 해제할 수 있다.
한편, 제2 호스트(110b)도 제1 호스트(110a)와 독립적으로 동작하여 제2 리드 커맨드를 생성할 수 있다. 단계 S626에서 제2 FTL(114b)은 FTL 메타데이터를 참조하여 리드하고자 하는 데이터의 논리 어드레스를 물리 어드레스로 변환할 수 있다. 설명의 편의를 위하여 상기 물리 어드레스를 제2 물리 어드레스로 지칭한다.
단계 S628에서, 제2 장치 드라이버(118a)는 메모리 시스템(130)으로 제2 리드 잠금 요청을 전송할 수 있다.
단계 S630에서, 잠금 관리부(160)는 메모리(156)의 잠금 상태에 기초하여 현재 메모리 시스템(130)에 잠금 상태가 설정되어 있는지 판단할 수 있다.
단계 S608 내지 단계 S624의 동작을 수행하는 도중 제2 리드 잠금 요청을 수신한 경우, 잠금 관리부(160)는 제1 호스트(110a)의 리드 잠금이 설정된 것으로 판단할 수 있다. 리드 동작을 수행하는 경우는 FTL 메타데이터가 변경될 우려가 없으므로, 제1 리드 커맨드 동작을 수행하는 도중에 제2 리드 커맨드 동작이 수행되어도 무방하다.
따라서 단계 S632에서, 잠금 관리부(160)는 제2 호스트(110b)의 리드 잠금을 설정할 수 있다. 단계 632에서, 제1 및 제2 호스트(110a, 110b)의 리드 잠금이 설정되어 있으므로 컨트롤러(150)는 제1 및 제2 호스트(110a, 110b)의 리드 요청 수신만을 허용할 수 있다.
도 6b는 단계 S632의 동작이 수행된 이후 데이터 처리 시스템(100)에 저장된 데이터를 예시하고 있다. 메모리(156)의 잠금 상태(lock status)를 참조하면, 제1 및 제2 호스트(110b)의 리드 잠금이 설정되어 있다.
단계 S634에서, 잠금 관리부(160)는 제2 호스트(110b)로 리드 잠금 설정 신호를 전송할 수 있다.
단계 S636에서, 프로세서(154)는 메모리 장치(170)로 제2 리드 커맨드 및 제2 물리 어드레스를 전송할 수 있다.
단계 S638 내지 단계 S648은 단계 S614 내지 단계 S624와 대응할 수 있다. 요컨대, 단계 S638 내지 단계 S648에서, 메모리 장치(170)는 제2 리드 커맨드에 응하여 제2 물리 어드레스에 저장된 제2 리드 데이터를 리드하고, 상기 리드 동작이 성공적으로 완료되면, 제2 리드 데이터를 컨트롤러(150)로 전송할 수 있다. 메모리 인터페이스(158)는 상기 제2 리드 데이터를 메모리(156)에 버퍼링할 수 있다. 프로세서(154)가 상기 제2 리드 데이터를 제2 호스트(110b)로 전송하면, 잠금 관리부(160)는 제2 호스트(110b)의 리드 잠금을 해제할 수 있다.
설명의 편의를 위하여, 도 6a에서 메모리 장치(170)가 단계 S616의 제1 리드 동작이 완료된 이후 단계 S640의 제2 리드 동작을 수행하는 것처럼 도시되었다. 그러나 제1 및 제2 물리 어드레스가 서로 다른 다이에 속하는 등의 이유로 제1 리드 동작 및 제2 리드 동작을 병렬로 수행할 수 있는 경우, 메모리 장치(170)는 제1 리드 동작과 동시에 제2 리드 동작을 수행할 수도 있다.
한편, 제1 및 제2 물리 어드레스가 서로 동일할 수 있다. 일 실시예에서, 메모리 인터페이스(158)는 제1 리드 커맨드 동작이 완료되면, 큐잉된 제2 리드 커맨드의 제2 물리 어드레스가 제1 물리 어드레스와 동일한지 여부에 기초하여 상기 제1 리드 커맨드 동작에 응하여 버퍼링된 제1 리드 데이터를 호스트 인터페이스(152)를 통해 제2 호스트(110b)로 전송함으로써 빠른 동작 성능을 제공할 수 있다.
한편, 도 5a 및 도 6a는, 각 호스트가 리드 또는 라이트 잠금 요청을 메모리 시스템(130)으로 전송하고, 메모리 시스템(130)으로부터 잠금 설정을 알리는 신호를 수신한 이후 리드 또는 라이트 커맨드를 메모리 시스템(130)으로 전송하는 동작을 도시하고 있다. 그러나, 각 호스트가 메모리 시스템(130)으로부터 잠금 설정 신호를 수신한 이후 리드 또는 라이트 커맨드를 메모리 시스템(130)으로 전송하는 것은 하나의 예시에 불과하다.
일 실시예에서, 각 호스트는 메모리 시스템(130)으로 상기 라이트 잠금 요청을 포함하는 라이트 커맨드를 전송할 수 있다. 마찬가지로, 각 호스트는 메모리 시스템(130)으로 상기 리드 잠금 요청을 포함하는 리드 커맨드를 전송할 수 있다.
예컨대, 호스트가 메모리 시스템(130)으로 라이트 커맨드, FTL 메타데이터 및 라이트 데이터를 전송하면, 메모리 시스템(130)은 상기 라이트 커맨드에 응하여 잠금 상태를 확인하고, 잠금이 설정되어 있지 않으면 라이트 잠금을 설정하고 라이트 동작을 수행할 수 있다. 메모리 시스템(130)은 상기 라이트 커맨드에 응하여 잠금 상태를 확인하고, 잠금이 설정되어 있으면 라이트 잠금 실패 신호를 상기 호스트로 전송할 수 있다.
도 7은 본 발명의 일 실시예에 따른 데이터 처리 시스템(100)에 포함될 수 있는 데이터를 개략적으로 도시한 도면이다.
도 7의 데이터 처리 시스템(100)은 도 3을 참조하여 설명된 데이터 처리 시스템(100)과 대응할 수 있다. 즉, 데이터 처리 시스템(100)은 제1 및 제2 호스트(110a, 110b), 메모리 시스템(130)을 포함할 수 있다. 제1 및 제2 호스트(110a, 110b)는 각각 파일 시스템(112a, 112b), FTL(114a, 114b), 메모리(116a, 116b) 및 장치 드라이버(118a, 118b)를 포함할 수 있다. 메모리 시스템(130)은 호스트 인터페이스(152), 프로세서(154), 메모리(156), 메모리 인터페이스(158), 잠금 관리부(160) 및 동기화 관리부(162)를 포함하는 컨트롤러(150) 및 메모리 장치(170)를 포함할 수 있다.
메모리 장치(170)는 복수의 메모리 영역을 포함할 수 있다. 예컨대 하나의 메모리 영역은 하나 이상의 블록 또는 하나 이상의 페이지를 포함할 수 있다.
본 발명의 일 실시예에 따르면, 잠금 관리부(160)는 메모리 시스템(130)의 각 메모리 영역별로 잠금을 설정 또는 해제할 수 있다. 메모리(156)는 각 메모리 영역별 리드 잠금 및 라이트 잠금 상태를 저장할 수 있다. 도 7은, 각 메모리 영역을 나타내는 인덱스 필드 및 각 메모리 영역별 리드 잠금 및 라이트 잠금 상태를 나타내는 잠금 상태 필드를 포함하는 테이블을 저장하는 메모리(156)를 예시하고 있다.
동기화 관리부(162)는 메모리 시스템(130)의 FTL 메타데이터를 동기화할 수 있다. 동기화 관리부(162)는 도 3을 참조하여 설명된 동기화 관리부(162)와 대응한다.예컨대 하나의 메모리 영역이 하나의 블록에 대응하는 경우, 제1 호스트(110a)는 제1 라이트 데이터를 메모리 시스템(130)에 라이트하기 위해 제1 FTL 메타데이터를 생성할 수 있다. 상기 제1 FTL 메타데이터에 포함된 물리 어드레스가 제1 블록 내부의 어드레스인 경우, 제1 호스트(110a)는 메모리 장치(170)의 제1 블록으로 액세스하기 위한 제1 라이트 잠금 요청을 전송할 수 있다.
잠금 관리부(160)는 제1 블록에 리드 잠금 및 라이트 잠금이 설정되지 않은 경우 상기 제1 라이트 잠금 요청에 응하여 라이트 잠금을 설정할 수 있다.
예컨대, 제2 블록에 제2 호스트의 라이트 잠금이 설정되었더라도 제1 블록의 FTL 메타데이터가 변경될 우려가 없다. 따라서, 잠금 관리부(160)는 메모리(156)의 제1 블록의 잠금 상태를 판단하여 라이트 잠금이 설정되지 않은 경우 상기 제1 라이트 잠금 요청에 응하여 제1 블록에 제1 호스트의 라이트 잠금을 설정할 수 있다.
한편, 제2 블록에 라이트 동작이 성공하여 라이트 잠금이 해제되면, 동기화 관리부(162)는 FTL 메타데이터 버전 값을 업데이트하고, 복수의 호스트 각각으로 라이트 잠금 해제 신호를 전송할 수 있다. 제1 및 제2 호스트(110a, 110b)는 상기 라이트 잠금 해제 신호에 응하여 각각 제1 및 제2 메모리(116a, 116b)에 저장된 FTL 메타데이터의 버전 값과 메모리(156)에 저장된 FTL 메타데이터의 버전 값이 일치하는지 판단하고, FTL 메타데이터를 동기화할 수 있다.
도 8은 단일 루트 입/출력 가상화(Single Root I/O virtualization. SR-IOV)를 지원하는 오픈 채널 메모리 시스템을 포함하는 데이터 처리 시스템(100)의 일 예를 개략적으로 도시한 도면이다.
구현에 따라, 메모리 시스템(130)은 단일 루트 입/출력 가상화를 지원하는 오픈 채널 메모리 시스템일 수 있다.
메모리 시스템(130)은 컨트롤러(150) 및 메모리 장치(170)를 포함할 수 있다. 컨트롤러(150)는 호스트 인터페이스(152), 프로세서(154), 메모리(156), 메모리 인터페이스(158) 및 잠금 관리부(160) 및 동기화 관리부(162)를 포함할 수 있다.
메모리 시스템(130)에 하나 이상의 호스트(110)가 연결될 수 있다. 호스트(110)는 복수의 가상머신을 구동할 수 있다. 메모리 시스템(130)이 단일 루트 입/출력 가상화를 지원하므로, 호스트(110)가 물리적으로는 단일 포트에 연결되더라도, 호스트(110) 내에서 복수의 가상머신은 서로 독립적으로 메모리 시스템(130)으로 커맨드를 전송하고, 메모리 시스템(130)과 데이터 입/출력을 수행할 수 있다.
그리고, 메모리 시스템(130)이 오픈 채널 메모리 시스템이므로 복수의 가상머신은 물리 어드레스를 사용하여 메모리 시스템(130)에 액세스하기 위해 독립적으로 FTL을 구동할 수 있다. 즉, 복수의 가상머신은 서로 독립적인 파일 시스템, FTL, 장치 드라이버를 구동할 수 있다.
도 8의 예에서, 호스트(110)는 제1 가상머신(810a) 및 제2 가상머신(810b)을 구동할 수 있다. 제1 및 제2 가상머신(810a, 810b)은 호스트(110)의 메모리(미도시)에 로드되어 호스트(110) 내부의 프로세서(미도시)에서 구동될 수 있다.
제1 가상머신(810a)은 제1 파일 시스템(812a), 제1 FTL(814a), 제1 장치 드라이버(818a)를 구동하고, 제2 가상머신(810b)은 제1 파일 시스템(812b), 제1 FTL(814b), 제1 장치 드라이버(818b)를 구동할 수 있다.
상기 제1 및 제2 가상머신(810a, 810b)은 제1 FTL(814a) 및 제2 FTL(814b)을 각각 구동함으로써 파일 시스템의 논리 어드레스를 상기 물리 어드레스로 직접 변환하여 메모리 시스템(130)으로 액세스할 수 있다. 호스트(110) 내부의 메모리(미도시)는 제1 및 제2 FTL(814a, 814b)의 동작 데이터를 각각 저장할 수 있다. 설명의 편의를 위하여 도 8에서는 제1 메모리(816a)가 제1 FTL(814a)의 FTL 메타데이터저장하고, 제2 메모리(816b)가 제2 FTL(814b)의 FTL 메타데이터를 저장하는 것으로 도시되었다. 제1 및 제2 메모리(816a, 816b)는 물리적으로는 동일한 메모리일 수 있다.
복수의 가상머신이 메모리 시스템(130)에 독립적으로 데이터를 라이트하고 내부 FTL 메타데이터를 업데이트하므로, 각 가상머신의 내부 FTL 메타데이터가 서로 동기화되지 않으면 각 가상머신은 의도치 않은 데이터를 리드하거나, 이미 데이터가 라이트된 메모리 영역에 라이트 동작을 수행하는 오류를 일으킬 수 있다.
본 발명의 일 실시예에 따르면, 메모리 시스템(130)은 복수의 가상머신 중 제1 가상머신(810a)의 라이트 잠금 요청을 수신하면, 메모리 장치(170)의 잠금 상태에 기초하여 라이트 잠금을 설정하고, 제1 가상머신(810a)으로부터 라이트 커맨드, 라이트 데이터 및 갱신된 FTL 메타데이터를 수신하여 라이트 동작을 수행할 수 있다.
메모리 시스템(130)은 상기 라이트 동작이 완료되면, 상기 라이트 잠금을 해제하고 상기 복수의 가상머신과 메모리 시스템(130)의 FTL 메타데이터를 동기화할 수 있다. 따라서, 메모리 시스템(130)은 각 가상머신이 의도치 않은 데이터를 리드하거나, 이미 데이터가 라이트된 메모리 영역에 라이트 동작을 수행하는 오류를 방지할 수 있다. 따라서 데이터 처리 시스템(100)의 신뢰성이 향상될 수 있다.
도 9는 본 발명에 따른 메모리 시스템(130)이 적용된 사용자 시스템을 개략적으로 도시한 도면이다.
도 9를 참조하면, 사용자 시스템(6900)은 스토리지 모듈(6950), 복수의 애플리케이션 프로세서(6930a, 6930b), 복수의 메모리 모듈(6920a, 6920b), 복수의 네트워크 모듈(6940a, 6940b), 복수의 사용자 인터페이스(6910a, 6910b)를 포함할 수 있다.
스토리지 모듈(6950)은, 복수의 애플리케이션 프로세서(6930a, 6930b)로부터 수신한 데이터를 저장하고, 스토리지 모듈(6950)에 저장된 데이터를 애플리케이션 프로세서(6930a, 6930b)로 전송할 수 있다. 스토리지 모듈(6650)은, PRAM(Phasechange RAM), MRAM(Magnetic RAM), RRAM(Resistive RAM), NAND flash, NOR flash, 3차원 구조의 NAND 플래시 등과 같은 비휘발성 반도체 메모리 소자 등으로 구현될 수 있으며, 또한 사용자 시스템(6900)의 메모리 카드, 외장형 드라이브 등과 같은 탈착식 저장 매체(removable drive)로 제공될 수 있다.
스토리지 모듈(6950)은, 도 1 내지 도 8을 참조하여 설명한 메모리 시스템(130)에 대응할 수 있다. 본 발명의 일 실시예에 따른 스토리지 모듈(6950)은, 애플리케이션 프로세서(6930a)로부터 제1 라이트 잠금 요청을 수신하면 스토리지 모듈(6950) 내부에 잠금이 설정되어 있는지 여부에 기초하여 라이트 잠금을 설정하고, 상기 라이트 잠금 상태에서 애플리케이션 프로세서(6930a)로부터 라이트 커맨드, 라이트 데이터 및 갱신된 FTL 메타데이터를 수신하여 라이트 동작을 수행하고, 상기 라이트 동작이 완료되면 상기 라이트 잠금을 해제하고, 복수의 애플리케이션 프로세서(6930a, 6930b)와 스토리지 모듈(6950)의 내부 FTL 메타데이터의 동기화를 제어할 수 있다.
복수의 애플리케이션 프로세서(6930a, 6930b)는 도 1 내지 도 8을 참조하여 설명한 제1 및 제2 호스트(110a, 110b)에 대응할 수 있다. 복수의 애플리케이션 프로세서(6930a, 6930b)는 각각 운영 체제를 구동할 수 있으며, 각각에 연결된 모듈들을 제어하기 위한 컨트롤러들, 인터페이스들, 그래픽 엔진 등을 포함할 수 있다. 특히, 복수의 애플리케이션 프로세서(6930a, 6930b)는 물리 어드레스를 사용하여 스토리지 모듈(6950)에 액세스하기 위해 각각 FTL을 포함할 수 있다. 여기서, 애플리케이션 프로세서(6930)는 시스템-온-칩(SoC: System-on-Chip)으로 제공될 수 있다.
그리고, 복수의 메모리 모듈(6920a, 6920b)은 사용자 시스템(6900)의 메인 메모리, 동작 메모리, 버퍼 메모리, 또는 캐시 메모리로 동작할 수 있다. 여기서, 메모리 모듈(6620)은, DRAM, SDRAM, DDR SDRAM, DDR2 SDRAM, DDR3 SDRAM, LPDDR SDARM, LPDDR3 SDRAM, LPDDR3 SDRAM 등과 같은 휘발성 랜덤 액세스 메모리 또는 PRAM, ReRAM, MRAM, FRAM 등과 같은 비휘발성 랜덤 액세스 메모리를 포함할 수 있다. 구현에 따라, 애플리케이션 프로세서(6930a)와 메모리 모듈(6920a), 그리고 애플리케이션 프로세서(6930b)와 메모리 모듈(6920b)은 각각 POP(Package on Package)를 기반으로 패키지화되어 실장될 수 있다.
또한, 네트워크 모듈(6940a, 6940b)은 외부 장치들과 통신을 수행할 수 있다. 예를 들어, 네트워크 모듈(6940a, 6940b)은 유선 통신을 지원할뿐만 아니라, CDMA(Code Division Multiple Access), GSM(Global System for Mobile communication), WCDMA(wideband CDMA), CDMA-2000, TDMA(Time Dvision Multiple Access), LTE(Long Term Evolution), Wimax, WLAN, UWB, 블루투스, WI-DI 등과 같은 다양한 무선 통신을 지원함으로써, 유선/무선 전자 기기들, 특히 모바일 전자 기기 등과 통신을 수행할 수 있으며, 그에 따라 본 발명의 실시 예에 따른 메모리 시스템 및 데이터 처리 시스템이 유선/무선 전자 기기들에 적용될 수 있다. 여기서, 네트워크 모듈(6940a)은 애플리케이션 프로세서(6930a)에 포함되고, 네트워크 모듈(6940b)은 애플리케이션 프로세서(6930b)에 포함될 수 있다.
그리고, 복수의 사용자 인터페이스(6910a, 6910b)는 각각 자신과 연결된 애플리케이션 프로세서(6930a, 6930b)에 데이터 또는 명령어를 입력하거나 또는 외부 장치로 데이터를 출력하는 인터페이스들을 포함할 수 있다. 예컨대, 복수의 사용자 인터페이스(6910a, 6910b)는, 키보드, 키패드, 버튼, 터치 패널, 터치 스크린, 터치 패드, 터치 볼, 카메라, 마이크, 자이로스코프 센서, 진동 센서, 압전 소자 등과 같은 사용자 입력 인터페이스들을 포함할 수 있으며, 아울러 LCD(Liquid Crystal Display), OLED(Organic Light Emitting Diode) 표시 장치, AMOLED(Active Matrix OLED) 표시 장치, LED, 스피커, 모터 등과 같은 사용자 출력 인터페이스들을 포함할 수 있다.
한편, 본 발명의 상세한 설명에서는 구체적인 실시 예에 관해 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로, 본 발명의 범위는 설명된 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구의 범위뿐만 아니라 이 특허청구의 범위와 균등한 것들에 의해 정해져야 한다.
100: 데이터 처리 시스템
110: 호스트
130: 메모리 시스템

Claims (23)

  1. FTL(Flash Translation Layer)을 각각 포함하는 복수의 호스트와 연결되는 메모리 시스템에 있어서,
    상기 복수의 호스트 중 어느 하나의 호스트로부터의 라이트 요청을 위한 라이트 잠금이 설정되면 상기 어느 하나의 호스트로부터의 라이트 요청 수신만을 허용하는 컨트롤러; 및
    상기 컨트롤러에 의해 제어되며, 상기 어느 하나의 호스트로부터의 라이트 요청에 따라 라이트 동작을 수행하는 메모리 장치를 포함하며,
    상기 컨트롤러는,
    상기 라이트 잠금 요청을 수신하면 상기 메모리 장치에 잠금이 설정되어 있는지 여부에 따라 라이트 잠금을 설정하고 상기 라이트 동작이 종료되면 상기 라이트 잠금을 해제하는 잠금 관리부, 및 상기 라이트 동작의 성공 여부에 따라 상기 어느 하나의 호스트를 제외한 나머지 호스트의 FTL의 FTL 메타데이터의 동기화를 제어하는 동기화 관리부를 포함하는
    메모리 시스템.
  2. 제1항에 있어서,
    상기 잠금 관리부는
    상기 메모리 장치 중 상기 라이트 잠금 요청에 대응하는 해당 라이트 영역에 상기 복수의 호스트 중 상기 어느 하나의 호스트가 아닌 다른 호스트의 라이트 잠금 또는 리드 잠금이 설정되지 않은 경우 상기 해당 라이트 영역에 상기 라이트 잠금을 설정하는
    메모리 시스템.
  3. 제2항에 있어서,
    상기 잠금 관리부는
    상기 해당 라이트 영역에 상기 다른 호스트의 라이트 잠금 또는 리드 잠금이 설정된 경우 상기 라이트 잠금 요청을 큐잉하거나 상기 라이트 잠금 요청의 실패 신호를 상기 어느 하나의 호스트로 전송하는
    메모리 시스템.
  4. 제3항에 있어서,
    상기 잠금 관리부는
    상기 다른 호스트의 라이트 잠금이 해제되기까지의 예상 소요 시간이 임계치 미만인 경우 상기 라이트 잠금 요청을 큐잉하는
    메모리 시스템.
  5. 제1항에 있어서,
    상기 컨트롤러는
    상기 복수의 호스트 중 적어도 어느 하나의 호스트로부터의 리드 요청을 위한 리드 잠금 요청을 수신하면 상기 적어도 어느 하나의 호스트로부터의 리드 요청 수신만을 허용하는
    메모리 시스템.
  6. 제5항에 있어서,
    상기 잠금 관리부는
    상기 리드 잠금 요청을 수신하면 상기 메모리 장치에 잠금이 설정되어 있는지 여부에 따라 리드 잠금을 설정하고, 상기 메모리 장치에 의해 상기 리드 요청에 대응하는 리드 동작이 완료되면 상기 리드 잠금을 해제하는
    메모리 시스템.
  7. 제6항에 있어서,
    상기 잠금 관리부는
    상기 메모리 장치 중 상기 리드 잠금 요청에 대응하는 해당 리드 영역에 상기 복수의 호스트 중 상기 어느 하나의 호스트가 아닌 다른 호스트의 라이트 잠금이 설정되지 않은 경우 상기 해당 리드 영역에 상기 리드 잠금을 설정하는
    메모리 시스템.
  8. 제5항에 있어서,
    상기 컨트롤러는 상기 라이트 잠금 요청 수신 시, 상기 라이트 요청에 포함되는 라이트 커맨드, 라이트 데이터 및 상기 호스트에 의해 갱신된 갱신 FTL 메타데이터를 함께 수신하는
    메모리 시스템.
  9. 제8항에 있어서,
    상기 동기화 관리부는
    상기 라이트 동작의 성공 여부에 따라, 상기 갱신 FTL 메타데이터를 상기 메모리 시스템에 반영하고, 상기 나머지 호스트에 상기 갱신 FTL 메타데이터를 전송하여 상기 나머지 호스트의 FTL 메타데이터의 동기화를 제어하는
    메모리 시스템.
  10. 제9항에 있어서,
    상기 동기화 관리부는
    상기 나머지 호스트의 요청에 의해 상기 갱신 FTL 메타데이터를 전송하여 상기 FTL의 메타데이터의 동기화를 제어하는
    메모리 시스템.
  11. 제1항에 있어서,
    상기 컨트롤러는
    상기 라이트 동작의 종료 여부에 따라, 상기 나머지 호스트에 상기 라이트 잠금 해제 신호를 전송하는
    메모리 시스템.
  12. 제1항에 있어서,
    상기 컨트롤러는 상기 어느 하나의 호스트로부터의 라이트 요청 수신만을 허용한 후, 상기 어느 하나의 호스트로부터 상기 라이트 요청에 포함되는 라이트 커맨드, 라이트 데이터 및 상기 호스트에 의해 갱신 FTL 메타데이터를 수신하는
    메모리 시스템.
  13. FTL(Flash Translation Layer)을 각각 포함하는 복수의 호스트와 연결되는 메모리 시스템의 동작 방법에 있어서,
    상기 복수의 호스트 중 어느 하나의 호스트로부터의 라이트 잠금 요청을 수신하면 메모리 장치에 잠금이 설정되어 있는지 여부에 따라 라이트 잠금을 설정하는 단계;
    상기 라이트 잠금이 설정되면 상기 어느 하나의 호스트로부터의 라이트 요청만을 수신하고, 상기 라이트 요청에 따라 라이트 동작을 수행하는 단계;
    상기 라이트 동작이 종료되면 상기 라이트 잠금을 해제하는 단계; 및
    상기 라이트 동작의 성공 여부에 따라 상기 어느 하나의 호스트를 제외한 나머지 호스트의 FTL의 FTL 메타데이터의 동기화를 제어하는 단계
    를 포함하는 동작 방법.
  14. 제13항에 있어서,
    상기 복수의 호스트 중 어느 하나의 호스트로부터의 상기 라이트 잠금 요청을 수신하면 메모리 장치에 잠금이 설정되어 있는지 여부에 따라 라이트 잠금을 설정하는 단계는
    상기 메모리 장치 중 상기 라이트 잠금 요청에 대응하는 해당 라이트 영역에 상기 복수의 호스트 중 상기 어느 하나의 호스트가 아닌 다른 호스트의 라이트 잠금 또는 리드 잠금이 설정되지 않은 경우 상기 해당 라이트 영역에 상기 라이트 잠금을 설정하는 단계
    를 포함하는 동작 방법.
  15. 제14항에 있어서,
    상기 복수의 호스트 중 어느 하나의 호스트로부터의 상기 라이트 잠금 요청을 수신하면 메모리 장치에 잠금이 설정되어 있는지 여부에 따라 라이트 잠금을 설정하는 단계는
    상기 해당 라이트 영역에 상기 다른 호스트의 라이트 잠금 또는 리드 잠금이 설정된 경우 상기 라이트 잠금 요청을 큐잉하거나 상기 라이트 잠금 요청의 실패 신호를 상기 어느 하나의 호스트로 전송하는 단계를 더 포함하는
    동작 방법.
  16. 제15항에 있어서,
    상기 해당 영역에 상기 다른 호스트의 라이트 잠금 또는 리드 잠금이 설정된 경우 상기 라이트 잠금 요청을 큐잉하거나 상기 라이트 잠금 요청의 실패 신호를 상기 어느 하나의 호스트로 전송하는 단계는
    상기 다른 호스트의 라이트 잠금이 해제되기까지의 예상 소요 시간이 임계치 미만인 경우 상기 라이트 잠금 요청을 큐잉하는 단계를 포함하는
    동작 방법.
  17. 제13항에 있어서,
    상기 어느 하나의 호스트로부터 리드 잠금 요청을 수신하면 상기 메모리 장치에 잠금이 설정되어 있는지 여부에 따라 리드 잠금을 설정하는 단계; 및
    상기 메모리 장치에 의해 상기 리드 요청에 대응하는 리드 동작이 완료되면 상기 리드 잠금을 해제하는 단계
    를 더 포함하는 동작 방법.
  18. 제17항에 있어서,
    상기 어느 하나의 호스트로부터 리드 잠금 요청을 수신하면 상기 메모리 장치에 잠금이 설정되어 있는지 여부에 따라 리드 잠금을 설정하는 단계는
    상기 메모리 장치 중 상기 리드 잠금 요청에 대응하는 해당 리드 영역에 상기 복수의 호스트 중 상기 어느 하나의 호스트가 아닌 다른 호스트의 라이트 잠금이 설정되지 않은 경우 상기 해당 리드 영역에 상기 리드 잠금을 설정하는 단계를 포함하는
    동작 방법.
  19. 제13항에 있어서,
    상기 라이트 잠금 요청 수신 시, 상기 라이트 요청에 포함되는 라이트 커맨드, 라이트 데이터 및 상기 호스트에 의해 갱신된 갱신 FTL 메타데이터를 함께 수신하는 단계
    를 더 포함하는 동작 방법.
  20. 제19항에 있어서,
    상기 라이트 동작의 성공 여부에 따라 상기 어느 하나의 호스트를 제외한 나머지 호스트의 FTL의 FTL 메타데이터의 동기화를 제어하는 단계는
    상기 라이트 동작의 성공 여부에 따라, 상기 갱신 FTL 메타데이터를 상기 메모리 시스템에 반영하는 단계; 및
    상기 나머지 호스트에 상기 갱신 FTL 메타데이터를 전송하여 상기 나머지 호스트의 FTL 메타데이터의 동기화를 제어하는 단계를 포함하는
    동작 방법.
  21. 제20항에 있어서,
    상기 나머지 호스트에 상기 갱신 FTL 메타데이터를 전송하여 상기 나머지 호스트의 FTL 메타데이터의 동기화를 제어하는 단계는
    상기 나머지 호스트의 요청에 의해 상기 갱신 FTL 메타데이터를 전송하여 상기 FTL의 메타데이터의 동기화를 제어하는 단계를 포함하는
    동작 방법.
  22. 제13항에 있어서,
    상기 라이트 동작이 종료되면 상기 라이트 잠금을 해제하는 단계는
    상기 라이트 동작의 종료 여부에 따라, 상기 나머지 호스트에 상기 라이트 잠금 해제 신호를 전송하는 단계를 포함하는
    동작 방법.
  23. 제13항에 있어서,
    상기 어느 하나의 호스트로부터의 라이트 잠금 요청에 응하여 라이트 잠금을 설정한 후, 상기 어느 하나의 호스트로부터 상기 라이트 요청에 포함되는 라이트 커맨드, 라이트 데이터 및 상기 호스트에 의해 갱신 FTL 메타데이터를 수신하는 단계를 더 포함하는
    동작 방법.

KR1020190005162A 2019-01-15 2019-01-15 메모리 시스템 및 메모리 시스템의 동작방법 KR20200088635A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020190005162A KR20200088635A (ko) 2019-01-15 2019-01-15 메모리 시스템 및 메모리 시스템의 동작방법
US16/711,076 US11216214B2 (en) 2019-01-15 2019-12-11 Memory system and operation method thereof
CN201911285111.0A CN111538683B (zh) 2019-01-15 2019-12-13 存储器系统及其操作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190005162A KR20200088635A (ko) 2019-01-15 2019-01-15 메모리 시스템 및 메모리 시스템의 동작방법

Publications (1)

Publication Number Publication Date
KR20200088635A true KR20200088635A (ko) 2020-07-23

Family

ID=71517691

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190005162A KR20200088635A (ko) 2019-01-15 2019-01-15 메모리 시스템 및 메모리 시스템의 동작방법

Country Status (3)

Country Link
US (1) US11216214B2 (ko)
KR (1) KR20200088635A (ko)
CN (1) CN111538683B (ko)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019222958A1 (en) 2018-05-24 2019-11-28 Alibaba Group Holding Limited System and method for flash storage management using multiple open page stripes
US11816043B2 (en) 2018-06-25 2023-11-14 Alibaba Group Holding Limited System and method for managing resources of a storage device and quantifying the cost of I/O requests
US11327929B2 (en) 2018-09-17 2022-05-10 Alibaba Group Holding Limited Method and system for reduced data movement compression using in-storage computing and a customized file system
US11061735B2 (en) 2019-01-02 2021-07-13 Alibaba Group Holding Limited System and method for offloading computation to storage nodes in distributed system
US11294825B2 (en) 2019-04-17 2022-04-05 SK Hynix Inc. Memory system for utilizing a memory included in an external device
KR20200122086A (ko) 2019-04-17 2020-10-27 에스케이하이닉스 주식회사 메모리 시스템에서 맵 세그먼트를 전송하는 방법 및 장치
KR20200139913A (ko) * 2019-06-05 2020-12-15 에스케이하이닉스 주식회사 메모리 시스템, 메모리 컨트롤러 및 메타 정보 저장 장치
KR20210001546A (ko) 2019-06-28 2021-01-06 에스케이하이닉스 주식회사 슬립모드에서 메모리 시스템의 내부데이터를 전송하는 장치 및 방법
US10860223B1 (en) 2019-07-18 2020-12-08 Alibaba Group Holding Limited Method and system for enhancing a distributed storage system by decoupling computation and network tasks
US11617282B2 (en) 2019-10-01 2023-03-28 Alibaba Group Holding Limited System and method for reshaping power budget of cabinet to facilitate improved deployment density of servers
US11449455B2 (en) 2020-01-15 2022-09-20 Alibaba Group Holding Limited Method and system for facilitating a high-capacity object storage system with configuration agility and mixed deployment flexibility
US11379447B2 (en) 2020-02-06 2022-07-05 Alibaba Group Holding Limited Method and system for enhancing IOPS of a hard disk drive system based on storing metadata in host volatile memory and data in non-volatile memory using a shared controller
US11449386B2 (en) 2020-03-20 2022-09-20 Alibaba Group Holding Limited Method and system for optimizing persistent memory on data retention, endurance, and performance for host memory
US11385833B2 (en) 2020-04-20 2022-07-12 Alibaba Group Holding Limited Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources
US11281575B2 (en) 2020-05-11 2022-03-22 Alibaba Group Holding Limited Method and system for facilitating data placement and control of physical addresses with multi-queue I/O blocks
US11461262B2 (en) 2020-05-13 2022-10-04 Alibaba Group Holding Limited Method and system for facilitating a converged computation and storage node in a distributed storage system
US11494115B2 (en) 2020-05-13 2022-11-08 Alibaba Group Holding Limited System method for facilitating memory media as file storage device based on real-time hashing by performing integrity check with a cyclical redundancy check (CRC)
US11556277B2 (en) 2020-05-19 2023-01-17 Alibaba Group Holding Limited System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification
US11507499B2 (en) 2020-05-19 2022-11-22 Alibaba Group Holding Limited System and method for facilitating mitigation of read/write amplification in data compression
US11263132B2 (en) 2020-06-11 2022-03-01 Alibaba Group Holding Limited Method and system for facilitating log-structure data organization
US11354200B2 (en) 2020-06-17 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating data recovery and version rollback in a storage device
US11422931B2 (en) 2020-06-17 2022-08-23 Alibaba Group Holding Limited Method and system for facilitating a physically isolated storage unit for multi-tenancy virtualization
US11379360B2 (en) 2020-06-25 2022-07-05 Netapp, Inc. Methods for managing storage operations for multiple hosts coupled to dual-port solid-state disks and devices thereof
US11733931B1 (en) * 2020-07-13 2023-08-22 Meta Platforms, Inc. Software defined hybrid flash storage memory controller
US11354233B2 (en) * 2020-07-27 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating fast crash recovery in a storage device
CN111736780B (zh) * 2020-08-07 2021-02-02 苏州浪潮智能科技有限公司 一种固态硬盘的擦除方法、装置、设备及存储介质
US11599377B2 (en) * 2020-08-17 2023-03-07 Alibaba Group Holding Limited Open-channel storage device management with FTL on virtual machine
US11372774B2 (en) 2020-08-24 2022-06-28 Alibaba Group Holding Limited Method and system for a solid state drive with on-chip memory integration
US11487465B2 (en) 2020-12-11 2022-11-01 Alibaba Group Holding Limited Method and system for a local storage engine collaborating with a solid state drive controller
US11734115B2 (en) 2020-12-28 2023-08-22 Alibaba Group Holding Limited Method and system for facilitating write latency reduction in a queue depth of one scenario
US11416365B2 (en) 2020-12-30 2022-08-16 Alibaba Group Holding Limited Method and system for open NAND block detection and correction in an open-channel SSD
US12014052B2 (en) * 2021-03-22 2024-06-18 Google Llc Cooperative storage architecture
US11726699B2 (en) 2021-03-30 2023-08-15 Alibaba Singapore Holding Private Limited Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification
US11461173B1 (en) 2021-04-21 2022-10-04 Alibaba Singapore Holding Private Limited Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement
US11476874B1 (en) 2021-05-14 2022-10-18 Alibaba Singapore Holding Private Limited Method and system for facilitating a storage server with hybrid memory for journaling and data storage
EP4180936A1 (en) * 2021-11-10 2023-05-17 Samsung Electronics Co., Ltd. Virtualized system and method of controlling access to nonvolatile memory device in virtualization environment

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8041878B2 (en) * 2003-03-19 2011-10-18 Samsung Electronics Co., Ltd. Flash file system
US8229945B2 (en) * 2008-03-20 2012-07-24 Schooner Information Technology, Inc. Scalable database management software on a cluster of nodes using a shared-distributed flash memory
KR101420754B1 (ko) 2012-11-22 2014-07-17 주식회사 이에프텍 비휘발성 메모리 시스템 및 이를 위한 맵핑 테이블 관리 방법
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
CN104636285B (zh) * 2015-02-03 2016-03-23 北京麓柏科技有限公司 一种闪存存储系统及其读写、删除方法
KR102026877B1 (ko) 2015-06-16 2019-09-30 한국전자통신연구원 메모리 관리 유닛 및 그 동작 방법
US20170249257A1 (en) * 2016-02-29 2017-08-31 Itu Business Development A/S Solid-state storage device flash translation layer
CN109074318B (zh) * 2016-05-31 2023-07-04 桑迪士克科技有限责任公司 用于执行转换层表的自适应主机存储器缓冲区高速缓存的系统和方法
CN108628761B (zh) * 2017-03-16 2022-04-22 北京忆恒创源科技股份有限公司 原子命令执行方法与装置

Also Published As

Publication number Publication date
US11216214B2 (en) 2022-01-04
US20200225875A1 (en) 2020-07-16
CN111538683A (zh) 2020-08-14
CN111538683B (zh) 2023-08-01

Similar Documents

Publication Publication Date Title
CN111538683B (zh) 存储器系统及其操作方法
KR20200064499A (ko) 메모리 시스템 및 메모리 시스템의 동작방법
KR20210108107A (ko) 메모리 시스템 및 그것의 동작방법
US9672091B2 (en) Storage device and debugging method thereof
CN114442914B (zh) 存储器系统
KR102649131B1 (ko) 메모리 시스템 내 대용량 데이터 저장이 가능한 블록에서의 유효 데이터 체크 방법 및 장치
US20140101386A1 (en) Data storage device including buffer memory
KR20200085967A (ko) 데이터 저장 장치 및 그 동작 방법
US11113202B2 (en) Operating method forcing the second operation to fail using a scatter-gather buffer and memory system thereof
KR20120097862A (ko) 데이터 저장 시스템 및 그의 데이터 맵핑 방법
KR20200059936A (ko) 메모리 시스템 및 메모리 시스템의 동작방법
KR20200011832A (ko) 메모리 시스템에서의 데이터 처리 방법 및 장치
KR20200137244A (ko) 메모리 시스템 및 그것의 동작방법
CN112309450A (zh) 存储装置
CN114078543A (zh) 存储器控制器及其操作方法
KR20200114212A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR20190051530A (ko) 데이터 처리 시스템 및 데이터 처리 시스템의 동작 방법
KR20160144577A (ko) 불휘발성 메모리 모듈 및 그것의 포함하는 사용자 장치
CN109426448B (zh) 存储器系统及其操作方法
CN110888819A (zh) 存储器系统及其操作方法
KR20210004629A (ko) 메모리 시스템 및 그것의 동작방법
KR20200052150A (ko) 메모리 시스템 및 그것의 동작방법
KR20200016076A (ko) 메모리 시스템 및 메모리 시스템의 동작방법
CN111198652A (zh) 存储器系统及其操作方法
KR20200031886A (ko) 메모리 시스템 및 그것의 동작방법

Legal Events

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