KR20230012992A - 파일 읽기 지연 감소를 위한 방법 및 장치 - Google Patents

파일 읽기 지연 감소를 위한 방법 및 장치 Download PDF

Info

Publication number
KR20230012992A
KR20230012992A KR1020220086562A KR20220086562A KR20230012992A KR 20230012992 A KR20230012992 A KR 20230012992A KR 1020220086562 A KR1020220086562 A KR 1020220086562A KR 20220086562 A KR20220086562 A KR 20220086562A KR 20230012992 A KR20230012992 A KR 20230012992A
Authority
KR
South Korea
Prior art keywords
file
controller
data
oft
list
Prior art date
Application number
KR1020220086562A
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 삼성전자주식회사
Publication of KR20230012992A publication Critical patent/KR20230012992A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/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/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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

저장 장치의 컨트롤러가 호스트 장치의 애플리케이션으로부터 적어도 하나의 파일의 파일 포인터를 포함하는 리드 커맨드를 수신하는 방법들 및 장치들이 제공된다. 컨트롤러는 파일 포인터를 사용하여 컨트롤러에서 유지 관리되는 테이블에서 파일 데이터와 관련된 물리적 블록 주소(PBA) 목록을 검색한다. 컨트롤러는 PBA 목록을 사용하여 메모리에서 데이터를 읽고 파일 데이터를 호스트 장치의 애플리케이션에 제공한다.

Description

파일 읽기 지연 감소를 위한 방법 및 장치{METHODS AND DEVICES FOR FILE READ LATENCY REDUCTION}
본 출원은 35 U.S.C.§119(e)에 기반하여 2021년 7월 16일에 출원된 미국 가출원 63/222,694에 대한 우선권을 주장하며, 발명의 전체 내용은 본 출원에 참조로 포함된다.
본 개시는 일반적으로 파일 데이터를 저장하는 저장 장치에 관한 것으로, 보다 구체적으로 감소된 지연 시간으로 저장된 데이터를 읽는 방법 및 장치에 관한 것이다.
파일들은 애플리케이션들에서 사용자 데이터를 관리하는 데 사용하는 데이터 구조 유형이다. 따라서 데이터의 효율적인 처리, 저장, 보안 및 일반 관리는 정보 기술(IT) 시스템에서 중요하다. 애플리케이션들은 파일 관리 및 액세스 관련 작업을 위해 파일 시스템, 운영 체제(OS) 및 기타 시스템 소프트웨어를 사용하고 이에 의존한다.
SSDs(Solid state drives)는 사물 인터넷(IOT), 소셜 네트워크, 자율 주행 차량 등과 같은 다양한 애플리케이션들에 의해 방대한 양의 데이터가 생성되기 때문에, 현대 IT 인프라를 위한 영구 데이터 스토리지의 구성 요소이다. NAND 플래시 미디어 기반 SSD 저장 장치들도 IT 인프라의 구성 요소이다.
애플리케이션들이 데이터를 필요하는 경우 저장된 파일들의 원하는 데이터 부분들을 SSD 저장 장치에서 가져온다. SSDs는 고성능 영구 스토리지를 제공하기 때문에 일부 시스템 성능 병목 현상이 시스템 소프트웨어 계층으로 이동했다. 이러한 작업의 파일 읽기 지연 시간은 애플리케이션들(예를 들면, 게임 및 온라인 쇼핑 애플리케이션들)의 성능 및 최종 사용자 경험에 중요한 요소이다.
본 개시의 기술적 사상은, 감소된 지연 시간으로 저장된 데이터를 읽는 방법 및 장치를 제공한다.
일 실시예에 따르면, 저장 장치의 방법이 제공된다. 저장 장치의 컨트롤러는 호스트 장치의 애플리케이션으로부터 파일의 적어도 하나의 파일 포인터를 포함하는 리드 커맨드를 수신한다. 컨트롤러는 파일 포인터를 사용하여 컨트롤러에서 유지 관리되는 테이블에서 파일 데이터와 관련된 물리적 블록 주소(PBA) 목록을 검색한다. 컨트롤러는 PBA 목록을 사용하여 메모리에서 데이터를 읽고 파일 데이터를 호스트 장치의 애플리케이션에 제공한다.
일 실시예에 따르면, 컨트롤러 및 저장 매체를 포함하는 저장 장치가 제공된다. 컨트롤러는 호스트 장치의 애플리케이션으로부터 파일의 적어도 하나의 파일 포인터를 포함하는 리드 커맨드를 수신하도록 구성된다. 컨트롤러는 또한 파일 포인터를 사용하여 컨트롤러에서 유지 관리되는 테이블에서 파일 데이터와 관련된 PBA 목록을 검색하도록 구성된다. 컨트롤러는 PBA 목록을 사용하여 저장 매체로부터 데이터를 읽고 호스트 장치에서 애플리케이션에 파일 데이터를 제공하도록 추가로 구성된다.
일 실시예에 따르면, 호스트 장치의 방법이 제공된다. 호스트 장치의 애플리케이션은 애플리케이션에 대한 파일 데이터를 포함하는 파일의 파일 포인터를 적어도 하나 포함하는 리드 커맨드를 저장 장치의 컨트롤러에 전송한다. 애플리케이션은 파일 포인터들을 파일에 대한 PBA 목록과 연결하는 컨트롤러에서 유지 관리되는 테이블을 사용하여 컨트롤러에서 검색된 파일 데이터를 컨트롤러로부터 받는다.
본 개시의 특정 실시예의 상기 및 다른 측면, 특징, 및 이점은 첨부 도면과 함께 취해진 다음의 상세한 설명으로부터 더욱 명백해질 것이다.
도 1은 일 실시예에 따른 파일 읽기 동작을 나타내는 흐름도이다.
도 2는 일 실시예에 따른 호스트 장치에서 fopen_OFT() 호출을 나타내는 흐름도이다.
도 3은 일 실시예에 따른 SSD 컨트롤러에서 오프로드된 파일 테이블(OFT)의 PBA 컬럼을 업데이트하는 방법을 나타내는 흐름도이다.
도 4는 일 실시예에 따른 호스트 장치에서 fread_OFT() 함수 호출을 나타내는 흐름도이다.
도 5는 일 실시예에 따른 SSD 컨트롤러에서 fread_OFT() 함수 호출을 나타내는 흐름도이다.
도 6은 일 실시예에 따른 네트워크 환경에서 전자 장치를 나타내는 블록도이다.
도 7은 본 발명의 일 실시예에 따른 스토리지 시스템을 나타내는 도면이다.
이하, 첨부된 도면을 참조하여 본 발명의 실시예를 상세히 설명한다. 동일한 구성요소에 대해서는 비록 다른 도면에 도시되어 있지만 동일한 참조번호로 표시될 것임에 유의해야 한다. 이하의 설명에서, 구체적인 구성들 및 구성요소들과 같은 구체적인 내용들은 본 발명의 실시 예에 대한 전체적인 이해를 돕기 위한 것일 뿐이다. 따라서, 본 발명의 범위를 벗어나지 않으면서 본 명세서에 기재된 실시예에 대한 다양한 변경 및 수정이 가능함은 본 기술 분야의 통상의 지식을 가진 자에게 자명하다. 또한, 명료함과 간결함을 위해 잘 알려진 기능 및 구성에 대한 설명은 생략한다. 후술하는 용어들은 본 개시에서의 기능을 고려하여 정의된 용어들로, 사용자, 사용자의 의도 또는 관습에 따라 달라질 수 있다. 따라서 용어들의 정의들은 본 명세서 전반에 걸친 내용을 토대로 정해야 한다.
본 발명은 다양한 변형 및 다양한 실시예들을 가질 수 있으며, 그 중 실시예들을 첨부된 도면을 참조하여 상세하게 후술한다. 그러나, 본 개시는 실시예들에 제한되지 않고, 본 개시의 범위 내의 모든 변형, 균등물 및 대안을 포함하는 것으로 이해되어야 한다.
제1, 제2 등의 서수를 포함하는 용어들은 다양한 요소들을 설명하는데 사용될 수 있으나, 구조적 요소들은 용어들에 의해 제한되지 않는다. 용어들은 한 요소를 다른 요소와 구별하는 데만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성 요소는 제2 구성 요소로 지칭될 수 있다. 유사하게, 제2 구조적 요소는 또한 제1 구조적 요소로 지칭될 수 있다. 본 명세서에 사용된 바와 같이, "용어 및/또는" 은 하나 이상의 연관된 항목의 임의의 및 모든 조합을 포함한다.
본 명세서에서 사용된 용어들은 단지 본 발명의 다양한 실시 예들을 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수형은 문맥상 명백하게 달리 지시하지 않는 한 복수형을 포함하도록 의도된다. 본 명세서에서 "포함하다" 또는 "갖다" 라는 용어는 특징, 숫자, 단계, 동작, 구조적 요소, 부분 또는 이들의 조합의 존재를 의미하는 것으로 이해되어야 하며, 하나 이상의 다른 특징, 숫자, 단계, 작업, 구조적 요소, 부품 또는 이들의 조합이 추가될 가능성 또는 존재 여부를 배제하지 않는다.
다르게 정의되지 않는 한, 여기에서 사용되는 모든 용어는 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 이해하는 것과 동일한 의미를 갖는다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어는 해당 기술 분야에서 문맥상의 의미와 동일한 의미로 해석되어야 하며, 본 명세서에서 명확히 정의되지 않는 한 이상적이거나 과도하게 형식적인 의미로 해석되어서는 아니 된다. .
일 실시예에 따른 전자 장치는 저장 장치 및/또는 NVMe(Non-Volatile Memory Express)를 활용하는 다양한 유형의 전자 장치 중 하나일 수 있다. 전자 장치는, 예를 들면, 휴대용 통신 장치(예를 들면, 스마트 폰), 컴퓨터, 휴대용 멀티미디어 장치, 휴대용 의료 장치, 카메라, 웨어러블 장치 또는 가전 제품을 포함할 수 있다. 본 개시의 한 실시예에 따르면, 전자 장치는 상술한 것들에 한정되지 않는다.
본 개시에서 사용된 용어들은 본 개시를 한정하려는 의도가 아니며, 해당 실시 예에 대한 다양한 변경, 균등물 또는 대체물을 포함하기 위한 것이다. 첨부된 도면의 설명과 관련하여, 유사하거나 관련된 요소에 대해서는 유사한 참조번호를 사용할 수 있다. 항목에 해당하는 명사의 단수형은 관련 문맥에서 명확하게 달리 지시하지 않는 하나 또는 하나 이상을 포함할 수 있다. 본 명세서에 사용된 바와 같이, "A 또는 B", "A 및 B 중 적어도 하나", "A 또는 B 중 적어도 하나", "A, B 또는 C", "A, B 및 C 중 적어도 하나", 및 "A, B, 또는 C 중 적어도 하나" 와 같은 문구들 각각은 해당 문구에서 함께 열거된 항목들의 가능한 모든 조합을 포함할 수 있다. 본 문서에서 사용된 "제1", "제2", "첫 번째" 및 "두 번째" 등의 용어들은 해당 구성 요소를 다른 구성 요소와 구별하기 위해 사용할 수 있으며, 다른 측면(예를들면, 중요도 또는 순서)에서 구성 요소를 제한하려는 의도가 아니다. 한 요소(예를 들면, 첫 번째 요소)가 다른 구성요소(예를 들면, 두 번째 요소)와 "작동적으로" 또는 "통신적으로" 라는 용어와 함께 또는 없이, "~와 결합된", "~에 결합된", "~와 연결된" 또는 "~에 연결된"으로 언급된다면, 그것은 해당 요소가 다른 요소와 직접적으로(예를 들면, 유선), 무선으로, 또는 세 번째 요소를 통해 연결될 수 있음을 나타낸다.
본 명세서에서 "모듈" 이라는 용어는 하드웨어, 소프트웨어, 펌웨어 또는 이들의 조합으로 구현되는 단위를 포함할 수 있으며, 다른용어들, 예를 들면, "로직", "로직 블록", "부분", 및 "회로" 와 상호 교환적으로 사용될 수 있다. 모듈은 하나 이상의 기능을 수행하도록 구성된 단일 통합 구성 요소 또는 최소 단위 또는 그 일부일 수 있다. 예를 들어, 일 실시예에 따르면, 모듈은 ASIC(application-specific integrated circuit)의 형태로 구현될 수 있다.
파일 데이터 구조는 애플리케이션들에서 사용자 데이터를 구성하고 관리하는 데 사용된다. 애플리케이션들은 실행의 일부로 크고 다양한 사용자 데이터를 처리한다. 애플리케이션들 새로운 데이터를 생성하고/하거나 다른 애플리케이션들에서 생성된 데이터에 액세스할 수 있다. 애플리케이션들은 종종 데이터를 처리하고 해당 데이터를 변환하여 새 데이터 항목을 생성한다. 애플리케이션들의 최종 사용자 경험은 종종 효율적인 데이터 처리 및 공유에 달려 있다.
기본 수준에서 파일 이름은 고유한 사용자 데이터 블록을 나타낼 수 있다. 사용자 데이터는 고유하고 다른 형식, 구성, 레이아웃 및 의미를 가질 수 있다. 해당 데이터를 처리하는 애플리케이션들은 해당 데이터의 세맨틱스(semantics)를 이해할 수 있다. 그러나 세맨틱스을 넘어서 이러한 데이터는 저장 매체에 지속적으로 보존되어야 합니다. 또한 이러한 데이터는 다양한 물리적 성능 저하 영향으로부터 보호될 수 있고, 필요할 때 애플리케이션들에서 사용 가능하게 될 수 있으며, 보안 및 개인 정보 보호를 위해 보호될 수 있으며, 때때로 다른 데이터 처리 프로세스와 공유될 수 있다. 데이터 관리의 이러한 측면은 데이터의 세맨틱스에 불가지론적(agnostic)일 수 있다.
파일들은 사용자 데이터의 이러한 데이터 세맨틱스 불가지론적 측면을 관리하기 위한 데이터 구조이며, 사용자 애플리케이션들은 이러한 측면을 관리하기 위해 파일 시스템과 같은 다른 시스템 소프트웨어 계층에 의존한다. 파일 시스템 자체는 원하는 데이터 관리 기능을 달성하기 위해 서비스와 다른 많은 소프트웨어 및 하드웨어 구성 요소의 지원을 사용한다. 이러한 소프트웨어 구성 요소의 몇 가지 예들로는 운영 체제들(OSs), 응용 프로그래밍 인터페이스(API) 라이브러리들 및 다양한 드라이버들이 있다. 하드웨어 구성 요소의 몇 가지 예들로는 저장 장치들, RAID(Redundant Array of Independent Disks) 컨트롤러들, 네트워크 인터페이스 카드들 등이 있다.
애플리케이션들은 파일을 만들기 위해 파일 시스템 APIs를 사용할 수 있고, 해당 파일에 데이터를 저장할 수 있고, 처리를 위해 파일에서 데이터를 읽을 수 있다. 파일 시스템들은 위의 기능을 수행하기 위해 애플리케이션들에서 사용할 수 있는 APIs를 구현한다. 이를 위해 구현된 파일 시스템들과 소프트웨어 및 하드웨어 구성 요소들은 매우 복잡하다.
예를 들어, 원하는 데이터 관리 기능들을 충족시키기 위해 비교적 복잡한 알고리즘을 사용할 수 있다. 이러한 복잡성으로 인해 애플리케이션들에 대한 데이터 읽기 및 쓰기 작업의 실행 시간이 길어질 수 있다. 데이터 읽기 작업 지연 시간은 애플리케이션들과 관련된 요소일 수 있다. 데이터 읽기 시간이 길어지면 사용자 경험이 느려지거나 사용자 인터페이스가 정지되거나 중단이 감지될 수 있다. 따라서 데이터 읽기 지연 시간을 줄이고 최적화하는 것이 바람직할 수 있다.
예를 들어, 게임 장면을 업데이트하기 위한 더 긴 지연 시간은 게이머에게 게임 경험을 덜 즐겁게 만들 수 있으며 게이머는 해당 게임 시스템에 대한 관심을 잃을 수 있다. 마찬가지로, 느린 온라인 쇼핑 시스템은 소중한 잠재 고객을 잃을 수 있다.
본 개시의 일 측면에 따르면, 일부 시스템 소프트웨어 계층들의 횡단를 피하고 룩-업(look-up) 기능들 중 일부를 미리 수행함으로써 파일 판독 지연을 개선하기 위한 시스템 및 방법이 제공된다. 즉, 애플리케이션은 파일 시스템을 거치지 않고 저장 장치에 직접 파일 읽기 요청을 보낼 수 있다. 파일 읽기 요청을 저장 장치로 직접 보내면 시스템 소프트웨어 스택의 일부 오버헤드가 우회된다. 특히, 논리적 블록 주소(LBA) 룩-업 단계들에 대한 파일 포인터는 시스템 소프트웨어에서 우회되고 연결된 저장 장치에서 효율적으로 수행된다.
이러한 효율적인 파일 읽기 작업을 달성하기 위해 SSD 컨트롤러에 대한 LBA 매핑 테이블에 대한 파일 포인터를 모니터링하고 미러링하도록 일부 파일 시스템 기능들이 수정될 수 있다. SSD 컨트롤러 아키텍처는 파일 포인터, LBA 및 PBA 매핑을 유지하기 위해 OFT를 유지하고 사용하도록 최적화될 수 있다. SSD 컨트롤러는 직접 파일 읽기 요청들을 수락한 다음 OFT에서 PBAs를 획득한다. 애플리케이션들에서 발행한 파일 읽기 호출들은 NVMe 또는 유사한 프로토콜과 같은 스토리지 프로토콜을 사용하여 SSD 컨트롤러로 직접 전송될 수 있다. 원하는 PBA가 식별된 후 SSD 컨트롤러는 사용자 데이터를 애플리케이션 버퍼들에 직접 저장하여 파일 데이터 읽기 지연 시간을 크게 개선한다.
OFT는 파일 포인터 컬럼, LBA 목록 컬럼, PBA 목록 컬럼, 파일 읽기 오프셋 컬럼 중 적어도 하나를 포함할 수 있다. 파일 읽기 오프셋 컬럼을 사용하여 파일 데이터가 애플리케이션에 제공될 수 있다. 파일 읽기 호출들은 메모리에서 읽어야 할 데이터의 양과 파일 읽기 오프셋을 포함할 수 있으며, 파일 읽기 오프셋 컬럼은 파일 읽기 호출들의 파일 읽기 오프셋을 사용하여 업데이트될 수 있다. OFT의 엔트리에 대한 업데이트된 파일 포인터-LBA 리스트 매핑은 호스트 장치로부터 수신될 수 있고, OFT의 엔트리는 매핑에 기초하여 검색된 PBA 리스트 정보로 업데이트될 수 있다.
LBA 기반 시스템 아키텍처가 여기에서 설명되지만, 실시예들은 이에 제한되지 않고 키/값 또는 다른 객체 기반 스토리지 시스템 아키텍처에 동일하게 적용 가능하다.
일 실시예에 따르면, 지연을 개선하기 위해 파일 시스템을 거치지 않고 파일 읽기 동작을 인터셉트하여 SSD 컨트롤러로 직접 전송하는 시스템 및 방법이 제공된다. 애플리케이션에 의한 파일 읽기 동작의 예는 아래의 [표 1]과 같다.
#include <stdio.h>
int main () {
file *fp1; // file pointer
char * data_buffer; // buffer to store the data read from the SSD
int data_size; // size of the data structure or record
int num_data; // number of records to fetch from SSD
file_handle = fopen (file_name.txt, "r"); // open a file to read the data for processing
data_size = 64;
num_data = 1000;
data_buffer = malloc (data_size * num_data); // allocate host memory buffer to store the data
fread (file_handle, data_buffer, data_size, num_data); // file read request to File System
process_data(data_buffer); // data processing
fclose(file_handle); // close the file
}
도 1은 파일 읽기 동작을 나타내는 흐름도이다. fread() 함수 호출(102)이 실행될 때, 106에서, 파일 포인터(파일 핸들 또는 파일 디스크립터)는 해당 파일과 관련된 파일 시스템 블록들을 룩-업하기 위해 파일 시스템 계층(104)에 의해 사용된다. 저장 블록 계층(108)에서, 파일 시스템 블록들은 110에서 LBAs로 지칭되는 해당 저장 블록들 또는 섹터들로 변환된다. 114에서, 저장 블록 층(108) 및 저장 장치 드라이버 층(112)은 저장 입/출력(I/O) 리드 커맨드를 SSD에 전송한다. SSD 컨트롤러(플래시 변환 계층(116))에서 LBAs는 118에서 NAND 플래시 미디어 PBAs로 변환된다. 사용자 데이터는 NAND 플래시 미디어(120)로부터 읽혀지고 애플리케이션으로 리턴된다.
도 1에서 도시된 바와 같이, 파일 읽기 작업은 사용자 데이터를 가져오기 위해 여러 시스템 소프트웨어 계층을 횡단한다. 시스템 소프트웨어 계층을 통한 이러한 변환 및 횡단은 지연 시간을 추가한다.
일 실시예에 따르면, 상술한 번역 단계들 중 일부는 지연을 피하기 위해 미리 수행될 수 있다.
SSD 컨트롤러는 SSD 장치에서 [표 2]를 유지한다. 파일 포인터 및 LBA 목록 컬럼들은 아래에 자세히 설명된 새 파일 시스템 함수 호출들에 의해 업데이트된다. PBA 목록 컬럼은 SSD 컨트롤러에서 초기화 및 유지 관리된다. 파일 읽기 오프셋 컬럼은 호스트 및 SSD 컨트롤러에 의해 업데이트될 수 있다.
호스트 초기화 SSD 컨트롤러 업데이트
파일 포인터 LBA 목록 PBA 목록
(채널/다이/플레인/블록/페이지/오프셋)
파일 읽기 오프셋(byte)
1234 100, 101, 102 4/2/1/23/37/128 0
AB7689 73 3/1/1/93/293/4096 128
9CD84 835, 567 3/2/3/1 56
일 실시예에 따르면, 새로운 파일 작업 기능 호출 세트는 다음을 포함한다.
● fopen_OFT()
● fread_OFT()
● fwrite_OFT(), fsync_OFT(), fflush_OFT()
● fclose_OFT()
● fseek_OFT()
제안된 메커니즘을 지원하기 위해 다른 파일 시스템 APIs도 유사한 방식으로 수정될 수 있다. SSD 컨트롤러 아키텍처는 OFT를 생성, 업데이트, 유지 관리 및 사용하여 사용자 데이터를 신속하게 리턴하도록 최적화되어 있다.
[표 1]의 애플리케이션 코드 예는 새로운 파일 연산 함수 호출들을 이용한 아래 [표 3]과 같다.
include <stdio.h>
int main () {
file *fp; // file pointer
char * data_buffer; // buffer to store the data read from the SSD
int data_size; // size of the data structure or record
int num_data; // number of records to fetch from SSD
file_handle = fopen_OFT (file_name.txt, "r"); // program file pointer and associated LBAs in the device
data_size = 64;
num_data = 1000;
data_buffer = malloc (data_size * num_data); // allocate host memory buffer to store the data
fread_OFT (file_handle, data_buffer, data_size, num_data); // file read request to SSD Controller
process_data(data_buffer); // data processing
fclose_OFT(file_handle); // close the file, reset the file offset if necessary
}
도 2는 일 실시예에 따른 호스트 장치에서의 fopen_OFT() 호출을 나타내는 흐름도이다. 도 6 및 7에서 기재된 임의의 구성요소들 또는 임의의 구성요소들의 조합은 흐름도의 작업 중 하나 이상을 수행하기 위해 사용될 수 있다. 작업들은 예시적이며 명시적으로 설명되지 않은 다양한 추가 단계를 포함할 수 있다. 작업들의 시간 순서는 변경될 수 있다.
표 3의 fopen_OFT() 함수 호출(202)은 표 1의 fopen() 함수 호출 대신에 애플리케이션에 의해 사용된다. 이 함수 호출은 204에서 파일 포인터를 획득하기 위해 파일 시스템과 함께 지정된 파일을 내부적으로 연다. 함수 호출은 206에서 파일 시스템 소프트웨어를 사용하여 파일 포인터로 파일 시스템을 쿼리하고 208에서 관련 파일 시스템 블록들을 획득한다. 다음으로 함수 호출은 210에서 저장 블록 계층 시스템 소프트웨어를 사용하여 파일 시스템 블록과 함께 저장 블록 계층에 쿼리하고 212에서 파일 시스템 블록들에 대한 연관된 LBA 매핑을 획득한다. 파일에 대한 LBA 매핑이 획득되면 fopen_OFT() 함수 호출은 214에서 관련 SSD 컨트롤러의 파일 포인터와 LBA 매핑들을 프로그래밍한다. 이 프로그래밍은 예를 들어 NVMe 장치 드라이버와 같은 SSD 드라이버 소프트웨어를 통해 달성될 수 있고 벤더 정의 NVMe 커맨드를 사용할 수 있다. 매핑들이 SSD 컨트롤러에 제공되면 함수 호출이 리턴된다.
오프셋 컬럼 값을 0(또는 다른 값)으로 초기화하기 위해 fopen_OFT()를 사용할 수 있다.
위에서 설명한 대로 fopen_OFT() 함수 호출은 파일 포인터와 LBA 매핑들을 SSD 컨트롤러에 전달한다. SSD 컨트롤러는 이 정보를 벤더 정의 NVMe 커맨드들의 형식으로 수신할 수 있다. SSD 컨트롤러는 OFT에 여유 항목을 할당하고 파일 포인터, LBA 매핑을 기록한다. SSD 컨트롤러는 또한 OFT에서 연결된 LBA, PBA 매핑을 업데이트한다. PBA 주소는 플래시 채널 식별자, NAND 다이 인덱스, 평면, 블록 ID, 페이지 번호 등을 포함할 수 있다. PBA 주소는 플래시 미디어에서 사용자 데이터를 읽고 호스트 장치로 읽은 사용자 데이터를 보내는데 사용된다.
SSD 컨트롤러는 또한 가비지 컬렉션(GC) 프로세스 중에 OFT의 PBA 컬럼을 업데이트할 수 있다. 때때로 NAND 플래시 미디어에 저장된 사용자 데이터는 보존, 불량 블록 관리, 재활용 등의 이유로 다른 물리적 위치로 이동된다. 따라서 SSD 컨트롤러는 이러한 이벤트가 발생하는 경우 LBA, PBA 매핑을 업데이트해야 한다.
도 3은 일 실시예에 따른 SSD 컨트롤러에서 OFT의 PBA 컬럼을 업데이트하는 방법을 나타내는 흐름도이다. 도 6 및 7에서 기재된 임의의 구성요소들 또는 임의의 구성요소들의 조합은 흐름도의 작업 중 하나 이상을 수행하기 위해 사용될 수 있다. 작업들은 예시적이며 명시적으로 설명되지 않은 다양한 추가 단계를 포함할 수 있다. 작업들의 시간 순서는 변경될 수 있다.
update_PBA_OFT() 함수 호출(302)에 기초하여, SSD 컨트롤러는 304에서 GC로 인한 PBA-LBA 매핑 변경을 감지한다. SSD 컨트롤러는 306에서 OFT로부터 LBA를 검색하고 308에서 LBA-PBA 플래시 변환 계층(FTL) 테이블에 기초하여 OFT 항목의 PBA 정보를 업데이트한 후 함수 호출이 리턴된다. 대안적으로, update_PBA_OFT() 함수 호출(302)에 응답하여, SSD 컨트롤러는 310에서 호스트 장치로부터 파일 포인터(들), LBA 튜플들을 수신한다. 312에서, SSD 컨트롤러는 수신된 모든 항목들이 업데이트되었는지 여부를 결정한다. 수신된 모든 항목들이 업데이트되지 않은 경우 SSD 컨트롤러는 314에서 LBA-PBA FTL(Flash Translation Layer) 테이블을 조회하고 316에서 SSD 컨트롤러는 OFT 항목의 PBA 정보를 업데이트한다. 수신된 모든 항목들이 업데이트되면 함수 호출이 리턴된다.
따라서 호스트 소프트웨어와 SSD 컨트롤러 FTL 펌웨어는 OFT를 최신 상태로 유지하여 데이터를 읽는 동안 애플리케이션들에서 사용할 수 있다. 애플리케이션들은 표 3과 같이 최적화된 새로운 파일 읽기 함수 호출을 사용한다.
도 4는 일 실시예에 따른 호스트 장치에서 fread_OFT() 함수 호출을 나타내는 흐름도이다. 도 6 및 7에서 기재된 임의의 구성요소들 또는 임의의 구성요소들의 조합은 흐름도의 작업 중 하나 이상을 수행하기 위해 사용될 수 있다. 작업들은 예시적이며 명시적으로 설명되지 않은 다양한 추가 단계를 포함할 수 있다. 작업들의 시간 순서는 변경될 수 있다.
호스트 장치(402)의 fread_OFT() 함수 호출(404)은 406에서 SSD 컨트롤러와 직접 통신하고 파일 포인터, 읽을 데이터의 양, 및 선택적으로 읽을 오프셋을 전송한다. fread_OFT() 함수 호출은 벤더 정의 NVMe 커맨드를 사용하여 SSD 컨트롤러에 이 정보를 보낼 수 있다. 그런 다음 이 함수 호출은 408에서 SSD 컨트롤러가 직접 메모리 액세스(DMA)를 통해 데이터를 제공하기를 기다린다. 410에서 함수가 리턴된다.
도 5는 일 실시예에 따른 SSD 컨트롤러에서 fread_OFT() 함수 호출을 나타내는 흐름도이다. 도 6 및 7에서 기재된 임의의 구성요소들 또는 임의의 구성요소들의 조합은 흐름도의 작업 중 하나 이상을 수행하기 위해 사용될 수 있다. 작업들은 예시적이며 명시적으로 설명되지 않은 다양한 추가 단계를 포함할 수 있다. 작업들의 시간 순서는 변경될 수 있다.
SSD 컨트롤러(502)는 506에서 fread_OFT() 함수 호출(504)에 의해 제공되는 정보를 갖는 벤더 정의 NVMe 커맨드를 수신한다. 커맨드를 수신한 후, SSD 컨트롤러(502)는 508에서 OFT에서 파일 포인터 항목을 조회하고 해당 파일과 관련된 PBAs 목록을 획득한다. 그 다음, SSD 제어기(502)는 510에서 PBAs를 사용하여 NAND 플래시 미디어로부터 적절한 사용자 데이터를 읽는다. SSD 제어기(502)는 512에서 읽은 사용자 데이터를 DMA를 통해 사용자 애플리케이션(예를 들면, 호스트 메모리 버퍼)으로 전송하고, 514에서 NVMe 커맨드를 완료한다.
커맨드가 특정 오프셋 읽기 주소를 나타내는 경우 SSD 컨트롤러는 데이터를 리턴하는 동안 해당 주소를 사용한다. 커맨드가 읽기 오프셋을 지정하지 않으면 SSD 컨트롤러는 OFT의 오프셋을 사용하여 데이터를 리턴할 수 있다. 데이터를 리턴한 후, SSD 컨트롤러는 516에서 파일 포인터 항목에 대해 OFT의 새로운 파일 오프셋 값을 업데이트할 수 있다. 기본적으로 오프셋의 OFT 항목은 항목이 생성될 때 0이다.
일 실시예에 따르면, fwrite_OFT() 함수 호출은 데이터가 파일에 기록될 때 OFT에서 파일 포인터 및 연관된 LBAs를 업데이트하는 데 사용될 수 있다. 파일 쓰기 작업들이 읽기 지연 시간에 중요한 경로가 아닐 수 있지만 일부 사용 사례들 및 애플리케이션들은 데이터 쓰기 후 OFT를 업데이트하면 이점을 얻을 수 있다. 또는 fflush() 및 fsync()와 같은 다른 데이터 쓰기 관련 파일 시스템 호출을 유사한 시스템들 및 방법들로 지원할 수 있다.
호스트 소프트웨어는 fseek_OFT()와 같은 다른 함수 호출을 사용하여 OFT에서 읽기 오프셋 값을 재설정하거나 변경할 수 있다. SSD 컨트롤러가 호스트 장치로부터 주어진 파일 포인터에 대한 새로운 오프셋 값을 수신하면 해당 OFT 항목을 업데이트할 수 있다. OFT 항목이 업데이트되면 해당 파일에 대한 후속 사용자 데이터 읽기 작업들에 새 오프셋 값이 사용될 수 있다.
fclose_OFT() 함수 호출은 파일이 닫힐 때 오프셋 항목을 재설정할 수 있다. 또한 OFT에서 파일 포인터 항목을 제거하도록 SSD 컨트롤러에 지시(또는 요청)할 수 있다. 호스트 소프트웨어로부터 요청을 받는 SSD 컨트롤러는 요청에 따라 OFT를 업데이트할 수 있다.
도 6은 일 실시예에 따른 네트워크 환경(600)에서 전자 장치(601)의 블록도를 도시한다. 도 6을 참조하면, 네트워크 환경(600) 내의 전자 장치(601)는 제1 네트워크(698)(예를 들면, 근거리 무선 통신 네트워크)를 통해 전자 장치(602)와 통신하거나, 제2 네트워크(699)(예를 들면, 장거리 무선 통신 네트워크)를 통해 전자 장치(604) 또는 서버(608)와 통신할 수 있다. 전자 장치(601)는 서버(608)를 통해 전자 장치(604)와 통신할 수 있다. 전자 장치(601)는 프로세서(620), 메모리(630), 입력 장치(650), 음향 출력 장치(655), 디스플레이 장치(660), 오디오 모듈(670), 센서 모듈(676), 인터페이스(677), 햅틱 모듈(679), 카메라 모듈(680), 전원 관리 모듈(688), 배터리(689), 통신 모듈(690), 가입자 식별 모듈(SIM)(696) 또는 안테나 모듈(697)을 포함할 수 있다. 일 실시예에서, 상기 구성요소들 중 적어도 하나(예를 들면, 디스플레이 장치(660) 또는 카메라 모듈(680))는 전자 장치(601)에서 생략되거나, 하나 이상의 다른 구성요소가 전자 장치(601)에 추가될 수 있다. 일 실시예에서, 구성요소들 중 일부는 단일 집적 회로(IC)로서 구현될 수 있다. 예를 들면, 센서 모듈(676)(예를 들면, 지문 센서, 홍채 센서, 조도 센서)은 디스플레이 장치(660)(예를 들면, 디스플레이)에 내장될 수 있다.
프로세서(620)는, 예를 들면, 프로세서(620)에 연결된 전자 장치(601)의 적어도 하나의 다른 구성요소(예를 들면, 하드웨어 또는 소프트웨어 구성요소)를 제어하기 위해 소프트웨어(예를 들면, 프로그램(640))를 실행할 수 있고, 다양한 데이터 처리 또는 계산을 수행할 수 있다. 데이터 처리 또는 계산의 적어도 일부로서, 프로세서(620)는 휘발성 메모리(632)의 다른 구성요소(예를 들어, 센서 모듈(676) 또는 통신 모듈(690))로부터 수신된 커맨드 또는 데이터를 로드하고, 휘발성 메모리(632)에 저장된 커맨드 또는 데이터를 처리할 수 있다. 휘발성 메모리(632)에 저장하고, 결과 데이터를 비휘발성 메모리(634)에 저장한다. 프로세서(620)는 메인 프로세서(621)(예를 들면, CPU 또는 AP(application processor)), 메인 프로세서(621)와 독립적으로 또는 이와 연계하여 동작 가능한 보조 프로세서(623)(예를 들면, GPU(Graphics Processing Unit), ISP(Image Signal Processor), 센서 허브 프로세서 또는 CP(communication processor))를 포함할 수 있다. 추가적으로 또는 대체적으로, 보조 프로세서(623)는 메인 프로세서(621)보다 적은 전력을 소모하거나 특정 기능을 실행하도록 적응될 수 있다. 보조 프로세서(623)는 메인 프로세서(621)와 별도로 또는 일부로 구현될 수 있다.
보조 프로세서(623)는 메인 프로세서(621)가 비활성(예를 들면, 슬립(sleep))상태일 때 메인 프로세서(621)대신 또는 메인 프로세서(621)가 활성 상태(예를 들면, 애플리케이션을 실행하는 중)일 때 메인 프로세서(621)와 함께 전자 장치(601)의 구성요소들 중 적어도 하나의 구성요소(예를 들면, 디스플레이 장치(660), 센서 모듈(676) 또는 통신 모듈(690))와 관련된 기능 또는 상태 중 적어도 일부를 제어할 수 있다. 일 실시예에 따르면, 상기 보조 프로세서(623)(예: 영상 신호 프로세서 또는 통신 프로세서)는 보조 프로세서(623)와 기능적으로 관련된 다른 구성요소(예: 카메라 모듈(680) 또는 통신 모듈(690))의 일부로 구현될 수 있다.
메모리(630)는 전자 장치(601)의 적어도 하나의 구성요소(예를 들면, 프로세서(620) 또는 센서 모듈(676))에서 사용되는 각종 데이터를 저장할 수 있다. 각종 데이터는, 예를 들면, 소프트웨어(예를 들면, 프로그램 640) 및 이와 관련된 커맨드에 대한 입력 데이터 또는 출력 데이터를 포함할 수 있다. 메모리(630)는 휘발성 메모리(632) 또는 비휘발성 메모리(634)를 포함할 수 있다.
프로그램(640)은 메모리(630)에 소프트웨어로 저장될 수 있으며, 예를 들면, 운영 체제(OS)(642), 미들웨어(644), 또는 애플리케이션(646)을 포함할 수 있다.
입력 장치(650)는 전자 장치(601)의 외부(예를 들면, 사용자)로부터 전자 장치(601)의 다른 구성요소(예를 들면, 프로세서(620))에서 사용할 커맨드 또는 데이터를 수신할 수 있다. 입력 장치(650)는, 예를 들면, 마이크, 마우스 또는 키보드를 포함할 수 있다.
음향 출력 장치(655)는 음향 신호를 전자 장치(601)의 외부로 출력할 수 있다. 음향 출력 장치(655)는, 예를 들면, 스피커 또는 리시버를 포함할 수 있다. 스피커는 멀티미디어 재생 또는 녹음 등의 일반적인 용도로 사용될 수 있으며, 리시버는 전화 수신용으로 사용될 수 있다. 일 실시예에 따르면, 리시버는 스피커와 별개로 구현되거나, 스피커의 일부로 구현될 수 있다.
디스플레이 장치(660)는 전자 장치(601)의 외부(예를 들면, 사용자)에게 정보를 시각적으로 제공할 수 있다. 디스플레이 장치(660)는, 예를 들면, 디스플레이, 홀로그램 장치 또는 프로젝터를 포함할 수 있고, 디스플레이, 홀로그램 장치 및 프로젝터 중 대응하는 것을 제어하기 위한 제어 회로를 포함할 수 있다. 일 실시예에 따르면, 디스플레이 장치(660)는 터치를 감지하도록 구성된 터치 회로, 또는 터치에 의해 발생하는 힘의 세기를 측정하도록 구성된 센서 회로(예를 들면, 압력 센서)를 포함할 수 있다.
오디오 모듈(670)은 소리를 전기적 신호로 변환하거나 그 반대로 변환할 수 있다. 일 실시예에 따르면, 오디오 모듈(670)은 입력 장치(650)를 통해 사운드를 획득하거나, 사운드 출력 장치(655), 직접(예를 들면, 유선) 결합된 외부 전자 장치(602)의 헤드폰 또는 무선으로 결합된 전자 장치(601)의 헤드폰을 통해 사운드를 출력할 수 있다.
센서 모듈(676)은 전자 장치(601)의 동작 상태(예를 들면, 전원 또는 온도) 또는 전자 장치(601) 외부의 환경 상태(예를 들면, 사용자의 상태)를 감지할 수 있고, 그 다음 감지된 상태에 대응하는 전기적 신호 또는 데이터 값을 생성할 수 있다. 센서 모듈(676)은, 예를 들면, 제스처(gesture) 센서, 자이로(gyro) 센서, 기압 센서, 자기 센서, 가속도 센서, 그립(grip) 센서, 근접 센서, 컬러 센서, 적외선(IR) 센서, 생체 인식 센서, 온도 센서, 습도 센서 또는 조도 센서를 포함할 수 있다.
인터페이스(677)는 전자 장치(601)가 외부 전자 장치(602)와 직접(예를 들면, 유선) 또는 무선으로 연결되는 데 사용할 하나 이상의 지정된 프로토콜을 지원할 수 있다. 일 실시예에 따르면, 인터페이스(677)는, 예를 들면, HDMI(High Definition Multimedia Interface), USB(Universal Serial Bus) 인터페이스, SD(Secure Digital) 카드 인터페이스, 또는 오디오 인터페이스를 포함할 수 있다.
연결 단자(678)는 전자 장치(601)가 외부 전자 장치(602)와 물리적으로 연결될 수 있는 커넥터를 포함할 수 있다. 일 실시예에 따르면, 연결 단자(678)는, 예를 들면, HDMI 커넥터, USB 커넥터, SD 카드 커넥터, 또는 오디오 커넥터(예를 들면, 헤드폰 커넥터)를 포함할 수 있다.
햅틱 모듈(679)은 전기적 신호를 기계적 자극(예를 들면, 진동 또는 움직임) 또는 촉각 또는 운동 감각을 통해 사용자가 인지할 수 있는 전기적 자극으로 변환할 수 있다. 일 실시예에 따르면, 햅틱 모듈(679)은, 예를 들면, 모터, 압전 소자 또는 전기 자극기를 포함할 수 있다.
카메라 모듈(680)은 정지 영상 또는 동영상을 캡처할 수 있다. 일 실시예에 따르면, 카메라 모듈(680)은 하나 이상의 렌즈, 이미지 센서, 이미지 신호 프로세서, 또는 플래시를 포함할 수 있다.
전원 관리 모듈(688)은 전자 장치(601)에 공급되는 전원을 관리할 수 있다. 전력 관리 모듈(688)은, 예를 들면, 전력 관리 집적 회로(PMIC)의 적어도 일부로서 구현될 수 있다.
배터리(689)는 전자 장치(601)의 적어도 하나의 구성요소에 전원을 공급할 수 있다. 일 실시예에 따르면, 배터리(689)는, 예를 들면, 재충전이 불가능한 1차 전지, 충전 가능한 2차 전지, 또는 연료 전지를 포함할 수 있다.
통신 모듈(690)은 전자 장치(601)와 외부 전자 장치(예를 들면, 전자 장치(602), 전자 장치(604), 또는 서버(608)) 간의 직접(예를 들면, 유선) 통신 채널 또는 무선 통신 채널 설정을 지원할 수 있으며, 설정된 통신 채널을 통해 통신 수행을 지원할 수 있다. 통신 모듈(690)은 프로세서(620)(예를 들면, AP)와 독립적으로 동작하고, 직접(예를 들면, 유선) 통신 또는 무선 통신을 지원하는 하나 이상의 통신 프로세서를 포함할 수 있다. 일 실시 예에 따르면, 통신 모듈(690)은 무선 통신 모듈 (692)(예를 들면, 셀룰러 통신 모듈, 근거리 무선 통신 모듈 또는 GNSS(global navigation satellite system) 통신 모듈) 또는 유선 통신 모듈(694)(예를 들면, 근거리 통신망(LAN) 통신 모듈 또는 전력선 통신(PLC) 모듈)을 포함할 수 있다. 이들 통신 모듈 중 해당하는 하나의 통신 모듈은 제1 네트워크(698)(예를 들면, BluetoothTM, Wi-Fi(wireless-fidelity) direct 또는 IrDA(Infrared Data Association) 표준 등의 근거리 통신망) 또는 제2 네트워크(699)(예를 들면, 셀룰러 네트워크, 인터넷, 또는 컴퓨터 네트워크(예를 들면, LAN 또는 광역 네트워크(WAN))와 같은 장거리 통신 네트워크)을 통해 외부 전자 장치와 통신할 수 있다. 이러한 다양한 형태의 통신 모듈은 하나의 구성요소(예를 들면, 단일 IC)로 구현되거나, 서로 분리된 다중 구성요소(예를 들면, 다중 IC)로 구현될 수 있다. 무선 통신 모듈(692)은 가입자 식별 모듈(696)에 저장된 가입자 정보(예를 들면, IMSI(International Mobile Subscriber Identity))를 이용하여 제1 네트워크(698) 또는 제2 네트워크(699)와 같은 통신 네트워크에서 전자 장치(601)를 식별 및 인증할 수 있다.
안테나 모듈(697)은 전자 장치(601)의 외부(예를 들면, 외부 전자 장치)와 신호 또는 전력을 송수신할 수 있다. 일 실시 예에 따르면, 안테나 모듈(697)은 하나 이상의 안테나를 포함할 수 있으며, 이로부터, 제1 네트워크(698) 또는 제2 네트워크(699)와 같이, 통신 네트워크에서 사용되는 통신 방식에 적합한 적어도 하나의 안테나가 예를 들면, 통신 모듈(690)(예를 들면, 무선 통신 모듈(692))에 의해 선택될 수 있다. 그러면, 선택된 적어도 하나의 안테나를 통해 통신 모듈 (690)과 외부 전자 장치 간에 신호 또는 전력이 송수신될 수 있다.
상술한 구성요소들 중 적어도 일부는 상호 연결될 수 있고 주변기기 간 통신 방식(예를 들면, 버스, GPIO(general purpose input and output), SPI(serial peripheral interface) 또는 MIPI(mobile industry processor interface))을 통해 그들 사이의 신호(예를 들면, 커맨드 또는 데이터)를 통신할 수 있다.
일 실시예에 따르면, 제2 네트워크(699)와 연결된 서버(608)를 통해 전자 장치(601)와 외부 전자 장치(604) 간에 커맨드 또는 데이터를 송수신할 수 있다. 전자 장치(602 및 604) 각각은 전자 장치(601)와 동일한 종류의 장치일 수도 있고, 다른 종류의 장치일 수도 있다. 전자 장치(601)에서 실행될 동작들의 전부 또는 일부는 외부 전자 장치(602, 604 및 608) 중 적어도 하나에서 실행될 수 있다. 예를 들어, 전자 장치(601)가 기능 또는 서비스를 자동으로 수행해야 하는 경우, 또는 사용자 또는 다른 장치의 요청에 응답하여, 전자 장치(601)는 기능 또는 서비스를 실행하는 대신, 또는 추가적으로, 하나 이상의 외부 전자 장치에 기능 또는 서비스의 적어도 일부를 수행하도록 요청할 수 있다. 요청을 수신한 적어도 하나의 외부 전자 장치는 요청된 기능 또는 서비스, 또는 요청과 관련된 부가 기능 또는 부가 서비스의 적어도 일부를 수행하고, 수행 결과를 전자 장치(601)에 전달할 수 있다. 전자 장치(601)는 요청에 대한 응답의 적어도 일부로서 결과를 추가로 처리하거나 처리하지 않고 결과를 제공할 수 있다. 이를 위해, 예를 들면 클라우드 컴퓨팅, 분산 컴퓨팅 또는 클라이언트-서버 컴퓨팅 기술이 사용될 수 있다.
일 실시예는, 기계(예를 들면, 전자 장치(601))에 의해 판독 가능한 저장 매체(예를 들면, 내부 메모리(636) 또는 외부 메모리(638))에 저장된 하나 이상의 명령어를 포함하는 소프트웨어(예를 들면, 프로그램(640))로 구현될 수 있다. 예를 들면, 전자 장치(601)의 프로세서는, 프로세서의 제어 하에 하나 이상의 다른 구성요소를 사용하거나 사용하지 않고, 저장 매체에 저장된 적어도 하나의 명령어들 중 적어도 하나를 불러와서 실행할 수 있다. 따라서, 기계는 호출된 적어도 하나의 명령에 따라 적어도 하나의 기능을 수행하도록 작동될 수 있다. 하나 이상의 명령어는 컴파일러에 의해 생성된 코드 또는 인터프리터(interpreter)에 의해 실행 가능한 코드를 포함할 수 있다. 기계가 읽을 수 있는 저장매체는 비일시적 저장매체의 형태로 제공될 수 있다. "비일시적" 이라는 용어는 저장매체가 유형의 장치이며, 신호(예를 들면, 전자파)를 포함하지 않는 것을 말하지만, 이 용어는 저장매체에 데이터가 반영구적으로 저장되는 위치와 저장매체에 데이터가 일시적으로 저장되는 위치를 구별하지 않는다.
일 실시예에 따르면, 본 발명의 방법은 컴퓨터 프로그램 제품에 포함되어 제공될 수 있다. 컴퓨터 프로그램 제품은 판매자와 구매자 간에 제품으로 거래될 수 있다. 컴퓨터 프로그램 제품은 기계 판독 가능 저장 매체(예를 들면, CD-ROM)의 형태로 배포되거나 애플리케이션 스토어(예를 들면, Play StoreTM) 또는 두 사용자 장치(예를 들면, 스마트폰들) 간에 직접 연결할 수 있다. 온라인으로 배포되는 경우, 컴퓨터 프로그램 제품의 적어도 일부가 일시적으로 생성되거나, 제조업체 서버의 메모리, 애플리케이션 스토어의 서버, 또는 릴레이(relay) 서버와 같은 기계 판독 가능 저장 매체에 적어도 일시적으로 저장될 수 있다.
일 실시예에 따르면, 전술한 구성요소 중 각 구성요소(예를 들면, 모듈 또는 프로그램)는 단일 개체 또는 다중 개체를 포함할 수 있다. 전술한 구성요소 중 하나 이상은 생략되거나, 하나 이상의 다른 구성요소가 추가될 수 있다. 대안적으로 또는 추가적으로, 복수의 구성요소(예를 들면, 모듈 또는 프로그램)는 단일 구성요소로 통합될 수 있다. 이 경우, 통합된 구성요소는 통합 이전에 복수의 구성요소 중 대응하는 하나에 의해 수행되는 것과 동일하거나 유사한 방식으로 복수의 구성요소 각각에 대해 하나 이상의 기능을 여전히 수행할 수 있다. 모듈, 프로그램 또는 다른 구성 요소에 의해 수행되는 작업은 순차적으로, 병렬로, 반복적으로 또는 휴리스틱하게(heuristically) 수행될 수 있거나, 하나 이상의 작업이 다른 순서로 실행되거나 생략될 수 있고, 하나 이상의 다른 동작들이 추가될 수도 있다.
도 7은 본 발명의 일 실시예에 따른 저장 시스템(700)의 도면을 도시한다. 저장 시스템(700)은 호스트(702) 및 저장 장치(704)를 포함한다. 하나의 호스트와 하나의 저장 장치가 도시되어 있지만, 저장 시스템(700)은 다중 호스트 및/또는 다중 저장 장치를 포함할 수 있다. 저장 장치(704)는 SSD(Solid State Device), UFS(Universal Flash Storage) 등일 수 있다. 저장 장치(704)는 제어기(706) 및 제어기(706)에 연결된 저장 매체(708)를 포함한다. 제어기(706)는 SSD 제어기, UFS 제어기 등일 수 있다. 저장 매체(708)는 휘발성 메모리, 비휘발성 메모리, 또는 둘 다를 포함할 수 있고, 하나 이상의 플래시 메모리 칩(또는 다른 저장 매체)을 포함할 수 있다. 제어기(706)는 하나 이상의 프로세서, 하나 이상의 오류 정정 회로, 하나 이상의 FPGAs(field programmable gate arrays), 하나 이상의 호스트 인터페이스, 하나 이상의 플래시 버스 인터페이스 등, 또는 이들의 조합을 포함할 수 있다. 제어기(706)는 호스트(702)와 저장 매체(708) 사이의 데이터/커맨드의 전송을 용이하게 하도록 구성될 수 있다. 호스트(702)는 데이터/커맨드을 저장 장치(704)로 전송하여 컨트롤러(706)에 의해 수신되고 저장 매체(708)와 함께 처리된다. 여기에 설명된 바와 같이, 방법, 프로세스 및 알고리즘은 컨트롤러(706)와 같은 저장 장치 컨트롤러에서 구현될 수 있습니다. 아비터(arbiter), 커맨드 페처 및 커맨드 프로세서는 저장 장치(704)의 컨트롤러(706)에서 구현될 수 있고, 프로세서 및 버퍼는 호스트(702)에서 구현될 수 있다.
본 발명의 상세한 설명에서 본 발명의 특정 실시예에 대해 설명하였지만, 본 발명은 본 발명의 범위를 벗어나지 않는 범위에서 다양한 형태로 변형될 수 있다. 따라서, 본 발명의 범위는 설명된 실시 예에 기초하여 결정될 것이 아니라 첨부된 특허청구범위 및 그에 균등한 것에 기초하여 결정되어야 한다.

Claims (20)

  1. 저장 장치의 방법으로서,
    호스트 장치의 애플리케이션으로부터, 상기 저장 장치의 컨트롤러에서, 파일의 적어도 하나의 파일 포인터를 포함하는 리드 커맨드를 수신하는 단계;
    상기 파일 포인터를 사용하여 상기 컨트롤러에서 유지 관리되는 테이블로부터 파일 데이터와 관련된 물리적 블록 주소(PBA) 목록을 상기 컨트롤러에서 검색하는 단계; 및
    상기 컨트롤러가 상기 PBA 목록을 사용하여 메모리에서 상기 파일 데이터를 읽고 상기 컨트롤러에서 상기 파일 데이터를 상기 호스트 장치의 상기 애플리케이션에 제공하는 단계를 포함하는 방법.
  2. 제1항에 있어서,
    상기 리드 커맨드는 NVMe(Non-Volatile Memory Express) 커맨드를 포함하는 방법.
  3. 제1항에 있어서,
    상기 테이블은 파일 포인터 열, 논리 블록 주소(LBA) 목록 열, PBA 목록 열 및 파일 읽기 오프셋 열 중 적어도 하나를 포함하는 오프로드된 파일 테이블(OFT)을 포함하는 방법.
  4. 제3항에 있어서,
    상기 파일 데이터는 상기 파일 읽기 오프셋 열을 이용하여 상기 애플리케이션에 제공되는 것을 특징으로 하는 방법.
  5. 제3항에 있어서,
    상기 리드 커맨드는 상기 메모리로부터 판독될 데이터의 양 및 파일 읽기 오프셋을 더 포함하는 방법.
  6. 제5항에 있어서,
    상기 파일 데이터는 상기 리드 커맨드의 상기 파일 읽기 오프셋을 이용하여 상기 애플리케이션에 제공되고, 상기 파일 읽기 오프셋 열은 상기 리드 커맨드의 상기 파일 읽기 오프셋을 이용하여 업데이트되는 것을 특징으로 하는 방법.
  7. 제3항에 있어서,
    상기 호스트 장치로부터, 상기 컨트롤러에서, 상기 OFT의 항목에 대한 업데이트된 파일 포인터-LBA 목록 매핑을 수신하는 단계;
    상기 컨트롤러가 상기 업데이트된 파일 포인터-LBA 목록 매핑을 기반으로 FTL(Flash Translation Layer) 테이블에서 PBA 목록 정보를 검색하는 단계; 및
    상기 컨트롤러에 의해, 검색된 상기 PBA 목록 정보로 상기 OFT의 상기 항목을 업데이트하는 단계를 더 포함하는 방법.
  8. 제3항에 있어서,
    상기 컨트롤러가 가비지 컬렉션 프로세스로 인해 상기 OFT의 항목에서 PBA-LBA 매핑의 변경을 감지하는 단계;
    상기 OFT의 항목으로부터 LBA 목록 정보를 검색하는 단계;
    상기 컨트롤러가 검색된 상기 LBA 목록 정보를 기반으로 FTL 테이블에서 PBA 목록 정보를 검색하는 단계; 및
    상기 컨트롤러에 의해, 검색된 상기 PBA 목록 정보로 상기 OFT의 상기 항목을 업데이트하는 단계를 더 포함하는 방법.
  9. 저장 장치로서,
    컨트롤러; 및
    저장 매체를 포함하며,
    상기 컨트롤러는,
    호스트 장치의 애플리케이션으로부터 파일의 적어도 하나의 파일 포인터를 포함하는 리드 커맨드를 수신하고;
    상기 파일 포인터를 사용하여 상기 컨트롤러에서 유지 관리되는 테이블에서 파일 데이터와 관련된 물리적 블록 주소(PBA) 목록을 검색하고; 및
    상기 PBA 목록을 사용하여 상기 저장 매체에서 상기 파일 데이터를 읽고 상기 호스트 장치에서 상기 애플리케이션에 상기 데이터를 제공하도록 구성된 것을 특징으로 하는 저장 장치.
  10. 제9항에 있어서,
    상기 리드 커맨드는 NVMe(Non-Volatile Memory Express) 커맨드인 것을 특징으로 하는 저장 장치.
  11. 제9항에 있어서,
    상기 테이블은 파일 포인터 열, LBA(Logical Block Address) 목록 열, PBA 목록 컬럼 및 파일 읽기 오프셋 열 중 적어도 하나를 포함하는 오프로드 파일 테이블(Offloaded File Table, OFT)인 것을 특징으로 하는 저장 장치.
  12. 제11항에 있어서,
    상기 파일 데이터는 상기 파일 읽기 오프셋 열을 이용하여 상기 애플리케이션에 제공되는 것을 특징으로 하는 저장 장치.
  13. 제11항에 있어서,
    상기 리드 커맨드는, 상기 저장 매체로부터 읽어질 파일 데이터의 양 및 파일 읽기 오프셋을 더 포함하는 것을 특징으로 하는 저장 장치.
  14. 제13항에 있어서,
    상기 파일 데이터는 상기 리드 커맨드의 상기 파일 읽기 오프셋을 이용하여 상기 애플리케이션에 제공되고, 상기 파일 읽기 오프셋 열은 상기 리드 커맨드의 상기 파일 읽기 오프셋을 이용하여 업데이트되는 것을 특징으로 하는 저장 장치.
  15. 제11항에 있어서,
    상기 컨트롤러는,
    상기 OFT의 항목에 대한 업데이트된 파일 포인터-LBA 목록 매핑을 상기 호스트 장치로부터 수신하고;
    상기 업데이트된 파일 포인터-LBA 목록 매핑을 기반으로 FTL(Flash Translation Layer) 테이블에서 PBA 목록 정보를 검색하고; 및
    상기 검색된 PBA 목록 정보로 상기 OFT의 상기 항목을 업데이트하도록 더 구성된 것을 특징으로 하는 저장 장치.
  16. 제11항에 있어서,
    상기 컨트롤러는,
    가비지 수집 프로세스로 인해 상기 OFT의 항목에서 PBA-LBA 매핑의 변경을 감지하고;
    상기 OFT의 상기 항목에서 LBA 목록 정보를 검색하고;
    검색된 상기 LBA 목록 정보를 기반으로 FTL 테이블에서 PBA 목록 정보를 검색하고; 및
    상기 검색된 PBA 목록 정보로 상기 OFT의 상기 항목을 업데이트하도록 더 구성된 것을 특징으로 하는 저장 장치.
  17. 호스트 장치의 방법으로서,
    상기 호스트 장치의 애플리케이션으로부터 저장 장치의 컨트롤러로, 상기 애플리케이션에 대한 파일 데이터를 포함하는 파일의 적어도 하나의 파일 포인터를 포함하는 리드 커맨드를 전송하는 단계; 및
    파일 포인터들을 파일 데이터에 대한 물리적 블록 주소(PBA) 목록과 연관시키는 상기 컨트롤러에서 유지 관리되는 테이블을 사용하여 상기 컨트롤러에 의해 검색된 파일 데이터를 상기 애플리케이션에서 상기 컨트롤러로부터 수신하는 단계를 포함하는 방법.
  18. 제17항에 있어서,
    상기 리드 커맨드는 메모리로부터 판독될 파일 데이터의 양 및 파일 읽기 오프셋을 더 포함하는 NVMe(Non-Volatile Memory Express) 커맨드인 방법.
  19. 제17항에 있어서,
    상기 테이블은 파일 포인터 열, 논리 블록 주소(LBA) 목록 열, PBA 목록 열 및 파일 읽기 오프셋 열 중 적어도 하나를 포함하는 오프로드된 파일 테이블(OFT)을 포함하는 방법.
  20. 제19항에 있어서,
    주어진 파일의 주어진 파일 포인터를 획득하는 단계;
    파일 시스템 및 저장 블록 계층을 이용하여 상기 주어진 파일 포인터에 대응하는 LBA 리스트를 획득하는 단계; 및
    상기 컨트롤러에서 상기 OFT의 항목을 업데이트하기 위해 상기 주어진 파일 포인터와 상기 LBA 목록의 매핑을 상기 컨트롤러로 전송하는 단계를 더 포함하는 방법.
KR1020220086562A 2021-07-16 2022-07-13 파일 읽기 지연 감소를 위한 방법 및 장치 KR20230012992A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202163222694P 2021-07-16 2021-07-16
US63/222,694 2021-07-16
US17/504,006 2021-10-18
US17/504,006 US20230024420A1 (en) 2021-07-16 2021-10-18 Methods and devices for file read latency reduction

Publications (1)

Publication Number Publication Date
KR20230012992A true KR20230012992A (ko) 2023-01-26

Family

ID=82608717

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220086562A KR20230012992A (ko) 2021-07-16 2022-07-13 파일 읽기 지연 감소를 위한 방법 및 장치

Country Status (5)

Country Link
US (1) US20230024420A1 (ko)
EP (1) EP4120059A1 (ko)
KR (1) KR20230012992A (ko)
CN (1) CN115617262A (ko)
TW (1) TW202311968A (ko)

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7953919B2 (en) * 2007-12-21 2011-05-31 Spansion Llc Physical block addressing of electronic memory devices
US8452930B2 (en) * 2009-03-27 2013-05-28 Hitachi, Ltd. Methods and apparatus for backup and restore of thin provisioning volume
US9678966B2 (en) * 2013-11-08 2017-06-13 Samsung Electronics Co., Ltd. Swat command and API for atomic swap and trim of LBAs
US9720596B1 (en) * 2014-12-19 2017-08-01 EMC IP Holding Company LLC Coalescing writes for improved storage utilization
WO2017033287A1 (ja) * 2015-08-25 2017-03-02 株式会社 東芝 階層化ストレージシステム、階層化ストレージ装置を利用するコンピュータ、及びファイルへのアクセスのカウントを補正する方法
US10402112B1 (en) * 2018-02-14 2019-09-03 Alibaba Group Holding Limited Method and system for chunk-wide data organization and placement with real-time calculation
US11175850B2 (en) * 2019-01-03 2021-11-16 Toshiba Memory Corporation Selective erasure of data in a SSD
KR20210068699A (ko) * 2019-12-02 2021-06-10 삼성전자주식회사 스토리지 장치, 스토리지 시스템 및 스토리지 장치의 동작 방법

Also Published As

Publication number Publication date
CN115617262A (zh) 2023-01-17
EP4120059A1 (en) 2023-01-18
TW202311968A (zh) 2023-03-16
US20230024420A1 (en) 2023-01-26

Similar Documents

Publication Publication Date Title
JP6190045B2 (ja) 高性能でかつ低コストのフラッシュ変換層のためのシステムおよび方法
US11656999B2 (en) Electronic device and method for determining and managing a partial region of mapping information in volatile memory
US20230409245A1 (en) Method and system for solid state drive (ssd)-based redundant array of independent disks (raid)
US20230169022A1 (en) Operating method of an electronic device
KR20230012992A (ko) 파일 읽기 지연 감소를 위한 방법 및 장치
KR20230078577A (ko) 동기식 쓰기 방법 및 장치, 스토리지 시스템 및 전자 장치
KR20230000412A (ko) 키-밸류 스토리지 장치, 호스트, 및 호스트-스토리지 시스템
US11237741B2 (en) Electronic device and control method for controlling memory
TWI696068B (zh) 用於提供高效功率檔案系統操作至一非揮發性區塊記憶體之系統及方法
KR20210101693A (ko) 스토리지를 포함하는 전자 장치 및 이를 이용한 스토리지로 파일 시스템의 디스카드 커맨드 전달 방법
EP4357928A1 (en) Methods and system for efficient access to solid state drive
US11892951B2 (en) Key packing for flash key value store operations
CN110442569B (zh) 在键值固态设备中进行数据分析的装置和方法
CN117271396A (zh) 用于基于固态驱动器的独立磁盘冗余阵列的方法和系统
US20240061784A1 (en) System and method for performing caching in hashed storage
US11868401B2 (en) Electronic device and method for acquiring size of file or directory stored in file system
US20230393906A1 (en) Method and system for accelerating application performance in solid state drive
US20240160429A1 (en) Firmware upgrade method of network storage and network storage
CN117908766A (zh) 用于高效访问固态驱动器的方法和系统
CN117194004A (zh) 存储器装置及其操作方法
CN117591006A (zh) 用于在散列存储中执行高速缓存的系统和方法
KR20240074597A (ko) 전자 장치 및 전자 장치의 파일 시스템 운영 방법
WO2020055534A1 (en) Hybrid memory system interface
CN117909966A (zh) 计算存储装置以及在计算存储装置中检测攻击者的方法