TW201939269A - 主機系統及其方法和加速模組 - Google Patents

主機系統及其方法和加速模組 Download PDF

Info

Publication number
TW201939269A
TW201939269A TW108104984A TW108104984A TW201939269A TW 201939269 A TW201939269 A TW 201939269A TW 108104984 A TW108104984 A TW 108104984A TW 108104984 A TW108104984 A TW 108104984A TW 201939269 A TW201939269 A TW 201939269A
Authority
TW
Taiwan
Prior art keywords
statement
acceleration
fpga
storage device
inventive concept
Prior art date
Application number
TW108104984A
Other languages
English (en)
Other versions
TWI765138B (zh
Inventor
瑞姆達斯 P 卡佳瑞
佛瑞德 沃里
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 TW201939269A publication Critical patent/TW201939269A/zh
Application granted granted Critical
Publication of TWI765138B publication Critical patent/TWI765138B/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/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output 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/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/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • 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/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/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
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0024Peripheral component interconnect [PCI]
    • 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

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)
  • Computer Hardware Design (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Transfer Systems (AREA)
  • Advance Control (AREA)
  • Bus Control (AREA)
  • Air Bags (AREA)
  • Stored Programmes (AREA)

Abstract

本發明揭露一種系統。系統可包含:處理器,運行應用程式;記憶體,儲存由應用程式使用的資料;上游介面,與處理器通訊;下游介面,與儲存裝置通訊。系統還可包含加速模組,所述加速模組使用硬體來實施且包含加速平臺管理器以執行加速指令。儲存裝置可包含:儲存裝置的端點,用於與加速模組通訊;控制器,用以管理儲存裝置的操作;儲存器,用於應用程式的應用資料;以及儲存裝置加速平臺管理器,用以輔助加速平臺管理器執行加速指令。處理器、加速模組以及儲存裝置可經由周邊元件連接交換匯流排通訊。加速模組可在不將應用資料載入到記憶體中的情況下支援針對應用程式對儲存裝置上的應用資料執行加速指令。

Description

FPGA式加速用的新的固態硬碟架構
本發明概念涉及儲存裝置,且更具體地說,涉及使用額外硬體的加速固態驅動器(Solid State Drive,SSD)執行。
存在以常規方式使用儲存裝置效率低的情況。舉例來說,設想需要在資料庫上運行查詢的情況。常規解決方案為將資料庫載入到電腦的記憶體中、對資料庫的記憶體副本執行查詢以及接著處理結果。雖然這一方法在資料庫相對較小的情況下可能為合理的,但是載入含有數千、數百萬或更多記錄的資料庫(其中查詢的結果是標識資料庫中的單一記錄)效率極低。需要將超大量的資料移動到記憶體中以執行查詢,很可能使已儲存在記憶體中的其它資料位移。且接著,一旦查詢已經執行就丟棄大部分資料,這是由於在查詢完成之後大部分資料都不需要。當需要反復對資料庫執行查詢時,可能會放大這一問題:每一查詢可能都需要將資料庫再次載入到記憶體中。
仍然需要一種用於加速涉及儲存裝置的操作的方法。
[本揭露的目的]
本揭露的實例實施例可提供一種用於基於FPGA的加速的低成本且低功率SSD架構。
實例實施例提供一種系統,所述系統可包含:處理器,所述處理器運行應用程式;記憶體,所述記憶體儲存由在處理器上運行的應用程式使用的資料;上游埠,用於與處理器通訊;下游埠,用於與儲存裝置通訊;加速模組,所述加速模組使用硬體來實施且包含加速平臺管理器(Acceleration Platform Manager,APM-F)以執行第一加速指令;下游過濾器,與下游埠相關聯,所述下游過濾器經操作以攔截從儲存裝置接收到的加速指令且將第一加速指令傳送到APM-F,所述第一加速指令與下游過濾器位址範圍(Filter Address Range,FAR)相關聯。儲存裝置可包含:儲存裝置的端點,用於與加速模組通訊;控制器,用以管理儲存裝置的操作;儲存體,用以儲存應用程式的應用資料;以及儲存裝置加速平臺管理器(storage device Acceleration Platform Manager,APM-S),用以輔助APM-F執行第一加速指令。處理器、加速模組以及儲存裝置可經由周邊元件連接交換(Peripheral Component Interconnect Exchange,PCIe)匯流排通訊。加速模組可在不將應用資料載入到記憶體中的情況下支援針對應用程式對儲存裝置上的應用資料執行第一加速指令。
另一實例實施例提供一種使用硬體實施的加速模組,所述加速模組可包含:加速平臺管理器(APM-F),用以執行第一加速指令;上游埠,用於與處理器通訊,應用程式在所述處理器上運行;下游埠,用於與儲存裝置通訊,所述儲存裝置包含儲存裝置加速平臺管理器(APM-S),所述儲存裝置加速平臺管理器用以輔助APM-F執行第一加速指令,下游過濾器,與下游埠相關聯,所述下游過濾器經操作以攔截從儲存裝置接收到的第一加速指令且將所述第一加速指令傳送到APM-F,所述第一加速指令與下游過濾器位址範圍(FAR)相關聯。加速模組可使用周邊元件連接交換(PCIe)匯流排與處理器和儲存裝置通訊。加速模組可在不將應用資料載入到與處理器相關聯的記憶體中的情況下支援針對應用程式對儲存裝置上的應用資料執行第一加速指令。
再一實例實施例提供一種方法,所述方法可包含:在加速模組的下游埠處從儲存裝置接收第一周邊元件連接交換(PCIe)事務;通過確定第一PCIe事務是否與下游過濾器位址範圍(FAR)中的第一位址相關聯來在加速模組處確定第一PCIe事務是否為第一加速指令,所述下游過濾器位址範圍與加速模組的下游埠相關聯;至少部分地基於確定第一PCIe事務為第一加速指令,在加速模組的加速平臺管理器(APM-F)處處理第一PCIe事務;以及至少部分地基於確定第一PCIe事務不是第一加速指令,使用加速模組的上游埠將第一PCIe事務傳送到處理器。加速模組可在不將應用資料載入到與處理器相關聯的記憶體中的情況下支援針對應用程式對儲存裝置上的應用資料執行第一加速指令。處理器、加速模組以及儲存裝置可使用PCIe 匯流排通訊。
[本揭露的效應]
本文中所揭露的實施例可提供一種可載入資料的加速模組。因此,本文中所揭露的實施例可避免從SSD載入資料所需的延遲。
現在將詳細參考本發明概念的實施例,在附圖中示出所述實施例的實例。在以下詳細描述中,闡述眾多具體細節以實現對本發明概念的透徹理解。然而,應理解,本領域技術人員可以在沒有這些具體細節的情況下實踐本發明概念。在其它例子中,未詳細描述眾所周知的方法、過程、元件、電路以及網路,以免不必要地混淆實施例的各方面。
應理解,雖然術語第一、第二等可在本文中用以描述各種元件,但這些元件不應受這些術語限制。這些術語僅用於將一個元件與另一元件區分開來。舉例來說,在不脫離本發明概念的範圍的情況下,第一模組可以被稱為第二模組,並且類似地,第二模組可以被稱為第一模組。
本文中用於本發明概念的描述中的術語是僅出於描述具體實施例的目的且並不希望限制本發明概念。如本發明概念和隨附權利要求書的描述中所使用,除非上下文另外明確指示,否則單數形式“一(a/an)”和“所述”意欲也包含複數形式。還將理解,如本文中所使用的術語“和/或”指代且涵蓋相關聯的所列專案中的一個或多個的任何及所有可能的組合。將進一步理解,當用於本說明書中時,術語“包括(comprises)”和/或“包括(comprising)”指定存在所陳述的特徵、整數、步驟、操作、元件和/或元件,但不排除存在或添加一個或多個其它特徵、整數、步驟、操作、元件、元件和/或其群組。圖式中的元件和特徵未必按比例繪製。
本發明概念的實施例提出一種固態驅動器(SSD)或其它儲存裝置架構,其中現場可程式化閘陣列(field programmable gate array,FPGA)用於加速某些資料處理功能。FPGA裝置放置在SSD的正面中或沿SSD的側面放置,所述SSD提供周邊元件連接快速(PCIe)主機介面。由於主機事務是在FPGA PCIe介面上接收到的,因此將那些PCIe事務轉發到後端SSD控制器。術語“SSD”和“SSD控制器”互換地使用且除非另有說明,否則大體上意思相同。後端SSD實施PCIe端點和非揮發性儲存快速(Non-Volatile Memory Express,NVMe)控制器。因此,主機直接使NVMe協定與後端SSD對話。也就是說,經由FPGA從主機到後端SSD的PCIe介面具有透傳性質。SSD經由直接記憶體存取(direct memory access;DMA)執行到主機系統記憶體/自主機系統記憶體的資料轉移。FPGA下游埠(Down-Stream Port,DSP)經程式化有用作PCIe事務過濾器的記憶體過濾器位址範圍(Filter Address Range,FAR)。DSP過濾處於FAR視窗內的所有PCIe事務,且將其轉發到FPGA上的邏輯和記憶體。並不處於經程式化FAR視窗內的所有PCIe事務屬於主機系統記憶體且被直接傳遞到主機。SSD控制器使用PCIe供應商定義消息(Vendor Defined Message,VDM)機制或例如I2 C/SMBus的其它邊帶匯流排來對FPGA中的適當FAR視窗進行程式化。SSD控制器經由PCIe基底位址暫存器(Base Address Register,BAR)向主機請求位址範圍的區塊。在主機BIOS已向所請求位址區塊分配SSD控制器之後,所述SSD控制器在FPGA DSP中將位址範圍子集程式化為FAR視窗。在DSP中程式化的位址範圍由SSD控制器和FPGA使用以彼此通訊。也就是說,隨著主機分配位址區塊,SSD和FPGA可與主機事務共用PCIe匯流排,而不會干擾彼此或PCIe層次結構中的其它PCIe裝置。於共用PCIe匯流排之上使用這個FAR視窗,SSD控制器可向FPGA提供加速指令和資料。FPGA或主機也可能使用共用PCIe匯流排和上文所提到的位址範圍來從SSD控制器請求用於加速的資料。FPGA也可使用相同機制來將加速結果提供回到SSD控制器。所提出的架構和機制實現使用FPGA裝置的用於基於SSD的應用加速的低成本且低功率解決方案。
[所提出的解決方案的細節]
基本構思為FPGA和所述SSD(和/或其它儲存裝置)一起工作(作為單獨裝置或合併到單一裝置中)與主機通訊。在下文中,在描述中,儲存裝置意指SSD。存在三種業務流:
1)從主機到儲存裝置。從主機到儲存裝置的通訊由FPGA通過以下來管理:經由FPGA視FPGA實施方案而定僅將所有業務從上游埠(upstream port,USP)或端點(endpoint,EP)轉發到下游埠(downstream port,DSP)或根埠或根複合埠(root complex port,RP),以傳送到儲存裝置的EP。FPGA可包含由儲存裝置暴露於主機的物理功能以支援主機與儲存裝置之間的NVMe通訊。
2)加速指令到FPGA的通訊。在本發明概念的一些實施例中,按以下方式操控加速指令:加速服務管理器(Acceleration Service Manager,ASM)可在主機上運行。ASM可與加速平臺管理器(Acceleration Platform Manager,APM)通訊,所述加速平臺管理器可包含作為儲存裝置(標識為APM-S)和FPGA(標識為APM-F)兩個的部分的元件。主機上的ASM可使用NVMe協定以使加速指令和相關資訊遂穿到SSD。SSD接著充當相對於FPGA的加速協同器:由APM-S接收的所有加速指令用於使用專有介面將適當指令提供到APM-F。使用位址空間視窗來促進專有介面。這一位址空間視窗可在儲存裝置的請求下分配於主機記憶體位址映射內(部分地便於使用NVMe協定在儲存裝置與主機之間進行通訊)。使用適當位址空間中的位址的任何指令可由FPGA過濾以由APM-F進行處理,而非直接從主機或儲存裝置通訊到另一主機或儲存裝置。也可使用與指令相關聯的標籤或使用基於PCIe消息的過濾來執行過濾。這一過濾可由連接到DSP/RP的過濾器執行,所述DSP/RP將FPGA連接到儲存裝置。
3)FPGA與SSD之間的通訊,用以提取資料以加速和處理所述資料。在本發明概念的一些實施例中,按以下方式執行加速:當FPGA想要提取資料以用於加速處理時,FPGA可使用分配於用於儲存裝置-FPGA通訊的主機記憶體位址映射內的位址空間來發送請求,如上文所論述。
[DSP過濾器架構]
這一架構提出一種方法,主機與SSD之間的PCIe匯流排可通過所述方法來與FPGA共用以用於加速資料處理。
從邏輯上講,FPGA可操作地放置在主機與SSD控制器之間。主機連接到FPGA的上游埠(USP),且SSD連接到FPGA的下游埠(DSP)。用於連接到主機和/或連接到SSD的PCIe匯流排可為×4或×8通路,或任何其它所需寬度。FPGA USP埠和DSP埠在兩個方向上轉發PCIe事務(即事務層包(Transaction Layer Packet,TLP))。PCIe TLP的實例為配置讀取、配置寫入、記憶體讀取以及記憶體寫入。因此,主機直接與SSD通訊。FPGA上的DSP埠具有基於經程式化過濾器位址範圍(FAR)過濾來自SSD控制器的所有PCIe事務的邏輯。所攔截的SSD控制器PCIe事務接著被引導到加速平臺管理器-FPGA(APM-F)區塊。APM-F模組與SSD控制器通訊。APM-F模組從SSD控制器接收來自加速平臺管理器-SSD(APM-S)韌體的資料和加速指令。APM-F模組接著將接收到的加速指令和資料提供到執行時間(runtime,RT)調度程式。RT調度程式繼而對適當加速引擎進行程式化以執行資料處理。
FPGA的使用表示一個可能實施方案,然而可使用除FPGA以外的實施方案。FPGA可在儲存裝置內實施。FPGA支援加速資料處理,所述加速資料處理可接近儲存裝置進行而非通過提取資料到主機記憶體且接著在主機上處理所述資料來進行。替代提取資料,儲存裝置/FPGA可接收查詢且本地地執行處理。
SSD控制器使用PCIe傳輸來實施NVMe協定處理邏輯。作為PCIe配置的部分,SSD控制器為其自身的使用請求主機系統位址映射的區塊。SSD控制器請求比其正常需要的區塊更大的區塊來支援NVMe協定:額外空間中的一些或全部可用於管理儲存裝置與FPGA之間的通訊。舉例來說,NVMe協定可需要(比如)64KB位址空間;接著在所提出的架構中,SSD控制器可請求(比如)10MB位址區塊。SSD控制器使用經分配位址映射的部分來以主機透明方式與FPGA通訊。為SSD-FPGA通訊預留的系統位址映射子集稱為過濾器位址範圍(FAR)。SSD控制器接著對FPGA DSP中的FAR視窗進行程式化。SSD控制器可使用例如I2 C/SMBus的邊帶匯流排來對FPGA中的FAR視窗進行程式化。SSD控制器也可使用PCIe供應商定義消息(VDM)來對FPGA中的FAR視窗進行程式化。
主機介面邏輯(Host Interface Logic,HIL)模組實施NVMe協定且與在主機上運行的NVMe驅動器通訊。HIL模組與快閃記憶體轉換層(Flash Translation Layer,FTL)交互以執行正常主機NVMe命令。另外,HIL模組攔截從主機側接收到的專用加速命令且將所述專用加速命令轉發到APM-S模組。APM-S可實施為韌體或韌體+硬體。APM-S模組可處理專用加速命令且接著準備待發送到FPGA上的APM-F模組的加速指令和資料。APM-S模組接著使用過濾器位址範圍(FAR)位址來將加速資訊發送到FPGA。APM-S與APM-F之間的通訊可為基於消息的。可針對APM-S與APM-F之間的這類通訊使用多種不同方法。
所提出的架構和機制允許SSD控制器共用主機PCIe匯流排以實現基於FPGA的加速。本發明概念的實施例提供一種使用SSD中的FPGA的用於應用加速的低成本且低功率解決方案。
[DSP+USP過濾器架構]
在這一架構中,FPGA以間接方式對主機可見。FPGA與SSD之間的通訊與所提出解決方案1保持相同。SSD控制器可從主機請求較大系統位址空間。SSD控制器可將經分配位址區塊劃分到三個窗口中。一個視窗用於NVMe控制器暫存器位址空間。第二視窗用於FPGA與SSD之間的通訊,如上文所描述。第三視窗用於主機與FPGA之間的通訊。主機可根據專用NVMe暫存器發現FPGA裝置的位置。SSD控制器可在專用暫存器中播發第三視窗,所述專用暫存器可由主機應用讀取以知曉FPGA裝置的位置。SSD控制器也可用相同位址視窗對USP進行程式化,以使得USP可過濾所述事務。USP可從主機過濾處於第三視窗位址空間內的所有事務,且可將其轉發到FPGA加速邏輯。這一機制可由主機上的加速服務管理器(ASM)使用來將加速指令和資料傳達到FPGA。
因此,在本發明概念的一些實施例中,也可基於由FPGA從主機接收的業務來進行過濾。也就是說,主機也可將加速指令/資料發送到FPGA。類似於連接到FPGA的DSP/RP,過濾器也可連接到FPGA的USP/EP。主機可使用由儲存裝置請求的位址空間中的位址。由主機使用以用於主機-FPGA通訊的位址可以是由儲存裝置請求以用於與主機NVMe通訊的位址空間的部分(同樣,其中所請求位址空間可大於NVMe通訊所需要的空間),或是主機記憶體位址映射內的單獨位址空間的部分(針對虛擬功能或針對第二物理功能,所述功能中的任一個也由儲存裝置暴露於主機)。應注意,在USP/EP處的過濾和在DSP/RP處的過濾可使用主機記憶體位址映射內的不同位址範圍來進行,使得主機能夠視需要將指令發送到儲存裝置或FPGA(同時仍同樣視需要准許儲存裝置與FPGA通訊)。
在位址空間的一部分支援主機與FPGA之間的通訊的本發明概念的實施例中,FPGA可不對主機直接可見。在這種情況下,主機上的ASM可通過以下來“發現”FPGA:存取寫入在NVMe位址空間中的專用暫存器中的位址,所述NVMe位址空間標識用於主機-FPGA通訊的位址範圍。ASM可經由PCIe裝置表發現儲存裝置,且由此知曉NVMe位址空間中的哪一暫存器儲存對主機-FPGA通訊位址空間的指標。
[VF+DSP過濾器架構]
在這一FPGA+SSD架構中,SSD使一個物理功能(physical function,PF)和一個虛擬功能(virtual function,VF)暴露於主機。SSD控制器經由所述PF暴露。VF用於使FPGA暴露。PF類別碼可指示大型存放區裝置,然而可設定VF類別碼以標識FPGA。SSD控制器PF可請求較大系統記憶體位址區塊,以使得記憶體位址區塊的子集可用於經由FPGA DSP的FPGA與SSD之間的通訊,且SSD控制器VF可請求其自身的記憶體位址區塊以用於經由FPGA USP的FPGA與主機之間的通訊。
FPGA USP可經程式化有可用作PCIe事務過濾器的不同的記憶體過濾器位址範圍和/或VF標籤(FAR-USP)。USP可過濾處於FAR視窗內的所有PCIe事務和/或屬於VF的所有PCIe事務,且可將其轉發到FPGA上的加速邏輯和記憶體。並不處於經程式化FAR-USP視窗內的所有PCIe事務或並不屬於VF的事務屬於SSD且可被直接傳遞到SSD。SSD控制器可使用PCIe VDM機制或例如I2 C/SMBus的其它邊帶匯流排來對適當FAR-USP視窗進行程式化以傳達這類資訊。
這類FAR位址視窗可允許在主機上運行的ASM軟體與APM-F通訊。也就是說,FPGA直接對主機可見。ASM軟體可使用這類PCIe位址範圍以將加速編排邏輯指令和資料發送到FPGA。APM-F可接著將接收到的加速指令和資料提供到執行時間(RT)調度程式。RT調度程式繼而對適當加速引擎進行程式化以執行資料處理。APM-F也可從主機記憶體或SSD儲存提取資料。
[PF+DSP過濾器架構]
這一FPGA+SSD架構類似於所提出的解決方案3,不同之處在於可使用第二PF而不是使用VF來使FPGA暴露於主機。SSD控制器使物理物理功能暴露於主機。第一PF可用於SSD控制器,且第二PF可用於FPGA。第二PF的基底位址可在FPGA中的FAR-USP中經程式化。因此,USP可過濾來自主機的處於經程式化位址範圍(FAR-USP)內的所有事務以供用於第二PF,且可將所述所有事務轉發到FPGA。這一機制可由在主機上運行的ASM使用以與FPGA通訊。
通過使虛擬功能或(第二)物理功能暴露於主機,可(由儲存裝置或由FPGA)從主機請求用於主機-FPGA通訊的位址空間。在虛擬功能或第二物理功能暴露的情況下,USP/EP上的過濾器可基於為主機-FPGA通訊分配的位址範圍或基於所暴露虛擬功能或所暴露第二物理功能(例如由過濾器數目或一些其它標籤)來過濾。(虛擬功能需要作業系統支援;如果實施/支援第二物理功能,那麼使第二物理功能暴露向使用虛擬功能提供替代性解決方案。)
[PF+RP過濾器架構]
在這一FPGA SSD架構中,FPGA PCIe埠為端點(EP)和根埠(RP),而不是USP和DSP。USP/DSP埠與EP/RP埠之間的不同在於EP/RP兩者具有其自身PCIe配置空間而USP/DSP埠並不具有。在根據本發明概念的這些實施例的架構中,FPGA可使兩個PF暴露于主機(應注意,FPGA使其自身的PF暴露於主機,而非SSD提供使FPGA暴露的PF/VF)。SSD EP可連接到FPGA上的RP。第一FPGA EP PF可用於將主機直接連接到SSD,然而第二FPGA EP PF可用於將主機連接到FPGA。這一機制可由在主機上運行的ASM使用以與FPGA通訊。SSD-FPGA通訊可使用FPGA RP與SSD EP之間的位址空間映射的部分。在本發明概念的一些實施例中,第一FPGA PF可請求較大位址空間,且可將BIOS分配的位址視窗映射/轉換到SSD控制器EP。所述位址空間的部分可用於局部FPGA-SSD通訊。在本發明概念的另一實施例中,為第二FPGA EP PF分配的位址空間的部分可用於FPGA與SSD控制器之間的通訊。
[PF+雙埠SSD架構]
在這一FPGA-SSD架構中,連同FPGA一起使用雙埠SSD。在這一架構中,FPGA(同樣,FPGA使其自身的PF暴露,而非SSD提供使FPGA暴露的PF/VF)可使兩個PF暴露於主機。SSD EP可連接到FPGA上的RP。第一FPGA EP PF可用於將主機直接連接到SSD。可將為第二FPGA EP PF而來的所有主機事務轉發到FPGA加速邏輯。在主機上運行的ASM軟體可使用第二FPGA EP PF以與FPGA通訊。
對於FPGA-SSD通訊(用於加速處理),可使用SSD上的第二PCIe EP。因此,FPGA具有連接到SSD的兩個RP。SSD的第一EP埠可用於與主機通訊以供用於正常主機儲存存取。SSD上的第二EP可用於傳遞FPGA中需要的任何資料以供用於處理。
如所提及,在儲存裝置可支援兩個(或可能更多個)埠的本發明概念的實施例中,FPGA可支援兩個RP以與儲存裝置上的兩個EP通訊。在本發明概念的這類實施例中,FPGA上的一個RP(和其對應的儲存裝置上的EP)可用於管理儲存裝置與主機之間的通訊,且FPGA上的另一RP(和其對應的儲存裝置上的EP)可用於管理儲存裝置與FPGA之間的通訊(用於加速指令/資料)。在本發明概念的這類實施例中,FPGA上的RP可支援兩個位址映射(對於每一RP一個位址映射)。因此,用於支援主機與儲存裝置之間的通訊的RP的位址映射可包含為NVMe命令分配的空間,且(用於管理加速指令/資料的通訊的RP的)另一位址映射可完全專用於這類通訊。應注意,在本發明概念的這類實施例中,主機記憶體位址映射可省略意欲用於主機向儲存裝置傳達加速指令的任何位址空間,這是由於所有這些指令可從主機發送到FPGA(經由位址空間,FPGA請求分配於主機的記憶體位址映射內以供用於這類通訊)。FPGA可接著處理指示且視需要使用第二RP上的記憶體位址映射將指令/資料轉發到儲存裝置,所述第二RP專用於FPGA與儲存裝置之間的通訊。
在FPGA中使用EP/RP替代USP/DSP的情況下,EP/RP也可支援PCIe配置空間,且FPGA可使其物理功能直接暴露於主機(而非將這一功能留給儲存裝置)。由FPGA暴露的一個物理功能可用於引導從主機到儲存裝置的通訊;另一物理功能可用於主機與FPGA之間的通訊。在本發明概念的這類實施例中,FPGA可請求從主機分配的位址空間,而非儲存裝置發出這類請求。
EP/RP也可支援其自身記憶體映射。因此,FPGA可使用主機的記憶體位址映射與主機通訊,且FPGA可支援其自身的記憶體位址映射,所述記憶體位址映射用於與儲存裝置通訊。在本發明概念的這類實施例中,FPGA可請求主機的記憶體位址映射中分配的空間以支援從主機到儲存裝置的通訊(其中這類通訊經由FPGA進行),以及主機的記憶體位址映射中分配的額外空間以支援從主機到FPGA的通訊。FPGA的記憶體位址映射可接著包含其自身的空間分配以用於將命令從主機傳達到儲存裝置且用於在FPGA與儲存裝置之間傳達加速指令/資料。FPGA可將用於主機與儲存裝置之間的通訊的位址空間轉換為用於FPGA與儲存裝置之間的通訊的位址空間(所述位址空間大小應相同)。
在FPGA包含EP/RP的情況下,則主機直接查看FPGA。這引發了FPGA暴露何種PCIe性能的問題。FPGA應暴露與儲存裝置相同的PCIe性能。因此FPGA可包含PCIe配置監視器,所述PCIe配置監視器設置FPGA的EP PCIe配置以匹配儲存裝置中的SSD控制器EP PCIe配置。另外,當主機改變FPGA的EP的PCIe配置時,儲存裝置的EP的PCIe配置可類似地修改。
只要保持整個功能,本發明概念的實施例就可支援如FPGA內所描述將元件/功能劃分為多個單獨元件。可使用硬體、軟體/韌體或所述兩個的組合來實施FPGA元件。
在圖1中,示出機器105。機器105可包含處理器110。處理器110可以是任何多種處理器:例如因特爾至強(Intel Xeon)、賽揚(Celeron)、安騰(Itanium)或淩動處理器(Atom processor)、超微半導體(AMD)皓龍處理器(Opteron processor)、安謀(ARM)處理器等。雖然圖1示出機器105中的單一處理器110,但機器105可包含任何數目的處理器,所述處理器中的每一個可以是單核處理器或多核處理器,且可以任何所需組合混合。處理器110可運行裝置驅動器115,所述裝置驅動器115可支援對儲存裝置120的存取,不同裝置驅動器可支援對機器105的其它元件的存取。貫穿本文檔,儲存裝置120將被描述為固態驅動器(SSD)120,然而儲存裝置120可以是如以下本發明概念的實施例中所描述的支援加速指令的任何其它類型的儲存裝置。處理器110也可運行應用程式125和應用服務管理器(ASM)130,所述應用程式125可以是包含加速指令的任何應用程式,所述應用服務管理器130可用於發送待對儲存於儲存裝置120上的資料執行的加速指令。
機器105還可包含記憶體控制器135,其可用於管理對主記憶體140的存取。記憶體140可以是任何多種記憶體,例如快閃記憶體記憶體(flash memory)、動態隨機存取記憶體(Dynamic Random Access Memory,DRAM)、靜態隨機存取記憶體(Static Random Access Memory,SRAM)、永久性隨機存取記憶體(Persistent Random Access Memory)、鐵電隨機存取記憶體(Ferroelectric Random Access Memory,FRAM)或非揮發性隨機存取記憶體(Non-Volatile Random Access Memory,NVRAM),例如磁阻隨機存取記憶體(Magnetoresistive Random Access Memory,MRAM)等。記憶體140也可以是不同記憶體類型的任何所需組合。
機器105還可包含加速模組145。加速模組145可通過如由處理器110請求對儲存裝置120上儲存的資料執行加速指令來輔助處理器110。可單獨使用韌體或使用硬體和韌體的組合來實施加速模組145。貫穿本文檔,加速模組145將被描述為現場可程式化閘陣列(FPGA)145,然而加速模組145可以是如以下本發明概念的實施例中所描述的支援加速指令的任何其它類型的加速模組。舉例來說,加速模組145可實施為以下或使用以下來實施:專用積體電路(Application-Specific Integrated Circuit,ASIC)、圖形處理單元(Graphics Processing Unit,GPU)、SSD的儲存內計算(In-Storage Computing,ISC)性能或其它實施方案。
雖然圖1將機器105描繪為伺服器(其可以是獨立伺服器或機架伺服器),但本發明概念的實施例可包含(不限於)任何所需類型的機器105。舉例來說,機器105可用臺式電腦或膝上型電腦或可得益于本發明概念的實施例的任何其它機器替換。機器105還可包含專用可攜式電腦器、平板電腦、智慧手機以及其它電腦器。另外,雖然圖1將機器105示出為包含儲存裝置120、應用程式125以及ASM 130,但是本發明概念的實施例可在單獨機器中具有這些元件:例如,儲存裝置120可安裝在經由遍歷一或多個任何類型(有線、無線、全球等)的網路的網路連接而連接到機器105(以及應用程式125和ASM 130)的伺服器上。
無論圖1所示的組件的具體佈置如何,術語“主機”、“主機機器”或“主機處理器”還可用以描述機器105。這可使處理器110與本發明概念的其它元件區分開來。
在圖1的組件當中,存在本發明概念的實施例特別關注的三個業務流(也可能存在其它業務流,其與本發明概念的實施例無關):
1) 從主機到儲存裝置120。主機(處理器110)可將通訊發送到儲存裝置120。在本發明概念的實施例中,所有這類業務穿過加速模組145,且不應被阻止通過加速模組145到達儲存裝置120。這類業務的實例可包含用以從儲存裝置120讀取資料和/或將資料寫入到儲存裝置120的命令:由儲存裝置120提供的其它命令還可包含這類業務。
2) 從ASM 130到加速模組145。ASM 130可請求執行某些加速指令。在某種程度上,無論本發明概念的具體實施例如何,加速模組145應從ASM 130接收加速指令。
3) 從加速模組145到儲存裝置130。為了執行加速指令,加速模組145可需要從儲存裝置130提取或接收資料。
圖2示出圖1的機器的額外細節。在圖2中,通常,機器105包含一或多個處理器110,所述一或多個處理器110可包含記憶體控制器135和時脈205,時脈205可用於協調裝置105的元件的操作。處理器110還可以耦合到記憶體140,舉例來說,所述記憶體140可以包含隨機存取記憶體(random access memory, RAM)、唯讀記憶體(read-only memory, ROM)或其它狀態保持媒體。處理器110還可以耦合到儲存裝置120和網路連接器210,所述網路連接器210可以是例如乙太網連接器或無線連接器。處理器110也可連接到匯流排215,所述匯流排215可附接到使用者介面220和輸入/輸出介面埠,所述輸入/輸出介面埠可使用輸入/輸出引擎225以及其它元件來管理。
[第一實例實施例]
圖3示出根據本發明概念的第一實施例的圖1的FPGA 145和圖1的SSD 120的組件。在圖3中,處理器110、FPGA 145以及SSD 120示出為通訊。在圖3中,處理器120、FPGA 145以及SSD 120可經由周邊元件連接快速(PCIe)匯流排通訊。PCIe匯流排可使用任何數目的通路:典型的實例為×4和×8,但本發明概念的實施例可使用任何其它所需數目的通路。這些通訊可包含PCIe事務,所述PCIe事務可以是使用非揮發性儲存快速(NVMe)協定編碼命令的事務層包(TLP),但本發明概念的實施例可擴展到包含使用不同編碼的通訊或不同協定中的命令。
SSD 120可包含端點305、主機介面層(host interface layer,HIL)310、SSD加速平臺管理器(APM-S)315、快閃記憶體轉換層(FTL)320以及快閃記憶體媒體325。端點305可以是邏輯或物理連接點,SSD 120在所述邏輯或物理連接點處可接收且發送PCIe通訊。當SSD 120在端點305處(經由FPGA 145)從處理器110接收PCIe事務時,SSD 120可將PCIe事務傳送到HIL 310。HIL 310可接著確定PCIe事務是包含加速指令還是並不包含加速指令。如果PCIe事務包含加速指令,那麼HIL可將PCIe事務(或加速指令自身,從PCIe事務中未封裝)轉發到APM-S 315以供用於處理:可單獨使用韌體或使用硬體和韌體的組合來實施APM-S 315。否則,HIL 310可將PCIe事務(或未封裝的NVMe命令)傳送到FTL 320,其中FTL可將由圖1的應用程式125使用的邏輯區塊位址(Logical Block Address,LBA)轉換為物理區塊位址(Physical Block Address,PBA),並存取儲存在快閃記憶體媒體325上的資料。
APM-S 315可能會處理基本上兩種不同類型的加速指令。第一類型的加速指令為來自處理器110的專用命令。在本發明概念的第一實施例中,FPGA 145對處理器110不可見:處理器110將其所有通訊發送到SSD 120。當處理器110欲對應用資料執行加速指令時,處理器110可發送專用命令到SSD 120。處理器110可使用NVMe命令來使專用命令/加速指令遂穿到SSD 120。HIL 310可攔截這類專用命令,所述專用命令可傳送到APM-S 315。APM-S 315可接著回應於專用命令產生加速指令,其可發送回到FPGA 145以執行所述加速指令。這類專用命令可例如編碼待執行的特定類型的加速指令以及待執行加速命令指令的資料。
APM-S 315可處理的第二類型的加速指令將涉及資料。舉例來說,FPGA 145可能無法直接存取快閃記憶體媒體325,且因此可能無法在不接收待執行加速指令的資料的情況下執行加速指令。因此,APM-S 315可從FPGA 145接收請求所討論資料的加速指令。APM-S 315可接著存取所請求的資料並將其傳回到FPGA 145,從而准許FPGA 145執行加速指令。
在圖3中,示出SSD 120包含FTL 320和快閃記憶體媒體325,其適合於在SSD中使用。如果用替代性儲存裝置替換SSD 120,那麼可用適合於儲存裝置的形式的替代性元件替換這些元件。舉例來說,如果用硬碟驅動器替換SSD 120,那麼可用硬碟碟片替換快閃記憶體媒體325。還可包含額外元件以支援資料存取:繼續硬碟驅動器儲存裝置的實例,儲存裝置也可視需要包含讀取/寫入頭。
在FPGA 145可攔截處理器110與SSD 120之間的通訊之前,SSD 120可從處理器110請求主機記憶體位址的區塊。用於主機記憶體系統位址的區塊的這一請求在使用PCIe事務時為常規的,且可在啟動時或在稍後時間執行。作為回應,處理器110(或圖1的機器105的基本輸入/輸出系統(Basic Input/Output System,BIOS))可分配主機記憶體系統位址的區塊以供SSD 120使用。主機機器接著知曉主機記憶體系統位址的這一區塊不可供圖1的機器105中的其它裝置使用。
圖4示出根據本發明概念的第一實施例的用於加速圖1的系統中的指令的記憶體使用。在圖4中,SSD 120可請求主機記憶體系統位址的區塊。應注意,雖然需要用以支援處理器110與SSD 120之間的NVMe通訊的記憶體的量可能相對較小(例如64 KB),但是SSD 120可請求大得多的區塊(例如10 MB或大於10 MB)。作為回應,處理器110可傳回主機記憶體系統位址的區塊405。區塊405的一個端部可儲存在基底位址暫存器(BAR)中,使得SSD 120能夠基於BAR(以及利用對所請求區塊的大小的SSD 120的瞭解)確定區塊405。
一旦SSD 120知曉何種位址在區塊405中,SSD 120就可將區塊405劃分到不同區域中以供其使用。區塊405的一個子集410可用於NVMe通訊。另一子集415可被閒置。且第三子集(稱為下游過濾器位址範圍(FAR)420(“下游”是由於從處理器110下游進行任何過濾))可專用於SSD 120與FPGA 145之間的通訊。應注意,下游FAR 420可由SSD 120和FPGA 145使用:其中任一個可使用下游FAR 420中的位址來指示所討論的PCIe事務包含加速指令。
返回到圖3,如果SSD 120使用下游FAR 420中的位址發送通訊,那麼FPGA 145可在下游埠330處接收通訊、攔截所述通訊且本地地處理所述通訊,而非將所述通訊轉發到處理器110。由FPGA 145在下游埠335處從並不涉及下游FAR 420的SSD 120接收的任何通訊可由FPGA 145經由上游埠330傳送到處理器110。(FPGA 145在上游埠330處從處理器110接收的任何通訊可自動地經由下游埠335傳送到SSD 120。)
FPGA 145可定位於處理器110與SSD 120之間,使得FPGA 145可攔截處理器110與SSD 120之間的通訊。通過攔截這類通訊,FPGA 145可執行由SSD 120請求的加速指令。
為執行加速指令,FPGA 145可包含上游埠330、下游埠335、FPGA加速平臺管理器(APM-F)340、調度程式345以及加速引擎350-1和加速引擎350-2。上游埠330可用於與處理器110通訊;下游埠335可用於與SSD 120通訊。APM-F 340負責接收FPGA 145所攔截的任何加速指令。這些加速指令可使用消息郵箱355從下游埠335作為消息接收,但本發明概念的實施例可擴展到用於APM-F接收加速指令的其它機制。一旦接收到加速指令,APM-F 340就可處理加速指令。舉例來說,如果FPGA 145具有能夠執行加速指令的足夠資訊,那麼APM-F 340可將加速指令傳遞到調度程式345(其也可被稱為“執行時間調度程式”),所述調度程式345可接著利用任何可用的加速引擎(例如加速引擎350-1和加速引擎350-2)來調度加速指令。雖然圖3示出兩個加速引擎350-1和加速引擎350-2,但是本發明概念的實施例可包含任何所需數目的加速引擎:圖3中僅出於示範性目的示出兩個加速引擎。或者,如果FPGA 145需要額外資訊來執行加速指令(例如FPGA 145需要待執行加速指令的資料),那麼APM-F 340可採取另一動作(例如發送PCIe事務到SSD 120)請求必需資料。
為確定特定PCIe事務是否包含加速指令,FPGA 145可包含與下游埠335相關聯的下游過濾器360。下游過濾器335可標識從SSD 120發出的可包含加速指令的PCIe事務。這可以任何所需方式進行。在本發明概念的一些實施例中,SSD 120可用圖4的下游FAR 420對下游過濾器360進行程式化。接著,當下游過濾器360標識使用圖4的下游FAR 420中的位址的PCIe事務時,FPGA 145可將PCIe事務標識為包含加速指令並且攔截所述PCIe事務。SSD 120可以任何所需方式對下游過濾器360進行程式化。舉例來說,SSD 120可使用例如互積體電路(Inter-Integrated Circuit,I2 C)匯流排或系統管理匯流排(System Management Bus,SMBus)的邊帶匯流排365來對下游過濾器360進行程式化。或SSD 120可使用PCIe供應商定義消息(VDM)來對下游過濾器360進行程式化。SSD 120也可使用其它機制來對下游過濾器360進行程式化。
在圖3中,示出FPGA 145包含能夠實現與處理器110和SSD 120通訊的部件:具體地說,上游埠330、下游埠335以及下游過濾器360。雖然FPGA 145確實需要其與處理器110和SSD 120通訊的一些機制,但是本發明概念的實施例可將通訊元件與FPGA 145分離開。舉例來說,下游埠335和下游過濾器360(其中後者負責標識從SSD 120接收到的哪一PCIe事務涉及加速指令(且應重新引導到APM-F 340)而非傳送到處理器120)可放置在FPGA 145與SSD 120之間的橋接元件(圖3中未示出)中。由於這一橋接元件將需要與FPGA 145和SSD 120通訊,因此FPGA 145將仍包含下游埠335(或實現與橋接元件通訊的替代性結構):但可接著從FPGA 145去除下游過濾器360。
如上文所描述,本發明概念的第一實施例表示處理器/FPGA/SSD實施方案的一個可能的組合。其它實施方案也是有可能的,下文描述為本發明概念的其它實施例。在特定元件的操作(例如APM-F 340、調度程式345以及加速引擎350-1和加速引擎350-2的操作)之間不存在不同的情況下,本發明概念的後續實施例中省略所述特定元件的操作的重複描述。
[第二實例實施例]
圖5示出根據本發明概念的第二實施例的圖1的FPGA 145和圖1的SSD 120的組件。本發明概念的第二實施例類似于本發明概念的第一實施例,不同之處在於上游埠330還包含過濾器:上游過濾器505。上游過濾器505可以類似於下游過濾器360的方式過濾來自處理器110(經由上游埠330接收到的)的PCIe事務。舉例來說,SSD 120可定義類似於圖4的下游FAR 420的上游FAR,且使用邊帶匯流排365、PCIe VDM或任何其它機制來用上游FAR對上游過濾器505進行程式化。接著,當FPGA 145在上游埠330處從處理器110接收PCIe事務時,上游過濾器505可檢驗PCIe事務以查看其是否包含上游FAR中的位址。如果包含,那麼PCIe事務為加速指令,且FPGA 145可將PCIe事務路由到APM-F 340以供用於處理器,而不是將PCIe事務傳送到SSD 120。
圖6示出根據本發明概念的第二實施例的用於加速圖1的系統中的指令的記憶體使用。與本發明概念的第一實施例中相似,SSD 120可請求主機系統記憶體位址的區塊(其大於SSD 120所需要以支援NVMe命令的位址範圍),且可作為回應其BAR接收區塊405。SSD 120可接著保留區塊405的一個子集410以用於NVMe通訊,可不使用另一子集415,可將第三子集保留作為下游FAR 420,且可將第四子集保留作為上游FAR 605。
返回到圖5,在本發明概念的第二實施例中,處理器110仍並不直接“查看”FPGA 145,因為FPGA 145並不是可發現的裝置。但SSD 120可通過在用於NVMe通訊的子集410中的專用暫存器中程式化上游FAR 605的基底位址來通知上游FAR 605的處理器110。在從用於NVMe通訊的子集410讀取這一專用暫存器後,處理器110可能會知曉上游FAR 1905。接著處理器110可(經由上游埠330)將加速指令發送到FPGA 145,而不是將專用命令發送到SSD 120的APM-S 315,其接著負責將加速指令發出到FPGA 145。
在圖5中,與圖3中相似,示出FPGA 145包含能夠實現與處理器110和SSD 120通訊的部分:具體地說,上游埠330、上游過濾器505、下游埠335以及下游過濾器360。如同圖3中示出的本發明概念的實施例,可從FPGA 145去除涉及PCIe事務的過濾的元件。因此,在本發明概念的第二實施例中,上游埠330和上游過濾器335可放置在第一橋接組件中,且下游埠335和下游過濾器360可放置在第二橋接元件中,每一橋接元件操控圖5的不同元件PCIe事務的過濾。或者,可使用這些橋接元件中的僅一個(其中FPGA 145操控其自身的過濾以用於從另一源通訊),或可使用單一橋接元件以操縱用於FPGA 145的所有過濾,無論PCIe事務源如何。
[第三實例實施例]
圖7示出根據本發明概念的第三實施例的圖1的FPGA 145和圖1的SSD 120的組件。在本發明概念的第三實施例中,SSD 120包含物理功能(PF)705和虛擬功能(VF)710。(應注意,本發明概念的第三實施例並不意欲暗示本發明概念的其它實施例並不包含PF和/或VF,只是本發明概念的其它實施例並不以與本發明概念的第三實施例中相同的方式使用。)PF 705表示單一資源,例如由SSD 120提供的功能。VF 710表示與PF相關聯的功能,但為“虛擬化的”:即對於一給定PF,可能存在大於一個VF。但VF 710可“暴露”FPGA 145,而不是表示SSD 120的虛擬功能:即VF 710可表示FPGA 145的功能。(VF 710仍為SSD 120的部分且不是FPGA 145的部分;但由於VF 710專用於使FPGA 145暴露,因此與VF 710相關聯的任何記憶體位址將並不與其它裝置衝突。)由於在歷數PCIe裝置時可由處理器110發現PF和VF,因此處理器110可經由VF 710間接地發現FPGA 145(即使其本身無法直接發現)。
圖8示出根據本發明概念的第三實施例的用於加速圖1的系統中的指令的記憶體使用。與本發明概念的第一實施例中相似,SSD 120可請求主機系統記憶體位址的區塊(其大於SSD 120所需要以支援NVMe命令的位址範圍)。但SSD 120實際上可請求主機系統記憶體位址的兩個不同區塊:用於PF 705的區塊805,以及用於VF 710的區塊810。下游FAR 420可經選擇作為用於PF 705的區塊805的子集;上游FAR 605可以是用於VF 710的整個區塊810。(上游FAR 605可經選擇僅作為區塊810的子集;但由於區塊810專用於由VF 710使用且除了有效地使FPGA 145暴露以外,VF 710可不具有其它目的,因此可能廢棄並不用作上游FAR 605的部分的區塊810中的任何記憶體位址。)區塊805和區塊810中的每一個具有單獨BAR,使得SSD 120能夠知曉為每一區塊分配的位址範圍。
返回到圖7,類似于本發明概念的第二實施例,上游埠330也包含過濾器:VF過濾器715。VF過濾器715可以類似於下游過濾器360的方式來過濾來自處理器110的(經由上游埠330接收到的)PCIe事務。舉例來說,SSD 120可使用邊帶匯流排365、PCIe VDM或任何其它機制來用上游FAR 605對VF過濾器715進行程式化。接著,當FPGA 145在上游埠330處從處理器110接收PCIe事務時,VF過濾器715可檢驗PCIe事務以查看其是否包含上游FAR 605中的位址。如果包含,那麼PCIe事務為加速指令,且FPGA 145可將PCIe事務路由到APM-F 340以供用於處理器,而不是將PCIe事務傳送到SSD 120。
作為替代方案,SSD 120可用VF 710的識別字對VF過濾器715進行程式化。VF過濾器715可接著檢查在上游埠330處從處理器110接收到的PCIe事務以查看其是否包含VF 710的識別字。如果PCIe事務包含VF 710的識別字,那麼FPGA 145可將PCIe事務路由到APM-F 340以供用於處理器,而不是將PCIe事務傳送到SSD 120。
在圖7中,如本發明概念的先前實施例中,示出FPGA 145包含能夠實現與處理器110和SSD 120通訊的部分:具體地說,上游埠330、VF過濾器715、下游埠335以及下游過濾器360。如同先前示出的本發明概念的實施例,可從FPGA 145去除涉及PCIe事務的過濾的元件。因此,在本發明概念的第三實施例中,上游埠330和VF過濾器715可放置在第一橋接組件中,且下游埠335和下游過濾器360可放置在第二橋接元件中,每一橋接元件操控圖7的不同元件PCIe事務的過濾。或者,可使用這些橋接元件中的僅一個(其中FPGA 145操控其自身的過濾以用於從另一源通訊),或可使用單一橋接元件以操縱用於FPGA 145的所有過濾,無論PCIe事務源如何。
[第四實例實施例]
使用VF 710來使FPGA 145暴露的一個問題為使用VF可能需要來自處理器110的主機作業系統的支援。雖然一些作業系統支援VF,但並非全部作業系統都支援VF,支援VF牽涉到其自身對於作業系統的複雜性。本發明概念的第四實施例解決使用VF的難題。
圖9示出根據本發明概念的第四實施例的圖1的FPGA 145和圖1的SSD 120的組件。與本發明概念的第三實施例對比,在本發明概念的第四實施例中,SSD 120包含兩個PF 705和PF 905。(與本發明概念的第三實施例相似,本發明概念的第四實施例並不意欲暗示本發明概念的其它實施例並不包含PF和/或VF。)PF 705繼續表示單一資源,例如由SSD 120提供的功能。另一方面,PF 905使FPGA 145暴露。同樣,由於在歷數PCIe裝置時可由處理器110發現PF,因此處理器110可經由PF 905間接地發現FPGA 145(即使其本身無法直接發現)。
圖10示出根據本發明概念的第四實施例的用於加速圖1的系統中的指令的記憶體使用。與本發明概念的第三實施例中相似,SSD 120可請求主機系統記憶體位址的兩個不同區塊:用於PF 705的區塊1005,以及用於PF905的區塊1010。下游FAR 420可經選擇作為用於PF 705的區塊1005的子集;上游FAR 605可以是用於PF 905的整個區塊1010。(同樣,上游FAR 605可經選擇僅作為區塊1010的子集;但由於區塊1010專用於由PF 905使用且除了有效地使FPGA 145暴露以外,PF 905可不具有其它目的,因此可能廢棄並不用作上游FAR 605的部分的區塊1010中的任何記憶體位址。)區塊1005和區塊1010中的每一個具有單獨BAR,使得SSD 120能夠知曉為每一區塊分配的位址範圍。
返回到圖9,類似于本發明概念的第三實施例,上游埠330也包含過濾器:PF過濾器715(PF過濾器715幾乎與圖7的VF過濾器715在操作中一致,且名稱更改更多地與用於使FPGA 145暴露的功能的類型相關,而不是因為PF過濾器715與VF過濾器715的操作不同)。PF過濾器715可以類似於下游過濾器360的方式過濾來自處理器110(經由上游埠330接收到的)的PCIe事務。舉例來說,SSD 120可使用邊帶匯流排365、PCIe VDM或任何其它機制來用上游FAR 605對PF過濾器715進行程式化。接著,當FPGA 145在上游埠330處從處理器110接收PCIe事務時,PF過濾器715可檢驗PCIe事務以查看其是否包含上游FAR 605中的位址。如果包含,那麼PCIe事務為加速指令,且FPGA 145可將PCIe事務路由到APM-F 340以供用於處理器,而不是將PCIe事務傳送到SSD 120。
作為替代方案,SSD 120可用PF 905的識別字來對PF過濾器715進行程式化。PF過濾器715可接著檢查在上游埠330處從處理器110接收到的PCIe事務,以查看其是否包含PF 905的識別字。如果PCIe事務包含PF 905的識別字,那麼FPGA 145可將PCIe事務路由到APM-F 340以供用於處理器,而不是將PCIe事務傳送到SSD 120。
在圖9中,如本發明概念的先前實施例中,示出FPGA 145包含能夠實現與處理器110和SSD 120通訊的部分:具體地說,上游埠330、PF過濾器715、下游埠335以及下游過濾器360。如同先前示出的本發明概念的實施例,可從FPGA 145去除涉及PCIe事務的過濾的元件。因此,在本發明概念的第四實施例中,上游埠330和PF過濾器715可放置在第一橋接組件中,且下游埠335和下游過濾器360可放置在第二橋接元件中,每一橋接元件操控圖9的不同元件PCIe事務的過濾。或者,可使用這些橋接元件中的僅一個(其中FPGA 145操控其自身的過濾以用於從另一源通訊),或可使用單一橋接元件以操縱用於FPGA 145的所有過濾,無論PCIe事務源如何。
[第五實例實施例]
如本發明概念的第三實施例中,本發明概念的第四實施例解決使用VF的難題。但為了使用本發明概念的第四實施例,SSD 120需要提供專用於FPGA 145的使用的PF 905。並非每一SSD(或更通常而言,儲存裝置)都具有可專用於FPGA 145的使用的可用PF。本發明概念的第五實施例提供SSD 120並不需要提供多個PF的解決方案。
圖11示出根據本發明概念的第五實施例的圖1的FPGA 145和圖1的SSD 120的組件。在圖11中,SSD 120返回到圖3和圖5中示出的結構,並不需要提供PF和/或VF。(同樣,這並不是說SSD 120可不提供PF和/或VF,只是並不要求SSD 120提供額外的PF和/或VF。)
相比于本發明概念的第一實施例到第四實施例,在本發明概念的第五實施例中,FPGA 145略有不同。替代包含如圖3、圖5、圖7以及圖9中的上游埠330和下游埠335,FPGA 145可包含端點1105和根埠1110(術語“埠”可與“根埠”互換使用)。儘管圖3、圖5、圖7以及圖9的上游埠330和下游埠335可被視為切換器(其為有效透傳裝置),端點1105和根埠1110為用於通訊的終端點,可經由PCIe歷數發現。這一事實意味著端點1105和根埠1110包含其自身PCIe配置空間,下文參看圖12論述。但由於端點1105和根埠1110為用於通訊的終端點,因此處理器110和SSD 120將其通訊分別引導到端點1105和根埠1110,而不是將通訊引導到彼此。
端點1105可包含兩個PF 1115和PF 1120(或替代地,一個PF和一個VF:重要的是端點1105包含可以區別於彼此的兩個功能)。當處理器110發送PCIe事務到端點1105時,處理器110可指定處理哪一PF。類似于上文所描述的本發明概念的第三實施例和第四實施例,端點1105可用標籤(其包含在標識PF的PCIe事務中)或用與PCIe事務相關聯的位址(同樣,下文參看圖12論述)來標識處理哪一PF。標識PF 1115的PCIe事務可被視為經指定以用於SSD 120,且可由FPGA 145經由根埠1110發送到SSD 120。標識PF 1120的PCIe事務可被視為包含加速指令,且可路由到APM-F 340。
根埠1110可包含下游過濾器360。下游過濾器360類似於圖3、圖5、圖7、圖9以及圖11的下游過濾器360操作:唯一顯著差異是下游過濾器並不基於主機系統記憶體位址過濾,而是基於FPGA記憶體位址過濾,如下文參看圖12所論述。可使用邊帶匯流排365、PCIe VDM或任何其它所需機制由SSD 120用下游FAR 410程式化下游過濾器360。
FPGA 145還可包含配置監視器1125。由於FPGA 145並不替換SSD 120而是僅提供額外功能,且由於FPGA 145插入於處理器110與SSD 120之間,因此處理器110能夠查看由SSD 120提供的功能是重要的。更具體地說,FPGA 145應播發匹配SSD 120的PCIe配置空間的性能。為這一目的,配置監視器1125可複製SSD 120的PCIe配置空間,由此為處理器110提供與SSD 120相同的PCIe配置。
圖12示出根據本發明概念的第五實施例的用於加速圖1的系統中的指令的記憶體使用。在圖12中,SSD 120並不請求主機系統記憶體位址的區塊,這是由於SSD 120不再直接與處理器110通訊。相反,SSD 120從位址映射1210請求FPGA記憶體位址的區塊1205,其包含用於根埠1110的配置空間。區塊1205可包含用於與處理器110 NVMe通訊的子集410,和下游FAR420。可由BAR來標識區塊1205。
為提供處理器110可在沒有FPGA 145的情況下與SSD 120通訊的機制,FPGA 145可從處理器110請求主機系統記憶體位址。為了如由FPGA 145的SSD 120所請求並行區塊1205,FPGA 145可請求用於PF 1115的區塊1215,所述區塊1215應至少與區塊1205一樣大(由此出現,因為SSD 120已從處理器110請求區塊1215)。圖12中將區塊1215標記為“主機-FPGA-SSD”,以反映使用區塊1215中的位址的PCIe事務是用於主機與SSD 120之間的通訊,但穿過FPGA 145。FPGA 145也可請求用於PF 1120的區塊1220,從而提供用於處理器110與APM-F 340圍繞加速指令進行通訊的機制。區塊1215和區塊1220可各自由兩個單獨BAR標識。在本發明概念的又一實施例中,有可能使用區塊1220的部分作為下游FAR 420以便於FPGA 145與SSD 120之間的通訊。
在圖11中,如本發明概念的先前實施例中,示出FPGA 145包含能夠實現與處理器110和SSD 120通訊的部分:具體地說,端點1105、PF 1115和PF 1120、根埠1110以及下游過濾器360。如同先前示出的本發明概念的實施例,可從FPGA 145去除涉及PCIe事務的過濾的元件。因此,在本發明概念的第五實施例中,端點1105以及PF 1115和PF 1120可放置在第一橋接組件中,且根埠1110和下游過濾器360可放置在第二橋接元件中,每一橋接元件操控圖11的不同元件PCIe事務的過濾。或者,可使用這些橋接元件中的僅一個(其中FPGA 145操控其自身的過濾以用於從另一源通訊),或可使用單一橋接元件以操縱用於FPGA 145的所有過濾,無論PCIe事務源如何。
[第六實例實施例]
本發明概念的第五實施例仍依賴於下游過濾器360來將(SSD 120與FPGA 145之間的)加速指令與(處理器110與SSD 120之間的)常規PCIe事務分離開。如在本發明概念的第六實施例中,在SSD 120包含第二端點的情況下,可除去下游過濾器360。
圖13示出根據本發明概念的第六實施例的圖1的FPGA 145和圖1的SSD 120的組件。在圖13中,FPGA包含兩個根埠1110和根埠1305,而非圖11的實施例中示出的僅一個根埠1110。根埠1110可用於來源於處理器110的常規PCIe事務;根埠1305可用於在SSD 120與FPGA 145之間交換的加速指令和資料。
由於加速指令使用不同根埠1110和根埠1305與來源於處理器110的常規PCIe事務自然地分離,因此並不需要圖3、圖5、圖7、圖9以及圖11的下游過濾器360。這一事實意味著SSD 120減輕了FPGA 360中程式化下游過濾器360的負擔,相似於SSD 120減輕了程式化圖5、圖7以及圖9的上游過濾器505和上游過濾器715的負擔(如圖11和圖13中的FPGA 145可基於相關PF區分常規PCIe事務與加速指令)。這類益處的偏移為SSD 120包含兩個端點305和端點1310,以分別與FPGA 145的根埠1110和根埠1305通訊。
由於本發明概念的第六實施例中SSD 120包含兩個端點305和端點1310,因此端點305和端點1310中的每一個可從FPGA 145請求其自身的記憶體位址的區塊。此外,由於根埠1110和根埠1305中的每一個包含其自身的配置空間,因此SSD 120的端點305和端點1310可從不同配置空間請求記憶體位址的區塊。圖14示出這一情形。
圖14示出根據本發明概念的第六實施例的用於加速圖1的系統中的指令的記憶體使用。在圖14中,SSD 120的端點305可從位址映射1210請求區塊1405,其包含用於根埠1110的配置空間。但由於(處理器110與SSD 120之間的)常規PCIe事務與(FPGA 145與SSD 120之間的)加速指令由FPGA 145上的不同根埠和SSD 120上的不同端點的使用而自然地分離開,因此SSD 120並不需要請求足夠大以包含下游FAR的區塊1405。因此,在沒有FPGA 145的情況下,區塊1405只需要盡可能大:即足夠大以支援處理器110與SSD 120之間的NVMe通訊。區塊1405可由BAR標識。
SSD 120的端點1310可從位址映射1410請求其自身的記憶體位址的區塊。但由於本發明概念的第六實施例中根埠1305和端點1310僅用於交換加速指令,因此整個位址映射1410可用於這類PCIe事務:並不需要端點1310來請求位址映射1410的僅一小區塊。
如本發明概念的第五實施例中,PF 1115可請求主機系統記憶體位址的區塊1215,從而管理在處理器110與SSD 120之間交換的PCIe事務;區塊1215可以至少與區塊1405一樣大。類似地,PF 1120可請求主機系統記憶體位址的區塊1220,從而管理在處理器110與FPGA 145之間交換的加速指令。區塊1215和區塊1220可各自由BAR標識。
在圖13中,如本發明概念的先前實施例中,示出FPGA 145包含能夠實現與處理器110和SSD 120通訊的部分:具體地說,端點1105、PF 1115和PF 1120以及根埠1110、根埠1305。如同先前示出的本發明概念的實施例,可從FPGA 145去除涉及PCIe事務的過濾的元件。因此,在本發明概念的第六實施例中,端點1105以及PF 1115和PF 1120可放置在第一橋接組件中,且根埠1110和根埠1305可放置在第二橋接元件中,每一橋接元件操控圖13的不同元件PCIe事務的過濾。或者,可使用這些橋接元件中的僅一個(其中FPGA 145操控其自身的過濾以用於從另一源通訊),或可使用單一橋接元件以操縱用於FPGA 145的所有過濾,無論PCIe事務源如何。
[第七實例實施例]
在本發明概念的前六個實施例中,示出FPGA 145使用單一上游埠330(在圖5、圖7以及圖9中)或單一端點1105(在圖11和圖13中)。但在本發明概念的第六實施例中,FPGA 145沒有理由像SSD 120一樣不包含多個端點。本發明概念的第七實施例和第八實施例示出FPGA 145可如何使用多個端點進行操作。
圖15示出根據本發明概念的第七實施例的圖1的FPGA 145和圖1的SSD 120的組件。本發明概念的第七實施例類似于本發明概念的第六實施例,不同之處在於FPGA 145包含兩個端點1105和端點1505。與SSD 120的端點305和端點1310可用於區分常規主機到SSD(host-to-SSD)PCIe事務與FPGA到SSD(FPGA-to-SSD)加速指令很像,FPGA 145的端點1105和端點1505可用於區分常規主機-SSD(host-SSD)PCIe事務與主機到FPGA(host-to-FPGA)加速指令。在端點1105處接收到的PCIe事務可被視為常規PCIe事務且(經由根埠1110)轉發到SSD 120,然而在端點1505處接收到的PCIe事務可被視為加速指令且轉發到APM-F 340以供用於處理。
圖16示出根據本發明概念的第七實施例的用於加速圖1的系統中的指令的記憶體使用。出於所有意圖和目的,根據本發明概念的第七實施例的記憶體使用與根據第六實施例的記憶體使用一致。FPGA 145的根埠1110和根埠1305各自提供其自身配置空間,且SSD 120的端點305可從位址映射1210請求區塊1405(如同本發明概念的第六實施例,SSD 120的端點1310可從位址映射1410請求區塊,或SSD 120的端點1310可使用整個位址映射1410以用於SSD-FPGA通訊),所述區塊1405由BAR標識。端點1105和端點1505可請求主機系統記憶體位址的區塊1215和區塊1220,從而管理在處理器110與SSD 120之間交換的PCIe事務;區塊1215可至少與區塊1405一樣大。區塊1215和區塊1220可各自由BAR標識。
在圖15中,如本發明概念的先前實施例中,示出FPGA 145包含能夠實現與處理器110和SSD 120通訊的部分:具體地說,端點1105和端點1505,以及根埠1110、根埠1305。如同先前示出的本發明概念的實施例,可從FPGA 145去除涉及PCIe事務的過濾的元件。因此,在本發明概念的第七實施例中,端點1105和端點1505可放置在第一橋接組件中,且根埠1110和根埠1305可放置在第二橋接元件中,每一橋接元件操控圖15的不同元件PCIe事務的過濾。或者,可使用這些橋接元件中的僅一個(其中FPGA 145操控其自身的過濾以用於從另一源通訊),或可使用單一橋接元件以操縱用於FPGA 145的所有過濾,無論PCIe事務源如何。
[第八實例實施例]
圖17示出根據本發明概念的第八實施例的圖1的FPGA 145和圖1的SSD 120的組件。本發明概念的第八實施例類似于本發明概念的第五實施例,不同之處在於FPGA 145包含兩個端點1105和端點1505。同樣,FPGA 145的端點1105和端點1505可用於區分常規主機-SSD PCIe事務與主機到FPGA加速指令。在FPGA 145的端點1105處接收到的PCIe事務可被視為常規PCIe事務且(經由根埠1110)轉發到SSD 120,然而在FPGA 145的端點1505處接收到的PCIe事務可被視為加速指令且轉發到APM-F 340以供用於處理。
圖18示出根據本發明概念的第八實施例的用於加速圖1的系統中的指令的記憶體使用。根據本發明概念的第八實施例的記憶體使用類似于根據本發明概念的第五實施例的記憶體使用。隨著根埠1110為FPGA 145的唯一根埠,SSD 120的端點305可從位址映射1210請求區塊1205,所述位址映射1210可包含下游FAR 420。FPGA 145的端點1105和端點1505可接著從主機系統記憶體位址請求區塊1215和區塊1220(其中端點1105請求至少與區塊1205一樣大的區塊1215),所述區塊由BAR標識。端點1105和端點1505可請求主機系統記憶體位址的區塊1215和區塊1220,從而管理在處理器110與SSD 120之間交換的PCIe事務;區塊1215可至少與區塊1405一樣大。區塊1215和區塊1220可各自由兩個單獨BAR標識。在本發明概念的又一實施例中,有可能使用區塊1220的部分作為下游FAR 420以便於FPGA 145與SSD 120之間的通訊。
在圖17中,如本發明概念的先前實施例中,示出FPGA 145包含能夠實現與處理器110和SSD 120通訊的部分:具體地說,端點1105和端點1505、根埠1110以及下游過濾器360。如同先前示出的本發明概念的實施例,可從FPGA 145去除涉及PCIe事務的過濾的元件。因此,在本發明概念的第八實施例中,端點1105和端點1505可放置在第一橋接組件中,且根埠1110和下游過濾器360可放置在第二橋接元件中,每一橋接元件操控圖17的不同元件PCIe事務的過濾。或者,可使用這些橋接元件中的僅一個(其中FPGA 145操控其自身的過濾以用於從另一源通訊),或可使用單一橋接元件以操縱用於FPGA 145的所有過濾,無論PCIe事務源如何。
如上文參考本發明概念的各種實施例所論述,描述為FPGA 145的上游介面和/或下游介面的部分的過濾功能可與FPGA 145分離開來且由另一組件操控。圖19示出根據本發明概念的實施例的可代表圖1的加速模組145操縱過濾功能的橋接元件。
在圖19中,示出兩個橋接元件1905和橋接元件1910。橋接組件1905可操縱從處理器110接收到的PCIe事務的過濾,然而橋接組件1910可操縱從SSD 120接收到的PCIe事務的過濾。取決於PCIe事務是否包含加速指令,橋接元件1905可將PCIe事務發送到FPGA 145或SSD 120。類似地,取決於PCIe事務是否包含加速指令,橋接元件1910可將PCIe事務發送到FPGA 145或處理器110。圖19中未示出橋接元件1905和橋接元件1910的特定實施方案,因為所述實施方案類似于上文示出為FPGA 145的上游介面和下游介面的部分的那些實施方案。
在本發明概念的一些實施例中,橋接元件1905和橋接元件1910都可使用。在本發明概念的其它實施例中,僅使用一個橋接元件1905或橋接元件1910,其中另一橋接元件的功能可能保留於FPGA 145中。在另外其它實施例中,橋接元件1905和橋接元件1910都可以包含在單一元件中而非作為單獨的元件。
目前已描述本發明概念的各種實施例,可描述處理器110、FPGA 145與SSD 120之間的資料流程。在本文檔的其餘部分中,所有過濾功能都歸於FPGA 145,但過濾何時可轉換到圖19的橋接組件1905和/或橋接組件1910以及如何轉換到圖19的橋接組件1905和/或橋接組件1910應為顯而易見的。圖20A到圖20B示出根據本發明概念的實施例的圖1的處理器、圖1的FPGA 145與圖1的SSD 120之間的通訊。在圖20A中,示出根據本發明概念的第一實施例(且可能本發明概念的其它實施例)的資料流程。處理器110可將PCIe事務2005發送到SSD 120。PCIe事務2005可包含專用命令2010。PCIe事務2005可(經由FPG 145)傳送到SSD 120。APM-S 315可接著產生加速指令2015,其可包含在PCIe事務2020中,SSD 120可接著將所述PCIe事務2020發送到FPGA 145。FPGA 145和SSD 120也可交換加速資料,如圖20A中所示。
在完成加速指令2015後,FPGA 145可將結果2030發送回到SSD 120,SSD 120繼而可將結果2030轉發到處理器110(示出為結果2035)。或者,FPGA 145可直接將結果2040發送到處理器110,模擬來自SSD 120的結果2035。
相反地,在圖20B(適用于本發明概念的第二實施例到第八實施例)中,處理器110可直接將加速指令2045發送到FPGA 145作為PCIe事務2005。FPGA 145和SSD 120可交換加速資料,如圖20B中所示。最後,FPGA 145可將結果2040發送回到處理器110。
圖21示出根據本發明概念的實施例的用於FPGA 145以處理PCIe事務的實例過程的流程圖。圖21提供高級視圖;後續圖提供FPGA 145的操作的更詳細實例流程圖。在圖21中,在框2105處,FPGA 145可從裝置接收PCIe事務。這類PCIe事務可以是圖20A到圖20B的PCIe事務2015或PCIe事務2045中的任一個,且裝置可以是處理器110或SSD 120。在框2110處,FPGA 145可確定PCIe事務是否包含加速指令。在框2115處,FPGA 145可測試以查看PCIe事務包含加速指令。如果包含,那麼在框2120處,加速指令可由APM-F 340處理;否則,在框2125處,可將PCIe事務傳送到另一裝置(如果PCIe事務是從處理器110接收到的,那麼可將PCIe事務傳送到SSD 120,且反過來也一樣)。應注意,由APM-F 340處理加速指令可能涉及與SSD 120通訊以接收待由加速指令處理的應用資料。
圖22A到圖22C示出根據本發明概念的實施例的用於FPGA 145以處理PCIe事務的更詳細實例過程的流程圖。在圖22A中,在框2203處,FPGA 145可從SSD 120接收下游FAR 420。在框2206處,FPGA 145可使下游FAR 420與下游過濾器360相關聯。應注意,如果SSD 120經由邊帶匯流排365將下游FAR 420程式化到下游過濾器360中,或可能需要FPGA 145採取有效步驟(例如在SSD 120將PCIe VDM發送到包含下游FAR 420的FPGA 145時),那麼這類關聯可能自動地發生。另外應注意,在本發明概念的一些實施例中,可省略框2203和框2206,如由虛線2209所示。在本發明概念的一些實施例中,下游FAR 420可由FPGA 145本身來提供。
在框2212處,FPGA 145可從SSD 120接收上游FAR 605,且在框2215處,FPGA 145可使上游FAR 605與上游埠330相關聯。應注意,如果SSD 120經由邊帶匯流排365將上游FAR 605程式化到上游過濾器505中,或可能需要FPGA 145採取有效步驟(例如在SSD 120將PCIe VDM發送到包含上游FAR 605的FPGA 145時),那麼這類關聯可能自動地發生。在本發明概念的一些實施例中,上游FAR 605可由FPGA 145本身來提供。
或者,在框2218處,FPGA 145可從SSD 120接收用於使FPGA 145暴露的PF或VF的識別字,且在框2221處,FPGA 145可使PF/VF識別字與上游過濾器330相關聯。同樣,如果SSD 120經由邊帶匯流排365將PF/VF識別字程式化到上游過濾器505中,或可能需要FPGA 145採取有效步驟(例如在SSD 120將PCIe VDM發送到包含PF/VF識別字的FPGA 145時),那麼這類關聯可能自動地發生。
應注意,在本發明概念的一些實施例中,可省略框2212、框2215、框2218以及框2221,如由虛線2224所示。
在框2227處,配置監視器1125可確定SSD 120的端點305的配置,且在框2230處,配置模組1125可複製FPGA 145的端點1105處的所述配置,由此向處理器110呈現與SSD 120相同的功能。在本發明概念的一些實施例中,可省略框2212、框2215、框2218以及框2221,如由虛線2233所示。
一旦FPGA 145已經適當地配置,那麼在框2236(圖22B)處,FPGA 145可(取決於本發明概念的實施例而經由上游埠330或端點1105)從處理器110接收圖20B的PCIe事務2005。在框2239處,FPGA 145可確定圖20B的PCIe事務2005是否包含圖20B的加速指令2045。如果包含,那麼在框2242處,APM-F 340可處理圖20B的加速指令2045,且在框2245處,APM-F 340可將圖20B的結果2040發送到處理器110。否則,如果圖20B的PCIe事務2005不包含圖20B的加速指令2045,那麼在框2248處,FPGA 145可(取決於本發明概念的實施例而經由下游埠335或根埠1110)將圖20B的PCIe事務2005傳送到SSD 120。
在框2251(圖22C)處,FPGA 145可(取決於本發明概念的實施例而經由下游埠335或根埠1110)接收圖20A的PCIe事務2020。在框2254處,FPGA 145可確定圖20A的PCIe事務2020是否包含圖20A的加速指令2015。如果圖20A的PCIe事務2020包含圖20A的加速指令2015,那麼在框2257處,APM-F 340可處理圖20A的加速指令2015,且在框2260處,APM-F 340可將圖20A的結果2040發送到SSD 120。否則,如果圖20A的PCIe事務2020不包含加速指令2015,那麼在框2263處,FPGA 145可(取決於本發明概念的實施例而經由上游埠330或端點1105)將圖20A的PCIe事務2020轉發到處理器110。
圖23A到圖23B示出根據本發明概念的實施例的用於FPGA 145以確定來自處理器110的圖20B的PCIe事務2005是否包含圖20B的加速指令2045的實例過程的流程圖。圖23A到圖23B示出可取決於本發明概念的實施例而獨立地或共同地使用的三個可能測試。在使用超過一個測試的本發明概念的實施例中,如果滿足任何獨立測試,那麼可確定圖20B的PCIe事務2005包含圖20B的加速指令2045。在圖23A中,在框2305處,FPGA 145可確定與圖20B的PCIe事務2005相關聯的位址是否包含上游FAR 605中的位址。在框2310處,FPGA 145可確定圖20B的PCIe事務2005是否包含與上游過濾器715相關聯的PF或VF的識別字。在框2315處,FPGA 145可確定是否在專用於加速指令的埠(例如端點1505)處接收到圖20B的PCIe事務2005。如果這些測試的結果中的任一個指示圖20B的PCIe事務2005包含圖20B的加速指令2045,那麼在框2320(圖23B)處,FPGA 145知曉圖20B的PCIe事務2005包含圖20B的加速指令2045;否則,在框2325處,FPGA 145知曉圖20B的PCIe事務2005不包含圖20B的加速指令2045。
圖24示出根據本發明概念的實施例的用於FPGA 145以確定來自SSD 120的圖20A的PCIe事務2020是否包含圖20A的加速指令2015的實例過程的流程圖。圖24示出可取決於本發明概念的實施例而獨立地或共同地使用的兩個可能測試。在使用超過一個測試的本發明概念的實施例中,如果滿足任何獨立測試,那麼可確定圖20A的PCIe事務2020包含圖20A的加速指令2015。在圖24中,在框2405處,FPGA 145可確定與圖20A的PCIe事務2020相關聯的位址是否包含下游FAR 420中的位址。在框2410處,FPGA可確定是否在專用於加速指令的埠(例如根埠1305)處接收到圖20A的PCIe事務2020。如果這些測試結果中的任一個指示圖20A的PCIe事務2020包含圖20A的加速指令2015,那麼在框2415處,FPGA 145知曉圖20A的PCIe事務2020包含圖20A的加速指令2015;否則,在框2420處,FPGA 145知曉圖20A的PCIe事務2020不包含圖20A的加速指令2015。
圖25示出根據本發明概念的實施例的用於圖19的第一橋接元件1905以確定來自圖1的處理器110的PCIe事務是否包含加速指令的實例過程的流程圖。在圖25中,在框2505處,第一橋接組件1905可從圖1的處理器110接收PCIe事務。在框2510處,第一橋接元件1905可確定PCIe事務是否為加速指令。如果是,那麼在框2515處,第一橋接元件1905可將PCIe事務/加速指令轉發到圖1的FPGA 145;否則,在框2520處,第一橋接元件1905可將PCIe事務轉發到圖1的SSD 120。
圖26示出根據本發明概念的實施例的用於圖19的第二橋接元件1910以確定來自圖1的儲存裝置120的PCIe事務是否包含加速指令的實例過程的流程圖。在圖26中,在框2605處,第二橋接元件1905可從圖1的SSD 120接收PCIe事務。在框2610處,第二橋接元件1905可確定PCIe事務是否為加速指令。如果是,那麼在框2615處,第二橋接元件1905可將PCIe事務/加速指令轉發到圖1的FPGA 145;否則,在框2620處,第二橋接元件1905可將PCIe事務轉發到圖1的處理器110。
圖27A到圖27C示出根據本發明概念的實施例的用於SSD 120以處理PCIe事務的實例過程的流程圖。在圖27A中,在框2705處,SSD 120可請求記憶體位址的區塊。應注意,SSD 120可如本發明概念的第一實施例到第四實施例中從主機系統記憶體或如本發明概念的第五實施例到第八實施例中從FPGA 145的根埠的配置空間請求記憶體位址的區塊。在框2710處,SSD 120可選擇記憶體位址的區塊的子集以用作下游FAR 420,且在框2715處,SSD 120可使用邊帶匯流排365、PCIe VDM或任何其它所需機制用下游FAR 420對下游過濾器360進行程式化。應注意,在本發明概念的一些實施例中,可省略框2705到框2715,如由虛線2720(虛線2720也跳過圖27B中示出的一些框)所示。
在框2725(圖27B)處,SSD 120可選擇記憶體位址的區塊的子集以用作上游FAR 605,且在框2730處,SSD 120可使用邊帶匯流排365、PCIe VDM或任何其它所需機制用下游FAR 420對下游過濾器360進行程式化。或者,在框2735處,SSD 120可使用PF 705來暴露其自身的性能。接著,在框2740處,SSD 120可使用PF 905或VF 710來暴露FPGA 145,且在框2745處,SSD 120可使用邊帶匯流排365、PCIe VDM或任何其它所需機制用PF 905或VF 710的識別字對下游過濾器360進行程式化。應注意,在本發明概念的一些實施例中,可省略框2725到框2745,如由虛線2750所示。
在框2755處,SSD 120可從FPGA 145接收PCIe事務。這類PCIe事務可以是圖20A的PCIe事務2005(由FPGA 145從處理器110轉發),或其可以是圖20A到圖20B的PCIe事務2025。無論PCIe事務的源如何,在框2760(圖27C)處,HIL 310可確定PCIe事務是否包含加速指令。如果包含,那麼在框2765處,HIL 310可將PCIe事務(或未封裝的加速指令)轉發到APM-S 315以用於處理。APM-S 315可產生對於加速指令的響應,所述加速指令可以是圖20A的加速指令2015(如果PCIe事務來源於處理器110),或其可以是加速資料2025(如果PCIe事務來源於FPGA 145的APM-F 340)。無論哪種方式,在框2770處,APM-S 315可將所述回應發送到FPGA 145。
另一方面,如果PCIe事務並不是加速指令,那麼在框2775處,SSD 120可確PCIe事務定是否為圖20A的結果2030。如果是,那麼在框2780處,SSD 120可將圖20A的結果2035(經由SSD 120的端點305和FPGA 145)轉發到處理器110。如果PCIe事務並不是圖20A的結果2030,那麼在框2785處,SSD 120可正常處理儲存在SSD 120上的資料上的PCIe事務。
圖28A到圖28B示出根據本發明概念的實施例的用於SSD 120以確定來自FPGA 145的PCIe事務是否包含加速指令的實例過程的流程圖。
圖28A到圖28B示出可取決於本發明概念的實施例而獨立地或共同地使用的三個可能測試。在使用超過一個測試的本發明概念的實施例中,如果滿足任何獨立測試,那麼可確定PCIe事務包含加速指令。在圖28A中,在框2805處,SSD 120可確定PCIe事務是否包含來自處理器110的專用命令(其指示SSD 120應將加速指令發起到FPGA 145)。在框2810處,SSD 120可確定PCIe事務是否來源於APM-F 340,這可在APM-F 340正請求圖20A到圖20B的加速資料2025時或在APM-F 340正將圖20A的結果2030發送到SSD 120時發生。可以任何所需方式執行框2810的測試:例如,PCIe事務可包含標籤以指示PCIe事務為加速指令,或PCIe事務可與下游FAR 420中的位址相關聯。在框2815處,SSD 120可確定是否在專用於加速指令的埠(例如端點1310)處接收到PCIe事務。如果這些測試的結果中的任一個指示PCIe事務包含加速指令,那麼在框2820(圖28B)處,SSD 120知曉PCIe事務包含加速指令;否則,在框2825處,SSD 120知曉PCIe事務不包含加速指令。
在圖21到圖28B中,示出本發明概念的一些實施例。但本領域技術人員將認識到,通過改變區塊的次序、通過省略區塊或通過包含未在附圖中示出的鏈路,本發明概念的其它實施例也是可能的。另外,雖然將特定操作描述為由特定元件執行,但是本發明概念的實施例可支援執行所描述操作的其它元件。無論是否明確地描述,流程圖的所有這類變化都被視為本發明概念的實施例。
本發明概念的實施例提供優於現有技術的技術優勢。通過將圖1的加速模組145引入到圖1的機器105,圖1的處理器110可分擔可由圖1的加速模組145執行的工作。由於這類命令通常涉及處理隨後可能被丟棄的大量資料,因此分擔圖1的加速模組145的工作避免將資料從圖1的儲存裝置120載入到圖1的記憶體140中所需的延遲,並且避免可能需要釋放圖1的記憶體140內的一些空間。
本發明概念的各種實施例也支援使用圖1的儲存裝置120的不同變型。可使用單一埠和雙重埠儲存裝置,以及支援額外PF和/或VF以暴露圖1的加速模組145的儲存裝置。
本發明概念的各種實施例進一步支援使用提供不同性能的處理器。如果圖1的機器105的作業系統支援VF,那麼VF可用於暴露圖1的加速模組145;否則,可使用PF。如果圖1的處理器110能夠直接與圖1的加速模組145通訊,那麼可使用支援這類通訊的本發明概念的實施例;否則,圖1的處理器110可將所有加速指令發送到圖1的儲存裝置120,將其留給圖1的儲存裝置120以請求圖1的加速模組145執行加速指令。
以下論述意欲提供其中可以實施本發明概念的某些方面的一個或多個合適機器的簡要一般描述。一個或多個機器可以至少部分地通過從例如鍵盤、滑鼠等常規輸入裝置的輸入,以及通過從另一機器接收的指令、與虛擬實境(virtual reality, VR)環境的交互、生物計量回饋或其它輸入訊號來控制。如本文中所使用,術語“機器”意欲廣泛地涵蓋單個機器、虛擬機器,或以通訊方式耦合的機器、虛擬機器或一起操作的裝置的系統。示範性機器包含計算裝置,例如個人電腦、工作站、伺服器、可攜式電腦、掌上型裝置、電話、平板電腦等,以及交通裝置,例如私人或公共交通工具,例如汽車、火車、計程車等。
一個或多個機器可以包含嵌入式控制器,例如可程式化或不可程式化邏輯裝置或陣列、專用積體電路(Application Specific Integrated Circuit,ASIC)、嵌入式電腦、智慧卡等。一個或多個機器可以利用例如通過網路介面、數據機或其它通訊耦合與一個或多個遠端機器的一個或多個連接。機器可以借助於物理和/或邏輯網路,例如企業內部網、網際網路、局域網、廣域網路等互連。本領域的技術人員將理解,網路通訊可以利用各種有線和/或無線短程或遠端載波和協議,包含射頻(radio frequency,RF)、衛星、微波、電氣電子工程師學會(Institute of Electrical and Electronics Engineer,IEEE)802.11、藍牙® (Bluetooth® )、光學、紅外線、電纜、鐳射等。
可以參考或結合包含功能、過程、資料結構、應用程式等的相關聯資料描述本發明概念的實施例,所述相關聯資料在通過機器存取時引起機器執行任務或定義抽象資料類型或低級硬體環境。相關聯資料可以儲存在例如揮發性記憶體和/或非揮發性記憶體,例如RAM、ROM等中,或其它儲存裝置以及其相關聯儲存媒體中,包含硬碟驅動器、軟碟、光學儲存裝置、磁帶、快閃記憶體記憶體、儲存棒、數位視訊光碟、生物儲存裝置等。相關聯資料可以採用包、串列資料、並行資料、傳播訊號等形式在包含物理網路和/或邏輯網路的傳輸環境上傳送,並且可以用壓縮格式或加密格式使用。相關聯資料可以用於分散式環境中,並且本地地和/或遠端地儲存用於機器存取。
本發明概念的實施例可以包含有形的非暫時性機器可讀媒體,包括可由一個或多個處理器執行的指令,所述指令包括用於執行如本文所描述的發明性概念的元件的指令。
上文所描述的方法的各種操作可由能夠執行所述操作的任何合適構件執行,所述合適構件例如各種硬體和/或軟體元件、電路和/或模組。軟體可包括用於實施邏輯功能的可執行指令的有序的清單,且可以任何供使用指令執行系統、設備或裝置或與指令執行系統、設備或裝置結合的“處理器可讀媒體”實施,所述指令執行系統、設備或裝置例如單核處理器或多核處理器或含處理器的系統。
結合本文中所揭露的實施例而描述的方法或演算法以及函數的步驟可直接以硬體、由處理器執行的軟體模組或所述兩個的組合實施。如果實施於軟體中,那麼可將功能作為一個或多個指令或代碼而儲存在有形的非暫時性電腦可讀媒體上或經由所述有形的非暫時性電腦可讀媒體進行傳輸。軟體模組可駐留在隨機存取記憶體(RAM)、快閃記憶體記憶體、唯讀記憶體(ROM)、電可程式化ROM(Electrically Programmable ROM,EPROM)、電可擦除可程式化ROM(Electrically Erasable Programmable ROM,EEPROM)、暫存器、硬碟、可裝卸磁片、CD ROM或本領域中已知的任何其它形式的儲存媒體中。
在參考所說明實施例描述和說明本發明概念的原理之後,將認識到,所說明實施例的佈置和細節可以在不脫離此原理的情況下進行修改,並且可以按任何所需方式組合。而且,儘管前述論述集中於具體實施例,但是預期其它配置。具體地說,即使本文使用例如“根據本發明概念的實施例”等的表達,但是這些詞語一般表示參考實施例可能性,且並不意欲將本發明概念限制到具體實施例配置。如本文中所使用,這些術語可以參考組合到其它實施例中的相同或不同實施例。
前述說明性實施例不應被解釋為限制其發明性概念。雖然已經描述幾個實施例,但本領域的技術人員將容易瞭解,在實質上不脫離本揭露的新穎教示和優勢的情況下,對這些實施例的許多修改是可能的。因此,所有此類修改意欲包含在如權利要求書中定義的本發明概念的範圍內。
本發明概念的實施例可以擴展到以下陳述,而不具有限制性:
陳述1. 本發明概念的實施例包含一種系統,所述系統包括:
處理器,所述處理器運行應用程式;
記憶體,所述記憶體儲存由在處理器上運行的應用程式使用的資料;
上游介面,用於與處理器通訊;
下游介面,用於與儲存裝置通訊;
加速模組,所述加速模組使用硬體來實施且包含加速平臺管理器(APM-F)以執行加速指令;以及
儲存裝置,包含:
儲存裝置的端點,用於與加速模組通訊;
控制器,用以管理儲存裝置的操作;
儲存器,用以儲存應用程式的應用資料;以及
儲存裝置加速平臺管理器(APM-S),用以輔助APM-F執行加速指令,
其中處理器、加速模組以及儲存裝置經由周邊元件連接交換(PCIe)匯流排通訊,且
其中加速模組在不將應用資料載入到記憶體中的情況下支援針對應用程式對儲存裝置上的應用資料執行加速指令。
陳述2.本發明概念的實施例包含根據陳述1所述的系統,所述系統進一步包括:
第一橋接元件,包含上游介面,所述第一橋接元件橋接處理器與加速模組之間的通訊;以及
第二橋接元件,包含下游介面,所述第二橋接元件橋接加速模組與儲存裝置之間的通訊。
陳述3. 本發明概念的實施例包含根據陳述1所述的系統,其中:
使用現場可程式化閘陣列(FPGA)來實施加速模組;
加速模組包含上游介面和下游介面;以及
儲存裝置包含固態驅動器(SSD)。
陳述4. 本發明概念的實施例包含根據陳述3所述的系統,其中APM-F和APM-S使用下游介面和SSD的端點進行通訊,涉及待與加速指令一起使用的應用資料。
陳述5. 本發明概念的實施例包含根據陳述3所述的系統,其中APM-F和APM-S使用消息進行通訊。
陳述6. 本發明概念的實施例包含根據陳述3所述的系統,其中處理器可將PCIe事務發送到SSD,PCIe事務包含使用非揮發性儲存快速(NVMe)協定編碼命令的事務層包(TLP)。
陳述7. 本發明概念的實施例包含根據陳述3所述的系統,其中FPGA進一步包含:
加速引擎;以及
執行時間調度程式,用以使用加速引擎調度加速指令。
陳述8. 本發明概念的實施例包含根據陳述3所述的系統,其中SSD包含FPGA。
陳述9. 本發明概念的實施例包含根據陳述3所述的系統,其中:
上游介面包含上游埠;
下游介面包含下游埠;
FPGA經操作以將在上游埠處從處理器接收到的第一PCIe事務轉發到SSD;
FPGA包含與下游埠相關聯的下游過濾器,所述下游過濾器經操作以攔截從SSD接收到的加速指令且將所述加速指令傳送到APM-F,加速指令與下游過濾器位址範圍(FAR)相關聯;且
FPGA經操作以將並不與下游FAR相關聯的第二PCIe事務轉發到處理器,所述下游FAR是在下游埠處從SSD接收到的。
陳述10. 本發明概念的實施例包含根據陳述9所述的系統,其中加速指令由APM-S產生。
陳述11. 本發明概念的實施例包含根據陳述10所述的系統,其中SSD進一步包含主機介面邏輯(HIL)以攔截從處理器接收到的專用命令(所述專用命令包含加速指令),且將所述專用命令轉發到APM-S以觸發APM-S來產生加速指令。
陳述12. 本發明概念的實施例包含根據陳述11所述的系統,其中專用命令來源於在處理器上運行的加速服務管理器(ASM)。
陳述13. 本發明概念的實施例包含根據陳述9所述的系統,其中:
SSD經操作以從處理器請求主機系統位址的區塊;以及
控制器經操作以選擇主機系統位址的區塊的子集作為下游FAR。
陳述14. 本發明概念的實施例包含根據陳述13所述的系統,其中控制器經操作以用下游FAR對下游過濾器進行程式化。
陳述15. 本發明概念的實施例包含根據陳述14所述的系統,其中控制器經操作以使用邊帶匯流排來用下游FAR對下游過濾器進行程式化。
陳述16. 本發明概念的實施例包含根據陳述15所述的系統,其中邊帶匯流排來自包含互積體電路(I2 C)匯流排和系統管理匯流排(SMBus)的集合。
陳述17. 本發明概念的實施例包含根據陳述14所述的系統,其中控制器經操作以使用PCIe供應商定義消息(VDM)來用下游FAR對下游過濾器進行程式化。
陳述18. 本發明概念的實施例包含根據陳述9所述的系統,其中:
APM-F經操作以經由下游埠和SSD的端點將結果發送到APM-S;以及
控制器經操作以經由SSD的端點將結果轉發到處理器。
陳述19. 本發明概念的實施例包含根據陳述9所述的系統,其中APM-F經操作以經由上游埠將結果發送到處理器。
陳述20. 本發明概念的實施例包含根據陳述9所述的系統,其中:
FPGA進一步包含與上游埠相關聯的上游過濾器,所述上游過濾器經操作以攔截從處理器接收到的第二加速指令且將所述第二加速指令傳送到APM-F,所述第二加速指令與上游FAR相關聯;以及
FPGA經操作以將並不與上游FAR相關聯的第三PCIe事務轉發到SSD,所述上游FAR是在上游埠處從處理器接收到的。
陳述21. 本發明概念的實施例包含根據陳述20所述的系統,其中第二加速指令來源於在處理器上運行的ASM。
陳述22. 本發明概念的實施例包含根據陳述20所述的系統,其中:
SSD經操作以從處理器請求主機系統位址的區塊;以及
控制器經操作以選擇主機系統位址的區塊的第一子集作為下游FAR,且選擇主機系統位址的區塊的第二子集作為上游FAR。
陳述23. 本發明概念的實施例包含根據陳述22所述的系統,其中主機系統位址的區塊包含可由在處理器上運行的ASM存取的專用暫存器,所述專用暫存器標識上游FAR。
陳述24. 本發明概念的實施例包含根據陳述22所述的系統,其中控制器經操作以用下游FAR對下游過濾器進行程式化且用上游FAR對上游過濾器進行程式化。
陳述25. 本發明概念的實施例包含根據陳述24所述的系統,其中控制器經操作以使用邊帶匯流排來用下游FAR對下游過濾器進行程式化且用上游FAR對上游過濾器進行程式化。
陳述26. 本發明概念的實施例包含根據陳述25所述的系統,其中邊帶匯流排來自包含I2 C匯流排和SMBus的集合。
陳述27. 本發明概念的實施例包含根據陳述24所述的系統,其中控制器經操作以使用PCIe VDM來用下游FAR對下游過濾器進行程式化且用上游FAR對上游過濾器進行程式化。
陳述28. 本發明概念的實施例包含根據陳述20所述的系統,其中:
APM-F經操作以經由下游埠和SSD的端點將結果發送到APM-S;以及
控制器經操作以經由SSD的端點將結果轉發到處理器。
陳述29. 本發明概念的實施例包含根據陳述20所述的系統,其中APM-F經操作以經由上游埠將結果發送到處理器。
陳述30. 本發明概念的實施例包含根據陳述9所述的系統,其中:
SSD包含物理功能(PF)和虛擬功能(VF),所述PF經操作以暴露SSD且所述VF經操作以暴露FPGA;
FPGA進一步包含與上游埠相關聯的上游過濾器,所述上游過濾器經操作以攔截從處理器接收到的第二加速指令且將所述第二加速指令傳送到APM-F;以及
FPGA經操作以將並不由上游過濾器攔截的第三PCIe事務轉發到SSD,所述上游過濾器是在上游埠處從處理器接收到的。
陳述31. 本發明概念的實施例包含根據陳述30所述的系統,其中第二加速指令來源於在處理器上運行的ASM。
陳述32. 本發明概念的實施例包含根據陳述30所述的系統,其中:
PF經操作以從處理器請求主機系統位址的第一區塊;
控制器經操作以選擇主機系統位址的區塊的第一子集作為下游FAR。
陳述33. 本發明概念的實施例包含根據陳述32所述的系統,其中控制器經操作以用下游FAR對下游過濾器進行程式化。
陳述34. 本發明概念的實施例包含根據陳述33所述的系統,其中控制器經操作以使用邊帶匯流排來用下游FAR對下游過濾器進行程式化。
陳述35. 本發明概念的實施例包含根據陳述34所述的系統,其中邊帶匯流排來自包含I2 C匯流排和SMBus的集合。
陳述36. 本發明概念的實施例包含根據陳述33所述的系統,其中控制器經操作以使用PCIe VDM來用下游FAR對下游過濾器進行程式化。
陳述37. 本發明概念的實施例包含根據陳述30所述的系統,其中:
第二加速指令與上游FAR相關聯;以及
上游過濾器經操作以攔截與上游FAR相關聯的第二加速指令。
陳述38. 本發明概念的實施例包含根據陳述37所述的系統,其中VF經操作以從處理器請求主機系統位址的第二區塊作為上游FAR。
陳述39. 本發明概念的實施例包含根據陳述38所述的系統,其中控制器經操作以用上游FAR對上游過濾器進行程式化。
陳述40. 本發明概念的實施例包含根據陳述39所述的系統,其中控制器經操作以使用邊帶匯流排來用上游FAR對上游過濾器進行程式化。
陳述41. 本發明概念的實施例包含根據陳述40所述的系統,其中邊帶匯流排來自包含I2 C匯流排和SMBus的集合。
陳述42. 本發明概念的實施例包含根據陳述39所述的系統,其中控制器經操作以使用PCIe VDM來用上游FAR對上游過濾器進行程式化。
陳述43. 本發明概念的實施例包含根據陳述30所述的系統,其中:
第二加速指令包含VF的識別字;以及
上游過濾器經操作以攔截與VF的識別字相關聯的第二加速指令。
陳述44. 本發明概念的實施例包含根據陳述43所述的系統,其中控制器經操作以用VF的識別字對上游過濾器進行程式化。
陳述45. 本發明概念的實施例包含根據陳述44所述的系統,其中控制器經操作以使用邊帶匯流排來用VF的識別字對上游過濾器進行程式化。
陳述46. 本發明概念的實施例包含根據陳述45所述的系統,其中邊帶匯流排來自包含I2 C匯流排和SMBus的集合。
陳述47. 本發明概念的實施例包含根據陳述44所述的系統,其中控制器經操作以使用PCIe VDM來用VF的識別字對上游過濾器進行程式化。
陳述48. 本發明概念的實施例包含根據陳述30所述的系統,其中:
APM-F經操作以經由下游埠和SSD的端點將結果發送到APM-S;以及
控制器經操作以經由SSD的端點將結果轉發到處理器。
陳述49. 本發明概念的實施例包含根據陳述30所述的系統,其中APM-F經操作以經由上游埠將結果發送到處理器。
陳述50. 本發明概念的實施例包含根據陳述9所述的系統,其中:
SSD包含第一PF和第二PF,所述第一PF經操作以暴露SSD且所述第二PF經操作以暴露FPGA;
FPGA進一步包含與上游埠相關聯的上游過濾器,所述上游過濾器經操作以攔截從處理器接收到的第二加速指令且將所述第二加速指令傳送到APM-F;以及
FPGA經操作以將並不由上游過濾器攔截的第三PCIe事務轉發到SSD,所述上游過濾器是在上游埠處從處理器接收到的。
陳述51. 本發明概念的實施例包含根據陳述50所述的系統,其中第二加速指令來源於在處理器上運行的ASM。
陳述52. 本發明概念的實施例包含根據陳述50所述的系統,其中:
第一PF經操作以從處理器請求主機系統位址的第一區塊;
控制器經操作以選擇主機系統位址的區塊的第一子集作為下游FAR。
陳述53. 本發明概念的實施例包含根據陳述52所述的系統,其中控制器經操作以用下游FAR對下游過濾器進行程式化。
陳述54. 本發明概念的實施例包含根據陳述53所述的系統,其中控制器經操作以使用邊帶匯流排來用下游FAR對下游過濾器進行程式化。
陳述55. 本發明概念的實施例包含根據陳述54所述的系統,其中邊帶匯流排來自包含I2 C匯流排和SMBus的集合。
陳述56. 本發明概念的實施例包含根據陳述53所述的系統,其中控制器經操作以使用PCIe VDM來用下游FAR對下游過濾器進行程式化。
陳述57. 本發明概念的實施例包含根據陳述50所述的系統,其中:
第二加速指令與上游FAR相關聯;以及
上游過濾器經操作以攔截與上游FAR相關聯的第二加速指令。
陳述58. 本發明概念的實施例包含根據陳述57所述的系統,其中第二PF經操作以從處理器請求主機系統位址的第二區塊作為上游FAR。
陳述59. 本發明概念的實施例包含根據陳述58所述的系統,其中控制器經操作以用上游FAR對上游過濾器進行程式化。
陳述60. 本發明概念的實施例包含根據陳述59所述的系統,其中控制器經操作以使用邊帶匯流排來用上游FAR對上游過濾器進行程式化。
陳述61. 本發明概念的實施例包含根據陳述60所述的系統,其中邊帶匯流排來自包含I2 C匯流排和SMBus的集合。
陳述62. 本發明概念的實施例包含根據陳述59所述的系統,其中控制器經操作以使用PCIe VDM來用上游FAR對上游過濾器進行程式化。
陳述63. 本發明概念的實施例包含根據陳述50所述的系統,其中:
第二加速指令包含第二PF的識別字;以及
上游過濾器經操作以攔截與第二PF的識別字相關聯的第二加速指令。
陳述64. 本發明概念的實施例包含根據陳述63所述的系統,其中控制器經操作以用第二PF的識別字對上游過濾器進行程式化。
陳述65. 本發明概念的實施例包含根據陳述64所述的系統,其中控制器經操作以使用邊帶匯流排來用第二PF的識別字對上游過濾器進行程式化。
陳述66. 本發明概念的實施例包含根據陳述65所述的系統,其中邊帶匯流排來自包含I2 C匯流排和SMBus的集合。
陳述67. 本發明概念的實施例包含根據陳述64所述的系統,其中控制器經操作以使用PCIe VDM來用第二PF的識別字對上游過濾器進行程式化。
陳述68. 本發明概念的實施例包含根據陳述50所述的系統,其中:
APM-F經操作以經由下游埠和SSD的端點將結果發送到APM-S;以及
控制器經操作以經由SSD的端點將結果轉發到處理器。
陳述69. 本發明概念的實施例包含根據陳述50所述的系統,其中APM-F經操作以經由上游埠將結果發送到處理器。
陳述70. 本發明概念的實施例包含根據陳述3所述的系統,其中:
上游介面包含FPGA端點;
下游介面包含FPGA根埠,所述FPGA根埠支援配置空間;
FPGA包含第一PF、第二PF以及與相FPGA根埠關聯的下游過濾器,所述下游過濾器經操作以攔截從SSD接收到的第一加速指令且將第一加速指令傳送到APM-F,所述第一加速指令與下游FAR相關聯;
FPGA經操作以從處理器請求主機系統位址的第一區塊以供用於第一PF,且經操作以從處理器請求主機系統位址的第二區塊以供用於第二PF;以及
FPGA經操作以將從處理器接收到的第一PCIe事務轉發到SSD,且經操作以將從處理器接收到的第二加速指令轉發到APM-F,所述第一PCIe事務與第一PF的第一識別字相關聯且所述第二加速指令與第二PF的第二識別字相關聯。
陳述71. 本發明概念的實施例包含根據陳述70所述的系統,其中:
SSD經操作以從FPGA請求FPGA位址的區塊,所述FPGA位址的區塊包含下游FAR;
主機系統位址的第二區塊至少與FPGA位址的區塊一樣大;以及
控制器經操作以選擇FPGA位址的區塊的子集作為下游FAR。
陳述72. 本發明概念的實施例包含根據陳述71所述的系統,其中控制器經操作以用下游FAR對下游過濾器進行程式化。
陳述73. 本發明概念的實施例包含根據陳述72所述的系統,其中控制器經操作以使用邊帶匯流排來用下游FAR對下游過濾器進行程式化。
陳述74. 本發明概念的實施例包含根據陳述73所述的系統,其中邊帶匯流排來自包含I2 C匯流排和SMBus的集合。
陳述75. 本發明概念的實施例包含根據陳述72所述的系統,其中控制器經操作以使用PCIe VDM來用下游FAR對下游過濾器進行程式化。
陳述76. 本發明概念的實施例包含根據陳述70所述的系統,其中APM-F經操作以經由FPGA端點將結果發送到處理器。
陳述77. 本發明概念的實施例包含根據陳述70所述的系統,其中FPGA進一步包含配置監視器以將SSD的端點的性能複製到FPGA端點。
陳述78. 本發明概念的實施例包含根據陳述3所述的系統,其中:
上游介面包含FPGA端點;
下游介面包含第一FPGA根埠和第二FPGA根埠,所述第一FPGA根埠支援第一配置空間,所述第二FPGA根埠支援第二配置空間;
SSD的端點與第一FPGA根埠相關聯;
SSD進一步包含與第二FPGA根埠相關聯的SSD的第二端點;
FPGA包含第一PF和第二PF;
FPGA經操作以從處理器請求主機系統位址的第一區塊以供用於第一PF,且經操作以從處理器請求主機系統位址的第二區塊以供用於第二PF;以及
FPGA經操作以:
經由第一FPGA根埠和SSD的端點將從處理器接收到的第一PCIe事務轉發到SSD,所述第一PCIe事務與第一PF的第一識別字相關聯;
將從處理器接收到的第二加速指令轉發到APM-F,所述第二加速指令與第二PF的第二識別字相關聯;
將在第一FPGA根埠處從SSD接收到的第二PCIe事務轉發到處理器;以及
將在第二FPGA根埠處從SSD接收到的第一加速指令轉發到APM-F。
陳述79. 本發明概念的實施例包含根據陳述78所述的系統,其中第二加速指令由APM-S產生。
陳述80. 本發明概念的實施例包含根據陳述78所述的系統,其中APM-F經操作以經由FPGA端點將結果發送到處理器。
陳述81. 本發明概念的實施例包含根據陳述78所述的系統,其中FPGA進一步包含配置監視器以將SSD的端點的性能複製到FPGA端點。
陳述82. 本發明概念的實施例包含根據陳述78所述的系統,其中:
上游介面進一步包含第二FPGA端點;以及
FPGA進一步經操作以:
經由第一FPGA根埠和SSD的端點將在FPGA端點處從處理器接收到的第一PCIe事務轉發到SSD;以及
將在第二FPGA端點處從處理器接收到的第二加速指令轉發到APM-F。
陳述83. 本發明概念的實施例包含根據陳述82所述的系統,其中第二加速指令由APM-S產生。
陳述84. 本發明概念的實施例包含根據陳述82所述的系統,其中APM-F經操作以經由FPGA端點將結果發送到處理器。
陳述85. 本發明概念的實施例包含根據陳述82所述的系統,其中FPGA進一步包含配置監視器以將SSD的端點的性能複製到第一FPGA端點。
陳述86. 本發明概念的實施例包含根據陳述3所述的系統,其中:
上游介面包含第一FPGA端點和第二FPGA端點;
下游介面包含FPGA根埠,所述FPGA根埠支援配置空間;
FPGA包含與FPGA根埠相關聯的下游過濾器,所述下游過濾器經操作以攔截從SSD接收到的第一加速指令且將所述第一加速指令傳送到APM-F,所述第一加速指令與下游FAR相關聯;以及
FPGA經操作以:
經由第一FPGA根埠和SSD的端點將在FPGA端點處從處理器接收到的第一PCIe事務轉發到SSD;
將在第二FPGA端點處從處理器接收到的第二加速指令轉發到APM-F;
經由FPGA端點將並不與下游FAR相關聯的第二PCIe事務轉發到處理器,所述下游FAR是在第一FPGA根埠處從SSD接收到的;以及
將在第二FPGA根埠處從SSD接收到的第一加速指令轉發到APM-F。
陳述87. 本發明概念的實施例包含根據陳述86所述的系統,其中第二加速指令由APM-S產生。
陳述88. 本發明概念的實施例包含根據陳述86所述的系統,其中:
SSD經操作以從FPGA請求FPGA位址的區塊,所述FPGA位址的區塊包含下游FAR;
FPGA經操作以從處理器請求主機系統位址的區塊以供用於第一FPGA端點,所述主機系統位址的區塊至少與FPGA位址的區塊一樣大;以及
控制器經操作以選擇FPGA位址的區塊的子集作為下游FAR。
陳述89. 本發明概念的實施例包含根據陳述88所述的系統,其中控制器經操作以用下游FAR對下游過濾器進行程式化。
陳述90. 本發明概念的實施例包含根據陳述89所述的系統,其中控制器經操作以使用邊帶匯流排來用下游FAR對下游過濾器進行程式化。
陳述91. 本發明概念的實施例包含根據陳述90所述的系統,其中邊帶匯流排來自包含I2 C匯流排和SMBus的集合。
陳述92. 本發明概念的實施例包含根據陳述89所述的系統,其中控制器經操作以使用PCIe VDM來用下游FAR對下游過濾器進行程式化。
陳述93. 本發明概念的實施例包含根據陳述86所述的系統,其中APM-F經操作以經由FPGA端點將結果發送到處理器。
陳述94. 本發明概念的實施例包含根據陳述86所述的系統,其中FPGA進一步包含配置監視器以將SSD的端點的性能複製到第一FPGA端點。
陳述95. 本發明概念的實施例包含使用硬體實施的加速模組,所述加速模組包括:
加速平臺管理器(APM-F),用以執行加速指令;
上游介面,用於與處理器通訊,應用程式在所述處理器上運行;以及
下游介面,用於與儲存裝置通訊,所述儲存裝置包含儲存裝置加速平臺管理器(APM-S),所述儲存裝置加速平臺管理器用以輔助APM-F執行加速指令,
其中加速模組使用周邊元件連接交換(PCIe)匯流排與處理器和儲存裝置通訊,且
其中加速模組支援在不將應用資料載入到與處理器相關聯的記憶體中的情況下對應用程式的儲存裝置上的應用資料執行加速指令。
陳述96. 本發明概念的實施例包含根據陳述95所述的加速模組,其中:
使用現場可程式化閘陣列(FPGA)來實施所述加速模組。
陳述97. 本發明概念的實施例包含根據陳述96所述的加速模組,其中APM-F和APM-S使用下游介面進行通訊,涉及待與加速指令一起使用的應用資料
陳述98. 本發明概念的實施例包含根據陳述96所述的加速模組,其中APM-F和APM-S使用消息進行通訊。
陳述99. 本發明概念的實施例包含根據陳述96所述的加速模組,其中FPGA進一步包含:
加速引擎;以及
執行時間調度程式,用以使用加速引擎調度加速指令。
陳述100. 本發明概念的實施例包含根據陳述96所述的加速模組,其中:
上游介面包含上游埠;
下游介面包含下游埠;
FPGA經操作以將在上游埠處從處理器接收到的第一PCIe事務轉發到儲存裝置;
FPGA包含與下游埠相關聯的下游過濾器,所述下游過濾器經操作以攔截從儲存裝置接收到的加速指令且將所述加速指令傳送到APM-F,加速指令與下游過濾器位址範圍(FAR)相關聯;且
FPGA經操作以將並不與下游FAR相關聯的第二PCIe事務轉發到處理器,所述下游FAR是在下游埠處從儲存裝置接收到的。
陳述101. 本發明概念的實施例包含根據陳述100所述的加速模組,其中FPGA的下游過濾器中的下游FAR可由儲存裝置程式化。
陳述102. 本發明概念的實施例包含根據陳述101所述的加速模組,其中FPGA的下游過濾器中的下游FAR可由儲存裝置經由邊帶匯流排程式化。
陳述103. 本發明概念的實施例包含根據陳述102所述的加速模組,其中邊帶匯流排來自包含互積體電路(I2 C)匯流排和系統管理匯流排(SMBus)的集合。
陳述104. 本發明概念的實施例包含根據陳述101所述的加速模組,其中FPGA的下游過濾器中的下游FAR可由儲存裝置使用PCIe供應商定義消息(VDM)程式化。
陳述105. 本發明概念的實施例包含根據陳述100所述的加速模組,其中APM-F經操作以經由下游埠將結果發送到儲存裝置的APM-S。
陳述106. 本發明概念的實施例包含根據陳述100所述的加速模組,其中APM-F經操作以經由上游埠將結果發送到處理器。
陳述107. 本發明概念的實施例包含根據陳述100所述的加速模組,其中APM-F和APM-S使用消息進行通訊。
陳述108. 本發明概念的實施例包含根據陳述100所述的加速模組,其中:
FPGA進一步包含與上游埠相關聯的上游過濾器,所述上游過濾器經操作以攔截從處理器接收到的第二加速指令且將所述第二加速指令傳送到APM-F,所述第二加速指令與上游FAR相關聯;以及
FPGA經操作以將並不與上游FAR相關聯的第三PCIe事務轉發到儲存裝置,所述上游FAR是在上游埠處從處理器接收到的。
陳述109. 本發明概念的實施例包含根據陳述108所述的加速模組,其中FPGA的上游過濾器中的上游FAR可由儲存裝置程式化。
陳述110. 本發明概念的實施例包含根據陳述109所述的加速模組,其中FPGA的上游過濾器中的上游FAR可由儲存裝置使用邊帶匯流排程式化。
陳述111. 本發明概念的實施例包含根據陳述110所述的加速模組,其中邊帶匯流排來自包含I2 C匯流排和SMBus的集合。
陳述112. 本發明概念的實施例包含根據陳述109所述的加速模組,其中FPGA的上游過濾器中的上游FAR可由儲存裝置使用PCIe VDM程式化。
陳述113. 本發明概念的實施例包含根據陳述108所述的加速模組,其中APM-F經操作以經由下游埠將結果發送到儲存裝置的APM-S。
陳述114. 本發明概念的實施例包含根據陳述108所述的加速模組,其中APM-F經操作以經由上游埠將結果發送到處理器。
陳述115. 本發明概念的實施例包含根據陳述108所述的加速模組,其中APM-F和APM-S使用消息進行通訊。
陳述116. 本發明概念的實施例包含根據陳述108所述的加速模組,其中FPGA經由指配給儲存裝置的非揮發性儲存快速(NVMe)暫存器而間接地暴露於處理器。
陳述117. 本發明概念的實施例包含根據陳述100所述的加速模組,其中:
FPGA由儲存裝置的虛擬功能(VF)而暴露;
FPGA進一步包含與上游埠相關聯的上游過濾器,所述上游過濾器經操作以攔截從處理器接收到的第二加速指令且將所述第二加速指令傳送到APM-F;以及
FPGA經操作以將並不由上游過濾器攔截的第三PCIe事務轉發到儲存裝置,所述上游過濾器是在上游埠處從處理器接收到的。
陳述118. 本發明概念的實施例包含根據陳述117所述的加速模組,其中:
第二加速指令與上游FAR相關聯;以及
上游過濾器經操作以攔截與上游FAR相關聯的第二加速指令。
陳述119. 本發明概念的實施例包含根據陳述118所述的加速模組,其中FPGA的上游過濾器中的上游FAR可由儲存裝置程式化。
陳述120. 本發明概念的實施例包含根據陳述119所述的加速模組,其中FPGA的上游過濾器中的上游FAR可由儲存裝置使用邊帶匯流排程式化。
陳述121. 本發明概念的實施例包含根據陳述120所述的加速模組,其中邊帶匯流排來自包含I2 C匯流排和SMBus的集合。
陳述122. 本發明概念的實施例包含根據陳述119所述的加速模組,其中FPGA的上游過濾器中的上游FAR可由儲存裝置使用PCIe VDM程式化。
陳述123. 本發明概念的實施例包含根據陳述117所述的加速模組,其中:
第二加速指令包含VF的識別字;以及
上游過濾器經操作以攔截與VF的識別字相關聯的第二加速指令。
陳述124. 本發明概念的實施例包含根據陳述123所述的加速模組,其中FPGA的上游過濾器可由儲存裝置用VF的識別字程式化。
陳述125. 本發明概念的實施例包含根據陳述124所述的加速模組,其中FPGA的上游過濾器可由儲存裝置使用邊帶匯流排來用VF的識別字程式化。
陳述126. 本發明概念的實施例包含根據陳述125所述的加速模組,其中邊帶匯流排來自包含I2 C匯流排和SMBus的集合。
陳述127. 本發明概念的實施例包含根據陳述124所述的加速模組,其中FPGA的上游過濾器可由儲存裝置使用PCIe VDM來用VF的識別字程式化。
陳述128. 本發明概念的實施例包含根據陳述117所述的加速模組,其中APM-F經操作以經由下游埠將結果發送到儲存裝置的APM-S。
陳述129. 本發明概念的實施例包含根據陳述117所述的加速模組,其中APM-F經操作以經由上游埠將結果發送到處理器。
陳述130. 本發明概念的實施例包含根據陳述117所述的加速模組,其中APM-F和APM-S使用消息進行通訊。
陳述131. 本發明概念的實施例包含根據陳述100所述的加速模組,其中:
FPGA由儲存裝置的物理功能(PF)而暴露;
FPGA進一步包含與上游埠相關聯的上游過濾器,所述上游過濾器經操作以攔截從處理器接收到的第二加速指令且將所述第二加速指令傳送到APM-F;以及
FPGA經操作以將並不由上游過濾器攔截的第三PCIe事務轉發到儲存裝置,所述上游過濾器是在上游埠處從處理器接收到的。
陳述132. 本發明概念的實施例包含根據陳述131所述的加速模組,其中:
第二加速指令與上游FAR相關聯;以及
上游過濾器經操作以攔截與上游FAR相關聯的第二加速指令。
陳述133. 本發明概念的實施例包含根據陳述132所述的加速模組,其中FPGA的上游過濾器中的上游FAR可由儲存裝置程式化。
陳述134. 本發明概念的實施例包含根據陳述133所述的加速模組,其中FPGA的上游過濾器中的上游FAR可由儲存裝置使用邊帶匯流排程式化。
陳述135. 本發明概念的實施例包含根據陳述134所述的加速模組,其中邊帶匯流排來自包含I2 C匯流排和SMBus的集合。
陳述136. 本發明概念的實施例包含根據陳述133所述的加速模組,其中FPGA的上游過濾器中的上游FAR可由儲存裝置使用PCIe VDM程式化。
陳述137. 本發明概念的實施例包含根據陳述131所述的加速模組,其中:
第二加速指令包含PF的識別字;以及
上游過濾器經操作以攔截與PF的識別字相關聯的第二加速指令。
陳述138. 本發明概念的實施例包含根據陳述137所述的加速模組,其中FPGA的上游過濾器可由儲存裝置用PF的識別字程式化。
陳述139. 本發明概念的實施例包含根據陳述138所述的加速模組,其中FPGA的上游過濾器可由儲存裝置使用邊帶匯流排來用PF的識別字程式化。
陳述140. 本發明概念的實施例包含根據陳述139所述的加速模組,其中邊帶匯流排來自包含I2 C匯流排和SMBus的集合。
陳述141. 本發明概念的實施例包含根據陳述138所述的加速模組,其中FPGA的上游過濾器可由儲存裝置使用PCIe VDM來用PF的識別字程式化。
陳述142. 本發明概念的實施例包含根據陳述131所述的加速模組,其中APM-F經操作以經由下游埠將結果發送到儲存裝置的APM-S。
陳述143. 本發明概念的實施例包含根據陳述131所述的加速模組,其中APM-F經操作以經由上游埠將結果發送到處理器。
陳述144. 本發明概念的實施例包含根據陳述131所述的加速模組,其中APM-F和APM-S使用消息進行通訊。
陳述145. 本發明概念的實施例包含根據陳述96所述的加速模組,其中:
上游介面包含FPGA端點;
下游介面包含FPGA根埠,所述FPGA根埠支援配置空間;
FPGA包含第一PF、第二PF以及與相FPGA根埠關聯的下游過濾器,所述下游過濾器經操作以攔截從儲存裝置接收到的第一加速指令且將第一加速指令傳送到APM-F,所述第一加速指令與下游FAR相關聯;
FPGA經操作以從處理器請求主機系統位址的第一區塊以供用於第一PF,且經操作以從處理器請求主機系統位址的第二區塊以供用於第二PF;以及
FPGA經操作以將從處理器接收到的PCIe事務轉發到儲存裝置,且經操作以將從處理器接收到的第二加速指令轉發到APM-F,所述PCIe事務與第一PF的第一識別字相關聯,所述第二加速指令與第二PF的第二識別字相關聯。
陳述146. 本發明概念的實施例包含根據陳述145所述的加速模組,其中:
FPGA經操作以從儲存裝置接收請求以供用於來自FPGA的FPGA位址的區塊,所述FPGA位址的區塊包含下游FAR;
FPGA經操作以從配置空間分配FPGA位址的區塊;以及
主機系統位址的第一區塊至少與FPGA位址的區塊一樣大。
陳述147. 本發明概念的實施例包含根據陳述146所述的加速模組,其中FPGA的下游過濾器中的下游FAR可由儲存裝置程式化。
陳述148. 本發明概念的實施例包含根據陳述147所述的加速模組,其中FPGA的下游過濾器中的下游FAR可由儲存裝置使用邊帶匯流排程式化。
陳述149. 本發明概念的實施例包含根據陳述148所述的加速模組,其中邊帶匯流排來自包含I2 C匯流排和SMBus的集合。
陳述150. 本發明概念的實施例包含根據陳述147所述的加速模組,其中FPGA的下游過濾器中的下游FAR可由儲存裝置使用PCIe VDM程式化。
陳述151. 本發明概念的實施例包含根據陳述145所述的加速模組,其中APM-F經操作以經由FPGA端點將結果發送到處理器。
陳述152. 本發明概念的實施例包含根據陳述145所述的加速模組,其中APM-F和APM-S使用消息進行通訊。
陳述153. 本發明概念的實施例包含根據陳述145所述的加速模組,其中FPGA進一步包含配置監視器以將儲存裝置的端點的性能複製到FPGA端點。
陳述154. 本發明概念的實施例包含根據陳述96所述的加速模組,其中:
上游介面包含FPGA端點;
下游介面包含第一FPGA根埠和第二FPGA根埠,所述第一FPGA根埠支援第一配置空間,所述第二FPGA根埠支援第二配置空間;
FPGA包含第一PF和第二PF;
FPGA經操作以從處理器請求主機系統位址的第一區塊以供用於第一PF,且經操作以從處理器請求主機系統位址的第二區塊以供用於第二PF;以及
FPGA經操作以:
將從處理器接收到的第一PCIe事務經由第一FPGA根埠轉發到儲存裝置,所述第一PCIe事務與第一PF的第一識別字相關聯;
將從處理器接收到的第二加速指令轉發到APM-F,所述第二加速指令與第二PF的第二識別字相關聯;
將在第一FPGA根埠處從儲存裝置接收到的第二PCIe事務轉發到處理器;以及
將在第二FPGA根埠處從儲存裝置接收到的第一加速指令轉發到APM-F。
陳述155. 本發明概念的實施例包含根據陳述154所述的加速模組,其中APM-F經操作以經由FPGA端點將結果發送到處理器。
陳述156. 本發明概念的實施例包含根據陳述154所述的加速模組,其中APM-F和APM-S使用消息進行通訊。
陳述157. 本發明概念的實施例包含根據陳述154所述的加速模組,其中FPGA進一步包含配置監視器以將儲存裝置的端點的性能複製到FPGA端點。
陳述158. 本發明概念的實施例包含根據陳述154所述的加速模組,其中:
上游介面進一步包含第二FPGA端點;以及
FPGA進一步經操作以:
經由第一FPGA根埠將在FPGA端點處從處理器接收到的第一PCIe事務轉發到儲存裝置;以及
將在第二FPGA端點處從處理器接收到的第二加速指令轉發到APM-F。
陳述159. 本發明概念的實施例包含根據陳述158所述的加速模組,其中APM-F經操作以經由FPGA端點將結果發送到處理器。
陳述160. 本發明概念的實施例包含根據陳述158所述的加速模組,其中APM-F和APM-S使用消息進行通訊。
陳述161. 本發明概念的實施例包含根據陳述158所述的加速模組,其中FPGA進一步包含配置監視器以將儲存裝置的端點的性能複製到第一FPGA端點。
陳述162. 本發明概念的實施例包含根據陳述96所述的加速模組,其中:
上游介面包含第一FPGA端點和第二FPGA端點;
下游介面包含FPGA根埠,所述FPGA根埠支援配置空間;
FPGA包含與FPGA根埠相關聯的下游過濾器,所述下游過濾器經操作以攔截從儲存裝置接收到的第一加速指令且將所述第一加速指令傳送到APM-F,所述第一加速指令與下游FAR相關聯;以及
FPGA經操作以:
經由第一FPGA根埠和儲存裝置的端點將在FPGA端點處從處理器接收到的第一PCIe事務轉發到儲存裝置;
將在第二FPGA端點處從處理器接收到的第二加速指令轉發到APM-F;
經由FPGA端點將並不與下游FAR相關聯的第二PCIe事務轉發到處理器,所述下游FAR是在第一FPGA根埠處從儲存裝置接收到的;以及
將在第二FPGA根埠處從儲存裝置接收到的第一加速指令轉發到APM-F。
陳述163. 本發明概念的實施例包含根據陳述162所述的加速模組,其中:
FPGA經操作以從儲存裝置接收請求以供用於來自FPGA的FPGA位址的區塊,所述FPGA位址的區塊包含下游FAR;
FPGA經操作以從配置空間分配FPGA位址的區塊;以及
FPGA經操作以從處理器請求主機系統位址的區塊以供用於第一FPGA端點,所述主機系統位址的區塊至少與FPGA位址的區塊一樣大;以及
陳述164. 本發明概念的實施例包含根據陳述163所述的加速模組,其中FPGA的下游過濾器中的下游FAR可由儲存裝置程式化。
陳述165. 本發明概念的實施例包含根據陳述164所述的加速模組,其中FPGA的下游過濾器中的下游FAR可由儲存裝置使用邊帶匯流排程式化。
陳述166. 本發明概念的實施例包含根據陳述165所述的加速模組,其中邊帶匯流排來自包含I2 C匯流排和SMBus的集合。
陳述167. 本發明概念的實施例包含根據陳述164所述的加速模組,其中FPGA的下游過濾器中的下游FAR可由儲存裝置使用PCIe VDM程式化。
陳述168. 本發明概念的實施例包含根據陳述162所述的加速模組,其中APM-F經操作以經由FPGA端點將結果發送到處理器。
陳述169. 本發明概念的實施例包含根據陳述162所述的加速模組,其中APM-F和APM-S使用消息進行通訊。
陳述170. 本發明概念的實施例包含根據陳述162所述的加速模組,其中FPGA進一步包含配置監視器以將儲存裝置的端點的性能複製到第一FPGA端點。
陳述171. 本發明概念的實施例包含使用硬體實施的第一橋接元件,所述第一橋接組件包括:
上游介面,用於與處理器通訊,應用程式在所述處理器上運行;以及
下游介面,用於與加速模組和儲存裝置通訊,
其中第一橋接元件使用周邊元件連接交換(PCIe)匯流排與處理器、加速模組以及儲存裝置通訊,且
下游介面經操作以取決於PCIe事務是否包含加速指令而將PCIe事務從處理器傳送到加速模組或儲存裝置。
陳述172. 本發明概念的實施例包含根據陳述171所述的第一橋接元件,其中:
使用現場可程式化閘陣列(FPGA)來實施所述加速模組;以及
儲存裝置包含固態驅動器(SSD)。
陳述173. 本發明概念的實施例包含根據陳述171所述的第一橋接元件,進一步包括第二橋接元件,所述第二橋接元件包含:
第二上游介面,用於與處理器和加速模組通訊;以及
第二下游介面,用於與儲存裝置通訊,
其中第二橋接元件使用周邊元件連接交換(PCIe)匯流排與處理器、加速模組以及儲存裝置通訊,且
第二上游介面經操作以取決於第二PCIe事務是否包含第二加速指令而將第二PCIe事務從儲存裝置傳送到處理器或加速模組。
陳述174. 本發明概念的實施例包含根據陳述171所述的第一橋接元件,其中:
上游介面包含:
上游埠;以及
與上游埠相關聯的上游過濾器,所述上游過濾器經操作以標識與上游FAR相關聯的第二加速指令,所述上游FAR是從處理器接收到的;以及
下游介面經操作以將第二加速指令轉發到加速模組,且經操作以將並不與上游FAR相關聯的第三PCIe事務轉發到儲存裝置,所述上游FAR是在上游埠處從處理器接收到的。
陳述175. 本發明概念的實施例包含根據陳述174所述的第一橋接元件,其中第一橋接組件的上游過濾器中的上游FAR可由儲存裝置程式化。
陳述176. 本發明概念的實施例包含根據陳述175所述的第一橋接元件,其中第一橋接組件的上游過濾器中的上游FAR可由儲存裝置使用邊帶匯流排程式化。
陳述177. 本發明概念的實施例包含根據陳述176所述的第一橋接元件,其中邊帶匯流排來自包含I2 C匯流排和SMBus的集合。
陳述178. 本發明概念的實施例包含根據陳述175所述的第一橋接元件,其中第一橋接組件的上游過濾器中的上游FAR可由儲存裝置使用PCIe供應商定義消息(VDM)程式化。
陳述179. 本發明概念的實施例包含根據陳述174所述的第一橋接元件,其中FPGA經由指配給儲存裝置的非揮發性儲存快速(NVMe)暫存器間接地暴露於處理器。
陳述180. 本發明概念的實施例包含根據陳述171所述的第一橋接元件,其中:
上游介面由儲存裝置的虛擬功能(VF)而暴露;
上游介面包含:
上游埠;以及
上游過濾器與上游埠相關聯,所述上游過濾器經操作以向加速模組標識第二加速指令;以及
下游介面經操作以將第二加速指令轉發到加速模組,且經操作以將並不由上游過濾器攔截的第三PCIe事務轉發到儲存裝置,所述上游過濾器是在上游埠處從處理器接收到的。
陳述181. 本發明概念的實施例包含根據陳述180所述的第一橋接元件,其中:
第二加速指令與上游FAR相關聯;以及
上游過濾器經操作以標識與上游FAR相關聯的第二加速指令。
陳述182. 本發明概念的實施例包含根據陳述181所述的第一橋接元件,其中第一橋接組件的上游過濾器中的上游FAR可由儲存裝置程式化。
陳述183. 本發明概念的實施例包含根據陳述182所述的第一橋接元件,其中第一橋接組件的上游過濾器中的上游FAR可由儲存裝置使用邊帶匯流排程式化。
陳述184. 本發明概念的實施例包含根據陳述183所述的第一橋接元件,其中邊帶匯流排來自包含I2 C匯流排和SMBus的集合。
陳述185. 本發明概念的實施例包含根據陳述182所述的第一橋接元件,其中第一橋接組件的上游過濾器中的上游FAR可由儲存裝置使用PCIe VDM程式化。
陳述186. 本發明概念的實施例包含根據陳述180所述的第一橋接元件,其中:
第二加速指令包含VF的識別字;以及
上游過濾器經操作以標識與VF的識別字相關聯的第二加速指令。
陳述187. 本發明概念的實施例包含根據陳述186所述的第一橋接元件,其中第一橋接組件的上游過濾器可由儲存裝置用VF的識別字程式化。
陳述188. 本發明概念的實施例包含根據陳述187所述的第一橋接元件,其中第一橋接元件的上游過濾器可由儲存裝置使用邊帶匯流排來用VF的識別字程式化。
陳述189. 本發明概念的實施例包含根據陳述188所述的第一橋接元件,其中邊帶匯流排來自包含I2 C匯流排和SMBus的集合。
陳述190. 本發明概念的實施例包含根據陳述187所述的第一橋接元件,其中第一橋接元件的上游過濾器可由儲存裝置使用PCIe VDM來用VF的識別字程式化。
陳述191. 本發明概念的實施例包含根據陳述171所述的第一橋接元件,其中:
上游介面由儲存裝置的物理功能(PF)而暴露;
上游介面包含:
上游埠;以及
上游過濾器與上游埠相關聯,所述上游過濾器經操作以向加速模組標識第二加速指令;以及
下游介面經操作以將第二加速指令轉發到加速模組,且經操作以將並不由上游過濾器攔截的第三PCIe事務轉發到儲存裝置,所述上游過濾器是在上游埠處從處理器接收到的。
陳述192. 本發明概念的實施例包含根據陳述191所述的第一橋接元件,其中:
第二加速指令與上游FAR相關聯;以及
上游過濾器經操作以標識與上游FAR相關聯的第二加速指令。
陳述193. 本發明概念的實施例包含根據陳述192所述的第一橋接元件,其中第一橋接組件的上游過濾器中的上游FAR可由儲存裝置程式化。
陳述194. 本發明概念的實施例包含根據陳述193所述的第一橋接元件,其中第一橋接組件的上游過濾器中的上游FAR可由儲存裝置使用邊帶匯流排程式化。
陳述195. 本發明概念的實施例包含根據陳述194所述的第一橋接元件,其中邊帶匯流排來自包含I2 C匯流排和SMBus的集合。
陳述196. 本發明概念的實施例包含根據陳述193所述的第一橋接元件,其中第一橋接組件的上游過濾器中的上游FAR可由儲存裝置使用PCIe VDM程式化。
陳述197. 本發明概念的實施例包含根據陳述191所述的第一橋接元件,其中:
第二加速指令包含PF的識別字;以及
上游過濾器經操作以標識與PF的識別字相關聯的第二加速指令。
陳述198. 本發明概念的實施例包含根據陳述197所述的第一橋接元件,其中第一橋接組件的上游過濾器可由儲存裝置用PF的識別字程式化。
陳述199. 本發明概念的實施例包含根據陳述198所述的第一橋接元件,其中第一橋接元件的上游過濾器可由儲存裝置使用邊帶匯流排來用PF的識別字程式化。
陳述200. 本發明概念的實施例包含根據陳述199所述的第一橋接元件,其中邊帶匯流排來自包含I2 C匯流排和SMBus的集合。
陳述201. 本發明概念的實施例包含根據陳述198所述的第一橋接元件,其中第一橋接元件的上游過濾器可由儲存裝置使用PCIe VDM來用PF的識別字程式化。
陳述202. 本發明概念的實施例包含根據陳述171所述的第一橋接元件,其中:
上游介面包含:
端點;
第一PF;以及
第二PF;以及
下游介面經操作以將從處理器接收到的PCIe事務轉發到儲存裝置,且經操作以將從處理器接收到的第二加速指令轉發到加速模組,所述PCIe事務與第一PF的第一識別字相關聯,所述第二加速指令與第二PF的第二識別字相關聯。
陳述203. 本發明概念的實施例包含根據陳述202所述的第一橋接元件,其中第一橋接元件進一步包含配置監視器以將儲存裝置的端點的性能複製到所述端點。
陳述204. 本發明概念的實施例包含根據陳述171所述的第一橋接元件,其中:
上游介面包含:
第一端點;以及
第二端點;以及
下游介面經操作以將從處理器接收到的與第一端點相關聯的PCIe事務轉發到儲存裝置,且經操作以將從處理器接收到的第二加速指令轉發到加速模組,所述第二加速指令與第二端點相關聯。
陳述205. 本發明概念的實施例包含根據陳述204所述的第一橋接元件,其中第一橋接元件進一步包含配置監視器以將儲存裝置的端點的性能複製到第一端點。
陳述206. 本發明概念的實施例包含使用硬體實施的第二橋接元件,所述第二橋接元件包括:
上游介面,用於與處理器和加速模組通訊;以及
下游介面,用於與儲存裝置通訊;
其中第一橋接元件使用周邊元件連接交換(PCIe)匯流排與處理器、加速模組以及儲存裝置通訊,且
上游介面經操作以取決於PCIe事務是否包含加速指令而將PCIe事務從儲存裝置傳送到處理器或加速模組。
陳述207. 本發明概念的實施例包含根據陳述206所述的第二橋接元件,其中:
使用現場可程式化閘陣列(FPGA)來實施所述加速模組;以及
儲存裝置包含固態驅動器(SSD)。
陳述208. 本發明概念的實施例包含根據陳述206所述的第二橋接元件,其中:
下游介面包含:
下游埠;以及
與下游埠相關聯的下游過濾器,所述下游過濾器經操作以標識與從儲存裝置接收到的下游過濾器位址範圍(FAR)相關聯的加速指令;
下游介面經操作以將加速指令轉發到加速模組,且經操作以將並不與下游FAR相關聯的第二PCIe事務轉發到處理器,所述下游FAR是在下游埠處從儲存裝置接收到的。
陳述209. 本發明概念的實施例包含根據陳述208所述的第二橋接元件,其中第二橋接元件的下游過濾器中的下游FAR可由儲存裝置程式化。
陳述210. 本發明概念的實施例包含根據陳述209所述的第二橋接元件,其中第二橋接元件的下游過濾器中的下游FAR可由儲存裝置經由邊帶匯流排程式化。
陳述211. 本發明概念的實施例包含根據陳述210所述的第二橋接元件,其中邊帶匯流排來自包含互積體電路(I2 C)匯流排和系統管理匯流排(SMBus)的集合。
陳述212. 本發明概念的實施例包含根據陳述209所述的第二橋接元件,其中第二橋接元件的下游過濾器中的下游FAR可由儲存裝置使用PCIe供應商定義消息(VDM)程式化。
陳述213. 本發明概念的實施例包含根據陳述206所述的第二橋接元件,其中:
下游介面包含:
根埠;以及
與根埠相關聯的下游過濾器,所述下游過濾器經操作以標識與從儲存裝置接收到的下游過濾器位址範圍(FAR)相關聯的加速指令;
下游介面經操作以將加速指令轉發到加速模組,且經操作以將並不與下游FAR相關聯的第二PCIe事務轉發到處理器,所述下游FAR是在下游埠處從儲存裝置接收到的。
陳述214. 本發明概念的實施例包含根據陳述213所述的第二橋接元件,其中第二橋接元件的下游過濾器中的下游FAR可由儲存裝置程式化。
陳述215. 本發明概念的實施例包含根據陳述214所述的第二橋接元件,其中第二橋接元件的下游過濾器中的下游FAR可由儲存裝置使用邊帶匯流排程式化。
陳述216. 本發明概念的實施例包含根據陳述215所述的第二橋接元件,其中邊帶匯流排來自包含I2 C匯流排和SMBus的集合。
陳述217. 本發明概念的實施例包含根據陳述214所述的第二橋接元件,其中第二橋接元件的下游過濾器中的下游FAR可由儲存裝置使用PCIe VDM程式化。
陳述218. 本發明概念的實施例包含根據陳述206所述的第二橋接元件,其中:
下游介面包含:
第一根埠;以及
第二根埠,
其中下游介面經操作以將在第一根埠處從儲存裝置接收到的第二PCIe事務轉發到處理器,且經操作以將在第二根埠處從儲存裝置接收到的加速指令轉發到加速模組。
陳述219. 本發明概念的實施例包含一種儲存裝置,所述儲存裝置包括:
儲存裝置的端點,用於與加速模組通訊,所述加速模組包含加速平臺管理器(APM-F);
控制器,用以管理儲存裝置的操作;
儲存器,用以儲存應用程式的應用資料;以及
儲存裝置加速平臺管理器(APM-S),用以輔助APM-F執行加速指令,
其中儲存裝置和加速模組使用周邊元件連接交換(PCIe)匯流排通訊,且
其中加速模組支援在不將應用資料載入到與處理器相關聯的記憶體中的情況下對應用程式的儲存裝置上的應用資料執行加速指令。
陳述220. 本發明概念的實施例包含根據陳述219所述的儲存裝置,其中儲存裝置包含固態驅動器(SSD)。
陳述221. 本發明概念的實施例包含根據陳述220所述的儲存裝置,其中APM-F和APM-S使用SSD的端點通訊,涉及待與加速指令一起使用的應用資料。
陳述222. 本發明概念的實施例包含根據陳述220所述的儲存裝置,其中APM-F和APM-S使用消息進行通訊。
陳述223. 本發明概念的實施例包含根據陳述220所述的儲存裝置,其中儲存裝置可將從處理器接收到的PCIe事務發送到SSD,所述PCI事務包含使用非揮發性儲存快速(NVMe)協定編碼命令的事務層包(TLP)。
陳述224. 本發明概念的實施例包含根據陳述220所述的儲存裝置,其中SSD包含加速模組。
陳述225. 本發明概念的實施例包含根據陳述220所述的儲存裝置,其中:
SSD經操作以將與下游過濾器位址範圍(FAR)相關聯的加速指令發送到加速模組,所述第一PCIe事務意欲用於APM-F;以及
SSD經操作以將並不與下游FAR相關聯的第一PCIe事務發送到加速模組,所述第一PCIe事務意欲用於處理器。
陳述226. 本發明概念的實施例包含根據陳述225所述的儲存裝置,其中加速指令由APM-S產生。
陳述227. 本發明概念的實施例包含根據陳述226所述的儲存裝置,其中SSD進一步包含主機介面邏輯(HIL)以攔截專用命令(所述專用命令包含加速指令),且將所述專用命令轉發到APM-S以觸發APM-S來產生加速指令。
陳述228. 本發明概念的實施例包含根據陳述227所述的儲存裝置,其中專用命令來源於在處理器上運行的加速服務管理器(ASM)。
陳述229. 本發明概念的實施例包含根據陳述225所述的儲存裝置,其中:
SSD經操作以從處理器請求主機系統位址的區塊;以及
控制器經操作以選擇主機系統位址的區塊的子集作為下游FAR。
陳述230. 本發明概念的實施例包含根據陳述229所述的儲存裝置,其中控制器經操作以用下游FAR對加速模組的下游過濾器進行程式化。
陳述231. 本發明概念的實施例包含根據陳述230所述的儲存裝置,其中控制器經操作以使用邊帶匯流排來用下游FAR對加速模組的下游過濾器進行程式化。
陳述232. 本發明概念的實施例包含根據陳述231所述的儲存裝置,其中邊帶匯流排來自包含互積體電路(I2 C)匯流排和系統管理匯流排(SMBus)的集合。
陳述233. 本發明概念的實施例包含根據陳述230所述的儲存裝置,其中控制器經操作以使用PCIe供應商定義消息(VDM)來用下游FAR對加速模組的下游過濾器進行程式化。
陳述234. 本發明概念的實施例包含根據陳述229所述的儲存裝置,其中控制器進一步經操作以選擇主機系統位址的區塊的第二子集作為上游FAR。
陳述235. 本發明概念的實施例包含根據陳述234所述的儲存裝置,其中控制器經操作以儲存關於可由在處理器上運行的ASM存取的在專用暫存器中的上游FAR的資訊。
陳述236. 本發明概念的實施例包含根據陳述235所述的儲存裝置,其中專用暫存器在主機系統位址的區塊內。
陳述237. 本發明概念的實施例包含根據陳述229所述的儲存裝置,其中控制器經操作以用上游FAR對加速模組的上游過濾器進行程式化。
陳述238. 本發明概念的實施例包含根據陳述237所述的儲存裝置,其中控制器經操作以使用邊帶匯流排來用上游FAR對加速模組的上游過濾器進行程式化。
陳述239. 本發明概念的實施例包含根據陳述238所述的儲存裝置,其中邊帶匯流排來自包含互積體電路(I2 C)匯流排和系統管理匯流排(SMBus)的集合。
陳述240. 本發明概念的實施例包含根據陳述237所述的儲存裝置,其中控制器經操作以使用PCIe供應商定義消息(VDM)來用上游FAR對加速模組的上游過濾器進行程式化。
陳述241. 本發明概念的實施例包含根據陳述225所述的儲存裝置,其中SSD經操作以經由SSD的端點從APM-F接收結果,且經操作以將所述結果經由SSD的端點轉發到處理器。
陳述242. 本發明概念的實施例包含根據陳述225所述的儲存裝置,其中SSD包含物理功能(PF)和虛擬功能(VF),所述PF經操作以暴露SSD且所述VF經操作以暴露加速模組。
陳述243. 本發明概念的實施例包含根據陳述242所述的儲存裝置,其中:
PF經操作以從處理器請求主機系統位址的第一區塊;
控制器經操作以選擇主機系統位址的區塊的第一子集作為下游FAR。
陳述244. 本發明概念的實施例包含根據陳述243所述的儲存裝置,其中控制器經操作以用下游FAR對加速模組的下游過濾器進行程式化。
陳述245. 本發明概念的實施例包含根據陳述244所述的儲存裝置,其中控制器經操作以使用邊帶匯流排來用下游FAR對加速模組的下游過濾器進行程式化。
陳述246. 本發明概念的實施例包含根據陳述245所述的儲存裝置,其中邊帶匯流排來自包含I2 C匯流排和SMBus的集合。
陳述247. 本發明概念的實施例包含根據陳述244所述的儲存裝置,其中控制器經操作以使用PCIe VDM來用下游FAR對加速模組的下游過濾器進行程式化。
陳述248. 本發明概念的實施例包含根據陳述242所述的儲存裝置,其中VF經操作以從處理器請求主機系統位址的第二區塊作為上游FAR。
陳述249. 本發明概念的實施例包含根據陳述248所述的儲存裝置,其中控制器經操作以用上游FAR對加速模組的上游過濾器進行程式化。
陳述250. 本發明概念的實施例包含根據陳述249所述的儲存裝置,其中控制器經操作以使用邊帶匯流排來用上游FAR對加速模組的上游過濾器進行程式化。
陳述251. 本發明概念的實施例包含根據陳述250所述的儲存裝置,其中邊帶匯流排來自包含I2 C匯流排和SMBus的集合。
陳述252. 本發明概念的實施例包含根據陳述249所述的儲存裝置,其中控制器經操作以使用PCIe VDM來用上游FAR對加速模組的上游過濾器進行程式化。
陳述253. 本發明概念的實施例包含根據陳述242所述的儲存裝置,其中控制器經操作以用VF的識別字對加速模組的上游過濾器進行程式化。
陳述254. 本發明概念的實施例包含根據陳述253所述的儲存裝置,其中控制器經操作以使用邊帶匯流排來用VF的識別字對加速模組的上游過濾器進行程式化。
陳述255. 本發明概念的實施例包含根據陳述254所述的儲存裝置,其中邊帶匯流排來自包含I2 C匯流排和SMBus的集合。
陳述256. 本發明概念的實施例包含根據陳述253所述的儲存裝置,其中控制器經操作以使用PCIe VDM來用VF的識別字對加速模組的上游過濾器進行程式化。
陳述257. 本發明概念的實施例包含根據陳述242所述的儲存裝置,其中控制器經操作以經由SSD的端點從APM-F接收結果,且經操作以將所述結果經由SSD的端點轉發到處理器。
陳述258. 本發明概念的實施例包含根據陳述225所述的儲存裝置,其中SSD包含第一PF和第二PF,所述第一PF經操作以暴露SSD且所述第二PF經操作以暴露加速模組。
陳述259. 本發明概念的實施例包含根據陳述258所述的儲存裝置,其中:
第一PF經操作以從處理器請求主機系統位址的第一區塊;
控制器經操作以選擇主機系統位址的區塊的第一子集作為下游FAR。
陳述260. 本發明概念的實施例包含根據陳述259所述的儲存裝置,其中控制器經操作以用下游FAR對加速模組的下游過濾器進行程式化。
陳述261. 本發明概念的實施例包含根據陳述260所述的儲存裝置,其中控制器經操作以使用邊帶匯流排來用下游FAR對加速模組的下游過濾器進行程式化。
陳述262. 本發明概念的實施例包含根據陳述261所述的儲存裝置,其中邊帶匯流排來自包含I2 C匯流排和SMBus的集合。
陳述263. 本發明概念的實施例包含根據陳述260所述的儲存裝置,其中控制器經操作以使用PCIe VDM來用下游FAR對加速模組的下游過濾器進行程式化。
陳述264. 本發明概念的實施例包含根據陳述258所述的儲存裝置,其中第二PF經操作以從處理器請求主機系統位址的第二區塊作為上游FAR。
陳述265. 本發明概念的實施例包含根據陳述264所述的儲存裝置,其中控制器經操作以用上游FAR對加速模組的上游過濾器進行程式化。
陳述266. 本發明概念的實施例包含根據陳述265所述的儲存裝置,其中控制器經操作以使用邊帶匯流排來用上游FAR對加速模組的上游過濾器進行程式化。
陳述267. 本發明概念的實施例包含根據陳述266所述的儲存裝置,其中邊帶匯流排來自包含I2 C匯流排和SMBus的集合。
陳述268. 本發明概念的實施例包含根據陳述265所述的儲存裝置,其中控制器經操作以使用PCIe VDM來用上游FAR對加速模組的上游過濾器進行程式化。
陳述269. 本發明概念的實施例包含根據陳述258所述的儲存裝置,其中控制器經操作以用第二PF的識別字對加速模組的上游過濾器進行程式化。
陳述270. 本發明概念的實施例包含根據陳述269所述的儲存裝置,其中控制器經操作以使用邊帶匯流排來用第二PF的識別字對加速模組的上游過濾器進行程式化。
陳述271. 本發明概念的實施例包含根據陳述270所述的儲存裝置,其中邊帶匯流排來自包含I2 C匯流排和SMBus的集合。
陳述272. 本發明概念的實施例包含根據陳述269所述的儲存裝置,其中控制器經操作以使用PCIe VDM來用第二PF的識別字對加速模組的上游過濾器進行程式化。
陳述273. 本發明概念的實施例包含根據陳述258所述的儲存裝置,其中控制器經操作以經由SSD的端點從APM-F接收結果,且經操作以將所述結果經由SSD的端點轉發到處理器。
陳述274. 本發明概念的實施例包含根據陳述225所述的儲存裝置,其中:
SSD經操作以從加速模組請求加速模組位址的區塊;以及
控制器經操作以選擇加速模組位址的區塊的子集作為下游FAR。
陳述275. 本發明概念的實施例包含根據陳述274所述的儲存裝置,其中控制器經操作以用下游FAR對加速模組的下游過濾器進行程式化。
陳述276. 本發明概念的實施例包含根據陳述275所述的儲存裝置,其中控制器經操作以使用邊帶匯流排來用下游FAR對加速模組的下游過濾器進行程式化。
陳述277. 本發明概念的實施例包含根據陳述276所述的儲存裝置,其中邊帶匯流排來自包含互積體電路(I2 C)匯流排和系統管理匯流排(SMBus)的集合。
陳述278. 本發明概念的實施例包含根據陳述275所述的儲存裝置,其中控制器經操作以使用PCIe供應商定義消息(VDM)來用下游FAR對加速模組的下游過濾器進行程式化。
陳述279. 本發明概念的實施例包含根據陳述220所述的儲存裝置,所述儲存裝置進一步包括用於與加速模組通訊的SSD的第二端點,其中SSD的端點用於與處理器交換通訊且SSD的第二端點用於與APM-F交換通訊。
陳述280. 本發明概念的實施例包含一種方法,所述方法包括:
在加速處模組從第一裝置接收周邊元件連接交換(PCIe)事務;
在加速模組處確定PCIe事務是否為加速指令;
至少部分地基於確定PCIe事務為加速指令,在加速模組的加速平臺管理器(APM-F)處處理PCIe事務;以及
至少部分地基於確定PCIe事務不是加速指令,將PCIe事務傳送到第二裝置,
其中加速模組支援在不將應用資料載入到與處理器相關聯的記憶體中的情況下對應用程式的儲存裝置上的應用資料執行加速指令,且
其中處理器、加速模組以及儲存裝置使用PCIe匯流排通訊。
陳述281. 本發明概念的實施例包含根據陳述280所述的方法,其中使用現場可程式化閘陣列來實施加速模組。
陳述282. 本發明概念的實施例包含根據陳述281所述的方法,其中:
在FPGA處從第一裝置接收周邊元件連接交換(PCIe)事務包含在FPGA的下游埠處從儲存裝置接收第二PCIe事務;
在加速模組處確定PCIe事務是否為加速指令包含在FPGA處確定第二PCIe事務是否與下游過濾器位址範圍(FAR)中的位址相關聯,所述下游過濾器位址範圍與FPGA的下游埠相關聯;以及
將PCIe事務傳送到第二裝置包含使用FPGA的上游埠來將第二PCIe事務傳送到處理器。
陳述283. 本發明概念的實施例包含根據陳述282所述的方法,所述方法進一步包括:
在FPGA的上游埠處從處理器接收第一PCIe事務;以及
使用FPGA的下游處理器來將第一PCIe事務傳送到儲存裝置。
陳述284. 本發明概念的實施例包含根據陳述282所述的方法,所述方法進一步包括:
在FPGA處從儲存裝置接收下游FAR;以及
使下游FAR與FPGA的下游埠相關聯。
陳述285. 本發明概念的實施例包含根據陳述284所述的方法,其中在FPGA處從儲存裝置接收下游FAR包含經由邊帶匯流排在FPGA處從儲存裝置接收下游FAR,所述邊帶匯流排來自包含互積體電路(I2 C)匯流排和系統管理匯流排(SMBus)的集合。
陳述286. 本發明概念的實施例包含根據陳述284所述的方法,其中在FPGA處從儲存裝置接收下游FAR包含從儲存裝置接收PCIe供應商定義消息(VDM),所述PCIe VDM包含下游FAR。
陳述287. 本發明概念的實施例包含根據陳述282所述的方法,所述方法進一步包括使用FPGA的下游埠來將第二PCIe事務的結果發送到儲存裝置。
陳述288. 本發明概念的實施例包含根據陳述282所述的方法,所述方法進一步包括使用FPGA的上游埠來將第二PCIe事務的結果發送到處理器。
陳述289. 本發明概念的實施例包含根據陳述282所述的方法,所述方法進一步包括:
在FPGA的上游埠處從處理器接收第一PCIe事務;
通過確定第一PCIe事務是否與上游FAR中的第二位址相關聯來確定第一PCIe事務是否為第二加速指令,所述上游FAR與FPGA的上游埠相關聯;以及
至少部分地基於確定第一PCIe事務為第二加速指令,在FPGA的APM-F處處理第一PCIe事務;以及
至少部分地基於確定第一PCIe事務不是第二加速指令,使用FPGA的下游埠來將第一PCIe事務傳送到儲存裝置。
陳述290. 本發明概念的實施例包含根據陳述289所述的方法,其中第二加速指令來源於在處理器上運行的加速服務管理器(ASM)。
陳述291. 本發明概念的實施例包含根據陳述289所述的方法,所述方法進一步包括:
在FPGA處從儲存裝置接收上游FAR;以及
使上游FAR與FPGA的上游埠相關聯。
陳述292. 本發明概念的實施例包含根據陳述291所述的方法,其中在FPGA處從儲存裝置接收上游FAR包含經由邊帶匯流排在FPGA處從儲存裝置接收上游FAR,所述邊帶匯流排來自包含I2 C匯流排和SMBus的集合。
陳述293. 本發明概念的實施例包含根據陳述291所述的方法,其中在FPGA處從儲存裝置接收上游FAR包含從儲存裝置接收PCIe供應商定義消息(VDM),所述PCIe VDM包含上游FAR。
陳述294. 本發明概念的實施例包含根據陳述289所述的方法,所述方法進一步包括使用FPGA的上游埠來將第一PCIe事務的結果發送到儲存裝置。
陳述295. 本發明概念的實施例包含根據陳述289所述的方法,所述方法進一步包括使用FPGA的上游埠來將第一PCIe事務的結果發送到處理器。
陳述296. 本發明概念的實施例包含根據陳述282所述的方法,所述方法進一步包括:
在FPGA的上游埠處從處理器接收第一PCIe事務;
通過確定第一PCIe事務是否與由儲存裝置暴露的虛擬功能(VF)相關聯來確定第一PCIe事務是否為第二加速指令;以及
至少部分地基於確定第一PCIe事務為第二加速指令,在FPGA的APM-F處處理第一PCIe事務;以及
至少部分地基於確定第一PCIe事務不是第二加速指令,使用FPGA的下游埠來將第一PCIe事務傳送到儲存裝置。
陳述297. 本發明概念的實施例包含根據陳述296所述的方法,其中第二加速指令來源於在處理器上運行的加速服務管理器(ASM)。
陳述298. 本發明概念的實施例包含根據陳述296所述的方法,其中確定第一PCIe事務是否為第二加速指令包含確定第一PCIe事務是否包含具有VF的識別字的標籤。
陳述299. 本發明概念的實施例包含根據陳述298所述的方法,所述方法進一步包括:
在FPGA處從儲存裝置接收VF的識別字;以及
使VF的識別字與FPGA的上游埠相關聯。
陳述300. 本發明概念的實施例包含根據陳述299所述的方法,其中在FPGA處從儲存裝置接收VF的識別字包含經由邊帶匯流排在FPGA處從儲存裝置接收VF的識別字,所述邊帶匯流排來自包含I2 C匯流排和SMBus的集合。
陳述301. 本發明概念的實施例包含根據陳述299所述的方法,其中在FPGA處從儲存裝置接收VF的識別字包含從儲存裝置接收PCIe供應商定義消息(VDM),所述PCIe VDM包含VF的識別字。
陳述302. 本發明概念的實施例包含根據陳述296所述的方法,所述方法進一步包括使用FPGA的上游埠來將第一PCIe事務的結果發送到處理器。
陳述303. 本發明概念的實施例包含根據陳述282所述的方法,所述方法進一步包括:
在FPGA的上游埠處從處理器接收第一PCIe事務;
通過確定第一PCIe事務是否與由儲存裝置暴露的物理功能(PF)相關聯來確定第一PCIe事務是否為第二加速指令;以及
至少部分地基於確定第一PCIe事務為第二加速指令,在FPGA的APM-F處處理第一PCIe事務;以及
至少部分地基於確定第一PCIe事務不是第二加速指令,使用FPGA的下游埠來將第一PCIe事務傳送到儲存裝置。
陳述304. 本發明概念的實施例包含根據陳述303所述的方法,其中第二加速指令來源於在處理器上運行的加速服務管理器(ASM)。
陳述305. 本發明概念的實施例包含根據陳述303所述的方法,其中確定第一PCIe事務是否為第二加速指令包含確定第一PCIe事務是否包含具有PF的識別字的標籤。
陳述306. 本發明概念的實施例包含根據陳述305所述的方法,所述方法進一步包括:
在FPGA處從儲存裝置接收PF的識別字;以及
使PF的識別字與FPGA的上游埠相關聯。
陳述307. 本發明概念的實施例包含根據陳述306所述的方法,其中在FPGA處從儲存裝置接收PF的識別字包含經由邊帶匯流排在FPGA處從儲存裝置接收PF的識別字,所述邊帶匯流排來自包含I2 C匯流排和SMBus的集合。
陳述308. 本發明概念的實施例包含根據陳述306所述的方法,其中在FPGA處從儲存裝置接收PF的識別字包含從儲存裝置接收PCIe供應商定義消息(VDM),所述PCIe VDM包含PF的識別字。
陳述309. 本發明概念的實施例包含根據陳述303所述的方法,所述方法進一步包括使用FPGA的下游埠來將第一PCIe事務的結果發送到儲存裝置。
陳述310. 本發明概念的實施例包含根據陳述303所述的方法,所述方法進一步包括使用FPGA的上游埠來將第一PCIe事務的結果發送到處理器。
陳述311. 本發明概念的實施例包含根據陳述281所述的方法,其中:
在FPGA處從第一裝置接收周邊元件連接交換(PCIe)事務包含在FPGA的端點處從處理器接收第一PCIe事務;
在加速模組處確定PCIe事務是否為加速指令包含確定第一PCIe事務是否包含具有FPGA的第一PF的第一識別字或FPGA的第二PF的第二識別字的標籤;以及
將PCIe事務傳送到第二裝置包含使用FPGA的根埠來將第一PCIe事務傳送到儲存裝置。
陳述312. 本發明概念的實施例包含根據陳述311所述的方法,所述方法進一步包括:
在FPGA的根埠處從儲存裝置接收第二PCIe事務;
通過在FPGA處確定第二PCIe事務是否與下游FAR中的位址相關聯來確定第二PCIe事務是否為第二加速指令,所述下游FAR與FPGA的根埠相關聯;
至少部分地基於確定第二PCIe事務為第二加速指令,在FPGA的APM-F處處理第一PCIe事務;以及
至少部分地基於確定第二PCIe事務不是第二加速指令,使用FPGA的端點來將第二PCIe事務傳送到處理器。
陳述313. 本發明概念的實施例包含根據陳述312所述的方法,所述方法進一步包括:
在FPGA處從儲存裝置接收下游FAR;以及
使下游FAR與FPGA的根埠相關聯。
陳述314. 本發明概念的實施例包含根據陳述313所述的方法,其中在FPGA處從儲存裝置接收下游FAR包含經由邊帶匯流排在FPGA處從儲存裝置接收下游FAR,所述邊帶匯流排來自包含I2 C匯流排和SMBus的集合。
陳述315. 本發明概念的實施例包含根據陳述313所述的方法,其中在FPGA處從儲存裝置接收下游FAR包含從儲存裝置接收PCIe供應商定義消息(VDM),所述PCIe VDM包含下游FAR。
陳述316. 本發明概念的實施例包含根據陳述311所述的方法,其中第二加速指令來源於在處理器上運行的加速服務管理器(ASM)。
陳述317. 本發明概念的實施例包含根據陳述311所述的方法,所述方法進一步包括使用FPGA的端點來將第一PCIe事務的結果發送到處理器。
陳述318. 本發明概念的實施例包含根據陳述311所述的方法,所述方法進一步包括:
使用FPGA的配置監視器來確定儲存裝置的端點的配置,所述儲存裝置的端點與FPGA的根埠通訊;以及
使用FPGA的端點來複製儲存裝置上的端點的配置。
陳述319. 本發明概念的實施例包含根據陳述281所述的方法,其中:
在FPGA處從第一裝置接收周邊元件連接交換(PCIe)事務包含在FPGA的端點處從處理器接收第一PCIe事務;
在加速模組處確定PCIe事務是否為加速指令包含確定第一PCIe事務是否包含具有FPGA的第一PF的識別字或FPGA的第二PF的第二識別字的標籤;以及
將PCIe事務傳送到第二裝置包含使用FPGA的第一根埠來將第一PCIe事務傳送到儲存裝置。
陳述320. 本發明概念的實施例包含根據陳述319所述的方法,所述方法進一步包括:
在FPGA處從儲存裝置接收第二PCIe事務;
確定第二PCIe事務是在FPGA的第一根埠處還是在FPGA的第二根埠處接收到的;
至少部分地基於確定第二PCIe事務是在FPGA的第一根埠處接收到的,使用端點來將第二PCIe事務傳送到處理器;以及
至少部分地基於確定第二PCIe事務是在FPGA的第二根埠處接收到的,在FPGA的APM-F處處理第二PCIe事務。
陳述321. 本發明概念的實施例包含根據陳述319所述的方法,其中第二加速指令來源於在處理器上運行的加速服務管理器(ASM)。
陳述322. 本發明概念的實施例包含根據陳述319所述的方法,所述方法進一步包括使用FPGA的端點來將第一PCIe事務的結果發送到處理器。
陳述323. 本發明概念的實施例包含根據陳述319所述的方法,所述方法進一步包括:
使用FPGA的配置監視器來確定儲存裝置的端點的配置,所述儲存裝置的端點與FPGA的第一根埠通訊;以及
使用FPGA的端點來複製儲存裝置上的端點的配置。
陳述324. 本發明概念的實施例包含根據陳述281所述的方法,其中:
在FPGA處從第一裝置接收周邊元件連接交換(PCIe)事務包含在FPGA處從處理器接收第一PCIe事務;
在FPGA處確定第一PCIe事務是否為加速指令包含通過確定第一PCIe事務是否是在FPGA的第一端點處從處理器接收到的來確定第一PCIe事務是否為第二加速指令,所述FPGA包含第一端點和第二端點;以及
將PCIe事務傳送到第二裝置包含使用FPGA的第一根埠來將第一PCIe事務傳送到儲存裝置,所述FPGA包含第一根埠和第二根埠。
陳述325. 本發明概念的實施例包含根據陳述324所述的方法,所述方法進一步包括:
在FPGA處從儲存裝置接收第二PCIe事務;
通過確定第二PCIe事務是在FPGA的第一根埠處還是在FPGA的第二根埠處接收到的來確定第二PCIe事務是否為加速指令;
至少部分地基於確定第二PCIe事務是在FPGA的第一根埠處接收到的,使用第一端點來將第二PCIe事務傳送到處理器;以及
至少部分地基於確定第二PCIe事務是在FPGA的第二根埠處接收到的,在FPGA的APM-F處處理第二PCIe事務。
陳述326. 本發明概念的實施例包含根據陳述324所述的方法,其中第二PCIe事務來源於在處理器上運行的加速服務管理器(ASM)。
陳述327. 本發明概念的實施例包含根據陳述324所述的方法,所述方法進一步包括使用FPGA的第二端點來將第一PCIe事務的結果發送到處理器。
陳述328. 本發明概念的實施例包含根據陳述324所述的方法,所述方法進一步包括:
使用FPGA的配置監視器來確定儲存裝置的端點的配置,所述儲存裝置的端點與FPGA的第一根埠通訊;以及
使用FPGA的第一端點來複製儲存裝置上的端點的配置。
陳述329. 本發明概念的實施例包含根據陳述281所述的方法,其中:
在FPGA處從第一裝置接收周邊元件連接交換(PCIe)事務包含在FPGA處從處理器接收第一PCIe事務;
在加速模組處確定第一PCIe事務是否為加速指令包含通過確定第一PCIe事務是否是在FPGA的第一端點處從處理器接收到的來確定第一PCIe事務是否為第二加速指令,所述FPGA包含第一端點和第二端點;以及
將PCIe事務傳送到第二裝置包含使用FPGA的根埠來將第一PCIe事務傳送到儲存裝置。
陳述330. 本發明概念的實施例包含根據陳述329所述的方法,所述方法進一步包括:
在FPGA的根埠處從儲存裝置接收第二PCIe事務;
通過在FPGA處確定第二PCIe事務是否與下游FAR中的位址相關聯來確定第二PCIe事務是否為加速指令,所述下游FAR與FPGA的根埠相關聯;
至少部分地基於確定第二PCIe事務為加速指令,在FPGA的APM-F處處理所述第二PCIe事務;以及
至少部分地基於確定第二PCIe事務不是加速指令,使用FPGA的第一端點來將第二PCIe事務傳送到處理器。
陳述331. 本發明概念的實施例包含根據陳述330所述的方法,所述方法進一步包括:
在FPGA處從儲存裝置接收下游FAR;以及
使下游FAR與FPGA的根埠相關聯。
陳述332. 本發明概念的實施例包含根據陳述331所述的方法,其中在FPGA處從儲存裝置接收下游FAR包含經由邊帶匯流排在FPGA處從儲存裝置接收下游FAR,所述邊帶匯流排來自包含I2 C匯流排和SMBus的集合。
陳述333. 本發明概念的實施例包含根據陳述331所述的方法,其中在FPGA處從儲存裝置接收下游FAR包含從儲存裝置接收PCIe供應商定義消息(VDM),所述PCIe VDM包含下游FAR。
陳述334. 本發明概念的實施例包含根據陳述329所述的方法,其中第一PCIe事務來源於在處理器上運行的加速服務管理器(ASM)。
陳述335. 本發明概念的實施例包含根據陳述329所述的方法,所述方法進一步包括使用FPGA的第二端點來將第一PCIe事務的結果發送到處理器。
陳述336. 本發明概念的實施例包含根據陳述329所述的方法,所述方法進一步包括:
使用FPGA的配置監視器來確定儲存裝置的端點的配置,所述儲存裝置的端點與FPGA的根埠通訊;以及
使用FPGA的第一端點來複製儲存裝置上的端點的配置。
陳述337. 本發明概念的實施例包含一種方法,所述方法包括:
在第一橋接組件處從處理器接收周邊元件連接交換(PCIe)事務;
在第一橋接元件處確定PCIe事務是否為加速指令;
至少部分地基於確定PCIe事務為加速指令,將PCIe事務轉發到加速模組;以及
至少部分地基於確定PCIe事務不是加速指令,將PCIe事務轉發到儲存裝置,
其中處理器、第一橋接元件、加速模組以及儲存裝置使用PCIe匯流排通訊。
陳述338. 本發明概念的實施例包含根據陳述337所述的方法,其中:
加速模組使用現場可程式化閘陣列來實施;以及
儲存裝置包含固態驅動器(SSD)。
陳述339. 本發明概念的實施例包含根據陳述337所述的方法,其中在第一橋接元件處確定PCIe事務是否為加速指令包含確定PCIe事務是否與上游FAR中的位址相關聯,所述上游FAR與第一橋接組件的上游埠相關聯。
陳述340. 本發明概念的實施例包含根據陳述339所述的方法,所述方法進一步包括:
在第一橋接元件處從儲存裝置接收上游FAR;以及
使上游FAR與第一橋接組件的上游埠相關聯。
陳述341. 本發明概念的實施例包含根據陳述340所述的方法,其中在第一橋接元件處從儲存裝置接收上游FAR包含經由邊帶匯流排在第一橋接元件處從儲存裝置接收上游FAR,所述邊帶匯流排來自包含I2 C匯流排和SMBus的集合。
陳述342. 本發明概念的實施例包含根據陳述340所述的方法,其中在第一橋接元件處從儲存裝置接收上游FAR包含從儲存裝置接收PCIe供應商定義消息(VDM),所述PCIe VDM包含上游FAR。
陳述343. 本發明概念的實施例包含根據陳述337所述的方法,其中在第一橋接元件處確定PCIe事務是否為加速指令包含確定PCIe事務是否與由儲存裝置暴露的虛擬功能(VF)相關聯。
陳述344. 本發明概念的實施例包含根據陳述343所述的方法,其中確定PCIe事務是否與由儲存裝置暴露的虛擬功能(VF)相關聯包含確定PCIe事務是否包含具有VF的識別字的標籤。
陳述345. 本發明概念的實施例包含根據陳述344所述的方法,所述方法進一步包括:
在第一橋接元件處從儲存裝置接收VF的識別字;以及
使VF的識別字與第一橋接組件的上游埠相關聯。
陳述346. 本發明概念的實施例包含根據陳述345所述的方法,其中在第一橋接元件處從儲存裝置接收VF的識別字包含經由邊帶匯流排在第一橋接元件處從儲存裝置接收VF的識別字,所述邊帶匯流排來自包含I2 C匯流排和SMBus的集合。
陳述347. 本發明概念的實施例包含根據陳述345所述的方法,其中在第一橋接元件處從儲存裝置接收VF的識別字包含從儲存裝置接收PCIe供應商定義消息(VDM),所述PCIe VDM包含VF的識別字。
陳述348. 本發明概念的實施例包含根據陳述337所述的方法,其中在第一橋接元件處確定PCIe事務是否為加速指令包含確定PCIe事務是否與由儲存裝置暴露的物理功能(PF)相關聯。
陳述349. 本發明概念的實施例包含根據陳述348所述的方法,其中確定PCIe事務是否與由儲存裝置暴露的物理功能(PF)相關聯包含確定PCIe事務是否包含具有PF的識別字的標籤。
陳述350. 本發明概念的實施例包含根據陳述349所述的方法,所述方法進一步包括:
在第一橋接元件處從儲存裝置接收PF的識別字;以及
使PF的識別字與第一橋接組件的上游埠相關聯。
陳述351. 本發明概念的實施例包含根據陳述350所述的方法,其中在第一橋接元件處從儲存裝置接收PF的識別字包含經由邊帶匯流排在第一橋接元件處從儲存裝置接收PF的識別字,所述邊帶匯流排來自包含I2 C匯流排和SMBus的集合。
陳述352. 本發明概念的實施例包含根據陳述350所述的方法,其中在第一橋接元件處從儲存裝置接收PF的識別字包含從儲存裝置接收PCIe供應商定義消息(VDM),所述PCIe VDM包含PF的識別字。
陳述353. 本發明概念的實施例包含根據陳述337所述的方法,其中在第一橋接元件處確定PCIe事務是否為加速指令包含確定PCIe事務是否包含具有第一橋接元件的第一PF的識別字或第一橋接元件的第二PF的第二識別字的標籤。
陳述354. 本發明概念的實施例包含根據陳述353所述的方法,所述方法進一步包括:
使用第一橋接元件的配置監視器來確定儲存裝置的端點的配置;以及
使用第一橋接元件的端點來複製儲存裝置上的端點的配置。
陳述355. 本發明概念的實施例包含根據陳述337所述的方法,其中在第一橋接元件處確定PCIe事務是否為加速指令包含確定PCIe事務是否是在第一橋接元件的第一端點處從處理器接收到的,第一橋接元件包含第一端點和第二端點。
陳述356. 本發明概念的實施例包含根據陳述355所述的方法,所述方法進一步包括:
使用第一橋接元件的配置監視器來確定儲存裝置的端點的配置;以及
使用第一橋接元件的第一端點來複製儲存裝置上的端點的配置。
陳述357. 本發明概念的實施例包含一種方法,所述方法包括:
在第二橋接元件處從儲存裝置接收周邊元件連接交換(PCIe)事務;
在第二橋接元件處確定PCIe事務是否為加速指令;
至少部分地基於確定PCIe事務為加速指令,將PCIe事務轉發到加速模組;以及
至少部分地基於確定PCIe事務不是加速指令,將PCIe事務轉發到處理器,
其中處理器、第二橋接元件、加速模組以及儲存裝置使用PCIe匯流排通訊。
陳述358. 本發明概念的實施例包含根據陳述357所述的方法,其中:
加速模組使用現場可程式化閘陣列來實施;以及
儲存裝置包含固態驅動器(SSD)。
陳述359. 本發明概念的實施例包含根據陳述357所述的方法,其中在第二橋接元件處確定PCIe事務是否為加速指令包含在第二橋接元件處確定第二PCIe事務是否與下游過濾器位址範圍(FAR)中的位址相關聯,所述下游過濾器位址範圍與第二橋接元件的下游埠相關聯。
陳述360. 本發明概念的實施例包含根據陳述359所述的方法,所述方法進一步包括:
在第二橋接元件處從儲存裝置接收下游FAR;以及
使下游FAR與第二橋接元件的下游埠相關聯。
陳述361. 本發明概念的實施例包含根據陳述360所述的方法,其中在第二橋接元件處從儲存裝置接收下游FAR包含經由邊帶匯流排在第二橋接元件處從儲存裝置接收下游FAR,所述邊帶匯流排來自包含互積體電路(I2 C)匯流排和系統管理匯流排(SMBus)的集合。
陳述362. 本發明概念的實施例包含根據陳述360所述的方法,其中在第二橋接元件處從儲存裝置接收下游FAR包含從儲存裝置接收PCIe供應商定義消息(VDM),所述PCIe VDM包含下游FAR。
陳述363. 本發明概念的實施例包含根據陳述357所述的方法,其中在第二橋接元件處確定PCIe事務是否為加速指令包含確定PCIe事務是否是在第二橋接元件的第二根埠處接收到的,所述第二橋接元件包含第一根埠和第二根埠。
陳述364. 本發明概念的實施例包含一種方法,所述方法包括:
在儲存裝置處從加速模組接收第一PCIe事務;
確定第一PCIe事務是否為加速指令;
至少部分地基於確定第一PCIe事務為加速指令:
使用儲存裝置的儲存裝置加速平臺管理器(APM-S)來產生第二PCIe事務;以及
將第二PCIe事務從儲存裝置發送到加速模組;以及
至少部分地基於確定第一PCIe事務不是加速指令,對儲存在儲存裝置上的資料執行第一PCIe事務,
其中處理器、加速模組以及儲存裝置使用周邊元件連接交換(PCIe)匯流排通訊,且
其中加速模組在不將應用資料載入到與處理器相關聯的記憶體中的情況下支援針對在處理器上運行的應用程式對儲存裝置上的應用資料執行加速指令。
陳述365. 本發明概念的實施例包含根據陳述364所述的方法,其中儲存裝置為固態驅動器(SSD)。
陳述366. 本發明概念的實施例包含根據陳述365所述的方法,其中:
從儲存裝置的加速模組接收第一PCIe事務包含在SSD的端點處從加速模組接收第一PCIe事務;
確定第一PCIe事務是否為加速指令包含確定第一PCIe事務是否包含來自處理器的專用命令或是否來源於加速模組的APM-F;
使用儲存裝置的儲存裝置加速平臺管理器(APM-S)來產生第二PCIe事務包含由SSD的APM-S響應於第一PCIe事務而產生第二PCIe事務;以及
將第二PCIe事務從儲存裝置發送到加速模組包含將第二PCIe事務從SSD的端點發送到加速模組。
陳述367. 本發明概念的實施例包含根據陳述366所述的方法,其中第一PCIe事務來源於處理器且包含專用命令。
陳述368. 本發明概念的實施例包含根據陳述366所述的方法,其中確定第一PCIe事務是否包含來自處理器的專用命令包含確定第一PCIe事務是否由SSD的主機介面邏輯(HIL)包含來自處理器的專用命令。
陳述369. 本發明概念的實施例包含根據陳述368所述的方法,其中專用命令來源於在處理器上運行的加速服務管理器(ASM)。
陳述370. 本發明概念的實施例包含根據陳述366所述的方法,所述方法進一步包括:
從處理器請求主機系統位址的區塊;
選擇主機系統位址的區塊的子集作為下游過濾器位址範圍(FAR);以及
用下游FAR對加速模組的下游埠進行程式化。
陳述371. 本發明概念的實施例包含根據陳述370所述的方法,其中用下游FAR對加速模組的下游埠進行程式化包含經由邊帶匯流排用下游FAR對加速模組的下游埠進行程式化,所述邊帶匯流排來自包含互積體電路(I2 C)匯流排和系統管理匯流排(SMBus)的集合。
陳述372. 本發明概念的實施例包含根據陳述370所述的方法,其中用下游FAR對加速模組的下游埠進行程式化包含使用PCIe供應商定義消息(VDM)來用下游FAR對加速模組的下游埠進行程式化,所述PCIe VDM包含下游FAR。
陳述373. 本發明概念的實施例包含根據陳述370所述的方法,所述方法進一步包括:
選擇主機系統位址的區塊的第二子集作為上游FAR;以及
用上游FAR對加速模組的上游埠進行程式化。
陳述374. 本發明概念的實施例包含根據陳述373所述的方法,其中用上游FAR對加速模組的上游埠進行程式化包含經由邊帶匯流排用上游FAR對加速模組的上游埠進行程式化,所述邊帶匯流排來自包含I2 C匯流排和SMBus的集合。
陳述375. 本發明概念的實施例包含根據陳述373所述的方法,其中用上游FAR對加速模組的上游埠進行程式化包含使用PCIe供應商定義消息(VDM)來用上游FAR對加速模組的上游埠進行程式化,所述PCIe VDM包含上游FAR。
陳述376. 本發明概念的實施例包含根據陳述366所述的方法,所述方法進一步包括:
從處理器請求主機系統位址的區塊;
選擇主機系統位址的區塊的子集作為下游FAR;以及
用下游FAR對加速模組的根埠進行程式化。
陳述377. 本發明概念的實施例包含根據陳述376所述的方法,其中用下游FAR對加速模組的根埠進行程式化包含經由邊帶匯流排用下游FAR對加速模組的根埠進行程式化,所述邊帶匯流排來自包含I2 C匯流排和SMBus的集合。
陳述378. 本發明概念的實施例包含根據陳述376所述的方法,其中用下游FAR對加速模組的根埠進行程式化包含使用PCIe供應商定義消息(VDM)來用下游FAR對加速模組的根埠進行程式化,所述PCIe VDM包含下游FAR。
陳述379. 本發明概念的實施例包含根據陳述366所述的方法,所述方法進一步包括:
在SSD的端點處從加速模組接收第一PCIe事務的結果;以及
使用SSD的端點來將第一PCIe事務的結果轉發到處理器。
陳述380. 本發明概念的實施例包含根據陳述366所述的方法,所述方法進一步包括:
提供使SSD暴露的物理功能(PF);以及
提供使加速模組暴露的虛擬功能(VF)。
陳述381. 本發明概念的實施例包含根據陳述380所述的方法,所述方法進一步包括用VF的識別字對加速模組的上游埠進行程式化。
陳述382. 本發明概念的實施例包含根據陳述366所述的方法,所述方法進一步包括:
提供使SSD暴露的第一PF;以及
提供使加速模組暴露的第二PF。
陳述383. 本發明概念的實施例包含根據陳述382所述的方法,所述方法進一步包括用第二PF的識別字對加速模組的上游埠進行程式化。
陳述384. 本發明概念的實施例包含根據陳述365所述的方法,其中:
從儲存裝置的加速模組接收第一PCIe事務包含在SSD的端點處從加速模組接收第一PCIe事務;
確定第一PCIe事務是否為加速指令包含確定第一PCIe事務是否是在第二端點處由SSD接收的,所述SSD包含第二端點和第一端點;
使用儲存裝置的儲存裝置加速平臺管理器(APM-S)來產生第二PCIe事務包含由SSD的APM-S響應於第一PCIe事務而產生第二PCIe事務;以及
將第二PCIe事務從儲存裝置發送到加速模組包含將第二PCIe事務從SSD的第二端點發送到加速模組。
陳述385. 本發明概念的實施例包含一種製品,所述製品包括非暫時性儲存媒體,所述非暫時性儲存媒體具有儲存於其上的在由機器執行時引起以下操作的指令:
在加速處模組從第一裝置接收周邊元件連接交換(PCIe)事務;
在加速模組處確定PCIe事務是否為加速指令;
至少部分地基於確定PCIe事務為加速指令,在加速模組的加速平臺管理器(APM-F)處處理PCIe事務;以及
至少部分地基於確定PCIe事務不是加速指令,將PCIe事務傳送到第二裝置,
其中加速模組在不將應用資料載入到與處理器相關聯的記憶體中的情況下支援針對應用程式對儲存裝置上的應用資料執行加速指令,且
其中處理器、加速模組以及儲存裝置使用PCIe匯流排通訊。
陳述386. 本發明概念的實施例包含根據陳述385所述的製品,其中使用現場可程式化閘陣列來實施加速模組。
陳述387. 本發明概念的實施例包含根據陳述386所述的製品,其中:
在FPGA處從第一裝置接收周邊元件連接交換(PCIe)事務包含在FPGA的下游埠處從儲存裝置接收第二PCIe事務;
在加速模組處確定PCIe事務是否為加速指令包含在FPGA處確定第二PCIe事務是否與下游過濾器位址範圍(FAR)中的位址相關聯,所述下游過濾器位址範圍與FPGA的下游埠相關聯;以及
將PCIe事務傳送到第二裝置包含使用FPGA的上游埠來將第二PCIe事務傳送到處理器。
陳述388. 本發明概念的實施例包含根據陳述387所述的製品,所述非暫時性儲存媒體具有儲存於其上的在由機器執行時引起以下操作的其它指令:
在FPGA的上游埠處從處理器接收第一PCIe事務;以及
使用FPGA的下游處理器來將第一PCIe事務傳送到儲存裝置。
陳述389. 本發明概念的實施例包含根據陳述387所述的製品,所述非暫時性儲存媒體具有儲存於其上的在由機器執行時引起以下操作的其它指令:
在FPGA處從儲存裝置接收下游FAR;以及
使下游FAR與FPGA的下游埠相關聯。
陳述390. 本發明概念的實施例包含根據陳述389所述的製品,其中在FPGA處從儲存裝置接收下游FAR包含經由邊帶匯流排在FPGA處從儲存裝置接收下游FAR,所述邊帶匯流排來自包含互積體電路(I2 C)匯流排和系統管理匯流排(SMBus)的集合。
陳述391. 本發明概念的實施例包含根據陳述389所述的製品,其中在FPGA處從儲存裝置接收下游FAR包含從儲存裝置接收PCIe供應商定義消息(VDM),所述PCIe VDM包含下游FAR。
陳述392. 本發明概念的實施例包含根據陳述387所述的製品,所述非暫時性儲存媒體具有儲存於其上的在由機器執行時引起以下操作的其它指令:使用FPGA的下游埠來將第二PCIe事務的結果發送到儲存裝置。
陳述393. 本發明概念的實施例包含根據陳述387所述的製品,所述非暫時性儲存媒體具有儲存於其上的在由機器執行時引起以下操作的其它指令:使用FPGA的上游埠來將第二PCIe事務的結果發送到處理器。
陳述394. 本發明概念的實施例包含根據陳述387所述的製品,所述非暫時性儲存媒體具有儲存於其上的在由機器執行時引起以下操作的其它指令:
在FPGA的上游埠處從處理器接收第一PCIe事務;
通過確定第一PCIe事務是否與上游FAR中的第二位址相關聯來確定第一PCIe事務是否為第二加速指令,所述上游FAR與FPGA的上游埠相關聯;以及
至少部分地基於確定第一PCIe事務為第二加速指令,在FPGA的APM-F處處理第一PCIe事務;以及
至少部分地基於確定第一PCIe事務不是第二加速指令,使用FPGA的下游埠來將第一PCIe事務傳送到儲存裝置。
陳述395. 本發明概念的實施例包含根據陳述394所述的製品,其中第二加速指令來源於在處理器上運行的加速服務管理器(ASM)。
陳述396. 本發明概念的實施例包含根據陳述394所述的製品,所述非暫時性儲存媒體具有儲存於其上的在由機器執行時引起以下操作的其它指令:
在FPGA處從儲存裝置接收上游FAR;以及
使上游FAR與FPGA的上游埠相關聯。
陳述397. 本發明概念的實施例包含根據陳述396所述的製品,其中在FPGA處從儲存裝置接收上游FAR包含經由邊帶匯流排在FPGA處從儲存裝置接收上游FAR,所述邊帶匯流排來自包含I2 C匯流排和SMBus的集合。
陳述398. 本發明概念的實施例包含根據陳述396所述的製品,其中在FPGA處從儲存裝置接收上游FAR包含從儲存裝置接收PCIe供應商定義消息(VDM),所述PCIe VDM包含上游FAR。
陳述399. 本發明概念的實施例包含根據陳述394所述的製品,所述非暫時性儲存媒體具有儲存於其上的在由機器執行時引起以下操作的其它指令:使用FPGA的上游埠來將第一PCIe事務的結果發送到儲存裝置。
陳述400. 本發明概念的實施例包含根據陳述394所述的製品,所述非暫時性儲存媒體具有儲存於其上的在由機器執行時引起以下操作的其它指令:使用FPGA的上游埠來將第一PCIe事務的結果發送到處理器。
陳述401. 本發明概念的實施例包含根據陳述387所述的製品,所述非暫時性儲存媒體具有儲存於其上的在由機器執行時引起以下操作的其它指令:
在FPGA的上游埠處從處理器接收第一PCIe事務;
通過確定第一PCIe事務是否與由儲存裝置暴露的虛擬功能(VF)相關聯來確定第一PCIe事務是否為第二加速指令;以及
至少部分地基於確定第一PCIe事務為第二加速指令,在FPGA的APM-F處處理第一PCIe事務;以及
至少部分地基於確定第一PCIe事務不是第二加速指令,使用FPGA的下游埠來將第一PCIe事務傳送到儲存裝置。
陳述402. 本發明概念的實施例包含根據陳述401所述的製品,其中第二加速指令來源於在處理器上運行的加速服務管理器(ASM)。
陳述403. 本發明概念的實施例包含根據陳述401所述的製品,其中確定第一PCIe事務是否為第二加速指令包含確定第一PCIe事務是否包含具有VF的識別字的標籤。
陳述404. 本發明概念的實施例包含根據陳述403所述的製品,所述非暫時性儲存媒體具有儲存於其上的在由機器執行時引起以下操作的其它指令:
在FPGA處從儲存裝置接收VF的識別字;以及
使VF的識別字與FPGA的上游埠相關聯。
陳述405. 本發明概念的實施例包含根據陳述404所述的製品,其中在FPGA處從儲存裝置接收VF的識別字包含經由邊帶匯流排在FPGA處從儲存裝置接收VF的識別字,所述邊帶匯流排來自包含I2 C匯流排和SMBus的集合。
陳述406. 本發明概念的實施例包含根據陳述404所述的製品,其中在FPGA處從儲存裝置接收VF的識別字包含從儲存裝置接收PCIe供應商定義消息(VDM),所述PCIe VDM包含VF的識別字。
陳述407. 本發明概念的實施例包含根據陳述401所述的製品,所述非暫時性儲存媒體具有儲存於其上的在由機器執行時引起以下操作的其它指令:使用FPGA的上游埠來將第一PCIe事務的結果發送到處理器。
陳述408. 本發明概念的實施例包含根據陳述387所述的製品,所述非暫時性儲存媒體具有儲存於其上的在由機器執行時引起以下操作的其它指令:
在FPGA的上游埠處從處理器接收第一PCIe事務;
通過確定第一PCIe事務是否與由儲存裝置暴露的物理功能(PF)相關聯來確定第一PCIe事務是否為第二加速指令;以及
至少部分地基於確定第一PCIe事務為第二加速指令,在FPGA的APM-F處處理第一PCIe事務;以及
至少部分地基於確定第一PCIe事務不是第二加速指令,使用FPGA的下游埠來將第一PCIe事務傳送到儲存裝置。
陳述409. 本發明概念的實施例包含根據陳述408所述的製品,其中第二加速指令來源於在處理器上運行的加速服務管理器(ASM)。
陳述410. 本發明概念的實施例包含根據陳述408所述的製品,其中確定第一PCIe事務是否為第二加速指令包含確定第一PCIe事務是否包含具有PF的識別字的標籤。
陳述411. 本發明概念的實施例包含根據陳述410所述的製品,所述非暫時性儲存媒體具有儲存於其上的在由機器執行時引起以下操作的其它指令:
在FPGA處從儲存裝置接收PF的識別字;以及
使PF的識別字與FPGA的上游埠相關聯。
陳述412. 本發明概念的實施例包含根據陳述411所述的製品,其中在FPGA處從儲存裝置接收PF的識別字包含經由邊帶匯流排在FPGA處從儲存裝置接收PF的識別字,所述邊帶匯流排來自包含I2 C匯流排和SMBus的集合。
陳述413. 本發明概念的實施例包含根據陳述411所述的製品,其中在FPGA處從儲存裝置接收PF的識別字包含從儲存裝置接收PCIe供應商定義消息(VDM),所述PCIe VDM包含PF的識別字。
陳述414. 本發明概念的實施例包含根據陳述408所述的製品,所述非暫時性儲存媒體具有儲存於其上的在由機器執行時引起以下操作的其它指令:使用FPGA的上游埠來將第一PCIe事務的結果發送到處理器。
陳述415. 本發明概念的實施例包含根據陳述386的製品,其中:
在FPGA處從第一裝置接收周邊元件連接交換(PCIe)事務包含在FPGA的端點處從處理器接收第一PCIe事務;
在加速模組處確定PCIe事務是否為加速指令包含確定第一PCIe事務是否包含具有FPGA的第一PF的第一識別字或FPGA的第二PF的第二識別字的標籤;以及
將PCIe事務傳送到第二裝置包含使用FPGA的根埠來將第一PCIe事務傳送到儲存裝置。
陳述416. 本發明概念的實施例包含根據陳述415所述的製品,所述非暫時性儲存媒體具有儲存於其上的在由機器執行時引起以下操作的其它指令:
在FPGA的根埠處從儲存裝置接收第二PCIe事務;
通過在FPGA處確定第二PCIe事務是否與下游FAR中的位址相關聯來確定第二PCIe事務是否為第二加速指令,所述下游FAR與FPGA的根埠相關聯;
至少部分地基於確定第二PCIe事務為第二加速指令,在FPGA的APM-F處處理第一PCIe事務;以及
至少部分地基於確定第二PCIe事務不是第二加速指令,使用FPGA的端點來將第二PCIe事務傳送到處理器。
陳述417. 本發明概念的實施例包含根據陳述416所述的製品,所述非暫時性儲存媒體具有儲存於其上的在由機器執行時引起以下操作的其它指令:
在FPGA處從儲存裝置接收下游FAR;以及
使下游FAR與FPGA的根埠相關聯。
陳述418. 本發明概念的實施例包含根據陳述417所述的製品,其中在FPGA處從儲存裝置接收下游FAR包含經由邊帶匯流排在FPGA處從儲存裝置接收下游FAR,所述邊帶匯流排來自包含I2 C匯流排和SMBus的集合。
陳述419. 本發明概念的實施例包含根據陳述417所述的製品,其中在FPGA處從儲存裝置接收下游FAR包含從儲存裝置接收PCIe供應商定義消息(VDM),所述PCIe VDM包含下游FAR。
陳述420. 本發明概念的實施例包含根據陳述415所述的製品,其中第二加速指令來源於在處理器上運行的加速服務管理器(ASM)。
陳述421. 本發明概念的實施例包含根據陳述415所述的製品,非暫時性儲存媒體具有儲存於其上的在由機器執行時引起以下操作的其它指令:使用FPGA的端點來將第一PCIe事務的結果發送到處理器。
陳述422. 本發明概念的實施例包含根據陳述415所述的製品,所述非暫時性儲存媒體具有儲存於其上的在由機器執行時引起以下操作的其它指令:
使用FPGA的配置監視器來確定儲存裝置的端點的配置,所述儲存裝置的端點與FPGA的根埠通訊;以及
使用FPGA的端點來複製儲存裝置上的端點的配置。
陳述423. 本發明概念的實施例包含根據陳述386所述的製品,其中:
在FPGA處從第一裝置接收周邊元件連接交換(PCIe)事務包含在FPGA的端點處從處理器接收第一PCIe事務;
在加速模組處確定PCIe事務是否為加速指令包含確定第一PCIe事務是否包含具有FPGA的第一PF的第一識別字或FPGA的第二PF的第二識別字的標籤;以及
將PCIe事務傳送到第二裝置包含使用FPGA的第一根埠來將第一PCIe事務傳送到儲存裝置。
陳述424. 本發明概念的實施例包含根據陳述423所述的製品,所述非暫時性儲存媒體具有儲存於其上的在由機器執行時引起以下操作的其它指令:
在FPGA處從儲存裝置接收第二PCIe事務;
確定第二PCIe事務是在FPGA的第一根埠處還是在FPGA的第二根埠處接收到的;
至少部分地基於確定第二PCIe事務是在FPGA的第一根埠處接收到的,使用端點來將第二PCIe事務傳送到處理器;以及
至少部分地基於確定第二PCIe事務是在FPGA的第二根埠處接收到的,在FPGA的APM-F處處理第二PCIe事務。
陳述425. 本發明概念的實施例包含根據陳述423所述的製品,其中第二加速指令來源於在處理器上運行的加速服務管理器(ASM)。
陳述426. 本發明概念的實施例包含根據陳述423所述的製品,非暫時性儲存媒體具有儲存於其上的在由機器執行時引起以下操作的其它指令:使用FPGA的端點來將第一PCIe事務的結果發送到處理器。
陳述427. 本發明概念的實施例包含根據陳述423所述的製品,所述非暫時性儲存媒體具有儲存於其上的在由機器執行時引起以下操作的其它指令:
使用FPGA的配置監視器來確定儲存裝置的端點的配置,所述儲存裝置的端點與FPGA的第一根埠通訊;以及
使用FPGA的端點來複製儲存裝置上的端點的配置。
陳述428. 本發明概念的實施例包含根據陳述386所述的製品,其中:
在FPGA處從第一裝置接收周邊元件連接交換(PCIe)事務包含在FPGA處從處理器接收第一PCIe事務;
在FPGA處確定第一PCIe事務是否為加速指令包含通過確定第一PCIe事務是否是在FPGA的第一端點處從處理器接收到的來確定第一PCIe事務是否為第二加速指令,所述FPGA包含第一端點和第二端點;以及
將PCIe事務傳送到第二裝置包含使用FPGA的第一根埠來將第一PCIe事務傳送到儲存裝置,所述FPGA包含第一根埠和第二根埠。
陳述429. 本發明概念的實施例包含根據陳述428所述的製品,所述非暫時性儲存媒體具有儲存於其上的在由機器執行時引起以下操作的其它指令:
在FPGA處從儲存裝置接收第二PCIe事務;
通過確定第二PCIe事務是在FPGA的第一根埠處還是在FPGA的第二根埠處接收到的來確定第二PCIe事務是否為加速指令;
至少部分地基於確定第二PCIe事務是在FPGA的第一根埠處接收到的,使用第一端點來將第二PCIe事務傳送到處理器;以及
至少部分地基於確定第二PCIe事務是在FPGA的第二根埠處接收到的,在FPGA的APM-F處處理第二PCIe事務。
陳述430. 本發明概念的實施例包含根據陳述428所述的製品,其中第二PCIe事務來源於在處理器上運行的加速服務管理器(ASM)。
陳述431. 本發明概念的實施例包含根據陳述428所述的製品,所述非暫時性儲存媒體具有儲存於其上的在由機器執行時引起以下操作的其它指令:使用FPGA的第二端點來將第一PCIe事務的結果發送到處理器。
陳述432. 本發明概念的實施例包含根據陳述428所述的製品,所述非暫時性儲存媒體具有儲存於其上的在由機器執行時引起以下操作的其它指令:
使用FPGA的配置監視器來確定儲存裝置的端點的配置,所述儲存裝置的端點與FPGA的第一根埠通訊;以及
使用FPGA的第一端點來複製儲存裝置上的端點的配置。
陳述433. 本發明概念的實施例包含根據陳述386所述的製品,其中:
在FPGA處從第一裝置接收周邊元件連接交換(PCIe)事務包含在FPGA處從處理器接收第一PCIe事務;
在加速模組處確定第一PCIe事務是否為加速指令包含通過確定第一PCIe事務是否是在FPGA的第一端點處從處理器接收到的來確定第一PCIe事務是否為第二加速指令,所述FPGA包含第一端點和第二端點;以及
將PCIe事務傳送到第二裝置包含使用FPGA的根埠來將第一PCIe事務傳送到儲存裝置。
陳述434. 本發明概念的實施例包含根據陳述433所述的製品,所述非暫時性儲存媒體具有儲存於其上的在由機器執行時引起以下操作的其它指令:
在FPGA的根埠處從儲存裝置接收第二PCIe事務;
通過在FPGA處確定第二PCIe事務是否與下游FAR中的位址相關聯來確定第二PCIe事務是否為加速指令,所述下游FAR與FPGA的根埠相關聯;
至少部分地基於確定第二PCIe事務為加速指令,在FPGA的APM-F處處理所述第二PCIe事務;以及
至少部分地基於確定第二PCIe事務不是加速指令,使用FPGA的第一端點來將第二PCIe事務傳送到處理器。
陳述435. 本發明概念的實施例包含根據陳述434所述的製品,所述非暫時性儲存媒體具有儲存於其上的在由機器執行時引起以下操作的其它指令:
在FPGA處從儲存裝置接收下游FAR;以及
使下游FAR與FPGA的根埠相關聯。
陳述436. 本發明概念的實施例包含根據陳述435所述的製品,其中在FPGA處從儲存裝置接收下游FAR包含經由邊帶匯流排在FPGA處從儲存裝置接收下游FAR,所述邊帶匯流排來自包含I2 C匯流排和SMBus的集合。
陳述437. 本發明概念的實施例包含根據陳述435所述的製品,其中在FPGA處從儲存裝置接收下游FAR包含從儲存裝置接收PCIe供應商定義消息(VDM),所述PCIe VDM包含下游FAR。
陳述438. 本發明概念的實施例包含根據陳述433所述的製品,其中第一PCIe事務來源於在處理器上運行的加速服務管理器(ASM)。
陳述439. 本發明概念的實施例包含根據陳述433所述的製品,所述非暫時性儲存媒體具有儲存於其上的在由機器執行時引起以下操作的其它指令:使用FPGA的第二端點來將第一PCIe事務的結果發送到處理器。
陳述440. 本發明概念的實施例包含根據陳述433所述的製品,所述非暫時性儲存媒體具有儲存於其上的在由機器執行時引起以下操作的其它指令:
使用FPGA的配置監視器來確定儲存裝置的端點的配置,所述儲存裝置的端點與FPGA的根埠通訊;以及
使用FPGA的第一端點來複製儲存裝置上的端點的配置。
陳述441. 本發明概念的實施例包含一種製品,所述製品包括非暫時性儲存媒體,所述非暫時性儲存媒體具有儲存於其上的在由機器執行時引起以下操作的指令:
在儲存裝置處從加速模組接收第一PCIe事務;
確定第一PCIe事務是否為加速指令;
至少部分地基於確定第一PCIe事務為加速指令:
使用儲存裝置的儲存裝置加速平臺管理器(APM-S)來產生第二PCIe事務;以及
將第二PCIe事務從儲存裝置發送到加速模組;以及
至少部分地基於確定第一PCIe事務不是加速指令,對儲存在儲存裝置上的資料執行第一PCIe事務,
其中處理器、加速模組以及儲存裝置使用周邊元件連接交換(PCIe)匯流排通訊,且
其中加速模組在不將應用資料載入到與處理器相關聯的記憶體中的情況下支援針對在處理器上運行的應用程式對儲存裝置上的應用資料執行加速指令。
陳述442. 本發明概念的實施例包含根據陳述441所述的製品,其中儲存裝置為固態驅動器(SSD)。
陳述443. 本發明概念的實施例包含根據陳述442所述的製品,其中:
從儲存裝置的加速模組接收第一PCIe事務包含在SSD的端點處從加速模組接收第一PCIe事務;
確定第一PCIe事務是否為加速指令包含確定第一PCIe事務是否包含來自處理器的專用命令或是否來源於加速模組的APM-F;
使用儲存裝置的儲存裝置加速平臺管理器(APM-S)來產生第二PCIe事務包含由SSD的APM-S響應於第一PCIe事務而產生第二PCIe事務;以及
將第二PCIe事務從儲存裝置發送到加速模組包含將第二PCIe事務從SSD的端點發送到加速模組。
陳述444. 本發明概念的實施例包含根據陳述443所述的製品,其中第一PCIe事務來源於處理器且包含專用命令。
陳述445. 本發明概念的實施例包含根據陳述443所述的製品,其中確定第一PCIe事務是否包含來自處理器的專用命令包含確定第一PCIe事務是否由SSD的主機介面邏輯(HIL)包含來自處理器的專用命令。
陳述446. 本發明概念的實施例包含根據陳述445所述的製品,其中專用命令來源於在處理器上運行的加速服務管理器(ASM)。
陳述447. 本發明概念的實施例包含根據陳述443所述的製品,所述非暫時性儲存媒體具有儲存於其上的在由機器執行時引起以下操作的其它指令:
從處理器請求主機系統位址的區塊;
選擇主機系統位址的區塊的子集作為下游過濾器位址範圍(FAR);以及
用下游FAR對加速模組的下游埠進行程式化。
陳述448. 本發明概念的實施例包含根據陳述447所述的製品,其中用下游FAR對加速模組的下游埠進行程式化包含經由邊帶匯流排用下游FAR對加速模組的下游埠進行程式化,所述邊帶匯流排來自包含互積體電路(I2 C)匯流排和系統管理匯流排(SMBus)的集合。
陳述449. 本發明概念的實施例包含根據陳述447所述的製品,其中用下游FAR對加速模組的下游埠進行程式化包含使用PCIe供應商定義消息(VDM)來用下游FAR對加速模組的下游埠進行程式化,所述PCIe VDM包含下游FAR。
陳述450. 本發明概念的實施例包含根據陳述447所述的製品,所述非暫時性儲存媒體具有儲存於其上的在由機器執行時引起以下操作的其它指令:
選擇主機系統位址的區塊的第二子集作為上游FAR;以及
用上游FAR對加速模組的上游埠進行程式化。
陳述451. 本發明概念的實施例包含根據陳述450所述的製品,其中用上游FAR對加速模組的上游埠進行程式化包含經由邊帶匯流排用上游FAR對加速模組的上游埠進行程式化,所述邊帶匯流排來自包含I2 C匯流排和SMBus的集合。
陳述452. 本發明概念的實施例包含根據陳述450所述的製品,其中用上游FAR對加速模組的上游埠進行程式化包含使用PCIe供應商定義消息(VDM)來用上游FAR對加速模組的上游埠進行程式化,所述PCIe VDM包含上游FAR。
陳述453. 本發明概念的實施例包含根據陳述443所述的製品,所述非暫時性儲存媒體具有儲存於其上的在由機器執行時引起以下操作的其它指令:
從處理器請求主機系統位址的區塊;
選擇主機系統位址的區塊的子集作為下游FAR;以及
用下游FAR對加速模組的根埠進行程式化。
陳述454. 本發明概念的實施例包含根據陳述453所述的製品,其中用下游FAR對加速模組的根埠進行程式化包含經由邊帶匯流排用下游FAR對加速模組的根埠進行程式化,所述邊帶匯流排來自包含I2 C匯流排和SMBus的集合。
陳述455. 本發明概念的實施例包含根據陳述453所述的製品,其中用下游FAR對加速模組的根埠進行程式化包含使用PCIe供應商定義消息(VDM)來用下游FAR對加速模組的根埠進行程式化,所述PCIe VDM包含下游FAR。
陳述456. 本發明概念的實施例包含根據陳述443所述的製品,所述非暫時性儲存媒體具有儲存於其上的在由機器執行時引起以下操作的其它指令:
在SSD的端點處從加速模組接收第一PCIe事務的結果;以及
使用SSD的端點來將第一PCIe事務的結果轉發到處理器。
陳述457. 本發明概念的實施例包含根據陳述443所述的製品,所述非暫時性儲存媒體具有儲存於其上的在由機器執行時引起以下操作的其它指令:
提供使SSD暴露的物理功能(PF);以及
提供使加速模組暴露的虛擬功能(VF)。
陳述458. 本發明概念的實施例包含根據陳述457所述的製品,所述非暫時性儲存媒體具有儲存於其上的在由機器執行時引起以下操作的其它指令:用VF的識別字對加速模組的上游埠進行程式化。
陳述459. 本發明概念的實施例包含根據陳述443所述的製品,所述非暫時性儲存媒體具有儲存於其上的在由機器執行時引起以下操作的其它指令:
提供使SSD暴露的第一PF;以及
提供使加速模組暴露的第二PF。
陳述460. 本發明概念的實施例包含根據陳述459所述的製品,所述非暫時性儲媒體具有儲存於其上的在由機器執行時引起以下操作的其它指令:用第二PF的識別字對加速模組的上游埠進行程式化。
陳述461. 本發明概念的實施例包含根據陳述442所述的製品,其中:
從儲存裝置的加速模組接收第一PCIe事務包含在SSD的端點處從加速模組接收第一PCIe事務;
確定第一PCIe事務是否為加速指令包含確定第一PCIe事務是否是在第二端點處由SSD接收的,所述SSD包含第二端點和第一端點;
使用儲存裝置的儲存裝置加速平臺管理器(APM-S)來產生第二PCIe事務包含由SSD的APM-S響應於第一PCIe事務而產生第二PCIe事務;以及
將第二PCIe事務從儲存裝置發送到加速模組包含將第二PCIe事務從SSD的第二端點發送到加速模組。
陳述462. 本發明概念的實施例包含一種製品,所述製品包括非暫時性儲存媒體,所述非暫時性儲存媒體具有儲存於其上的在由機器執行時引起以下操作的指令:
在第一橋接組件處從處理器接收周邊元件連接交換(PCIe)事務;
在第一橋接元件處確定PCIe事務是否為加速指令;
至少部分地基於確定PCIe事務為加速指令,將PCIe事務轉發到加速模組;以及
至少部分地基於確定PCIe事務不是加速指令,將PCIe事務轉發到儲存裝置,
其中處理器、第一橋接元件、加速模組以及儲存裝置使用PCIe匯流排通訊。
陳述463. 本發明概念的實施例包含根據陳述462所述的製品,其中:
加速模組使用現場可程式化閘陣列來實施;以及
儲存裝置包含固態驅動器(SSD)。
陳述464. 本發明概念的實施例包含根據陳述462所述的製品,其中在第一橋接元件處確定PCIe事務是否為加速指令包含確定PCIe事務是否與上游FAR中的位址相關聯,所述上游FAR與第一橋接組件的上游埠相關聯。
陳述465. 本發明概念的實施例包含根據陳述464所述的製品,所述非暫時性儲存媒體具有儲存於其上的在由機器執行時引起以下操作的其它指令:
在第一橋接元件處從儲存裝置接收上游FAR;以及
使上游FAR與第一橋接組件的上游埠相關聯。
陳述466. 本發明概念的實施例包含根據陳述465所述的製品,其中在第一橋接元件處從儲存裝置接收上游FAR包含經由邊帶匯流排在第一橋接元件處從儲存裝置接收上游FAR,所述邊帶匯流排來自包含I2 C匯流排和SMBus的集合。
陳述467. 本發明概念的實施例包含根據陳述465所述的製品,其中在第一橋接元件處從儲存裝置接收上游FAR包含從儲存裝置接收PCIe供應商定義消息(VDM),所述PCIe VDM包含上游FAR。
陳述468. 本發明概念的實施例包含根據陳述462所述的製品,其中在第一橋接元件處確定PCIe事務是否為加速指令包含確定PCIe事務是否與由儲存裝置暴露的虛擬功能(VF)相關聯。
陳述469. 本發明概念的實施例包含根據陳述468所述的製品,其中確定PCIe事務是否與由儲存裝置暴露的虛擬功能(VF)相關聯包含確定PCIe事務是否包含具有VF的識別字的標籤。
陳述470. 本發明概念的實施例包含根據陳述469所述的製品,所述非暫時性儲存媒體具有儲存於其上的在由機器執行時引起以下操作的其它指令:
在第一橋接元件處從儲存裝置接收VF的識別字;以及
使VF的識別字與第一橋接組件的上游埠相關聯。
陳述471. 本發明概念的實施例包含根據陳述470所述的製品,其中在第一橋接元件處從儲存裝置接收VF的識別字包含經由邊帶匯流排在第一橋接元件處從儲存裝置接收VF的識別字,所述邊帶匯流排來自包含I2 C匯流排和SMBus的集合。
陳述472. 本發明概念的實施例包含根據陳述470所述的製品,其中在第一橋接元件處從儲存裝置接收VF的識別字包含從儲存裝置接收PCIe供應商定義消息(VDM),所述PCIe VDM包含VF的識別字。
陳述473. 本發明概念的實施例包含根據陳述462所述的製品,其中在第一橋接元件處確定PCIe事務是否為加速指令包含確定PCIe事務是否與由儲存裝置暴露的物理功能(PF)相關聯。
陳述474. 本發明概念的實施例包含根據陳述473所述的製品,其中確定PCIe事務是否與由儲存裝置暴露的物理功能(PF)相關聯包含確定PCIe事務是否包含具有PF的識別字的標籤。
陳述475. 本發明概念的實施例包含根據陳述474所述的製品,所述非暫時性儲存媒體具有儲存於其上的在由機器執行時引起以下操作的其它指令:
在第一橋接元件處從儲存裝置接收PF的識別字;以及
使PF的識別字與第一橋接組件的上游埠相關聯。
陳述476. 本發明概念的實施例包含根據陳述475所述的製品,其中在第一橋接元件處從儲存裝置接收PF的識別字包含經由邊帶匯流排在第一橋接元件處從儲存裝置接收PF的識別字,所述邊帶匯流排來自包含I2 C匯流排和SMBus的集合。
陳述477. 本發明概念的實施例包含根據陳述475所述的製品,其中在第一橋接元件處從儲存裝置接收PF的識別字包含從儲存裝置接收PCIe供應商定義消息(VDM),所述PCIe VDM包含PF的識別字。
陳述478. 本發明概念的實施例包含根據陳述462所述的製品,其中在第一橋接元件處確定PCIe事務是否為加速指令包含確定PCIe事務是否包含具有第一橋接元件的第一PF的識別字或第一橋接元件的第二PF的第二識別字的標籤。
陳述479. 本發明概念的實施例包含根據陳述478所述的製品,所述非暫時性儲存媒體具有儲存於其上的在由機器執行時引起以下操作的其它指令:
使用第一橋接元件的配置監視器來確定儲存裝置的端點的配置;以及
使用第一橋接元件的端點來複製儲存裝置上的端點的配置。
陳述480. 本發明概念的實施例包含根據陳述462所述的製品,其中在第一橋接元件處確定PCIe事務是否為加速指令包含確定PCIe事務是否是在第一橋接元件的第一端點處從處理器接收到的,第一橋接元件包含第一端點和第二端點。
陳述481. 本發明概念的實施例包含根據陳述480所述的製品,所述非暫時性儲存媒體具有儲存於其上的在由機器執行時引起以下操作的其它指令:
使用第一橋接元件的配置監視器來確定儲存裝置的端點的配置;以及
使用第一橋接元件的第一端點來複製儲存裝置上的端點的配置。
陳述482. 本發明概念的實施例包含一種製品,所述製品包括非暫時性儲存媒體,所述非暫時性儲存媒體具有儲存於其上的在由機器執行時引起以下操作的指令:
在第二橋接元件處從儲存裝置接收周邊元件連接交換(PCIe)事務;
在第二橋接元件處確定PCIe事務是否為加速指令;
至少部分地基於確定PCIe事務為加速指令,將PCIe事務轉發到加速模組;以及
至少部分地基於確定PCIe事務不是加速指令,將PCIe事務轉發到處理器,
其中處理器、第二橋接元件、加速模組以及儲存裝置使用PCIe匯流排通訊。
陳述483. 本發明概念的實施例包含根據陳述482所述的製品,其中:
加速模組使用現場可程式化閘陣列來實施;以及
儲存裝置包含固態驅動器(SSD)。
陳述484. 本發明概念的實施例包含根據陳述482所述的製品,其中在第二橋接元件處確定PCIe事務是否為加速指令包含在第二橋接元件處確定第二PCIe事務是否與下游過濾器位址範圍(FAR)中的位址相關聯,所述下游過濾器位址範圍與第二橋接元件的下游埠相關聯。
陳述485. 本發明概念的實施例包含根據陳述484所述的製品,所述非暫時性儲存媒體具有儲存於其上的在由機器執行時引起以下操作的其它指令:
在第二橋接元件處從儲存裝置接收下游FAR;以及
使下游FAR與第二橋接元件的下游埠相關聯。
陳述486. 本發明概念的實施例包含根據陳述485所述的製品,其中在第二橋接元件處從儲存裝置接收下游FAR包含經由邊帶匯流排在第二橋接元件處從儲存裝置接收下游FAR,所述邊帶匯流排來自包含互積體電路(I2 C)匯流排和系統管理匯流排(SMBus)的集合。
陳述487. 本發明概念的實施例包含根據陳述485所述的製品,其中在第二橋接元件處從儲存裝置接收下游FAR包含從儲存裝置接收PCIe供應商定義消息(VDM),所述PCIe VDM包含下游FAR。
陳述488. 本發明概念的實施例包含根據陳述482所述的製品,其中在第二橋接元件處確定PCIe事務是否為加速指令包含確定PCIe事務是否是在第二橋接元件的第二根埠處接收到的,所述第二橋接元件包含第一根埠和第二根埠。
因此,考慮到對本文所描述的實施例的各種置換,此詳細描述和隨附材料預期僅為說明性的,並且不應被視為限制本發明概念的範圍。因此,本發明概念所要求保護的是落入隨附權利要求書以及其等效物的範圍和精神內的所有此類修改。
105‧‧‧機器
110‧‧‧處理器
115‧‧‧裝置驅動器
120‧‧‧儲存裝置
125‧‧‧應用程式
130‧‧‧加速服務管理器
135‧‧‧記憶體控制器
140‧‧‧主記憶體
145‧‧‧加速模組/現場可程式化閘陣列
205‧‧‧時脈
210‧‧‧網路連接器
215‧‧‧匯流排
220‧‧‧使用者介面
225‧‧‧輸入/輸出引擎
305、1105、1310、1505‧‧‧端點
310‧‧‧主機介面層
315‧‧‧加速平臺管理器
320‧‧‧快閃記憶體轉換層
325‧‧‧快閃記憶體媒體
330‧‧‧上游埠
335‧‧‧下游埠
340‧‧‧加速平臺管理器
345‧‧‧調度程式
350-1、350-2‧‧‧加速引擎
355‧‧‧消息郵箱
360‧‧‧下游過濾器
365‧‧‧邊帶匯流排
370‧‧‧SSD控制器
405、805、810、1005、1010、1205、1215、1220、1405‧‧‧區塊
410、415‧‧‧子集
420‧‧‧下游過濾器位址範圍
505‧‧‧上游過濾器
605‧‧‧上游過濾器位址範圍
705、905、1115、1120‧‧‧物理功能
710‧‧‧虛擬功能
715‧‧‧VF過濾器、PF過濾器
1110、1305‧‧‧根埠
1125‧‧‧配置監視器
1210、1410‧‧‧位址映射
1905、1910‧‧‧橋接組件
2005、2020‧‧‧PCIe事務
2010‧‧‧專用命令
2015、2045‧‧‧加速指令
2025‧‧‧PCIe事務、加速資料
2030、2035、2040‧‧‧結果
2105、2110、2115、2120、2125、2203、2206、2212、2215、2218、2221、2227、2230、2236、2239、2242、2245、2248、2251、2254、2257、2260、2263、2305、2310、2315、2320、2325、2405、2410、2415、2420、2505、2510、2515、2520、2605、2610、2615、2620、2705、2710、2715、2725、2730、2735、2740、2745、2755、2760、2765、2770、2775、2780、2785、2805、2810、2815、2820、2825‧‧‧框
2209、2224、2233、2720、2750‧‧‧虛線
圖1示出根據本發明概念的一實施例的支援儲存裝置上的加速操作的機器。
圖2示出圖1的機器的額外細節。
圖3示出根據本發明概念的第一實施例的圖1的加速模組和圖1的儲存裝置的元件。
圖4示出根據本發明概念的第一實施例的用於加速圖1的系統中的指令的記憶體使用。
圖5示出根據本發明概念的第二實施例的圖1的加速模組和圖1的儲存裝置的元件。
圖6示出根據本發明概念的第二實施例的用於加速圖1的系統中的指令的記憶體使用。
圖7示出根據本發明概念的第三實施例的圖1的加速模組和圖1的儲存裝置的元件。
圖8示出根據本發明概念的第三實施例的用於加速圖1的系統中的指令的記憶體使用。
圖9示出根據本發明概念的第四實施例的圖1的加速模組和圖1的儲存裝置的元件。
圖10示出根據本發明概念的第四實施例的用於加速圖1的系統中的指令的記憶體使用。
圖11示出根據本發明概念的第五實施例的圖1的加速模組和圖1的儲存裝置的元件。
圖12示出根據本發明概念的第五實施例的用於加速圖1的系統中的指令的記憶體使用。
圖13示出根據本發明概念的第六實施例的圖1的加速模組和圖1的儲存裝置的元件。
圖14示出根據本發明概念的第六實施例的用於加速圖1的系統中的指令的記憶體使用。
圖15示出根據本發明概念的第七實施例的圖1的加速模組和圖1的儲存裝置的元件。
圖16示出根據本發明概念的第七實施例的用於加速圖1的系統中的指令的記憶體使用。
圖17示出根據本發明概念的第八實施例的圖1的加速模組和圖1的儲存裝置的元件。
圖18示出根據本發明概念的第八實施例的用於加速圖1的系統中的指令的記憶體使用。
圖19示出根據本發明概念的實施例的具有管理與圖1的加速模組的通訊的橋接元件的圖1的系統的元件。
圖20A至圖20B示出根據本發明概念的實施例的圖1的處理器、圖1的加速模組以及圖1的儲存裝置之間的通訊。
圖21示出根據本發明概念的實施例的用於圖1的加速模組以處理PCIe事務的實例過程的流程圖。
圖22A至圖22C示出根據本發明概念的實施例的用於圖1的加速模組以處理PCIe事務的更詳細實例過程的流程圖。
圖23A至圖23B示出根據本發明概念的實施例的用於圖1的加速模組以確定來自圖1的處理器的PCIe事務是否包含加速指令的實例過程的流程圖。
圖24示出根據本發明概念的實施例的用於圖1的加速模組以確定來自圖1的儲存裝置的PCIe事務是否包含加速指令的實例過程的流程圖。
圖25示出根據本發明概念的實施例的用於圖19的第一橋接元件以確定來自圖1的處理器的PCIe事務是否包含加速指令的實例過程的流程圖。
圖26示出根據本發明概念的實施例的用於圖19的第二橋接元件以確定來自圖1的儲存裝置的PCIe事務是否包含加速指令的實例過程的流程圖。
圖27A至圖27C示出根據本發明概念的實施例的用於圖1的儲存裝置以處理PCIe事務的實例過程的流程圖。
圖28A至圖28B示出根據本發明概念的實施例的用於圖1的儲存裝置以確定來自圖1的加速模組的PCIe事務是否包含加速指令的實例過程的流程圖。

Claims (20)

  1. 一種系統,包括: 處理器,所述處理器運行應用程式; 記憶體,所述記憶體儲存由在所述處理器上運行的所述應用程式使用的資料; 上游埠,用於與所述處理器通訊; 下游埠,用於與儲存裝置通訊; 加速模組,所述加速模組使用硬體來實施且包含加速平臺管理器以執行第一加速指令; 所述儲存裝置,包含: 所述儲存裝置的端點,用於與所述加速模組通訊; 控制器,用以管理所述儲存裝置的操作; 儲存器,用以儲存所述應用程式的應用資料;以及 儲存裝置加速平臺管理器,用以輔助所述加速平臺管理器執行所述第一加速指令, 下游過濾器,與所述下游埠相關聯,所述下游過濾器經操作以攔截從所述儲存裝置接收到的所述加速指令且將所述第一加速指令傳送到所述加速平臺管理器,所述第一加速指令與下游過濾器位址範圍相關聯;且 其中所述處理器、所述加速模組以及所述儲存裝置經由周邊元件連接交換匯流排通訊,且 其中所述加速模組在不將所述應用資料載入到所述記憶體中的情況下支援針對所述應用程式對所述儲存裝置上的所述應用資料執行所述第一加速指令。
  2. 如申請專利範圍第1項所述的系統,更包括: 第一橋接組件,包含所述上游埠,所述第一橋接元件橋接所述處理器與所述加速模組之間的通訊;以及 第二橋接元件,包含所述下游埠和所述下游過濾器,所述第二橋接元件橋接所述加速模組與所述儲存裝置之間的通訊。
  3. 如申請專利範圍第1項所述的系統,其中 使用現場可程式化閘陣列來實施所述加速模組; 所述現場可程式化閘陣列包含所述上游埠、所述下游埠以及所述下游過濾器;以及 所述儲存裝置包含固態驅動器。
  4. 如申請專利範圍第3項所述的系統,其中所述加速平臺管理器經操作以經由所述上游埠將結果發送到所述處理器。
  5. 如申請專利範圍第3項所述的系統,其中所述控制器經操作以用所述下游過濾器位址範圍對所述下游過濾器進行程式化。
  6. 如申請專利範圍第3項所述的系統,其中: 所述加速平臺管理器經操作以經由所述下游埠以及所述固態驅動器的所述端點將結果發送到所述儲存裝置加速平臺管理器;以及 所述控制器經操作以經由所述固態驅動器的所述端點將所述結果轉發到所述處理器。
  7. 如申請專利範圍第3項所述的系統,其中: 所述現場可程式化閘陣列更包含與所述上游埠相關聯的上游過濾器,所述上游過濾器經操作以攔截從所述處理器接收到的第二加速指令且將所述第二加速指令傳送到所述加速平臺管理器,所述第二加速指令與上游過濾器位址範圍相關聯;以及 所述現場可程式化閘陣列經操作以將並不與所述上游過濾器位址範圍相關聯的周邊元件連接交換事務轉發到所述固態驅動器,所述周邊元件連接交換事務是在所述上游埠處從所述處理器接收到的。
  8. 如申請專利範圍第7項所述的系統,其中所述控制器經操作以用所述下游過濾器位址範圍對所述下游過濾器進行程式化且用所述上游過濾器位址範圍對所述上游過濾器進行程式化。
  9. 一種使用硬體實施的加速模組,包括: 加速平臺管理器,用以執行第一加速指令; 上游埠,用於與處理器通訊,應用程式在所述處理器上運行; 下游埠,用於與儲存裝置通訊,所述儲存裝置包含儲存裝置加速平臺管理器,所述儲存裝置加速平臺管理器用以輔助所述加速平臺管理器執行所述第一加速指令, 下游過濾器,與所述下游埠相關聯,所述下游過濾器經操作以攔截從所述儲存裝置接收到的所述第一加速指令且將所述第一加速指令傳送到所述加速平臺管理器,所述第一加速指令與下游過濾器位址範圍相關聯;且 其中所述加速模組使用周邊元件連接交換匯流排與所述處理器以及所述儲存裝置通訊,且 其中所述加速模組在不將應用資料載入到與所述處理器相關聯的記憶體中的情況下支援針對所述應用程式對所述儲存裝置上的所述應用資料執行所述第一加速指令。
  10. 如申請專利範圍第9項所述的加速模組,其中所述加速平臺管理器經操作以經由所述上游埠將結果發送到所述處理器。
  11. 如申請專利範圍第9項所述的加速模組,其中: 使用現場可程式化閘陣列來實施所述加速模組;以及 所述加速平臺管理器經操作以經由所述下游埠將結果發送到所述儲存裝置的所述加速平臺管理器。
  12. 如申請專利範圍第9項所述的加速模組,其中: 使用現場可程式化閘陣列來實施所述加速模組;以及 所述加速模組經由指配給所述儲存裝置的非揮發性儲存快速暫存器而間接地暴露於所述處理器。
  13. 如申請專利範圍第12項所述的加速模組,其中: 所述現場可程式化閘陣列更包含與所述上游埠相關聯的上游過濾器,所述上游過濾器經操作以攔截從所述處理器接收到的第二加速指令且將所述第二加速指令傳送到所述加速平臺管理器,所述第二加速指令與上游過濾器位址範圍相關聯;以及 所述現場可程式化閘陣列經操作以將並不與所述上游過濾器位址範圍相關聯的周邊元件連接交換事務轉發到所述儲存裝置,所述周邊元件連接交換事務是在所述上游埠處從所述處理器接收到的。
  14. 一種方法,包括: 在加速模組的下游埠處從儲存裝置接收第一周邊元件連接交換事務; 通過確定所述第一周邊元件連接交換事務是否與下游過濾器位址範圍中的第一位址相關聯來在所述加速模組處確定所述第一周邊元件連接交換事務是否為第一加速指令,所述下游過濾器位址範圍與所述加速模組的所述下游埠相關聯; 至少部分地基於確定所述第一周邊元件連接交換事務為所述第一加速指令,在所述加速模組的加速平臺管理器處處理所述第一周邊元件連接交換事務;以及 至少部分地基於確定所述第一周邊元件連接交換事務不是所述第一加速指令,使用所述加速模組的上游埠將所述第一周邊元件連接交換事務傳送到處理器, 其中所述加速模組在不將應用資料載入到與所述處理器相關聯的記憶體中的情況下支援針對應用程式對儲存裝置上的所述應用資料執行所述第一加速指令,且 其中所述處理器、所述加速模組以及所述儲存裝置使用周邊元件連接交換匯流排通訊。
  15. 如申請專利範圍第14項所述的方法,其中使用現場可程式化閘陣列來實施所述加速模組。
  16. 如申請專利範圍第15項所述的方法,更包括使用所述現場可程式化閘陣列的所述上游埠來將所述第一周邊元件連接交換事務的結果發送到所述處理器。
  17. 如申請專利範圍第15項所述的方法,更包括: 在所述現場可程式化閘陣列處從所述儲存裝置接收所述下游過濾器位址範圍;以及 使所述下游過濾器位址範圍與所述現場可程式化閘陣列的所述下游埠相關聯。
  18. 如申請專利範圍第15項所述的方法,更包括使用所述現場可程式化閘陣列的所述下游埠來將所述第一周邊元件連接交換事務的結果發送到所述儲存裝置。
  19. 如申請專利範圍第15項所述的方法,更包括: 在所述現場可程式化閘陣列的所述上游埠處從所述處理器接收第二周邊元件連接交換事務; 通過確定所述第二周邊元件連接交換事務是否與上游過濾器位址範圍中的第二位址相關聯來確定所述第二周邊元件連接交換事務是否為第二加速指令,所述上游過濾器位址範圍與所述現場可程式化閘陣列的所述上游埠相關聯;以及 至少部分地基於確定所述第二周邊元件連接交換事務為所述第二加速指令,在所述現場可程式化閘陣列的所述加速平臺管理器處處理所述第二周邊元件連接交換事務;以及 至少部分地基於確定所述第二周邊元件連接交換事務不是所述第二加速指令,使用所述現場可程式化閘陣列的所述下游埠來將所述第二周邊元件連接交換事務傳送到所述儲存裝置。
  20. 如申請專利範圍第19項所述的方法,更包括: 在所述現場可程式化閘陣列處從所述儲存裝置接收所述上游過濾器位址範圍;以及 使所述上游過濾器位址範圍與所述現場可程式化閘陣列的所述上游埠相關聯。
TW108104984A 2018-03-05 2019-02-14 主機系統及其方法和加速模組 TWI765138B (zh)

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
US201862638904P 2018-03-05 2018-03-05
US62/638,904 2018-03-05
US201862641267P 2018-03-09 2018-03-09
US62/641,267 2018-03-09
US201862642568P 2018-03-13 2018-03-13
US62/642,568 2018-03-13
US16/122,865 2018-09-05
US16/122,865 US10585819B2 (en) 2018-03-05 2018-09-05 SSD architecture for FPGA based acceleration

Publications (2)

Publication Number Publication Date
TW201939269A true TW201939269A (zh) 2019-10-01
TWI765138B TWI765138B (zh) 2022-05-21

Family

ID=67768071

Family Applications (3)

Application Number Title Priority Date Filing Date
TW108104966A TWI770358B (zh) 2018-03-05 2019-02-14 主機系統及其方法和加速模組
TW108104998A TWI772611B (zh) 2018-03-05 2019-02-14 主機系統及其方法和加速模組
TW108104984A TWI765138B (zh) 2018-03-05 2019-02-14 主機系統及其方法和加速模組

Family Applications Before (2)

Application Number Title Priority Date Filing Date
TW108104966A TWI770358B (zh) 2018-03-05 2019-02-14 主機系統及其方法和加速模組
TW108104998A TWI772611B (zh) 2018-03-05 2019-02-14 主機系統及其方法和加速模組

Country Status (5)

Country Link
US (4) US10585819B2 (zh)
JP (3) JP7120943B2 (zh)
KR (2) KR102427561B1 (zh)
CN (3) CN110232037B (zh)
TW (3) TWI770358B (zh)

Families Citing this family (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10496548B2 (en) 2018-02-07 2019-12-03 Alibaba Group Holding Limited Method and system for user-space storage I/O stack with user-space flash translation layer
WO2019222958A1 (en) 2018-05-24 2019-11-28 Alibaba Group Holding Limited System and method for flash storage management using multiple open page stripes
US10921992B2 (en) 2018-06-25 2021-02-16 Alibaba Group Holding Limited Method and system for data placement in a hard disk drive based on access frequency for improved IOPS and utilization efficiency
CN111902804B (zh) 2018-06-25 2024-03-01 阿里巴巴集团控股有限公司 用于管理存储设备的资源并量化i/o请求成本的系统和方法
US10996886B2 (en) 2018-08-02 2021-05-04 Alibaba Group Holding Limited Method and system for facilitating atomicity and latency assurance on variable sized I/O
US11327929B2 (en) 2018-09-17 2022-05-10 Alibaba Group Holding Limited Method and system for reduced data movement compression using in-storage computing and a customized file system
US10977122B2 (en) 2018-12-31 2021-04-13 Alibaba Group Holding Limited System and method for facilitating differentiated error correction in high-density flash devices
US11061735B2 (en) 2019-01-02 2021-07-13 Alibaba Group Holding Limited System and method for offloading computation to storage nodes in distributed system
US11132291B2 (en) 2019-01-04 2021-09-28 Alibaba Group Holding Limited System and method of FPGA-executed flash translation layer in multiple solid state drives
US11200337B2 (en) 2019-02-11 2021-12-14 Alibaba Group Holding Limited System and method for user data isolation
US10970212B2 (en) 2019-02-15 2021-04-06 Alibaba Group Holding Limited Method and system for facilitating a distributed storage system with a total cost of ownership reduction for multiple available zones
US11061834B2 (en) 2019-02-26 2021-07-13 Alibaba Group Holding Limited Method and system for facilitating an improved storage system by decoupling the controller from the storage medium
US10891065B2 (en) 2019-04-01 2021-01-12 Alibaba Group Holding Limited Method and system for online conversion of bad blocks for improvement of performance and longevity in a solid state drive
US10922234B2 (en) 2019-04-11 2021-02-16 Alibaba Group Holding Limited Method and system for online recovery of logical-to-physical mapping table affected by noise sources in a solid state drive
US10908960B2 (en) 2019-04-16 2021-02-02 Alibaba Group Holding Limited Resource allocation based on comprehensive I/O monitoring in a distributed storage system
US11169873B2 (en) 2019-05-21 2021-11-09 Alibaba Group Holding Limited Method and system for extending lifespan and enhancing throughput in a high-density solid state drive
US10860223B1 (en) * 2019-07-18 2020-12-08 Alibaba Group Holding Limited Method and system for enhancing a distributed storage system by decoupling computation and network tasks
US11074124B2 (en) 2019-07-23 2021-07-27 Alibaba Group Holding Limited Method and system for enhancing throughput of big data analysis in a NAND-based read source storage
US11126561B2 (en) 2019-10-01 2021-09-21 Alibaba Group Holding Limited Method and system for organizing NAND blocks and placing data to facilitate high-throughput for random writes in a solid state drive
US11617282B2 (en) 2019-10-01 2023-03-28 Alibaba Group Holding Limited System and method for reshaping power budget of cabinet to facilitate improved deployment density of servers
US11507522B2 (en) * 2019-12-06 2022-11-22 Advanced Micro Devices, Inc. Memory request priority assignment techniques for parallel processors
FR3104280B1 (fr) * 2019-12-06 2021-11-26 Thales Sa Systeme electronique securise comportant un processeur et un composant memoire ; composant programmable associe
US11449455B2 (en) 2020-01-15 2022-09-20 Alibaba Group Holding Limited Method and system for facilitating a high-capacity object storage system with configuration agility and mixed deployment flexibility
US11379447B2 (en) 2020-02-06 2022-07-05 Alibaba Group Holding Limited Method and system for enhancing IOPS of a hard disk drive system based on storing metadata in host volatile memory and data in non-volatile memory using a shared controller
US11150986B2 (en) 2020-02-26 2021-10-19 Alibaba Group Holding Limited Efficient compaction on log-structured distributed file system using erasure coding for resource consumption reduction
US11200114B2 (en) 2020-03-17 2021-12-14 Alibaba Group Holding Limited System and method for facilitating elastic error correction code in memory
US11449386B2 (en) 2020-03-20 2022-09-20 Alibaba Group Holding Limited Method and system for optimizing persistent memory on data retention, endurance, and performance for host memory
US11169881B2 (en) 2020-03-30 2021-11-09 Alibaba Group Holding Limited System and method for facilitating reduction of complexity and data movement in erasure coding merging on journal and data storage drive
US11301173B2 (en) 2020-04-20 2022-04-12 Alibaba Group Holding Limited Method and system for facilitating evaluation of data access frequency and allocation of storage device resources
US11385833B2 (en) 2020-04-20 2022-07-12 Alibaba Group Holding Limited Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources
US11281575B2 (en) 2020-05-11 2022-03-22 Alibaba Group Holding Limited Method and system for facilitating data placement and control of physical addresses with multi-queue I/O blocks
US11494115B2 (en) 2020-05-13 2022-11-08 Alibaba Group Holding Limited System method for facilitating memory media as file storage device based on real-time hashing by performing integrity check with a cyclical redundancy check (CRC)
US11461262B2 (en) 2020-05-13 2022-10-04 Alibaba Group Holding Limited Method and system for facilitating a converged computation and storage node in a distributed storage system
US11218165B2 (en) 2020-05-15 2022-01-04 Alibaba Group Holding Limited Memory-mapped two-dimensional error correction code for multi-bit error tolerance in DRAM
US11556277B2 (en) 2020-05-19 2023-01-17 Alibaba Group Holding Limited System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification
US11507499B2 (en) 2020-05-19 2022-11-22 Alibaba Group Holding Limited System and method for facilitating mitigation of read/write amplification in data compression
US11263132B2 (en) 2020-06-11 2022-03-01 Alibaba Group Holding Limited Method and system for facilitating log-structure data organization
US11422931B2 (en) 2020-06-17 2022-08-23 Alibaba Group Holding Limited Method and system for facilitating a physically isolated storage unit for multi-tenancy virtualization
US11354200B2 (en) 2020-06-17 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating data recovery and version rollback in a storage device
US11354233B2 (en) 2020-07-27 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating fast crash recovery in a storage device
US11372774B2 (en) 2020-08-24 2022-06-28 Alibaba Group Holding Limited Method and system for a solid state drive with on-chip memory integration
US11487465B2 (en) 2020-12-11 2022-11-01 Alibaba Group Holding Limited Method and system for a local storage engine collaborating with a solid state drive controller
US11734115B2 (en) 2020-12-28 2023-08-22 Alibaba Group Holding Limited Method and system for facilitating write latency reduction in a queue depth of one scenario
US11416365B2 (en) 2020-12-30 2022-08-16 Alibaba Group Holding Limited Method and system for open NAND block detection and correction in an open-channel SSD
US11726699B2 (en) 2021-03-30 2023-08-15 Alibaba Singapore Holding Private Limited Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification
US11461173B1 (en) 2021-04-21 2022-10-04 Alibaba Singapore Holding Private Limited Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement
US11476874B1 (en) 2021-05-14 2022-10-18 Alibaba Singapore Holding Private Limited Method and system for facilitating a storage server with hybrid memory for journaling and data storage
KR102365312B1 (ko) 2021-06-17 2022-02-23 삼성전자주식회사 스토리지 컨트롤러, 연산 스토리지 장치, 및 연산 스토리지 장치의 동작 방법
US20230099831A1 (en) * 2021-09-24 2023-03-30 Samsung Electronics Co., Ltd. Systems and methods for near-storage processing in solid state drives
CN114327281B (zh) * 2021-12-30 2023-12-05 深圳忆联信息系统有限公司 用于ssd的tcg软硬件加速方法、装置、计算机设备及存储介质
US20240095171A1 (en) * 2022-09-21 2024-03-21 Samsung Electronics Co., Ltd. Interface for remote memory
CN115857805B (zh) * 2022-11-30 2023-06-27 合肥腾芯微电子有限公司 人工智能可计算存储系统
US20240311318A1 (en) * 2023-03-14 2024-09-19 Samsung Electronics Co., Ltd. Systems and methods for a cache-coherent interconnect protocol storage device
CN115994107B (zh) * 2023-03-22 2023-07-14 苏州浪潮智能科技有限公司 存储设备的存取加速系统
CN116756070B (zh) * 2023-08-15 2023-10-27 无锡沐创集成电路设计有限公司 PCIe互联系统、数据处理方法、设备、存储介质及产品

Family Cites Families (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6604158B1 (en) 1999-03-11 2003-08-05 Realtime Data, Llc System and methods for accelerated data storage and retrieval
EP2511787B1 (en) 2003-05-23 2017-09-20 IP Reservoir, LLC Data decompression and search using FPGA devices
US7606954B2 (en) * 2005-09-29 2009-10-20 Intel Corporation Data storage using compression
US7860930B2 (en) * 2006-12-19 2010-12-28 International Business Machines Corporation Communication between host systems using a transaction protocol and shared memories
US20090307416A1 (en) 2008-06-04 2009-12-10 Intitio Corporation Ssd with a controller accelerator
US9110706B2 (en) 2009-02-09 2015-08-18 Microsoft Technology Licensing, Llc General purpose distributed data parallel computing using a high level language
US9582222B2 (en) * 2009-04-30 2017-02-28 Western Digital Technologies, Inc. Pre-cache similarity-based delta compression for use in a data storage system
US8504750B1 (en) * 2009-06-23 2013-08-06 Qlogic, Corporation System and method to process event reporting in an adapter
TWI407304B (zh) * 2010-05-26 2013-09-01 Speed ​​up access to data
TWI480738B (zh) * 2010-07-01 2015-04-11 Neodana Inc 藉由最佳化叢集特定組態之使用的處理種類來分割叢集間之處理
TW201230038A (en) * 2011-01-04 2012-07-16 Key Technology Corp Control system for composite solid-state drive
US20120310917A1 (en) 2011-05-31 2012-12-06 International Business Machines Corporation Accelerated Join Process in Relational Database Management System
US8700834B2 (en) 2011-09-06 2014-04-15 Western Digital Technologies, Inc. Systems and methods for an enhanced controller architecture in data storage systems
US20130343181A1 (en) 2012-06-21 2013-12-26 Jonathan Stroud Systems and methods of data processing using an fpga-implemented hash function
US9141529B2 (en) * 2012-08-14 2015-09-22 OCZ Storage Solutions Inc. Methods and apparatus for providing acceleration of virtual machines in virtual environments
US10161993B2 (en) * 2013-02-21 2018-12-25 Advantest Corporation Tester with acceleration on memory and acceleration for automatic pattern generation within a FPGA block
US8909605B1 (en) 2013-02-28 2014-12-09 Emc Corporation Method and system for accelerating data movement using change information concerning difference between current and previous data movements
US9772793B2 (en) 2013-09-20 2017-09-26 Oracle International Corporation Data block movement offload to storage systems
US10324642B2 (en) * 2013-06-07 2019-06-18 Sanmina Corporation Peripheral component interconnect express (PCIe) solid state drive (SSD) accelerator
WO2014207511A1 (fr) * 2013-06-27 2014-12-31 Genbiotech Utilisation d'un filtre a centrifuger pour decongeler des cellules
WO2015081308A2 (en) 2013-11-26 2015-06-04 Dynavisor, Inc. Dynamic i/o virtualization
US9619167B2 (en) 2013-11-27 2017-04-11 Intel Corporation System and method for computing message digests
US10185499B1 (en) 2014-01-07 2019-01-22 Rambus Inc. Near-memory compute module
US9195552B2 (en) * 2014-02-05 2015-11-24 Futurewei Technologies, Inc. Per-function downstream port containment
US20160342545A1 (en) 2014-02-12 2016-11-24 Hitachi, Ltd. Data memory device
US9887008B2 (en) 2014-03-10 2018-02-06 Futurewei Technologies, Inc. DDR4-SSD dual-port DIMM device
US9852779B2 (en) 2014-03-12 2017-12-26 Futurewei Technologies, Inc. Dual-port DDR4-DIMMs of SDRAM and NVRAM for SSD-blades and multi-CPU servers
JP6181860B2 (ja) 2014-04-28 2017-08-16 株式会社日立製作所 ストレージ装置とそのデータ処理方法及びストレージシステム
US10216448B2 (en) 2014-09-11 2019-02-26 Hitachi, Ltd. Storage system with read request accelerator having dynamic internal data memory allocation
US20160094619A1 (en) 2014-09-26 2016-03-31 Jawad B. Khan Technologies for accelerating compute intensive operations using solid state drives
EP3248161A1 (en) * 2015-01-22 2017-11-29 Greydog Ventures Ltd. User controlled profiles
US10898091B2 (en) * 2015-02-02 2021-01-26 Northwestern University Systems, methods, and apparatus for esophageal panometry
US9715351B2 (en) 2015-02-13 2017-07-25 Red Hat, Inc. Copy-offload on a device stack
US10467176B2 (en) 2015-02-25 2019-11-05 Hitachi, Ltd. Information processing apparatus
CN104657308A (zh) * 2015-03-04 2015-05-27 浪潮电子信息产业股份有限公司 一种用fpga实现的服务器硬件加速的方法
US10067893B2 (en) 2015-04-03 2018-09-04 Futurewei Technologies, Inc. Acceleration framework with direct data transfer mechanism
US10025747B2 (en) * 2015-05-07 2018-07-17 Samsung Electronics Co., Ltd. I/O channel scrambling/ECC disassociated communication protocol
US20170091127A1 (en) * 2015-09-25 2017-03-30 Intel Corporation Techniques to Couple with a Storage Device via Multiple Communication Ports
US9946659B2 (en) 2015-11-16 2018-04-17 International Business Machines Corporation Near-memory accelerator for offloading pointer chasing operations from a processing element
CN105677595A (zh) * 2016-01-21 2016-06-15 方一信息科技(上海)有限公司 一种同时实现计算加速和pciessd存储的fpga方法
US10210121B2 (en) 2016-01-27 2019-02-19 Quanta Computer Inc. System for switching between a single node PCIe mode and a multi-node PCIe mode
KR101923661B1 (ko) * 2016-04-04 2018-11-29 주식회사 맴레이 플래시 기반 가속기 및 이를 포함하는 컴퓨팅 디바이스
US10282308B2 (en) 2016-06-23 2019-05-07 Advanced Micro Devices, Inc. Method and apparatus for reducing TLB shootdown overheads in accelerator-based systems
US9923755B2 (en) * 2016-08-01 2018-03-20 Data I/O Corporation Device programming with system generation
US9927975B2 (en) 2016-08-03 2018-03-27 Micron Technology, Inc. Hybrid memory drives, computer system, and related method for operating a multi-mode hybrid drive
US10387303B2 (en) 2016-08-16 2019-08-20 Western Digital Technologies, Inc. Non-volatile storage system with compute engine to accelerate big data applications
US10503635B2 (en) 2016-09-22 2019-12-10 Dell Products, Lp System and method for adaptive optimization for performance in solid state drives based on segment access frequency
CN106371773A (zh) * 2016-11-07 2017-02-01 北京得瑞领新科技有限公司 Ssd单元、ssd设备以及基于ssd设备的数据处理方法
US10860508B2 (en) * 2017-05-25 2020-12-08 Western Digital Technologies, Inc. Offloaded disaggregated storage architecture
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
US10599568B2 (en) 2018-04-09 2020-03-24 Intel Corporation Management of coherent links and multi-level memory
US11200186B2 (en) 2018-06-30 2021-12-14 Intel Corporation Apparatuses, methods, and systems for operations in a configurable spatial accelerator
US11940929B2 (en) 2019-05-24 2024-03-26 Texas Instruments Incorporated Methods and apparatus to reduce read-modify-write cycles for non-aligned writes
US11360772B2 (en) 2020-03-31 2022-06-14 International Business Machines Corporation Instruction sequence merging and splitting for optimized accelerator implementation
US11500833B2 (en) 2020-07-10 2022-11-15 International Business Machines Corporation Archiving accelerator-only database tables

Also Published As

Publication number Publication date
US20200159679A1 (en) 2020-05-21
TWI772611B (zh) 2022-08-01
TW201939294A (zh) 2019-10-01
CN110232037A (zh) 2019-09-13
US20190272240A1 (en) 2019-09-05
KR20190105497A (ko) 2019-09-17
JP2019153305A (ja) 2019-09-12
US11892957B2 (en) 2024-02-06
CN110232034A (zh) 2019-09-13
JP2019153297A (ja) 2019-09-12
US20210182221A1 (en) 2021-06-17
KR102427561B1 (ko) 2022-08-01
JP2019153304A (ja) 2019-09-12
JP7120943B2 (ja) 2022-08-17
US10592443B2 (en) 2020-03-17
KR102428317B1 (ko) 2022-08-02
CN110232036A (zh) 2019-09-13
KR20190105492A (ko) 2019-09-17
TWI770358B (zh) 2022-07-11
JP7120945B2 (ja) 2022-08-17
CN110232036B (zh) 2022-08-09
US11132310B2 (en) 2021-09-28
TW201939305A (zh) 2019-10-01
TWI765138B (zh) 2022-05-21
CN110232037B (zh) 2021-11-09
US10585819B2 (en) 2020-03-10
CN110232034B (zh) 2024-07-30
US20190272242A1 (en) 2019-09-05
JP7252789B2 (ja) 2023-04-05

Similar Documents

Publication Publication Date Title
TWI765138B (zh) 主機系統及其方法和加速模組
KR102403653B1 (ko) Fpga 기반 가속화를 위한 새로운 ssd 구조
US9696942B2 (en) Accessing remote storage devices using a local bus protocol
US9092426B1 (en) Zero-copy direct memory access (DMA) network-attached storage (NAS) file system block writing
US8301832B1 (en) Storage system with guaranteed read latency
US20150261434A1 (en) Storage system and server
JP2015537310A (ja) データ処理システム及びデータ処理方法
TW202101951A (zh) 輕量橋接器電路以及用於多實體功能模擬的方法及物品
US20230198740A1 (en) Systems and methods for integrating fully homomorphic encryption (fhe) with a storage device
US20230195320A1 (en) Systems and methods for integrating a compute resource with a storage device
CN118916310A (zh) 主机系统及其方法和加速模块
US20240256317A1 (en) Systems and methods for backend architecture provisioning and emulation
CN117648052A (zh) 多功能装置和用于多功能装置的方法