TW201933080A - 資料儲存裝置及橋接裝置 - Google Patents

資料儲存裝置及橋接裝置 Download PDF

Info

Publication number
TW201933080A
TW201933080A TW107121944A TW107121944A TW201933080A TW 201933080 A TW201933080 A TW 201933080A TW 107121944 A TW107121944 A TW 107121944A TW 107121944 A TW107121944 A TW 107121944A TW 201933080 A TW201933080 A TW 201933080A
Authority
TW
Taiwan
Prior art keywords
data storage
data
application
black box
interface
Prior art date
Application number
TW107121944A
Other languages
English (en)
Other versions
TWI780168B (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 TW201933080A publication Critical patent/TW201933080A/zh
Application granted granted Critical
Publication of TWI780168B publication Critical patent/TWI780168B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/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/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)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (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

一種資料儲存裝置包括:資料儲存介質;處理器,包括多個處理器核心;多個應用加速黑盒子槽位,包括可重新配置的邏輯塊、互連線及記憶體;主機介面,從在遠端主機電腦上運行的遠端應用接收主機命令,其中主機命令包括影像檔案,影像檔案包括寄存器傳輸級位元流及韌體驅動器;以及配置控制器,將暫存器傳輸級位元流下載到所述多個應用加速黑盒子槽位中的應用加速黑盒子槽位並對所述應用加速黑盒子槽位進行重新配置,並且將韌體驅動器載入到處理器的處理器核心。被載入有韌體驅動器的處理器核心運行遠端應用的資料加速進程以存取被儲存在資料儲存介質中的資料並使用在應用加速黑盒子槽位中下載的暫存器傳輸級位元流來處理被儲存在資料儲存介質中的資料。

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)的資料儲存系統可為在主機電腦上運行的應用提供大的儲存容量。所述應用可從分解資料儲存裝置收集大量資料(大資料)並對它們進行分析。
由於大資料處理的規模非常大,因此用於執行有意義的大資料採擷的基礎設施可能成本過高,需要大量計算資源、大的系統記憶體、高頻寬網路以及大的及高性能的資料儲存。期望將一些資料處理挖掘任務從主機電腦卸載到資料儲存裝置並使從資料儲存裝置到主機電腦的資料移動最小化。
根據一個實施例,一種資料儲存裝置包括:資料儲存介質;處理器,包括多個處理器核心;多個應用加速黑盒子(application acceleration black-box,AABB)槽位,包括可重新配置的邏輯塊、互連線及記憶體;主機介面,從在遠端主機電腦上運行的遠端應用接收主機命令,其中所述主機命令包括影像檔案,所述影像檔案包括暫存器傳輸級(register-transfer level,RTL)位元流及韌體驅動器;以及配置控制器,將所述暫存器傳輸級位元流下載到所述多個應用加速黑盒子槽位中的應用加速黑盒子槽位並對所述應用加速黑盒子槽位進行重新配置,並且將所述韌體驅動器載入到所述處理器的處理器核心。被載入有所述韌體驅動器的所述處理器核心運行所述遠端應用的資料加速進程以存取被儲存在所述資料儲存介質中的資料並使用下載在所述應用加速黑盒子槽位中的所述暫存器傳輸級位元流來處理被儲存在所述資料儲存介質中的所述資料。
根據另一個實施例,一種橋接裝置包括:資料儲存介面,存取被儲存在資料儲存裝置的資料儲存介質中的資料;處理器,包括多個處理器核心;多個應用加速黑盒子(AABB)槽位,包括可重新配置的邏輯塊、互連線及記憶體;主機介面,從在遠端主機電腦上運行的遠端應用接收主機命令,其中所述主機命令包括影像檔案,所述影像檔案包括暫存器傳輸級(RTL)位元流及韌體驅動器;以及配置控制器,將所述暫存器傳輸級位元流下載到所述多個應用加速黑盒子槽位中的應用加速黑盒子槽位並對所述應用加速黑盒子槽位進行重新配置,並且將所述韌體驅動器載入到所述處理器的所述處理器核心。被載入有所述韌體驅動器的所述處理器核心運行所述遠端應用的資料加速進程,以通過所述資料儲存介面存取被儲存在所述資料儲存裝置的所述資料儲存介質中的所述資料並使用下載在所述應用加速黑盒子槽位中的所述暫存器傳輸級位元流來處理所述資料。
現將參照圖式更具體地闡述包括實施方式的新穎細節及事件組合在內的以上及其他優選特徵,且以上及其他優選特徵在申請專利範圍中指出。應理解,本文所述具體系統及方法僅作為例示示出且不作為限制。如所屬領域中的技術人員應理解,本文所述原理及特徵可用於各種各樣的實施例中,而這並不背離本公開的範圍。
本文所公開的特徵及教示內容中的每一者可單獨使用或結合其他特徵及教示內容來使用以在資料儲存裝置(特別是NVMe裝置及NVMe-oF裝置)中提供記憶體內加速。參照圖式更詳細地闡述代表性實例,這些代表性實例單獨地使用及組合地使用這些附加特徵及教示內容中的許多特徵及教示內容。此詳細說明僅旨在向所屬領域中的技術人員教示用於實踐本教示內容的各個方面的進一步細節,而並非旨在限制申請專利範圍的範圍。因此,在本詳細說明中以上所公開特徵的組合可能未必是在最廣泛意義上實踐本教示內容所必需的,而是相反,僅是為了具體闡述本教示內容的代表性的實例而教示。
在以下說明中,僅出於解釋目的來闡述特定術語以提供對本公開的透徹理解。然而,對於所屬領域中的技術人員而言將顯而易見,這些特定細節並非是實踐本公開的教示內容所必需的。
本文的詳細說明的一些部分是以演算法及對電腦記憶體內的資料位元進行的操作的符號標記法來呈現。這些演算法描述及標記法被資料處理領域中的技術人員用於向所屬領域中的其他技術人員有效地傳達其工作的實質。演算法在此處且一般而言均被視為能得到所期望結果的步驟的自洽序列(self-consistent sequence)。所述步驟需要對物理量進行實體操縱。通常(儘管未必一定如此),這些量會呈能夠被儲存、傳輸、組合、比較及以其他方式被操縱的電信號或磁信號的形式。已證明,主要出於通用的原因,將這些信號稱為位元、值、元件、符號、字元、項、數位等有時是便利的。
然而,應記住,這些用語中的所有用語及所有相似用語均與適宜的物理量相關聯且僅作為應用於這些量的便利標記。除非通過閱讀以下論述顯而易見地另有具體說明,否則應理解,在本說明通篇中,使用例如“處理(processing)”、“計算(computing)”、“運算(calculating)”、“判斷(determining)”、“顯示(displaying)”等用語進行的論述是指電腦系統或相似電子計算裝置的動作及進程,所述電腦系統或相似電子計算裝置操縱在電腦系統的暫存器及記憶體內被表示為物理(電子)量的資料並將所述資料轉換成在電腦系統記憶體或暫存器或者其他這種資訊儲存裝置、資訊傳輸裝置或資訊顯示裝置內被相似地表示為物理量的其他資料。
另外,代表性實例及附屬請求項的各個特徵可以並未具體地及明確地枚舉的方式加以組合以提供本教示內容的附加的有用實施例。還應明確注意,出於原始公開內容的目的以及出於限制所主張主題的目的,所有值範圍或對實體的群組的指示均用於公開每個可能的中間值或中間實體。還應明確注意,圖中所示各組件的尺寸及形狀被設計成有助於理解如何實踐本教示內容,而並非旨在限制實例中所示尺寸及形狀。
圖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 170中的大量資料。使用傳統的主機電腦的這種資料處理可能成本非常高昂。
在主機電腦110上運行的應用111可通過提取儲存在整個網路(例如,乙太網150)上的分解資料儲存裝置(例如,eSSD 170)中的資料來執行處理(例如,機器學習),處理資料,並將資料處理的結果儲存回資料儲存裝置。包括資料提取、處理及儲存的這種進程可能非常低效率,會消耗主機電腦上過量的能量資源、計算資源、網路資源及資料儲存資源。另外,所述進程可能會對主機電腦上的計算資源及記憶體資源施加高成本要求。
圖2繪示根據一個實施例的示例性NVMe-oF橋接裝置的方塊圖。橋接裝置可集成在資料儲存裝置中,或者橋接裝置可指代連接到資料儲存裝置的單獨的(及分立的)裝置。在以下實例中,eSSD被闡述為包括橋接裝置及後端SSD兩者的裝置;然而,應理解,資料儲存裝置(後端SSD)可連接到分立的橋接裝置以形成eSSD,或者eSSD可指代橋接裝置本身或在其他實施例中可指代能夠執行橋接裝置的接近計算功能的裝置。
NVMe-oF橋接裝置200包括接近儲存計算(near-storage compute,NSC)處理器211、系統記憶體212、命令剖析器213、命令分類器214、及命令處理器215、PCIe側命令提交佇列(PCIe-side command submission queue,PSQ)模組216、PCIe應用(PCIe application,PAPP)/根複合體模組217、NVMe-oF回應器218、PCIe完成條目(completion entry,CE)剖析器219以及PCIe側命令完成佇列(PCIe-side command completion queue,PCQ)模組220。NVMe-oF橋接裝置200通過PCIe匯流排耦合到後端SSD(例如,NVMe SSD)250。在主機電腦上運行的遠端初啟程式通過網路結構網路(在本實例中為乙太網)將NVMe-oF命令發送到後端SSD 250。
NVMe-oF橋接裝置200的命令剖析器213攔截目的地為後端SSD 250的NVMe-oF命令,對所述NVMe-oF命令進行剖析,並將經剖析的NVMe-oF命令發送到命令分類器214。舉例來說,命令剖析器213抽取並剖析各種命令,包括但不限於命令操作碼(opcode,OPC)、命令識別符(command identifier,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、讀取命令單元(read command unit,RCU)234及寫入命令單元(write command unit,WCU)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 CE剖析器219剖析從PCQ模組220接收到的完成條目(CE)並對所述完成條目進行解釋。PCIe CE剖析器219將經剖析的CE轉發到產生對應的NVMe命令的適宜的命令處理單元231至235。適宜的命令處理單元231至235產生與從PCIe CE剖析器219接收到的PCIe CE對應的NVMe-oF CE(或NVMe CE)並將所述NVMe-oF CE轉發到NVMe-oF回應器218以通過NVMe-oF介面(例如,乙太網)將NVMe-oF CE發回到遠端初啟程式。NVMe-oF CE可位於往來於遠端初啟程式的讀取資料傳輸或寫入資料傳輸之前。作為NVMe-oF命令橋接的一部分,命令處理單元231至235有利於在後端SSD 250與遠端初啟程式之間進行資料傳輸。
回應於門鈴事件,後端SSD 250提取從PSQ模組216接收到的NVMe命令並執行所述NVMe命令。作為命令執行的一部分,後端SSD 250可執行資料傳輸。這種資料傳輸可往來於系統記憶體212或在NVMe-oF橋接裝置200中可用的晶片上記憶體(on-chip memory)或晶片外記憶體(off-chip memory)之間進行。
資料儲存裝置(例如,NVMe SSD及NVMe-oF SSD)可儲存大量資料。在資料儲存裝置附近或在資料儲存裝置中進行資料處理比將資料從資料儲存裝置移動到遠端主機電腦並在遠端主機電腦內處理資料更高效率且更具成本效益。
本公開闡述用於在資料儲存裝置(例如,儲存將要處理的實際目標資料的NVMe SSD及NVMe-oF SSD)中對遠端應用的資料處理進行加速的記憶體內加速(in-storage acceleration,ISA)平臺。舉例來說,可在NVMe SSD或NVMe-oF SSD(例如,圖1所示eSSD 170)的控制器中構建本ISA平臺。在另一個實例中,可在橋接裝置(例如,圖2所示NVME-oF橋接裝置200)的控制器中構建本ISA平臺。就此而言,本文中所用的用語“記憶體內加速”不僅表示儲存目標資料的實際資料儲存裝置中的資料處理,而且還表示在放置在資料儲存裝置附近以提供與資料儲存裝置的介面(或協定轉換)的橋接裝置中的資料處理。
涉及大量資料處理的資料中心主機應用可因使用本ISA平臺而大大受益。可將執行重負荷資料處理及操縱的主機應用的功能卸載到資料儲存裝置或橋接裝置以執行記憶體附近加速或記憶體內加速。本ISA平臺可從能量及頻寬的角度提供高效率的資料處理解決方案,同時降低計算及儲存基礎設施的總成本。
根據一個實施例,在遠端主機電腦上運行的資料密集型應用(例如,機器學習(ML)應用、大資料應用)可將一些資料處理功能卸載到資料儲存裝置和/或橋接裝置。資料儲存裝置或橋接裝置可通過將儲存實際目標資料的資料儲存裝置與運行資料密集型應用的遠端主機電腦之間的資料傳輸最小化來加速資料處理,所述資料密集型應用需要對儲存在資料儲存裝置中的目標資料進行存取。本ISA平臺通過將資料儲存裝置與運行資料密集型應用的遠端主機電腦之間的資料移動最小化來使得使用者資料能夠在更靠近資料儲存裝置的位置處或在資料儲存裝置處更高效率地進行處理。因此,本ISA平臺可實現更好的應用性能,同時降低對主機電腦進行的計算、聯網及儲存基礎設施所涉及的成本。
本ISA平臺適用於各種類型的資料儲存裝置。然而,為便於解釋起見,在下文中繪示NVMe SSD或NVMe-oF SSD作為資料儲存裝置的實例。
根據一個實施例,執行資料處理加速的資料儲存裝置或橋接裝置包括基於現場可程式設計閘陣列(field programmable gate array,FPGA)的可重新配置的邏輯塊。基於FPGA的可重新配置的邏輯塊與NVMe/NVMe-oF SSD的控制器(在本文中也稱為NVMe/NVMe-oF控制器)或橋接裝置的控制器(在本文中也稱為橋接裝置控制器)一起發揮作用,以使得能夠對應用的一些部分進行卸載及加速。這些基於FPGA的可重新配置的邏輯塊可從外部連接到NVMe/NVMe-oF控制器或嵌入到NVMe/NVMe-oF控制器中。應用用戶可使用耦合到NVMe/NVMe-oF SSD或嵌入在NVMe/NVMe-oF SSD中的這些可重新配置的邏輯塊來實現應用的用於加速的功能。
本ISA平臺不知曉正在被加速的在遠端主機電腦上運行的應用。本ISA平臺可以通用方式對應用進行加速,以使得本ISA平臺適用於各種類型的應用及資料儲存裝置。另外,使用者可以自助服務方式使用本ISA平臺。舉例來說,用戶可在運行期間選擇並下載應用的任何部分,且可在運行期間對應用進行改變。
對於給定應用而言,用戶可識別所述應用的用於處理或操縱大量資料的功能或元件。所識別出的功能便是可被卸載到ISA平臺以對應用的性能進行加速的功能。根據一個實施例,使用者可將應用的功能下載到包括可重新配置的邏輯塊(在下文中也被稱為黑盒子)的資料儲存裝置(或橋接裝置)的預定義儲存區域。應注意,本文所用用語“黑盒子”是指可重新配置的邏輯塊的集合,可重新配置的邏輯塊可將來自應用代碼的用於對某些資料存取及處理功能進行加速的功能卸載到資料儲存裝置(或橋接裝置)附近的裝置的資料儲存裝置(或橋接裝置)。在本文中將每一個可重新配置的邏輯塊的集合方便地稱為應用加速黑盒子(AABB)。AABB中的每一者可根據可重新配置的邏輯塊是如何配置的而具有不同的大小及能力。
AABB具有兩個主要元件:被稱為暫存器傳輸級(RTL)黑盒子的硬體以及被稱為RTL黑盒子驅動器的韌體。RTL黑盒子含有硬體處理引擎,且RTL黑盒子驅動器是用於RTL引擎的韌體驅動器或與用於加速的功能對應的正常韌體驅動器。在一些實施例中,AABB可只具有韌體而不具有硬體。
本ISA平臺使用RTL黑盒子元件來重新配置預定義的及預供應的FPGA邏輯區域(即,ISA平臺的可重新配置的邏輯塊)。RTL黑盒子驅動器是與旨在在嵌入式控制器(例如,NVMe/NVMe-oF控制器或橋接控制器)的處理器核心上運行的經重新配置的RTL塊盒子相關聯的韌體驅動器。當使用者對當前被加速功能的要求及需求完成時,用戶可將所述AABB去能或捨棄並將新的AABB下載到所捨棄的AABB槽位。被下載並分配到對應的AABB槽位的AABB被稱為現用的AABB槽位。現用的AABB準備好執行被加速功能。主機命令可包括AABB槽位通信命令以與現用的AABB槽位進行通信。AABB槽位通信命令可包括現用的AABB槽位的識別符。多個AABB可在任意給定時間在ISA平臺中為現用的。
本ISA平臺提供一組預供應及預定義的AABB槽位。每一個這種AABB槽位可預留一定數目的邏輯資源並將其擱置。不同的AABB槽位可界定相同或不同的介面或資源。使用者可探索所支援的AABB槽位的特徵、特性及屬性,選擇要使用的特定AABB槽位,並將電路元件及韌體元件下載到所選擇的AABB槽位中。對於應用而言可能僅具有韌體元件。舉例來說,可使用“AABB下載”命令來執行電路元件及韌體元件的下載。
除了“AABB下載”命令之外,“AABB管理”命令也用於AABB槽位的管理,例如對所下載的AABB影像進行的使能、去能及捨棄。“AABB Comm”命令用於使主機應用與現用的AABB槽位進行通信。本ISA平臺提供一組應用程式介面(application program interface,API)以使得所下載的AABB影像能夠接收AABB Comm命令,並將完成條目(CE)發送回遠端主機電腦。另外,本ISA平臺提供內置API以使得AABB韌體可執行往來於SSD的與非快閃記憶體介質之間以及往來於主機記憶體的使用者資料傳輸。通過使用這種命令及資料移動API,AABB影像可協調對靜態的使用者資料以及飛行中的使用者資料的使用者資料處理、操縱及其他變換。
本ISA平臺可使用NVMe/NVMe-oF SSD和/或橋接裝置來對協力廠商應用進行加速。用戶可將應用AABB下載到NVMe/NVMe-oF SSD以對用戶應用的期望功能(或期望功能的一些部分)進行加速。本ISA平臺為給定的AABB實現硬體元件及相關聯的韌體組件。硬體元件處於可被載入到NVMe/NVMe-oF SSD中的一個或多個可重新配置的邏輯塊中的RTL位元流的形式。韌體組件在NVMe/NVMe-oF SSD的嵌入式處理器(或處理器核心)上載入及執行。
儘管用戶可識別要在AABB槽位中構建的功能,但就本ISA平臺而言,AABB槽位仍然是黑盒子。也就是說,本ISA平臺及平臺供應商將不會知曉或不關心AABB如何使用以及AABB的使用目的。使用者可以自助服務方式定義、創建、下載及使用由本ISA平臺提供的AABB槽位。儘管以下實例集中於允許使用者以自助服務方式運行協力廠商加速功能的本ISA平臺的實施例,但應理解,本ISA平臺可以通用方式使用以使得可在NVMe/NVMe-oF SSD或橋接裝置中在本機構建某些標準的內置黑盒子功能。
當使用者將AABB影像下載到AABB槽位時,接收到AABB影像的裝置(例如,NVMe/NVMe-oF SSD或橋接裝置)抽取RTL元件及韌體元件。RTL元件可以位元流形式遞送。韌體元件是作為可執行二進位影像(binary image)來遞送的。RTL位元流用於重新配置為對應的黑盒子預留的FPGA區域(即,AABB槽位),且在嵌入式處理器(或嵌入式處理器的處理器核心)上執行驅動器二進位。在遠端主機電腦上運行的應用可使用NVMe命令“AABB Comm”來與ISA平臺上的AABB影像進行通信。裝置攔截具有目的地AABB槽位識別符的“AABB Comm”命令並將所述“AABB Comm”命令轉發到適宜的AABB槽位。
圖3繪示根據一個實施例的示例性應用加速黑盒子(AABB)影像的資料結構。AABB影像301包括報頭310、RTL位元流320及驅動器二進位影像檔案321。報頭310包括雜項資訊311、參數312、RTL位元流長度313、RTL位元流偏移量314、驅動器二進位檔案長度315及驅動器二進位檔案偏移量316。RTL位元流偏移量314包括指向RTL位元流320的指標,RTL位元流320具有為RTL位元流長度313的大小,且驅動器二進位檔案偏移量316包括指向驅動器二進位影像檔案321的指標,驅動器二進位影像檔案321具有驅動器二進位檔案長度315。儘管本實例僅繪示一個報頭以及對應的RTL位元流及驅動器二進位影像檔案,然而應理解,單個AABB影像可包括多個報頭、RTL位元流及驅動器二進位影像檔案,而這並不偏離本公開。
本ISA平臺可被構建在NVMe/NVMe-oF SSD(例如,圖1所示eSSD 170)的控制器中或橋接裝置(例如,圖2所示NVMe-oF橋接裝置200)的控制器中。在一些實施例中,控制器可與NVMe/NVMe-oF SSD或橋接裝置中所包括的基於FPGA的可重新配置的邏輯塊進行交互。除了資料儲存能力之外,本ISA平臺提供用於構建及執行協力廠商功能塊(即,AABB槽位)的機制。AABB槽位被供應預定量的邏輯資源、計算資源及記憶體資源,所述邏輯資源、計算資源及記憶體資源可通過一組預定義的介面來進行存取。在NVMe/NVMe-oF SSD中構建的基於FPGA的可重新配置的邏輯塊可用於在NVMe/NVMe-oF SSD的控制器或橋接裝置中構建協力廠商功能塊的重負荷資料處理功能。用戶可使用控制器處理器的計算資源來構建控制演算法以及韌體加速引擎的驅動器韌體。在一些實施例中,用戶可僅針對一些使用情形來使用韌體資源。
圖4繪示根據一個實施例的構建在橋接裝置中的示例性ISA平臺連同後端SSD的圖。舉例來說,後端SSD 450是可通過通往橋接裝置的PCIe鏈路進行存取的標準NVMe SSD。橋接裝置與後端SSD可作為“eSSD”被封裝為對於主機而言可見的單個儲存裝置。橋接裝置400包括處理器411、PCIe端點(end point,EP)421、與後端SSD 450進行介面的PCIe介面417、在NVMe-oF橋接裝置的情形中可選的乙太網介面418、黑盒子重新配置控制器422、資料緩衝器423、NVMe/NVMe-oF主機介面424及可重新配置的邏輯塊425。可重新配置的邏輯塊425可為現場可程式設計閘陣列(FPGA)及可重新配置的互連線,現場可程式設計閘陣列包括可程式設計邏輯塊的陣列,可重新配置互連線可以可程式設計方式對邏輯塊進行連接。邏輯塊可被配置成執行複雜的組合功能或僅簡單的邏輯閘(比如,與異或(AND XOR))。另外,邏輯塊還可包括記憶元件(例如,觸發器或更完整的儲存塊)。然而,可重新配置的邏輯塊425並非僅限於FPGA塊,且還可使用不同形式及類型的可程式設計的/可重新配置的邏輯塊,而這並不偏離本公開的範圍。
可重新配置的邏輯塊425包括多個分區的RTL黑盒子432a至432n。每一分區的RTL黑盒子432包括特定量的硬體資源以及通過系統匯流排430與其他功能模組(例如,黑盒子配置控制器422、資料緩衝器423、NVMe/NVMe-oF主機介面424)進行介面的特定數目及特定類型的介面。用戶可在所選擇的RTL黑盒子432的資源及介面限制條件內選擇RTL黑盒子432並構建協力廠商RTL功能。在一些情形中,用戶可使用僅韌體黑盒子來構建RTL功能性。在這種情形中,韌體黑盒子可使用RTL黑盒子432的預填充RTL元件。
橋接裝置400攔截從PCIe匯流排或乙太網接收的目的地為後端SSD 450的主機命令,且可不僅提供對儲存在後端SSD 450中的資料的存取而且還提供對使用集成處理器411進行處理的接近儲存資料的存取。BB配置控制器422可將RTL位元流下載到一個或多個RTL黑盒子432中,並且將對應的驅動器二進位影像檔案載入到處理器411以使用處理器411的處理器核心來運行對應的黑盒子驅動器431。
圖5繪示根據一個實施例的構建在資料儲存裝置中的示例性ISA平臺的圖。資料儲存裝置500可為NVMe SSD或NVMe-oF SSD。在一些實施例中,資料儲存裝置500可指代NVMe SSD的儲存控制器或NVMe-oF SSD的儲存控制器。資料儲存裝置500包括控制器501及快閃記憶體介質560。控制器501包括處理器511、PCIe EP 521、在NVMe-oF SSD的情形中可選的乙太網介面518、黑盒子重新配置控制器522、資料緩衝器523、NVMe/NVMe-oF主機介面524及可重新配置的邏輯塊525。可重新配置的邏輯塊525包括多個分區的RTL黑盒子532a至532n。每一分區的RTL黑盒子532包括特定量的硬體資源以及通過系統匯流排530與其他功能模組(例如,黑盒子配置控制器522、資料緩衝器523、NVMe/NVMe-oF主機介面524)進行介面的特定數目及特定類型的介面。資料儲存裝置500中的許多構成元件相似於或相同於在圖4所示橋接裝置的實例中闡述的構成元件。並非具有與後端SSD 450的PCIe介面417,控制器501具有與快閃記憶體介質560進行介面的快閃記憶體轉換層(flash translation layer,FTL)模組526以從快閃記憶體介質560讀取使用者資料以及將使用者資料寫入到快閃記憶體介質560。在這種本機實施方式中,不需要具有連接到後端SSD的橋接裝置,這是因為SSD控制器本身便可執行原本由橋接裝置執行的功能。
基於FPGA的可重新配置的邏輯塊(例如,圖4所示可重新配置的邏輯塊425以及圖5所示可重新配置的邏輯塊525)可被重新程式設計以執行各種使用者可程式設計邏輯功能。可重新配置的邏輯塊中的每一者可包括:a)查閱資料表(look-up table,LUT)、b)隨機存取記憶體(random-access memory,RAM)及c)可重新配置的互連線。通過使用這三個元件,可以硬體方式構建各種資料處理電路。可重新配置的邏輯塊可同時提供典型應用專用積體電路(application-specific integrated circuit,ASIC)的高性能以及軟體實施方式的靈活性。
應用的資料處理功能性是使用可程式設計的語言(例如,Verilog及超高速積體電路硬體描述語言(Very-High-Speed Integrated Circuit Hardware Description Language,VHDL))以RTL模型形式構建的。RTL模型接著被合成到閘級電路(gate level circuit)中。合成電路繼而被映射到FPGA資源(例如,LUT、RAM及互連線)以實現閘級網表的物理實施方式。最終實施方式是以位元流或位元檔的形式來表示的。位元流本質上是FPGA中的互連線開關的位元映射圖(bit map)。通過接通及關斷適宜的互連線開關,在FPGA中實現期望的電路。位元檔的位元流在通電之後或在期望時間點處被配置到FPGA中或被下載到FPGA中。一旦對位元流進行了配置,互連線開關便會保持處於這樣的程式設計狀態直到重置或重啟為止。一旦完成了位元流配置或程式設計,資料處理功能便可開始其操作。可停止當前的資料處理電路並利用不同的位元流來重新配置FPGA以啟動新的資料處理功能。
根據一個實施例,本ISA平臺可具有大量FPGA核心,每一個RTL黑盒子配置有一個FPGA核心。每一個RTL黑盒子可被預定義及預供應有包括但不限於以下的資源:邏輯區域、互連線、LUT、RAM塊、專用硬巨集元(例如,PCIe控制器、數位訊號處理器(digital signal processor,DSP)算數邏輯單位(arithmetic logic unit,ALU))、以及時鐘信號及重置信號。
RTL黑盒子可具有各種預定義及預供應的介面。介面的實例包括但不限於可程式設計的時鐘/重置、與嵌入式處理器的高級可擴展介面(advanced extensible interface,AXI)、雙倍數據速率(double data rate,DDR)儲存介面、PCIe(EP/RP)介面、乙太網介面、用於專用ISA服務的定制介面及任何其他介面。
另外,RTL黑盒子532中的每一者可具有與對應的配置控制器522的配置介面。該介面對使用者而言不可見且用於將使用者電路下載到RTL黑盒子532中。
根據一個實施例,SSD控制器或橋接控制器可構建在FPGA中。在這種情形中,FPGA的區域可被擱置且預留為RTL黑盒子。被擱置並預留的那些FPGA分區可用於在運行期間下載用戶位元流。
本ISA平臺提供用於對使用者應用進行加速的多個AABB槽位。用戶能夠使用AABB槽位(或黑盒子)來構建可由自助服務模型中的資料儲存裝置自身的橋接裝置的控制器運行的功能。因此,本ISA平臺不清楚在AABB槽位中運行的實際功能。為有利於這種客戶自助服務架構,本ISA平臺採用探索機制以使最終使用者探索到支援應用加速的橋接裝置或資料儲存裝置。根據一個實施例,本ISA平臺使得裝置能夠提供通知/公佈機制來指示裝置可使用集成可程式設計/可重新配置的AABB槽位來支援應用加速。舉例來說,裝置可發出NVMe識別命令來通知/公佈AABB支持。
支援記憶體附近的應用加速或記憶體內的應用加速的裝置可使用識別資料結構來提供所支援的AABB特徵的各種屬性及特徵。可通過識別資料結構來提供AABB支援裝置的屬性、參數及特徵的一些實例。舉例來說,識別資料結構可包括關於具有RTL黑盒子及韌體黑盒子的AABB槽位的數目、具有僅韌體黑盒子的AABB槽位的數目、具有RTL黑盒子參數及韌體黑盒子參數的每個AABB槽位的資料結構的資訊。RTL黑盒子元件的參數的實例包括但不限於面積、互連線資源、邏輯資源的數目、LUT的屬性、RAM塊的數目、大小等、最大時鐘頻率以及介面的數目及類型。韌體黑盒子元件的參數的實例包括但不限於相關聯的韌體黑盒子的韌體代碼大小以及處理器資訊。
根據一個實施例,AABB支援裝置可發出NVMe命令(在本文中稱為“AABB下載”命令)來將影像下載到RTL黑盒子。圖6繪示根據一個實施例的“AABB下載”命令格式。OPC是為管理命令集或供應商定義命令集預留的8位專用操作碼。CID是16位命令識別符。DPTR是使用分散/聚集表(Scatter/Gather List,SGL)或物理區頁(Physical Region Page,PRP)方法的資料指標。DPTR指向主機記憶體中的AABB影像。NUMD是用於影像傳輸的雙字(32位元不帶正負號的整數)的數目。OFST是用於當前傳輸的偏移量。AABB槽位ID含有將用於AABB影像的AABB槽位識別符。
本ISA平臺提供了用於實現AABB機制的平穩操作的多個AABB槽位管理功能。一旦將AABB影像下載到AABB槽位,所下載的AABB影像便會預設地保持在重置模式直到應用發出明確的啟動觸發命令來啟動ISA平臺上的AABB影像。應用也可將當前正在運行的特定AABB影像暫停或重置。應用可捨棄來自ISA平臺的一個或多個所下載的AABB影像。為有利於實現這種AABB管理功能,本ISA平臺採用一組新的NVMe AABB槽位管理命令。
圖7繪示根據一個實施例的AABB槽位管理命令的實例。OPC是為管理命令集或供應商定義命令集預留的專用操作碼,且CID是命令識別符。AABB槽位ID是將用於AABB槽位管理命令的AABB槽位識別符。AABB動作ID指示將執行的管理動作。舉例來說,0x1將指定的AABB影像使能;0x2將指定的AABB影像去能;0x3將指定的AABB影像重置;0x4捨棄指定的AABB影像。在一些地方可使用其他AABB動作ID或者結合這些動作ID來使用其他AABB動作ID。
一旦在ISA平臺中下載並啟動了AABB影像,應用便可使用一組新的NVMe命令(在本文中稱為“AABB Comm”命令)來與AABB影像進行通信。應用可將“AABB Comm”命令發送到AABB,且AABB可對應用作出回應。舉例來說,應用可向AABB發送某些詢問,且AABB可將結果發送回應用。這種主機及AABB通信可被構建為NVMe或NVMe-oF協議的一部分。在這種情形中,AABB Comm命令可具有專用NVMe命令的標準格式以使得本ISA平臺可將其攔截並轉發到在ISA平臺上運行的適宜的AABB影像。圖8繪示根據一個實施例的AABB Comm命令的示例性格式。OPC是為管理命令集或供應商定義命令集預留的專用操作碼,且CID是命令識別符。AABB槽位ID是將用於AABB槽位管理命令的AABB槽位識別符。
根據一個實施例,在任意給定時刻,可有多個AABB影像現用。因而如圖8中所示,AABB Comm命令還載送16位AABB槽位ID。這種AABB槽位ID由ISA平臺用於將所攔截的AABB Comm命令遞送到正確的AABB槽位。
除了AABB Comm命令攔截之外,本ISA平臺還提供一組標準API,AABB驅動器可使用所述一組標準API來與在遠端主機電腦上運行的應用進行通信並往來於資料儲存裝置之間傳輸使用者資料。本ISA平臺提供的API包括各種命令,例如:1)用於攔截AABB Comm命令並將AABB Comm命令遞送到適宜的AABB槽位的命令;2)用於將AABB Comm命令完成條目發送回應用的命令;3)用於從資料儲存裝置讀取使用者資料的命令;4)用於將AABB資料寫入到資料儲存裝置的命令;5)用於從主機記憶體讀取使用者資料的命令;以及6)用於將AABB資料寫入到主機記憶體的命令。
用於攔截AABB Comm命令並將AABB Comm命令遞送到適宜的AABB槽位的第一命令可為包括提交佇列識別符(submission queue identifier,SQID)的64B命令,所述AABB Comm命令是在提交佇列識別符上接收到。用於將AABB Comm命令完成條目發送到在主機電腦上運行的應用的第二命令可包括16B完成條目(CE)及SQID。用於從資料儲存裝置讀取使用者資料的第三命令可包括命名空間ID(NSID)、起始邏輯塊位址(SLBA)、塊數目(NLB)、ISA平臺中的目的地位址以及僅有的其他必要的相關資訊。用於將AABB資料寫入到資料儲存裝置的第四命令可包括NSID、SLBA、NLB、ISA平臺中的源位址以及任何其他必要的相關資訊。用於從主機記憶體讀取使用者資料的第五命令可包括主機記憶體中的源位址(SGL或PRP)、ISA平臺中的目的地位址、傳輸長度及任何其他必要的相關資訊。用於將AABB資料寫入到主機記憶體的第六命令可包括ISA平臺中的源位址、主機記憶體中的目的地位址(SGL或PRP)、傳輸長度及任何其他必要的相關資訊。
通過使用API,AABB韌體可接收主機應用命令並將用於所接收的AABB Comm命令的適宜的完成條目發送回到主機應用。用於從資料儲存裝置讀取使用者資料以及將使用者資料寫入到資料儲存裝置的API命令可用於使AABB能夠對儲存在資料儲存裝置上的使用者資料進行處理或操縱。AABB可將資料提取到本地緩衝器,對資料進行處理或對資料進行變換,並將經修改的資料或處理結果寫回回到資料儲存裝置。用於從主機記憶體讀取使用者資料以及將使用者資料寫入到主機記憶體的API命令可用於使AABB韌體能夠協調與遠端主機以及後端資料儲存裝置的資料傳輸或直接與資料儲存裝置的與非快閃記憶體介質的資料傳輸。通過使用這些主機應用命令接收、命令完成及從主機及資料儲存裝置兩者進行的資料傳輸,ISA平臺可在資料儲存裝置附近或資料儲存裝置內執行期望的使用者資料處理及操縱功能。
根據一個實施例,AABB韌體可使用AABB命令發起往來於主機記憶體的資料傳輸。在一些實施例中,主機及AABB也可通過資料儲存裝置交換資料。主機電腦可直接讀取使用者資料或將使用者資料寫入到資料儲存裝置,且AABB可讀取或修改資料儲存裝置中靜態的使用者資料。用於主機資料移動的AABB命令可由AABB韌體用於在飛行中協調資料操縱。在一些使用情形中,AABB可在主機電腦讀取或寫入資料時執行資料操縱或資料變換。
圖9繪示根據一個實施例的支援AABB的NVMe-oF SSD中的示例性命令及資料流程的圖。NVMe-oF SSD 900包括控制器901及快閃記憶體介質960。控制器901包括處理器911、PCIe EP 921、乙太網介面918、黑盒子重新配置控制器922、資料緩衝器923、NVMe-oF主機介面924及可重新配置的邏輯塊925。可重新配置的邏輯塊925包括多個分區的RTL黑盒子932a至932n。每一分區的RTL黑盒子932包括特定量的硬體資源以及通過系統匯流排930與其他功能模組(例如,黑盒子配置控制器922、資料緩衝器923、NVMe-oF主機介面924)進行介面的特定數目及特定類型的介面。
NVMe-oF SSD 900可通過乙太網介面918接收主機命令。主機命令可包括AABB命令(例如,AABB下載命令、AABB槽位管理命令及AABB Comm命令)。乙太網介面918可攔截來自遠端主機電腦的AABB命令並通過命令路徑951將所述AABB命令轉發到NVMe-oF主機介面924及處理器911。NVMe-oF SSD 900的處理器911可產生完成條目並通過經過NVMe-oF主機介面924及乙太網介面918的命令路徑951將所述完成條目發送回主機應用。在運行所下載的AABB的同時,處理器911可發出AABB發起的內部命令(與主機發起的命令相反)以通過經過NVMe-oF主機介面924及FTL 926的命令路徑952讀取使用者資料以及將使用者資料寫入到快閃記憶體介質960。另外,處理器911可與主機應用進行通信以通過經過資料緩衝器923及乙太網介面918的命令路徑953從主機記憶體讀取使用者資料以及將使用者資料寫入到主機記憶體。主機應用可發起資料讀取操作及資料寫入操作以通過經過乙太網介面918、NVMe-oF主機介面924及FTL 926的路徑954往來於主機記憶體與快閃記憶體介質960之間讀取及寫入使用者資料。
圖10繪示根據另一個實施例的支援AABB的NVMe SSD中的示例性命令及資料流程的圖。NVMe SSD 1000包括控制器1001及快閃記憶體介質1060。控制器1001包括處理器1011、乙太網介面1018(可選的)、PCIe EP介面1021、黑盒子重新配置控制器1022、資料緩衝器1023、NVMe主機介面1024及可重新配置的邏輯塊1025。可重新配置的邏輯塊1025包括多個分區的RTL黑盒子1032a至1032n。每一分區的RTL黑盒子1032包括特定量的硬體資源以及通過系統匯流排1030與其他功能模組(例如,黑盒子配置控制器1022、資料緩衝器1023、NVMe主機介面1024)進行介面的特定數目及特定類型的介面。
NVMe SSD 1000可通過PCIe EP介面1021接收主機命令。主機命令可包括AABB命令(例如,AABB下載命令、AABB槽位管理命令及AABB Comm命令)。PCIe EP 介面1021可攔截來自遠端主機電腦的AABB命令並通過命令路徑1051將所述AABB命令轉發到NVMe主機介面1024及處理器1011。NVMe SSD 1000的處理器1011可產生完成條目並通過經過NVMe主機介面1024及PCIe EP介面1021的命令路徑1051將所述完成條目發送回主機應用。在運行所下載的AABB的同時,處理器1011可發出AABB發起的內部命令(與主機發起的命令相反)以通過經過NVMe主機介面1024及FTL 1026的命令路徑1052讀取使用者資料以及將使用者資料寫入到快閃記憶體介質1060。另外,處理器1011可與主機應用進行通信以通過經過資料緩衝器1023及PCIe EP介面1021的命令路徑1053從主機記憶體讀取使用者資料以及將使用者資料寫入到主機記憶體。主機應用可發起資料讀取操作及資料寫入操作以通過經過PCIe EP介面1021、NVMe主機介面1024及FTL 1026的路徑1054往來於主機記憶體與快閃記憶體介質1060之間讀取及寫入使用者資料。
根據一個實施例,一種資料儲存裝置包括:資料儲存介質;處理器,包括多個處理器核心;多個應用加速黑盒子(AABB)槽位,包括可重新配置的邏輯塊、互連線及記憶體;主機介面,從在遠端主機電腦上運行的遠端應用接收主機命令,其中主機命令包括影像檔案,影像檔案包括暫存器傳輸級(RTL)位元流及韌體驅動器;以及配置控制器,將RTL位元流下載到所述多個AABB槽位中的AABB槽位並對AABB槽位進行重新配置,並且將韌體驅動器載入到處理器的處理器核心。被載入有韌體驅動器的處理器核心運行遠端應用的資料加速進程以存取被儲存在資料儲存介質中的資料並使用下載在AABB槽位中的RTL位元流來處理被儲存在資料儲存介質中的資料。
資料儲存裝置可為非揮發性儲存快速(NVMe)固態驅動器(SSD)。
資料儲存裝置可為基於網路結構的NVMe(NVMe-oF)SSD,且主機介面可為乙太網介面。
遠端主機電腦可向資料儲存裝置發送第二RTL位元流及第二韌體驅動器影像,且配置控制器可捨棄被下載到AABB槽位的RTL位元流,下載第二RTL位元流,並且將第二韌體載入到處理器核心以使用第二RTL位元流及第二韌體來運行第二資料加速進程。
資料儲存裝置還可向遠端應用發送探索資訊,且探索資訊可包括AABB槽位的特徵、特性及屬性。
主機命令可包括用於對RTL位元流及韌體驅動器進行使能、去能及捨棄的管理命令。
主機命令可包括用於與現用的AABB槽位進行通信的AABB槽位通信命令,且AABB槽位通信命令可包括現用的AABB槽位的識別符。
被載入有韌體驅動器的處理器核心可在使用一組應用程式介面(API)呼叫來運行遠端應用的資料加速進程的同時存取被儲存在資料儲存介質中的資料,所述一組應用程式介面呼叫不知曉遠端應用。
一個或多個AABB槽位可包括邏輯區域、互連線、查閱資料表(LUT)、隨機存取記憶體(RAM)塊、硬巨集元、以及時鐘信號及重置信號。
一個或多個AABB槽位可包括可程式設計的時鐘/重置、至處理器核心的高級可擴展介面(AXI)、雙倍數據速率(DDR)儲存介面、周邊元件連接快速(PCIe)介面及乙太網介面。
根據另一個實施例,一種橋接裝置包括:資料儲存介面,存取被儲存在資料儲存裝置的資料儲存介質中的資料;處理器,包括多個處理器核心;多個應用加速黑盒子(AABB)槽位,包括可重新配置的邏輯塊、互連線及記憶體;主機介面,從在遠端主機電腦上運行的遠端應用接收主機命令,其中主機命令包括影像檔案,影像檔案包括暫存器傳輸級(RTL)位元流及韌體驅動器;以及配置控制器,將RTL位元流下載到多個AABB槽位中的AABB槽位並對AABB槽位進行重新配置,並且將韌體驅動器載入到處理器的處理器核心。被載入有韌體驅動器的處理器核心運行遠端應用的資料加速進程,以通過資料儲存介面存取被儲存在資料儲存裝置的資料儲存介質中的資料並使用下載在AABB槽位中的RTL位元流來處理資料。
資料儲存介面可為NVMe介面。
主機介面可為乙太網介面,且資料儲存裝置可為NVMe-oF SSD。
遠端主機電腦可向橋接裝置發送第二RTL位元流及第二韌體驅動器影像,且配置控制器可捨棄被下載到AABB槽位的RTL位元流,下載第二RTL位元流,並且將第二韌體載入到處理器核心以使用第二RTL位元流及第二韌體來運行第二資料加速進程。
橋接裝置還可向遠端應用發送探索資訊,其中探索資訊可包括多個AABB槽位的特徵、特性及屬性。
主機命令可包括用於對RTL位元流及韌體驅動器進行使能、去能及捨棄的管理命令。
主機命令可包括用於與現用的AABB槽位進行通信的AABB槽位通信命令,且AABB槽位通信命令可包括現用的AABB槽位的識別符。
被載入有韌體驅動器的處理器核心可在使用一組應用程式介面(API)呼叫來運行遠端應用的資料加速進程的同時通過資料儲存介面存取被儲存在資料儲存介質中的資料,所述一組應用程式介面呼叫不知曉遠端應用。
一個或多個AABB槽位可包括邏輯區域、互連線、查閱資料表(LUT)、隨機存取記憶體(RAM)塊、硬巨集元、以及時鐘信號及重置信號。
一個或多個AABB槽位可包括可程式設計的時鐘/重置、至處理器核心的高級可擴展介面(AXI)、雙倍數據速率(DDR)儲存介面、周邊元件連接快速(PCIe)介面及乙太網介面。
上文已闡述以上示例性實施例來繪示用於實施一種在資料儲存裝置(特別是NVMe裝置及NVMe-oF裝置)中提供記憶體內加速的系統及方法的各種實施例。所屬領域中的一般技術人員將意識到,存在對所公開示例性實施例的各種修改及相對於所公開示例性實施例的不同之處。在以下申請專利範圍中闡述旨在落於本發明範圍內的主題。
100‧‧‧資料儲存系統
110‧‧‧主機/主機電腦
111‧‧‧應用
112‧‧‧作業系統及檔案系統
113‧‧‧NVMe-oF驅動器
150‧‧‧乙太網
160‧‧‧機架
161‧‧‧乙太網交換機
162‧‧‧基板管理控制器/BMC
163‧‧‧周邊元件連接快速交換機/PCIe交換機
164‧‧‧管理介面
165‧‧‧中性面
170a、170b~170n‧‧‧eSSD
200‧‧‧NVMe-oF橋接裝置
211‧‧‧接近儲存計算處理器
212‧‧‧系統記憶體
213‧‧‧命令剖析器
214‧‧‧命令分類器
215‧‧‧命令處理器
216‧‧‧PCIe側命令提交佇列模組/PSQ模組
217‧‧‧PCIe應用/根複合體模組/PAPP模組
218‧‧‧NVMe-oF回應器
219‧‧‧PCIe完成條目剖析器/PCIe CE剖析器
220‧‧‧PCIe側命令完成佇列模組/PCQ模組
231‧‧‧專用命令單元/命令處理單元
232‧‧‧網路結構命令單元/命令處理單元
233‧‧‧管理命令單元/命令處理單元
234‧‧‧讀取命令單元/命令處理單元
235‧‧‧寫入命令單元/命令處理單元
250、450‧‧‧後端SSD
301‧‧‧AABB影像
310‧‧‧報頭
311‧‧‧雜項資訊
312‧‧‧參數
313‧‧‧RTL位元流長度
314‧‧‧RTL位元流偏移量
315‧‧‧驅動器二進位檔案長度
316‧‧‧驅動器二進位檔案偏移量
320‧‧‧RTL位元流
321‧‧‧驅動器二進位影像檔案
400‧‧‧橋接裝置
411‧‧‧處理器/集成處理器
417‧‧‧PCIe介面
418、518、918、1018‧‧‧乙太網介面
421‧‧‧PCIe端點
422‧‧‧黑盒子重新配置控制器/黑盒子配置控制器/BB配置控制器
423、523、923、1023‧‧‧資料緩衝器
424、524‧‧‧NVMe/NVMe-oF主機介面
425‧‧‧可重新配置的邏輯塊
430、530、930、1030‧‧‧系統匯流排
432a~432n、532a~532n、932a~932n、1032a、1032n‧‧‧RTL黑盒子
500‧‧‧資料儲存裝置
501、901、1001‧‧‧控制器
511、911、1011‧‧‧處理器
521、921‧‧‧PCIe EP
522‧‧‧黑盒子重新配置控制器/黑盒子配置控制器/配置控制器
525、925、1025‧‧‧可重新配置的邏輯塊
526‧‧‧快閃記憶體轉換層模組
560、960、1060‧‧‧快閃記憶體介質
922、1022‧‧‧黑盒子重新配置控制器/黑盒子配置控制器
924‧‧‧NVMe-oF主機介面
926、1026‧‧‧FTL
951、952、953、1051、1052、1053‧‧‧命令路徑
954、1054‧‧‧路徑
1000‧‧‧NVMe SSD
1021‧‧‧PCIe EP介面
1024‧‧‧NVMe主機介面
412、512、912、1012‧‧‧DDR記憶體
431a~431n、531a~531n、931a~931n、1031a~1031n‧‧‧黑盒子驅動器
作為本說明書的一部分而包括在內的各個圖式繪示當前優選的實施例,且與以上所給出的大體說明及以下所給出的對優選實施例的詳細說明一起用於解釋及教示本文所述原理。 圖1繪示根據一個實施例的示例性資料儲存系統的方塊圖。 圖2繪示根據一個實施例的示例性NVMe-oF橋接裝置的方塊圖。 圖3繪示根據一個實施例的示例性應用加速黑盒子(AABB)影像的資料結構。 圖4繪示根據一個實施例的構建在橋接裝置中的示例性記憶體內加速(in-storage acceleration,ISA)平臺連同後端SSD的圖。 圖5繪示根據一個實施例的構建在資料儲存裝置中的示例性ISA平臺的圖。 圖6繪示根據一個實施例的AABB下載命令格式。 圖7繪示根據一個實施例的AABB槽位管理命令的實例。 圖8繪示根據一個實施例的AABB Comm命令的示例性格式。 圖9繪示根據一個實施例的支援AABB的NVMe-oF SSD中的示例性命令及資料流程的圖。 圖10繪示根據另一個實施例的支援AABB的NVMe SSD中的示例性命令及資料流程的圖。 各個圖未必是按比例繪製,且出於說明目的,在所有圖中具有相似結構或功能的元件一般是由相同的參考編號表示。各個圖僅旨在方便說明本文所述各種實施例。各個圖並不闡述本文所公開教示內容的每一方面且並不限制申請專利範圍的範圍。

Claims (20)

  1. 一種資料儲存裝置,包括: 資料儲存介質; 處理器,包括多個處理器核心; 多個應用加速黑盒子槽位,包括可重新配置的邏輯塊、互連線及記憶體; 主機介面,從在遠端主機電腦上運行的遠端應用接收主機命令,其中所述主機命令包括影像檔案,所述影像檔案包括暫存器傳輸級位元流及韌體驅動器;以及 配置控制器,將所述暫存器傳輸級位元流下載到所述多個應用加速黑盒子槽位中的應用加速黑盒子槽位並對所述應用加速黑盒子槽位進行重新配置,並且將所述韌體驅動器載入到所述處理器的多個處理器核心中的處理器核心, 其中被載入有所述韌體驅動器的所述處理器核心運行所述遠端應用的資料加速進程以存取被儲存在所述資料儲存介質中的資料並使用下載在所述應用加速黑盒子槽位中的所述暫存器傳輸級位元流來處理被儲存在所述資料儲存介質中的所述資料。
  2. 如申請專利範圍第1項所述的資料儲存裝置,其中所述資料儲存裝置是非揮發性儲存快速固態驅動器。
  3. 如申請專利範圍第1項所述的資料儲存裝置,其中所述資料儲存裝置是基於網路結構的非揮發性儲存快速固態驅動器,且所述主機介面是乙太網介面。
  4. 如申請專利範圍第1項所述的資料儲存裝置,其中所述遠端主機電腦向所述資料儲存裝置發送第二暫存器傳輸級位元流及第二韌體驅動器影像,且所述配置控制器捨棄被下載到所述應用加速黑盒子槽位的所述暫存器傳輸級位元流並下載所述第二暫存器傳輸級位元流,並且將所述第二韌體載入到所述處理器核心以使用所述第二暫存器傳輸級位元流及所述第二韌體驅動器影像來運行第二資料加速進程。
  5. 如申請專利範圍第1項所述的資料儲存裝置,其中所述資料儲存裝置還向所述遠端應用發送探索資訊,其中所述探索資訊包括所述多個應用加速黑盒子槽位的特徵、特性及屬性。
  6. 如申請專利範圍第1項所述的資料儲存裝置,其中所述主機命令包括用於對所述暫存器傳輸級位元流及所述韌體驅動器進行使能、去能及捨棄的管理命令。
  7. 如申請專利範圍第1項所述的資料儲存裝置,其中所述主機命令包括用於與現用的應用加速黑盒子槽位進行通信的應用加速黑盒子槽位通信命令,其中所述應用加速黑盒子槽位通信命令包括現用的應用加速黑盒子槽位的識別符。
  8. 如申請專利範圍第1項所述的資料儲存裝置,其中被載入有所述韌體驅動器的所述處理器核心在使用一組應用程式介面呼叫來運行所述遠端應用的所述資料加速進程的同時存取被儲存在所述資料儲存介質中的所述資料,所述一組應用程式介面呼叫不知曉所述遠端應用。
  9. 如申請專利範圍第1項所述的資料儲存裝置,其中所述多個應用加速黑盒子槽位中的一個或多個應用加速黑盒子槽位包括邏輯區域、互連線、查閱資料表、隨機存取記憶體塊、硬巨集元、以及時鐘信號及重置信號。
  10. 如申請專利範圍第1項所述的資料儲存裝置,其中所述多個應用加速黑盒子槽位中的一個或多個應用加速黑盒子槽位包括可程式設計的時鐘/重置、至所述處理器核心的高級可擴展介面、雙倍數據速率儲存介面、周邊元件連接快速介面及乙太網介面。
  11. 一種橋接裝置,包括: 資料儲存介面,存取被儲存在資料儲存裝置的資料儲存介質中的資料; 處理器,包括多個處理器核心; 多個應用加速黑盒子槽位,包括可重新配置的邏輯塊、互連線及記憶體; 主機介面,從在遠端主機電腦上運行的遠端應用接收主機命令,其中所述主機命令包括影像檔案,所述影像檔案包括暫存器傳輸級位元流及韌體驅動器;以及 配置控制器,將所述暫存器傳輸級位元流下載到所述多個應用加速黑盒子槽位中的應用加速黑盒子槽位並對所述應用加速黑盒子槽位進行重新配置,並且將所述韌體驅動器載入到所述處理器的所述多個處理器核心中的處理器核心; 其中被載入有所述韌體驅動器的所述處理器核心運行所述遠端應用的資料加速進程,以通過所述資料儲存介面存取被儲存在所述資料儲存裝置的所述資料儲存介質中的所述資料並使用下載在所述應用加速黑盒子槽位中的所述暫存器傳輸級位元流來處理所述資料。
  12. 如申請專利範圍第11項所述的橋接裝置,其中所述資料儲存介面是非揮發性儲存快速介面。
  13. 如申請專利範圍第11項所述的橋接裝置,其中所述主機介面是乙太網介面,且所述資料儲存裝置是基於網路結構的非揮發性儲存快速固態驅動器。
  14. 如申請專利範圍第11項所述的橋接裝置,其中所述遠端主機電腦向所述橋接裝置發送第二暫存器傳輸級位元流及第二韌體驅動器影像,且所述配置控制器捨棄被下載到所述應用加速黑盒子槽位的所述暫存器傳輸級位元流並下載所述第二暫存器傳輸級位元流,並且將所述第二韌體載入到所述處理器核心以使用所述第二暫存器傳輸級位元流及所述第二韌體來運行第二資料加速進程。
  15. 如申請專利範圍第11項所述的橋接裝置,其中所述橋接裝置還向所述遠端應用發送探索資訊,其中所述探索資訊包括所述多個應用加速黑盒子槽位的特徵、特性及屬性。
  16. 如申請專利範圍第11項所述的橋接裝置,其中所述主機命令包括用於對所述暫存器傳輸級位元流及所述韌體驅動器進行使能、去能及捨棄的管理命令。
  17. 如申請專利範圍第11項所述的橋接裝置,其中所述主機命令包括用於與現用的應用加速黑盒子槽位進行通信的應用加速黑盒子槽位通信命令,其中所述應用加速黑盒子槽位通信命令包括現用的應用加速黑盒子槽位的識別符。
  18. 如申請專利範圍第11項所述的橋接裝置,其中被載入有所述韌體驅動器的所述處理器核心在使用一組應用程式介面呼叫來運行所述遠端應用的所述資料加速進程的同時通過所述資料儲存介面存取被儲存在所述資料儲存介質中的所述資料,所述一組應用程式介面呼叫不知曉所述遠端應用。
  19. 如申請專利範圍第11項所述的橋接裝置,其中所述多個應用加速黑盒子槽位中的一個或多個應用加速黑盒子槽位包括邏輯區域、互連線、查閱資料表、隨機存取記憶體塊、硬巨集元、以及時鐘信號及重置信號。
  20. 如申請專利範圍第11項所述的橋接裝置,其中所述多個應用加速黑盒子槽位中的一個或多個應用加速黑盒子槽位包括可程式設計的時鐘/重置、至所述處理器核心的高級可擴展介面、雙倍數據速率儲存介面、周邊元件連接快速介面及乙太網介面。
TW107121944A 2017-10-11 2018-06-26 資料儲存裝置及橋接裝置 TWI780168B (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/921,400 US10719474B2 (en) 2017-10-11 2018-03-14 System and method for providing in-storage acceleration (ISA) in data storage devices
US15/921,400 2018-03-14

Publications (2)

Publication Number Publication Date
TW201933080A true TW201933080A (zh) 2019-08-16
TWI780168B TWI780168B (zh) 2022-10-11

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 After (1)

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

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)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11210034B2 (en) 2020-03-02 2021-12-28 Silicon Motion, Inc. Method and apparatus for performing high availability management of all flash array server
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

Families Citing this family (38)

* 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
CN112882966A (zh) * 2020-03-24 2021-06-01 威盛电子股份有限公司 运算装置
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

Family Cites Families (60)

* 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
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
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
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
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
US10769098B2 (en) * 2016-04-04 2020-09-08 Marvell Asia Pte, Ltd. Methods and systems for accessing host memory through non-volatile memory over fabric bridging with direct target access
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 日本電気株式会社 ストレージ装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11210034B2 (en) 2020-03-02 2021-12-28 Silicon Motion, Inc. Method and apparatus for performing high availability management of all flash array server
TWI756007B (zh) * 2020-03-02 2022-02-21 慧榮科技股份有限公司 用以進行全快閃記憶體陣列伺服器的高可用性管理的方法與設備
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

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
TWI751374B (zh) 2022-01-01
CN109656473B (zh) 2021-07-02
US11487696B2 (en) 2022-11-01
US10719474B2 (en) 2020-07-21
US20200341933A1 (en) 2020-10-29

Similar Documents

Publication Publication Date Title
TWI780168B (zh) 資料儲存裝置及橋接裝置
US10778521B2 (en) Reconfiguring a server including a reconfigurable adapter device
US10095645B2 (en) Presenting multiple endpoints from an enhanced PCI express endpoint device
US9996484B1 (en) Hardware acceleration for software emulation of PCI express compliant devices
US11048569B1 (en) Adaptive timeout mechanism
US20130086582A1 (en) Network Adapter Hardware State Migration Discovery in a Stateful Environment
US20210089236A1 (en) Network device intermediary for memory access requests
CA3167334C (en) Zero packet loss upgrade of an io device
US11321179B1 (en) Powering-down or rebooting a device in a system fabric
US11934333B2 (en) Storage protocol emulation in a peripheral device
CA3153030A1 (en) Flexible datapath offload chaining
US11281602B1 (en) System and method to pipeline, compound, and chain multiple data transfer and offload operations in a smart data accelerator interface device
US11003618B1 (en) Out-of-band interconnect control and isolation
US12001374B2 (en) System and method for providing in-storage acceleration (ISA) in data storage devices

Legal Events

Date Code Title Description
GD4A Issue of patent certificate for granted invention patent