KR20170043993A - 인터페이스 제어 메커니즘을 갖는 전자 시스템 및 그것의 동작 방법 - Google Patents

인터페이스 제어 메커니즘을 갖는 전자 시스템 및 그것의 동작 방법 Download PDF

Info

Publication number
KR20170043993A
KR20170043993A KR1020160062286A KR20160062286A KR20170043993A KR 20170043993 A KR20170043993 A KR 20170043993A KR 1020160062286 A KR1020160062286 A KR 1020160062286A KR 20160062286 A KR20160062286 A KR 20160062286A KR 20170043993 A KR20170043993 A KR 20170043993A
Authority
KR
South Korea
Prior art keywords
command
interface
central processing
logical block
key value
Prior art date
Application number
KR1020160062286A
Other languages
English (en)
Other versions
KR102358477B1 (ko
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 KR20170043993A publication Critical patent/KR20170043993A/ko
Application granted granted Critical
Publication of KR102358477B1 publication Critical patent/KR102358477B1/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
    • 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
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0638Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0632Configuration or reconfiguration of storage systems by initialisation or re-initialisation of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/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
    • 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/068Hybrid storage device
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/205Hybrid memory, e.g. using both volatile and non-volatile memory

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)
  • Stored Programmes (AREA)

Abstract

본 발명은 스토리지 장치를 포함하는 전자 시스템에 관한 것이다. 스토리지 장치를 포함하는 전자 시스템은 인터페이스 커맨드를 수신하도록 구성되고, 스토리지 장치는 인터페이스 제어 유닛, 인터페이스 제어 유닛에 연결되고, 논리 블록 어드레스 커맨드를 실행하도록 구성된 제 1 중앙 처리 장치, 인터페이스 제어 유닛에 연결되고, 키 값 커맨드를 실행하도록 구성된 제 2 중앙 처리 장치 및 휘발성 메모리, 제 1 중앙 처리 장치 및 제 2 중앙 처리 장치들에 연결되고, 논리 블록 어드레스 커맨드 및 키 값 커맨드를 독립적으로 그리고 동시에 처리하도록 구성된 불휘발성 스토리지를 포함하되, 논리 블록 어드레스 커맨드 또는 키 값 커맨드를 완료한 후에, 제 1 중앙 처리 장치 또는 제 2 중앙 처리 장치는 세부 상태(a detailed status)를 컴파일(compile)하도록 구성되고, 인터페이스 제어 유닛은 장치 연결 구조체에 연결되고, 세부 상태를 장치 드라이버에 전달함으로써 인터페이스 커맨드에 응답하도록 구성된다.

Description

인터페이스 제어 메커니즘을 갖는 전자 시스템 및 그것의 동작 방법{ELECTRONIC SYSTEM WITH INTERFACE CONTROL MECHANISM AND METHOD OF OPERATION THEREOF}
본 발명은 일반적으로 전자 시스템에 관한 것으로, 좀 더 구체적으로는 데이터 스토리지 기능들을 갖춘 전자 시스템 및 그것의 동작방법에 관한 것이다.
현대의 솔리드 스테이트 드라이브(이하 SSD, solid state disk)들은 데이터 동작들(data operations)이 수행되는 동안 솔리드 스테이트 드라이브(SSD)의 빠른 응답 속도로 인해 데이터 스토리지 전략들(data storage strategies)에 성장하는 세그먼트(a growing segment)를 보여준다. 많은 수의 솔리드 스테이트 드라이브(SSD)들은 자기 디스크 드라이브들(magnetic disk drives)보다 더 높은 용량, 저전력 소비 및 고성능을 데이터 센터들에 제공한다. 솔리드 스테이트 드라이브(SSD)들로 이동(the migration)이 모멘텀(momentum)을 얻어감에 따라, 데이터 블록(a data block)이 512 바이트(bytes)로 제한되어야만 하는 것인지에 관한 의문이 생겨나고 있다. 종래의 512 바이트 블록은 자기 미디어(magnetic media)의 신뢰성 이슈들(the reliability issues)을 처리하는데 적합하였다. 오늘날 대다수의 오퍼레이팅 시스템들(operating systems)은 고정 블록 사이즈(the fixed block size)에 매여있는 실정이다.
대용량 데이터 베이스들을 다루는 로지스틱스(logistic)들은 오퍼레이팅 시스템들의 기술적인 측면의 약점을 노출시킨다. 고정 블록 사이즈를 증가시키기 위해 몇몇의 접근들이 시도되었으나, 일부 스토리지 제조 업체들은 512 에뮬레이션 모드(a 512 emulation mode)를 실행함으로써 내부 데이터 블록 사이즈들을 숨기는 것에 의존하고 있다. 전형적으로, 내부 데이터 블록 사이즈들은 1 킬로 바이트(1K bytes)에서 4 킬로 바이트(4K bytes)일 수 있다. 이렇게 함으로써, 일부 스토리지 제조 업체들은 고정 블록 인터페이스의 전송들의 비효율성에 대처하면서 더 큰 내부 데이터 블록들의 사용을 숨겨왔다. 그러나, 이러한 전략들은 복잡한 에러 복구 프로세스들(difficult error recovery processes)을 포함하며, 심각하게 성능을 저하시키는 읽기-변경-쓰기 동작들(read-modify-write operations)을 포함할 수 있다. 따라서, 단일 블록 업데이트들(single block updates)의 수행에 대한 필요성이 제기되고 있다.
그러므로, 실행의 안정성 및 성능을 향상시키기 위한 인터페이스 조절 메커니즘을 갖는 전자 시스템에 대한 요구는 클러스터 컴퓨팅 환경에서 여전히 존재하고 있다. 지속적으로 증가하는 상업 경쟁의 측면에서, 소비자의 기대는 증가하고 있으며 시장 속에서 의미 있는 제품 차별화를 위한 기회는 감소하고 있다. 따라서, 이러한 문제들에 대한 해답을 발견하는 것이 점점 더 중요해지고 있다. 게다가 생산 비용의 감소, 제품의 효율성 및 성능의 향상 그리고 상업적 경쟁 압력을 만족에 대한 요구들이 존재한다. 결국 이러한 문제들에 대한 해답을 찾는 것이 매우 중요해지고 있다.
이러한 문제들의 해결책에 관한 요구는 꾸준히 제기되어왔으나, 이전의 개발물들(prior developments)은 이러한 문제들에 대한 해결책이 되지 못하고 있는 실정이다.
본 발명의 목적은 향상된 성능의 데이터 스토리지 기능들을 갖춘 전자 시스템 및 그것의 동작방법을 제공하는데 있다.
본 발명의 일 실시 예에 따른 스토리지 장치를 포함하는 전자 시스템에 있어서, 스토리지 장치는 인터페이스 커맨드를 수신하도록 구성되고, 인터페이스 제어 유닛, 인터페이스 제어 유닛에 연결되고, 논리 블록 어드레스 커맨드를 실행하도록 구성된 제 1 중앙 처리 장치, 인터페이스 제어 유닛에 연결되고, 키 값 커맨드를 실행하도록 구성된 제 2 중앙 처리 장치 및 휘발성 메모리, 제 1 중앙 처리 장치 및 제 2 중앙 처리 장치들에 연결되고, 논리 블록 어드레스 커맨드 및 키 값 커맨드를 독립적으로 그리고 동시에 처리하도록 구성된 불휘발성 스토리지를 포함하되, 논리 블록 어드레스 커맨드 또는 키 값 커맨드를 완료한 후에, 제 1 중앙 처리 장치 또는 제 2 중앙 처리 장치는 세부 상태(a detailed status)를 컴파일(compile)하도록 구성되고, 인터페이스 제어 유닛은 장치 연결 구조체에 연결되고, 세부 상태를 장치 드라이버에 전달함으로써 인터페이스 커맨드에 응답하도록 구성된다.
본 발명의 일 실시 예에 따른 스토리지 장치를 포함하는 전자 시스템의 동작 방법에 있어서, 스토리지 장치에 의해 인터페이스 커맨드를 수신하는 단계, 논리 블록 어드레스 커맨드 또는 키 값 커맨드를 완료한 후, 제 1 중앙 처리 장치 또는 제 2 중앙 처리 장치에 의해 세부 상태를 컴파일하는 단계 및 세부 상태를 장치 연결 구조체를 통해 장치 드라이버에 전달함으로써 인터페이스 커맨드에 응답하는 단계를 포함하되, 스토리지 장치에 의해 인터페이스 커맨드를 수신하는 단계는, 인터페이스 제어 유닛에서 인터페이스 커맨드를 분석하는 단계, 논리 블록 어드레스 커맨드를 실행하기 위해 제 1 중앙 처리 장치를 선택하는 단계, 키 값 커맨드를 실행하기 위해 제 2 중앙 처리 장치를 선택하는 단계, 불휘발성 스토리지를 엑세스하기 위해 논리 블록 어드레스 커맨드 및 키 값 커맨드를 독립적으로 및 동시에 처리하는 단계를 포함한다.
본 발명의 실시 예에 따르면, 향상된 성능의 데이터 스토리지 기능들을 갖춘 전자 시스템 및 그것의 동작방법이 제공된다.
도 1은 본 발명의 일 실시 예에 따른 인터페이스 제어 메커니즘을 갖는 전자 시스템의 구조를 나타내는 블록도이다.
도 2는 본 발명의 실시 예의 스토리지 장치의 조절 커맨드(201)의 순서도를 보여준다.
도 3은 본 발명의 일 실시 예에 따른 전자 시스템에 의한 커맨드 해석의 순서를 보여준다.
도 4는 본 발명의 다른 실시 예에 따른 전자 시스템의 동작 방법의 순서도를 보여준다.
다양한 실시 예들은 부담이 적은 입출력 구조(a less burdensome I/O architecture)를 구축함으로써 대용량 데이터 베이스들에 대한 인터페이스 제어 매커니즘을 제공한다. 이 경우 인터페이스 제어 매커니즘은 분산 입출력 인터페이스(the distributed input/output interface)를 단순화하고 전자 시스템의 실행 효율(the execution efficiency)을 최대화할 수 있다. 인터페이스 제어 매커니즘은 입출력 스토리지의 스택 구조를 이용하지 않으면서 사용자 프로그램(a user program)에서 사용된 데이터를 즉석에서(on-the-fly) 처리하도록 구현되거나 또는 오퍼레이팅 시스템들의 고정 블록 구조를 지원하도록 구현될 있다. 스토리지 장치들에 효율적인 액세스(efficient access)를 제공하고 최대의 프로그램 실행 효율(the maximum program execution efficiency)을 제공하기 위해서, 인터페이스 제어 매커니즘의 실행은 사용자 프로그램 레벨(a user program level)에서 구현될 수 있다.
다양한 실시 예들은 통상적인 입출력 스토리지 스택들의 외부에 대용량 전송들(large transfers)을 허용하거나 오퍼레이팅 시스템의 구조들에 의해 제공된 표준 고정 블록 전송들(a standard fixed block tranfers)을 허용함으로써, 대용량 데이터 베이스들에 대한 인터페이스 제어 매커니즘을 제공한다. 또한, 인터페이스 제어 매커니즘은 데이터 또는 논리 블록 어드레스에 할당된 키 값(key value)에 기반하여 데이터의 조작(manipulation)을 가능하게 한다. 데이터 관리 매커니즘은 오퍼레이팅 시스템을 통해 입출력 호출들을 생성하지 않으면서 호스트의 중앙 처리 장치(CPU, central processing unit) 및 시스템 메모리에서 동작할 수 있다. 키 값(key value) 스토리지 장치의 동작 특성들을 관리하는 동안, 시스템 메모리의 사용자 정의 공간(user defined space)으로부터 인터페이스 제어 매커니즘의 실행은 더 높은 우선 순위의 동작을 제공할 수 있다. 또한, 일반적으로 전자 시스템은 최근 오퍼레이팅 시스템들의 고정 블록 구조를 지원할 수 있다. 이러한 조합은 데이터 관리 매커니즘의 효율성과 동작 성능을 증가시킬 수 있다.
하기의 실시 예들은 통상의 기술자가 본 발명을 수행하고 사용하기에 충분할 정도로 상세하게 설명된다. 현재 설명을 기반으로 다른 실시 예들이 분명해지고, 본 발명의 실시 예의 범위를 벗어나지 않는 시스템, 프로세스 또는 기계적인 변형들이 수행될 수 있음은 이해될 수 있다.
하기의 설명으로, 본 발명의 완전한 이해를 위해 다수의 특정 세부 내용들이 제공된다. 그러나, 이러한 특정 세부 사항들이 없이도 본 발명이 수행될 수 있음은 명백할 것이다. 본 발명의 일 실시 예를 모호하게 하는 것을 피하기 위해, 몇몇의 잘 알려진 회로, 시스템 구성들 및 프로세스 단계들은 자세히 설명되지 않을 것이다.
시스템의 실시 예들을 보여주는 도면들은 반도식적(semi-diagrammatic)이며, 축적되지 않는다(not to scale). 특히, 시스템의 실시 예들을 보여주는 도면들의 차원들의 일부는 본 발명의 명확성을 위해 도면들에서 과장되어 보여진다. 유사하게, 설명의 편의를 위해 도면들의 관점들은 일반적으로 유사한 방향을 보여주지만, 도면에서 이러한 설명은 대부분 임의적인 것이다. 일반적으로 본 발명은 임의의 방향에서 동작될 수 있다.
본 명세서에서 언급되는 “모듈”이란 용어는 이러한 용어가 사용되는 문맥에 따라 소프트웨어, 하드웨어 또는 본 발명의 실시 예에서 이들의 조합을 포함할 수 있다. 예를 들어, 소프트웨어는 머신 코드(machine code), 펌웨어(firmware), 임베디드 코드(embedded code) 및 어플리케이션 소프트웨어(application software)일 수 있다. 또한, 예를 들어, 하드 웨어는 회로, 프로세서, 컴퓨터, 집적 회로, 집적 회로 코어들, 압력 센서, 관성 센서, 마이크로 전자 기계 시스템(MEMS, microelectromechanical system), 수동 소자들(passive devices) 또는 이들의 조합일 수 있다. 나아가, 모듈이 하기의 장치 청구항들로 작성되는 경우, 모듈은 장치 청구항들의 목적과 범위에 관한 하드웨어 회로를 포함하는 것으로 간주된다.
본 명세서에서 언급되는 “유닛”이란 용어는 특정한 기능들을 위해 사용되는 하드웨어 구성요소들 또는 하드 웨어 상태 머신들로 구성된 회로이다. “유닛”은 중요한 기능들을 조절하기 위한 것일 수 있고, 소프트웨어 기능들 또는 지원을 반드시 포함하는 것이 아닐 수 있다. 본 명세서에서 언급된 “통상적인 입출력 스토리지 스택들”이란 용어는 호스트 시스템 메모리 내의 메모리 세그먼트들이다. 이 경우, 메모리 세그먼트들은 어드레스 포인터들을 보유하고 오퍼레이팅 시스템에 의해 수행되는 입출력 동작들에 대한 플래그(flag)들을 인터럽트(interrupt)하기 위해 사용된다. 인터럽트 포인터들을 갖는 메모리를 로드하기 위해, 통상적인 입출력 스토리지 스택들(the customary I/O storage stacks)은 입출력(I/O)에 레이턴시(latency)를 삽입한다. 이 경우, 인터럽트 포인터들은 데이터의 고정 사이즈 블록의 전송과 관련된 인터럽트를 제공하는 것을 기반으로 한 입출력 장치에 대한 (또는 입출력 장치로부터의) 데이터의 전송을 제공한다.
키 값(key value) 스토리지 솔루션을 요구하는 데이터 솔루션들은 향상된 스토리지 기술을 지원하는 사용 가능한 스토리지 장치들(useable storage devices)을 식별하는데 어려움을 겪고 있다. 다른 난관은 키 값(key value) 커맨드 구조를 지원하는 스토리지 장치들은 오직 논리 블록 어드레스(LBA) 구조만을 지원하는 래거시 시스템들(legacy systems)에 사용될 수 없다는 점이다. 논리 블록 어드레스(LBA) 인터페이스의 스토리지 장치들에 대하여, 키 값(key value) 커맨드들을 지원하기 위한 두 가지 이슈들이 있다. 첫째 이슈는 두 개의 맵핑 층들(two mapping layers)이 요구된다는 점이다. 맵핑 층들 중 하나는 키(key)를 인덱스(index)로 사용하여 값 위치(value location)들을 되찾기 위한 것이다. 그리고 다른 하나는 블록 입출력 요청들(block I/O requests)을 발행하기 이전에 값 위치 정보(key location information)를 이용하여 값(value)을 되찾기 위한 것이다. 두 번째 이슈는 두 개의 맵핑 시스템은 광범위한 데이터 전송 오버헤드(extensive data transfer overhead)를 필요로 한다는 점이다. 그러나, 데이터 전송의 단위들이 고정된 사이즈(예를 들어, 512 바이트(bytes) 또는 4 킬로 바이트(Kbytes))의 블록이라는 사실에 의해 오버헤드가 더 악화될 수 있다. 데이터의 사이즈가 블록의 사이즈와 일치하지 않는 경우, 고정된 사이즈의 블록은 불필요한 데이터의 전송을 유발할 수 있다.
도 1을 참조하면, 본 발명의 일 실시 예에 따른 인터페이스 제어 메커니즘을 갖는 전자 시스템의 구조를 나타내는 블록도이다. 전자 시스템(100)은 스토리지 장치(102)를 포함한다. 예를 들어, 스토리지 장치(102)는 하이브리드 디스크 스토리지 장치들(hybrid disk storage devices)과 파일 구조들(file structures)을 식별하기 위한 키 값(key value)의 방식으로 어드레스되는 키 값 스토리지 아답터들(key value storage adapters)을 포함할 수 있다. 게다가, 스토리지 장치(102)는 플래시 메모리를 기반으로 한 솔리드 스테이트 드라이브들(SSSD), 자기 랜덤 엑세스 메모리(MRAM), 저항 메모리(RRAM) 및 상 변화 메모리(PCM, phase change memory)를 포함할 수 있다. 스토리지 장치(102)는 데이터 스토리지 매커니즘(non-volatile data storage mechanism)일 수 있다. 이 경우 데이터 스토리지 매커니즘은 키 값 어드레싱 방식 또는 LBA 어드레싱 방식에 의해 사용자 데이터(user data)를 저장 및 엑세스한다. 스토리지 장치(102)는 오퍼레이팅 시스템으로부터 일반 고정 블록의 전송들(normal fixed block transfers)뿐만 아니라 대용량 데이터 베이스들을 관리하는 컴퓨팅 환경의 데이터 처리를 위해 사용될 수 있다.
장치 결합 구조체(104)는 스토리지 장치(102)를 호스트 프로세서(106)와 연결할 수 있다. 장치 결합 구조체(104)는 호스트 프로세서(106)와 스토리지 장치(102) 사이에 연결된 입출력 인터페이스 구조체일 수 있다. 장치 결합 구조체(104)는 PCIe(peripheral computer interface express), FC(fiber channel), SCSI(small computer system interface), SAS(serial attached SCSI) 및 호스트의 메모리 채널 인터페이스들을 포함할 수 있다. 장치 결합 구조체(104)는 메모리 시스템(100)의 전자 시스템(100)에 대한 호스트 내부 어플리케이션의 메모리 버스로 구현될 수 있다. 장치 결합 구조체(104)는 호스트 프로세서(106) 및 스토리지 장치(102) 사이에 로컬 또는 원격의 접속을 제공할 수 있다. 스토리지 장치(102)와 호스트 프로세서(106) 사이의 장치 결합 구조체(104)의 연결은 장치 결합 구조체(104)의 사양(specification)을 만족시키는 방식으로 수행된다.
장치 결합 구조체(104)는 LBA 전송들 또는 키 값 전송들을 위해 스토리지 장치(102)에 직접 연결 및 통신을 제공할 수 있다. 논리 블록 어드레스(LBA)의 전송들을 이용한 통신은 오퍼레이팅 시스템에 의해 제공된 입출력 호출을 요구하고, 논리 블록 어드레스(LBA) 구조를 이용할 수 있음은 이해될 것이다. 스토리지 장치(102)가 논리 블록 어드레스(LBA) 구조 및 선형(linear) 스토리지 구조를 기반으로 한 키 값(key value)을 사용할 수 있기 때문에, 호스트 프로세서(106)로부터의 통신은 단순화될 수 있다.
프로세서(106)는 일반적인 목적의 컴퓨터, 컴퓨터 네트워크, 서버, 스토리지 프로세서, GPU, ASIC, FPGA, PLD 또는 이들과 유사한 것일 수 있다. 호스트 프로세서(106)는 키-값(key value) 장치 어플리케이션 프로그램 인터페이스(108, API, application program interface), 논리 블록 어드레스(LBA) 어플리케이션 프로그램 인터페이스(109, API) 및 장치 드라이버(110)를 실행할 수 있다.
키 값(key value) 장치 어플리케이션 프로그램 인터페이스(108)는 스토리지 장치(102)의 동작 특성들(operational characteristics)의 설명(description)을 포함하는 것 없이 사용자 어플리케이션들이 스토리지 장치(102)를 엑세스하는 것을 허용하는 어플리케이션 인터페이스를 제공한다. 키-값(key value) 장치 어플리케이션 프로그램 인터페이스(108)는 표준 어플리케이션 인스트럭션들(standard Application instructions)을 장치 드라이버(110)에 의해 인식될 수 있는 형식으로 번역하는 프로그램이다. 스토리지 장치(102)에 의해 인식되는 인터페이스 커맨드들(111)에 대한 변환을 위해, 논리 블록 어드레스(LBA) 어플리케이션 프로그램 인터페이스(109)는 어플리케이션 요구들(requirements)을 장치 드라이버(110)에 전달할 수 있다. 장치 드라이버(110)는 논리 블록 어드레스(LBA) 구조 및 선형 스토리지 구조를 기반으로 한 키 값(key value)을 모두 지원하는 인터페이스 커맨드들(110)을 처리할 수 있다. 인터페이스 커맨드들(111)은 조절 커맨드들(conditioning commands)과 데이터 처리 커맨드들(data processing commands)을 포함할 수 있다.
장치 드라이버(110)는 장치 결합 구조체(104)를 통해 NVMe의 특정 버전의 벤더(vendor)와 통신할 수 있다. 스토리지 장치(102)의 실시 예는 논리 블록 어드레스(LBA) 구조를 지원하는 기본 구성을 포함할 수 있고, 키-값(key value) 구조를 지원하기 위해서 스토리지 장치(102)의 리소스들(resources)의 일부 또는 전부를 변환시키는 능력을 포함할 수 있다. 논리 블록 어드레스(LBA) 구조, 키-값(key-value) 구조 또는 이들의 조합을 지원하는 하드웨어 및 펌웨어 자원들을 구현하기 위해서, 장치 드라이버(110)는 스토리지 장치(102)에 조절 커맨드(conditioning command)를 전송할 수 있다.
장치 드라이버(110)는 장치 결합 구조체(104)를 통해 스토리지 장치(102) 내 인터페이스 제어 유닛(112)과 통신할 수 있다. 인터페이스 제어 유닛(112)은 커맨드 멀티플렉서(114)를 포함할 수 있다. 예를 들어, 커맨드 멀티플렉서(114)는 들어오는 커맨드가 조절 커맨드(111), 논리 블록 어드레스 커맨드(115) 또는 키 값 커맨드(116) 중 어느 것인지를 감지할 수 있다. 커맨드 멀티플렉서(114)는 인터페이스 제어 유닛(112)으로 들어오는 정보를 제 1 커맨드 프로세서(117) 또는 제 2 커맨드 프로세서(118)로 전달할 수 있다. 장치 드라이버(110)로부터 조절 커맨드(111)를 지원하기 위해, 스토리지 장치(102)는 인터페이스 제어 유닛(112)의 하드웨어 및 펌웨어를 구성할 수 있다.
일 실시 예로, 인터페이스 제어 유닛(112)은 프로세서를 실행하는 펌웨어를 구성하는 모듈 또는 커맨드 구조를 복호화(decoding)하고 복호화된 커맨드를 제 1 커맨드 프로세서(117) 또는 제 2 커맨드 프로세서(118)에 전달하는 전용 하드웨어를 갖는 유닛로서 구현될 수 있다. 하나의 구현은 전자 시스템(100)의 유틸리티(utility)를 지원할 수 있다.
제 1 커맨드 프로세서(117)는 전자 시스템(100)에서 즉시 이용 가능한 임의의 커맨드 프로세싱 유닛(CPU, command processing unit) 리소스(resource)일 수 있다. 연속적인 커맨드 시퀀스들에서, 제 1 커맨드 프로세서(117)는 다른 커맨드 프로세싱 유닛(CPU)일 수 있다. 나아가 제 2 커맨드 프로세서(118)는 제 1 커맨드 프로세서(117)의 펌웨어를 실행하지 않고 있는 다른 이용 가능한 커맨드 프로세싱 유닛(CPU) 리소스일 수 있음은 이해될 것이다. 일 실시 예로, 제 1 커맨드 프로세서(117)는 논리 블록 어드레스(LBA) 커맨드를 지원하는 펌웨어를 실행하는 단일 커맨드 프로세싱 유닛(single CPU)의 구현일 수 있고, 제 2 커맨드 프로세서(118)는 키 값 커맨드(116)를 지원하는 펌웨어를 실행하는 같은 단일 커맨드 프로세싱 유닛(single CPU)일 수 있다.
논리 블록 어드레스(LBA) 커맨드(115)는 섹터 기반의 오퍼레이팅 시스템의 표준 커맨드일 수 있다. 그리고 0부터 15의 번호를 갖는 16 더블 워드들(DWORD, DWORD 당 32 bit)을 구성하는 커맨드 구조에 기반한 레지스터에 의해, 논리 블록 어드레스(LBA) 커맨드(115)는 호스트 프로세서(106)와 스토리지 장치(102) 사이에서 전송될 수 있다. 논리 블록 어드레스(LBA) 커맨드(115)에서, DWORD0은 동작 코드이고, DWORD1은 시스템 식별자(NSID)이다. 논리 블록 어드레스(LBA) 커맨드(115)에서, DWORD2부터 DWORD11은 일반적인 커맨드 정보를 위해 예약되거나 사용된다. DWORD12는 논리 블록 어드레스(LBA) 커맨드(115)에 따라 처리될 섹터들의 수를 나타내기 위해 사용된다. DWORD12부터 DWORD15는 키 값 커맨드(116)와 관련된다. 논리 블록 어드레스(LBA) 커맨드(115)는 섹터들에 의한 데이터만들 전송할 수 있고, 각 섹터는 논리 블록 어드레스와 관련된 논리 블록으로 계산된다.
키 값 커맨드(116)는 0부터 15의 번호를 갖는 16 더블 워드들(DWORD, DWORD 당 32 bit)을 구성하는 커맨드를 기반으로 한 레지스터일 수 있다. 키 값 커맨드(116)에서, DWORD0은 동작 코드이고, DWORD1은 시스템 식별자(NSID)이다. 키 값 커맨드(116)에서, DWORD2부터 DWORD14은 일반적인 커맨드 정보를 위해 예약되거나 사용된다. DWORD15는 키 값 커맨드(116)에서 키(key)의 크기에 대한 구체적인 컨텐츠이다. 키 값 커맨드(116)는 키와 관련된 데이터의 바이트(bytes)의 수를 전송할 수 있다.
일 실시 예로, 제 1 커맨드 프로세서(117)와 제 2 커맨드 프로세서(118)는 논리 블록 어드레스 커맨드(115)만을 지원하는 초기 구성을 포함할 수 있다. 장치 드라이버(110)로부터 조절 커맨드는 제 1 커맨드 프로세서(117)와 제 2 커맨드 프로세서(118)들 중 하나의 프로세서가 키 값 커맨드(116)를 처리하기 위해 재배열되는 것을 유발할 수 있다. 제 1 커맨드 프로세서(117)와 제 2 커맨드 프로세서(118)들 중 하나의 프로세서가 키 값 커맨드(116)를 처리하기 위해 재배열되는 경우에만, 스토리지 장치(102)는 논리 블록 어드레스 커맨드(115)와 키 값 커맨드(116)를 동시에 처리할 수 있다.
논리 블록 어드레스 커맨드(115)만을 지원하는 스토리지 장치(102)의 초기 구성은 예시적인 것임은 이해될 것이다. 또한, 스토리지 장치(102)의 초기 구성은 논리 블록 어드레스 커맨드(115)와 키 값 커맨드(116)의 조합을 지원하거나, 오직 키 값 커맨드(116)만을 지원하는 초기 구성일 수도 있다. 스토리지 장치(102)의 특정한 초기 구성은 하나의 실시 예로 한정되는 것이 아니다. 나아가, 스토리지 장치(102)의 리소스들의 일부는 오직 논리 블록 어드레스 커맨드(115)를 실행하도록 할당되고, 스토리지 장치(102)의 리소스들의 나머지 일부는 키 값 커맨드(116)만을 실행하도록 할당될 수 있기 때문에, 스토리지 장치(102)는 논리 블록 어드레스 커맨드(115)와 키 값 커맨드(116)를 독립적으로 또는 동시에 실행할 수도 있다. 스토리지 장치(102)는 전용 리소스들을 통해 동시에 두 개의 커맨드 종류를 실행하거나, 서로 독립적으로 하나의 커맨드를 실행할 수 있다.
제 1 커맨드 프로세서(117) 또는 제 2 커맨드 프로세서(118)는 읽기, 쓰기 또는 소거와 같은 데이터 처리 커맨드(111)를 수신할 수 있다. 그리고, 제 1 커맨드 프로세서(117) 또는 제 2 커맨드 프로세서(118)는 실제 커맨드의 처리를 복수의 중앙 처리 장치들(120, CPUs, cetral processing units) 중에서 하나의 중앙 처리 장치에 할당할 수 있다. 예를 들어, 복수의 중앙 처리 장치들(120)은 제 1 중앙 처리 장치(122)와 제 2 중앙 처리 장치(124)를 포함할 수 있다. 일 실시 예는 네 개의 중앙 처리 장치들을 포함하는 것으로 도시되나, 임의의 개수의 중앙 처리 장치들을 포함할 수 있다. 복수의 중앙 처리 장치들(120)은 비트 슬라이스 프로세서(bit-slice processor), 마이크로 프로세서, 프로그램 가능한 상태 머신(programmable state machine), 프로그램 시퀀서(program sequencer), 마이크로 컴퓨터 또는 이들과 유사한 것일 수 있다. 제 1 커맨드 프로세서(117) 또는 제 2 커맨드 프로세서(118)는 조절 커맨드를 기반으로 키-값 커맨드(116) 또는 논리 블록 어드레스 커맨드(115)를 처리하기 위해 복수의 중앙 처리 장치들(120)을 구현할 수 있다. 데이터 처리 커맨드의 실행 동안, 복수의 중앙 처리 장치들(120) 각각은 할당된 특정한 커맨드 종류를 포함할 수 있다. 그리고 복수의 중앙 처리 장치들(120) 각각이 재구성될 때까지, 복수의 중앙 처리 장치들(120) 각각은 오직 논리 블록 어드레스(LBA) 커맨드 또는 키 값(key value) 커맨드와 같은 특정 종류의 커맨드만을 수행할 것이다.
예로서, 제 1 중앙 처리 장치(122)는 처리되어야 할 데이터에 대하여 임시 스토리지 또는 캐시로 휘발성 메모리(126)를 이용하여 논리 블록 어드레스 커맨드(115)를 실행할 수 있다. 그리고 제 1 중앙 처리 장치(122)는 처리되어야 할 데이터에 대하여 장기 스토리지 장치(long-term machanism)로 불휘발성 스토리지(128)를 이용하여 논리 블록 어드레스 커맨드(115)를 실행할 수 있다. 제 1 중앙 처리 장치(122)는 논리 블록 어드레스 커맨드(115)를 실행하도록 구성되기 때문에, 논리-물리 테이블은 휘발성 메모리(126)에 유지될 수 있다. 그리고 논리-물리 테이블은 전력 다운(power down) 이전에 불휘발성 스토리지(128) 내 예약 위치(reserved location)에 카피될 수 있다. 논리-물리 테이블은 논리 블록 어드레스(LBA)들 각각에 대한 위치 포인터들을 불휘발성 스토리지(128)의 물리 위치에 유지할 수 있다. 이 경우, 불휘발성 스토리지(128)의 물리 위치는 논리 블록 어드레스에 대한 데이터가 저장되는 공간이다.
논리 블록 어드레스(115)를 실행하는 제 1 중앙 처리 장치(122)와 동시에, 제 2 중앙 처리 장치(124)는 키 값 커맨드(116)를 실행할 수 있다. 제 2 중앙 처리 장치(124)는 처리되어야 할 데이터에 대하여 임시 스토리지 또는 캐시로 휘발성 메모리(126)를 이용할 수 있다. 그리고 제 2 중앙 처리 장치(124)는 처리되어야 할 데이터에 대하여 장기 스토리지 장치(long-term machanism)로 불휘발성 스토리지(128)를 이용하여 논리 블록 어드레스 커맨드(115)를 실행할 수 있다. 제 2 중앙 처리 장치(124)는 키 값 커맨드(116)를 실행하도록 구성되기 때문에, 키 값 인덱스 리스트는 휘발성 메모리(126)에 유지될 수 있다. 그리고, 키 값 인덱스 리스트는 전력 다운(power down) 이전에 불휘발성 스토리지(128) 내 예약 위치(reserved location)에 카피될 수 있다. 키-물리 테이블은 키(key)들 각각에 대한 위치 포인터들을 불휘발성 스토리지(128)의 물리 위치에 유지할 수 있다. 이 경우 불휘발성 스토리지(128)의 물리 위치는 키(key)와 연관된 값(value)에 대한 데이터가 저장되는 공간이다.
불휘발성 스토리지(128)는 하이브리드 디스크 스토리지 장치들과 키 값 스토리지 아답터들 뿐만 아니라 플래시 메모리, 자기 랜덤 엑세스 메모리(MRAM), 저항 랜덤 엑세스 메모리(RRAM) 및 상 변화 메모리(PCM)를 포함할 수 있다. 불휘발성 스토리지(128)는 물리적으로 스토리지 장치(102) 위에 놓이는 것으로 보여지나 이것은 하나의 실시 예일 뿐이며, 다른 실시 예들이 가능할 수 있음은 이해될 것이다. 일 실시 예로, 불휘발성 메모리(128)는 네트워크 또는 케이블에 연결된 저장 장치일 수 있고, 논리 블록 어드레스 커맨드(115) 또는 키 값 커맨드(116)으로부터 데이터를 저장하기 위해서, 복수의 중앙처리 장치들(120)은 후속 커맨드들(subsequent commands)을 생성할 수 있다.
논리 블록 어드레스 커맨드(115) 또는 키 값 커맨드(116)의 실행이 완료되면, 인터페이스 커맨드(111)을 완료한 제 1 중앙 처리 장치(122) 또는 제 2 중앙 처리 장치(124)에 의해 세부 상태(130, detailed status)가 휘발성 메모리(126)에 컴파일(compiled) 될 수 있다. 인터페이스 커맨드(111)를 복수의 중앙 처리 장치들(120) 중 어느 하나에 할당한 제 1 커맨드 프로세서(117) 또는 제 2 커맨드 프로세서(118)에 의해, 세부 상태(130)는 장치 연결 구조체(104)를 통해 장치 드라이버(110)에 전송될 수 있다.
스토리지 장치(102)에서 동시에 논리 블록 어드레스 커맨드(115) 및 키 값 커맨드(116)을 실행하는 것을 허용함으로써, 전자 시스템(100)이 호스트 프로세서(106)의 성능을 향상시킬 수 있음은 확인되었다. 키 값 인덱스 리스트, 논리-물리 테이블 또는 이들의 조합을 유지하기 위해, 제 1 커맨드 프로세서(117)와 제 2 커맨드 프로세서(118)들은 복수의 중앙 처리 장치들(120)을 구성할 수 있다. 이 경우 키 값 인덱스 리스트, 논리-물리 테이블 또는 이들의 조합은 스토리지 장치(102)의 읽기, 쓰기 엑세스를 가능하게 한다.
도 2를 참조하면, 본 발명의 실시 예의 스토리지 장치의 조절 커맨드(201)의 순서도를 보여준다. S202 단계에서, 조절 커맨드(201)의 순서도는 어떠한 장치 드라이버가 하나의 장치를 구현하는 요청들(requirements)을 수신하는지에 대한 과정을 설명한다. 도 1의 호스트 프로세서(106)의 요청들을 지원하기 위해서, 도 1의 장치 드라이버(110)는 도 1의 키-값(key value) 장치 어플리케이션 프로그램 인터페이스(108) 및 논리 블록 어드레스(LBA) 어플리케이션 프로그램 인터페이스(109)에 의해 도 1의 스토리지 장치(102)를 구현하도록 수행될 수 있다.
호스트 프로세서(106)는 도 1의 스토리지 장치(102)의 논리 블록 어드레스 커맨드(115) 및 키 값 커맨드(116)의 믹스(mix)를 지원할 수 있다. 요청들(requirements)은 스토리지 장치(102)와의 통신을 위해 장치 드라이버(110)에 로드될 수 있다. S204 단계에서, 요청들(requirements)은 장치 드라이버(110)에 의해 실행될 수 있다. 이 경우 장치 드라이버(110)는 조절 커맨드(a conditioning command)를 스토리지 장치(102)에 전송한다. 장치 드라이버(110)는 도 1의 장치 연결 구조체(104)를 통해 조절 커맨드를 도 1의 인터페이스 제어 유닛(112)에 전송할 수 있다.
S206 단계에서, 스토리지 장치(102)는 조절 커맨드에 응답하여 펌웨어 또는 하드웨어 배열(configuration)을 변경한다. 도 1의 제 1 커맨드 프로세서(117)는 조절 커맨드(111)를 수신할 수 있다. 그리고 조절 커맨드를 만족시키기 위해, 제 1 커맨드 프로세서(117)는 펌웨어, 하드웨어 또는 이들의 조합에 임의의 구성의 변화들을 만들 수 있다. 제 1 커맨드 프로세서(117)는 도 1의 스토리지 장치(102)의 재배열을 돕기 위해 도 1의 제 1 중앙 처리 장치(122)를 배열할 수 있다. 스토리지 장치(102)의 재배열은 복수의 중앙 처리 장치들(120)에 대한 다른 펌웨어들을 맵핑하고 논리 블록 어드레스 커맨드(115) 및 키 값 커맨드(116) 사이의 메모리 포인터들을 구분하기 위한 하드웨어를 배열하는 것을 포함할 수 있다.
다른 배열이 요청되고 하드웨어 및 펌웨어의 배열의 변화가 수행될 수 있을 때, 이후에 추가적인 조절 커맨드들은 순차적으로 발생할 수 있음은 이해될 것이다. 조절 커맨드는 현재의 시스템 활동(activity)에 의해 요구되는 복수의 중앙 처리 장치들(120)의 임의의 비율로 논리 블록 어드레스 커맨드(115) 및 키 값 커맨드(116)들에 대한 지원의 믹스(mix)를 구현할 수 있다.
S208 단계에서, 재배열(reconfiguration)이 완료되면. 스토리지 장치(102)는 그것의 상태(status)를 장치 드라이버(110)에 반환한다. 제 1 중앙 처리 장치(122)는 휘발성 메모리(126)에 도 1의 세부 상태(130)를 준비할 수 있다. 이 경우, 세부 상태(130)는 조절 커맨드(111)에 의해 요청된 배열 변화들 각각의 성공 또는 실패를 가리킨다. 제 1 커맨드 프로세서(117)은 호스트 프로세서(106)에 응답하여 세부 상태(130)를 장치 연결 구조체(104)를 통해 장치 드라이버(110)에 전달할 수 있다.
스토리지 장치(102)의 일 실시 예는 단일의 조절 커맨드(111)로 스토리지 장치의 배열을 조절함으로써, 장치 연결 구조체(104)의 혼잡을 줄일 수 있음은 이해될 것이다. 스토리지 장치(102)는 임의의 비율을 갖는 논리 블록 어드레스 커맨드(115) 및 키 값 커맨드(116)들에 대한 지원의 믹스(mix)지원하도록 구현될 수 있다.
도 3은 본 발명의 일 실시 예에 따른 전자 시스템에 의한 커맨드 해석의 순서를 보여준다. S302 단계에서, 커맨드 해석의 순서도는 키 값(key-value)/논리 블록 어드레스(LBA)들이 믹스된(mixed) 인터페이스에 대한 커맨드를 구성하는 장치 드라이버를 설명한다. 도 1의 장치 드라이버는 읽기 커맨드로서 “GET”, 쓰기 커맨드로서 “PUT” 그리고 소거로서 “DELETE”를 포함하는 도 1의 데이터 처리 커맨드들(111)을 구성할 수 있다. NVMe 레지스터(register) 커맨드 셋(command set)의 포맷을 사용함으로써, 논리 블록 어드레스 커맨드(115) 및 키 값 커맨드(116)들이 같은 커맨드 포맷으로 맵핑될 수 있다.
S304 단계에서, 장치 드라이버(110)는 장치 연결 구조체(104)를 통해 커맨드(a command)를 스토리지 장치(102)에 전송한다. 인터페이스 커맨드(111)는 조절 커맨드(conditioning command) 또는 데이터 처리 커맨드(data processing command)들일 수 있다. 논리 블록 어드레스 커맨드(115) 및 키 값 커맨드(116)들을 인터페이스 커맨드들(111)에 맵핑함으로써, 도 1의 전자 시스템(110)은 논리 블록 어드레스 커맨드들(115)의 512 바이트 또는 4 킬로 바이트(Kbyte)의 제한에 제한되지 않으면서 인터페이스 커맨드(111)의 실제 바이트 카운트(actual byte count)를 전송할 수 있다.
S306 단계에서, 스토리지 장치(102)는 인터페이스 커맨드(111)를 수신한다. 이어, 스토리지 장치(102)는 수신한 인터페이스 커맨드(111)를 커맨드 멀티플렉서(114)로 전달한다. 도 1의 인터페이스 회로(112)는 인터페이스 커맨드(111)를 수신하고 장치 연결 구조체(104)와 관련된 전송 프로토콜(transfer protocol)을 처리할 수 있다.
S308 단계에서, 커맨드 멀티플렉서(114)는 인터페이스 커맨드(111)를 분석한다. 인터페이스 커맨드(111)가 조절 커맨드(111), 논리 블록 어드레스 커맨드(115) 또는 키 값 커맨드(116)인지 여부를 결정하기 위해, 커맨드 멀티플렉서(114)는 인터페이스 커맨드(111)의 포맷을 분석한다. 커맨드 멀티플렉서(114)는 NWMe 포맷의 DWORD12의 16 비트들 이하의 컨텐츠를 기반으로 논리 블록 어드레스 커맨드(115) 또는 키 값 커맨드(116) 사이의 결정을 조정할 수 있다. 이 경우 NWMe 포맷은 논리 블록 어드레스 커맨드(115)에 대한 섹터 카운트(sector count)를 포함한다. DWORD12이 0들을 포함하는 경우, 커맨드 멀티플렉서(114)는 NVMe 포맷의 DWORD15를 조사할 수 있다. 그리고 DWORD15는 키 값 커맨드(116)를 식별하기 위해 바이트들(bytes)의 “키” 사이즈를 포함한다. 만약 DWORD12 및 DWORD15 모두가 0을 포함하는 경우, 인터페이스 커맨드(111)는 조절 커맨드(111)로 식별될 수 있다.
S310 단계에서, 커맨드 멀티플렉서(114)는 인터페이스 커맨드(111)가 키 값 커맨드(116)인지 여부를 결정한다. 만약 인터페이스 커맨드(111)가 키 값 커맨드(116)이 아닌 경우, S312 단계가 수행된다. S312 단계에서, 커맨드 멀티플렉서(114)는 인터페이스 커맨드(111)를 제 1 커맨드 프로세서(117)과 같은 블록 커맨드 프로세서에 전송한다. 나아가, 인터페이스 커맨드(111)의 요청들을 추출하고, 인터페이스 커맨드(111)를 수행하기 위해 요청된 정보들을 가지고 불휘발성 메모리(126)를 셋업(set-up)시키기 위해, 제 1 커맨드 프로세서(117)는 인터페이스 커맨드(111)를 분석할 수 있다. 그리고 나서, 순서도는 S314 단계로 진입한다.
만약 S310 단계에서 인터페이스 커맨드(111)가 키 값 커맨드(116)으로 판단된 경우, 순서도는 S316 단계에 진입한다. S316 단계에서, 커맨드 멀티플렉서(114)는 인터페이스 커맨드(111)를 제 2 커맨드 프로세서(118)과 같은 키 값 커맨드 프로세서에 전송한다. 나아가, 인터페이스 커맨드(111)의 요청들을 추출하고, 인터페이스 커맨드(111)를 수행하기 위해 요청된 정보들을 가지고 불휘발성 메모리(126)를 셋업(set-up)시키기 위해, 제 2 커맨드 프로세서(118)는 인터페이스 커맨드(111)를 분석할 수 있다. 그리고 나서, 순서도는 S314 단계로 진입한다.
전자 시스템(100)의 단일 프로세서 환경에서 S310 단계는 논리 블록 어드레스 커맨드 또는 키 값 커맨드에 대한 준비(preparation)를 실행할 수 있는 실행 문자열(execution string)에 펌웨어 내의 브랜치(branch)일 수 있다. 실제로 데이터 전송(data transfer) 및 커맨드로부터의 클린-업(clean-up)을 수행하기 이전에, 커맨드 실행의 준비는 바이트 카운트들 전송(byte counts transfer), 데이터 데스티네이션(data destination) 및 상태 준비(status preparation)들을 구성할 수 있다. 이전의 S312 단계 또는 S316 단계에서 커맨드 셋-업을 수행하기 위해서, 순서도는 S314 단계로 진입할 것이다.
S314 단계에서, 제 1 커맨드 프로세서(117) 또는 제 2 커맨드 프로세서(118)는 복수의 중앙 처리 장치들(120) 중 하나의 중앙 처리 장치가 인터페이스 커맨드(111)를 실행하는 것을 식별할 수 있다. 예로써, 제 1 커맨드 프로세서(117)가 인터페이스 커맨드가 조절 커맨드(111) 또는 논리 블록 어드레스 커맨드(115)인지를 결정한 경우, 제 1 중앙 처리 장치(122)가 인터페이스 커맨드를 실행하도록 선택될 수 있다. 이와 반대로, 제 2 커맨드 프로세서(118)가 인터페이스 커맨드(111)가 키 값 커맨드(116)인 것을 감지한 경우, 제 2 중앙 처리 장치(124)는 인터페이스 커맨드(111)를 실행하기 위해 선택될 수 있다.
복수의 중앙 처리 장치들(120) 중 선택된 하나의 중앙 처리 장치는 인터페이스 커맨드(111)를 실행하기 위해 휘발성 메모리(126)로부터 정보를 가지고 오도록 구현될 수 있다. 만약 데이터 전송과 같은 추가적인 인터페이스 교환들이 요청되면, 복수의 중앙 처리 장치들(120) 중 선택된 중앙 처리 장치는 제 1 커맨드 프로세서(117) 또는 제 2 커맨드 프로세서(118)가 데이터 전송을 수행하는 것을 가능하게 할 수 있다. 복수의 중앙 처리 장치들(120) 중 선택된 중앙 처리 장치는 휘발성 메모리(126)와 불휘발성 메모리(128) 사이에서 데이터를 전송할 수 있다. 즉, 제 1 커맨드 프로세서(117) 또는 제 2 커맨드 프로세서(118)가 데이터 전송을 수행하기 이전에, 읽기 커맨드(111)는 불휘발성 스토리지(128)에서 휘발성 메모리(126)로 데이터를 전송할 것이다. 쓰기 커맨드들(111)인 경우, 데이터를 불휘발성 메모리(128)로 전송하기 이전에 데이터는 휘발성 메모리(126)로 전송될 수 있다. 두 가지 경우에, 데이터는 스토리지 장치(102)의 셋업에 적절한 캐시(cache)로 휘발성 메모리(126)에 유지될 수 있다.
그리고 나서 순서도는 S318 단계로 진입한다. 이 경우 스토리지 장치(102)는 완료 메시지를 장치 드라이버(110)에 전송한다. 인터페이스 커맨드(111)의 완료시, 복수의 중앙 처리 장치들(120) 중 선택된 중앙 처리 장치는 세부 상태(130, detailed status) 및 휘발성 메모리(126)의 셋업 완료 메시지를 결정할 수 있다. 그리고 복수의 중앙 처리 장치들(120) 중 선택된 중앙 처리 장치는 제 1 커맨드 프로세서(117) 또는 제 2 커맨드 프로세서(118)가 도 1의 세부 상태(130)를 장치 드라이버(110)에 전송하는 것을 가능하게 할 수 있다. 에러의 경우, 에러 디테일들(error details)이 세부 상태의 일부로서 전송될 수 있다.
논리 블록 어드레스 커맨드들(115)에 대한 제 1 커맨드 프로세서(117)와 키 값 커맨드들(116)에 대한 제 2 커맨드 프로세서(118)에 의해 초기 분석(initial ananlysis)과 구문 분석(parsing)이 수행되는 동안, 인터페이스 커맨드들(111)을 실행하는 복수의 중앙 처리 장치들(120)을 활용함으로써 전자 시스템(100)이 사용자 데이터(306)의 전송 레이턴시(latency of transfer)를 줄일 수 있음은 밝혀졌다. 즉석(on-the-fly) 조절 커맨드는 호스트 프로세서(106)가 논리 블록 어드레스 커맨드들(115)과 키 값 커맨드들(116) 각각에 적용된 리소스의 양을 정의하도록 허용하는 것을 수행하기 위해서, NVMe 커맨드 포맷은 논리 블록 어드레스 커맨드들(115)과 키 값 커맨드들(16)을 동일한 효율성과 처리 능력으로 다룰 수 있다.
도 4는 본 발명의 다른 실시 예에 따른 전자 시스템의 동작 방법의 순서도를 보여준다. 전자 시스템의 동작 방법(400)은, S402 단계에서, 스토리지 장치(102)에 의해 인터페이스 커맨드(111)를 수신하는 단계, 인터페이스 커맨드(111)의 DWORD15의 컨텐츠를 조사함으로써 인터페이스 제어 유닛(112)에서 인터페이스 커맨드(111)를 분석하는 단계, 만약 DWORD15이 0과 같다면 논리 블록 어드레스 커맨드(115)를 실행하기 위해 제 1 중앙 처리 장치(122)를 선택하는 단계, 만약 DWORD15이 0과 같지 않다면 키 값 커맨드(116)를 실행하기 위해 제 2 중앙 처리 장치를 선택하는 단계 및 불휘발성 스토리지(128)를 엑세스하기 위해 논리 블록 어드레스 커맨드(115) 및 키 값 커맨드들(116)을 독립적으로 및 동시에 처리하는 단계를 포함한다. 그리고 전자 시스템의 동작 방법(400)은, S404 단계에서, 논리 블록 어드레스 또는 키 값 커맨드를 완료한 이후에 제 1 중앙 처리 장치(122) 또는 제 2 중앙 처리 장치(124)에 의해 세부 상태(130)를 컴파일하는 단계를 포함한다. 그리고 전자 시스템의 동작 방법(400)은, S406 단계에서, 장치 연결 구조체(104)를 통해 장치 드라이버(110)에 세부 상태(130)를 전송함으로써 인터페이스 커맨드(111)에 응답하는 단계를 포함한다.
생성 방법, 프로세스, 장치, 소자, 제품 및/또는 시스템은 간단(straightforward)하고, 가격 경쟁력이 있고(cost-effective), 단순하고(uncomplicated), 매우 다양하게 적용할 수 있고(highly versatile), 정확하고(accurate), 민감하고(sensitive), 효과적(effective)이다. 그리고 생성 방법, 프로세스, 장치, 소자, 제품 및/또는 시스템은 준비되고, 효율적이고, 경제적인 제조 방식을 갖는 널리 알려진 구성 요소들을 채택함으로써 구현될 수 있다. 본 발명의 일 실시 예의 중요한 측면은 비용 절감의 역사적인 트랜드(historical trend), 시스템의 단순화(simplifying systems) 및 성능 증가(increasing performance)를 소중하게 지원하고 서비스한다는 점이다.
본 발명의 일 실시예의 또 다른 중요한 측면은 적어도 다음 단계의 기술 상태를 지원한다는 점이다.
본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능하다. 그러므로, 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
100: 전자 시스템 102: 스토리지 장치
104: 장치 결합 구조체 106: 호스트 프로세서
108: KV 장치 어플리케이션 프로그램 인터페이스
109: LBA 어플리케이션 프로그램 인터페이스
110: 장치 드라이버 111: 인터페이스 커맨드들
112: 인터페이스 제어 유닛 114: 커맨드 멀티플렉서
116: 키 값 커맨드 117: 제 1 커맨드 프로세서
118: 제 2 커맨드 프로세서 120: 복수의 중앙 처리 장치들
122: 제 1 중앙 처리 장치 124: 제 2 중앙 처리 장치
126: 휘발성 메모리 128: 불휘발성 메모리
130: 세부 상태

Claims (20)

  1. 스토리지 장치를 포함하는 전자 시스템에 있어서:
    상기 스토리지 장치는 인터페이스 커맨드를 수신하도록 구성되고,
    인터페이스 제어 유닛;
    상기 인터페이스 제어 유닛에 연결되고, 논리 블록 어드레스 커맨드를 실행하도록 구성된 제 1 중앙 처리 장치;
    상기 인터페이스 제어 유닛에 연결되고, 키 값 커맨드를 실행하도록 구성된 제 2 중앙 처리 장치; 및
    휘발성 메모리, 상기 제 1 중앙 처리 장치 및 상기 제 2 중앙 처리 장치들에 연결되고, 상기 논리 블록 어드레스 커맨드 및 상기 키 값 커맨드를 독립적으로 그리고 동시에 처리하도록 구성된 불휘발성 스토리지를 포함하되,
    상기 논리 블록 어드레스 커맨드 또는 상기 키 값 커맨드를 완료한 후에, 상기 제 1 중앙 처리 장치 또는 상기 제 2 중앙 처리 장치는 세부 상태(a detailed status)를 컴파일(compile)하도록 구성되고,
    상기 인터페이스 제어 유닛은 장치 연결 구조체에 연결되고, 상기 세부 상태를 장치 드라이버에 전달함으로써 상기 인터페이스 커맨드에 응답하도록 구성되는 전자 시스템.
  2. 제 1 항에 있어서,
    상기 인터페이스 제어 유닛은 상기 논리 블록 어드레스 커맨드를 분석하도록 구성된 제 1 커맨드 프로세서를 포함하는 전자 시스템.
  3. 제 1 항에 있어서,
    상기 인터페이스 제어 유닛은 상기 키 값 커맨드를 분석하도록 구성된 제 2 커맨드 프로세서를 포함하는 전자 시스템.
  4. 제 1 항에 있어서,
    상기 인터페이스 제어 유닛은 조절 커맨드를 분석하도록 구성된 제 1 커맨드 프로세서를 포함하는 전자 시스템.
  5. 제 1 항에 있어서,
    상기 인터페이스 커맨드를 분석하고, 상기 인터페이스 커맨드의 DWORD15를 기반으로 제 1 커맨드 프로세서 또는 제 2 커맨드 프로세서 커맨드에 루트(rouote)하도록 구성된 멀티플렉서를 더 포함하는 전자 시스템.
  6. 제 1 항에 있어서,
    상기 논리 블록 어드레스 커맨드를 실행하도록 구성된 상기 제 1 중앙 처리 장치에 의해 엑세스되는 휘발성 메모리를 더 포함하는 전자 시스템.
  7. 제 1 항에 있어서,
    키 값 커맨드를 실행하도록 구성된 제 2 중앙 처리 장치에 의해 엑세스되는 휘발성 메모리를 더 포함하도록 구성된 전자 시스템.
  8. 제 1 항에 있어서,
    복수의 중앙 처리 장치들로부터 상기 제 1 중앙 처리 장치를 선택하기 위해, 상기 인터페이스 제어 유닛은 상기 인터페이스 커맨드를 분석하도록 구성되는 전자 시스템.
  9. 제 1 항에 있어서,
    조절 커맨드를 실행하고, 상기 논리 블록 어드레스 커맨드, 상기 키 값 커맨드 또는 이들의 조합을 실행하기 위해 상기 복수의 중앙 처리 장치들 중 하나 이상을 재배열하도록 구성된 제 1 커맨드 프로세서를 더 포함하는 전자 시스템.
  10. 제 1 항에 있어서,
    상기 인터페이스 제어 유닛은 호스트 프로세서에 로드된 키 값 어플리케이션 프로그램 인터페이스(API) 또는 논리 블록 어드레스 어플리케이션 프로그램 인터페이스(API)에 응답하여 상기 장치 드라이버에 의해 생성된 상기 인터페이스 커맨드를 수신하도록 구성된 전자 시스템.
  11. 스토리지 장치에 의해 인터페이스 커맨드를 수신하는 단계;
    논리 블록 어드레스 커맨드 또는 키 값 커맨드를 완료한 후, 제 1 중앙 처리 장치 또는 제 2 중앙 처리 장치에 의해 세부 상태를 컴파일하는 단계; 및
    상기 세부 상태를 장치 연결 구조체를 통해 장치 드라이버에 전달함으로써 상기 인터페이스 커맨드에 응답하는 단계를 포함하되,
    상기 스토리지 장치에 의해 인터페이스 커맨드를 수신하는 단계는,
    인터페이스 제어 유닛에서 상기 인터페이스 커맨드를 분석하는 단계;
    상기 논리 블록 어드레스 커맨드를 실행하기 위해 상기 제 1 중앙 처리 장치를 선택하는 단계;
    상기 키 값 커맨드를 실행하기 위해 상기 제 2 중앙 처리 장치를 선택하는 단계;
    불휘발성 스토리지를 엑세스하기 위해 상기 논리 블록 어드레스 커맨드 및 상기 키 값 커맨드를 독립적으로 및 동시에 처리하는 단계를 포함하는 전자 시스템의 동작 방법.
  12. 제 11 항에 있어서,
    커맨드 멀티플렉서에 의해 선택된 제 1 커맨드 프로세서에 의해 상기 인터페이스 커맨드를 분석하여 상기 논리 블록 어드레스 커맨드를 식별하는 단계를 더 포함하는 전자 시스템의 동작 방법.
  13. 제 11 항에 있어서,
    커맨드 멀티플렉서에 의해 선택된 제 2 커맨드 프로세서에 의해 상기 인터페이스 커맨드를 분석하여 상기 키 값 커맨드를 분석하여 상기 키 값 커맨드를 식별하는 단계를 더 포함하는 전자 시스템의 동작 방법.
  14. 제 11 항에 있어서,
    커맨드 멀티플렉서에 의해 선택된 제 1 커맨드 프로세서에 의해 상기 인터페이스 커맨드를 분석하여 조절 커맨드를 식별하는 단계를 더 포함하는 전자 시스템의 동작 방법.
  15. 제 11 항에 있어서,
    상기 인터페이스 커맨드를 분석하고, 상기 인터페이스 커맨드의 DWORD15에 기반하여 제 1 커맨드 프로세서 또는 제 2 커맨드 프로세서를 루팅(routing)하는 단계를 더 포함하는 전자 시스템의 동작 방법.
  16. 제 11 항에 있어서,
    상기 논리 블록 어드레스 커맨드를 실행하도록 구성된 상기 제 1 중앙 처리 장치에 의해 휘발성 메모리를 엑세스하는 단계를 더 포함하는 전자 시스템의 동작 방법.
  17. 제 11 항에 있어서,
    상기 키 값 커맨드를 실행하도록 구성된 상기 제 2 중앙 처리 장치에 의해 휘발성 메모리를 엑세스하는 단계를 더 포함하는 전자 시스템의 동작 방법.
  18. 제 11 항에 있어서,
    복수의 중앙 처리 장치들로부터 상기 제 1 중앙 처리 장치를 선택하기 위해 상기 인터페이스 커맨드를 분석하는 단계를 더 포함하는 전자 시스템의 동작 방법.
  19. 제 11 항에 있어서,
    상기 논리 블록 어드레스 커맨드, 상기 키 값 커맨드 또는 이들의 조합을 실행하기 위해 하나 이상의 중앙 처리 장치들을 재배열하는 조절 커맨드를 실행하는 단계를 더 포함하는 전자 시스템의 동작 방법.
  20. 제 11 항에 있어서,
    호스트 프로세서에 로드된 키 값 어플리케이션 프로그램 인터페이스 또는 논리 블록 어드레스 어플리케이션 프로그램 인터페이스에 응답하여 상기 장치 드라이버에 의해 생성된 상기 인터페이스 커맨드를 수신하는 단계를 더 포함하는 전자 시스템의 동작 방법.
KR1020160062286A 2015-10-14 2016-05-20 인터페이스 제어 메커니즘을 갖는 전자 시스템 및 그것의 동작 방법 KR102358477B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201562241499P 2015-10-14 2015-10-14
US62/241,499 2015-10-14
US15/005,497 US9927984B2 (en) 2015-10-14 2016-01-25 Electronic system with interface control mechanism and method of operation thereof
US15/005,497 2016-01-25

Publications (2)

Publication Number Publication Date
KR20170043993A true KR20170043993A (ko) 2017-04-24
KR102358477B1 KR102358477B1 (ko) 2022-02-04

Family

ID=58522978

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160062286A KR102358477B1 (ko) 2015-10-14 2016-05-20 인터페이스 제어 메커니즘을 갖는 전자 시스템 및 그것의 동작 방법

Country Status (5)

Country Link
US (1) US9927984B2 (ko)
JP (1) JP6734751B2 (ko)
KR (1) KR102358477B1 (ko)
CN (1) CN106598480B (ko)
TW (1) TWI699696B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220117578A (ko) 2021-02-17 2022-08-24 동의대학교 산학협력단 혈당 조절이 가능한 후코이단을 해조류로부터 추출하는 방법

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10423331B2 (en) * 2016-02-02 2019-09-24 Samsung Electronics Co., Ltd. Polymorphic storage devices
US11287973B2 (en) 2016-02-02 2022-03-29 Samsung Electronics Co., Ltd. Polymorphic storage devices
US11301422B2 (en) * 2016-02-23 2022-04-12 Samsung Electronics Co., Ltd. System and methods for providing fast cacheable access to a key-value device through a filesystem interface
EP3279810B1 (en) * 2016-06-14 2019-09-04 Huawei Technologies Co., Ltd. Data access method and related apparatus and system
US10372351B2 (en) * 2017-02-23 2019-08-06 Western Digital Technologies, Inc. Techniques for non-blocking control information and data synchronization by a data storage device
US20180239532A1 (en) * 2017-02-23 2018-08-23 Western Digital Technologies, Inc. Techniques for performing a non-blocking control sync operation
US20180364937A1 (en) 2017-06-20 2018-12-20 Samsung Electronics Co., Ltd. System and method for managing memory device
US11182694B2 (en) * 2018-02-02 2021-11-23 Samsung Electronics Co., Ltd. Data path for GPU machine learning training with key value SSD
TWI659359B (zh) * 2018-04-27 2019-05-11 慧榮科技股份有限公司 控制儲存裝置之方法
US11580162B2 (en) * 2019-04-18 2023-02-14 Samsung Electronics Co., Ltd. Key value append
US10861490B1 (en) * 2019-08-12 2020-12-08 Seagate Technology Llc Multi-controller data storage devices and methods
US11816349B2 (en) 2021-11-03 2023-11-14 Western Digital Technologies, Inc. Reduce command latency using block pre-erase

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130094468A1 (en) * 2010-06-22 2013-04-18 Lg Electronics Inc. Method and device for determining precoding information for uplink multi-antenna transmission
KR20140094468A (ko) * 2013-01-22 2014-07-30 엘에스아이 코포레이션 비휘발성 메모리에 대한 기록들의 관리 및 그 기록들의 영역 선택
WO2015119786A1 (en) * 2014-02-05 2015-08-13 Sandisk Technologies Inc. Storage module and host device for storage module defragmentation
US20150278208A1 (en) * 2014-03-28 2015-10-01 Annie Foong Hash map support in a storage device
US9563426B1 (en) * 2013-12-30 2017-02-07 EMC IP Holding Company LLC Partitioned key-value store with atomic memory operations

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7747837B2 (en) 2005-12-21 2010-06-29 Sandisk Corporation Method and system for accessing non-volatile storage devices
US20130086311A1 (en) 2007-12-10 2013-04-04 Ming Huang METHOD OF DIRECT CONNECTING AHCI OR NVMe BASED SSD SYSTEM TO COMPUTER SYSTEM MEMORY BUS
US8234426B2 (en) 2010-06-08 2012-07-31 Innostor Technology Corporation Switching interface method for a multi-interface storage device
CN102918509B (zh) * 2011-05-31 2014-06-04 华为技术有限公司 数据读写方法、装置和存储系统
JP5524144B2 (ja) * 2011-08-08 2014-06-18 株式会社東芝 key−valueストア方式を有するメモリシステム
US8631212B2 (en) * 2011-09-25 2014-01-14 Advanced Micro Devices, Inc. Input/output memory management unit with protection mode for preventing memory access by I/O devices
US9075710B2 (en) * 2012-04-17 2015-07-07 SanDisk Technologies, Inc. Non-volatile key-value store
KR101254647B1 (ko) 2012-08-13 2013-04-15 주식회사 유니테스트 솔리드 스테이트 드라이브 테스트장치
KR102025341B1 (ko) * 2012-12-04 2019-09-25 삼성전자 주식회사 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 메모리 컨트롤러의 동작 방법
US20140304525A1 (en) 2013-04-01 2014-10-09 Nexenta Systems, Inc. Key/value storage device and method
US20140331001A1 (en) 2013-05-02 2014-11-06 Lsi Corporation Command Barrier for a Solid State Drive Controller
US9779138B2 (en) * 2013-08-13 2017-10-03 Micron Technology, Inc. Methods and systems for autonomous memory searching
CN103902698B (zh) * 2014-03-31 2018-04-13 北京皮尔布莱尼软件有限公司 一种数据存储系统和存储方法
CN104461380B (zh) * 2014-11-17 2017-11-21 华为技术有限公司 数据存储方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130094468A1 (en) * 2010-06-22 2013-04-18 Lg Electronics Inc. Method and device for determining precoding information for uplink multi-antenna transmission
KR20140094468A (ko) * 2013-01-22 2014-07-30 엘에스아이 코포레이션 비휘발성 메모리에 대한 기록들의 관리 및 그 기록들의 영역 선택
US9563426B1 (en) * 2013-12-30 2017-02-07 EMC IP Holding Company LLC Partitioned key-value store with atomic memory operations
WO2015119786A1 (en) * 2014-02-05 2015-08-13 Sandisk Technologies Inc. Storage module and host device for storage module defragmentation
US20150278208A1 (en) * 2014-03-28 2015-10-01 Annie Foong Hash map support in a storage device

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220117578A (ko) 2021-02-17 2022-08-24 동의대학교 산학협력단 혈당 조절이 가능한 후코이단을 해조류로부터 추출하는 방법

Also Published As

Publication number Publication date
CN106598480A (zh) 2017-04-26
CN106598480B (zh) 2019-06-18
KR102358477B1 (ko) 2022-02-04
US9927984B2 (en) 2018-03-27
TW201714076A (zh) 2017-04-16
US20170109041A1 (en) 2017-04-20
JP2017076398A (ja) 2017-04-20
JP6734751B2 (ja) 2020-08-05
TWI699696B (zh) 2020-07-21

Similar Documents

Publication Publication Date Title
KR102358477B1 (ko) 인터페이스 제어 메커니즘을 갖는 전자 시스템 및 그것의 동작 방법
US11640242B2 (en) Namespace management in non-volatile memory devices
CN107209681B (zh) 一种存储设备访问方法、装置和系统
JP5159901B2 (ja) 制御装置と通信するように構成されたホスト・コンピュータ・システムにおける入出力(i/o)操作に関するi/o処理を容易にするための方法
JP5181141B2 (ja) 入出力処理システムにおいて間接データ・アドレッシングを提供するための装置、並びにその方法およびコンピュータ・プログラム
US11635902B2 (en) Storage device processing stream data, system including the same, and operation method
JP2011512591A5 (ko)
US20210004171A1 (en) I/o request processing method and device
CN105408875B (zh) 在存储器接口上的分布式过程执行和文件系统
US11099750B2 (en) Computing system with communication mechanism
US10133492B2 (en) Electronic system with interface control mechanism and method of operation thereof
US11544205B2 (en) Peer storage devices sharing host control data
US11379128B2 (en) Application-based storage device configuration settings
CN112015352B (zh) 存储块设备识别装置、系统和存储块设备读写方法
US11875064B2 (en) Solid state drive supporting both byte addressable protocol and block addressable protocol
US20190369909A1 (en) Homogeneous in-storage computation system
US20240168876A1 (en) Solving submission queue entry overflow using metadata or data pointers
CN117032555A (zh) 用于管理设备存储器和程序的系统、方法和装置
CN116932451A (zh) 一种数据处理方法、主机及相关设备
KR20230156890A (ko) 장치 메모리 및 프로그램들을 관리하기 위한 시스템들, 방법들, 및 장치
CN114356234A (zh) 非对齐存储结构的闪存设备及数据存储方法
CN114637458A (zh) 一种数据传输方法及网卡

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant