CN110232036A - 主机系统及其方法和加速模块 - Google Patents

主机系统及其方法和加速模块 Download PDF

Info

Publication number
CN110232036A
CN110232036A CN201910161732.1A CN201910161732A CN110232036A CN 110232036 A CN110232036 A CN 110232036A CN 201910161732 A CN201910161732 A CN 201910161732A CN 110232036 A CN110232036 A CN 110232036A
Authority
CN
China
Prior art keywords
fpga
storage device
present
processor
downstream
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
CN201910161732.1A
Other languages
English (en)
Other versions
CN110232036B (zh
Inventor
瑞姆达斯·P·卡佳瑞
佛瑞德·沃里
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN110232036A publication Critical patent/CN110232036A/zh
Application granted granted Critical
Publication of CN110232036B publication Critical patent/CN110232036B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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

主机系统及其方法和加速模块
相关申请数据
本申请案要求2018年3月5日提交的美国临时专利申请案第62/638,904号的权益,所述申请案出于所有目的以引用的方式并入本文中。
本申请案要求2018年3月9日提交的美国临时专利申请案第62/641,267号的权益,所述申请案出于所有目的以引用的方式并入本文中。
本申请案要求2018年3月13日提交的美国临时专利申请案第62/642,568号的权益,所述申请案出于所有目的以引用的方式并入本文中。
技术领域
本发明概念涉及存储装置,且更具体地说,涉及使用额外硬件的加速固态驱动器(Solid State Drive,SSD)执行。
背景技术
存在以常规方式使用存储装置效率低的情况。举例来说,设想需要在数据库上运行查询的情况。常规解决方案为将数据库加载到计算机的存储器中、对数据库的内存副本执行查询以及接着处理结果。虽然这一方法在数据库相对较小的情况下可能为合理的,但是加载含有数千、数百万或更多记录的数据库(其中查询的结果是标识数据库中的单一记录)效率极低。需要将超大量的数据移动到存储器中以执行查询,很可能使已存储在存储器中的其它数据位移。且接着,一旦查询已经执行就丢弃大部分数据,这是由于在查询完成之后大部分数据都不需要。当需要反复对数据库执行查询时,可能会放大这一问题:每一查询可能都需要将数据库再次加载到存储器中。
仍然需要一种用于加速涉及存储装置的操作的方法。
本公开的目的
本公开的示例实施例可提供一种用于基于FPGA的加速的低成本且低功率SSD架构。
发明内容
示例实施例提供一种系统,所述系统可包含:处理器,所述处理器运行应用程序;存储器,所述存储器存储由在处理器上运行的应用程序使用的数据;上游端口,用于与处理器通信;下游端口,用于与存储装置通信;加速模块,所述加速模块使用硬件来实施且包含加速平台管理器(Acceleration Platform Manager,APM-F)以执行第一加速指令;下游过滤器,与下游端口相关联,所述下游过滤器经操作以拦截从存储装置接收到的加速指令且将第一加速指令传送到APM-F,所述第一加速指令与下游过滤器地址范围(Filter AddressRange,FAR)相关联。存储装置可包含:存储装置的端点,用于与加速模块通信;控制器,用以管理存储装置的操作;储存体,用以存储应用程序的应用数据;以及存储装置加速平台管理器(storage device Acceleration Platform Manager,APM-S),用以辅助APM-F执行第一加速指令。处理器、加速模块以及存储装置可经由外围组件互连快速(PeripheralComponent Interconnect Express,PCIe)总线通信。加速模块可在不将应用数据加载到存储器中的情况下支持针对应用程序对存储装置上的应用数据执行第一加速指令。
另一示例实施例提供一种使用硬件实施的加速模块,所述加速模块可包含:加速平台管理器(APM-F),用以执行第一加速指令;上游端口,用于与处理器通信,应用程序在所述处理器上运行;下游端口,用于与存储装置通信,所述存储装置包含存储装置加速平台管理器(APM-S),所述存储装置加速平台管理器用以辅助APM-F执行第一加速指令,下游过滤器,与下游端口相关联,所述下游过滤器经操作以拦截从存储装置接收到的第一加速指令且将所述第一加速指令传送到APM-F,所述第一加速指令与下游过滤器地址范围(FAR)相关联。加速模块可使用外围组件互连快速(PCIe)总线与处理器和存储装置通信。加速模块可在不将应用数据加载到与处理器相关联的存储器中的情况下支持针对应用程序对存储装置上的应用数据执行第一加速指令。
再一示例实施例提供一种方法,所述方法可包含:在加速模块的下游端口处从存储装置接收第一外围组件互连快速(PCIe)事务;通过确定第一PCIe事务是否与下游过滤器地址范围(FAR)中的第一地址相关联来在加速模块处确定第一PCIe事务是否为第一加速指令,所述下游过滤器地址范围与加速模块的下游端口相关联;至少部分地基于确定第一PCIe事务为第一加速指令,在加速模块的加速平台管理器(APM-F)处处理第一PCIe事务;以及至少部分地基于确定第一PCIe事务不是第一加速指令,使用加速模块的上游端口将第一PCIe事务传送到处理器。加速模块可在不将应用数据加载到与处理器相关联的存储器中的情况下支持针对应用程序对存储装置上的应用数据执行第一加速指令。处理器、加速模块以及存储装置可使用PCIe总线通信。
本公开的效应
本文中所公开的实施例可提供一种可加载数据的加速模块。因此,本文中所公开的实施例可避免从SSD加载数据所需的延迟。
附图说明
图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事务是否包含加速指令的实例过程的流程图。
附图标号说明
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:虚线。
具体实施方式
现在将详细参考本发明概念的实施例,在附图中示出所述实施例的实例。在以下详细描述中,阐述众多具体细节以实现对本发明概念的透彻理解。然而,应理解,本领域技术人员可以在没有这些具体细节的情况下实践本发明概念。在其它例子中,未详细描述众所周知的方法、过程、组件、电路以及网络,以免不必要地混淆实施例的各方面。
应理解,虽然术语第一、第二等可在本文中用以描述各种元件,但这些元件不应受这些术语限制。这些术语仅用于将一个元件与另一元件区分开来。举例来说,在不脱离本发明概念的范围的情况下,第一模块可以被称为第二模块,并且类似地,第二模块可以被称为第一模块。
本文中用于本发明概念的描述中的术语是仅出于描述具体实施例的目的且并不希望限制本发明概念。如本发明概念和随附权利要求书的描述中所使用,除非上下文另外明确指示,否则单数形式“一(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)机制或例如I2C/SMBus的其它边带总线来对FPGA中的适当FAR窗口进行编程。SSD控制器经由PCIe基地址寄存器(Base AddressRegister,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)或根端口或根复合端口(rootcomplex 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控制器可使用例如I2C/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机制或例如I2C/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 EPPF分配的地址空间的部分可用于FPGA与SSD控制器之间的通信。
PF+双端口SSD架构
在这一FPGA-SSD架构中,连同FPGA一起使用双端口SSD。在这一架构中,FPGA(同样,FPGA使其自身的PF暴露,而非SSD提供使FPGA暴露的PF/VF)可使两个PF暴露于主机。SSDEP可连接到FPGA上的RP。第一FPGA EP PF可用于将主机直接连接到SSD。可将为第二FPGAEP PF而来的所有主机事务转发到FPGA加速逻辑。在主机上运行的ASM软件可使用第二FPGAEP 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)或凌动处理器(Atomprocessor)、超微半导体(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 AccessMemory,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)、图形处理单元(GraphicsProcessing 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中,处理器110、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事务传送到HIL310。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)转换为物理块地址(PhysicalBlock 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通信的存储器的量可能相对较小(例如64KB),但是SSD 120可请求大得多的块(例如10MB或大于10MB)。作为响应,处理器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可在下游端口335处接收通信、拦截所述通信且本地地处理所述通信,而非将所述通信转发到处理器110。由FPGA 145在下游端口335处从并不涉及下游FAR 420的SSD 120接收的任何通信可由FPGA 145经由上游端口330传送到处理器110。(FPGA145在上游端口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中仅出于示范性目的示出两个加速引擎。或者,如果FPGA145需要额外信息来执行加速指令(例如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,I2C)总线或系统管理总线(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)而非传送到处理器110)可放置在FPGA 145与SSD 120之间的桥接组件(图3中未示出)中。由于这一桥接组件将需要与FPGA 145和SSD120通信,因此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仍并不直接“查看”FPGA145,因为FPGA 145并不是可发现的装置。但SSD 120可通过在用于NVMe通信的子集410中的专用寄存器中编程上游FAR 605的基地址来通知上游FAR 605的处理器110。在从用于NVMe通信的子集410读取这一专用寄存器后,处理器110可能会知晓上游FAR 605。接着处理器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和上游过滤器505可放置在第一桥接组件中,且下游端口335和下游过滤器360可放置在第二桥接组件中,每一桥接组件操控图5的不同组件PCIe事务的过滤。或者,可使用这些桥接组件中的仅一个(其中FPGA 145操控其自身的过滤以用于从另一源通信),或可使用单一桥接组件以操纵用于FPGA 145的所有过滤,无论PCIe事务源如何。
第三示例实施例
图7示出根据本发明概念的第三实施例的图1的FPGA 145和图1的SSD 120的组件。在本发明概念的第三实施例中,SSD 120包含物理功能(PF)705和虚拟功能(VF)710。(应注意,本发明概念的第三实施例并不意欲暗示本发明概念的其它实施例并不包含PF和/或VF,只是本发明概念的其它实施例并不以与本发明概念的第三实施例中相同的方式使用。)PF705表示单一资源,例如由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。(上游FAR605可经选择仅作为块810的子集;但由于块810专用于由VF 710使用且除了有效地使FPGA145暴露以外,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-F340以供用于处理器,而不是将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事务,以查看其是否包含PF905的标识符。如果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事务可被视为经指定以用于SSD120,且可由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 420编程下游过滤器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可包含用于与处理器110NVMe通信的子集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。FPGA145也可请求用于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中)。但在本发明概念的第六实施例中,FPGA145没有理由像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发送到SSD120。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接收下游FAR420。在框2206处,FPGA 145可使下游FAR 420与下游过滤器360相关联。应注意,如果SSD120经由边带总线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与上游过滤器505相关联。应注意,如果SSD 120经由边带总线365将上游FAR605编程到上游过滤器505中,或可能需要FPGA 145采取有效步骤(例如在SSD 120将PCIeVDM发送到包含上游FAR 605的FPGA 145时),那么这类关联可能自动地发生。在本发明概念的一些实施例中,上游FAR 605可由FPGA 145本身来提供。
或者,在框2218处,FPGA 145可从SSD 120接收用于使FPGA 145暴露的PF或VF的标识符,且在框2221处,FPGA 145可使PF/VF标识符与上游过滤器505相关联。同样,如果SSD120经由边带总线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相同的功能。在本发明概念的一些实施例中,可省略框2227以及框2230,如由虚线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-F340可将图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-F340可将图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处,第二桥接组件1910可从图1的SSD 120接收PCIe事务。在框2610处,第二桥接组件1910可确定PCIe事务是否为加速指令。如果是,那么在框2615处,第二桥接组件1910可将PCIe事务/加速指令转发到图1的FPGA 145;否则,在框2620处,第二桥接组件1910可将PCIe事务转发到图1的处理器110。
图27A到图27C示出根据本发明概念的实施例的用于SSD 120以处理PCIe事务的实例过程的流程图。在图27A中,在框2705处,SSD 120可请求存储器地址的块。应注意,SSD120可如本发明概念的第一实施例到第四实施例中从主机系统存储器或如本发明概念的第五实施例到第八实施例中从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 605对上游过滤器505进行编程。或者,在框2735处,SSD 120可使用PF 705来暴露其自身的性能。接着,在框2740处,SSD 120可使用PF 905或VF 710来暴露FPGA 145,且在框2745处,SSD120可使用边带总线365、PCIe VDM或任何其它所需机制用PF 905或VF 710的标识符对上游过滤器505进行编程。应注意,在本发明概念的一些实施例中,可省略框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-S315以用于处理。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处,SSD120可确定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、光学、红外线、电缆、激光等。
可以参考或结合包含功能、过程、数据结构、应用程序等的相关联数据描述本发明概念的实施例,所述相关联数据在通过机器存取时引起机器执行任务或定义抽象数据类型或低级硬件环境。相关联数据可以存储在例如易失性存储器和/或非易失性存储器,例如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所述的系统,其中边带总线来自包含互集成电路(I2C)总线和系统管理总线(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所述的系统,其中边带总线来自包含I2C总线和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所述的系统,其中边带总线来自包含I2C总线和SMBus的集合。
陈述36.本发明概念的实施例包含根据陈述33所述的系统,其中控制器经操作以使用PCIe VDM来用下游FAR对下游过滤器进行编程。
陈述37.本发明概念的实施例包含根据陈述30所述的系统,其中:
第二加速指令与上游FAR相关联;以及
上游过滤器经操作以拦截与上游FAR相关联的第二加速指令。
陈述38.本发明概念的实施例包含根据陈述37所述的系统,其中VF经操作以从处理器请求主机系统地址的第二块作为上游FAR。
陈述39.本发明概念的实施例包含根据陈述38所述的系统,其中控制器经操作以用上游FAR对上游过滤器进行编程。
陈述40.本发明概念的实施例包含根据陈述39所述的系统,其中控制器经操作以使用边带总线来用上游FAR对上游过滤器进行编程。
陈述41.本发明概念的实施例包含根据陈述40所述的系统,其中边带总线来自包含I2C总线和SMBus的集合。
陈述42.本发明概念的实施例包含根据陈述39所述的系统,其中控制器经操作以使用PCIe VDM来用上游FAR对上游过滤器进行编程。
陈述43.本发明概念的实施例包含根据陈述30所述的系统,其中:
第二加速指令包含VF的标识符;以及
上游过滤器经操作以拦截与VF的标识符相关联的第二加速指令。
陈述44.本发明概念的实施例包含根据陈述43所述的系统,其中控制器经操作以用VF的标识符对上游过滤器进行编程。
陈述45.本发明概念的实施例包含根据陈述44所述的系统,其中控制器经操作以使用边带总线来用VF的标识符对上游过滤器进行编程。
陈述46.本发明概念的实施例包含根据陈述45所述的系统,其中边带总线来自包含I2C总线和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所述的系统,其中边带总线来自包含I2C总线和SMBus的集合。
陈述56.本发明概念的实施例包含根据陈述53所述的系统,其中控制器经操作以使用PCIe VDM来用下游FAR对下游过滤器进行编程。
陈述57.本发明概念的实施例包含根据陈述50所述的系统,其中:
第二加速指令与上游FAR相关联;以及
上游过滤器经操作以拦截与上游FAR相关联的第二加速指令。
陈述58.本发明概念的实施例包含根据陈述57所述的系统,其中第二PF经操作以从处理器请求主机系统地址的第二块作为上游FAR。
陈述59.本发明概念的实施例包含根据陈述58所述的系统,其中控制器经操作以用上游FAR对上游过滤器进行编程。
陈述60.本发明概念的实施例包含根据陈述59所述的系统,其中控制器经操作以使用边带总线来用上游FAR对上游过滤器进行编程。
陈述61.本发明概念的实施例包含根据陈述60所述的系统,其中边带总线来自包含I2C总线和SMBus的集合。
陈述62.本发明概念的实施例包含根据陈述59所述的系统,其中控制器经操作以使用PCIe VDM来用上游FAR对上游过滤器进行编程。
陈述63.本发明概念的实施例包含根据陈述50所述的系统,其中:
第二加速指令包含第二PF的标识符;以及
上游过滤器经操作以拦截与第二PF的标识符相关联的第二加速指令。
陈述64.本发明概念的实施例包含根据陈述63所述的系统,其中控制器经操作以用第二PF的标识符对上游过滤器进行编程。
陈述65.本发明概念的实施例包含根据陈述64所述的系统,其中控制器经操作以使用边带总线来用第二PF的标识符对上游过滤器进行编程。
陈述66.本发明概念的实施例包含根据陈述65所述的系统,其中边带总线来自包含I2C总线和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所述的系统,其中边带总线来自包含I2C总线和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所述的系统,其中边带总线来自包含I2C总线和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所述的加速模块,其中边带总线来自包含互集成电路(I2C)总线和系统管理总线(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所述的加速模块,其中边带总线来自包含I2C总线和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所述的加速模块,其中边带总线来自包含I2C总线和SMBus的集合。
陈述122.本发明概念的实施例包含根据陈述119所述的加速模块,其中FPGA的上游过滤器中的上游FAR可由存储装置使用PCIe VDM编程。
陈述123.本发明概念的实施例包含根据陈述117所述的加速模块,其中:
第二加速指令包含VF的标识符;以及
上游过滤器经操作以拦截与VF的标识符相关联的第二加速指令。
陈述124.本发明概念的实施例包含根据陈述123所述的加速模块,其中FPGA的上游过滤器可由存储装置用VF的标识符编程。
陈述125.本发明概念的实施例包含根据陈述124所述的加速模块,其中FPGA的上游过滤器可由存储装置使用边带总线来用VF的标识符编程。
陈述126.本发明概念的实施例包含根据陈述125所述的加速模块,其中边带总线来自包含I2C总线和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所述的加速模块,其中边带总线来自包含I2C总线和SMBus的集合。
陈述136.本发明概念的实施例包含根据陈述133所述的加速模块,其中FPGA的上游过滤器中的上游FAR可由存储装置使用PCIe VDM编程。
陈述137.本发明概念的实施例包含根据陈述131所述的加速模块,其中:
第二加速指令包含PF的标识符;以及
上游过滤器经操作以拦截与PF的标识符相关联的第二加速指令。
陈述138.本发明概念的实施例包含根据陈述137所述的加速模块,其中FPGA的上游过滤器可由存储装置用PF的标识符编程。
陈述139.本发明概念的实施例包含根据陈述138所述的加速模块,其中FPGA的上游过滤器可由存储装置使用边带总线来用PF的标识符编程。
陈述140.本发明概念的实施例包含根据陈述139所述的加速模块,其中边带总线来自包含I2C总线和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所述的加速模块,其中边带总线来自包含I2C总线和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所述的加速模块,其中边带总线来自包含I2C总线和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所述的第一桥接组件,其中边带总线来自包含I2C总线和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所述的第一桥接组件,其中边带总线来自包含I2C总线和SMBus的集合。
陈述185.本发明概念的实施例包含根据陈述182所述的第一桥接组件,其中第一桥接组件的上游过滤器中的上游FAR可由存储装置使用PCIe VDM编程。
陈述186.本发明概念的实施例包含根据陈述180所述的第一桥接组件,其中:
第二加速指令包含VF的标识符;以及
上游过滤器经操作以标识与VF的标识符相关联的第二加速指令。
陈述187.本发明概念的实施例包含根据陈述186所述的第一桥接组件,其中第一桥接组件的上游过滤器可由存储装置用VF的标识符编程。
陈述188.本发明概念的实施例包含根据陈述187所述的第一桥接组件,其中第一桥接组件的上游过滤器可由存储装置使用边带总线来用VF的标识符编程。
陈述189.本发明概念的实施例包含根据陈述188所述的第一桥接组件,其中边带总线来自包含I2C总线和SMBus的集合。
陈述190.本发明概念的实施例包含根据陈述187所述的第一桥接组件,其中第一桥接组件的上游过滤器可由存储装置使用PCIe VDM来用VF的标识符编程。
陈述191.本发明概念的实施例包含根据陈述171所述的第一桥接组件,其中:
上游接口由存储装置的物理功能(PF)而暴露;
上游接口包含:
上游端口;以及
上游过滤器与上游端口相关联,所述上游过滤器经操作以向加速模块标识第二加速指令;以及
下游接口经操作以将第二加速指令转发到加速模块,且经操作以将并不由上游过滤器拦截的第三PCIe事务转发到存储装置,所述上游过滤器是在上游端口处从处理器接收到的。
陈述192.本发明概念的实施例包含根据陈述191所述的第一桥接组件,其中:
第二加速指令与上游FAR相关联;以及
上游过滤器经操作以标识与上游FAR相关联的第二加速指令。
陈述193.本发明概念的实施例包含根据陈述192所述的第一桥接组件,其中第一桥接组件的上游过滤器中的上游FAR可由存储装置编程。
陈述194.本发明概念的实施例包含根据陈述193所述的第一桥接组件,其中第一桥接组件的上游过滤器中的上游FAR可由存储装置使用边带总线编程。
陈述195.本发明概念的实施例包含根据陈述194所述的第一桥接组件,其中边带总线来自包含I2C总线和SMBus的集合。
陈述196.本发明概念的实施例包含根据陈述193所述的第一桥接组件,其中第一桥接组件的上游过滤器中的上游FAR可由存储装置使用PCIe VDM编程。
陈述197.本发明概念的实施例包含根据陈述191所述的第一桥接组件,其中:
第二加速指令包含PF的标识符;以及
上游过滤器经操作以标识与PF的标识符相关联的第二加速指令。
陈述198.本发明概念的实施例包含根据陈述197所述的第一桥接组件,其中第一桥接组件的上游过滤器可由存储装置用PF的标识符编程。
陈述199.本发明概念的实施例包含根据陈述198所述的第一桥接组件,其中第一桥接组件的上游过滤器可由存储装置使用边带总线来用PF的标识符编程。
陈述200.本发明概念的实施例包含根据陈述199所述的第一桥接组件,其中边带总线来自包含I2C总线和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所述的第二桥接组件,其中边带总线来自包含互集成电路(I2C)总线和系统管理总线(SMBus)的集合。
陈述212.本发明概念的实施例包含根据陈述209所述的第二桥接组件,其中第二桥接组件的下游过滤器中的下游FAR可由存储装置使用PCIe供应商定义消息(VDM)编程。
陈述213.本发明概念的实施例包含根据陈述206所述的第二桥接组件,其中:
下游接口包含:
根端口;以及
与根端口相关联的下游过滤器,所述下游过滤器经操作以标识与从存储装置接收到的下游过滤器地址范围(FAR)相关联的加速指令;
下游接口经操作以将加速指令转发到加速模块,且经操作以将并不与下游FAR相关联的第二PCIe事务转发到处理器,所述下游FAR是在下游端口处从存储装置接收到的。
陈述214.本发明概念的实施例包含根据陈述213所述的第二桥接组件,其中第二桥接组件的下游过滤器中的下游FAR可由存储装置编程。
陈述215.本发明概念的实施例包含根据陈述214所述的第二桥接组件,其中第二桥接组件的下游过滤器中的下游FAR可由存储装置使用边带总线编程。
陈述216.本发明概念的实施例包含根据陈述215所述的第二桥接组件,其中边带总线来自包含I2C总线和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所述的存储装置,其中边带总线来自包含互集成电路(I2C)总线和系统管理总线(SMBus)的集合。
陈述233.本发明概念的实施例包含根据陈述230所述的存储装置,其中控制器经操作以使用PCIe供应商定义消息(VDM)来用下游FAR对加速模块的下游过滤器进行编程。
陈述234.本发明概念的实施例包含根据陈述229所述的存储装置,其中控制器进一步经操作以选择主机系统地址的块的第二子集作为上游FAR。
陈述235.本发明概念的实施例包含根据陈述234所述的存储装置,其中控制器经操作以存储关于可由在处理器上运行的ASM存取的在专用寄存器中的上游FAR的信息。
陈述236.本发明概念的实施例包含根据陈述235所述的存储装置,其中专用寄存器在主机系统地址的块内。
陈述237.本发明概念的实施例包含根据陈述229所述的存储装置,其中控制器经操作以用上游FAR对加速模块的上游过滤器进行编程。
陈述238.本发明概念的实施例包含根据陈述237所述的存储装置,其中控制器经操作以使用边带总线来用上游FAR对加速模块的上游过滤器进行编程。
陈述239.本发明概念的实施例包含根据陈述238所述的存储装置,其中边带总线来自包含互集成电路(I2C)总线和系统管理总线(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所述的存储装置,其中边带总线来自包含I2C总线和SMBus的集合。
陈述247.本发明概念的实施例包含根据陈述244所述的存储装置,其中控制器经操作以使用PCIe VDM来用下游FAR对加速模块的下游过滤器进行编程。
陈述248.本发明概念的实施例包含根据陈述242所述的存储装置,其中VF经操作以从处理器请求主机系统地址的第二块作为上游FAR。
陈述249.本发明概念的实施例包含根据陈述248所述的存储装置,其中控制器经操作以用上游FAR对加速模块的上游过滤器进行编程。
陈述250.本发明概念的实施例包含根据陈述249所述的存储装置,其中控制器经操作以使用边带总线来用上游FAR对加速模块的上游过滤器进行编程。
陈述251.本发明概念的实施例包含根据陈述250所述的存储装置,其中边带总线来自包含I2C总线和SMBus的集合。
陈述252.本发明概念的实施例包含根据陈述249所述的存储装置,其中控制器经操作以使用PCIe VDM来用上游FAR对加速模块的上游过滤器进行编程。
陈述253.本发明概念的实施例包含根据陈述242所述的存储装置,其中控制器经操作以用VF的标识符对加速模块的上游过滤器进行编程。
陈述254.本发明概念的实施例包含根据陈述253所述的存储装置,其中控制器经操作以使用边带总线来用VF的标识符对加速模块的上游过滤器进行编程。
陈述255.本发明概念的实施例包含根据陈述254所述的存储装置,其中边带总线来自包含I2C总线和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所述的存储装置,其中边带总线来自包含I2C总线和SMBus的集合。
陈述263.本发明概念的实施例包含根据陈述260所述的存储装置,其中控制器经操作以使用PCIe VDM来用下游FAR对加速模块的下游过滤器进行编程。
陈述264.本发明概念的实施例包含根据陈述258所述的存储装置,其中第二PF经操作以从处理器请求主机系统地址的第二块作为上游FAR。
陈述265.本发明概念的实施例包含根据陈述264所述的存储装置,其中控制器经操作以用上游FAR对加速模块的上游过滤器进行编程。
陈述266.本发明概念的实施例包含根据陈述265所述的存储装置,其中控制器经操作以使用边带总线来用上游FAR对加速模块的上游过滤器进行编程。
陈述267.本发明概念的实施例包含根据陈述266所述的存储装置,其中边带总线来自包含I2C总线和SMBus的集合。
陈述268.本发明概念的实施例包含根据陈述265所述的存储装置,其中控制器经操作以使用PCIe VDM来用上游FAR对加速模块的上游过滤器进行编程。
陈述269.本发明概念的实施例包含根据陈述258所述的存储装置,其中控制器经操作以用第二PF的标识符对加速模块的上游过滤器进行编程。
陈述270.本发明概念的实施例包含根据陈述269所述的存储装置,其中控制器经操作以使用边带总线来用第二PF的标识符对加速模块的上游过滤器进行编程。
陈述271.本发明概念的实施例包含根据陈述270所述的存储装置,其中边带总线来自包含I2C总线和SMBus的集合。
陈述272.本发明概念的实施例包含根据陈述269所述的存储装置,其中控制器经操作以使用PCIe VDM来用第二PF的标识符对加速模块的上游过滤器进行编程。
陈述273.本发明概念的实施例包含根据陈述258所述的存储装置,其中控制器经操作以经由SSD的端点从APM-F接收结果,且经操作以将所述结果经由SSD的端点转发到处理器。
陈述274.本发明概念的实施例包含根据陈述225所述的存储装置,其中:
SSD经操作以从加速模块请求加速模块地址的块;以及
控制器经操作以选择加速模块地址的块的子集作为下游FAR。
陈述275.本发明概念的实施例包含根据陈述274所述的存储装置,其中控制器经操作以用下游FAR对加速模块的下游过滤器进行编程。
陈述276.本发明概念的实施例包含根据陈述275所述的存储装置,其中控制器经操作以使用边带总线来用下游FAR对加速模块的下游过滤器进行编程。
陈述277.本发明概念的实施例包含根据陈述276所述的存储装置,其中边带总线来自包含互集成电路(I2C)总线和系统管理总线(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,所述边带总线来自包含互集成电路(I2C)总线和系统管理总线(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,所述边带总线来自包含I2C总线和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的标识符,所述边带总线来自包含I2C总线和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的标识符,所述边带总线来自包含I2C总线和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,所述边带总线来自包含I2C总线和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,所述边带总线来自包含I2C总线和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,所述边带总线来自包含I2C总线和SMBus的集合。
陈述342.本发明概念的实施例包含根据陈述340所述的方法,其中在第一桥接组件处从存储装置接收上游FAR包含从存储装置接收PCIe供应商定义消息(VDM),所述PCIeVDM包含上游FAR。
陈述343.本发明概念的实施例包含根据陈述337所述的方法,其中在第一桥接组件处确定PCIe事务是否为加速指令包含确定PCIe事务是否与由存储装置暴露的虚拟功能(VF)相关联。
陈述344.本发明概念的实施例包含根据陈述343所述的方法,其中确定PCIe事务是否与由存储装置暴露的虚拟功能(VF)相关联包含确定PCIe事务是否包含具有VF的标识符的标签。
陈述345.本发明概念的实施例包含根据陈述344所述的方法,所述方法进一步包括:
在第一桥接组件处从存储装置接收VF的标识符;以及
使VF的标识符与第一桥接组件的上游端口相关联。
陈述346.本发明概念的实施例包含根据陈述345所述的方法,其中在第一桥接组件处从存储装置接收VF的标识符包含经由边带总线在第一桥接组件处从存储装置接收VF的标识符,所述边带总线来自包含I2C总线和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的标识符,所述边带总线来自包含I2C总线和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,所述边带总线来自包含互集成电路(I2C)总线和系统管理总线(SMBus)的集合。
陈述362.本发明概念的实施例包含根据陈述360所述的方法,其中在第二桥接组件处从存储装置接收下游FAR包含从存储装置接收PCIe供应商定义消息(VDM),所述PCIeVDM包含下游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对加速模块的下游端口进行编程,所述边带总线来自包含互集成电路(I2C)总线和系统管理总线(SMBus)的集合。
陈述372.本发明概念的实施例包含根据陈述370所述的方法,其中用下游FAR对加速模块的下游端口进行编程包含使用PCIe供应商定义消息(VDM)来用下游FAR对加速模块的下游端口进行编程,所述PCIe VDM包含下游FAR。
陈述373.本发明概念的实施例包含根据陈述370所述的方法,所述方法进一步包括:
选择主机系统地址的块的第二子集作为上游FAR;以及
用上游FAR对加速模块的上游端口进行编程。
陈述374.本发明概念的实施例包含根据陈述373所述的方法,其中用上游FAR对加速模块的上游端口进行编程包含经由边带总线用上游FAR对加速模块的上游端口进行编程,所述边带总线来自包含I2C总线和SMBus的集合。
陈述375.本发明概念的实施例包含根据陈述373所述的方法,其中用上游FAR对加速模块的上游端口进行编程包含使用PCIe供应商定义消息(VDM)来用上游FAR对加速模块的上游端口进行编程,所述PCIe VDM包含上游FAR。
述376.本发明概念的实施例包含根据陈述366所述的方法,所述方法进一步包括:
从处理器请求主机系统地址的块;
选择主机系统地址的块的子集作为下游FAR;以及
用下游FAR对加速模块的根端口进行编程。
陈述377.本发明概念的实施例包含根据陈述376所述的方法,其中用下游FAR对加速模块的根端口进行编程包含经由边带总线用下游FAR对加速模块的根端口进行编程,所述边带总线来自包含I2C总线和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,所述边带总线来自包含互集成电路(I2C)总线和系统管理总线(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,所述边带总线来自包含I2C总线和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的标识符,所述边带总线来自包含I2C总线和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的标识符,所述边带总线来自包含I2C总线和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,所述边带总线来自包含I2C总线和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,所述边带总线来自包含I2C总线和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对加速模块的下游端口进行编程,所述边带总线来自包含互集成电路(I2C)总线和系统管理总线(SMBus)的集合。
陈述449.本发明概念的实施例包含根据陈述447所述的制品,其中用下游FAR对加速模块的下游端口进行编程包含使用PCIe供应商定义消息(VDM)来用下游FAR对加速模块的下游端口进行编程,所述PCIe VDM包含下游FAR。
陈述450.本发明概念的实施例包含根据陈述447所述的制品,所述非暂时性存储媒体具有存储于其上的在由机器执行时引起以下操作的其它指令:
选择主机系统地址的块的第二子集作为上游FAR;以及
用上游FAR对加速模块的上游端口进行编程。
陈述451.本发明概念的实施例包含根据陈述450所述的制品,其中用上游FAR对加速模块的上游端口进行编程包含经由边带总线用上游FAR对加速模块的上游端口进行编程,所述边带总线来自包含I2C总线和SMBus的集合。
陈述452.本发明概念的实施例包含根据陈述450所述的制品,其中用上游FAR对加速模块的上游端口进行编程包含使用PCIe供应商定义消息(VDM)来用上游FAR对加速模块的上游端口进行编程,所述PCIe VDM包含上游FAR。
陈述453.本发明概念的实施例包含根据陈述443所述的制品,所述非暂时性存储媒体具有存储于其上的在由机器执行时引起以下操作的其它指令:
从处理器请求主机系统地址的块;
选择主机系统地址的块的子集作为下游FAR;以及
用下游FAR对加速模块的根端口进行编程。
陈述454.本发明概念的实施例包含根据陈述453所述的制品,其中用下游FAR对加速模块的根端口进行编程包含经由边带总线用下游FAR对加速模块的根端口进行编程,所述边带总线来自包含I2C总线和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,所述边带总线来自包含I2C总线和SMBus的集合。
陈述467.本发明概念的实施例包含根据陈述465所述的制品,其中在第一桥接组件处从存储装置接收上游FAR包含从存储装置接收PCIe供应商定义消息(VDM),所述PCIeVDM包含上游FAR。
陈述468.本发明概念的实施例包含根据陈述462所述的制品,其中在第一桥接组件处确定PCIe事务是否为加速指令包含确定PCIe事务是否与由存储装置暴露的虚拟功能(VF)相关联。
陈述469.本发明概念的实施例包含根据陈述468所述的制品,其中确定PCIe事务是否与由存储装置暴露的虚拟功能(VF)相关联包含确定PCIe事务是否包含具有VF的标识符的标签。
陈述470.本发明概念的实施例包含根据陈述469所述的制品,所述非暂时性存储媒体具有存储于其上的在由机器执行时引起以下操作的其它指令:
在第一桥接组件处从存储装置接收VF的标识符;以及
使VF的标识符与第一桥接组件的上游端口相关联。
述471.本发明概念的实施例包含根据陈述470所述的制品,其中在第一桥接组件处从存储装置接收VF的标识符包含经由边带总线在第一桥接组件处从存储装置接收VF的标识符,所述边带总线来自包含I2C总线和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的标识符,所述边带总线来自包含I2C总线和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,所述边带总线来自包含互集成电路(I2C)总线和系统管理总线(SMBus)的集合。
陈述487.本发明概念的实施例包含根据陈述485所述的制品,其中在第二桥接组件处从存储装置接收下游FAR包含从存储装置接收PCIe供应商定义消息(VDM),所述PCIeVDM包含下游FAR。
陈述488.本发明概念的实施例包含根据陈述482所述的制品,其中在第二桥接组件处确定PCIe事务是否为加速指令包含确定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所述的方法,还包括:
在所述现场可编程门阵列处从所述存储装置接收所述上游过滤器地址范围;以及
使所述上游过滤器地址范围与所述现场可编程门阵列的所述上游端口相关联。
CN201910161732.1A 2018-03-05 2019-03-04 主机系统及其方法和加速模块 Active CN110232036B (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
CN110232036A true CN110232036A (zh) 2019-09-13
CN110232036B CN110232036B (zh) 2022-08-09

Family

ID=67768071

Family Applications (3)

Application Number Title Priority Date Filing Date
CN201910161298.7A Active CN110232037B (zh) 2018-03-05 2019-03-04 主机系统及其方法和加速装置
CN201910161732.1A Active CN110232036B (zh) 2018-03-05 2019-03-04 主机系统及其方法和加速模块
CN201910161758.6A Active CN110232034B (zh) 2018-03-05 2019-03-04 主机系统及其方法和加速模块

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201910161298.7A Active CN110232037B (zh) 2018-03-05 2019-03-04 主机系统及其方法和加速装置

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201910161758.6A Active CN110232034B (zh) 2018-03-05 2019-03-04 主机系统及其方法和加速模块

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互联系统、数据处理方法、设备、存储介质及产品

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105659222A (zh) * 2013-11-27 2016-06-08 英特尔公司 用于计算消息摘要的系统和方法
CN106126447A (zh) * 2015-05-07 2016-11-16 三星电子株式会社 控制存储装置的方法、存储器模块和存储系统
US20180052766A1 (en) * 2016-08-16 2018-02-22 Western Digital Technologies, Inc. Non-volatile storage system with compute engine to accelerate big data applications

Family Cites Families (52)

* 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
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
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
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105659222A (zh) * 2013-11-27 2016-06-08 英特尔公司 用于计算消息摘要的系统和方法
CN106126447A (zh) * 2015-05-07 2016-11-16 三星电子株式会社 控制存储装置的方法、存储器模块和存储系统
US20180052766A1 (en) * 2016-08-16 2018-02-22 Western Digital Technologies, Inc. Non-volatile storage system with compute engine to accelerate big data applications

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
TW201939269A (zh) 2019-10-01
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
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
CN110232036A (zh) 主机系统及其方法和加速模块
CN104885062B (zh) 使用逻辑到物理映射以与数据存储装置进行直接用户空间通信
CN104965757B (zh) 虚拟机热迁移的方法、虚拟机迁移管理装置及系统
CN108737325A (zh) 一种多租户数据隔离方法、装置及系统
KR102403653B1 (ko) Fpga 기반 가속화를 위한 새로운 ssd 구조
CN105993009A (zh) 通过非透明桥向PCIe集群中的计算资源传送MSI-X中断的方法和装置
KR20200078382A (ko) 개시자 모드를 갖는 솔리드-스테이트 드라이브
CN106933775A (zh) 数据处理系统和数据处理的方法
CN105389120B (zh) 支持通过活动消息的rma api
CN110096220A (zh) 一种分布式存储系统、数据处理方法和存储节点
TW200929950A (en) Packet forwarding apparatus and method for virtualization switch
CN110275840A (zh) 在存储器接口上的分布式过程执行和文件系统
CN105718211B (zh) 信息处理设备和信息处理方法
CN108965169A (zh) 一种报文传输方法、网卡控制器、网卡及电子设备
CN111061683B (zh) 一种高速存储和操作数据流的方法与装置
CN118916310A (zh) 主机系统及其方法和加速模块

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant