KR20190040886A - 브리지 장치를 이용한 스토리지 인접 연산 제공 시스템 및 방법 - Google Patents

브리지 장치를 이용한 스토리지 인접 연산 제공 시스템 및 방법 Download PDF

Info

Publication number
KR20190040886A
KR20190040886A KR1020180080936A KR20180080936A KR20190040886A KR 20190040886 A KR20190040886 A KR 20190040886A KR 1020180080936 A KR1020180080936 A KR 1020180080936A KR 20180080936 A KR20180080936 A KR 20180080936A KR 20190040886 A KR20190040886 A KR 20190040886A
Authority
KR
South Korea
Prior art keywords
nvme
instruction
instruction set
data
command
Prior art date
Application number
KR1020180080936A
Other languages
English (en)
Other versions
KR102388893B1 (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 KR20190040886A publication Critical patent/KR20190040886A/ko
Application granted granted Critical
Publication of KR102388893B1 publication Critical patent/KR102388893B1/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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4234Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a 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/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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • 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/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • 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/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • 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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • 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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • G06F13/4295Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using an embedded synchronisation
    • 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/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/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/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/0661Format or protocol conversion arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • 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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/35Switches specially adapted for specific applications
    • H04L49/356Switches specially adapted for specific applications for storage area networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • H04L49/9078Intermediate storage in different physical parts of a node or terminal using an external memory or storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0008High speed serial bus, e.g. Fiber channel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • 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)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Mathematical Physics (AREA)
  • Information Transfer Systems (AREA)
  • Bus Control (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)
  • Artificial Intelligence (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Computing Systems (AREA)
  • Input Circuits Of Receivers And Coupling Of Receivers And Audio Equipment (AREA)
  • Internal Circuitry In Semiconductor Integrated Circuit Devices (AREA)

Abstract

브리지 장치는 호스트 컴퓨터에서 실행되는 애플리케이션으로부터 제1 명령세트를 수신하는 제1 인터페이스; 제1 명령세트를 변환하고 제1 명령세트에 기초하여 제2 명령세트를 생성하는 하나 이상의 명령 프로세서; 데이터 스토리지 장치로 제2 명령세트를 제공하는 제2 인터페이스; 및 애플리케이션이 실행되는 동안 호스트 컴퓨터와 무관하게 백그라운드 모드에서 데이터 스토리지 장치로부터 데이터를 인출하고 데이터 스토리지 장치에 데이터를 기입하도록 내부 명령을 발생시키는 컴퓨팅 프로세서를 포함한다.

Description

브리지 장치를 이용한 스토리지 인접 연산 제공 시스템 및 방법{SYSTEM AND METHOD FOR PROVIDING NEAR STORAGE COMPUTE USING BRIDGE DEVICE}
본 개시는 일반적으로 데이터 스토리지 시스템에 관한 것으로, 보다 구체적으로는 브리지 장치를 이용한 스토리지 인접 연산을 제공하는 시스템 및 방법에 관한 것이다.
솔리드 스테이트 드라이브(Solid State Drive: SSD)는 하드 디스크 드라이브(Hard Disk Drive: HDD)와 같은 종래의 스토리지 장치들을 빠르게 대체하며 최근의 데이터센터 인프라의 주요 스토리지 요소로 급부상하고 있다. SSD는 저지연성, 높은 데이터 독출/기입 처리량 및 고신뢰성을 갖는 사용자 데이터 영구 스토리지를 제공한다. 비휘발성 메모리 익스프레스 오버 패브릭(Non-Volatile Memory express over Fabrics: NVMe-oF)은 이더넷(Ethernet), 광 채널(Fibre Channel) 및 인피니밴드(Infiniband)와 같은 패브릭 네트워크(Fabric Network)를 통해 수백에서 수천 개의 SSD들을 연결시키는 신기술이다.
NVMe-oF 프로토콜은 구축된 패브릭 네트워크를 통해 수많은 NVMe SSD들을 원격 호스트에 연결시키는 원격 직접연결 스토리지(remote Direct-Attached Storage: rDAS)를 가능하게 한다. 또한, NVMe-oF 프로토콜은 원격 직접 메모리 접근(Remote Direct Memory Access: RDMA)을 지원하여 네트워크를 통해 NVMe 명령, 데이터 및 응답을 전달하는 고신뢰성의 전송 서비스를 제공한다. RDMA 서비스를 제공하는 전송 프로토콜들의 일례로 iWARP, RoCE v1 및 RoCE v2를 들 수 있다.
분리된 데이터 스토리지 장치들(Disaggregated Data Storage System) (예: NVMe-oF-호환 SSD, 이는 간략히 NVMe-oF SSD 또는 eSSD로도 지칭될 수 있음)을 이용하는 데이터 스토리지 시스템은 호스트 컴퓨터에서 실행되는 애플리케이션에 큰 스토리지 용량을 제공할 수 있다. 애플리케이션은 분리된 데이터 스토리지 장치들로부터 대량의 데이터(빅 데이터)를 수집하여 분석할 수 있다.
빅 데이터 처리 규모는 매우 크기 때문에 유의미한 빅 데이터 마이닝(Mining)을 수행하기 위한 인프라에는 매우 큰 비용이 투입되어야 하고, 대량의 컴퓨팅 자원, 대용량의 시스템 메모리 및 고대역폭 네트워크뿐만 아니라 빅 데이터 저장을 위한 대용량의 고성능 데이터 스토리지 장치들이 필요하다. 따라서, 호스트 컴퓨터로부터 데이터 스토리지 장치들로 데이터 처리 마이닝 작업들의 일부를 오프로드(Offload)하고, 데이터 스토리지 장치들로부터 호스트 컴퓨터로의 데이터 이동을 최소화하는 것이 바람직할 것이다.
본 개시는 전술한 문제점을 해결하기 위하여 브리지 장치를 이용한 스토리지 인접 연산 제공 시스템 및 방법을 제공하고자 한다.
일 실시예에 따른 브리지 장치는 호스트 컴퓨터에서 실행되는 애플리케이션으로부터 제1 명령세트를 수신하는 제1 인터페이스; 제1 명령세트를 변환하고 제1 명령세트에 기초하여 제2 명령세트를 생성하는 하나 이상의 명령 프로세서; 데이터 스토리지 장치로 제2 명령세트를 제공하는 제2 인터페이스; 및 애플리케이션이 실행되는 동안 호스트 컴퓨터와 무관하게 백그라운드 모드에서 데이터 스토리지 장치로부터 데이터를 인출하고 데이터 스토리지 장치에 데이터를 기입하도록 내부 명령을 발생시키는 컴퓨팅 프로세서를 포함한다.
다른 실시예에 따른 방법은 제1 인터페이스를 통해 호스트 컴퓨터에서 실행되는 애플리케이션으로부터 제1 명령세트를 수신하는 단계; 제1 명령세트를 변환하고 제1 명령세트에 기초하여 제2 명령세트를 생성하는 단계; 제1 인터페이스를 통해 데이터 스토리지 장치로 제2 명령세트를 제공하는 단계; 및 애플리케이션이 실행되는 동안 호스트 컴퓨터와 무관하게 백그라운드 모드에서 데이터 스토리지 장치로부터 데이터를 인출하고 데이터 스토리지 장치에 데이터를 기입하도록 내부 명령을 발생시키는 단계를 포함한다.
구현 및 이벤트 조합의 다양한 신규 세부사항들을 포함하는 전술한 바람직한 특징들 및 그 밖의 바람직한 특징들은 첨부도면을 참조하여 보다 구체적으로 설명될 것이고 청구범위에서 제시될 것이다. 본 명세서에서 설명되는 특정 시스템 및 방법은 예시로서 제시되는 것으로, 이에 한정되지 않을 것이다. 본 명세서에서 설명되는 원리 및 특징이 본 개시의 범위에서 벗어나지 않는 다양하고 수많은 실시예들에서 채용될 수 있음은 본 개시의 기술분야에 속한 통상의 기술자들에게 당연할 것이다.
본 개시의 실시예에 따른 브리지 장치를 이용한 스토리지 인접 연산 제공 시스템 및 방법에 따르면, 호스트 컴퓨터로부터 스토리지 장치로 데이터 처리 및 마이닝 작업들을 오프로드함으로써 분리된 데이터 스토리지 시스템에 있어 스토리지 장치로부터 호스트 컴퓨터로의 데이터 이동을 최소화할 수 있다.
본 명세서의 일부로서 포함된 첨부도면들은 현시점에서 바람직한 실시예를 도시하며, 전술한 전반적인 설명 및 이하의 바람직한 실시예에 대한 구체적인 설명과 함께 본 명세서에 기재되는 원리를 설명하고 교시한다.
도 1은 일 실시예에 따른 데이터 스토리지 시스템의 예시적인 블록도이다.
도 2는 일 실시예에 따른 NVMe-oF 브리지 장치의 예시적인 블록도이다.
도 3은 일 실시예에 따른 특수 명령부의 예시적인 블록도이다.
도 4는 일 실시예에 따른 예시적인 명령 식별자 변환 방법을 도시한다.
도 5는 일 실시예에 따른 관리자 제출 큐 및 완료 큐의 공유를 나타내는 블록도이다.
도 6은 일 실시예에 따른 원격 호스트 및 스토리지-인접 연산 프로세서 간의 입/출력 제출 큐의 공유를 나타내는 블록도이다.
도 7은 일 실시예에 따른 브리지 장치 내 로컬 데이터 이동을 나타내는 블록도이다.
도면들은 반드시 일정한 비율로 도시되는 것이 아니며, 도면 전반에 걸쳐 유사한 구조들 또는 기능부의 구성요소들은 설명을 위해 일반적으로 동일한 참조번호로 표시된다. 도면들은 단지 본 명세서에 설명된 다양한 실시예들의 설명을 용이하게 하기 위한 것으로, 본 명세서에 개시된 교시의 모든 양상들을 나타내는 것이 아니며 청구항의 범위를 제한하고자 하는 것도 아니다.
본 명세서에 개시된 각각의 특징들 및 교시들은 스토리지 인접 연산을 제공하는 브리지 장치(Bridge Device)를 제공하기 위하여 개별적으로, 또는 다른 특징들 및 교시들과 함께 이용될 수 있다. 그 밖의 다른 많은 특징들 및 교시들을 개별적으로 또는 결합하여 이용하는 대표적인 예시들이 첨부된 도면을 참조하여 보다 상세하게 설명된다. 이러한 상세한 설명은 본 교시들의 양상을 실시하기 위한 세부사항들을 본 개시의 기술분야에 속하는 통상의 기술자에게 교시하기 위한 것이며 청구항의 범위를 제한하고자 하는 것이 아니다. 따라서 상세한 설명에 개시되는 특징들의 조합은 가장 넓은 의미의 교시들을 실시하는데 필수적인 것이 아닐 수 있으며, 대신 본 교시들의 특히 대표적인 예시들을 설명하기 위해 교시되는 것이다.
이하의 설명에서는 오직 설명의 목적을 위해 특정 용어들이 기재되어 본 개시의 완전한 이해를 돕는다. 그러나 본 개시의 기술분야에 속하는 통상의 기술자가 본 개시의 교시들을 실시하기 위해 이러한 특정 세부사항들을 필요로 하지 않음은 명백할 것이다.
본 명세서의 상세한 설명 중 일부는 컴퓨터 메모리 내 데이터 비트들에 대한 연산들의 알고리즘 및 기호의 형식으로 제공된다. 이러한 알고리즘 형식의 설명 및 표현은 데이터 처리 기술분야의 통상의 기술자들이 그들의 연구 내용을 다른 통상의 기술자들에게 효과적으로 전달하기 위해 이용되는 것이다. 알고리즘은 일반적으로 목표하는 결과를 유도하는 일관된 일련의 단계들로 간주된다. 단계들은 물리량들을 물리적으로 조작해야 하는 단계들이다. 일반적으로 필수적인 것은 아니지만, 이러한 물리량들은 저장, 전송, 결합, 비교 및 기타 조작 가능한 전기 또는 자기 신호의 형태를 갖는다. 주로 공통적으로 사용된다는 이유로 이러한 신호들이 비트, 값, 요소, 기호, 문자, 용어, 숫자 등으로 지칭되는 것이 때때로 편리하다는 것은 이미 알려진 바이다.
한편, 이러한 용어들 및 이와 유사한 용어들은 모두 적절한 물리량들과 연관되어 있으며 단지 편의를 위해 이러한 물리량들에 명명된 칭호임을 유의해야 한다. 이하의 설명에서 명백히 다르게 구체적으로 언급되지 않는 한, 명세서 전반에서 "처리", "연산", "계산", "결정", "표시" 등과 같은 용어들을 이용하는 설명은 컴퓨터 시스템의 레지스터 및 메모리 내의 물리량(전자적)으로 표시된 데이터를 컴퓨터 시스템의 메모리/레지스터 또는 다른 정보 저장/전송/표시 장치들 내의 물리량으로 유사하게 표시된 다른 데이터로 조작 및 변환하는 컴퓨터 시스템 또는 이와 유사한 전자 컴퓨팅 장치의 동작 및 프로세서들을 언급하는 것이다.
또한, 대표적인 예시들의 다양한 특징들 및 종속항들은 본 교시들의 유용한 추가 실시예들을 제공하기 위하여 구체적으로 그리고 명시적으로 열거되지 않은 방식으로도 결합될 수 있다. 또한, 청구된 기술적 사상을 한정하기 위한 목적은 물론 본래의 개시 목적을 위해 모든 값의 범위 또는 엔티티 집합들의 표시는 가능한 모든 중간값 또는 중간 엔티티를 개시한다는 점도 특히 유의해야 한다. 또한, 도면에 도시된 구성요소들의 크기 및 형태는 본 교시가 어떻게 실시되는지에 대한 이해를 돕기 위해 구성된 것이며, 예시로서 도시된 크기 및 형태로 한정되는 것이 아니다.
본 개시는 분리된 데이터 스토리지 시스템에 있어 스토리지 장치로부터 호스트 컴퓨터로의 데이터 이동을 최소화하기 위해 호스트 컴퓨터로부터 스토리지 장치로 데이터 처리 및 마이닝 작업들을 오프로드하는 시스템 및 방법에 대해 설명한다. 일 실시예에 따르면, 본 시스템 및 방법은 스토리지 장치에 인접하여 또는 스토리지 장치 내에서 데이터를 처리할 수 있도록 하며, 이는 각각 스토리지-인접 연산(Near-Storage Compute: NSC) 및 스토리지-내부 가속(In-Storage Acceleration: ISA)으로 지칭된다. 본 시스템 및 방법은 NVMe-oF 표준을 이용하는 분리된 스토리지 장치들에 적합하다. 또한, 본 시스템 및 방법은 직접연결 NVMe-대-NVMe(Direct Attached NVMe-toNVMe) 브리지 장치에서 사용될 수 있다. 호스트 컴퓨터는 NVMe-oF SSD들로 일부 데이터 마이닝 작업들을 오프로드하여 NVMe-oF 네트워크를 통한 호스트 컴퓨터와 NVMe-oF SSD들 간의 데이터 이동을 줄일 수 있고, 이에 따라 에너지 및 네트워크 인프라 비용을 절감할 수 있다.
도 1은 일 실시예에 따른 데이터 스토리지 시스템의 예시적인 블록도이다. 데이터 스토리지 시스템(100)은 호스트(110) 및, 하나 이상의 NVMe-oF-호환 이더넷 SSD(eSSD)를 포함하는 섀시(Chassis, 160) ('eSSD 섀시'로도 지칭됨)를 포함한다. 예를 들어, 섀시(160)는 24개 또는 48개의 eSSD들을 포함한다. 섀시(160) 내의 eSSD들은 각각 eSSD(170a-170n) (전체적으로 eSSD(170)로 지칭됨)로 표시된다. 호스트(110)는 애플리케이션(111), 운영 시스템(OS)과 파일 시스템(FS) (112), 및 NVMe-oF 드라이버(113)를 포함한다. 호스트(110)의 개시자(Initiator) (예: 애플리케이션(111))는 NVMe-oF 드라이버(113)를 이용하여 이더넷(150)을 통해 eSSD들(170)과 NVMe-oF 연결을 수립할 수 있다. 섀시(160)는 이더넷 스위치(161), 베이스보드 관리 제어기 (Baseboard Management Controller: BMC, 162) 및 PCIe(Peripheral Component Interconnect express) 스위치(163)를 포함한다. 이더넷 스위치(161)는 미드플레인(Midplane, 165)을 통해 eSSD들(170)에 이더넷 연결을 제공하고, PCIe 스위치(163)는 미드플레인(165)을 통해 eSSD들(170)에 관리 인터페이스(164)를 제공한다. BMC(162)는 시스템 관리자에 의한 소정의 명령어에 따라 eSSD들(170)을 프로그래밍할 수 있다.
이더넷 스위치(161)는 호스트(110)와 eSSD들(170) 간의 네트워크 연결성을 제공한다. 이더넷 스위치(161)는 하나 이상의 호스트에 접속하기 위한 대용량(예: 100 Gbps)의 상향링크들을 가질 수 있다. 이더넷 스위치(161)는 eSSD들(170)에 접속하기 위한 저용량(예: 25 Gbps)의 다중 하향링크도 갖는다. 예를 들어, 이더넷 스위치(161)는 100 Gbps의 상향링크 12개와 25 Gbps의 하향링크 24개 또는 48개를 포함한다. 이더넷 스위치(161)는 BMC(162)에 대한 전용 구성/관리 포트를 가질 수 있다.
BMC(162)는 이더넷 스위치(161), PCIe 스위치(163) 및 eSSD들(170)을 포함한 섀시(160)의 내부 구성요소들을 관리한다. BMC(162)는 PCIe 및/또는 시스템 관리를 위한 시스템 관리 버스(System Management Bus: SMBus) 인터페이스들을 지원할 수 있다. BMC(162)는 eSSD들(170)을 설정하고 이더넷 스위치(161)를 프로그래밍할 수 있다.
서버 기반 올-플래시 어레이(All-Flash Array: AFA)와 유사하게 eSSD들(170)은 다수의 eSSD들, 외부의 호스트들과 eSSD들을 연결시키는 네트워크 스위치(즉, 이더넷 스위치(161)) 및 이들을 관리하는 BMC(162)를 포함하는, 서버가 없는 구조물(즉, 섀시(160))에 함께 수용된다. BMC(162)는 eSSD 장치들에 대한 부트(boot) 및 제어 경로를 처리한다. 완전한 x86 CPU와 달리, BMC(162)는 CPU가 처리할 수 있는 작업들 전부를 수행하는 것이 아니라 최소한의 구조 관리 기능들을 수행할 수 있다. BMC(162)는 시스템 관리 버스 또는 PCIe 버스를 통하여 연결성, 상태, 온도, 로그 및 오류에 대한 연결된 eSSD들(170) 및 관련 하드웨어의 상태를 지속적으로 점검한다.
eSSD들(170)은 고성능 대용량의 데이터 스토리지 솔루션을 제공한다. NVMe-oF 프로토콜은 수백에서 수천 개의 분리된 eSSD들(170)이 호스트 컴퓨터(110)에서 실행되는 애플리케이션(111)에 원격 직접연결(rDAS) 방식으로 접속할 수 있도록 한다. 본 시스템 및 방법은 분리된 eSSD들에 수집 및 저장된 대량의 데이터들의 처리 및 이동을 용이하게 한다. 기존의 호스트 컴퓨터들을 이용하는 경우, 이러한 데이터 처리에는 비용이 매우 많이 들 수 있다.
호스트 컴퓨터(110)에서 실행되는 애플리케이션(111)은 eSSD들(170)과 같이 분리된 데이터 스토리지 장치들에 저장된 데이터를 네트워크(예: 이더넷(150))를 통해 인출(fetch)하여 처리하고 데이터 처리 결과를 다시 데이터 스토리지 장치들에 저장함으로써 기계학습(Machine Learning: ML)과 같은 프로세스를 수행할 수 있다. 데이터 인출, 처리 및 저장 과정을 포함하는 이러한 프로세스는 호스트 컴퓨터의 에너지, 연산능력, 네트워크 및 데이터 스토리지 자원을 과도하게 소비하는 매우 비효율적인 과정일 수 있다. 또한, 이러한 프로세스는 호스트 컴퓨터의 연산 및 메모리 자원에 있어 많은 비용 소모를 유발할 수 있다.
본 시스템 및 방법은 스토리지-인접 연산 또는 스토리지-내부 가속을 이용하여 백그라운드 데이터 처리를 가능하게 한다. 스토리지-인접 연산 및 스토리지-내부 가속은 대량의 데이터가 백그라운드에서 효율적인 방식으로 처리될 수 있도록 한다. 일 실시예에 따르면, 처리될 데이터가 저장된 데이터 스토리지 장치와 연결된 브리지 장치는 연결된 데이터 스토리지 장치와 인접한 백그라운드 데이터 처리를 용이하게 할 수 있다. 일 실시예에 있어서, 브리지 장치는 데이터 스토리지 장치로 통합될 수 있다. 다른 실시예들에 있어서, 브리지 장치는 데이터 스토리지 장치와 연결된 별도의 장치일 수 있다. "인접"이라는 용어는 본 개시의 범위를 벗어남 없이 데이터 처리가 별도의 장치뿐만 아니라 데이터 스토리지 장치 자체에서 이루어질 수 있음을 의미하는 것으로 이해되어야 한다. 일부 실시예들에 있어서, "스토리지-인접" 및 "스토리지-내부"라는 용어는 본 명세서에서 상호교환적으로 사용될 수 있다.
브리지 장치는 데이터 스토리지 장치들에 저장된 데이터의 스토리지-인접 연산을 애플리케이션에 의해 감지되지 않는 방식으로 구현할 수 있는 하나 이상의 하드웨어 구성요소들을 포함할 수 있다. 브리지 장치는 NVMe-oF-대-NVMe 브리지 장치 및 NVMe-대-NVMe 브리지 장치 중 어느 하나일 수 있다. NVMe-oF 표준과 호환 가능한 NVMe-oF-대-NVMe 브리지 장치는 패브릭 네트워크를 통해 NVMe-oF 명령들을 수신하고 백엔드(Backend) 데이터 스토리지 장치에 PCIe 인터페이스를 제공할 수 있다. NVMe 표준과 호환 가능한 NVMe-대-NVMe 브리지 장치는 PCIe 버스를 통해 NVMe 명령들을 수신하고 데이터 스토리지 장치에 인접하여 데이터 처리를 수행할 수 있다. 이하에서는 설명의 편의상 데이터 스토리지 장치들의 예로서 eSSD들에 대해 설명한다. 한편, 본 개시의 범위를 벗어나지 않고 다른 종류의 데이터 스토리지 장치들 및 분리된 데이터 스토리지 시스템들도 사용될 수 있음은 당연하다. 이하의 예시들에서, eSSD는 브리지 장치와 백엔드 SSD를 모두 포함하는 장치로 설명되지만, 다른 실시예들에서는 데이터 스토리지 장치(백엔드 SSD)가 별도의 브리지 장치와 연결되어 eSSD를 구성할 수 있거나, 또는 eSSD가 브리지 장치 자체나 브리지 장치의 인접-연산 기능을 수행할 수 있는 장치를 지칭할 수도 있다.
본 브리지 장치는 SSD들에 대한 호스트 컴퓨터의 일반적인 데이터 접근 동작들에 영향을 미치지 않으면서도 백엔드 SSD들에 저장된 데이터를 인출, 처리 및 수정할 수 있고, 처리된 데이터를 다시 백엔드 SSD들에 저장할 수 있다. 일 실시예에 있어서, 브리지 장치는 한 쌍의 입/출력(I/O) 제출 큐(Submission Queue) 및 완료 큐(Completion Queue)를 유지관리하고 한 쌍의 입/출력 큐(I/O Queue)를 이용하여 백그라운드 모드에서 백엔드 SSD들로의 데이터 접근을 수행하는 시스템 메모리를 가질 수 있다. 브리지 장치는 호스트 컴퓨터로부터 출력된 명령들과 브리지 장치의 스토리지-인접 프로세서로부터 발생한 내부 명령들을 모두 처리하기 위해 입/출력 제출 큐 및 완료 큐를 공유할 수 있다. 또한, 브리지 장치의 시스템 메모리는 호스트 컴퓨터와 스토리지-인접 연산 프로세서(NSC Processor) 간에 공유될 수 있는 관리자 제출 큐 및 완료 큐를 포함하는 한 쌍의 관리자 큐(Admin Queue)를 유지관리할 수 있다.
일 실시예에 따르면, 브리지 장치는 스토리지-인접 연산 프로세서가 백엔드 SSD들에 저장된 데이터에 접근하는 것을 허용하는 NVMe-oF-대-NVMe 또는 NVMe-대-NVMe 프로토콜 연결(Bridging)을 이용할 수 있다. 기계학습 알고리즘과 같은 다양한 프로세스들은 호스트 컴퓨터와 무관하게 백그라운드에서 데이터 처리를 수행하기 위해 호스트 컴퓨터 또는 브리지 장치에서 실행될 수 있다. 기계학습 알고리즘을 실행하는 호스트 컴퓨터는 브리지 장치 외부에 배치될 수 있으나, 브리지 장치를 통해 간접적으로 eSSD들에 저장된 데이터에 접근할 수 있다. 일부 실시예들에 있어서, 브리지 장치 및/또는 호스트 컴퓨터는 eSSD(들)과 동일한 섀시의 다른 슬롯(예: U.2 슬롯)에 배치될 수 있거나, 물리적으로 섀시 외부에 배치될 수도 있다. 도면들을 참조하여 설명되는 이하의 예시들은 주로 NVMe-oF 브리지 장치('NVMe-oF-대-NVMe 브리지 장치'로도 지칭됨)에 관한 것이지만, NVMe-대-NVMe 브리지 장치에도 동일하게 적용될 수 있다.
브리지 장치는 백엔드 SSD로 전송되는 호스트 명령(예: NVMe-oF 명령)을 수신하기 위한 인터페이스를 제공한다. 브리지 장치는 수신된 호스트 명령 식별자(Command Identifier: CID)를 로컬 태그(Local Tag)에 맵핑하고, 처리되는 데이터를 저장하는 백엔드 SSD에 대한 새로운 명령 식별자를 포함하는 NVMe 명령을 생성한다. 백엔드 SSD는 NVMe 명령에 대응하는 완료 엔트리(Completion Entry: CE)를 생성하여 브리지 장치로 전송한다. 그런 다음, 브리지 장치는 완료 엔트리를 파싱하고 완료 엔트리를 브리지 장치의 스토리지-인접 연산 프로세서로 지능적으로 전달한다.
호스트-개시 명령들을 중계(Bridging)하는 것과 별개로, 브리지 장치의 스토리지-인접 연산 프로세서는 호스트 컴퓨터와 무관하게 백엔드 SSD에 대한 NVMe 명령들을 발생시킬 수 있다. 브리지 장치는 공유되는 입/출력 큐 및 관리자 큐들을 이용하여 호스트 컴퓨터 및 스토리지-인접 연산 프로세서 모두의 입/출력 동작들을 상호간섭 없이 동시에 능동적으로 처리할 수 있다. 호스트 명령들을 중계하는 기능을 유지하면서도 백엔드 SSD에 저장된 데이터에 접근할 수 있는 스토리지-인접 연산 프로세서의 기능은 기계학습 애플리케이션이 스토리지-인접 연산 장치(즉, 브리지 장치)에서 실행되기 적합하게 한다. 기계학습 애플리케이션에 있어 스토리지-인접 연산 프로세서는 에너지, 자원 및 비용 측면에서 효율적인 데이터 처리를 제공한다.
NVMe-oF 브리지 장치는 일측으로는 원격 개시자(예: 호스트 컴퓨터에서 실행되는 기계학습 애플리케이션)에 NVMe-oF 인터페이스를 제공할 수 있고, 타측으로는 백엔드 SSD에 표준 PCIe-기반 NVMe 인터페이스를 제공할 수 있다. 원격 개시자는 NVMe-oF 인터페이스를 통해 이더넷을 경유하여 NVMe-oF 브리지 장치에 연결된다. NVMe-oF 브리지 장치는 백엔드 SSD와의 연결을 위해 NVMe-oF 프로토콜을 NVMe 프로토콜로 변환할 수 있다.
반면, NVMe 브리지 장치는 원격 개시자 및 백엔드 SSD에 표준 PCIe 인터페이스를 제공할 수 있다. 원격 개시자는 PCIe 버스를 통해 NVMe 브리지 장치에 연결된다. NVMe 브리지 장치는 백엔드 SSD에게 NVMe 명령이 호스트 컴퓨터가 아닌 NVMe 브리지 장치로부터 출력된 것처럼 보이도록 NVMe 호스트 명령을 상이한 명령 식별자가 포함된 다른 NVMe 명령으로 변환할 수 있다.
일 실시예에 따르면, 브리지 장치의 NVMe-oF-대-NVMe 또는 NVMe-대-NVMe 연결 기능은 필드-프로그래머블 게이트 어레이(Field-Programmable Gate Array: FPGA) 또는 주문형 집적회로(Application-Specific Integrated Chip: ASIC)로 구현될 수 있다. 대안적으로, 브리지 기능은 펌웨어 또는 소프트웨어 프로그램으로 구현될 수 있다.
도 2는 일 실시예에 따른 NVMe-oF 브리지 장치의 예시적인 블록도이다. NVMe-oF 브리지 장치(200)는 스토리지-인접 연산 프로세서(211), 시스템 메모리(212), 명령 파서(213), 명령 분류기(214) 및 명령 프로세서(215), PCIe측 명령 제출 큐(이하, 'PSQ') 모듈(216), PCIe 애플리케이션(이하, 'PAPP')/루트 콤플렉스(Root Complex) 모듈(217), NVMe-oF 응답기(218), PCIe 완료 엔트리 파서(219) 및 PCIe측 명령 완료 큐(이하, 'PCQ') 모듈(220)을 포함한다. NVMe-oF 브리지 장치(200)는 PCIe 버스를 통해 백엔드 SSD(250)에 연결된다. 호스트 컴퓨터에서 실행되는 원격 개시자는 패브릭 네트워크(본 예시에서는 이더넷)를 통해 백엔드 SSD(250)로 NVMe-oF 명령들을 전송한다.
NVMe-oF 브리지 장치(200)의 명령 파서(213)는 백엔드 SSD(250)로 전송될 NVMe-oF 명령들을 인터셉트하여 파싱한 뒤, 파싱된 NVMe-oF 명령들을 명령 분류기(214)로 전송한다. 예를 들어, 명령 파서(213)는 명령 연산부호(Opcode: OPC), 명령 식별자(CID), 명칭공간 식별자(Namespace Identifier: NSID), 논리블록 개수(Number of Logical Blocks: NLB) 및 개시 논리블록주소(Start Logical Block Address: SLBA)를 포함(다만, 이에 한정하지 않음)하는 다양한 명령들을 추출 및 파싱한다. 명령 분류기(214)는 파싱된 NVMe-oF 명령들을 다른 그룹들로 분류하고 분류된 NVMe-oF 명령들을 명령 프로세서(215)로 전송한다. 예를 들어, 명령 분류기(214)는 관리자 명령, 패브릭 명령, 독출 명령, 기입 명령 및 특수 명령들을 분류한다. NVMe-oF 명령들 중 상이한 명령들 또는 그룹들은 명령 프로세서(215)의 전용 명령 처리부들을 이용하여 처리될 수 있다. 예를 들어, 명령 프로세서(215)는 특수 명령부(Special Command Unit: SCU, 231), 패브릭 명령부(Fabrics Command Unit: FCU, 232), 관리자 명령부(Admin Command Unit: ACU, 233), 기입 명령부(Write Command Unit: WCU, 234) 및 독출 명령부(Read Command Unit: RCU, 235)를 포함한다.
이러한 명령 처리부들(231-235)은 NVMe-oF 명령들을 NVMe 명령들로 변환하여 PSQ 모듈(216)로 보낸다. 일 실시예에 따르면, PSQ 모듈(216)은 명령 제출 큐들을 구현하고 활성(Active) 제출 큐들에 대한 헤드 및 테일 포인터들을 유지관리한다. PSQ 모듈(216)은 활성 제출 큐들을 감지하며 제출 큐가 가득 차있거나 비어있는 상태임을 지시하는 조건 플래그를 생성할 수 있다. NVMe 명령들이 제출 큐들에 삽입되는 경우, PSQ 모듈(216)은 도어벨(Doorbell) 이벤트들(제출 큐-도어벨)을 생성하여 PAPP 모듈(217)을 통해 백엔드 SSD(250)로 전송할 수 있다. PAPP 모듈(217)은 PCIe 버스를 통해 도어벨 이벤트들을 전송하도록 백엔드 SSD(250)에 대한 PCIe 전송을 구현한다. PAPP 모듈(217)은 NVMe-oF 브리지 장치(200)에 의해 요구되는 설정 독출(Config Read), 설정 기입(Config Write), 메모리 기입(Memory Write) 및 메모리 독출(Memory Read)을 포함하는 표준 PCIe 트랜잭션 명령들을 지원한다. 또한, PAPP 모듈(217)은 NVMe 브리지 장치(200)의 PCIe 종단점에 의해 요구되는 PCIe 메모리 독출 및 메모리 기입 트랜잭션들을 지원한다. 다시 말해, PAPP 모듈(217)은 NVMe-oF 브리지 장치(200)의 PCIe 루트 콤플렉스 기능을 구현 및 지원하여 NVMe-oF 브리지 장치(200)를 PCIe 루트 콤플렉스 장치로 만든다.
PCQ 모듈(220)은 백엔드 SSD(250)에 대한 명령 완료 큐들을 구현한다. 백엔드 SSD(250)는 처리하는 NVMe 명령 각각에 대한 명령 완료 엔트리를 기입할 수 있다. 일반적으로, 명령 제출 큐 및 명령 완료 큐는 서로 일대일 맵핑된다. PCIe 완료 엔트리 파서(219)는 PCQ 모듈(220)로부터 수신한 완료 엔트리들을 파싱하고 해석한다. PCIe 완료 엔트리 파서(219)는 파싱된 완료 엔트리들을 대응하는 NVMe 명령들을 생성했던 적절한 명령 처리부들(231-235)로 전달한다. 적절한 명령 처리부들(231-235)은 PCIe 완료 엔트리 파서(219)로부터 수신한 PCIe 완료 엔트리들(또는 NVMe 완료 엔트리들)에 대응하는 NVMe-oF 완료 엔트리들을 생성하고, NVMe-oF 인터페이스(예: 이더넷)를 통해 원격 개시자로 다시 NVMe-oF 완료 엔트리들을 출력하는 NVMe-oF 응답기(218)로 NVMe-oF 완료 엔트리들을 전달한다. NVMe-oF 완료 엔트리들은 독출 데이터 또는 기입 데이터가 원격 개시자로 전송된 후에 전달될 수 있다. NVMe-oF 명령 중계의 일부로서, 명령 처리부들(231-235)들은 백엔드 SSD(250)와 원격 개시자 사이의 데이터 전송을 용이하게 한다.
백엔드 SSD(250)는 도어벨 이벤트들에 응답하여 PSQ 모듈(216)로부터 수신된 NVMe 명령들을 인출하여 실행할 수 있다. 명령 실행의 일부로서, 백엔드 SSD(250)는 데이터 전송을 수행할 수 있다. 이러한 데이터는 NVMe-oF 브리지 장치(200)에서 이용 가능한 시스템 메모리(212) 또는 온-칩(On-chip)/오프-칩(Off-chip) 메모리로 전송되거나, 이로부터 전송될 수 있다.
도 3은 일 실시예에 따른 특수 명령부(231)의 예시적인 블록도이다. 특수 명령부(231)는 백엔드 SSD(250)로 특수 명령들을 출력하기 위해 스토리지-인접 연산 프로세서(211)에 대한 인터페이스를 구현한다. 스토리지-인접 프로세서(211)는 이러한 인터페이스를 이용하여 백그라운드에서 백엔드 SSD(250)로부터 데이터를 인출하거나 백엔드 SSD(250)에 데이터 또는 처리결과를 기입할 수 있다.
패브릭 명령부(232)는 NVMe-oF 프로토콜에 대한 명령들의 패브릭 유형을 처리한다. 예를 들어, 패브릭 명령들에는 Connect, Property Get, Property Set 등이 포함되나, 이에 한정되는 것은 아니다. 관리자 명령부(233)는 관리자 명령들을 처리한다. 예를 들어, 관리자 명령들에는 Identify, Get Log Page 등이 포함되나, 이에 한정되는 것은 아니다. 기입 명령부(234)는 기입 명령들을 처리한다. 독출 명령부(235)는 독출 명령들을 처리한다.
도 3을 참조하면, 특수 명령부(231)는 인바운드 선입선출(Inbound First Input First Output, 이하 'IBFIFO') (332), 아웃바운드(Outbound: OB) 선입선출(이하 'OBFIFO') (333) 및 NVMe 명령 버퍼(334)를 포함한다. IBFIFO(332) 및 OBFIFO(333)는 백엔드 SSD(250)로 특수 명령들을 출력하기 위해 스토리지-인접 연산 프로세서(211)에 의해 사용되는 구조들이다. 스토리지-인접 연산 프로세서(211)는 NVMe 명령을 생성하여 메시지에 이를 삽입하고 OBFIFO(333)에 해당 메시지를 기입한다. 특수 명령부(231)는 메시지를 독출하여 NVMe 명령을 백엔드 SSD(250)로 전송한다. 백엔드 SSD(250)가 완료 엔트리로 응답하는 경우, 특수 명령부(231)는 완료 엔트리를 메시지에 삽입하고 해당 메시지를 IBFIFO(332)에 기입한다. 스토리지-인접 연산 프로세서(211)는 추가 연산을 위해 IBFIFO(332)로부터 완료 엔트리를 독출한다.
도 4는 일 실시예에 따른 예시적인 명령 식별자 변환 방법을 도시한다. 브리지 장치는 16비트의 명령 식별자(CID, 401)를 포함하는 입력 명령(NVMe-oF 또는 NVMe 명령 중 어느 하나)을 수신한다. 16비트의 명령 식별자 및 제출 큐 번호는 활성 명령(Active Command)을 고유하게 식별할 수 있다. 역조회(Reverse Look-up)를 통해 완료 엔트리가 대응하는 NVMe 명령과 정확히 연관될 수 있도록 소정의 명령에 대한 완료 엔트리는 동일한 16비트의 명령 식별자를 포함한다. 이에 대한 구체적인 설명은 후술한다.
NVMe-oF 브리지 장치의 경우, NVMe-oF 브리지 장치는 NVMe-oF 명령을 수신하고 NVMe-oF 명령에 대한 컨텍스트를 생성하며 로컬 명령 태그('로컬 태그'로도 지칭됨)를 기록한다. 일 실시예에 있어서, NVMe-oF 브리지 장치는 룩업 테이블(Lookup Table: LUT, 402)을 조회하고, 수신된 16비트의 명령 식별자를 12비트의 로컬 태그(Local_Tag, 403)에 맵핑한다. 룩업 테이블이 모두 찬 경우, 활성 명령 개수를 룩업 테이블의 용량(2^12)으로 제한하여 입력 명령들의 실행이 일시 중지될 수 있다. 또한, 12비트의 로컬 태그는 백엔드 SSD로 출력되는 NVMe 명령에 대한 16비트의 NVMe 명령 식별자(NVMe CID, 410)의 일부로 사용된다. 변환된 NVMe 명령은 새롭게 구성된 16비트의 NVMe 명령 식별자(410)를 포함한다. 일 실시예에 따르면, NVMe 명령 식별자(410)는 2개의 필드 즉, 4비트의 명령 처리부 식별자(CU_ID, 404) 및 12비트의 로컬 태그(Local_Tag, 405)를 포함한다. 12비트의 로컬 태그 및 4비트의 명령 처리부 식별자로 분할된 필드는 예시일 뿐, 다른 구현예들에서는 본 개시의 범위에서 벗어남 없이 상이한 크기로 분할될 수 있음은 당연하다. 본 예시에 있어서, NVMe 명령 식별자(410)는 다음의 맵핑 방식을 사용하여 구성될 수 있다.
NVMe CID[15:0] = { CU_ID[3:0], Local_Tag[11:0] }
명령 처리부 식별자(CU_ID)는 입력되는 NVMe-oF 명령을 처리하는 브리지 장치의 명령 처리부에 따라 결정될 수 있다. 표 1은 명령 처리부 식별자(CU_ID)에 대한 예시적인 부호화 방식을 나타낸다.
명령 처리부 CU_ID
패브릭 명령부 0
관리자 명령부 1
기입 명령부 2
독출 명령부 3
특수 명령부 4
NVMe 명령 식별자의 12비트 로컬 태그는 본래의 NVMe-oF 명령에 포함된 NVMe-oF 명령 식별자로 맵핑하는데 사용된다. 특수 명령부(231) 이외의 명령 처리부들에 대한 12비트 로컬 태그는 다음과 같이 획득될 수 있다.
Local_Tag[11:0] = LUT ( NVMe-oF CID[15:0] )
룩업 테이블(LUT)은 16비트 NVMe-oF 명령 식별자를 12비트 로컬 태그에 맵핑한다. 룩업 테이블(LUT)은 명령 분류기(214)에 의해 유지관리되는 동적 엔티티이다. 호스트 명령이 수신되면 룩업 테이블(LUT)의 엔트리가 할당된다. 엔트리의 12비트 인덱스는 12비트 로컬 태그(Local Tag)다. 본래의 16비트 명령 식별자는 대응하는 인덱스에 저장된다. 명령이 완료되면 룩업 테이블(LUT)의 엔트리는 할당 해제된다.
특수 명령부(231)에 대한 12비트 로컬 태그는 다음과 같이 획득될 수 있다.
Local_Tag[11:0] = LUT ( NSC CID[15:0] )
여기서, NSC CID는 스토리지-인접 연산 프로세서가 내부적으로 할당하는 명령 식별자이다. NSC CID는 스토리지-인접 연산 프로세서에 의해 출력된 명령들에 포함된 16비트 명령 식별자 값을 나타낸다. 로컬 태그(Local Tag)를 결정하기 위한 전술한 수식들은 호스트 또는 스토리지-인접 연산 프로세서로부터 수신된 명령들의 명령 식별자를 12비트 로컬 태그(Local Tag)에 맵핑하는데 사용된다.
12비트 로컬 태그가 조회되면 NVMe 명령 식별자의 나머지 4비트의 명령 처리부 식별자가 백엔드 SSD(250)로부터 수신된 NVMe 완료 엔트리의 역조회 수행을 돕는다. NVMe 완료 엔트리는 브리지 장치의 처리부들 중에서 대응하는 NVMe 명령을 생성했던 처리부와 NVMe 명령 식별자를 연관시키는데 사용된다. 도 2를 참조하면, PCIe 완료 엔트리 파서(219)는 PAPP 모듈(217)을 통해 백엔드 SSD(250)로부터 수신된 NVMe 명령 식별자에서 4비트 명령 처리부 식별자를 추출하고, 해당 완료 엔트리가 속하는 처리부가 어느 것인지 결정한다. 수신된 NVMe 완료 엔트리가 적절한 명령 처리부로 전달되면, PCIe 완료 엔트리 파서(219)는 다시 역조회를 수행하여 12비트 로컬 태그를 본래의 NVMe-oF 명령 식별자에 맵핑한다. 특수 명령부(231)의 경우, 이러한 역조회는 전술한 NVMe-oF 명령 식별자 대신 스토리지-인접 연산 명령 식별자(NSC-CID)를 사용할 것이다.
이러한 NVMe-oF 대 NVMe 맵핑(또는 NVMe 대 NVMe 맵핑)을 이용하여, NVMe-oF 브리지 장치(200)는 백엔드 SSD(250)로 NVMe 명령들을 출력할 다수의 명령 처리부들을 지원할 수 있다. 예를 들어, NVMe-oF 브리지 장치(200)는 소정의 제출 큐(SQ) (로컬 태그의 12비트 깊이)에 대해 최대 4096(212)개의 활성 NVMe 명령들(즉, 큐-깊이)을 지원할 수 있다. 특수 명령부(231)는 이러한 방법을 이용하여 스토리지-인접 연산 프로세서에 의한 다양한 NVMe 명령들을 호스트 명령들과의 충돌 없이 백엔드 SSD(250)로 출력한다. 예를 들어, 스토리지-인접 연산 프로세서는 NVMe 독출 명령들을 출력함으로써 백엔드 SSD로부터 데이터 청크들을 인출하고, 인출된 데이터를 처리하며, NVMe 기입 명령들을 출력함으로써 백엔드 SSD로 다시 처리 결과를 저장한다. 상이한 크기의 명령 처리부 식별자 및 NVMe 명령 식별자의 로컬 태그 구성들이 사용될 수 있으며, 이러한 NVMe 명령 식별자 배열은 상이한 최대 큐-깊이를 제공할 수 있다.
도 5는 일 실시예에 따른 관리자 제출 큐 및 완료 큐의 공유를 나타내는 블록도이다. 백엔드 SSD는 관리자 제출 큐(531) 및 관리자 완료 큐(532)를 포함하는 관리자 큐 쌍을 본 브리지 장치와 공유할 수 있다. 관리자 제출 큐(531)는 백엔드 SSD로 관리자 명령들을 출력하는데 사용된다. 원격 호스트(501)에서 실행되는 애플리케이션은 백엔드 SSD의 데이터 스토리지로의 접근을 필요로 하는 데이터-중심 애플리케이션(예: 기계학습 애플리케이션)일 수 있다. NVMe-oF 브리지 장치의 NVMe-oF-대-NVMe 명령 변환기(521) (예: 도 2의 패브릭 명령부(232) 및 관리자 명령부(233))는 원격 개시자로부터 수신된 NVMe-oF 관리자 명령들을 NVMe 관리자 명령들로 변환하고, NVMe 관리자 명령들을 관리자 제출 큐(531) (예: 도 2의 PSQ 모듈(216))에 삽입한다. 또한, NVMe-oF 브리지 장치의 스토리지-인접 연산 프로세서(531)는 관리자 제출 큐(531)를 경유하여 백엔드 SSD로 관리자 명령들을 출력할 수 있다.
패브릭 명령부, 관리자 명령부, 기입 명령부 및 독출 명령부와 같은 NVMe-oF 명령 처리부들 각각은 고유의 4비트 명령 처리부 식별자(CU_ID)를 가질 수 있다. 따라서, 동일한 관리자 제출 큐(531)를 통해 스토리지-인접 연산 프로세서(511)의 관리자 명령들뿐만 아니라 NVMe-oF 호스트의 관리자 명령들을 출력하는 것도 가능하다. 스토리지-인접 연산 프로세서(511)는 호스트가 볼 수 있는(Host-visible) 사용자 데이터의 데이터 무결성에 영향을 미치거나 백엔드 SSD의 데이터 구조를 제어하지 않는 관리자 명령들만을 출력하는 것으로 가정한다. 스토리지-인접 연산 프로세서(511)는 호스트 데이터를 독출하거나 감시하며, 자체 소유한 데이터를 수정할 수 있을 뿐이다. 일부 실시예들에 있어서, 원격 호스트(501) 및 스토리지-인접 연산 프로세서(511)는 데이터 동기화를 통해 백엔드 SSD에 저장된 데이터를 공유할 수 있다.
도 6은 일 실시예에 따른 원격 호스트 및 스토리지-인접 연산 프로세서 간의 입/출력 제출 큐의 공유를 나타내는 블록도이다. 도 5의 관리자 제출 큐(531)와 달리, 많은 수의 입/출력 제출 큐가 존재할 수 있다. 입/출력 제출 큐들은 독출 및 기입과 같은 데이터 명령들을 출력하는데 사용될 수 있다. 입/출력 명령들은 원격 개시자 및 백엔드 SSD로, 또는 원격 개시자 및 백엔드 SSD로부터 데이터를 이동시킨다. 특수 명령부(231)는 상이한 명령 처리부 식별자(CU_ID) 값들을 이용하여 호스트 입/출력 명령들에 대해 사용되고 있는 것과 동일한 입/출력 제출 큐들에 스토리지-인접 연산 프로세서에 대한 입/출력 명령들을 삽입할 수 있다. 다른 실시예에 있어서, 스토리지-인접 연산 프로세서(611)로부터 출력된 입/출력 명령들을 처리하기 위해 스토리지-인접 연산 프로세서 전용의 입/출력 제출 큐 세트가 사용될 수 있다. 도 6은 스토리지-인접 연산 프로세서(611)와, 원격 개시자로부터 출력된 입/출력 명령들을 위해 두 개의 별도의 입/출력 명령 제출 큐 및 완료 큐들이 사용되는 예를 도시한다.
어느 경우에서나 PCIe 완료 엔트리 파서는 명령 처리부 식별자(CU_ID)를 이용하여 백엔드 SSD로부터 수신된 완료 엔트리들을 브리지 장치의 적절한 명령 처리부들로 전송한다. 스토리지-인접 연산 프로세서(611)는 호스트 데이터에 수정을 가하지 않는 입/출력 명령들을 출력하는 것으로 가정한다. 주로, 스토리지-인접 연산 프로세서(611)는 호스트(601)에 의해 기입된 데이터를 독출하여 로컬 처리를 위해 독출 데이터 처리 및 분석을 수행할 것이다. 스토리지-인접 연산 프로세서(611)에 의해 생성된 수정 데이터 또는 분석 결과들은 호스트(601)의 접근이 가능/불가능할 수 있는 별도의 스토리지 영역에 기입될 수 있다. 일 실시예에 있어서, 스토리지-인접 연산 프로세서(611), 및 호스트(610)에서 실행되는 원격 개시자는 동일한 데이터 및 스토리지 명칭공간들을 공유하기 위해 높은 레벨로 동기화될 수 있다.
도 7은 일 실시예에 따른 브리지 장치 내 로컬 데이터 이동을 나타내는 블록도이다. 브리지 장치(700)는 기입 데이터 버퍼(751) 및 독출 데이터 버퍼(752)를 포함한다. 일 실시예에 따르면, 브리지 장치(700)의 시스템 메모리(예: 도 3의 시스템 메모리(212))는 기입 데이터 버퍼(751) 및 독출 데이터 버퍼(752)를 포함한다.
스토리지-인접 연산 프로세서(711)는 백그라운드에서 SSD 데이터를 스캔 및 분석한다. 스토리지-인접 연산 프로세서(711)는 주기적으로 백엔드 SSD(750)로부터 사용자 데이터를 인출하여 분석할 수 있다. 스토리지-인접 연산 프로세서(711)는 수정된 데이터 및/또는 데이터 처리 결과를 다시 백엔드 SSD(750)에 저장할 수 있다. 이러한 동작들은 백엔드 SSD(750)로의 및 백엔드 SSD(750)로부터의 데이터 이동을 필요로 한다. 스토리지-인접 연산 NVMe 명령들은 이러한 데이터 이동의 세부사항을 지정한다.
일 실시예에 있어서, 스토리지-인접 연산 프로세서(711)는 NVMe 명령이 기입 명령인지 아니면 독출 명령인지를 지시하기 위해 스토리지-인접 연산 NVMe 명령 연산부호를 사용할 수 있다. 스토리지-인접 연산 NVMe 명령은 기입 데이터 버퍼(751) 또는 독출 데이터 버퍼(752)의 연관 논리블록주소(LBA)도 지시할 수 있다. 스토리지-인접 연산 기입 명령에 있어, 데이터는 브리지 장치(700)의 시스템 메모리로부터 백엔드 SSD(750)로 이동한다. 스토리지-인접 연산 독출 명령에 있어, 데이터는 백엔드 SSD(750)로부터 브리지 장치(700)의 시스템 메모리로 이동한다. 호스트 명령들의 데이터 전송에 있어, 이러한 두 방향의 데이터 이동이 뒤섞이지 않도록 기입 데이터 버퍼(751) 또는 독출 데이터 버퍼(752) 내의 별도의 버퍼 주소 세트가 사용될 수 있다.
스토리지-인접 연산 프로세서(711)가 백엔드 SSD(750)에 저장된 데이터를 처리하기 위해 스토리지-인접 연산 NVMe 명령을 출력하는 경우, 스토리지-인접 연산 프로세서(711)는 우선 원하는 크기의 독출 데이터 버퍼에 공간을 할당한다. 그런 다음, 스토리지-인접 연산 프로세서(711)는 할당된 독출 버퍼 공간의 포인터를 이용하여 NVMe 독출 명령을 생성한다. 스토리지-인접 연산 프로세서(711)는 백엔드 SSD(750)에 저장된 데이터를 독출하기 위해 백엔드 SSD(750)의 적절한 Namespace.LBA 주소를 생성한다(populate). 그런 다음, 스토리지-인접 연산 프로세서(711)는 구성된 스토리지-인접 연산-NVMe-독출 명령을 브리지 장치(700)의 적절한 입/출력 제출 큐에 삽입한다. 백엔드 SSD(750)는 스토리지-인접 연산-NVMe-독출 명령을 PCIe 버스를 통해 인출하고, 독출 데이터 버퍼(752) 내 할당된 독출 버퍼 공간의 포인터를 이용하여 시스템 메모리에 대해 요청 데이터의 직접 메모리 접근(DMA) 기입 동작을 수행한다. 그런 다음, 백엔드 SSD(750)는 스토리지-인접 연산-NVMe-독출 명령 완료 엔트리를 브리지 장치(700)로 전송한다. 브리지 장치(700)는 지능적으로 스토리지-인접 연산-NVMe-독출 완료 엔트리를 스토리지-인접 연산 프로세서(711)로 전달할 수 있다. 이 때, 스토리지-인접 연산 프로세서(711)는 인출된 데이터를 계속하여 처리 또는 분석한다.
스토리지-인접 연산 프로세서(711)는 인출된 데이터를 수정할 수 있다. 스토리지-인접 연산 프로세서(711)는 데이터 처리 결과로서 신규 데이터를 생성할 수 있다. 어느 시점에서, 스토리지-인접 연산 프로세서(711)는 백엔드 SSD(750)에 대해 기입 동작을 수행함으로써 이러한 데이터를 유지할 수 있다. 스로리지-인접 연산 프로세서(711)는 백엔드 SSD(750)에 기입될 필요가 있는 데이터의 주소를 이용하여 스토리지-인접 연산-NVMe-기입 명령을 구성한다. 그런 다음, 스토리지-인접 연산 프로세서(711)는 백엔드 SSD(750) 내의 데이터가 기입되기 적절한 Namespace.LBA 스토리지 위치를 삽입한다. 이후, 스토리지-인접 연산 프로세서(711)는 새롭게 구성된 스토리지-인접 연산-NVMe-기입 명령을 브리지 장치(700)의 입/출력 제출 큐에 삽입한다. 백엔드 SSD(750)는 PCIe 버스를 통해 스토리지-인접 연산-NVMe-기입 명령을 인출하여 실행한다. 백엔드 SSD(750)는 시스템 메모리로부터 스토리지-인접 연산-NVMe-기입 명령에 지정된 백엔드 SSD 주소로 데이터를 기입하는 DMA 동작을 수행한다. 데이터 DMA 동작이 완료되면, 백엔드 SSD(750)는 스토리지-인접 연산-NVMe-기입 명령에 대한 완료 엔트리를 전송한다. 브리지 장치(700)는 지능적으로 스토리지-인접 연산-NVMe-기입 명령 완료 엔트리를 스토리지-인접 연산 프로세서(711)로 전달할 수 있다. 이 때, 스토리지-인접 연산 프로세서는 기입 데이터 버퍼(751)의 기입 데이터를 폐기할 수 있다.
일 실시예에 따르면, 브리지 장치는 호스트 컴퓨터에서 실행되는 애플리케이션으로부터 제1 명령세트를 수신하는 제1 인터페이스; 제1 명령세트를 변환하고 제1 명령세트에 기초하여 제2 명령세트를 생성하는 하나 이상의 명령 프로세서; 데이터 스토리지 장치로 제2 명령세트를 제공하는 제2 인터페이스; 및 애플리케이션이 실행되는 동안 호스트 컴퓨터와 무관하게 백그라운드 모드에서 데이터 스토리지 장치로부터 데이터를 인출하고 데이터 스토리지 장치에 데이터를 기입하도록 내부 명령을 발생시키는 컴퓨팅 프로세서를 포함한다.
데이터 스토리지 장치는 비휘발성 메모리 익스프레스(NVMe) 표준과 호환 가능한 솔리드 스테이트 드라이브일 수 있다.
데이터 스토리지 장치는 NVMe 오버 패브릭(NVMe-oF) 표준과 호환 가능한 솔리드 스테이트 드라이브일 수 있다.
제1 인터페이스는 패브릭 네트워크를 통한 NVMe-oF 인터페이스일 수 있고, 데이터 스토리지 장치에 대한 제2 인터페이스는 PCIe 인터페이스일 수 있다. 제1 명령세트는 NVMe-oF 명령들을 포함할 수 있고, 제2 명령세트는 NVMe 명령들을 포함할 수 있다.
패브릭 네트워크는 이더넷(Ethernet), 광 채널(Fibre Channel) 및 인피니밴드(Infiniband) 중에서 선택될 수 있다.
브리지 장치는 명령 파서 및 명령 분류기를 더 포함할 수 있다. 명령 파서는 제1 명령세트를 파싱하여 파싱된 명령들을 생성할 수 있고, 명령 분류기는 파싱된 명령들을 분류하여 분류된 명령들을 하나 이상의 명령 프로세서로 제공할 수 있다.
하나 이상의 명령 프로세서는 컴퓨팅 프로세서에 의해 출력된 제2 명령세트의 서브명령세트를 처리하는 특수 명령부를 포함할 수 있다.
애플리케이션은 기계학습 애플리케이션일 수 있다.
제2 명령세트의 각 명령은 하나 이상의 명령 프로세서에 대응하는 명령 처리부 식별자 및 룩업 테이블에 의해 제1 명령세트에 맵핑되는 로컬 태그를 포함하는 명령 식별자를 포함할 수 있다.
브리지 장치는 데이터 스토리지 장치로 제2 명령세트를 큐잉하기 위한 제출 큐 및 데이터 스토리지 장치로부터 수신된 완료 엔트리들을 큐잉하기 위한 완료 큐를 더 포함할 수 있다.
다른 실시예에 따른 방법은 제1 인터페이스를 통해 호스트 컴퓨터에서 실행되는 애플리케이션으로부터 제1 명령세트를 수신하는 단계; 제1 명령세트를 변환하고 제1 명령세트에 기초하여 제2 명령세트를 생성하는 단계; 제2 인터페이스를 통해 데이터 스토리지 장치로 제2 명령세트를 제공하는 단계; 및 애플리케이션이 실행되는 동안 호스트 컴퓨터와 무관하게 백그라운드 모드에서 데이터 스토리지 장치로부터 데이터를 인출하고 데이터 스토리지 장치에 데이터를 기입하도록 내부 명령을 출력하는 단계를 포함한다.
데이터 스토리지 장치는 비휘발성 메모리 익스프레스(NVMe) 표준과 호환 가능한 솔리드 스테이트 드라이브일 수 있다.
데이터 스토리지 장치는 NVMe 오버 패브릭(NVMe-oF) 표준과 호환 가능한 솔리드 스테이트 드라이브일 수 있다.
제1 인터페이스는 패브릭 네트워크를 통한 NVMe-oF 인터페이스일 수 있고, 데이터 스토리지 장치에 대한 제2 인터페이스는 PCIe 인터페이스일 수 있다. 제1 명령세트는 NVMe-oF 명령들을 포함할 수 있고, 제2 명령세트는 NVMe 명령들을 포함할 수 있다.
패브릭 네트워크는 이더넷, 광 채널 및 인피니밴드 중에서 선택될 수 있다.
본 실시예의 방법은 제1 명령세트를 파싱하여 파싱된 명령들을 생성하는 단계 및 파싱된 명령들을 분류하여 분류된 명령들을 하나 이상의 명령 프로세서로 제공하는 단계를 더 포함할 수 있다.
하나 이상의 명령 프로세서는 컴퓨팅 프로세서에 의해 출력된 제2 명령세트의 서브명령세트를 처리하는 특수 명령부를 포함할 수 있다.
애플리케이션은 기계학습 애플리케이션일 수 있다.
제2 명령세트의 각 명령은 하나 이상의 명령 프로세서에 대응하는 명령 처리부 식별자 및 룩업테이블에 의해 제1 명령세트에 맵핑되는 로컬 태그를 포함하는 명령 식별자를 포함할 수 있다.
본 실시예의 방법은 데이터 스토리지 장치로 제2 명령세트를 큐잉하기 위한 제출 큐 및 데이터 스토리지 장치로부터 수신된 완료 엔트리들을 큐잉하기 위한 완료 큐를 더 포함할 수 있다.
상기 실시예들은 스토리지-인접 연산을 제공하기 위한 브리지 장치를 구현하는 다양한 실시예들을 예시하기 위해 본 명세서에 설명되었다. 개시된 실시예들로부터 다양한 변형 및 변경들이 본 발명의 기술분야에 속한 통상의 기술자들에 의해 이루어질 수 있다. 본 발명의 범위에 속하는 기술적 사상은 청구범위에 기재된다.
200: 브리지 장치 211: 스토리지-인접 연산 프로세서
212: 시스템 메모리 213: 명령 파서
214: 명령 분류기 215: 명령 프로세서
216: PSQ 모듈 217: PAPP 모듈
218: NVMe-oF 응답기 219: PCIe 완료 엔트리 파서
220: PCQ 모듈 213: 특수 명령부
232: 패브릭 명령부 233: 관리자 명령부
234: 기입 명령부 235: 독출 명령부
250: 백엔드 SSD

Claims (20)

  1. 호스트 컴퓨터에서 실행되는 애플리케이션으로부터 제1 명령세트를 수신하는 제1 인터페이스;
    상기 제1 명령세트를 변환하고 상기 제1 명령세트에 기초하여 제2 명령세트를 생성하는 하나 이상의 명령 프로세서;
    데이터 스토리지 장치로 상기 제2 명령세트를 제공하는 제2 인터페이스; 및
    상기 애플리케이션이 실행되는 동안 상기 호스트 컴퓨터와 무관하게 백그라운드 모드에서 상기 데이터 스토리지 장치로부터 데이터를 인출하고 상기 데이터 스토리지 장치에 데이터를 기입하도록 내부 명령을 발생시키는 컴퓨팅 프로세서
    를 포함하는 브리지 장치.
  2. 제1항에 있어서,
    상기 데이터 스토리지 장치는 비휘발성 메모리 익스프레스(Nonvolatile Memory express: NVM) 표준과 호환 가능한 솔리드 스테이트 드라이브(Solid-State Drive)인, 브리지 장치.
  3. 제1항에 있어서,
    상기 데이터 스토리지 장치는 NVMe 오버 패브릭(NVMe over Fabrics: NVMe-oF) 표준과 호환 가능한 솔리드 스테이트 드라이브인, 브리지 장치.
  4. 제3항에 있어서,
    상기 제1 인터페이스는 패브릭 네트워크를 통한 NVMe-oF 인터페이스이고, 상기 제2 인터페이스는 PCIe 인터페이스이며,
    상기 제1 명령세트는 NVMe-oF 명령들을 포함하고, 상기 제2 명령세트는 NVMe 명령들을 포함하는, 브리지 장치.
  5. 제4항에 있어서,
    상기 패브릭 네트워크는 이더넷, 광 채널 및 인피니밴드 중에서 선택되는, 브리지 장치.
  6. 제1항에 있어서,
    명령 파서 및 명령 분류기를 더 포함하되,
    상기 명령 파서는 상기 제1 명령세트를 파싱하여 파싱된 명령들을 생성하고,
    상기 명령 분류기는 상기 파싱된 명령들을 분류하여 분류된 명령들을 상기 하나 이상의 명령 프로세서에 제공하는, 브리지 장치.
  7. 제1항에 있어서,
    상기 하나 이상의 명령 프로세서는 상기 컴퓨팅 프로세서에 의해 발생된 상기 제2 명령세트의 서브명령세트를 처리하는 특수 명령부를 포함하는, 브리지 장치.
  8. 제1항에 있어서,
    상기 애플리케이션은 기계학습 애플리케이션인, 브리지 장치.
  9. 제1항에 있어서,
    상기 제2 명령세트의 각 명령은 상기 하나 이상의 명령 프로세서에 대응하는 명령 처리부 식별자 및 룩업 테이블에 의해 상기 제1 명령세트에 맵핑되는 로컬 태그를 포함하는 명령 식별자를 포함하는, 브리지 장치.
  10. 제1항에 있어서,
    상기 데이터 스토리지 장치로 상기 제2 명령세트를 큐잉하기 위한 제출 큐 및 상기 데이터 스토리지 장치로부터 수신된 완료 엔트리들을 큐잉하기 위한 완료 큐를 더 포함하는, 브리지 장치.
  11. 제1 인터페이스를 통해 호스트 컴퓨터에서 실행되는 애플리케이션으로부터 제1 명령세트를 수신하는 단계;
    상기 제1 명령세트를 변환하고 상기 제1 명령세트에 기초하여 제2 명령세트를 생성하는 단계;
    제2 인터페이스를 통해 데이터 스토리지 장치로 상기 제2 명령세트를 제공하는 단계; 및
    상기 애플리케이션이 실행되는 동안 상기 호스트 컴퓨터와 무관하게 백그라운드 모드에서 상기 데이터 스토리지 장치로부터 데이터를 인출하고 상기 데이터 스토리지 장치에 데이터를 기입하도록 내부 명령을 발생시키는 단계
    를 포함하는 방법.
  12. 제11항에 있어서,
    상기 데이터 스토리지 장치는 비휘발성 메모리 익스프레스(Nonvolatile Memory express: NVMe) 표준과 호환 가능한 솔리드 스테이트 드라이브(Solid State Drive)인, 방법.
  13. 제11항에 있어서,
    상기 데이터 스토리지 장치는 NVMe 오버 패브릭(NVMe over Fabrics: NVMe-oF) 표준과 호환 가능한 솔리드 스테이트 드라이브인, 방법.
  14. 제13항에 있어서,
    상기 제1 인터페이스는 패브릭 네트워크를 통한 NVMe-oF 인터페이스이고, 상기 제2 인터페이스는 PCIe 인터페이스이며,
    상기 제1 명령세트는 NVMe-oF 명령들을 포함하고, 상기 제2 명령세트는 NVMe 명령들을 포함하는, 방법.
  15. 제14항에 있어서,
    상기 패브릭 네트워크는 이더넷, 광 채널 및 인피티밴드 중에서 선택되는, 방법.
  16. 제11항에 있어서,
    상기 제1 명령세트를 파싱하여 파싱된 명령들을 생성하는 단계; 및
    상기 파싱된 명령들을 분류하여 분류된 명령들을 하나 이상의 명령 프로세서로 제공하는 단계를 더 포함하는, 방법.
  17. 제16항에 있어서,
    상기 하나 이상의 명령 프로세서는 컴퓨팅 프로세서에 의해 발생된 상기 제2 명령세트의 서브명령세트를 처리하는 특수 명령부를 포함하는, 방법.
  18. 제11항에 있어서,
    상기 애플리케이션은 기계학습 애플리케이션인, 방법.
  19. 제16항에 있어서,
    상기 제2 명령세트의 각 명령은 상기 하나 이상의 명령 프로세서에 대응하는 명령 처리부 식별자 및 룩업 테이블에 의해 상기 제1 명령세트에 맵핑되는 로컬 태그를 포함하는 명령 식별자를 포함하는, 방법.
  20. 제11항에 있어서,
    상기 데이터 스토리지 장치로 상기 제2 명령세트를 큐잉하기 위한 제출 큐 및 상기 데이터 스토리지 장치로부터 수신된 완료 엔트리들을 큐잉하기 위한 완료 큐를 제공하는 단계를 더 포함하는, 방법.
KR1020180080936A 2017-10-11 2018-07-12 브리지 장치를 이용한 스토리지 인접 연산 제공 시스템 및 방법 KR102388893B1 (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201762571061P 2017-10-11 2017-10-11
US201762571064P 2017-10-11 2017-10-11
US62/571,064 2017-10-11
US62/571,061 2017-10-11
US15/944,682 US10394746B2 (en) 2017-10-11 2018-04-03 System and method for providing near storage compute using a bridge device
US15/944,682 2018-04-03

Publications (2)

Publication Number Publication Date
KR20190040886A true KR20190040886A (ko) 2019-04-19
KR102388893B1 KR102388893B1 (ko) 2022-04-21

Family

ID=65993255

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020180067003A KR102513924B1 (ko) 2017-10-11 2018-06-11 데이터 저장 장치들 내의 인-스토리지 가속을 제공하기 위한 시스템 및 방법
KR1020180080936A KR102388893B1 (ko) 2017-10-11 2018-07-12 브리지 장치를 이용한 스토리지 인접 연산 제공 시스템 및 방법

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020180067003A KR102513924B1 (ko) 2017-10-11 2018-06-11 데이터 저장 장치들 내의 인-스토리지 가속을 제공하기 위한 시스템 및 방법

Country Status (5)

Country Link
US (3) US10719474B2 (ko)
JP (2) JP7141902B2 (ko)
KR (2) KR102513924B1 (ko)
CN (2) CN109656843A (ko)
TW (2) TWI780168B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11789652B2 (en) 2020-11-18 2023-10-17 Samsung Electronics Co., Ltd. Storage device and storage system including the same

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10466916B2 (en) * 2015-04-28 2019-11-05 American Megatrends International, Llc System and method of dynamic write protect of storage devices exposed by baseboard management controller (BMC)
US10445018B2 (en) * 2016-09-09 2019-10-15 Toshiba Memory Corporation Switch and memory device
US10719474B2 (en) * 2017-10-11 2020-07-21 Samsung Electronics Co., Ltd. System and method for providing in-storage acceleration (ISA) in data storage devices
US10761775B2 (en) * 2018-02-09 2020-09-01 Samsung Electronics Co., Ltd. System and method for NVMe inter command association in SSD storage using a bridge device
US10585819B2 (en) * 2018-03-05 2020-03-10 Samsung Electronics Co., Ltd. SSD architecture for FPGA based acceleration
KR102559581B1 (ko) 2018-05-23 2023-07-25 삼성전자주식회사 재구성 가능 로직을 포함하는 스토리지 장치 및 상기 스토리지 장치의 동작 방법
US11436023B2 (en) * 2018-05-31 2022-09-06 Pure Storage, Inc. Mechanism for updating host file system and flash translation layer based on underlying NAND technology
US11188496B2 (en) * 2018-09-13 2021-11-30 Toshiba Memory Corporation System and method for storing data using ethernet drives and ethernet open-channel drives
US11366610B2 (en) 2018-12-20 2022-06-21 Marvell Asia Pte Ltd Solid-state drive with initiator mode
US11204819B2 (en) 2018-12-21 2021-12-21 Samsung Electronics Co., Ltd. System and method for offloading application functions to a device
US10938730B2 (en) * 2019-01-29 2021-03-02 EMC IP Holding Company LLC Data transmission techniques between systems having different communication speeds
CN113767360A (zh) * 2019-03-14 2021-12-07 马维尔亚洲私人有限公司 在驱动器级别处对非易失性存储器联网消息的终止
WO2020183444A1 (en) 2019-03-14 2020-09-17 Marvell Asia Pte, Ltd. Transferring data between solid state drives (ssds) via a connection between the ssds
WO2020186270A1 (en) * 2019-03-14 2020-09-17 Marvell Asia Pte, Ltd. Ethernet enabled solid state drive (ssd)
US11079958B2 (en) * 2019-04-12 2021-08-03 Intel Corporation Apparatus, system and method for offloading data transfer operations between source and destination storage devices to a hardware accelerator
CN110008154B (zh) * 2019-04-16 2020-08-21 北京智芯微电子科技有限公司 提高处理器与访存总线时序的方法及内存属性预测器
EP3959608A4 (en) * 2019-04-25 2022-12-21 Liqid Inc. COMPOSITE COMPUTING SYSTEMS WITH CONVERGED AND DISAGGREGATED COMPONENT POOL
US11809799B2 (en) 2019-06-24 2023-11-07 Samsung Electronics Co., Ltd. Systems and methods for multi PF emulation using VFs in SSD controller
JP7446167B2 (ja) * 2019-06-24 2024-03-08 三星電子株式会社 軽量ブリッジ、これを含む物品及びこれを用いた方法
JP2021086583A (ja) 2019-11-29 2021-06-03 キヤノン株式会社 情報処理装置、制御装置および制御装置の制御方法
US20210166188A1 (en) * 2019-12-03 2021-06-03 International Business Machines Corporation Computation of supply-chain metrics
KR20210080009A (ko) * 2019-12-20 2021-06-30 삼성전자주식회사 가속기, 가속기의 동작 방법 및 가속기를 포함한 디바이스
US11687279B2 (en) 2020-01-27 2023-06-27 Samsung Electronics Co., Ltd. Latency and throughput centric reconfigurable storage device
US11210034B2 (en) * 2020-03-02 2021-12-28 Silicon Motion, Inc. Method and apparatus for performing high availability management of all flash array server
CN112882966A (zh) * 2020-03-24 2021-06-01 威盛电子股份有限公司 运算装置
TWI811620B (zh) * 2020-03-24 2023-08-11 威盛電子股份有限公司 運算裝置與資料處理方法
US11941433B2 (en) 2020-03-24 2024-03-26 Via Technologies Inc. Computing apparatus and data processing method for offloading data processing of data processing task from at least one general purpose processor
CN111459864B (zh) * 2020-04-02 2021-11-30 深圳朗田亩半导体科技有限公司 一种存储器件及其制造方法
CN113051206A (zh) * 2020-05-04 2021-06-29 威盛电子股份有限公司 桥接电路与计算机系统
US11778055B2 (en) * 2020-07-13 2023-10-03 Samsung Electronics Co., Ltd. Systems and methods for storage-efficient sensors
KR102656104B1 (ko) * 2020-07-23 2024-04-11 주식회사 멤레이 비휘발성 메모리 제어 장치 및 비휘발성 메모리 장치
JP2022057870A (ja) 2020-09-30 2022-04-11 キヤノン株式会社 制御装置および情報処理システムに関する。
US11442776B2 (en) 2020-12-11 2022-09-13 Liqid Inc. Execution job compute unit composition in computing clusters
JP2022143959A (ja) 2021-03-18 2022-10-03 キオクシア株式会社 メモリシステム、方法及びデータ処理システム
US20220300165A1 (en) * 2021-03-22 2022-09-22 Google Llc Cooperative Storage Architecture
KR102365312B1 (ko) * 2021-06-17 2022-02-23 삼성전자주식회사 스토리지 컨트롤러, 연산 스토리지 장치, 및 연산 스토리지 장치의 동작 방법
EP4105771A1 (en) * 2021-06-17 2022-12-21 Samsung Electronics Co., Ltd. Storage controller, computational storage device, and operational method of computational storage device
US11966343B2 (en) * 2021-07-19 2024-04-23 Samsung Electronics Co., Ltd. Universal mechanism to access and control a computational device
US11880568B2 (en) 2021-11-17 2024-01-23 Seagate Technology Llc On demand configuration of FPGA interfaces
US11809323B1 (en) 2022-06-22 2023-11-07 Seagate Technology Llc Maintaining real-time cache coherency during distributed computational functions

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140001924A1 (en) * 2009-02-12 2014-01-02 Sungkyunkwan University Foundation For Corporate Collaboration Polymer and polymer actuator comprising the same
US20170286363A1 (en) * 2016-04-04 2017-10-05 Marvell World Trade Ltd. Methods and systems for accessing host memory through non-volatile memory over fabric bridging with direct target access

Family Cites Families (58)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101089808A (zh) * 2005-03-29 2007-12-19 李春柏 电脑主机的延伸装置的工作方法
US7526619B1 (en) * 2006-09-05 2009-04-28 Nvidia Corporation Method for providing emulated flexible magnetic storage medium using network storage services
US7617340B2 (en) * 2007-01-09 2009-11-10 International Business Machines Corporation I/O adapter LPAR isolation with assigned memory space
JP2008282308A (ja) 2007-05-14 2008-11-20 Nec Electronics Corp 協調検証装置、協調検証方法、協調検証プログラム
US7702662B2 (en) * 2007-05-16 2010-04-20 International Business Machines Corporation Method and system for handling reallocated blocks in a file system
US20090251867A1 (en) 2007-10-09 2009-10-08 Sharma Viswa N Reconfigurable, modularized fpga-based amc module
US8825940B1 (en) * 2008-12-02 2014-09-02 Siliconsystems, Inc. Architecture for optimizing execution of storage access commands
US9262303B2 (en) 2008-12-05 2016-02-16 Altera Corporation Automated semiconductor design flaw detection system
US8219776B2 (en) * 2009-09-23 2012-07-10 Lsi Corporation Logical-to-physical address translation for solid state disks
CN101882122A (zh) * 2009-05-07 2010-11-10 瀚邦科技股份有限公司 数据通信系统及桥接器
US8255661B2 (en) * 2009-11-13 2012-08-28 Western Digital Technologies, Inc. Data storage system comprising a mapping bridge for aligning host block size with physical block size of a data storage device
US8880573B2 (en) 2010-10-12 2014-11-04 Dolby Laboratories Licensing Corporation System and method of dynamic precision operations
US8995981B1 (en) * 2010-12-13 2015-03-31 Csr Technology Inc. Systems and methods for remote control adaptive configuration
US8819328B2 (en) 2010-12-30 2014-08-26 Sandisk Technologies Inc. Controller and method for performing background operations
US8700834B2 (en) 2011-09-06 2014-04-15 Western Digital Technologies, Inc. Systems and methods for an enhanced controller architecture in data storage systems
US20140059278A1 (en) * 2011-11-14 2014-02-27 Lsi Corporation Storage device firmware and manufacturing software
US9009703B2 (en) 2012-05-10 2015-04-14 International Business Machines Corporation Sharing reconfigurable computing devices between workloads
EP2888818A1 (en) 2012-08-21 2015-07-01 Missing Link Electronics Inc. Configurable mixed-signal systems
US20140071855A1 (en) 2012-09-10 2014-03-13 Accedian Networks Inc. Transparent auto-negotiation of ethernet
US9298654B2 (en) * 2013-03-15 2016-03-29 International Business Machines Corporation Local bypass in memory computing
US9311230B2 (en) 2013-04-23 2016-04-12 Globalfoundries Inc. Local direct storage class memory access
US9785356B2 (en) 2013-06-26 2017-10-10 Cnex Labs, Inc. NVM express controller for remote access of memory and I/O over ethernet-type networks
CN105408875B (zh) * 2014-02-23 2019-06-21 拉姆伯斯公司 在存储器接口上的分布式过程执行和文件系统
WO2015138245A1 (en) 2014-03-08 2015-09-17 Datawise Systems, Inc. Methods and systems for converged networking and storage
US9304690B2 (en) * 2014-05-07 2016-04-05 HGST Netherlands B.V. System and method for peer-to-peer PCIe storage transfers
WO2015200313A1 (en) * 2014-06-23 2015-12-30 Liqid Inc. Modular switched fabric for data storage systems
US9959203B2 (en) * 2014-06-23 2018-05-01 Google Llc Managing storage devices
US9846660B2 (en) * 2014-11-12 2017-12-19 Xilinx, Inc. Heterogeneous multiprocessor platform targeting programmable integrated circuits
US9977734B2 (en) * 2014-12-11 2018-05-22 Toshiba Memory Corporation Information processing device, non-transitory computer readable recording medium, and information processing system
JP6329318B2 (ja) 2015-02-25 2018-05-23 株式会社日立製作所 情報処理装置
US20160259754A1 (en) 2015-03-02 2016-09-08 Samsung Electronics Co., Ltd. Hard disk drive form factor solid state drive multi-card adapter
US9619396B2 (en) * 2015-03-27 2017-04-11 Intel Corporation Two level memory full line writes
US10416915B2 (en) * 2015-05-15 2019-09-17 ScaleFlux Assisting data deduplication through in-memory computation
US9891935B2 (en) * 2015-08-13 2018-02-13 Altera Corporation Application-based dynamic heterogeneous many-core systems and methods
CN108702374A (zh) * 2015-09-02 2018-10-23 科内克斯实验室公司 用于以太网类型网络上的存储器和I/O的远程访问的NVM Express控制器
US10613756B2 (en) 2015-09-03 2020-04-07 Qualcomm Incorporated Hardware-accelerated storage compression
US9824173B1 (en) * 2015-09-11 2017-11-21 Xilinx, Inc. Software development-based compilation flow for hardware implementation
US9864828B1 (en) * 2015-09-17 2018-01-09 Xilinx, Inc. Hardware acceleration device handoff for using programmable integrated circuits as hardware accelerators
US10180850B1 (en) * 2015-11-03 2019-01-15 Xilinx, Inc. Emulating applications that use hardware acceleration
US10447728B1 (en) * 2015-12-10 2019-10-15 Fireeye, Inc. Technique for protecting guest processes using a layered virtualization architecture
KR102491651B1 (ko) * 2015-12-14 2023-01-26 삼성전자주식회사 비휘발성 메모리 모듈, 그것을 포함하는 컴퓨팅 시스템, 및 그것의 동작 방법
US9934173B1 (en) * 2016-02-24 2018-04-03 Xilinx, Inc. Pseudo cut-through architecture between non-volatile memory storage and remote hosts over a fabric
KR101923661B1 (ko) * 2016-04-04 2018-11-29 주식회사 맴레이 플래시 기반 가속기 및 이를 포함하는 컴퓨팅 디바이스
US20170323305A1 (en) * 2016-05-03 2017-11-09 Anantha Pradeep Mechanism for securing legal interactions
US10210123B2 (en) * 2016-07-26 2019-02-19 Samsung Electronics Co., Ltd. System and method for supporting multi-path and/or multi-mode NMVe over fabrics devices
US10620855B2 (en) * 2016-09-06 2020-04-14 Samsung Electronics Co., Ltd. System and method for authenticating critical operations on solid-state drives
US9703494B1 (en) 2016-09-26 2017-07-11 Intel Corporation Method and apparatus for protecting lower page data during programming in NAND flash
US11586565B2 (en) * 2016-10-03 2023-02-21 Samsung Electronics Co., Ltd. Non-volatile storage system and data storage access protocol for non-volatile storage devices
US10613974B2 (en) * 2016-10-04 2020-04-07 Pure Storage, Inc. Peer-to-peer non-volatile random-access memory
US10656877B2 (en) * 2016-12-06 2020-05-19 Nutanix, Inc. Virtual storage controller
JP2018141448A (ja) 2017-02-28 2018-09-13 ダイキン工業株式会社 圧縮機
US10579471B2 (en) * 2017-03-02 2020-03-03 Toshiba Memory Corporation Storage device and error correction method for storage device
US11249779B2 (en) * 2017-09-01 2022-02-15 Intel Corporation Accelerator interconnect assignments for virtual environments
US10719474B2 (en) * 2017-10-11 2020-07-21 Samsung Electronics Co., Ltd. System and method for providing in-storage acceleration (ISA) in data storage devices
US10558777B1 (en) * 2017-11-22 2020-02-11 Xilinx, Inc. Method of enabling a partial reconfiguration in an integrated circuit device
US11296921B2 (en) * 2017-12-03 2022-04-05 Intel Corporation Out-of-band management of FPGA bitstreams
US10761951B2 (en) * 2017-12-28 2020-09-01 Intel Corporation FPGA based functional safety control logic (FFSCL)
JP7075067B2 (ja) * 2018-06-22 2022-05-25 日本電気株式会社 ストレージ装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140001924A1 (en) * 2009-02-12 2014-01-02 Sungkyunkwan University Foundation For Corporate Collaboration Polymer and polymer actuator comprising the same
US20170286363A1 (en) * 2016-04-04 2017-10-05 Marvell World Trade Ltd. Methods and systems for accessing host memory through non-volatile memory over fabric bridging with direct target access

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11789652B2 (en) 2020-11-18 2023-10-17 Samsung Electronics Co., Ltd. Storage device and storage system including the same

Also Published As

Publication number Publication date
TW201933080A (zh) 2019-08-16
TW201933081A (zh) 2019-08-16
US11487696B2 (en) 2022-11-01
TWI780168B (zh) 2022-10-11
JP7137430B2 (ja) 2022-09-14
US20190108158A1 (en) 2019-04-11
US10394746B2 (en) 2019-08-27
TWI751374B (zh) 2022-01-01
JP2019075104A (ja) 2019-05-16
US20230016328A1 (en) 2023-01-19
US10719474B2 (en) 2020-07-21
US20200341933A1 (en) 2020-10-29
CN109656843A (zh) 2019-04-19
CN109656473A (zh) 2019-04-19
KR102388893B1 (ko) 2022-04-21
KR102513924B1 (ko) 2023-03-27
US20190107956A1 (en) 2019-04-11
JP7141902B2 (ja) 2022-09-26
JP2019075109A (ja) 2019-05-16
KR20190040884A (ko) 2019-04-19
CN109656473B (zh) 2021-07-02

Similar Documents

Publication Publication Date Title
KR102388893B1 (ko) 브리지 장치를 이용한 스토리지 인접 연산 제공 시스템 및 방법
US10216666B2 (en) Caching methods and systems using a network interface card
US10346156B2 (en) Single microcontroller based management of multiple compute nodes
US9575689B2 (en) Data storage system having segregated control plane and/or segregated data plane architecture
US7197588B2 (en) Interrupt scheme for an Input/Output device
US8694723B2 (en) Method and system for coupling serial attached SCSI (SAS) devices and internet small computer system internet (iSCSI) devices through single host bus adapter
US8250281B2 (en) Data communications through a host fibre channel adapter
US11606429B2 (en) Direct response to IO request in storage system having an intermediary target apparatus
US20210255801A1 (en) Information handling system having improved host memory buffer for input/output requests
US11940933B2 (en) Cross address-space bridging
CN109857545B (zh) 一种数据传输方法及装置
US20220113867A1 (en) Direct response to io request in storage system with remote replication
US11281602B1 (en) System and method to pipeline, compound, and chain multiple data transfer and offload operations in a smart data accelerator interface device
US20220121359A1 (en) System and method to utilize a composite block of data during compression of data blocks of fixed size
US11334487B2 (en) Cache sharing in virtual clusters
US9396023B1 (en) Methods and systems for parallel distributed computation
CN116257471A (zh) 一种业务处理方法及装置
US10067888B1 (en) I/O optimization with track splitting
TWI813383B (zh) 用於實體埠鏡像之傳輸控制字架構
US11601515B2 (en) System and method to offload point to multipoint transmissions
WO2022141250A1 (zh) 数据传输方法和相关装置
Gai et al. UrsaX: Integrating Block I/O and Message Transfer for Ultra-Fast Block Storage on Supercomputers
US9990137B1 (en) I/O optimization
CN117896436A (zh) 一种基于智能网卡的存储方法及系统

Legal Events

Date Code Title Description
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
X091 Application refused [patent]
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant