CN104123236A - 用于使用预提升缓冲器的高吞吐量硬件加速的方法和系统 - Google Patents
用于使用预提升缓冲器的高吞吐量硬件加速的方法和系统 Download PDFInfo
- Publication number
- CN104123236A CN104123236A CN201410177329.5A CN201410177329A CN104123236A CN 104123236 A CN104123236 A CN 104123236A CN 201410177329 A CN201410177329 A CN 201410177329A CN 104123236 A CN104123236 A CN 104123236A
- Authority
- CN
- China
- Prior art keywords
- target data
- accelerator
- acq
- data
- computer
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/385—Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Advance Control (AREA)
Abstract
实施例涉及提供高吞吐量硬件加速。多个方面包括初始化加速器控制队列(ACQ),所述加速器控制队列被配置为提供关于被识别为加速器数据的数据的多个页面的位置信息。确定所请求的目标数据的每个页面的起始位置。起始位置包括系统存储器和盘存储中之一。基于确定起始位置是系统存储器,在ACQ中创建条目,所述条目映射至用于目标数据的系统存储器源地址。基于确定起始位置是盘存储,在ACQ中创建条目,所述条目映射至用于目标数据的特别预提升缓冲器的特别预提升缓冲器源地址。基于ACQ的各自条目,通过加速器从在所述存储器或所述特别预提升缓冲器内的各自位置存取目标数据的多个页面的每个页面。
Description
技术领域
本发明一般地涉及硬件加速器,并且更为具体地涉及使用速度匹配的特别预提升(pre-stage)缓冲器来提供高吞吐量硬件加速。
背景技术
当前计算系统被设计以处理需要对位于系统存储器或盘存储存储上的大量数据进行存取的数据库查询和软件算法。为了处理需要存取大量数据的数据库查询,当前计算系统典型地使用来自特定时间点的数据、或者在在线交易处理(OLTP)数据库系统中所使用的实时数据的“快照”。此外,当需要的数据带宽可用时,当前计算系统经常提供硬件加速器以便将一些处理从昂贵的一致性存储器多处理器(coherent memory multiprocessor)卸载至较低廉的或更高效的硬件加速器中。
发明内容
实施例包含用于提供高吞吐量硬件加速的方法、系统和计算机程序产品。多个方面包含:初始化加速器控制队列(ACQ),所述加速器控制队列被配置为提供关于被识别为加速器数据的数据的多个页面的位置信息。从软件应用接收对跨越多页面的目标数据的请求,并且确定每页面目标数据的起始位置(originating location)。起始位置包含系统存储器和盘存储中的至少一个。基于确定起始位置是系统存储器,在ACQ中创建条目(entry),所述条目映射至用于目标数据的系统存储器源地址。基于确定出起始位置是盘存储,在ACQ中创建条目,所述条目映射至用于目标数据的特别预提升缓冲器的预提升缓冲器源地址,所述特别预提升缓冲器被配置为从盘存储中预提升目标数据以用于通过加速器进行存取。基于ACQ的各种条目,通过加速器从所述存储器或所述特别预提升缓冲器中的各自位置来存取目标数据的多个页面中的每一页面。
附图说明
在权利要求中特别地指出并且楚地要求作为本发明的主题。从下面结合附图的详细描述中,本发明的上述和其他特征以及优势是明显的,其中:
图1描绘根据实施例的计算机系统的方框图;
图2描绘根据实施例从系统存储器和盘存储中预提升数据以用于加速器存取和处理的流程图;
图3描绘根据实施例用于发起加速器以便对来自加速器控制队列的数据进行处理的流程图;
图4描绘根据实施例用于释放来自特别预提升缓冲器存储器位置的预提升数据的流程图;
图5描绘根据实施例的计算机程序产品。
具体实施方式
在此公开的实施例针对提供高吞吐量硬件加速。一个方面包含,初始化加速器控制队列(ACQ),所述加速器控制队列被配置为提供关于被识别为加速器数据的数据的多个页面的位置信息。从软件应用处接收对跨越多页面的目标数据的请求,并且确定目标数据的每个页面的起始位置。起始位置包含系统存储器和盘存储中的至少一个。基于确定出起始位置是系统存储器,在ACQ中创建条目,所述条目映射至用于目标数据的系统存储器源地址。基于确定出起始位置是盘存储,在ACQ中创建条目,所述条目映射至用于目标数据的特别预提升缓冲器的预提升缓冲器源地址,所述特别预提升缓冲器被配置为从盘存储预提升目标数据,用于加速器进行存取。基于ACQ的各自条目,通过加速器从在所述存储器或所述特别预提升缓冲器中的各自位置中存取目标数据的多个页面中的每一页面。
当前数据系统典型地在将数据转交至加速器之前将所有请求数据拉回到系统存储器内,或者将简单地假定所有请求数据位于盘存储上并且将直接发送至加速器。相应地,当前数据系统并不尝试,将I/O请求发送至盘子系统,并且使这些子系统将一些数据直接传递至加速器,同时使其他数据来自系统存储器。
在此公开的实施例提供这样的方法、系统和计算机程序产品,它们用于将数据从系统存储器和盘存储二者处卸载至加速器,同时防止加速器等待一个或另一个。换言之,实施例通过确保所传递至加速器用于处理,从而提供速度匹配。实施例包含这样的方法,其将来自相对慢的磁盘存取的数据的传递与高吞吐量硬件加速器进行速度匹配而不对用户级软件引入附加的软件复杂度。
此外,在此公开的实施例提供这样的方法、系统和计算机程序产品,它们用于对OLTP系统中发现的大量数据进行处理时可用的加速器进行最优化。实施例以允许目标加速器以最大吞吐速率存取和处理数据的方式,从系统存储器和盘存储中预提升数据。实施例可以跟踪所需要的数据的状态和起始位置,允许以最优的方式存取数据的页面,而不考虑页面的位置(例如系统存储器还是盘存储)。实施例可以使用现场可编程门阵列(FPGA)作为加速器,结合快闪存储器作为特别预提升缓冲器以便对FPGA的使用进行最优化。实施例还可以通过对从盘至快闪存储器然后至FPGA的数据流进行最优化减少系统数据总线的使用,从而在所有盘驻留数据上避免系统和存储器总线。另外,实施例可以与任何操作大量数据上并且保持数据映射的软件算法一起使用,所述数据映射表明数据目前在系统存储器内还是在盘存储上。此外,实施例可以被扩展以操作在其中仅仅操作系统保持数据映射的系统上。
现在参考图1,示出根据示例性实施例的计算机系统10的方框图,所述计算机系统适合使用速度匹配的特别预提升缓冲器来提供高吞吐量硬件加速。计算机系统10仅是计算机系统的一个示例,而不旨在暗示与在此描述的实施例的使用或功能的范围有关的任何限制。不管怎样,计算机系统10能够被实施和/或执行此前阐述的任何功能。
与众多其他通用或专用计算系统环境或配置一起计算机系统10是可操作的。众所周知的适合供计算机系统10使用的计算系统、环境和/或配置的示例包括但不限于:个人计算机系统、服务器计算机系统、瘦客户端(thinclient)、胖客户端(thick client)、蜂窝电话、手持或膝上设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子、网络PC、微计算机系统、大型计算机系统和包含上述任何系统或设备的分布式云计算环境等。
可以在由计算机系统10执行的诸如程序模块的计算机系统可执行指令的一般上下文中描述计算机系统10。一般地,程序模块可以包括执行特定任务或实施特定抽象数据类型的例程、程序、对象、部件、逻辑、数据结构等。计算机系统10可以实现在分布式云计算环境中,其中通过由通信网络所链接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于本地的和远程的包含存储器存储设备的计算机系统存储介质中。
如图1中示出的,以通用计算设备的形式示出计算机系统10,其也被称作处理设备。计算机系统的部件可以包括但不限于:一个或多个处理器或处理单元16、系统存储器28和将包含系统存储器28的各种系统部件耦合至处理器16的总线18。处理器16可以运行计算机可读程序代码用于使用根据实施例的速度匹配的特别预提升缓冲器来提供高吞吐量硬件加速。
总线18表示几种总线结构类型中的任意一个或多个,包括存储器总线或存储器控制器、外围总线、加速图形端口和使用多种总线结构中的任何一种的处理器或局部总线。以示例而非限制性的方式,这样的结构包括:工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、加强型ISA(EISA)总线、视频电子标准协会(VESA)局部总线、和外围部件互联(PCI)总线。
计算机系统10可以包含各种计算机系统可读介质。这样的介质可以是通过计算机系统10可存取的任何可用介质,并且其包含易失和非易失性介质、可移除和不可移除介质。系统存储器28可以包括诸如随机存取存储器(RAM)和/或系统高速缓存之类的易失存储器的形式的计算机系统可读介质。根据实施例,系统存储器28可以由数据库软件使用以便创建如以下进一步讨论的加速器控制队列(ACQ)。
计算机系统10还可以包含其他可移除/不可移除、易失/非易失性计算机系统存储介质。仅以示例的方式,可以提供存储系统34以便从不可移除的非易失性的磁介质(未示出并且通常称作“硬盘驱动器”)中读取或向其写入。每个存储系统34可以包含特别预提升缓冲器或磁盘缓冲器36。尽管未示出,可以提供磁盘驱动器用于从可移除非易失性磁盘(例如“软磁盘”)读取并且向其写入,并且提供光盘驱动器用于从诸如CD-ROM、DVD-ROM或其他光学介质之类的可移除非易失性光盘中读取或向其写入。在这样的实例中,每个可以通过一个或多个数据介质接口连接至总线18。
如下文中将进一步描绘和描述的那样,系统存储器28可以包含至少一个具有一组(例如至少一个)程序模块的程序产品,所述程序模块被配置为执行本公开的实施例的功能。
根据实施例,计算机可读程序代码可以存储在示例方式但不限于的系统存储器28中,以及操作系统、一个或多个应用程序、其他程序模块和程序数据中。操作系统、一个或多个应用程序、其他程序模块和程序数据中的每一个,或者它们中的一些组合,可以包含联网环境的实施。计算机可读程序代码可以一般地执行如在此描述的发明的实施例的功能和/或方法。
计算机系统10也可以与以下设备进行通信:诸如键盘、指示装置、显示器等之类的一个或多个外部设备;一个或多个使得用户可以与计算机系统10交互的设备;和/或任何使得计算机系统/服务器10能够与一个或多个计算设备进行通信的设备(例如网卡、调制解调器等)。此外,计算机系统10可以与诸如局域网(LAN)、一般广域网(WAN)和/或公共网络(例如因特网)之类的一个或多个网络通信。这样的通信可以通过输入/输出(I/O)网络22来发生。如所描绘的,I/O网络22通过总线18来与计算机系统10的其他部件进行通信。例如,根据实施例,可以在处理器16和I/O网络之间建立I/O网络连接,以允许处理器16向I/O网络22发出特别的I/O请求。根据另一实施例,I/O网络也可以与计算机系统10的其他部件进行无线通信。
计算机系统10还可以包含专用计算机系统。这些专用计算机系统可以包含硬件加速器52,诸如FPGA(现场可编程门阵列)、GPU(图形处理单元)和类似的可以代替通用处理器或者增加于通用处理器使用的系统。根据实施例,每个硬件加速器可以包含诸如快闪存储器之类的特别预提升加速器缓冲器54。根据实施例,硬件加速器可以连接至I/O网络22。根据实施例,在每个硬件加速器52和系统存储器28之间可以提供专用接口70,以独立于处理器16地提供从硬件加速器子系统52至系统存储器28的直接存储器存取(DMA)。
计算机系统10也可以提供特别预提升备选缓冲器62,其可以连接至附加的存储器卡。应当理解的是,尽管未示出,但是可以与计算机系统10相结合地使用其他硬件和/或其他软件部件。示例包括但不限于:微代码、设备驱动器、冗余处理单元、外部盘驱动器阵列、RAID系统、带驱动器和数据档案存储系统(data archival storage system)等。
参考图2,一般地示出由计算机系统10的处理器16的实施例所执行的处理200的流程图。如图2中所示,处理200提供这样的方法,其用于从系统存储器28和盘存储34预提升数据以允许目标加速器52以最大吞吐速率存取并且处理数据。
根据实施例,如在方框210中所示,加速器控制队列(ACQ)可以被构造以便预提升需要使用加速器52的目标数据。ACQ可以包含用于已经由处理200所操作的目标数据的每个页面的条目。每个ACQ条目可以包含页面驻留在系统存储器28中还是在盘存储34中的指示。附加地,每个ACQ条目可以包含一组位(a set of bits),其指示对于ACQ条目的I/O操作(如果存在)的状态。在方框220中,可以对页面映射进行存取,以基于接收到对需要使用加速器52的目标数据的请求和询问,来确定目标数据的页面的位置。在方框230中,关于目标页面驻留在系统存储器28中还是在盘存储34上进行确定。
基于确定目标页面驻留在盘存储34上,发起对I/O网络的特别I/O请求,如在方框240中所示。根据实施例,特别I/O请求可以将目标页面从盘存储34直接传递给加速器52,或者将目标页面传递至特别预提升缓冲器36、54、62用于加速器52稍后存取。根据实施例,目标页面可以传递至特别预提升缓冲器,所述预提升缓冲器包括加速器缓冲器52、盘缓冲器36或备选缓冲器62中之一。根据实施例,特别预提升缓冲器36、54、62被配置为对目标数据进行预提升用于加速器进行存取。本实施例允许更好地利用加速器52,因为其将无需等待来自盘的目标数据。根据实施例,可以发起验证(pin)或映射目标页面在特别预提升缓冲器36、54、62中的位置的请求。相应地,在方框250中,可以创建ACQ条目,以映射目标页面在特别预提升缓冲器36、54、62中的源地址用于加速器52随后引用。
基于在块230中确定目标页面驻留在系统存储器28中,可以创建ACQ条目,其映射至目标页面在系统存储器28中的源地址用于加速器52随后引用,如在方框260中所示。根据实施例,加速器52随后可以使用直接存储器存取(DMA)以便通过专用接口从系统存储器28提取目标页面。
在方框270中,关于是否要将另一目标页面添加至ACQ进行确定。基于确定要将另一目标页面添加至ACQ,处理200可以存取页面映射,以便确定新目标页面的位置,如在方框220中所示。然而,基于确定没有更多目标页面要添加至ACQ,采集I/O响应,如在方框280中所示。根据实施例,I/O响应可以包含与请求的数据一起由盘存储34发回至请求服务器的消息。可以用中断驱动方案来实施I/O响应,其中,通过进入的消息来中断在服务器中的处理器16,并且分叉至I/O中断处理程序。在处理程序中的代码将I/O响应与发起请求者相匹配,由此确保数据被传递至正确的存储器位置并且更新存储器中的控制块以便指示完成了I/O请求。每次另一I/O中断与下一数据块一起进入服务器,可以使用相同的中断处理程序。
参考图3,一般地示出由计算机系统10的处理器16的实施例所进行的处理300的流程图。如图3中所示,根据实施例,处理300提供用于发起处理器52以处理来自ACQ的数据的方法。
在方框310处,处理300检查对数据请求或查询的新I/O响应。在方框320处,根据实施例,关于新I/O响应是否与在ACQ中的条目相匹配进行确定。
基于确定新I/O响应与ACQ中的条目不相匹配,根据当前处理方法来处理新I/O响应,如在方框330中所示。然而,基于确定新I/O响应与ACQ中的条目相匹配,新I/O响应被标记为完成,如在方框340中所示。换言之,根据实施例,新I/O响应被标记为已经被预提升在ACQ中。
在方框350处,关于是否ACQ中的所有条目都具有有效响应进行确定。根据实施例,每个ACQ条目可以包含对用于ACQ条目指示I/O操作的状态的一组位。这些位可以用于确认已经完成了足够的盘操作并且在调用加速器52之前已经将需要的数据提升至较快的特别预提升缓冲器存储器中。根据实施例,特别预提升缓冲器36、54、62被配置为预提升目标数据用于加速器进行存取。根据实施例,服务器采集I/O响应并且然后等待将ACQ发送至加速器52。根据另一实施例,服务器可以将这样的ACQ发送至加速器52,所述ACQ具有一些标记为有效的条目但是也具有一些标记为无效的条目。相应地,加速器52将开始处理有效的数据块,并且然后向服务器查询更新的ACQ版本,其中之前无效的条目已经成为有效的。根据另一实施例,加速器52自身可以监视I/O中断消息。
相应地,基于确定所有的ACQ条目具有有效的响应,加速器52被激励并且指向ACQ,如在方框360中所示。根据实施例,加速器52使用在ACQ中的信息以便以最佳方式对数据存取进行排序,从而使加速器52的数据吞吐量最大化并且避免等待磁盘存取。否则,基于确定仍然存在对附加的ACQ条目的有效响应,处理300检查对于数据请求或查询的新I/O响应,如块310中所示。
参考图4,一般地示出由计算机系统10的处理器16的实施例所进行的处理400的流程图。如图4中所示,根据实施例,处理400提供用于从特别预提升缓冲器存储器位置释放预提升的数据的方法。
在方框410处,诸如盘存储34之类的I/O设备可以接收对目标数据的请求。在方框420处,关于所接收的请求是否是特别请求进行确定。基于所接收的请求是正常请求,该请求根据当前处理方法被处理,如在方框430中所示。根据所接收的请求是特别I/O请求,实施例可以暂时地将请求的数据页面标记为对于由任何其他请求者进行的更新是不可用的。相应地,如在方框440中所示,通过加速器52使用预提升数据来满足特别请求,并且释放预提升数据的特别预提升缓冲器存储器位置以便随后使用。换言之,根据实施例,在处理器52完成存取需要的数据之后,可以释放被标记为不可用于更新的一个和多个映射目标页面。
所属技术领域的技术人员知道,本发明可以实现为系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
现在参考图5,在一个示例中,计算机程序产品500包含例如一个或多个存储介质502,其中介质可以是有形的和/或非瞬时性的,以便在其上存储计算机可读的程序代码部件或逻辑504从而提供和帮助在此描述的实施例的一个或多个方面。
程序代码当创建和保存在(包括但不局限于电子存储器模块(RAM)、瞬时存储器、压缩盘(CD)、DVD、磁带等的)有形介质上时,通常被称作“计算机程序产品”。典型地可以由优选在计算机系统中的处理电路来读取计算机程序产品介质以便通过处理电路运行。例如可以使用编译器或汇编器来创建这样的程序代码以便编译指令,使得当执行时实现本发明的多个方面。
技术效果和优势包括,即使当需要存取的数据片段位于慢盘存储34上时,提供在OLTP系统中运行相对于最近实时数据的请求和其他算法的能力。此外,公开的实施例使将数据从盘存储34移动至系统存储器28并且然后从系统存储器28移动至加速器52需要的数据带宽最小化。公开的实施例提供对加速器52的高效利用,所述加速器需要存取来自具有不同的存取延迟和响应时间的源的数据。
在此使用的术语仅用于描述特定实施例的目的,并且不旨在限制实施例。如在此使用的,单数形式“一个”、“一”和“该”旨在也包括复数形式,除非上下文清楚地表明相反情况。还将理解的是,用语“包含”和/或“包括”当在本说明书中使用时,说明存在所陈述的特性、数量、步骤、操作、单元和/或部件,但是并不排除一个或多个其他特性、数量、步骤、操作、单元、部件和/或其中组合的出现或附加。
相应的结构、材料、行为和在权利要求中所有的部件或步骤加上功能单元的等价物旨在包括任何用于结合所明确要求的其他要求权利的单元来实现功能的结构、材料和行为。已经提供实施例的描述用于说明和描述,但是不意味着是彻底的或限制于所公开形式的实施例。对于本领域普通技术人员而言,很多改动和变形是显而易见的,而不脱离势力的范围和主旨。选择并描述实施例以便最好地解释原理和实际应用,并且使得本领域普通技术人员理解具有各种改动的实施例适于特殊使用考虑。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
本文中将参照实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instruction means)的制造品(manufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
Claims (8)
1.一种用于提供高吞吐量硬件加速的计算机实施的方法,其包含:
通过计算机初始化加速器控制队列(ACQ),所述加速器控制队列被配置为提供关于被识别为加速器数据的数据的多个页面的位置信息;
接收来自软件应用的对目标数据的请求,所述目标数据跨越多个页面;
确定目标数据的每个页面的起始位置,所述起始位置包括系统存储器和盘存储中的至少一个;
基于确定所述起始位置是所述系统存储器,在所述ACQ中创建条目,所述条目映射至用于所述目标数据的系统存储器源地址;
基于确定所述起始位置是所述盘存储,在所述ACQ中创建条目,所述条目映射至用于所述目标数据的特别预提升缓冲器的预提升缓冲器源地址,所述特别预提升缓冲器被配置为从盘存储中预提升所述目标数据用于所述加速器进行存取;和
基于所述ACQ的各自条目,通过加速器从在所述存储器或所述特别预提升缓冲器内的各自位置存取目标数据的多个页面中的每一页面。
2.按照权利要求1所述的计算机实施的方法,其中还基于确定所述起始位置是所述盘存储:
发起特别输入/输出请求,以便将所述目标数据存储在所述特别预提升缓冲器内;和
保存其中存储所述目标数据的特别预提升缓冲器的源地址。
3.按照权利要求2所述的计算机实施的方法,其中,所述特别预提升缓冲器包括加速器缓冲器、磁盘缓冲器和耦合至存储器卡的缓冲器中的一个。
4.按照权利要求1所述的计算机实施的方法,其中在所述ACQ中的条目还包含所述目标数据驻留在所述系统存储器、盘存储和特别预提升缓冲器中的至少一个中的指示,并且包含用于所述目标数据的输入/输出操作的状态。
5.按照权利要求1所述的计算机实施的方法,其还包含:
检查来自随后数据请求的输入/输出响应;
确定所述输入/输出响应与在所述ACQ中的条目相匹配;以及
基于将所述输入/输出响应与在所述ACQ中的条目相匹配,将该输入/输出响应标记为在该ACQ中。
6.按照权利要求5所述的计算机实施的方法,其还包含在初始化所述加速器之前,确定在所述ACQ内的所有条目具有有效的响应。
7.按照权利要求1所述的计算机实施的方法,其中基于确定所述目标数据来源于所述盘存储,所述方法还包含:
将所述目标数据标记为对于通过其他请求者进行的更新不可用;
发送所述目标数据至所述加速器以用于处理;以及
在加速器已经完成存取所述目标数据之后,释放用于所述目标数据的预提升缓冲器源地址。
8.一种用于提供高吞吐量硬件加速的系统,所述系统包含被配置为执行按照权利要求1至7中任一项所述的方法步骤的部件。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/872,298 | 2013-04-29 | ||
US13/872,298 US9146678B2 (en) | 2013-04-29 | 2013-04-29 | High throughput hardware acceleration using pre-staging buffers |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104123236A true CN104123236A (zh) | 2014-10-29 |
CN104123236B CN104123236B (zh) | 2017-04-12 |
Family
ID=51768656
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410177329.5A Expired - Fee Related CN104123236B (zh) | 2013-04-29 | 2014-04-29 | 用于使用预提升缓冲器的高吞吐量硬件加速的方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9146678B2 (zh) |
CN (1) | CN104123236B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107291424A (zh) * | 2016-04-04 | 2017-10-24 | 忆锐公司 | 基于闪存的加速器和包含其的计算设备 |
CN109213694A (zh) * | 2017-06-30 | 2019-01-15 | 伊姆西Ip控股有限责任公司 | 用于缓存管理的方法和设备 |
CN109478171A (zh) * | 2016-05-31 | 2019-03-15 | 华睿泰科技有限责任公司 | 提高openfabrics环境中的吞吐量 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160379109A1 (en) * | 2015-06-29 | 2016-12-29 | Microsoft Technology Licensing, Llc | Convolutional neural networks on hardware accelerators |
US10963295B2 (en) * | 2017-09-08 | 2021-03-30 | Oracle International Corporation | Hardware accelerated data processing operations for storage data |
CN109831508B (zh) * | 2019-02-15 | 2021-11-19 | 网宿科技股份有限公司 | 一种缓存方法及设备、存储介质 |
US20210406170A1 (en) * | 2020-06-24 | 2021-12-30 | MemRay Corporation | Flash-Based Coprocessor |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6105075A (en) * | 1997-08-05 | 2000-08-15 | Adaptec, Inc. | Scatter gather memory system for a hardware accelerated command interpreter engine |
US6449697B1 (en) * | 1999-04-23 | 2002-09-10 | International Business Machines Corporation | Prestaging data into cache in preparation for data transfer operations |
US20090172343A1 (en) * | 2007-12-31 | 2009-07-02 | Savagaonkar Uday R | Using a translation lookaside buffer to manage protected micro-contexts |
CN101620572A (zh) * | 2008-07-02 | 2010-01-06 | 上海华虹Nec电子有限公司 | 非易失性内存及控制方法 |
CN102388372A (zh) * | 2009-04-07 | 2012-03-21 | 想象技术有限公司 | 保证数据缓存与主存储器之间的一致性 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6886171B2 (en) * | 2001-02-20 | 2005-04-26 | Stratus Technologies Bermuda Ltd. | Caching for I/O virtual address translation and validation using device drivers |
DE602005003987T2 (de) * | 2004-07-23 | 2008-12-11 | Stmicroelectronics S.A. | Verfahren zur Programmierung einer System auf Chip DMA Steuerung, sowie ein System auf Chip dafür. |
KR100758301B1 (ko) * | 2006-08-04 | 2007-09-12 | 삼성전자주식회사 | 메모리 카드 및 그것의 데이터 저장 방법 |
US8010718B2 (en) | 2009-02-03 | 2011-08-30 | International Business Machines Corporation | Direct memory access in a hybrid computing environment |
US8589600B2 (en) | 2009-12-14 | 2013-11-19 | Maxeler Technologies, Ltd. | Method of transferring data with offsets |
CN102346661A (zh) | 2010-07-30 | 2012-02-08 | 国际商业机器公司 | 一种用于对硬件加速器的请求队列维护状态的方法和系统 |
US9292562B2 (en) * | 2010-12-17 | 2016-03-22 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Scatter-gather list usage for a configuration database retrieve and restore function and database blocking and configuration changes during a database restore process |
-
2013
- 2013-04-29 US US13/872,298 patent/US9146678B2/en not_active Expired - Fee Related
-
2014
- 2014-04-29 CN CN201410177329.5A patent/CN104123236B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6105075A (en) * | 1997-08-05 | 2000-08-15 | Adaptec, Inc. | Scatter gather memory system for a hardware accelerated command interpreter engine |
US6449697B1 (en) * | 1999-04-23 | 2002-09-10 | International Business Machines Corporation | Prestaging data into cache in preparation for data transfer operations |
US20090172343A1 (en) * | 2007-12-31 | 2009-07-02 | Savagaonkar Uday R | Using a translation lookaside buffer to manage protected micro-contexts |
CN101620572A (zh) * | 2008-07-02 | 2010-01-06 | 上海华虹Nec电子有限公司 | 非易失性内存及控制方法 |
CN102388372A (zh) * | 2009-04-07 | 2012-03-21 | 想象技术有限公司 | 保证数据缓存与主存储器之间的一致性 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107291424A (zh) * | 2016-04-04 | 2017-10-24 | 忆锐公司 | 基于闪存的加速器和包含其的计算设备 |
CN109478171A (zh) * | 2016-05-31 | 2019-03-15 | 华睿泰科技有限责任公司 | 提高openfabrics环境中的吞吐量 |
CN109478171B (zh) * | 2016-05-31 | 2022-11-15 | 华睿泰科技有限责任公司 | 提高openfabrics环境中的吞吐量 |
CN109213694A (zh) * | 2017-06-30 | 2019-01-15 | 伊姆西Ip控股有限责任公司 | 用于缓存管理的方法和设备 |
Also Published As
Publication number | Publication date |
---|---|
US20140325098A1 (en) | 2014-10-30 |
CN104123236B (zh) | 2017-04-12 |
US9146678B2 (en) | 2015-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104123236A (zh) | 用于使用预提升缓冲器的高吞吐量硬件加速的方法和系统 | |
US10564978B2 (en) | Operation of a multi-slice processor with an expanded merge fetching queue | |
US10379745B2 (en) | Simultaneous kernel mode and user mode access to a device using the NVMe interface | |
US8904058B2 (en) | Selecting direct memory access engines in an adaptor input/output (I/O) requests received at the adaptor | |
US12050813B2 (en) | Shared memory mechanism to support fast transport of SQ/CQ pair communication between SSD device driver in virtualization environment and physical SSD | |
US10346174B2 (en) | Operation of a multi-slice processor with dynamic canceling of partial loads | |
US10614004B2 (en) | Memory transaction prioritization | |
EP2637091A1 (en) | Management interface for multiple storage subsystems virtualization | |
US20170337063A1 (en) | Method and apparatus for sorting elements in hardware structures | |
KR20180010951A (ko) | 데이터 스토리지 시스템의 낮은 쓰기 레이턴시를 얻는 방법 | |
US20140208036A1 (en) | Performing staging or destaging based on the number of waiting discard scans | |
US10831684B1 (en) | Kernal driver extension system and method | |
US9286129B2 (en) | Termination of requests in a distributed coprocessor system | |
US20160085448A1 (en) | Enhanced interface to firmware operating in a solid state drive | |
US11093175B1 (en) | Raid data storage device direct communication system | |
US20220335109A1 (en) | On-demand paging support for confidential computing | |
US20220164707A1 (en) | Electronic apparatus and controlling method thereof | |
CN115525226A (zh) | 硬件批量指纹计算方法、装置及设备 | |
US11003391B2 (en) | Data-transfer-based RAID data update system | |
US8667188B2 (en) | Communication between a computer and a data storage device | |
US10223013B2 (en) | Processing input/output operations in a channel using a control block | |
EP4428699A1 (en) | Memory device and method for scheduling block request | |
US8738823B2 (en) | Quiescing input/output (I/O) requests to subsets of logical addresses in a storage for a requested operation | |
US20230185740A1 (en) | Low-latency input data staging to execute kernels | |
JPWO2018173300A1 (ja) | I/o制御方法およびi/o制御システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170412 |