CN102906738A - 混合存储服务器中的数据访问管理 - Google Patents
混合存储服务器中的数据访问管理 Download PDFInfo
- Publication number
- CN102906738A CN102906738A CN2010800669631A CN201080066963A CN102906738A CN 102906738 A CN102906738 A CN 102906738A CN 2010800669631 A CN2010800669631 A CN 2010800669631A CN 201080066963 A CN201080066963 A CN 201080066963A CN 102906738 A CN102906738 A CN 102906738A
- Authority
- CN
- China
- Prior art keywords
- data
- accelerator
- access
- oriented collection
- oriented
- 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
Images
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
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/177—Initialisation or configuration control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- 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/0608—Saving storage space on storage systems
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- 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/0653—Monitoring storage devices or systems
-
- 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/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- 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
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- 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
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/50—Network service management, e.g. ensuring proper service fulfilment according to agreements
- H04L41/5041—Network service management, e.g. ensuring proper service fulfilment according to agreements characterised by the time relationship between creation and deployment of a service
- H04L41/5054—Automatic deployment of services triggered by the service manager, e.g. service implementation by automatic configuration of network components
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/26—Using a specific storage system architecture
- G06F2212/264—Remote server
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/602—Details relating to cache prefetching
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Storage Device Security (AREA)
Abstract
一种方法、加速器系统和计算机程序,访问核外处理环境中的数据。从管理多个数据集的服务器系统接收数据访问配置。基于数据访问配置,确定从服务器系统取回的数据集将被本地存储。从用户客户机接收与给定数据集进行交互的请求。从服务器系统取回给定数据集的至少一部分。基于接收到的数据访问配置,将该给定数据集的至少一部分本地存储在存储器中。
Description
技术领域
本发明一般涉及核外(out-of-core)处理,且更具体地,涉及核外处理环境中的混合存储服务器。
背景技术
核外处理环境一般指这样一种环境,其中存储设备维护由更强大的处理设备来处理的数据,其中,只有当前正在被处理的数据部分位于处理设备中。例如,存储设备可包含模型数据,而计算处理被分配给更强大的处理设备。传统的核外处理环境在资源利用、用户支持和安全性方面是低效的。例如,很多传统核外处理环境在同一时刻只能支持一个用户。同时,这些系统允许数据集位于加速器处,由此使系统脆弱。很多这样的传统环境使用网络文件系统(NFS),该网络文件系统可将块出页(page out),从而导致系统响应降低。这些传统环境也支持用于只读模式中的可视化的模型数据呈现,而不支持对数据集的更新和修改/注释。更进一步地,某些这样的传统环境仅使用动态随机存取存储器(DRAM)来缓存所有模型数据。这对于某些使用模型来说是昂贵的。
于2005年9月6日提交的题为“Method and apparatus for balanceingdistributed application”(用于平衡分布式应用的方法和装置)的美国专利申请号6,941,341提出了一种用于在客户端/服务器网络例如有线电视网络中平衡分布式应用的方法和装置。在该发明的一方面,公开了一种在各种服务器部分(DASP)和服务器机器之间对分布式应用客户端部分(DACP)进行负载平衡的方法。一个或多个软件进程维护关于服务器的可用资源及其负载的统计数据。当客户端设备负载增加或改变时,新进程线程和/或分布式应用服务器部分在服务器之间被分配,以维持最优的系统性能。在另一方面,公开了一种同时使用垂直和水平分区两者以及“可变”(即可传递)对象的面向对象的分布式应用软件架构。所述可变对象可位于分布式应用的服务器或客户端部分,同时维护至少一个网络分区。还公开了一种适于上述面向对象分布式应用的操作的运行时环境,包括用于进程间通信的高效消息协议。还公开了一种方法,其用于从服务器下载DACP、并基于客户端设备配置来缩放下载的DACP。
于2008年5月29日提交的题为“Methods and Arrangements forHybrid Data Storage”(用于混合数据存储的方法和装置)的美国专利公开号2008/0126716提出了可包含混合存储控制器的实施例,该混合存储控制器有助于对在下面一般被称为混合存储器设备或混合高速缓存设备的多于一种类型的存储器设备进行访问。混合存储控制器可包括划分逻辑来确定是否将写请求的数据划分为多于一部分,并将每个部分存储在不同类型的数据存储设备中。例如,一个实施例包括混合存储控制器,以在SRAM和DRAM设备两者中存储数据。SRAM和DRAM设备可包括管芯(die)上的独特电路、芯片中的独特模具、存储器模块中的独特芯片、独特存储器模块等。
因此,需要在本领域中解决上述问题。
发明内容
从一个方面来看,本发明提供了一种加速器系统上的用于在核外处理环境中访问数据的方法。所述方法包括从管理多个数据集的服务器系统接收数据访问配置。基于该数据访问配置,确定从服务器系统取回的数据集将被本地存储。从用户客户机接收与给定数据集进行交互的请求。从服务器系统取回给定数据集的至少一部分。基于接收到的数据访问配置,将给定数据集的至少一部分本地存储在存储器中。
在另一实施例中,公开了一种核外处理环境中的服务器系统上的用于管理加速器系统对数据的访问的方法。该方法包括从加速器系统接收访问给定数据集的请求。确定与给定数据集关联的访问上下文。基于确定的访问上下文,将加速器动态配置为执行下列各项中的一个:直接从服务器系统访问给定数据集,将给定数据集的一部分本地存储在存储器中,以及将给定数据集的全部本地存储在存储器中。
从另一方面来看,本发明提供了一种用于在核外处理环境中访问数据的加速器系统。该加速器系统包括存储器和通信地耦合到该存储器的处理核心。数据访问管理器通信地耦合到该存储器和处理核心,并被配置为执行方法。所述方法包括从管理多个数据集的服务器系统接收数据访问配置。基于该数据访问配置,确定从服务器系统取回的数据集将被本地存储。从用户客户机接收与给定数据集进行交互的请求。从服务器系统取回给定数据集的至少一部分。基于接收到的数据访问配置,将给定数据集的至少一部分本地存储在存储器中。
从另一方面来看,本系统提供了一种用于管理加速器系统对数据的访问的核外处理环境中的服务器系统。服务器系统包括存储器和通信地耦合到该存储器的处理器。数据访问管理器通信地耦合到该存储器和处理器,并被配置为执行方法。所述方法包括从加速器系统接收访问给定数据集的请求。确定与给定数据集关联的访问上下文。基于确定的访问上下文,加速器被动态配置,被配置为执行下列各项中的一个:直接从服务器系统访问给定数据集,将给定数据集的一部分本地存储在存储器中,以及将给定数据集的全部本地存储在存储器中。
从另一方面来看,本发明提供了一种用于在核外处理环境中访问数据的计算机程序产品。该计算机程序产品包括存储介质,该存储介质可被处理电路读取并存储了由处理电路执行以执行方法的指令。所述方法包括从管理多个数据集的服务器系统接收数据访问配置。基于该数据访问配置,确定从服务器系统取回的数据集将被本地存储。从用户客户机接收与给定数据集进行交互的请求。从服务器系统取回给定数据集的至少一部分。基于接收到的数据访问配置,将给定数据集的至少一部分本地存储在存储器中。
从另一方面来看,本发明提供了一种计算机程序,该计算机程序存储在计算机可读介质中,并可被载入到数字计算机的内部存储器,该计算机程序包括软件代码部分,当所述程序在计算机上运行时,所述软件代码部分用于执行本发明的步骤。
附图说明
现在将仅通过示例参考如下列图中所示的优选实施例来描述本发明:
图1是示出根据本发明的一个实施例的操作环境的一个例子的框图;
图2是示出根据本发明的一个实施例的核外处理环境中的混合存储服务器配置的一个例子的框图;
图3是示出根据本发明的一个实施例的核外处理环境中的加速器配置的一个例子的框图;
图4是示出根据本发明的一个实施例的核外处理环境中的加速器配置的另一例子的框图;
图5是示出根据本发明的一个实施例的核外处理环境中的混合存储服务器的隧道协议的一个例子的框图;
图6是示出根据本发明的一个实施例的核外处理环境中的加速器的预取配置的一个例子的框图;
图7是示出根据本发明的一个实施例的核外处理环境中的加速器的虚拟化配置的一个例子的框图;
图8是示出根据本发明的一个实施例的在核外处理环境中的服务器系统上预处理数据的一个例子的操作流程图;
图9是示出根据本发明的一个实施例的根据数据访问配置来配置的核外处理环境中的加速器的一个例子的操作流程图;
图10是示出根据本发明的一个实施例的根据另一数据访问配置来配置的核外处理环境中的加速器的一个例子的操作流程图;
图11是示出根据本发明的一个实施例的根据另一数据访问配置来动态配置核外处理环境中的加速器的一个例子的操作流程图,该加速器是根据数据访问配置来配置的;
图12是示出根据本发明的一个实施例的根据另一数据访问配置来动态建立核外处理环境中的服务器和加速器之间的安全链路的一个例子的操作流程图;
图13是示出根据本发明的一个实施例的由核外处理环境中的加速器来维护用于被缓存数据的脆弱性窗口的一个例子的操作流程图;
图14是示出根据本发明的一个实施例的在核外处理环境中的服务器上利用协议隧道的一个例子的操作流程图;
图15是示出根据本发明的一个实施例的核外处理环境中的服务器利用语义分析将数据推送(push)到加速器的一个例子的操作流程图;
图16是示出根据本发明的一个实施例的核外处理环境中的计数器从服务器预取数据的一个例子的操作流程图;
图17是示出根据本发明的一个实施例的将核外处理环境中的加速器逻辑划分为虚拟化加速器的一个例子的操作流程图;
图18是示出根据本发明的一个实施例的信息处理系统的详细视图的框图。
具体实施方式
根据需要,这里公开了本发明的详细优选实施例。但是,可以理解,公开的实施例仅是本发明的示例,本发明可以以多种形式来实施。因此,这里公开的特定结构和功能细节不应被理解为限制,而仅是权利要求的基础,以及用于教导本领域技术人员以几乎任何合适的详细结构来不同地使用本发明的代表性基础。此外,这里使用的术语和词组不是要限制;而是要提供本发明的可理解的描述。
这里使用的术语“一”、“一个”被定义为一个或多于一个。这里使用的术语多个被定义为两个或多于两个。复数和单数术语是相同的,除非另外明确说明。这里使用的术语另一个被定义为至少第二个或多个。术语包括和/或具有被定义为包含(即开放语言)。这里使用的术语耦合被定义为连接,尽管不必须是直接连接,且不必须是机械上连接。这里使用的术语程序或软件应用可包括子例程、函数、过程、以象方法、对象实现、可执行应用、小应用程序、小服务程序、源代码、目标代码、共享库/动态加载库和/或被设计为在计算机系统上执行的其他指令序列。
操作环境
图1示出了可用于本发明的多个优选实施例的操作环境的一个例子。特别地,图1示出了服务器系统102、多个加速器系统104、以及经一个或多个网络108通信耦合的一个或多个用户客户机106。一个或多个网络108可以是任意类型的有线和/或无线通信网络。例如,网络108可以是内联网、外联网或互联网例如因特网,或其组合。网络108可包括无线、有线和/或光纤链路。
在一个实施例中,服务器系统102是任意类型的服务器系统,例如但不限于, 服务器。服务器系统102可以是存储服务器,该存储服务器包含一个或多个数据集110,例如但不限于,被加速器系统104处理并被发送到用户客户机106的建模/模拟数据。除了加速器系统104访问服务器系统102上的数据集110,用户客户机106也可以访问数据集110。在一个实施例中,服务器102包括数据访问管理器118,该数据访问管理器管理数据集110和对该数据集的访问。服务器102还包括安全管理器122,该安全管理器管理数据集110的安全性。安全管理器122可位于数据访问管理器118内部或外部。数据访问管理器118和安全管理器122将在下面更详细地讨论。在一个实施例中,加速器104包括请求管理器120,该管理器管理从用户客户机106收到的请求,并从服务器取回数据110来满足这些请求。在一个实施例中,加速器104还可包括安全计数器124,该安全计数器用于实现针对被缓存数据的脆弱性窗口。加速器104还可包括弹性恢复(elastic resilience)模块126,该弹性恢复模块提供加速器104上的应用的恢复能力。请求管理器122、安全计数器124和弹性恢复模块126将在下面更详细地讨论。
在一个实施例中,加速器系统104是刀片服务器,例如但不限于, 或服务器。加速器104中的每个包含一个或多个处理核心112,例如但不限于,或Cell B/E处理核心。IBM、System z、System p、System x和PowerPC是国际商业机器公司在全世界很多管辖区域注册的商标。需要注意,加速器系统104中的每个可包含相同或不同类型的处理核心。加速器系统104执行图1的环境100中的大部分数据处理,而服务器系统102主要被用来管理数据集110。在一个实施例中,用户客户机106是任意信息处理系统,例如但不限于,工作站、台式机、笔记本、无线通信设备、游戏控制台等,其允许用户与服务器系统102和/或加速器系统104进行交互。服务器系统102和加速器系统104的组合在这里被称为混合服务器或混合存储服务器114,因为它是多种不同系统类型的服务器102和加速器104的异构组合。用户客户机106包括一个或多个接口116,所述接口允许用户与服务器系统102和/或加速器系统104进行交互。需要注意,上面给出的服务器系统102、加速器系统104和用户客户机106的例子仅用于示例目的,且其他类型的系统也是适用的。
在一个例子中,图1中的环境100是核外处理环境。图l中的核外处理环境100一般在位于服务器系统102上或与之通信耦合的一个或多个存储设备中维护大部分数据,而仅在加速器系统104中保留正在被处理的数据。例如,在服务器102上的数据集110为建模数据的实施例中,客户机系统106上的用户通过接口116与模型进行交互。用户命令从客户机系统106发送到一个或多个加速器系统104。一个或多个加速器系统104从服务器系统102请求满足用户命令的建模数据部分。建模数据的这些部分被加速器系统104处理。加速器系统仅从服务器系统102请求并处理满足用户请求所需的模型数据部分。因此,大部分模型数据保留在服务器系统102上,而仅有正被处理的部分模型数据位于加速器系统104中。加速器系统106然后向用户客户机系统106提供处理(例如图形呈现、过滤、转换)过的建模数据。需要注意,服务器系统102可将给定的一组加速器分配给给定的一组数据集,但这不是必须的。
如以上所讨论的,传统的核外处理环境在资源利用、用户支持和安全性方面通常是低效的。例如,很多传统核外处理环境在同一时刻只能支持一个用户。同时,这些系统允许数据集位于加速器中,由此使系统脆弱。很多这样的传统环境使用网络文件系统(NFS),该网络文件系统可将块出页,这导致系统响应降低。这些传统环境还支持只读模式中的模型数据处理(呈现),而不支持对数据集的更新和修改/注释。更进一步地,某些这样的传统环境仅使用动态随机存取存储器(DRAM)来缓存所有模型数据。这对于某些使用模型来说是昂贵的。
因此,如下面更详细地讨论的,本发明的各种优选实施例如下克服了关于传统核外处理环境的上述问题。一个或多个实施例允许核外处理环境100中支持多个用户。例如,这些实施例利用单独的物理加速器、虚拟化加速器,并/或在同一物理加速器上支持多个用户,由此共享同一高速缓存。各种实施例允许核外处理环境100以各种模式来使用,例如数据集仅被缓存在服务器102上;数据集被缓存在服务器102和加速器104上;使用请求调页(demand paging)在加速器104上缓存数据集;以及通过在系统初始化期间下载数据集在加速器104上缓存该数据集。
一个或多个实施例通过利用(i)显式预取协议和(ii)用较高带宽来交换较低延时的推测性推拉(speculative push-pull)协议,来降低传统核外处理环境中存在的延时。在其他实施例中,可从头实现用于系统102的定制存储服务器设计。或者,定制存储服务器设计的元素可被添加到现有的NFS服务器设计。其他实施例中的核外处理环境100支持对数据的修改和注释。同时,某些使用模型需要服务器仅在服务器和加速器之间的“调用-返回”模式中使用。因此,一个或多个实施例允许在“调用-返回”模式中完成数据密集处理。而且,在一个或多个实施例中,安全分布式沙箱(sandboxing)被用于隔离“模型”、服务器、加速器和用户客户机上的用户。此外,一个或多个实施例允许某些数据被缓存在快速存储器例如DRAM以及慢速存储器例如闪存中。
具有异构存储器的混合服务器
在一个实施例中,服务器102包括异构存储系统202,如图2所示。在一个实施例中,该异构存储服务器202包括快速存储器204例如DRAM和慢速存储器206例如闪存和/或盘存储器208。快速存储器204被配置为易失性存储器且慢速存储器206被配置为非易失性存储器。通过数据访问管理器118,服务器102可以在快速存储器204、慢速存储器206或两者的组合上存储数据集110。例如,如果服务器102在需要应用的部分之前运行这些部分,服务器102将这些部分所需的数据集存储在慢速存储器206中,因为它们被用于未来的某个时刻,且因此在当前是不重要的。例如,虚拟世界中的模拟可在当前时间的前面运行,以计划未来的资源使用和各种其他建模场景。因此,多个实施例使用多种存储器类型例如闪存、DRAM和盘存储。而且,在一个或多个实施例中,在快速存储器204中被替换的块首先被换出到慢速存储器206然后到盘存储器208。慢速存储器206可被用作元数据,且数据交换的单位是数据结构基本构造块而不是NFS存储块。
除了位于服务器102上的存储器系统202,服务器102还可访问加速器104上的选通存储器210。例如,一旦加速器104完成给定存储器部分中的数据的处理,加速器104可将该存储器部分释放给服务器102,并允许服务器102利用该存储器部分。选通存储器还和服务器关联。服务器可通过不允许外部加速器访问,来处理数据并将结果存储在存储器中。服务器然后可通过“开启选通”存储器来允许加速器访问。而且,在一个例子中,存储器系统202可被划分为由服务器102自己管理的存储器和由加速器104管理的存储器(即,被服务器释放给加速器的存储器)。在存储器系统202中具有被加速器104管理的存储器,允许加速器104直接写入该存储器,而不用耗费服务器102上的任何处理资源。闪存模块可被置于服务器的输入/输出(I/O)总线中,以用于加速器104的直接访问。这些闪存模块可具有从加速器104接收消息的网络链路。闪存模块中的处理器可处理这些消息,并向闪存I/O模块上的闪存读取/写入值。闪存还可和DRAM存储器一起被附加到处理器系统总线。远程加速器可使用RDMA(远程直接存储器访问)命令来向附加到总线的闪存模块读取/写入值。
而且,该配置允许加速器104互相之间传递消息,因为该存储器是在加速器104之间共享的。这些消息可利用快速存储器204在加速器104之间传递以用于更重要的通信,或利用慢速存储器206在加速器104之间传递以用于不太重要的通信。此外,数据和/或消息也可在慢速存储器模块之间传递。例如,加速器104可从慢速存储器206获取数据并将其写回到另一慢速存储器206。或者,如果慢速存储器模块位于同一I/O总线上,慢速存储器模块可来回互相传递数据/消息。服务器102上的慢速存储器用作可靠的临时或缓冲存储。这避免了加速器104在其稀有的加速器常驻存储器上缓冲数据的需要。每个加速器在服务器102上可具有分配给它的私有闪存模块,以及可被所有加速器访问的公共存储器区域。如果数据要被传输到另一加速器,该数据不需要被读回到加速器的存储器,而可以使用闪存模块间传输在服务器102的边界内传输。这些传输可在系统总线或I/O总线上完成。这可以节省加速器104将数据拷贝到另一加速器的几个来回。加速器104于是可使用交换网络在其间通信短消息,并使用服务器102上的慢速存储器来交换长的/大块消息或具有延迟动作需求的消息。慢速存储器有好处,因为它允许加速器104完成相关数据条目的处理并将该存储器“释放”给服务器102或另一加速器,而不用转换或整理结果来给服务器102或另一加速器使用。这改善了系统的延时和总体性能。
下面是上面给出的实施例的更详细的例子。在一个例子中,数据集110是文件,其被构造成NFS共享,而客户机对该文件进行“mmap”。“mmap”是客户机所使用的操作系统调用,来通过使用随机存取存储器语义来访问文件。当文件字节被触及(touch)时,NFS文件部分被存储在DRAM的NFS块缓冲高速缓存中。但是,在某些情形下,如果使用了基于“年龄”(age)的策略或最近最少使用(LRU)策略,在存储器中存储的块可被其他块替换。被替换的块将带来额外的延时,因为可能需要访问盘。因此,另一实施例在DRAM中创建了随机存取存储器盘(RAMdisk),并将RAMdisk文件系统映射到NFS文件系统。在另一例子中,RAMdisk是用闪存来创建的,且RAMdisk文件系统被映射到NFS文件系统。对于具有DRAM带宽需求的应用,元数据被存储在闪存中而高带宽数据被存储在DRAM中。被替换的DRAM块可被存储在闪存中而不是将它们写回到盘。闪存可以用作“牺牲者”(victim)存储器。
需要注意,NFS块首先被加速器104访问。然后从NFS块中提取相关数据。在本发明的一个或多个优选实施例的存储器设计中,数据交换的粒度为数据结构基本构造块。这允许从服务器102直接访问数据并将该数据直接写到加速器数据结构。例如,具有三层的二叉树可被确定为基本构造块。基本构造块可被用作服务器和加速器之间的传输单位。
在其他实施例中,服务器102可通过预处理模块212来预处理存储器系统202中存储的数据,以将该数据转换为可被请求加速器104的处理核心112处理的格式,而不用加速器104来转换该数据。换句话说,服务器102以这种方式预存储并预构建该数据,从而加速器104不需要执行任何额外的操作来处理该数据。例如,加速器104可包括IBM Cell B/E处理核心112。因此,服务器102能够将数据预处理为Cell B/E处理核心所需的格式或数据结构,从而加速器可以处理该数据而不用首先将该数据转换为所需的格式。需要注意,除了将数据转换为加速器104所需的格式,服务器102还可以将数据转换为用于给定操作的格式或数据结构。例如,如果服务器102确定在给定数据集上经常执行排序操作,服务器102可将该数据集转换为适于排序操作的形式。因此,当处理器104接收该数据集时,它可以执行排序操作而不用格式化数据。
而且,用户在与用户客户机系统106上的数据进行交互时,可以注释(annotate)数据集110。当用户注释数据110时,加速器104将该注释信息写回到服务器102,从而其他用户能够看到所述注释。在多个用户访问数据集例如模型的实施例中,用户首先获取对需要更新的数据区域的写锁(write lock)。该写锁由数据访问管理器118授予和管理。可以进行注释而不用获取锁,但对注释的更改需要写锁。客户机对数据结构的更新使得具有缓存数据的客户机上的条目被标记为陈旧的。这些条目然后在需要时被刷新。
混合服务器上的数据分级(staging)
下面详细讨论涉及在混合服务器114上分级数据的实施例。如上所讨论的,混合服务器114的服务器系统102包括被加速器104处理的一个或多个数据集110。因此,为了提供对加速器104所处理的数据集的110的部分的安全而高效的访问,在混合服务器114中可以利用各种数据分级架构。
在一个实施例中,数据访问管理器118管理数据是如何在服务器系统102和加速器104之间被访问的。在一个实施例中,数据访问管理器118位于服务器系统102、一个或多个加速器104以及/或远程系统(未示出)上。在一个实施例中,数据访问管理器118可将一组加速器分配给服务器系统中的第一数据集并将另一组加速器分配给第二数据集。在该实施例中,只有被分配给数据集的加速器才访问该数据集。或者,数据访问管理器118可在多个数据集之间共享加速器。
数据访问管理器118还根据各种数据访问配置来配置加速器104。例如,在一个实施例中,数据访问管理器118将加速器104配置为直接从服务器系统102访问数据集110。换句话说,加速器104被配置,从而它们不缓存来自数据集110的任何数据,且数据集110仅被存储在服务器系统102上。在关心数据集110的保密性/安全性和可靠性的情况下,该实施例具有优势,因为服务器系统102通常提供比加速器104更安全和可靠的系统。
在另一实施例中,数据访问管理器118将加速器104配置为取回并在其上存储/缓存将由加速器104处理的数据集110的所有数据,如图3所示。例如,一个或多个加速器104在T1接收与给定模型例如飞机模型进行交互的请求。加速器104上的请求管理器120在T2分析该请求302并在T3从服务器系统102取回全部或基本上全部数据304以满足用户请求。加速器104然后在T4将该数据本地存储在存储器/高速缓存306中。现在,在T5从用户客户机106接收到访问请求时,加速器104在T6本地访问缓存的数据,而不是从服务器102请求该数据。
需要注意,在另一实施例中,数据访问管理器118将加速器104配置为在系统初始化时取回并存储/缓存数据集,而不是在收到用户客户机的初始请求后才执行这些操作。使用加速器104和服务器系统102之间的快速互连,这种将数据集下载到加速器104可在合理的时间内实现。一旦被存储在存储器306中,如上所讨论,数据集304可被加速器104直接访问。
在另一实施例中,数据访问管理器118将加速器104配置为仅取回并存储/缓存满足用户请求所需的数据集110的一部分404,而数据集的剩余部分保留在服务器系统102上,如图4所示。例如,一个或多个加速器104在T1接收与给定模型例如信用卡诈骗检测模型进行交互的请求402。加速器104上的请求管理器120在T2分析该请求,并在T3从服务器系统102取回满足用户请求的、其存储器406所允许的尽可能多的数据110。加速器104然后在T4将该数据404本地存储在存储器/高速缓存406中。现在,在T5从用户客户机106接收到访问请求时,取决于使用所缓存的数据部分404、本地数据是否能满足用户请求,加速器104在T6本地访问缓存的数据404,并且/或者在T7访问服务器系统上的数据集110。
加速器104的配置可由数据访问管理器118静态和/或动态地执行。例如,系统管理员可以指示数据访问管理器118根据上面讨论的实施例中的一个来静态地配置加速器。或者,一组数据访问策略可以和一个或多个加速器104关联。这些数据访问策略指示如何配置加速器104来从服务器102访问数据。在该实施例中,数据访问管理器118确定与给定加速器关联的数据访问策略,并按照该数据访问策略的指示、根据上面讨论的数据访问实施例中的一个来静态地配置加速器104。
或者,数据访问管理器118可以基于一个或多个访问配置来动态的配置加速器104中的每个,即,存储/缓存全部整个数据集、数据集的一部分或者完全不缓存任何数据。在该实施例中,数据访问管理器118利用访问上下文来确定如何动态地配置加速器104,该访问上下文可包括各种类型的信息,例如数据端口、用户属性、与该数据关联的安全属性等。例如,数据访问管理器118可确定数据从服务器102传输到加速器104和/或从加速器104传输到用户客户机106的端口。基于确定的端口,取决于与端口关联的安全性和可靠性,数据访问管理器118可将加速器104动态地配置为存储/缓存全部整个数据集、数据集的一部分或者完全不缓存任何数据。数据访问策略可被用来指示在通过给定的一组端口来发送数据时,使用哪个访问配置。
在另一例子中,数据访问管理器118基于将被访问的数据集110来动态地配置加速器104。例如,数据集110可包括不同类型的数据、不同类型的保密需求等。被数据访问管理器118用来确定如何动态配置加速器104的与数据集110关联的该信息可被存储在数据集本身中、存储与该数据集关联的记录中等。基于该信息,数据访问管理器118根据上面讨论的访问配置中的一个来动态地配置加速器104。例如,如果数据访问管理器118确定给定数据集110需要高级的保密性,则数据访问管理器118可将加速器104配置为仅从服务器访问数据集110,而不缓存任何数据集110。在该实施例中,数据访问策略可被用于指示哪个访问配置将会基于与该数据集关联的元数据。
此外,在另一例子中,数据访问管理器118基于请求访问数据集110的用户客户机106上的用户来动态地配置加速器104。例如,用户可具有不同的访问权限和与之关联的许可。因此,在该例子中,数据访问管理器118确定与用户关联的多种元数据例如访问权限和许可、数据使用历史、请求类型(用户请求用该数据来做什么)等。基于该用户元数据,数据访问管理器118根据访问配置中的一个来动态地配置加速器104。需要注意,用户元数据可被存储在服务器102、加速器104和/或远程系统上的用户记录中。
除了数据访问管理器118,混合服务器114还包括如上所讨论的安全管理器122。安全管理器122可以是数据访问管理器的一部分,或者也可位于数据访问管理器118外部,在服务器系统102、一个或多个加速器104和/或远程系统上。安全管理器122为混合系统114提供弹性的安全性。例如,安全管理器122可根据上面讨论的访问配置来管理加速器104的动态配置。此外,安全管理器122可将各种级别的安全性应用于服务器102和每个加速器104之间的通信链路。
在该实施例中,安全管理器122在服务器102和加速器104之间提供完全加密的链路,或者修改的加密链路,由于不是每段数据都被加密,该修改的加密链路包括对链路上的部分数据的更弱强度/加密但更高的性能。在一个实施例中,用户客户机106上的系统管理员或用户可选择完全加密的链路或修改的加密链路。在另一实施例中,和上面讨论的关于数据访问的配置类似,安全管理器122基于数据被发送和/或数据被访问的端口来选择完全加密的链路或修改的加密链路。在又一实施例中,安全管理器122基于应用于加速器104的访问配置来选择完全加密的链路或修改的加密链路。例如,如果加速器104已被配置为仅从服务器102访问数据集110且不缓存任何数据,则安全管理器122可完全加密服务器102和加速器104之间的链路。如果,另一方面,加速器已被配置为缓存数据集110,则安全管理器122可在服务器102和加速器104之间提供部分加密(较弱加密强度或部分数据加密)的链路。
在数据被缓存在加速器104上的实施例中(即图3和图4),安全管理器122还可实现脆弱性窗口机制。在该实施例中,安全管理器122指示加速器104维护用于加速器104上缓存的数据的计数器124。一旦计数器124达到给定值,高速缓存中的数据不再能被访问。例如,加速器104删除该数据、覆盖该数据等。给定值可以是默认值,例如但不限于,时间间隔或访问次数。或者,安全管理器122可设置给定值并指示加速器124计数到该给定值。而且,不同的数据集和数据集部分可以和不同的值关联。例如,在加速器104上缓存的数据集110的每个部分可与不同的计数器和值关联。需要注意,如果所有数据都被缓存在加速器104上且只有单个用户请求访问,则一旦用户完成访问数据,加速器104可在脆弱性窗口到期之前从高速缓存中删除该数据。但是,如果多个用户请求访问该数据,则数据需要保留在加速器104上,直到脆弱性窗口到期,因为其他用户可能需要访问该数据。
脆弱性窗口机制允许安全管理器122调整混合服务器114中的安全级别,以通过要求加速器丢弃/删除其高速缓存中的数据,允许部分加密的链路提高性能而仍然确保数据安全性。系统设计者可选择在链路加密强度和脆弱性窗口持续时间之间做出合适的权衡。基于加速器系统的安全性供应(security provision)的设计者置信水平,类似的考虑可被用来设置脆弱性窗口的持续时间。脆弱性窗口机制还确保不会长时间在加速器高速缓存中保持数据,从而新数据可被缓存。
由于安全管理器122将服务器102和加速器104之间的通信链路配置为具有给定级别的安全性,在某些实施例中,加速器104所缓存的数据被加密。在某些情况下,两个或多个加速器104访问相同的缓存数据集。例如,第一加速器可满足来自第一用户的请求且第二加速器可满足来自第二用户的请求。例如,如果这些用户访问同一模型,则有很大的可能性第一和第二用户将请求访问同一数据。因此,当加速器中的一个解密其高速缓存中的数据时,它可和访问同一数据集的其他加速器共享解密的数据。这样,其他加速器不需要解密该数据并可节省处理资源。需要注意,如果脆弱性窗口被应用于第一加速器上的解密的数据,该脆弱性窗口将在与第二加速器共享数据时被用于该解密的数据。
从上面的讨论可以看到,加速器104能够以各种方式来配置,以用于访问数据集来满足用户请求。混合服务器114还提供动态安全环境,其中可以针对服务器102和加速器104之间的通信链路并针对加速器如何缓存数据来调整安全级别。此外,每个加速器104可以被配置为提供弹性恢复能力。例如,能够从加速器104中的软件崩溃中恢复,从而重要数据不会丢失且用户体验不被中断,这一点很重要。
在一个实施例中,由弹性恢复模块126在加速器中提供弹性恢复能力。弹性恢复模块126可将加速器动态地配置为在一个时刻具有运行的软件程序的单个实例或多个副本。弹性恢复模块126可基于用户请求、被访问的数据的性质、所需的性能和可用的资源来切换这些配置。恢复能力是通过在同一时刻运行同一程序的至少两个副本来提供的。在该实施例中,软件程序互相交叉检查,从而每个程序总是知道另一个程序在做什么。因此,如果一个程序崩溃了,则另一个程序可以无缝地接管已崩溃程序的处理。
协调的推测性数据推拉
如以上所讨论的,某些使用模型需要服务器仅被用于服务器102和加速器104之间的调用-返回模式。在该类型的配置中,不允许加速器104自己对服务器102进行访问。因此,如图5所示,在一个或多个实施例中,用户的客户机106向服务器102发送请求、命令等,而不是将它们直接发送到加速器104。这些实施例利用经过服务器102的调用-返回路径,并建立具有数据窥探(snoop)的协议隧道502。调用-返回允许混合服务器114的安全实现。
在这些实施例中,数据访问管理器118可以以多种方式来处理服务器102直接从用户客户机106接收到的请求。在一个例子中,从客户机106接收到的请求从服务器的输入直接隧道传输(tunnel)到加速器104。在另一例子中,这些请求在服务器102上处理,且结果被发送回用户客户机106。用户客户机106然后可将该数据“推送”到一个或多个加速器来处理,其中,加速器104将处理过的数据沿协议隧道502发送回用户客户机106。但是,如果用户客户机106包括足够的资源来高效地自己执行处理,则用户客户机106不需要将数据推送给加速器104。在又一例子中,传入的请求沿协议隧道502被镜像(mirror)到加速器104和服务器102两者。例如,服务器102维护实际请求的副本,并将该请求或副本发送给加速器104。此外,在另一例子中,服务器102将对应于小的请求的结果数据推送到用户客户机106,但允许长的/大块(long/bulk)结果由用户客户机对加速器102的请求来服务。例如,产生长的/大块结果的请求被传递给加速器104,其中,加速器从服务器102请求相应的数据。此外,长的请求消息可沿协议隧道502被发送到加速器104,以缓和服务器102上的“代理”(代表加速器102)处理。在服务器102上,重复的请求可被丢弃。
协议隧道被配置,从而在一个网络端口接收请求,并通过另一网络端口将该请求发送到加速器104。但是,如图5所示,服务器102包括窥探模块504,其可位于数据访问管理器中或在数据访问管理器之外。窥探模块504窥探被接收并被传递到加速器的请求,以确定加速器满足请求所需的数据集或数据集的部分。数据访问管理器然后能够将已确定的数据集或数据集部分推送到加速器。在一个实施例中,加速器从服务器接收的任何推送数据被存储在单独的“推送”高速缓存中,并且不和牵拉(pull)的数据一起存储。但是,该实施例不是必须的。因此,当加速器接收请求时,它们不是必须要从服务器取回数据集,因为服务器已经开始将所需的数据集发送到加速器。来自用户客户机106的请求可以具有一位的标签,该标签用于向加速器指示请求所需的数据已经在发送途中。加速器104由此可避免对服务器102的数据请求。当用户客户机106没有用户所有潜在位置的完整知识、但服务器102可能具有该信息、且不同用户对数据集的更新可被反射(reflect)在数据集中然后被“推送”到其他用户时,这样的“推拉”协议具有优势。
上述实施例的一个优势是,由于所有用户请求首先被指向服务器102,服务器102具有多个用户请求的知识。例如,在传统的核外处理环境中,每个加速器一般在同一时刻只能支持一个用户。因此,这些传统的环境通常不能执行基于其他用户的使用模式的任何类型的推测性推/拉操作。但是,因为在本发明的一个或多个优选实施例中,来自用户客户机106的请求首先被发送到服务器102,服务器102监视所有用户客户机106正在处理什么数据集。这允许服务器102基于过去多个用户请求的数据或基于用户当前请求的数据来预测或推测给定用户客户机106未来需要什么数据。与上面已经讨论的实施例类似,服务器102然后能够将该数据推送到合适的加速器104。
例如,考虑其中服务器包含飞机模型的实施例。用户在用户客户机器106上用实时显示来导航通过飞机图形模型。基于来自多个用户的请求,服务器102确定当大多数用户位于第一层行李舱中时,他们将导航到第二层行李舱。于是,当服务器102基于接收到的请求确定用户位于第一层行李舱中,服务器102可将用于第二层行李舱的数据推送到相应的加速器104。因此,加速器104在接收到用户访问第二层的请求之前,已经具有用于第二层行李舱的数据(且在某些实例中,已经处理该数据)。该实施例缓解了下列配置中加速器104通常遇到的延迟,在该配置中加速器104必须在从服务器102访问数据之前等待,直到接收到访问第二层的请求。
在另外的实施例中,数据访问管理器118监视加速器为满足请求而牵拉的数据,以确定要推送到加速器104的数据。这些实施例可被应用于这样的环境配置,在该环境配置中使用上面讨论的协议隧道来从用户客户机106向加速器104发送请求或从用户客户机106向服务器102发送请求。当加速器104从服务器102牵拉数据以满足请求时,服务器102可将任何相关数据推送到加速器104,从而加速器104在需要时已经具有该数据并且不需要执行额外的牵拉操作。例如,在其中数据集110包含以层次性质例如层次树存储的数据的实施例中,当服务器102确定加速器104正在牵拉树的顶级元素时,服务器预测/推测加速器104将最终需要与被牵拉的顶级元素关联的叶子元素。因此,服务器102将这些叶子元素推送到加速器104。在一个实施例中,这些推/拉操作相互协作进行,即,服务器将数据推送到加速器,同时加速器从服务器牵拉相关的数据。
在另一实施例中,服务器102通过数据访问管理器来执行对加速器104所牵拉的数据的语义解析,以确定推送给加速器104的数据。换句话说,在该实施例中,服务器102不只是发送与加速器104当前牵拉的数据相关的所有数据,而是发送与牵拉数据关联的数据。例如,考虑服务器102上的数据集110用于虚拟世界的例子。用户通过用户客户机106导航到用户可选择三条不同路径的区域。当加速器104从服务器102牵拉数据以向用户显示该三条路径时,服务器102语义分析该牵拉数据并确定用户只能选择第一路径,因为该用户没有获取用于第二和第三路径的键(key)。因此,服务器102仅将与第一路径关联的数据推送到加速器104。可以理解,仅基于数据集使用位置的推送数据的蛮力(brute force)方式可能是低效的。该蛮力方式可产生与被寻址数据条目相邻、但对于用户应用来说是无用的数据条目。而本发明的一个或多个优选实施例对请求进行语义分析,从而用户所操纵的应用级对象局部性和亲合性(affinity)可被用于向加速器104推送数据。通过使“推送”的数据对于应用用户上下文更为有用,该策略降低了延时并允许提升的效率。
需要注意,推/拉数据移动可显著提升更大的模型嵌套的多个模型的处理。当加速器104从服务器牵拉数据且该数据属于具有定义的独立模型的实体时,服务器102可将该模型数据直接推送到加速器104。任何后续的访问都被指向嵌套的模型的本地副本。可通过加锁和一致性更新来实现用于同时读写的模型共享。
预取流水线(prefetch pipelining)
除了上面讨论的协调的推测性数据推/拉实施例,混合服务器114还可被配置用于应用级预取,即,显式的预取。在该实施例中,其中在基于NFS的读取(对mmap的文件共享的fread或读取)过程中存在隐式的预取,显式预取被用来基于正被执行的应用的语义来预取数据。需要注意,隐式预取由于空间局部性可产生位置连续的数据块,但对于应用用户上下文来说可能是无用的。虚拟世界或建模/图形环境中的典型的应用用户上下文由具有层次或关系的几百到几千个对象构成。显式预取允许用户应用上下文中的对象局部性和亲合性(affinity)被用于预取。这些对象不是必须在存储器中连续分布。显式预取允许用户的动作,并可能比蛮力隐式预取对用户更有用。在一个实施例中,基于应用中的用户的状态信息,应用可事先请求应用或用户可能需要的数据块。通过使用年龄或最近最少使用算法的合适替换策略,将这样的块存储在推测性高速缓存中。这允许推测性块不替换任何确定性的缓存的数据。
在一个实施例中,如图6所示,一个或多个加速器104包括一个或多个预取器602,预取器为在用户客户机106上运行的应用604预取数据。可以理解,在用户客户机106上运行的应用604的状态维持处理可在服务器102上运行。应用处理实际上可跨服务器102和用户客户机分布,但预取可由用户客户机106上的处理来触发。但是,需要注意,一个或多个预取器也可位于服务器系统102上。预取器602是n路选择预取器,其载入与关联于应用的当前状态的多个选择、情形、场景等关联的数据。预取器分析在服务器102和/或加速器104或用户客户机106上维护的一组信息606,以沿着多个维度做出预取选择,该组信息可包括用户选择和偏好、需要用户交互的可能模型、当前应用状态、传入(到服务器102)的外部流状态等。n路预取器获取一组不同预取器的预取请求,作为输入。每个预取器基于不同的选择标准进行请求,且n路预取器可选择发出一个或多个预取器的请求。
例如,考虑在服务器102上运行的应用例如虚拟世界。在该例子中,用户通过用户客户机106将他自己/她自己导航到允许用户向两个方向中的一个前进的门口。当用户靠近门口时,应用可在加速器104上缓存来自用户可选择的所有可能方向的块。当用户选择方向时,对应于一个“方向”的数据可被保留而其他“方向”的数据可被丢弃。注意到用户总是可以退回其步伐,从而基于存储器的可用性和服务质量要求,每个“方向”都可被保留以供未来使用。预取缓解了如果不预取数据用户通常会经历的延迟。
此外,在某些情形下,用户可能无法选择两个方向中的任一个,而只能选择其中一个方向。因此,预取器602分析预取信息606例如用户的选择历史,以确定用户能够选择的路径并仅预取该路径的数据。这和上面讨论的语义分析实施例类似。
在一个实施例中,加速器104包括预取请求队列608,该预取请求队列存储来自位于用户客户机106上的应用604的预取请求。例如,如果应用604处于向用户呈现具有可选择的多条路径的门口的状态,应用604向加速器104发送多个预取请求,每条路径一个请求。这些预取请求将请求加速器104预取与给定路径关联的数据。加速器104在预取请求队列610中存储这些预取请求608中的每个。预取请求队列可以是快速存储器例如DRAM中的临时区域、快速存储器中的专用部分、或者可位于慢速存储器例如闪存中。预取器602然后基于与预取请求关联的资源需求,为每个预取请求指定评分。例如,该评分可基于预取被请求数据的存储器需求。评分还可基于预取能提升多少用户体验。例如,可基于通过预取给定数据集能降低多少延时来指定评分。
一旦指定了评分,预取器602从预取请求队列610中选择来满足的一组预取请求,该组预取请求具有最高评分或大于给定阈值的一组评分。加速器104将预取请求发送到服务器102来预取所需的数据。在相同加速器或不同加速器上利用多个预取器602的实施例中,如果同一数据被请求预取,对该同一数据集的多个预取请求可被合并为单个请求并被发送到服务器102。
需要注意,预取请求可被服务器102或加速器104丢弃。例如,在多数情况下,被请求预取的数据对于应用604不是关键的,因为该数据是将在未来的某个时刻使用的。因此,如果服务器102或加速器104没有足够的资源来处理预取请求,该请求可被丢弃/忽略。
服务器102取回数据以满足预取请求,并将该数据发回给加速器104。在一个实施例中,服务器102通过数据访问管理器来分析预取的数据,以确定是否有任何额外的数据也应被预取。服务器102确定与当前正被预取的数据集相关的其他对象,其中,这些其他对象可位于同一地址空间或位于层次树的同一节点或位于不连续的地址空间或层次树的不同节点/层。例如,如果被预取的数据集与棒球游戏中的投手相关,服务器还可取回例如给定投手角色可做出的投掷类型如快球、曲线球、滑行曲线球或下坠球以及该投手角色能投掷出的速度范围等信息。
服务器102然后将预取的额数据发送到加速器104。加速器104将该数据存储在为预取数据保留的存储器614部分612。例如,加速器104将该数据存储在慢速存储器例如闪存的部分中,从而快速存储器例如DRAM不会不必要地负担预取过程。如以上所讨论的,预取数据对于应用通常不是关键的,因为该数据将在未来某个时刻使用。但是,预取数据也可被存储在快速存储器中。在一个实施例中,存储器中的这些预取数据部分中的每个跨一组加速器被聚集。因此,这些预取数据部分用作跨加速器的单个高速缓存。这允许加速器104互相之间共享数据。
在一个实施例中,加速器104利用页替换机制,从而存储预取的存储器不会变满,或者从而新的预取数据可被写入已满的预取存储器612。在该实施例中,加速器104监视预取存储器612中的数据使用。每次使用数据时,针对给定数据集来更新计数器。加速器104还确定与给定数据集关联的计算复杂度。该计算复杂度可基于处理预取数据集所需的资源、处理时间等。加速器104然后基于计数器数据和/或与数据集关联的计算复杂度来给每个预取的数据集指定评分/权重。当存储器612基本上满的时候,预取器使用该评分来确定从存储器612中移除的预取数据,从而可在其中存储新数据。预取代理可在服务器102上运行,作为加速器104上的预取器602的辅助。预取代理可跨加速器104聚集并关联请求,并向服务存储器层次结构呈现单个请求集合,以避免请求重复。预取代理可使用预取请求的“评分”,以在宝贵的DRAM、较便宜的闪存或盘存储器中保存相应的结果。
在混合服务器上多路复用(multiplex)用户并启用虚拟化
在一个或多个实施例中,混合服务器114支持多个用户。这可通过多种方式来实现。例如,可以使用单独的物理加速器、具有私有高速缓存客户机的虚拟化加速器、具有窥探私有客户机高速缓存的虚拟化加速器、具有弹性私有客户机高速缓存的虚拟化加速器。在使用单独的物理加速器104的实施例中,给每个用户分配单独的物理加速器。这具有好处,因为每个用户可被限制于物理加速器,而没有共享开销和相关的安全问题。图7示出了使用虚拟化加速器的一个实施例。特别地,图7示出了一个或多个加速器104被逻辑划分为一个或多个虚拟化加速器702、704,每个具有私有客户机高速缓存。在该实施例中,每个用户被分配虚拟化加速器702、704。加速器104的物理资源在虚拟化加速器702、704之间共享。每个虚拟化加速器702、704包括私有客户机高速缓存706,私有客户机高速缓存只能被它所映射到的虚拟化加速器使用。
在使用虚拟化加速器702、704的另一实施例中,私有高速缓存706是窥探私有客户机高速缓存。如果在不同用户之间共享至少一个公共模型标识(ID)或数据集标识符,这些私有客户机高速缓存可窥探到其他客户机高速缓存的通信流(traffic)。这些私有虚拟化高速缓存706可跨虚拟加速器104被分布。在该实施例中,虚拟化加速器702、704窥探同一物理加速器104上的数据。对物理加速器104上的虚拟化加速器702、704进行管理的虚拟化加速器目录代理710向共享同一数据集110例如模型数据的其他虚拟化加速器702、704广播请求。私有客户机高速缓存706可以用数据响应,如果它们已经具有虚拟加速器中的一个从服务器102请求的数据。这在虚拟加速器702、704之间建立了虚拟总线。物理加速器104上的虚拟化加速器702、704能够共享输入数据和输出数据。如果用户包含相同状态,例如,多个用户位于虚拟世界的同一区域或者体积中,虚拟化加速器702、704可被结合(即虚拟加速器702也为虚拟加速器704执行工作)或逻辑分开以更高效地处理用户请求和数据。而且,多个数据集可以在一个虚拟化加速器702、704上菊花链接(daisy chain)。例如,飞机模型可由多个模型构成。因此,和单个集成模型相比,可在虚拟化加速器上建立模型的层次结构。例如,来自该模型层次结构的模型可被分配给每个虚拟加速器702、704。虚拟加速器702、704可在给定的物理加速器104上实例化。这允许虚拟加速器702、704共享数据,因为数据集访问很可能从互相邻近的虚拟加速器服务,因为它们都对属于同一层次结构的数据集建模。虚拟加速器702、704还可跨越(span)多个物理加速器104。在该情形下,私有客户机高速缓存706可由跨多个物理加速器104的存储器资源构成。
在使用具有弹性私有客户机高速缓存的虚拟化加速器的实施例中,为每个用户分配了虚拟化加速器702、704。私有客户机高速缓存跨物理加速器而存在,即,可以跨加速器104来使用存储器资源。每个私有客户机高速缓存706是用“名义”(nominal)和“高”的高速缓存大小来创建的。当高速缓存空间被使用时,虚拟加速器702、704的高速缓存大小可增加至“高”。如果其他虚拟加速器702、704选择增加其高速缓存大小且存储器资源不可用,则为了性能,具有最高优先级的虚拟加速器702、704可被授权使用较高的高速缓存大小。加速器的高速缓存大小的弹性允许它缓存满足用户客户机请求所需的所有数据。
如本领域技术人员所理解的,本发明的各方面可被实施为系统、方法或计算机程序产品。因此,本发明的方面可采取完全的硬件实施例、完全的软件实施例(包括固件、驻留程序、微代码等),或在此被统称为“电路”、“模块”或“系统”的结合软件部分和硬件部分的实施例。而且,本发明的实施例可以是在其上实施有一个或多个计算机可读程序代码的一个或多个计算机可读介质上实施的计算机程序产品的形式。
可以使用一个或多个计算机可读的或计算机可读的介质的任何组合。计算机可读的或计算机可读的介质例如可以是——但不限于——电的、磁的、光的、电磁的、红外线的、或半导体的系统、装置、器件或传播介质。计算机可读介质的更具体的例子(非穷举的列表)包括以下:有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、诸如支持因特网或内部网的传输介质、或者磁存储器件,或上述的任意合适的组合。在本文件的语境中,计算机可读的或计算机可读的介质可以是任何含有或存储供指令执行系统、装置或器件使用的或与指令执行系统、装置或器件相联系的有形介质。
计算机可读的信号介质可包括例如在基带中或者作为载波一部分传播的、由其体现计算机可读的程序码的数据信号。这样传播的信号可采取多种形式中的任一个,包括但不限于电磁、光学或其任意合适的组合。计算机可读的信号介质可以是任何除了计算机可读存储介质外的计算机可读的介质,其可通信、传播或传输供指令执行系统、设备或装置或与指令执行系统、设备或装置相关联的程序。
实施在计算机可读介质上的程序码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等,或上述的任意合适的组合。
用于执行本发明的各方面的操作的计算机程序码,可以以一种或多种程序设计语言的任何组合来编写,所述程序设计语言包括面向对象的程序设计语言——诸如Java、Smalltalk、C++之类,还包括常规的过程式程序设计语言——诸如“C”程序设计语言或类似的程序设计语言。程序码可以完全地在用户的计算上执行、部分地在用户的计算机上执行、作为一个独立的软件包执行、部分在用户的计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在后一种情形中,远程计算机可以通过任何种类的网络——包括局域网(LAN)或广域网(WAN)——连接到用户的计算机,或者,可以(例如,利用因特网服务提供商来通过因特网)连接到外部计算机。
以下将参考流程图描述和/或根据本发明实施例的方法、设备(系统)和计算机程序产品的框图来描述本发明的各方面。将理解,流程图描述的每个方框和/或框图,以及流程图描述中的方框组合和/或框图,可由计算机程序指令实施。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而生产出一种机器,使得通过计算机或其他可编程数据处理装置执行的这些指令,产生实现流程图和/或框图中的方框中规定的功能/操作的装置(means)。
也可以把这些计算机程序指令存储在能指令计算机或其他可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令产生一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instruction means)的制造品。
也可以把计算机程序指令加载到计算机、其他可编程数据处理装置或其他装置上,使得在计算机、其他可编程数据处理装置或其他装置上执行一系列操作步骤,以产生计算机实现的过程,从而在计算机、其他可编程装置或其他装置上执行的指令就提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
操作流程图
现在参考图8-17,图中的流程图和框图示出了根据本发明的各种优选实施例的系统、方法和计算机程序产品的可能实施方式的结构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
图8是示出在如上所讨论的核外处理环境中的服务器系统上预处理数据的一个例子的操作流程图。图8的操作开始于步骤802并直接进入步骤804。在步骤804,服务器102从加速器104接收对数据集110的请求。在步骤806,服务器102确定与被请求数据集关联的操作类型和/或位于加速器104上的处理核心112的类型。在步骤808,服务器102基于所确定的操作类型和/或处理核心类型,将数据从第一格式转换为第二格式。或者,服务器102可以各种可直接被加速器104使用的形式来存储数据。在步骤810,服务器102将已转换的数据发送到加速器104。控制流程在步骤812退出。
图9是示出根据如上所讨论的第一数据访问配置来进行配置的核外处理环境中的加速器的一个例子的操作流程图。图9的操作流程开始于步骤902并直接进入步骤904。在步骤904,加速器104从用户客户机106接收与数据集110进行交互的请求302。在步骤906,加速器104分析请求302。在步骤908,加速器104从服务器102取回与请求302关联的所有或几乎所有数据集110。在步骤910,加速器104将取回的数据304本地存储在高速缓存306中。在步骤912,加速器104从用户客户机106接收访问数据集110的请求。在步骤914,加速器104处理本地存储的数据304以满足该请求。在步骤916,加速器104将处理过的数据发送给用户客户机106。控制流程然后在步骤1018退出。
图10是示出根据上面讨论的第二数据访问配置来进行配置的核外处理环境中的加速器的另一例子的操作流程图。图10的操作流程图开始于步骤1002并直接进入步骤1004。在步骤1004,加速器104从用户客户机106接收与数据集110进行交互的请求402。在步骤1006,加速器分析请求402。在步骤1008,加速器104从服务器102取回与请求402关联的数据集110的部分404。在步骤1010,加速器104将取回的数据部分404本地存储在高速缓存406中。在步骤1012,加速器104从用户客户机106接收访问数据集110的请求。
在步骤1014,加速器104确定数据部分404是否能满足该请求。如果该确定的结果是否定的,则在步骤1016,加速器104从服务器102取回额外的数据。在步骤1108,加速器104处理数据部分404和额外的数据以满足该请求。控制然后进入步骤1022。如果在步骤1014的结果是肯定的,则在步骤1020,加速器104处理缓存的数据部分404以满足该请求。在步骤1022,加速器104将处理过的数据发送到用户客户机106。控制流程然后在步骤1024退出。
图11是示出根据如上讨论的数据访问配置来动态配置核外处理环境中的配置的加速器的一个例子的操作流程图。图11的操作流程开始于步骤1102并直接进入步骤1104。需要注意,下列步骤可由服务器102和/或加速器104来执行。但是,仅为了示例的目的,下列讨论基于服务器102的视角。在步骤1104,服务器102从加速器104接收对数据集110的请求。在步骤1106,服务器102确定用于在服务器102和加速器104之间传输数据的第一组数据端口。
在步骤1108,服务器102确定用于在加速器104和用户客户机106之间传输数据的第二组端口。在步骤1110,服务器102确定加速器104正在请求的数据。在步骤1112,服务器102确定与请求访问数据集110的用户关联的一组属性。在步骤1114,服务器102根据基于所确定的第一组数据端口、第二组数据端口、正在请求的数据集以及与用户关联的属性中的至少一个的数据访问配置来动态配置加速器104。控制流程然后在步骤1114退出。
图12是示出在如上所讨论的核外处理环境中动态建立服务器和加速器之间的安全链路的一个例子的操作流程图。图12的操作流程开始于步骤1202并直接进入步骤1204。需要注意,下列步骤可由服务器102和/或加速器104来执行。但是,仅为了示例的目的,下列讨论基于服务器102的视角。在步骤1204,服务器102确定用户是否请求完全加密的链路。如果该确定的结果是肯定的,则在步骤1206,服务器102完全加密服务器102和加速器104之间的通信链路。控制流程然后在步骤1208退出。如果该确定的结果是否定的,则在步骤1210,服务器102确定加速器104是否已被配置为缓存来自服务器102的数据。
如果该确定的结果是否定的,则在步骤1212,服务器102完全加密服务器102和加速器104之间的链路。控制流程然后在步骤1214退出。如果该确定的结果是肯定的,则在步骤1216,服务器102将服务器102和加速器104之间的通信链路配置为加密部分数据或以较弱的强度来加密所有数据。在步骤1218,服务器102指示加速器104利用用于被缓存数据的脆弱性窗口机制,以抵消由于部分数据加密或较弱强度加密所引起的系统可信度降低。控制流程然后在步骤1220退出。
图13是示出在如上所讨论的核外处理环境中由加速器维护用于被缓存数据的脆弱性窗口的一个例子的操作流程图。图13的操作流程开始于步骤1302并直接进入步骤1304。在步骤1304,服务器102指示加速器104利用用于被缓存数据的脆弱性窗口机制。在步骤1306,加速器104为缓存的数据维护安全计数器124。在步骤1308,加速器104确定安全计数器124是否大于给定阈值。如果该确定的结果是否定的,控制流程回到步骤1306。如果该确定的结果是肯定的,在步骤1310,加速器104从高速缓存306中清除数据304。控制流程然后在步骤1312退出。
图14是示出在如上所讨论的核外处理环境中的服务器上利用协议隧道的一个例子的操作流程图。图14的操作流程开始于步骤1402并直接进入步骤1404。在步骤1404,服务器102建立协议隧道502。在步骤1406,服务器102从用户客户机106接收访问请求。在步骤1408,服务器102分析该请求。在步骤1410,服务器102确定访问请求所要求的数据集。在步骤1412,服务器102将访问请求传递给加速器104,然后将确定的数据推送到加速器104。需要注意,可交错地将结果数据和用户客户机请求推送到加速器104。在步骤1414,加速器104接收访问请求和推送的数据。在步骤1416,加速器104将推送的数据与从服务器102牵拉来的任何数据分开存储。控制流程然后在步骤1418退出。
图15是如上所讨论的示出核外处理环境中的服务器利用语义分析来向加速器推送数据的一个例子的操作流程图。图15的操作流程开始于步骤1502并直接进入步骤1504。在步骤1504,服务器102从加速器104接收牵拉请求。在步骤1506,服务器102分析该牵拉请求。在步骤1508,服务器102确定被请求的数据与相关数据关联。在步骤1510,服务器102基于语义信息来选择相关数据的子集,该语义信息与和该数据关联的当前应用状态相关联。在步骤1512,服务器102将牵拉请求所请求的数据和相关数据的子集发送到加速器104。控制流程然后在步骤1514退出。
图16是如上所讨论的示出核外处理环境中的加速器从服务器预取数据的一个例子的操作流程图。图16的操作流程开始于步骤1602并直接进入步骤1604。在步骤1604,加速器104从在服务器102和用户客户机上运行的应用604接收预取请求608。在步骤1606,加速器104将预取请求608存储在预取队列610中。在步骤1608,加速器104至少基于每个请求608的资源需求来为每个预取请求608指定评分。在步骤1610中,加速器104选择具有大于给定阈值的评分的一组预取请求。在步骤1612,加速器104从服务器102和用户客户机预取与该组预取请求关联的数据。控制流程然后在步骤1614退出。
图17是如上所讨论的将核外处理环境中的加速器逻辑划分为虚拟化加速器的一个例子的操作流程图。图17的操作流程开始于步骤1702并直接进入步骤1704。需要注意,下列步骤可由服务器102和/或加速器104来执行。在步骤1704,服务器102将至少一个加速器104逻辑划分为一个或多个虚拟化加速器702、704。在步骤1706,服务器102在每个虚拟化加速器702、704上配置私有客户机高速缓存706。在步骤1708中,第一虚拟化加速器702确定第二虚拟化加速器704与同一数据集110关联。在步骤1710,第一和第二虚拟化加速器702、704上的私有高速缓存706为数据互相监视。在步骤1712,第一和第二虚拟化加速器702、704在互相之间传输数据。控制流程然后在步骤1714退出。
信息处理系统
图18是示出可在如上参考图1所讨论的操作环境100中使用的信息处理系统1800的更详细视图的框图。信息处理系统1800基于合适配置的处理系统,该处理系统适于实现本发明的一个或多个优选实施例。类似地,任意合适配置的处理系统可被本发明的优选实施例用作信息处理系统1800。需要注意,信息处理系统1800可以是服务器系统102或加速器系统104。
信息处理系统1800包括计算机1802。计算机1802具有处理器1804,该处理器连接到主存储器1806、大容量存储器1808和网络适配器硬件1810。系统总线1812将这些系统组件互连。在一个实施例中,主存储器1806包含如上所讨论的服务器系统102的组件例如数据集110、数据访问管理器118、安全管理器122、存储器系统202、数据预处理器212、窥探模块504和应用604,或者加速器104的组件例如请求管理器120、安全计数器124、弹性恢复模块126、选通存储器210、请求302、高速缓存306、预取器602和预取请求队列610。
尽管被示为同时存在于主存储器1806中,很明显主存储器1806的各个组件不需要在所有时间或甚至在同一时间位于主存储器1806中。在一个实施例中,信息处理系统1800利用传统的虚拟寻址机制,以允许程序表现为好像它们访问在这里被称为计算机系统存储器的单个大型存储实体,而不是访问多个较小的存储实体例如主存储器1806和数据存储设备1816。注意到术语“计算机系统存储器”在这里一般被用来表示信息处理系统1800的整个虚拟存储器。
大容量存储接口1808被用来将大容量存储设备例如大容量存储设备1814连接到信息处理系统1800。数据存储设备的一种特定类型为光驱例如光盘或数字通用盘(CD或DVD)驱动,其可向/从计算机可读介质或存储产品例如(但不限于)CD/DVD 1816存储/读取数据。数据存储设备的另一类型为被配置为支持例如新技术文件系统(NTFS)类型的文件系统操作的数据存储设备。
尽管仅为计算机1802示出了一个中央处理器(CPU)1804,具有多个CPU的计算机系统可被同样有效地使用。本发明的实施例还可包含接口,每个接口包括被用来卸去CPU 1804的处理负载的单独的、完全编程的微处理器。主存储器中包含的操作系统(未示出)是合适的多任务操作系统例如Windows XP和Windows Server 2003操作系统。Linux是Linux Torvalds在美国、其他国家或这两者的注册商标。UNIX是开放组(The Open Group)在美国和其他国家的注册商标。Microsoft、Windows和Windows徽标是微软公司在美国、其他国家或这两者的商标。本发明的实施例可使用任何其他合适的操作系统。本发明的某些优选实施例利用例如面向对象框架机制等架构,所述面向对象框架机制允许操作系统(未示出)的组件的指令在信息处理系统1800中的任何处理器上执行。网络适配器1810用于提供到网络108的接口。本发明的实施例能够适于以包括当前的模拟和/或数字技术的任何数据通信连接或通过未来的连网机制来操作。
尽管本发明的示例性优选实施例是在完全功能的计算机系统的上下文中描述的,本领域普通技术人员将理解,各个实施例可以通过CD或DVD例如CD 1816、CD随机存取存储器(ROM)或其他形式的可记录介质或通过任意类型的电子传输方法,作为程序产品被分发。
非限制性示例
尽管公开了本发明的特定实施例,本领域普通技术人员将理解,可以对特定实施例进行修改,而不脱离本发明的范围。因此本发明的范围不限于特定的实施例,且所附权利要求书旨在覆盖本发明范围内的任何和所有这样的应用、修改和实施例。
尽管本发明的各种示例优选实施例是在完全功能的计算机系统的上下文中讨论的,本领域普通技术人员将理解,各个实施例可以通过CD或DVD例如CD、CDROM或其他形式的可记录介质,以及/或根据其他实施例经任意类型的电子传输方法,作为计算机可读存储介质或程序产品被分发。
Claims (26)
1.一种加速器系统上的用于访问核外处理环境中的数据的方法,所述方法包括下列步骤:
从管理多个数据集的服务器系统接收数据访问配置;
基于该数据访问配置,确定从服务器系统取回的数据集将被本地存储;
从用户客户机接收与给定数据集进行交互的请求;
从服务器系统取回给定数据集的至少一部分;以及
基于接收到的数据访问配置,将给定数据集的至少一部分本地存储在存储器中。
2.如权利要求1所述的方法,还包括下列步骤:
从用户客户机接收访问给定数据集的请求;
确定该给定数据集的至少一部分满足该访问请求;
基于该访问请求来处理给定数据集的至少一部分;以及
将已处理的给定数据集的至少一部分发送到用户客户机。
3.如以上权利要求中的任一个所述的方法,其中,从服务器系统取回给定数据集的至少一部分的步骤还包括取回给定数据集的全部。
4.如以上权利要求中的任一个所述的方法,还包括下列步骤:
从用户客户机接收访问给定数据集的请求;
确定给定数据集的该部分不能完全满足该访问请求;
响应于该确定,从服务器系统取回给定数据集的至少额外部分;
基于访问请求来处理给定数据集的该部分和额外部分;以及
将已处理的给定数据集的该部分和额外部分发送到用户客户机。
5.如以上权利要求中的任一个所述的方法,还包括下列步骤:
响应于将给定数据集的至少一部分本地存储在存储器中,启动与该给定数据部分关联的安全计数器;
针对该给定数据部分,监视存储器内的给定时间量以及对该给定数据部分的访问次数。
基于存储器内的给定时间量和对该给定数据部分的访问次数中的至少一个,来递增安全计数器。
6.如权利要求5所述的方法,还包括下列步骤:
响应于递增安全计数器,确定与安全计数器关联的值大于给定阈值;以及
从存储器中移除该给定数据部分。
7.如以上权利要求中的任一个所述的方法,其中,将给定数据集的至少一部分本地存储在存储器中的步骤包括将给定数据集的至少一部分本地存储在高速缓存存储器中的步骤。
8.一种核外处理环境中的服务器系统上的用于管理加速器系统对数据的方法,所述方法包括下列步骤:
从加速器系统接收访问给定数据集的请求;
确定与该给定数据集关联的访问上下文;以及
基于所确定的访问上下文,将所述加速器系统动态地配置为执行下列各项中的一个:
直接从所述服务器系统访问给定数据集,
将给定数据集的一部分本地存储在存储器中,以及
将给定数据集的全部本地存储在存储器中。
9.如权利要求8所述的方法,其中,确定访问上下文的步骤还包括:
确定下列各项中的至少一个:
与请求访问给定数据集的用户关联的一组属性;
与给定数据集关联的一组安全属性;以及
将被用来发送和接收给定数据集的一组数据端口。
10.如权利要求8或9中的任一个所述的方法,还包括下列步骤:
响应于将所述加速器系统动态地配置为本地存储给定数据集的一部分或全部中的一个,指示加速器系统为该给定数据集维护安全计数器;以及
将阈值与该安全计数器关联,其中该阈值指示加速器系统何时从存储器中移除给定数据集的一部分或全部中的一个。
11.如权利要求8到10中的任一个所述的方法,还包括下列步骤:
从与访问给定数据集的请求关联的用户接收安全请求;
确定该安全请求指示用户正在请求完全加密的通信链路;以及
与加速器建立完全加密的通信链路,以传输与给定数据集关联的信息。
12.如权利要求8到11中的任一个所述的方法,还包括下列步骤:
响应于将加速器系统动态地配置为本地存储给定数据集的一部分或全部中的一个,建立与该加速器的部分加密的通信链路来传输与给定数据集关联的信息,该部分加密通信链路包括比完全加密通信链路更弱的加密强度;以及
响应于建立该部分加密的通信链路,指示加速器系统维护安全计数器,该计数器指示何时从存储器中移除给定数据集的一部分或全部中的一个。
13.如权利要求8到12中的任一个所述的方法,还包括下列步骤:
确定与所述加速器系统关联的处理核心的类型;以及
将给定数据集从第一格式转换为第二格式,该第二格式与所确定的处理核心的类型关联。
14.一种核外处理环境中的加速器系统,该加速器系统包括:
存储器;
通信地耦合到该存储器的处理核心;以及
通信地耦合到该存储器和处理核心的数据管理器,其中,该数据管理器包括:
接收组件,其用于从管理多个数据集的服务器系统接收数据访问配置;
确定组件,其用于响应于该数据访问配置,确定从服务器系统取回的数据集将被本地存储;
所述接收组件还可操作以从用户客户机接收与给定数据集进行交互的请求;
取回组件,其用于从服务器系统取回给定数据集的至少一部分;以及
存储组件,其基于接收到的数据访问配置,将给定数据集的至少一部分本地存储在存储器中。
15.一种核外处理环境中的加速器系统,该加速器系统包括:
存储器;
通信地耦合到该存储器的处理核心;以及
通信地耦合到该存储器和处理核心的数据管理器,其中,该数据管理器被配置为执行包含下列步骤的方法:
从管理多个数据集的服务器系统接收数据访问配置;
基于该数据访问配置,确定从服务器系统取回的数据集将被本地存储;
从用户客户机接收与给定数据集进行交互的请求;
从服务器系统取回给定数据集的至少一部分;以及
基于接收到的数据访问配置,将给定数据集的至少一部分本地存储在存储器中。
16.如权利要求15所述的加速器系统,其中,所述方法还包括下列步骤:
从用户客户机接收访问给定数据集的请求;
确定给定数据集的至少一部分满足该访问请求;
基于该访问请求来处理给定数据集的至少一部分;以及
将已处理的给定数据集的至少一部分发送到用户客户机。
17.如权利要求15或16中的任一个所述的加速器系统,其中,所述方法还包括下列步骤:
从用户客户机接收访问给定数据集的请求;
确定给定数据集的一部分不能完全满足该访问请求;
响应于该确定,从服务器系统取回给定数据集的至少额外部分;
基于访问请求来处理给定数据集的该部分和额外部分;以及
将已处理的给定数据集的该部分和额外部分发送到用户客户机。
18.如权利要求15到17中的任一个所述的加速器系统,其中,所述方法还包括下列步骤:
响应于将给定数据集的至少一部分本地存储在存储器中,启动与该给定数据部分关联的安全计数器;
针对该给定数据部分,监视存储器内的给定时间量以及对该给定数据部分的访问次数。
基于存储器内的给定时间量和对该给定数据部分的访问次数中的至少一个,来递增安全计数器。
19.如权利要求18所述的加速器系统,其中,所述方法还包括下列步骤:
响应于递增安全计数器,确定与安全计数器关联的值大于给定阈值;以及
从存储器中移除该给定数据部分。
20.一种核外处理环境中的服务器系统,该服务器系统包括:
存储器;
通信耦合到该存储器的处理器;以及
通信耦合到该存储器和处理器的数据管理器,其中,该数据管理器包含:
接收组件,其用于从加速器系统接收访问给定数据集的请求;
确定组件,其用于确定与给定数据集关联的访问上下文;以及
配置组件,其响应于已确定的访问上下文,将加速器系统动态配置为可进行下列操作中的一个:
直接从服务器系统访问给定数据集,
本地存储给定数据集的一部分,以及
本地存储给定数据集的全部。
21.一种核外处理环境中的服务器系统,该服务器系统包括:
存储器;
通信地耦合到该存储器的处理器;以及
通信地耦合到该存储器和处理器的数据管理器,其中,该数据管理器被配置为执行包含下列步骤的方法:
从加速器系统接收访问给定数据集的请求;
确定与给定数据集关联的访问上下文;以及
基于所确定的访问上下文,将加速器系统配置动态地为执行下列各项中的一个:
直接从所述服务器系统访问给定数据集,
将给定数据集的一部分本地存储在存储器中,以及
将给定数据集的全部本地存储在存储器中。
22.如权利要求21所述的服务器系统,其中,所述确定访问上下文的步骤包括下列步骤:
确定下列各项中的至少一个:
与请求访问给定数据集的用户关联的一组属性;
与给定数据集关联的一组安全属性;以及
将被用来发送和接收给定数据集的一组数据端口。
23.如权利要求21或22中任一个所述的服务器系统,其中,所述方法还包括下列步骤:
响应于将所述加速器系统动态地配置为本地存储给定数据集的一部分或全部中的至少一个,指示加速器系统为给定数据集维护安全计数器;以及
将阈值与该安全计数器关联,其中该阈值指示加速器系统何时从存储器中移除给定数据集的一部分或全部中的至少一个。
24.如权利要求21到23中任一个所述的服务器系统,其中,所述方法还包括下列步骤:
响应于将加速器系统动态地配置为本地存储给定数据集的一部分或全部中的一个,建立与该加速器的部分加密的通信链路来传输与给定数据集关联的信息,该部分加密的通信链路包括比完全加密通信链路更弱的加密强度;以及
响应于建立该部分加密的通信链路,指示该加速器系统维护安全计数器,该计数器指示何时从存储器中移除给定数据集的一部分或全部中的一个。
25.一种用于在核外处理环境中访问数据的计算机程序产品,该计算机程序产品包括:
计算机可读存储介质,其可被处理电路读取并存储被处理电路执行以执行根据权利要求1到13中的任一个所述的方法的指令。
26.一种计算机程序,被存储在计算机可读介质上,并被载入到数字计算机的内部存储器,其包含软件代码部分,当所述程序在计算机上运行时,用于执行权利要求1到13中的任一个所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/822,760 | 2010-06-24 | ||
US12/822,760 US8898324B2 (en) | 2010-06-24 | 2010-06-24 | Data access management in a hybrid memory server |
PCT/EP2010/067053 WO2011160728A1 (en) | 2010-06-24 | 2010-11-08 | Data access management in a hybrid memory server |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102906738A true CN102906738A (zh) | 2013-01-30 |
CN102906738B CN102906738B (zh) | 2016-04-20 |
Family
ID=44118681
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080066963.1A Active CN102906738B (zh) | 2010-06-24 | 2010-11-08 | 核外处理环境中的加速器系统及数据访问方法 |
Country Status (5)
Country | Link |
---|---|
US (15) | US8898324B2 (zh) |
EP (1) | EP2430576A1 (zh) |
JP (1) | JP5651238B2 (zh) |
CN (1) | CN102906738B (zh) |
WO (1) | WO2011160728A1 (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105074677A (zh) * | 2013-03-12 | 2015-11-18 | 英派尔科技开发有限公司 | 加速器缓存器访问 |
CN106233277A (zh) * | 2014-02-19 | 2016-12-14 | 斯诺弗雷克计算公司 | 资源管理系统及方法 |
CN107102824A (zh) * | 2017-05-26 | 2017-08-29 | 华中科技大学 | 一种基于存储和加速优化的Hadoop异构方法和系统 |
CN107615254A (zh) * | 2015-05-21 | 2018-01-19 | 新加坡科技研究局 | 混合对象存储设备的高速缓存架构和算法 |
CN108073423A (zh) * | 2016-11-09 | 2018-05-25 | 华为技术有限公司 | 一种加速器加载方法、系统和加速器加载装置 |
CN110168513A (zh) * | 2016-12-14 | 2019-08-23 | 微软技术许可有限责任公司 | 在不同存储系统中对大文件的部分存储 |
CN110727612A (zh) * | 2019-09-09 | 2020-01-24 | 无锡江南计算技术研究所 | 一种基于精确预取的计算缓存装置 |
CN114641768A (zh) * | 2019-10-22 | 2022-06-17 | 微软技术许可有限责任公司 | 使用支持云的数据标记和动态访问控制策略引擎控制对数据中云资源的访问 |
US11416267B2 (en) | 2016-11-09 | 2022-08-16 | Huawei Technologies Co., Ltd. | Dynamic hardware accelerator selection and loading based on acceleration requirements |
Families Citing this family (59)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8301833B1 (en) | 2007-06-01 | 2012-10-30 | Netlist, Inc. | Non-volatile memory module |
US8874831B2 (en) * | 2007-06-01 | 2014-10-28 | Netlist, Inc. | Flash-DRAM hybrid memory module |
US8904098B2 (en) | 2007-06-01 | 2014-12-02 | Netlist, Inc. | Redundant backup using non-volatile memory |
US8868831B2 (en) | 2009-09-14 | 2014-10-21 | Oracle International Corporation | Caching data between a database server and a storage system |
US10430338B2 (en) | 2008-09-19 | 2019-10-01 | Oracle International Corporation | Selectively reading data from cache and primary storage based on whether cache is overloaded |
WO2010033877A1 (en) | 2008-09-19 | 2010-03-25 | Oracle International Corporation | Storage-side storage request management |
US20100179984A1 (en) | 2009-01-13 | 2010-07-15 | Viasat, Inc. | Return-link optimization for file-sharing traffic |
US8898324B2 (en) * | 2010-06-24 | 2014-11-25 | International Business Machines Corporation | Data access management in a hybrid memory server |
WO2012065265A1 (en) * | 2010-11-16 | 2012-05-24 | Rayan Zachariassen | Endpoint caching for data storage systems |
US20180107591A1 (en) * | 2011-04-06 | 2018-04-19 | P4tents1, LLC | System, method and computer program product for fetching data between an execution of a plurality of threads |
US20120278760A1 (en) * | 2011-04-28 | 2012-11-01 | Medtronic, Inc. | Predictive background data transfer for implantable medical devices |
US10380022B2 (en) | 2011-07-28 | 2019-08-13 | Netlist, Inc. | Hybrid memory module and system and method of operating the same |
US10198350B2 (en) | 2011-07-28 | 2019-02-05 | Netlist, Inc. | Memory module having volatile and non-volatile memory subsystems and method of operation |
US10838646B2 (en) | 2011-07-28 | 2020-11-17 | Netlist, Inc. | Method and apparatus for presearching stored data |
US10592416B2 (en) | 2011-09-30 | 2020-03-17 | Oracle International Corporation | Write-back storage cache based on fast persistent memory |
US8977735B2 (en) * | 2011-12-12 | 2015-03-10 | Rackspace Us, Inc. | Providing a database as a service in a multi-tenant environment |
CN102594876B (zh) * | 2012-01-19 | 2016-03-16 | 网宿科技股份有限公司 | 游戏实时数据和更新数据的混合加速系统 |
US9233304B2 (en) | 2012-03-22 | 2016-01-12 | Empire Technology Development Llc | Load balancing for game |
KR20130113246A (ko) * | 2012-04-05 | 2013-10-15 | 한국전자통신연구원 | 온 디맨드형 콘텐츠 전달 오버레이 네트워크 구성 방법 및 장치 |
US9436475B2 (en) | 2012-11-05 | 2016-09-06 | Nvidia Corporation | System and method for executing sequential code using a group of threads and single-instruction, multiple-thread processor incorporating the same |
US9721587B2 (en) | 2013-01-24 | 2017-08-01 | Microsoft Technology Licensing, Llc | Visual feedback for speech recognition system |
US9110592B2 (en) | 2013-02-04 | 2015-08-18 | Microsoft Technology Licensing, Llc | Dynamic allocation of heterogenous memory in a computing system |
US9075904B2 (en) | 2013-03-13 | 2015-07-07 | Intel Corporation | Vulnerability estimation for cache memory |
US10372551B2 (en) | 2013-03-15 | 2019-08-06 | Netlist, Inc. | Hybrid memory system with configurable error thresholds and failure analysis capability |
US9436600B2 (en) | 2013-06-11 | 2016-09-06 | Svic No. 28 New Technology Business Investment L.L.P. | Non-volatile memory storage for multi-channel memory system |
US10229161B2 (en) | 2013-09-20 | 2019-03-12 | Oracle International Corporation | Automatic caching of scan and random access data in computing systems |
US10261813B2 (en) | 2013-09-25 | 2019-04-16 | Arm Limited | Data processing system for dispatching tasks from a plurality of applications to a shared resource provided by an accelerator |
US9525734B2 (en) | 2013-10-30 | 2016-12-20 | Annapurna Labs Ltd. | Hybrid remote direct memory access |
US10248328B2 (en) | 2013-11-07 | 2019-04-02 | Netlist, Inc. | Direct data move between DRAM and storage on a memory module |
US9350484B2 (en) * | 2014-03-18 | 2016-05-24 | Qualcomm Incorporated | Transport accelerator implementing selective utilization of redundant encoded content data functionality |
US9417773B2 (en) * | 2014-10-16 | 2016-08-16 | Yahoo! Inc. | Mobile application pre-fetching using a state framework |
US9712504B2 (en) * | 2015-04-22 | 2017-07-18 | Aruba Networks, Inc. | Method and apparatus for avoiding double-encryption in site-to-site IPsec VPN connections |
CN107209663B (zh) * | 2015-04-23 | 2020-03-10 | 华为技术有限公司 | 数据格式转换装置、缓冲芯片及方法 |
US20170078367A1 (en) * | 2015-09-10 | 2017-03-16 | Lightfleet Corporation | Packet-flow message-distribution system |
TWI588831B (zh) * | 2016-01-29 | 2017-06-21 | 智原科技股份有限公司 | 非揮發性記憶體加速器及存取加速方法 |
US9841921B2 (en) * | 2016-04-27 | 2017-12-12 | Pure Storage, Inc. | Migrating data in a storage array that includes a plurality of storage devices |
US11809727B1 (en) | 2016-04-27 | 2023-11-07 | Pure Storage, Inc. | Predicting failures in a storage system that includes a plurality of storage devices |
US11112990B1 (en) | 2016-04-27 | 2021-09-07 | Pure Storage, Inc. | Managing storage device evacuation |
US10218811B1 (en) * | 2016-06-29 | 2019-02-26 | Oath (Ameericas) Inc. | Systems and methods for utilizing unused network capacity for prefetch requests |
US10133667B2 (en) | 2016-09-06 | 2018-11-20 | Orcle International Corporation | Efficient data storage and retrieval using a heterogeneous main memory |
US10331573B2 (en) | 2016-11-04 | 2019-06-25 | Oracle International Corporation | Detection of avoidable cache thrashing for OLTP and DW workloads |
US20180150256A1 (en) * | 2016-11-29 | 2018-05-31 | Intel Corporation | Technologies for data deduplication in disaggregated architectures |
US10747565B2 (en) * | 2017-04-18 | 2020-08-18 | Amazon Technologies, Inc. | Virtualization of control and status signals |
US10803039B2 (en) | 2017-05-26 | 2020-10-13 | Oracle International Corporation | Method for efficient primary key based queries using atomic RDMA reads on cache friendly in-memory hash index |
US10719446B2 (en) | 2017-08-31 | 2020-07-21 | Oracle International Corporation | Directly mapped buffer cache on non-volatile memory |
US10956335B2 (en) | 2017-09-29 | 2021-03-23 | Oracle International Corporation | Non-volatile cache access using RDMA |
US10802766B2 (en) | 2017-09-29 | 2020-10-13 | Oracle International Corporation | Database with NVDIMM as persistent storage |
US10732836B2 (en) | 2017-09-29 | 2020-08-04 | Oracle International Corporation | Remote one-sided persistent writes |
US11086876B2 (en) | 2017-09-29 | 2021-08-10 | Oracle International Corporation | Storing derived summaries on persistent memory of a storage device |
EP3693853B1 (en) * | 2017-11-15 | 2022-02-23 | Huawei Technologies Co., Ltd. | Method and device for scheduling acceleration resources, and acceleration system |
US10740125B2 (en) | 2018-01-30 | 2020-08-11 | Hewlett Packard Enterprise Development Lp | Memristive dot product engine virtualization |
US11019132B2 (en) | 2018-06-29 | 2021-05-25 | R-Stor Inc. | System and method for performing fast file transfers with dynamic bandwidth provisioning |
CN110858173B (zh) * | 2018-08-23 | 2024-05-28 | 北京搜狗科技发展有限公司 | 一种数据处理方法、装置和用于数据处理的装置 |
US11328075B2 (en) * | 2019-01-04 | 2022-05-10 | Baidu Usa Llc | Method and system for providing secure communications between a host system and a data processing accelerator |
WO2020236277A1 (en) | 2019-05-23 | 2020-11-26 | Cray Inc. | System and method for facilitating tracer packets in a data-driven intelligent network |
WO2021034340A1 (en) * | 2019-08-16 | 2021-02-25 | R-Stor Inc. | System and method for performing fast file transfers with dynamic bandwidth provisioning |
US12008398B2 (en) * | 2019-12-28 | 2024-06-11 | Intel Corporation | Performance monitoring in heterogeneous systems |
US11914903B2 (en) * | 2020-10-12 | 2024-02-27 | Samsung Electronics Co., Ltd. | Systems, methods, and devices for accelerators with virtualization and tiered memory |
US11513772B1 (en) | 2021-08-22 | 2022-11-29 | Dataplate Ltd. | System and method of providing an interactive development platform in a distributed computing environment |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1531303A (zh) * | 2003-03-12 | 2004-09-22 | 协议无关的客户端高速缓存系统和方法 | |
US20080228864A1 (en) * | 2007-03-12 | 2008-09-18 | Robert Plamondon | Systems and methods for prefetching non-cacheable content for compression history |
Family Cites Families (57)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10124359A (ja) | 1996-10-15 | 1998-05-15 | Hitachi Ltd | キャッシュ選択方法およびデータ処理システム |
US6185625B1 (en) | 1996-12-20 | 2001-02-06 | Intel Corporation | Scaling proxy server sending to the client a graphical user interface for establishing object encoding preferences after receiving the client's request for the object |
US6138213A (en) | 1997-06-27 | 2000-10-24 | Advanced Micro Devices, Inc. | Cache including a prefetch way for storing prefetch cache lines and configured to move a prefetched cache line to a non-prefetch way upon access to the prefetched cache line |
US6363411B1 (en) * | 1998-08-05 | 2002-03-26 | Mci Worldcom, Inc. | Intelligent network |
US6081508A (en) | 1998-02-25 | 2000-06-27 | Indus River Networks, Inc. | Remote computer communication |
US20030036855A1 (en) | 1998-03-16 | 2003-02-20 | Praelux Incorporated, A Corporation Of New Jersey | Method and apparatus for screening chemical compounds |
US20010037400A1 (en) * | 1998-07-22 | 2001-11-01 | Uri Raz | Method and system for decreasing the user-perceived system response time in web-based systems |
US7188240B1 (en) | 1999-07-15 | 2007-03-06 | International Business Machines Corporation | Method and system for encryption of web browser cache |
US6415368B1 (en) | 1999-12-22 | 2002-07-02 | Xerox Corporation | System and method for caching |
US7243136B2 (en) | 2000-01-18 | 2007-07-10 | Inktomi Corporation | Approach for managing and providing content to users |
US6687735B1 (en) | 2000-05-30 | 2004-02-03 | Tranceive Technologies, Inc. | Method and apparatus for balancing distributed applications |
JP2001337888A (ja) | 2000-05-25 | 2001-12-07 | Toshiba Corp | 情報中継装置及び情報中継方法 |
US8204082B2 (en) | 2000-06-23 | 2012-06-19 | Cloudshield Technologies, Inc. | Transparent provisioning of services over a network |
US7054924B1 (en) * | 2000-09-29 | 2006-05-30 | Cisco Technology, Inc. | Method and apparatus for provisioning network devices using instructions in extensible markup language |
US20020169926A1 (en) | 2001-04-19 | 2002-11-14 | Thomas Pinckney | Systems and methods for efficient cache management in streaming applications |
US7478164B1 (en) | 2001-06-12 | 2009-01-13 | Netapp, Inc. | Methods and apparatus for pacing delivery of streaming media data |
US7444662B2 (en) * | 2001-06-28 | 2008-10-28 | Emc Corporation | Video file server cache management using movie ratings for reservation of memory and bandwidth resources |
US7480703B2 (en) | 2001-11-09 | 2009-01-20 | Sony Corporation | System, method, and computer program product for remotely determining the configuration of a multi-media content user based on response of the user |
US20030095783A1 (en) | 2001-11-21 | 2003-05-22 | Broadbus Technologies, Inc. | Methods and apparatus for generating multiple network streams from a large scale memory buffer |
US8176186B2 (en) | 2002-10-30 | 2012-05-08 | Riverbed Technology, Inc. | Transaction accelerator for client-server communications systems |
US7188250B1 (en) | 2002-12-13 | 2007-03-06 | Nvidia Corporation | Method and apparatus for performing network processing functions |
US8838950B2 (en) | 2003-06-23 | 2014-09-16 | International Business Machines Corporation | Security architecture for system on chip |
US7331038B1 (en) | 2003-07-02 | 2008-02-12 | Amazon.Com, Inc. | Predictive prefetching to improve parallelization of document generation subtasks |
US7808906B2 (en) * | 2004-07-23 | 2010-10-05 | Citrix Systems, Inc. | Systems and methods for communicating a lossy protocol via a lossless protocol using false acknowledgements |
JP4796346B2 (ja) | 2004-07-28 | 2011-10-19 | ルネサスエレクトロニクス株式会社 | マイクロコンピュータ |
WO2006082592A1 (en) | 2005-02-04 | 2006-08-10 | Hewlett-Packard Development Company, L.P. | Data processing system and method |
JP2006277186A (ja) | 2005-03-29 | 2006-10-12 | Fujitsu Ltd | 分散計算機管理プログラム、分散計算機管理装置、分散計算機管理方法 |
US20060253584A1 (en) * | 2005-05-03 | 2006-11-09 | Dixon Christopher J | Reputation of an entity associated with a content item |
US7865570B2 (en) * | 2005-08-30 | 2011-01-04 | Illinois Institute Of Technology | Memory server |
US7372378B2 (en) | 2005-12-01 | 2008-05-13 | Nvidia Corporation | Efficient decoding of n-tuple variable bit length symbols |
US8645376B2 (en) * | 2008-05-02 | 2014-02-04 | Salesforce.Com, Inc. | Method and system for managing recent data in a mobile device linked to an on-demand service |
CN100486170C (zh) * | 2005-12-15 | 2009-05-06 | 国际商业机器公司 | 传送前摄http内容的方法和设备 |
US7756922B2 (en) | 2006-01-27 | 2010-07-13 | Oracle International Corporation | Schema annotations for managing cached document fragments |
JP2007213235A (ja) | 2006-02-08 | 2007-08-23 | Canon Inc | ネームサービスキャッシュ装置、及びネームサービスキャッシュ方法 |
US8516193B1 (en) * | 2006-03-30 | 2013-08-20 | Pegasystems Inc. | Techniques for content-based caching in a computer system |
US9385914B1 (en) | 2006-04-06 | 2016-07-05 | Versata Development Group, Inc. | Application state client-side cache for a state-based client-server application |
WO2008031264A1 (fr) * | 2006-09-07 | 2008-03-20 | Lotus Pharmaceutical Co., Ltd. | Composé de glycoside de furost-5-ène-3, 22, 26-triol pour la prévention et le traitement des cancers |
US9154557B2 (en) * | 2006-10-12 | 2015-10-06 | Cisco Technology, Inc. | Automatic proxy registration and discovery in a multi-proxy communication system |
US7584335B2 (en) * | 2006-11-02 | 2009-09-01 | International Business Machines Corporation | Methods and arrangements for hybrid data storage |
US8468244B2 (en) * | 2007-01-05 | 2013-06-18 | Digital Doors, Inc. | Digital information infrastructure and method for security designated data and with granular data stores |
US7930270B2 (en) | 2007-02-26 | 2011-04-19 | Microsoft Corporation | Managing files on multiple computing devices |
US8205205B2 (en) * | 2007-03-16 | 2012-06-19 | Sap Ag | Multi-objective allocation of computational jobs in client-server or hosting environments |
US9171006B2 (en) | 2007-04-06 | 2015-10-27 | Alcatel Lucent | Mobile station with expanded storage space and method of retrieving files by the mobile station |
JP4959425B2 (ja) | 2007-06-04 | 2012-06-20 | 株式会社リコー | 情報処理装置、プログラムおよび情報処理方法 |
US7885969B2 (en) | 2007-09-17 | 2011-02-08 | International Business Machines Corporation | System and method for executing compute-intensive database user-defined programs on an attached high-performance parallel computer |
US7797279B1 (en) * | 2007-12-31 | 2010-09-14 | Emc Corporation | Merging of incremental data streams with prior backed-up data |
US8775824B2 (en) | 2008-01-02 | 2014-07-08 | Arm Limited | Protecting the security of secure data sent from a central processor for processing by a further processing device |
US8019511B2 (en) | 2008-05-22 | 2011-09-13 | Ford Global Technologies, Llc | Vehicle rollover detection |
US8060513B2 (en) * | 2008-07-01 | 2011-11-15 | Dossierview Inc. | Information processing with integrated semantic contexts |
US7975025B1 (en) | 2008-07-08 | 2011-07-05 | F5 Networks, Inc. | Smart prefetching of data over a network |
US7941591B2 (en) * | 2008-07-28 | 2011-05-10 | CacheIQ, Inc. | Flash DIMM in a standalone cache appliance system and methodology |
US9535967B2 (en) | 2008-09-10 | 2017-01-03 | Salesforce.Com, Inc. | Method and system for providing efficient and complex database functionality to a mobile device |
US8533129B2 (en) * | 2008-09-16 | 2013-09-10 | Yahoo! Inc. | Efficient data layout techniques for fast machine learning-based document ranking |
US10430338B2 (en) | 2008-09-19 | 2019-10-01 | Oracle International Corporation | Selectively reading data from cache and primary storage based on whether cache is overloaded |
US20100179984A1 (en) | 2009-01-13 | 2010-07-15 | Viasat, Inc. | Return-link optimization for file-sharing traffic |
US8521982B2 (en) | 2009-04-15 | 2013-08-27 | International Business Machines Corporation | Load request scheduling in a cache hierarchy |
US8898324B2 (en) * | 2010-06-24 | 2014-11-25 | International Business Machines Corporation | Data access management in a hybrid memory server |
-
2010
- 2010-06-24 US US12/822,760 patent/US8898324B2/en not_active Expired - Fee Related
- 2010-11-08 JP JP2013515737A patent/JP5651238B2/ja active Active
- 2010-11-08 WO PCT/EP2010/067053 patent/WO2011160728A1/en active Application Filing
- 2010-11-08 CN CN201080066963.1A patent/CN102906738B/zh active Active
- 2010-11-08 EP EP10776355A patent/EP2430576A1/en not_active Ceased
-
2011
- 2011-12-27 US US13/337,731 patent/US9069977B2/en active Active
- 2011-12-27 US US13/337,704 patent/US9418235B2/en active Active
- 2011-12-27 US US13/337,746 patent/US8914528B2/en active Active
-
2013
- 2013-03-15 US US13/837,245 patent/US9542322B2/en not_active Expired - Fee Related
-
2016
- 2016-04-27 US US15/139,405 patent/US9857987B2/en active Active
- 2016-04-27 US US15/139,391 patent/US9952774B2/en active Active
- 2016-11-10 US US15/348,150 patent/US9933949B2/en active Active
-
2017
- 2017-11-15 US US15/813,354 patent/US10228863B2/en active Active
- 2017-12-20 US US15/848,365 patent/US10222999B2/en not_active Expired - Fee Related
- 2017-12-20 US US15/848,533 patent/US10235051B2/en not_active Expired - Fee Related
-
2019
- 2019-02-21 US US16/281,312 patent/US10585593B2/en active Active
- 2019-02-21 US US16/281,211 patent/US10592118B2/en active Active
- 2019-02-21 US US16/281,170 patent/US10452276B2/en active Active
- 2019-09-20 US US16/577,269 patent/US10831375B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1531303A (zh) * | 2003-03-12 | 2004-09-22 | 协议无关的客户端高速缓存系统和方法 | |
US20080228864A1 (en) * | 2007-03-12 | 2008-09-18 | Robert Plamondon | Systems and methods for prefetching non-cacheable content for compression history |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105074677A (zh) * | 2013-03-12 | 2015-11-18 | 英派尔科技开发有限公司 | 加速器缓存器访问 |
CN105074677B (zh) * | 2013-03-12 | 2018-01-26 | 英派尔科技开发有限公司 | 用于加速器将数据存储在缓冲器中的方法的方法和系统 |
CN106233277A (zh) * | 2014-02-19 | 2016-12-14 | 斯诺弗雷克计算公司 | 资源管理系统及方法 |
US11928129B1 (en) | 2014-02-19 | 2024-03-12 | Snowflake Inc. | Cloning catalog objects |
US11868369B2 (en) | 2014-02-19 | 2024-01-09 | Snowflake Inc. | Resource management systems and methods |
CN106233277B (zh) * | 2014-02-19 | 2019-07-12 | 斯诺弗雷克公司 | 资源管理系统及方法 |
US11782950B2 (en) | 2014-02-19 | 2023-10-10 | Snowflake Inc. | Resource management systems and methods |
US11269919B2 (en) | 2014-02-19 | 2022-03-08 | Snowflake Inc. | Resource management systems and methods |
CN110308994A (zh) * | 2014-02-19 | 2019-10-08 | 斯诺弗雷克公司 | 资源管理系统及方法 |
CN107615254A (zh) * | 2015-05-21 | 2018-01-19 | 新加坡科技研究局 | 混合对象存储设备的高速缓存架构和算法 |
CN108073423B (zh) * | 2016-11-09 | 2020-01-17 | 华为技术有限公司 | 一种加速器加载方法、系统和加速器加载装置 |
US11221866B2 (en) | 2016-11-09 | 2022-01-11 | Huawei Technologies Co., Ltd. | Accelerator loading method, system, and apparatus |
US11416267B2 (en) | 2016-11-09 | 2022-08-16 | Huawei Technologies Co., Ltd. | Dynamic hardware accelerator selection and loading based on acceleration requirements |
CN108073423A (zh) * | 2016-11-09 | 2018-05-25 | 华为技术有限公司 | 一种加速器加载方法、系统和加速器加载装置 |
CN110168513A (zh) * | 2016-12-14 | 2019-08-23 | 微软技术许可有限责任公司 | 在不同存储系统中对大文件的部分存储 |
CN110168513B (zh) * | 2016-12-14 | 2023-10-20 | 微软技术许可有限责任公司 | 在不同存储系统中对大文件的部分存储 |
CN107102824B (zh) * | 2017-05-26 | 2019-08-30 | 华中科技大学 | 一种基于存储和加速优化的Hadoop异构方法和系统 |
CN107102824A (zh) * | 2017-05-26 | 2017-08-29 | 华中科技大学 | 一种基于存储和加速优化的Hadoop异构方法和系统 |
CN110727612A (zh) * | 2019-09-09 | 2020-01-24 | 无锡江南计算技术研究所 | 一种基于精确预取的计算缓存装置 |
CN114641768A (zh) * | 2019-10-22 | 2022-06-17 | 微软技术许可有限责任公司 | 使用支持云的数据标记和动态访问控制策略引擎控制对数据中云资源的访问 |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102906738B (zh) | 核外处理环境中的加速器系统及数据访问方法 | |
US8694584B2 (en) | Speculative and coordinated data access in a hybrid memory server | |
Mansouri et al. | A review of data replication based on meta-heuristics approach in cloud computing and data grid | |
CN102804202B (zh) | 内容网格搜索 | |
CN103988199A (zh) | 已去重存储云中的数据残留的去除 | |
Dong et al. | Towards a fast and secure design for enterprise‐oriented cloud storage systems | |
JP2021507382A (ja) | ブロックチェーンネットワークのアカウント処理方法、装置、機器及び記憶媒体 | |
CN110914817A (zh) | 用于存储环境的认知数据过滤 | |
Mehare et al. | Basics of Modern Computer Systems | |
Wang et al. | Tunnel security management based on association rule mining under Hadoop platform | |
Wan et al. | Sci-Base: A Resource Aggregation and Sharing Ecology for Software on Discovery Science | |
Yusuf et al. | Open Source Systems and Digital Library Services in Nigeria: A Review |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |