TWI751374B - 橋接裝置及提供接近儲存計算的方法 - Google Patents

橋接裝置及提供接近儲存計算的方法 Download PDF

Info

Publication number
TWI751374B
TWI751374B TW107129423A TW107129423A TWI751374B TW I751374 B TWI751374 B TW I751374B TW 107129423 A TW107129423 A TW 107129423A TW 107129423 A TW107129423 A TW 107129423A TW I751374 B TWI751374 B TW I751374B
Authority
TW
Taiwan
Prior art keywords
commands
command
data
nvme
bridge device
Prior art date
Application number
TW107129423A
Other languages
English (en)
Other versions
TW201933081A (zh
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 TW201933081A publication Critical patent/TW201933081A/zh
Application granted granted Critical
Publication of TWI751374B publication Critical patent/TWI751374B/zh

Links

Images

Classifications

    • 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
    • G06F13/1673Details of memory controller using buffers
    • 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
    • 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
    • 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)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (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

本發明提供一種橋接裝置及提供接近儲存計算的方法。所述橋接裝置包括:第一介面,被配置成從在主機電腦上運行的應用接收第一組命令;一個或多個命令處理器,所述一個或多個命令處理器中的每一者被配置成對所述第一組命令進行轉換並基於所述第一組命令產生第二組命令;第二介面,被配置成將所述第二組命令提供到資料儲存裝置;以及計算處理器,被配置成在運行所述應用的同時發出內部命令來以對於所述主機電腦而言不可知的方式在後臺模式中從所述資料儲存裝置提取資料以及向所述資料儲存裝置寫入資料。本發明的接近儲存計算及記憶體內加速使得能夠以高效率的方式在後臺對大量資料進行處理。

Description

橋接裝置及提供接近儲存計算的方法
本發明是有關於一種資料儲存系統,且特別是有關於一種使用橋接裝置提供接近儲存計算的系統及方法。
固態驅動器(solid-state drive,SSD)正快速地取代傳統的儲存裝置(例如,硬碟驅動器(hard disk drive,HDD)迅速變成現代資料中心基礎設施的主要記憶元件。SSD提供低延遲、高資料讀取/寫入輸送量及對使用者資料的可靠的持久儲存。基於網路結構的非揮發性儲存快速(non-volatile memory express,NVMe)(NVMe over fabric,NVMe-oF)是新興的技術,其使得成百上千的SSD能夠通過網路結構網路(fabric network)(例如,乙太網、光纖通道及無限寬頻(Infiniband))進行連接。
NVMe-oF協定能夠實現遠端直接附接儲存(remote direct-attached storage,rDAS),所述遠端直接附接儲存使得大量的NVMe SSD能夠通過所建立的網路結構網路連接到遠端主機。NVMe-oF協定還支援遠端直接記憶體存取(remote direct memory access,RDMA)以提供可靠的傳送服務來通過網路載送NVMe命令、資料及回應。iWARP、RoCE v1及RoCE v2是提供RDMA服務的傳送協定的一些實例。
使用分解資料儲存裝置(disaggregated data storage device)(例如,NVMe-oF-可相容SSD,在本文中也稱為NVMe-oF SSD或縮寫為eSSD)的資料儲存系統可為在主機電腦上運行的應用提供大的儲存容量。所述應用可從分解資料儲存裝置收集大量資料(大資料)並對它們進行分析。
由於大資料處理的規模非常大,因此用於執行有意義的大資料採擷的基礎設施可能成本過高,需要大量計算資源、大的系統記憶體、高頻寬網路以及用於儲存所述大資料的大的及高性能的資料儲存裝置。期望將一些資料處理挖掘任務從主機電腦卸載到資料儲存裝置並使從資料儲存裝置到主機電腦的資料移動最小化。
根據一個實施例,一種橋接裝置包括:第一介面,被配置成從在主機電腦上運行的應用接收第一組命令;一個或多個命令處理器,所述一個或多個命令處理器中的每一者被配置成對所述第一組命令進行轉換並基於所述第一組命令產生第二組命令;第二介面,被配置成將所述第二組命令提供到資料儲存裝置;以及計算處理器,被配置成在運行所述應用的同時發出內部命令來以對於所述主機電腦而言不可知的方式在後臺模式中從所述資料儲存裝置提取資料以及向所述資料儲存裝置寫入資料。
根據另一個實施例,一種提供接近儲存計算的方法包括:通過第一介面從在主機電腦上運行的應用接收第一組命令;對所述第一組命令進行轉換並基於所述第一組命令產生第二組命令;通過第二介面將所述第二組命令提供到資料儲存裝置;以及在運行所述應用的同時,發出內部命令來以對於所述主機電腦而言不可知的方式在後臺模式中從所述資料儲存裝置提取資料及向所述資料儲存裝置寫入資料。
現將參照圖式更具體地闡述包括實施方式的新穎細節及事件組合在內的以上及其他優選特徵,且以上及其他優選特徵在申請專利範圍中指出。應理解,本文所述具體系統及方法僅作為例示示出且不作為限制。如所屬領域中的技術人員應理解,本文所述原理及特徵可用於各種各樣的實施例中,而此並不背離本公開的範圍。
本文所公開的特徵及教示內容中的每一者可單獨使用或結合其他特徵及教示內容來使用以提供用於提供接近儲存計算的橋接裝置。參照圖式更詳細地闡述代表性實例,這些代表性實例單獨地使用及組合地使用這些附加特徵及教示內容中的許多特徵及教示內容。此詳細說明僅旨在向所屬領域中的技術人員教示用於實踐本教示內容的各個方面的進一步細節,而並非旨在限制申請專利範圍的範圍。因此,在本詳細說明中以上所公開特徵的組合可能未必是在最廣泛意義上實踐本教示內容所必需的,而是相反,僅是為了具體闡述本教示內容的代表性的實例而教示。
在以下說明中,僅出於解釋目的來闡述特定術語以提供對本公開的透徹理解。然而,對於所屬領域中的技術人員而言將顯而易見,這些特定細節並非是實踐本公開的教示內容所必需的。
本文的詳細說明的一些部分是以演算法及對電腦記憶體內的資料位元進行的操作的符號標記法來呈現。這些演算法描述及標記法被資料處理領域中的技術人員用於向所屬領域中的其他技術人員有效地傳達其工作的實質。演算法在此處且一般而言均被視為能得到所期望結果的步驟的自洽序列(self-consistent sequence)。所述步驟需要對物理量進行實體操縱。通常(儘管未必一定如此),這些量會呈能夠被儲存、傳輸、組合、比較及以其他方式被操縱的電信號或磁信號的形式。已證明,主要出於通用的原因,將這些信號稱為位元、值、元件、符號、字元、項、數位等有時是便利的。
然而,應記住,這些用語中的所有用語及所有相似用語均與適宜的物理量相關聯且僅作為應用於這些量的便利標記。除非通過閱讀以下論述顯而易見地另有具體說明,否則應理解,在本說明通篇中,使用例如“處理(processing)”、“計算(computing)”、“運算(calculating)”、“判斷(determining)”、“顯示(displaying)”等用語進行的論述是指電腦系統或相似電子計算裝置的動作及進程,所述電腦系統或相似電子計算裝置操縱在電腦系統的暫存器及記憶體內被表示為物理(電子)量的資料並將所述資料轉換成在電腦系統記憶體或暫存器或者其他這種資訊儲存裝置、資訊傳輸裝置或資訊顯示裝置內被相似地表示為物理量的其他資料。
另外,代表性實例及附屬請求項的各個特徵可以並未具體地及明確地枚舉的方式加以組合以提供本教示內容的附加的有用實施例。還應明確注意,出於原始公開內容的目的以及出於限制所主張主題的目的,所有值範圍或對實體的群組的指示均用於公開每個可能的中間值或中間實體。還應明確注意,圖中所示各組件的尺寸及形狀被設計成有助於理解如何實踐本教示內容,而並非旨在限制實例中所示尺寸及形狀。
本公開闡述一種用於將資料處理及挖掘任務從主機電腦卸載到儲存裝置以使從儲存裝置到分解資料儲存系統中的主機電腦的資料移動最小化的系統及方法。根據一個實施例,本系統及方法允許在儲存裝置附近或儲存裝置內處理資料,這在本文中分別被稱為接近儲存計算(NSC)及記憶體內加速(in-storage acceleration,ISA)。本系統及方法非常適用於使用NVMe-oF標準的分解儲存裝置。另外,本系統及方法可在直接附接NVMe至NVMe橋接裝置(direct attached NVMe-to-NVMe bridge device)中使用。主機電腦可將自身的一些資料採擷任務卸載到NVMe-oF SSD以通過NVMe-oF網路減小主機電腦與NVMe-oF SSD之間的資料移動,從而節省能量及網路基礎設施成本。
圖1繪示根據一個實施例的示例性資料儲存系統的方塊圖。資料儲存系統100包括主機110及機架160(在本文中也稱為eSSD機架),機架160含有一個或多個可相容NVMe-oF的乙太網SSD(eSSD)。舉例來說,機架160包括24個eSSD或48個eSSD。機架160中的eSSD分別被表示為eSSD 170a到eSSD 170n(在本文中統稱為eSSD 170)。主機110包括應用111、作業系統(operating system,OS)及檔案系統(file system,FS)112以及NVMe-oF驅動器113。主機110的初啟程式(initiator)(例如,應用111)可利用NVMe-oF驅動器113建立基於乙太網150的與eSSD 170的NVMe-oF連接。機架160包括乙太網交換機(Ethernet switch)161、基板管理控制器(baseboard management controller,BMC)162及周邊元件連接快速(peripheral component interconnect express,PCIe)交換機163。乙太網交換機161通過中性面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含有12個100 Gbps上行鏈路以及24個或48個25 Gbps下行鏈路。乙太網交換機161可具有連接到BMC 162的專用配置/管理埠。
BMC 162管理機架160的內部元件,包括乙太網交換機161、PCIe交換機163及eSSD 170。BMC 162可支援用於系統管理的PCIe和/或系統管理匯流排(system management bus,SMBus)介面。BMC 162可對eSSD 170進行配置並對乙太網交換機161進行程式設計。
類似於基於伺服器的全快閃記憶體陣列(all-flash array,AFA),eSSD 170一起容納在無伺服器的殼體(即,機架160)中,所述無伺服器的殼體含有多個eSSD、用於將所述多個eSSD與外界主機進行連接的網路交換機(即,乙太網交換機161)以及用於管理所述多個eSSD的BMC 162。BMC 162處置引導程式(boot)並控制通往eSSD裝置的路徑。與完善的x86中央處理器(computer processing unit,CPU)不同,BMC 162可能無法完成CPU可處置的所有這些任務,且因此具有最低限度的殼體管理功能。BMC 162通過SMBus或PCIe匯流排保持對所連接的eSSD 170以及相關硬體進行關於連線性、狀況、溫度、日誌及錯誤方面的健康情況檢查。
eSSD 170提供高性能及大容量資料儲存解決方案。NVMe-oF協議使成百上千的分解eSSD 170能夠以遠端直接附接儲存(rDAS)方式附接到在主機電腦110上運行的應用111。本系統及方法有利於處理及移動被收集並儲存在分解eSSD中的大量資料。使用傳統的主機電腦的這種資料處理可能成本非常高昂。
在主機電腦110上運行的應用111可通過提取儲存在整個網路(例如,乙太網150)上的分解資料儲存裝置(例如,eSSD 170)中的資料來執行處理(例如,機器學習),處理資料,並將資料處理的結果儲存回資料儲存裝置。包括資料提取、處理及儲存的這種進程可能非常低效率,會消耗主機電腦上過量的能量資源、計算資源、網路資源及資料儲存資源。另外,所述進程可能會對主機電腦上的計算資源及記憶體資源施加高成本要求。
本系統及方法能夠使用接近儲存計算或記憶體內加速來實現後臺資料處理。接近儲存計算及記憶體內加速使得能夠以高效率的方式在後臺對大量資料進行處理。根據一個實施例,與其中儲存有待處理資料的資料儲存裝置耦合的橋接裝置可有利於所耦合的資料儲存裝置附近的後臺資料處理。在一個實施例中,橋接裝置集成在資料儲存裝置中。在其他實施例中,橋接裝置是連接到資料儲存裝置的單獨的裝置。應理解,用語“附近(near)”表示資料處理可不僅在單獨裝置中進行而且還可在資料儲存裝置自身內進行,而此並不背離本公開的範圍。在一些實施例中,在本文中可將用語“接近儲存(near-storage)”與“記憶體內(in-storage)”互換使用。
所述橋接裝置可具有一個或多個硬體元件,所述一個或多個硬體元件可採用對於應用而言透明的方式來構建對儲存在資料儲存裝置中的資料的接近儲存計算。橋接裝置可為NVMe-oF至NVMe橋接裝置及NVMe至NVMe橋接裝置中的一者。與NVMe-oF標準相容的NVMe-oF至NVMe橋接裝置可通過網路結構網路接收NVMe-oF命令並為後端資料儲存裝置提供PCIe介面。與NVMe標準相容的NVMe至NVMe橋接裝置可通過PCIe匯流排接收NVMe命令並在資料儲存裝置附近執行資料處理。在下文中,為方便起見,闡述eSSD作為資料儲存裝置的實例;然而,應理解,可使用其他類型的資料儲存裝置及分散式資料儲存系統,而此並不背離本公開的範圍。在以下實例中,eSSD被闡述為包括橋接裝置及後端SSD二者的裝置;然而應理解,資料儲存裝置(後端SSD)可連接到分立的橋接裝置以形成eSSD,或者eSSD可指代橋接裝置自身或在其他實施例中可指代能夠執行橋接裝置的接近計算功能的裝置。
本橋接裝置可提取、處理及修改儲存在後端SSD上的資料並將經處理資料儲存回後端SSD而不會影響主機電腦到SSD的正常資料存取操作。在一個實施例中,橋接裝置可具有系統記憶體以維持一對輸入/輸出(I/O)提交佇列及輸入/輸出完成佇列並使用所述I/O佇列對在後臺模式中對後端SSD執行資料存取。橋接裝置可共用I/O提交佇列及I/O完成佇列以處理來自主機電腦的命令及來自橋接裝置的接近儲存處理器的內部命令二者。另外,橋接裝置的系統記憶體可維持一對管理佇列,所述一對管理佇列包括管理提交佇列及管理完成佇列,其可在主機電腦與NSC處理器之間共用。
根據一個實施例,橋接裝置可採用NVMe-oF至NVMe協定橋接或NVMe至NVMe協議橋接,以使得NSC處理器能夠存取儲存在後端SSD上的資料。例如機器學習(machine learning,ML)演算法等各種進程可在主機電腦上運行以採用對於主機電腦而言不可知的方式在後臺模式中執行資料處理。運行機器學習演算法的主機電腦可駐留在橋接裝置外部但仍可通過橋接裝置間接地對儲存在eSSD中的資料進行存取。在一些實施例中,橋接裝置和/或主機電腦可與eSSD駐留在同一機架中但駐留在不同的槽位(例如,U.2槽位元)中,或者它們可在實體上駐留在機架外部。儘管以下結合圖式加以解釋的實例主要闡述NVMe-oF橋接裝置(也被稱為NVMe-oF至NVMe橋接裝置),然而它們同等地適用於NVMe至NVMe橋接裝置。
橋接裝置提供介面來接收目的地為後端SSD的主機命令(例如,NVMe-oF命令)。橋接裝置將所接收到的主機命令識別符(command identifier,CID)映射到本地標籤,產生去往儲存有待處理資料的後端SSD的NVMe命令,所述NVMe命令包含新的CID。後端SSD產生與NVMe命令對應的完成條目(completion entry,CE)並將所述完成條目發送到橋接裝置。接著,橋接裝置對完成條目進行剖析並將完成條目智慧地轉發到橋接裝置的NSC處理器。
獨立於從主機起始的橋接命令,橋接裝置的NSC處理器可採用對於主機電腦而言不可知的方式發出NVMe命令到後端SSD。通過使用共用的I/O佇列及管理佇列,橋接裝置可同時地有效處理來自主機電腦與NSC處理器二者的I/O操作而不會對彼此造成干擾。NSC處理器能夠在維持其對主機命令進行橋接的能力的同時對儲存在後端SSD中的資料進行存取,此使得機器學習應用能夠在接近儲存計算裝置(即,橋接裝置)中運行。NSC處理器為機器學習應用提供能量、資源及具有成本效益的資料處理。
NVMe-oF橋接裝置可在一側上提供與遠端初啟程式(例如,在主機電腦上運行的機器學習應用)的NVMe-oF介面且可在另一側上提供與後端SSD的基於標準PCIe的NVMe介面。遠端初啟程式經由NVMe-oF介面通過乙太網連接到NVMe-oF橋接裝置。NVMe-oF橋接裝置可將NVMe-oF協定轉換成NVMe協定以連接到後端SSD。
另一方面,NVMe橋接裝置可提供與遠端初啟程式及後端SSD的標準PCIe介面。遠端初啟程式通過PCIe匯流排連接到NVMe橋接裝置。NVMe橋接裝置可將NVMe主機命令轉換成具有不同的命令識別符的另一個NVMe命令以使後端SSD將NVMe命令看成其仿佛是來自NVMe橋接裝置而非來自主機電腦一樣。
根據一個實施例,橋接裝置的NVMe-oF至NVMe橋接功能或NVMe至NVMe橋接功能可實施在現場可程式設計閘陣列(field-programmable gate array,FPGA)或應用專用積體電路(application-specific integrated chip,ASIC)中。作為另外一種選擇,所述橋接功能可實施在韌體程式或軟體程式中。
圖2繪示根據一個實施例的示例性NVMe-oF橋接裝置的方塊圖。NVMe-oF橋接裝置200包括接近儲存計算(NSC)處理器211、系統記憶體212、命令剖析器213、命令分類器214、及命令處理器215、PCIe側命令提交佇列(PCIe-side command submission queue,PSQ)模組216、PCIe應用(PCIe application,PAPP)/根複合體模組(root complex module)217、NVMe-oF回應器218、PCIe完成條目剖析器219以及PCIe側命令完成佇列(PCIe-side command completion queue,PCQ)模組220。NVMe-oF橋接裝置200通過PCIe匯流排耦合到後端SSD 250。在主機電腦上運行的遠端初啟程式通過網路結構網路(在本實例中為乙太網)將NVMe-oF命令發送到後端SSD 250。
NVMe-oF橋接裝置200的命令剖析器213攔截目的地為後端SSD 250的NVMe-oF命令,對所述NVMe-oF命令進行剖析,並將經剖析的NVMe-oF命令發送到命令分類器214。舉例來說,命令剖析器213抽取並剖析各種命令,包括但不限於命令操作碼(opcode,OPC)、命令識別符(CID)、命名空間識別符(namespace identifier,NSID)、邏輯塊數目(number of logical block,NLB)及起始邏輯塊位址(start logical block address,SLBA)。命令分類器214將經剖析的NVMe-oF命令分類成不同的群組並將經分類的NVMe-oF命令發送到命令處理器215。舉例來說,命令分類器214對管理命令(admin command)、網路結構命令、讀取命令、寫入命令及專用命令進行分類。不同的命令或不同的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構建命令提交佇列並維持現用的提交佇列的頭指標(head pointer)及尾指針(tail pointer)不變。PSQ模組216可檢測現用的提交佇列並產生指示提交佇列是滿的還是空的的條件旗標。當將NVMe命令放置到提交佇列中時,PSQ模組216可產生門鈴事件(提交佇列門鈴)並通過PAPP模組217將門鈴事件發送到後端SSD 250。PAPP模組217構建通往後端SSD 250的PCIe傳送以通過PCIe匯流排發送門鈴事件。PAPP模組217支援標準PCIe交易命令,所述標準PCIe交易命令包括NVMe-oF橋接裝置200所需的配置(config)讀取、配置寫入、記憶體寫入及記憶體讀取。另外,PAPP模組217支援NVMe-oF橋接裝置200的PCIe端點所需的PCIe記憶體讀取交易及PCIe記憶體寫入交易。換句話說,PAPP模組217構建並支援NVMe-oF橋接裝置200的PCIe根複合體功能,從而使NVMe-oF橋接裝置200成為PCIe根複合體裝置。
PCQ模組220為後端SSD 250構建命令完成佇列。後端SSD 250可為由後端SSD 250處理的每一個NVMe命令寫入命令完成條目(CE)。通常,在命令提交佇列與命令完成佇列之間存在一對一映射。PCIe完成條目剖析器219剖析從PCQ模組220接收到的完成條目(CE)並對所述完成條目進行解釋。PCIe完成條目剖析器219將經剖析的完成條目轉發到產生對應的NVMe命令的適宜的命令處理單元231至235。適宜的命令處理單元231至235產生與從PCIe完成條目剖析器219接收到的PCIe完成條目對應的NVMe-oF完成條目(或NVMe完成條目)並將所述NVMe-oF完成條目轉發到NVMe-oF回應器218以通過NVMe-oF介面(例如,乙太網)將NVMe-oF完成條目發回到遠端初啟程式。NVMe-oF完成條目可位於去往遠端初啟程式的讀取資料傳輸或寫入資料傳輸之前。作為NVMe-oF命令橋接的一部分,命令處理單元231至235有利於在後端SSD 250與遠端初啟程式之間進行資料傳輸。
回應於門鈴事件,後端SSD 250提取從PSQ模組216接收到的NVMe命令並執行所述NVMe命令。作為命令執行的一部分,後端SSD 250可執行資料傳輸。這種資料傳輸可往來於系統記憶體212或在NVMe-oF橋接裝置200中可用的晶片上記憶體(on-chip memory)或晶片外記憶體(off-chip memory)之間進行。
圖3繪示根據一個實施例的示例性專用命令單元模組的方塊圖。專用命令單元231構建與NSC處理器211的介面以向後端SSD 250發出專用命令。NSC處理器211可使用此介面在後臺中從後端SSD 250提取資料或者將資料或結果寫入到後端SSD 250。
FCU 232是處置用於NVMe-oF協定的網路結構(fabrics)類型命令的網路結構命令單元。網路結構命令的實例包括但不限於連接(Connect)、性質獲得(Property Get)、性質設定(Property Set)等。ACU 233是管理命令單元。管理命令的實例包括但不限於識別(Identify)、獲得日誌頁面(Get Log Page)等。WCU 234是處置寫入命令的寫入命令單元。RCU 235是處置讀取命令的讀取命令單元。
參照圖3,SCU 231包括入站(inbound,IB)先進先出(first input first output,FIFO)332、出站(outbound,OB)先進先出333及用於NVMe命令的緩衝器334。IBFIFO 332及OBFIFO 333是由NSC處理器211使用的用於向後端SSD 250發出專用命令的結構。NSC處理器211創建NVMe命令,將NVMe命令放置在消息中並將所述消息寫入到OBFIFO 333。SCU 231讀取消息並將NVMe命令發送到後端SSD 250。當後端SSD 250以完成條目作出回應時,SCU 231將完成條目放置在消息中並將消息寫入到IBFIFO 332中。NSC處理器211從IBFIFO 332讀取完成條目以進行進一步處理。
圖4繪示根據一個實施例的轉換命令識別符(CID)的示例性過程。橋接裝置接收含有16位元命令識別符(CID)(401)的傳入命令(NVMe-oF命令或NVMe命令)。16位元CID及提交佇列(SQ)數目可唯一地識別現用命令。給定命令的完成條目含有相同的16位元CID,以使完成條目可通過反向查找來與對應的NVMe命令正確地關聯,此將在下文中詳細論述。
在NVMe-oF橋接裝置的情形中,NVMe-oF橋接裝置接收NVMe-oF命令,並創建用於NVMe-oF命令的環境並且記錄本地命令標籤(在本文中也被稱為本地標籤)。在一個實施例中,NVM-oF橋接裝置對查閱資料表(lookup table,LUT)(402)進行查找以及將接收到的16位元CID映射到12位元本地標籤(403)。如果查閱資料表已滿,則可從執行過程暫停傳入命令,從而將現用命令的數目限制為查閱資料表的容量(2^12)。所述12位元本地標籤還用作去往後端SSD的傳出NVMe命令的16位元NVMe CID 410的一部分。經轉換的NVMe命令含有新構建的16位元NVMe CID 410。根據一個實施例,NVMe CID 410包括兩個欄位:4位元元命令處理單元ID(CU_ID)(404)及12位元本地標籤(405)。12位元本地標籤與4位元CU_ID的分離欄位僅為實例,且應理解,這兩個欄位在其他實施方式中可具有不同的大小,而此並不背離本公開的範圍。在本實例中,NVMe CID 410可使用以下映射方案來構建:NVMe CID[15:0] = { CU_ID[3:0], Local_Tag[11:0] }
命令處理單元ID(CU_ID)可根據處理傳入NVME-oF命令的橋接裝置的命令處理單元來確定。表1繪示用於命令處理單元ID(CU_ID)的示例性編碼方案。 表1
Figure 107129423-A0304-0001
NVMe CID的12位元邏輯標籤用於映射到在原始NVME-oF命令中接收到的NVMe-oF CID。除SCU 231之外的命令處理單元的12位元本地標籤可以如下方式獲得:Local_Tag[11:0] = LUT ( NVMe-oF CID[15:0] ) , 查閱資料表LUT將16位元NVMe-oF CID映射到12位元本地標籤。查閱資料表LUT是由命令分類器214維持的動態實體。當接收到主機命令時,對查閱資料表LUT中的條目進行分配。12位元條目索引是12位元本地標籤。原始的16位元CID儲存在對應的索引處。當命令完成時,將查閱資料表LUT中的條目解除配置。SCU 231的12位元本地標籤可以如下方式獲得:Local_Tag[11:0] = LUT ( NSC CID[15:0] ) , 其中NSC CID是NSC處理器在內部指派的命令ID。NSC-CID是指由NSC處理器發出的命令中所含有的16位元CID值。用於確定本地標籤的以上方程式被用於將來自從主機或NSC處理器接收到的命令的CID映射到12位元本地標籤。
在對12位元本地標籤進行查找之後,NVMe CID的其餘4位元CU_ID有助於執行從後端SSD 250接收到的NVMe完成條目(CE)的反向查找。NVMe完成條目用於將NVMe CID與橋接裝置的各處理單元中產生對應的NVMe命令的處理單元相關聯。參照圖2,PCIe完成條目剖析器219從通過PAPP模組217從後端SSD 250接收到的NVMe CID提取4位元CU_ID,並確定完成條目所屬的處理單元。一旦將所接收到的NVMe完成條目遞送到適宜的命令處理單元,PCIe完成條目剖析器219便執行另一反向查找以將12位元本地標籤映射到原始NVMe-oF CID。在SCU 231的情形中,這種反向查找將使用NSC-CID而不使用如上所述NVMe-oF CID。
通過利用這種NVMe-oF至NVMe映射(或NVMe至NVMe映射),NVMe-oF橋接裝置200可支援多個命令處理單元向後端SSD 250發出NVMe命令。舉例來說,NVMe-oF橋接裝置200對於給定的提交佇列SQ(12位元深度的本地標籤)而言可支援最多達4096(212 )個現用NVMe命令(即,佇列深度)。SCU 231使用這種機制來通過NSC處理器向後端SSD 250發出各種NVMe命令而不會干涉主機命令。舉例來說,NSC處理器通過發出NVMe讀取命令來從後端SSD提取資料塊,處理所提取的資料,並通過發出NVMe寫入命令將結果儲存回後端SSD。應注意,可使用NVMe-CID的不同大小的CU_ID及本地標籤分量,且這種NVMe-CID配置可提供不同的最大佇列深度。
圖5是繪示根據一個實施例的對管理提交佇列及管理完成佇列的共用的方塊圖。後端SSD可與本橋接裝置共用包括管理SQ 531及管理CQ 532的管理佇列對。管理SQ 531用於向後端SSD發出管理命令。在遠端主機501上運行的應用可為需要對後端SSD中的資料儲存裝置進行存取的資料中心應用(例如,機器學習應用)。NVMe-oF橋接裝置的NVMe-oF至NVMe命令轉換器521(例如,圖2所示FCU 232及ACU 233)將從遠端初啟程式接收到的NVMe-oF管理命令轉換成NVMe管理命令並將NVMe管理命令放置到管理SQ 531(例如,圖2所示PSQ模組216)中。NVMe-oF橋接裝置的NSC處理器511也通過管理SQ 531向後端SSD發出管理命令。
NVMe-oF命令處理單元(例如,FCU、ACU、WCU及RCU)中的每一者可具有唯一的4位元CU_ID。因此,可通過相同的管理SQ 531從NVMe-oF主機以及NSC處理器511二者發出管理命令。假設NSC處理器511僅發出不會影響主機可見使用者資料的資料完整性或後端SSD的控制資料結構的管理命令。NSC處理器511只可對主機資料進行讀取或監視且只對自身擁有的資料進行修改。在一些實施例中,遠端主機501與NSC處理器511可通過資料同步來共用儲存在後端SSD中的資料。
圖6繪示根據一個實施例的遠端主機與NSC處理器之間對I/O SQ的共用。不同於圖5所示管理SQ 531,可存在大量的I/O SQ。I/O SQ可用於發出資料命令,例如讀取及寫入。I/O命令將資料移動到遠端初啟程式及後端SSD或者從遠端初啟程式及後端SSD移出資料,反之亦然。通過使用不同的CU_ID值,SCU 231可將NSC處理器的I/O命令放置到與用於主機I/O命令的I/O SQ相同的I/O SQ中。在另一個實施例中,可使用用於NSC處理器的一組專用的I/O SQ來處理來自NSC處理器611的I/O命令。圖6繪示其中對NSC處理器611及來自遠端初啟程式的I/O命令使用兩個單獨的I/O命令提交佇列及I/O命令完成佇列的實例。
在任一種情形中,PCIe完成條目剖析器使用CU_ID來將從後端SSD接收到的完成條目適當地路由到橋接裝置的適宜的命令處理單元。假設NSC處理器611發出不會對主機資料進行修改的I/O命令。首先,NSC處理器611將讀取由主機601寫入的資料以對用於本地處理的讀取資料進行處理及分析。由NSC處理器611產生的經修改資料或分析結果可被寫入到對於主機601而言可存取或不可存取的單獨的儲存區域。在一個實施例中,NSC處理器611與在主機601上運行的遠端初啟程式可高度地同步以共用相同的資料及儲存命名空間。
圖7是繪示根據一個實施例的橋接裝置內的本地資料移動的圖。橋接裝置700包括寫入資料緩衝器751及讀取資料緩衝器752。根據一個實施例,橋接裝置700的系統記憶體(例如,圖3所示系統記憶體212)包括寫入資料緩衝器751及讀取資料緩衝器752。
NSC處理器711在後臺對SSD資料進行掃描及分析。NSC處理器711可週期性地從後端SSD 750提取使用者資料並對所述使用者資料進行分析。NSC處理器711可將經修改資料和/或資料處理的結果儲存回後端SSD 750。這些操作需要往來於後端SSD的資料移動。NSC NVMe命令規定這種資料傳輸的細節。
在一個實施例中,NSC處理器711使用NSC NVMe命令操作碼來表示NVMe命令是寫入命令還是讀取命令。NSC NVMe命令還可表示寫入資料緩衝器751或讀取資料緩衝器752的相關聯的邏輯塊位址(logical block address,LBA)。對於NSC寫入命令而言,資料從橋接裝置700的系統記憶體移動到後端SSD 750。對於NSC讀取命令而言,資料從後端SSD 750移動到橋接裝置700的系統記憶體。對於主機命令的資料傳輸而言,可使用寫入資料緩衝器751或讀取資料緩衝器752中單獨的一組緩衝器位址而不將這兩種資料移動混合。
當NSC處理器711發出NSC NVMe命令來對儲存在後端SSD 750中的資料進行處理時,NSC處理器711首先分配讀取資料緩衝器752中具有期望大小的空間。NSC處理器711接著使用所分配的讀取緩衝器空間的指針來創建NVMe讀取命令。NSC處理器711在後端SSD 750中植入適宜的Namespace.LBA位址以讀取儲存在後端SSD 750中的資料。NSC處理器711接著將所構建的NSC-NVMe讀取命令放置到橋接裝置700的適宜的I/O SQ中。後端SSD 750通過PCIe匯流排提取NSC-NVMe讀取命令並使用讀取資料緩衝器752中的所分配的讀取緩衝器空間的指標來對系統記憶體執行所請求資料的DMA寫入操作。後端SSD 750接著向橋接裝置700發送NSC-NVMe讀取命令完成條目。橋接裝置700可將NSC-NVMe讀取完成條目智慧地轉發到NSC處理器711。此時,NSC處理器711繼續處理或分析所提取的資料。
NSC處理器711可對所提取的資料進行修改。作為資料處理的結果,NSC處理器711也可產生新資料。在某一時刻,NSC處理器711可通過對後端SSD 750執行寫入操作來保持這種資料。NSC處理器711使用需要被寫入到後端SSD 750的資料的位址來構建NSC-NVMe寫入命令。NSC處理器711接著插入適宜的Namespace.LBA儲存位置,資料將在所述Namespace.LBA儲存位置處被寫入到後端SSD 750內。NSC處理器711接著將新構建的NSC-NVMe寫入命令放置到橋接裝置700的I/O SQ中。後端SSD 750通過PCIe匯流排提取NSC-NVMe寫入命令並執行所述NSC-NVMe寫入命令。後端SSD 750執行DMA操作以將資料從系統記憶體寫入到在NSC-NVMe寫入命令中規定的後端SSD位址。一旦已完成資料DMA操作,後端SSD 750便會發送NSC-NVMe寫入命令的完成條目。橋接裝置700可將NSC-NVMe寫入命令完成條目智慧地轉發到NSC處理器711。此時,NSC處理器可將寫入資料緩衝器751中的寫入資料丟棄。
根據一個實施例,一種橋接裝置包括:第一介面,被配置成從在主機電腦上運行的應用接收第一組命令;一個或多個命令處理器,所述一個或多個命令處理器中的每一者被配置成對所述第一組命令進行轉換並基於所述第一組命令產生第二組命令;第二介面,被配置成將所述第二組命令提供到資料儲存裝置;以及計算處理器,被配置成在運行所述應用的同時發出內部命令來以對於所述主機電腦而言不可知的方式在後臺模式中從所述資料儲存裝置提取資料以及向所述資料儲存裝置寫入資料。
所述資料儲存裝置可為與非揮發性儲存快速(NVMe)標準相容的固態驅動器。
所述資料儲存裝置可為與基於網路結構的非揮發性儲存快速(NVMe-oF)標準相容的固態驅動器。
所述第一介面可為位於網路結構網路上的NVMe-oF介面,且至所述資料儲存裝置的所述第二介面可為PCIe介面。所述第一組命令可包括NVMe-oF命令,且所述第二組命令可包括非揮發性儲存快速命令。
所述網路結構網路可選自乙太網、光纖通道及無限寬頻。
所述橋接裝置還可包括命令剖析器及命令分類器。所述命令剖析器可被配置成剖析所述第一組命令並產生經剖析命令,且所述命令分類器可被配置成對所述經剖析命令進行分類並將經分類命令提供到所述一個或多個命令處理器。
所述一個或多個命令處理器可包括專用命令單元,所述專用命令單元被配置成處理由所述計算處理器發出的所述第二組命令的命令子集。
所述應用可為機器學習(ML)應用。
所述第二組命令中的每一者可包括命令識別符,所述命令識別符包括命令處理單元識別符及本地標籤,所述命令處理單元識別符與所述一個或多個命令處理器對應,所述本地標籤通過查閱資料表被映射到所述第一組命令。
所述橋接裝置還可包括用於對去往所述資料儲存裝置的所述第二組命令進行排隊的提交佇列及用於對從所述資料儲存裝置接收的完成條目進行排隊的完成佇列。
根據另一個實施例,一種提供接近儲存計算的方法包括:通過第一介面從在主機電腦上運行的應用接收第一組命令;對所述第一組命令進行轉換並基於所述第一組命令產生第二組命令;通過第二介面將所述第二組命令提供到資料儲存裝置;以及在運行所述應用的同時,發出內部命令來以對於所述主機電腦而言不可知的方式在後臺模式中從所述資料儲存裝置提取資料及向所述資料儲存裝置寫入資料。
所述資料儲存裝置可為與非揮發性儲存快速(NVMe)標準相容的固態驅動器。
所述資料儲存裝置可為與基於網路結構的非揮發性儲存快速(NVMe-oF)標準相容的固態驅動器。
所述第一介面可為位於網路結構網路上的NVMe-oF介面,且至所述資料儲存裝置的所述第二介面可為PCIe介面。所述第一組命令可包括NVMe-oF命令,且所述第二組命令可包括NVMe命令。
所述網路結構網路可選自乙太網、光纖通道及無限寬頻。
所述提供接近儲存計算的方法還可包括:剖析所述第一組命令並產生經剖析命令,以及對所述經剖析命令進行分類並將經分類命令提供到一個或多個命令處理器。
所述一個或多個命令處理器可包括專用命令單元,所述專用命令單元被配置成處理由計算處理器發出的所述第二組命令的命令子集。
所述應用可為機器學習(ML)應用。
所述第二組命令中的每一者可包括命令識別符,所述命令識別符包括命令處理單元識別符及本地標籤,所述命令處理單元識別符與所述一個或多個命令處理器對應,所述本地標籤通過查閱資料表被映射到所述第一組命令。
所述提供接近儲存計算的方法還可包括:提供用於對去往所述資料儲存裝置的所述第二組命令進行排隊的提交佇列及用於對從所述資料儲存裝置接收的完成條目進行排隊的完成佇列。
上文已闡述以上示例性實施例來繪示實施用於提供接近儲存計算的橋接裝置的各種實施例。所屬領域中的普通技術人員將會聯想到對所公開示例性實施例的各種修改及相對於所公開示例性實施例的不同之處。在以下申請專利範圍中闡述了旨在落於本發明範圍內的主題。
100‧‧‧資料儲存系統110‧‧‧主機/主機電腦111‧‧‧應用112‧‧‧作業系統及檔案系統113‧‧‧NVMe-oF驅動器150‧‧‧乙太網160‧‧‧機架161‧‧‧乙太網交換機162‧‧‧基板管理控制器(BMC)163‧‧‧周邊元件連接快速交換機(PCIe交換機)164‧‧‧管理介面165‧‧‧中性面170、170a、170b~170n‧‧‧eSSD200‧‧‧NVME-oF橋接裝置211‧‧‧接近儲存計算處理器(NSC處理器)212‧‧‧系統記憶體213‧‧‧命令剖析器214‧‧‧命令分類器215‧‧‧命令處理器216‧‧‧PCIe側命令提交佇列模組(PSQ模組)217‧‧‧PCIe應用/根複合體模組(PAPP模組)218‧‧‧NVMe-oF回應器219‧‧‧PCIe完成條目剖析器220‧‧‧PCIe側命令完成佇列模組(PCQ模組)231‧‧‧專用命令單元(SCU)/命令處理單元232‧‧‧網路結構命令單元(FCU)/命令處理單元233‧‧‧管理命令(ACU)/命令處理單元234‧‧‧寫入命令單元(WCU)/命令處理單元235‧‧‧讀取命令單元(RCU)/命令處理單元250、750‧‧‧後端SSD332‧‧‧入站先進先出(IBFIFO)333‧‧‧出站先進先出(OBFIFO)334‧‧‧用於NVMe命令的緩衝器401‧‧‧命令識別符402‧‧‧查閱資料表403、405‧‧‧本地標籤404‧‧‧命令處理單元識別符(CU_ID)410‧‧‧NVMe命令識別符(NVMe CID)501‧‧‧遠端主機511、611、711‧‧‧NSC處理器521‧‧‧NVMe-oF至NVMe命令轉換器531‧‧‧管理SQ532‧‧‧管理CQ601‧‧‧主機700‧‧‧橋接裝置751‧‧‧寫入資料緩衝器752‧‧‧讀取資料緩衝器
作為本說明書的一部分而包括在內的各個附圖繪示當前優選的實施例,且與以上所給出的大體說明及以下所給出的對優選實施例的詳細說明一起用於解釋及教示本文所述原理。 圖1繪示根據一個實施例的示例性資料儲存系統的方塊圖。 圖2繪示根據一個實施例的示例性NVMe-oF橋接裝置的方塊圖。 圖3繪示根據一個實施例的示例性專用命令單元(special command unit,SCU)模組的方塊圖。 圖4繪示根據一個實施例的轉換命令識別符的示例性過程。 圖5是繪示根據一個實施例的對管理提交佇列及管理完成佇列的共用的方塊圖。 圖6繪示根據一個實施例的遠端主機與接近儲存計算(near storage compute,NSC)處理器之間對輸入/輸出提交佇列(input/output submission queue,I/O SQ)的共用。 圖7是繪示根據一個實施例的橋接裝置內的本地資料移動的圖。 各個圖未必是按比例繪製的,且出於說明目的,在所有圖中具有相似結構或功能的元件一般是由相同的參考編號表示的。各個圖僅旨在方便說明本文所述各種實施例。各個圖並不闡述本文所公開教示內容的每一方面且並不限制申請專利範圍的範圍。
100‧‧‧資料儲存系統
110‧‧‧主機/主機電腦
111‧‧‧應用
112‧‧‧作業系統及檔案系統
113‧‧‧NVMe-oF驅動器
150‧‧‧乙太網
160‧‧‧機架
161‧‧‧乙太網交換機
162‧‧‧基板管理控制器(BMC)
163‧‧‧周邊元件連接快速交換機(PCIe交換機)
164‧‧‧管理介面
165‧‧‧中性面
170a、170b、170n‧‧‧eSSD

Claims (20)

  1. 一種橋接裝置,包括:第一介面,被配置成從在主機電腦上運行的應用接收第一組命令;一個或多個命令處理器,所述一個或多個命令處理器中的每一者被配置成對所述第一組命令進行轉換並基於所述第一組命令產生第二組命令;第二介面,被配置成將所述第二組命令提供到資料儲存裝置;以及計算處理器,被配置成在處理從所述應用接收的所述第一組命令的至少一命令的期間發出通過所述橋接裝置產生獨立於所述第一組命令的內部命令以在後臺模式中從所述資料儲存裝置提取資料以及向所述資料儲存裝置寫入資料。
  2. 如申請專利範圍第1項所述的橋接裝置,其中所述資料儲存裝置是與非揮發性儲存快速標準相容的固態驅動器。
  3. 如申請專利範圍第1項所述的橋接裝置,其中所述資料儲存裝置是與基於網路結構的非揮發性儲存快速標準相容的固態驅動器。
  4. 如申請專利範圍第3項所述的橋接裝置,其中所述第一介面是位於網路結構網路上的基於網路結構的非揮發性儲存快速介面,且至所述資料儲存裝置的所述第二介面是周邊元件連接快速介面,且其中所述第一組命令包括基於網路結構的非揮發性儲 存快速命令,所述第二組命令包括非揮發性儲存快速命令,且所述內部命令包括通過所述計算處理器指派的命令識別符。
  5. 如申請專利範圍第4項所述的橋接裝置,其中所述網路結構網路選自乙太網、光纖通道及無限寬頻。
  6. 如申請專利範圍第1項所述的橋接裝置,其中還包括命令剖析器及命令分類器,其中所述命令剖析器被配置成剖析所述第一組命令並產生經剖析命令,且所述命令分類器被配置成對所述經剖析命令進行分類並將經分類命令提供到所述一個或多個命令處理器。
  7. 如申請專利範圍第1項所述的橋接裝置,其中所述一個或多個命令處理器包括專用命令單元,所述專用命令單元被配置成處理由所述計算處理器發出的所述第二組命令的命令子集。
  8. 如申請專利範圍第1項所述的橋接裝置,其中所述應用是機器學習應用。
  9. 如申請專利範圍第1項所述的橋接裝置,其中所述第二組命令中的每一者包括命令識別符,所述命令識別符包括命令處理單元識別符及本地標籤,所述命令處理單元識別符與所述一個或多個命令處理器對應,所述本地標籤通過查閱資料表被映射到所述第一組命令。
  10. 如申請專利範圍第1項所述的橋接裝置,還包括用於對去往所述資料儲存裝置的所述第二組命令進行排隊的提交佇列及 用於對從所述資料儲存裝置接收的完成條目進行排隊的完成佇列。
  11. 一種提供接近儲存計算的方法,包括:通過第一介面從在主機電腦上運行的應用接收第一組命令;對所述第一組命令進行轉換並基於所述第一組命令產生第二組命令;通過第二介面將所述第二組命令提供到資料儲存裝置;以及在處理從所述應用接收的所述第一組命令的至少一命令的期間,發出通過橋接裝置產生獨立於所述第一組命令的內部命令以在後臺模式中從所述資料儲存裝置提取資料及向所述資料儲存裝置寫入資料。
  12. 如申請專利範圍第11項所述的提供接近儲存計算的方法,其中所述資料儲存裝置是與非揮發性儲存快速標準相容的固態驅動器。
  13. 如申請專利範圍第11項所述的提供接近儲存計算的方法,其中所述資料儲存裝置是與基於網路結構的非揮發性儲存快速標準相容的固態驅動器。
  14. 如申請專利範圍第13項所述的提供接近儲存計算的方法,其中所述第一介面是位於網路結構網路上的基於網路結構的非揮發性儲存快速介面,且至所述資料儲存裝置的所述第二介面 是周邊元件連接快速介面,且其中所述第一組命令包括基於網路結構的非揮發性儲存快速命令,所述第二組命令包括非揮發性儲存快速命令,且所述內部命令包括通過計算處理器指派的命令識別符。
  15. 如申請專利範圍第14項所述的提供接近儲存計算的方法,其中所述網路結構網路選自乙太網、光纖通道及無限寬頻。
  16. 如申請專利範圍第11項所述的提供接近儲存計算的方法,還包括:剖析所述第一組命令並產生經剖析命令,以及對所述經剖析命令進行分類並將經分類命令提供到一個或多個命令處理器。
  17. 如申請專利範圍第16項所述的提供接近儲存計算的方法,其中所述一個或多個命令處理器包括專用命令單元,所述專用命令單元被配置成處理由計算處理器發出的所述第二組命令的命令子集。
  18. 如申請專利範圍第11項所述的提供接近儲存計算的方法,其中所述應用是機器學習應用。
  19. 如申請專利範圍第16項所述的提供接近儲存計算的方法,其中所述第二組命令中的每一者包括命令識別符,所述命令識別符包括命令處理單元識別符及本地標籤,所述命令處理單元識別符與所述一個或多個命令處理器對應,所述本地標籤通過查閱資料表被映射到所述第一組命令。
  20. 如申請專利範圍第11項所述的提供接近儲存計算的方法,還包括:提供用於對去往所述資料儲存裝置的所述第二組命令進行排隊的提交佇列及用於對從所述資料儲存裝置接收的完成條目進行排隊的完成佇列。
TW107129423A 2017-10-11 2018-08-23 橋接裝置及提供接近儲存計算的方法 TWI751374B (zh)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201762571064P 2017-10-11 2017-10-11
US201762571061P 2017-10-11 2017-10-11
US62/571,061 2017-10-11
US62/571,064 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
TW201933081A TW201933081A (zh) 2019-08-16
TWI751374B true TWI751374B (zh) 2022-01-01

Family

ID=65993255

Family Applications (2)

Application Number Title Priority Date Filing Date
TW107121944A TWI780168B (zh) 2017-10-11 2018-06-26 資料儲存裝置及橋接裝置
TW107129423A TWI751374B (zh) 2017-10-11 2018-08-23 橋接裝置及提供接近儲存計算的方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
TW107121944A TWI780168B (zh) 2017-10-11 2018-06-26 資料儲存裝置及橋接裝置

Country Status (5)

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

Families Citing this family (41)

* 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
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
CN113767361A (zh) * 2019-03-14 2021-12-07 马维尔亚洲私人有限公司 启用以太网的固态驱动器(ssd)
WO2020183246A2 (en) * 2019-03-14 2020-09-17 Marvell Asia Pte, Ltd. Termination of non-volatile memory networking messages at the drive level
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 北京智芯微电子科技有限公司 提高处理器与访存总线时序的方法及内存属性预测器
US11973650B2 (en) * 2019-04-25 2024-04-30 Liqid Inc. Multi-protocol communication fabric control
US11809799B2 (en) 2019-06-24 2023-11-07 Samsung Electronics Co., Ltd. Systems and methods for multi PF emulation using VFs in SSD controller
CN112131166A (zh) * 2019-06-24 2020-12-25 三星电子株式会社 轻量桥接器电路及其操作方法
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 キヤノン株式会社 制御装置および情報処理システムに関する。
KR20220067795A (ko) 2020-11-18 2022-05-25 삼성전자주식회사 스토리지 장치 및 이를 포함하는 스토리지 시스템
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 (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100011035A1 (en) * 2007-05-16 2010-01-14 International Business Machines Corporation Method and System for Handling Reallocated Blocks in a File System
US9298654B2 (en) * 2013-03-15 2016-03-29 International Business Machines Corporation Local bypass in memory computing
TW201635151A (zh) * 2015-03-27 2016-10-01 英特爾公司 二階記憶體全線寫入技術
US20160335024A1 (en) * 2015-05-15 2016-11-17 ScaleFlux Assisting data deduplication through in-memory computation
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 (55)

* 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 協調検証装置、協調検証方法、協調検証プログラム
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
KR101587549B1 (ko) * 2009-02-12 2016-01-21 삼성전자주식회사 폴리머 및 이를 포함하는 폴리머 액츄에터
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
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
CN110275840B (zh) * 2014-02-23 2024-03-15 拉姆伯斯公司 在存储器接口上的分布式过程执行和文件系统
AU2015229802A1 (en) 2014-03-08 2016-10-06 Diamanti, 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
US9959203B2 (en) * 2014-06-23 2018-05-01 Google Llc Managing storage devices
WO2015200313A1 (en) * 2014-06-23 2015-12-30 Liqid Inc. Modular switched fabric for data storage systems
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
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
US10545861B2 (en) * 2016-10-04 2020-01-28 Pure Storage, Inc. Distributed integrated high-speed solid-state 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 (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100011035A1 (en) * 2007-05-16 2010-01-14 International Business Machines Corporation Method and System for Handling Reallocated Blocks in a File System
US9298654B2 (en) * 2013-03-15 2016-03-29 International Business Machines Corporation Local bypass in memory computing
TW201635151A (zh) * 2015-03-27 2016-10-01 英特爾公司 二階記憶體全線寫入技術
US20160335024A1 (en) * 2015-05-15 2016-11-17 ScaleFlux Assisting data deduplication through in-memory computation
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

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
2016年3月18日公開文件Salessawi Ferede Yitbarek et. al." Exploring specialized near-memory processing for data intensive operations" 2016 Design, Automation & Test in Europe Conference & Exhibition (DATE), pp. 1449-1452. *

Also Published As

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

Similar Documents

Publication Publication Date Title
TWI751374B (zh) 橋接裝置及提供接近儲存計算的方法
US10095645B2 (en) Presenting multiple endpoints from an enhanced PCI express endpoint device
US11704059B2 (en) Remote direct attached multiple storage function storage device
US10346156B2 (en) Single microcontroller based management of multiple compute nodes
US9304896B2 (en) Remote memory ring buffers in a cluster of data processing nodes
US7197588B2 (en) Interrupt scheme for an Input/Output device
US9740409B2 (en) Virtualized storage systems
US7937447B1 (en) Communication between computer systems over an input/output (I/O) bus
US11907139B2 (en) Memory system design using buffer(s) on a mother board
US10860511B1 (en) Integrated network-attachable controller that interconnects a solid-state drive with a remote server computer
US11956156B2 (en) Dynamic offline end-to-end packet processing based on traffic class
US20220116454A1 (en) Direct response to io request in storage system having an intermediary target apparatus
WO2016119469A1 (zh) 业务上下文管理方法、物理主机、pcie设备及迁移管理设备
US11334487B2 (en) Cache sharing in virtual clusters
US10747615B2 (en) Method and apparatus for non-volatile memory array improvement using a command aggregation circuit
WO2022141250A1 (zh) 数据传输方法和相关装置
WO2023184513A1 (en) Reconfigurable packet direct memory access to support multiple descriptor ring specifications
Gai et al. UrsaX: Integrating Block I/O and Message Transfer for Ultra-Fast Block Storage on Supercomputers