CN107408059B - 共享多级库的跨级预取 - Google Patents
共享多级库的跨级预取 Download PDFInfo
- Publication number
- CN107408059B CN107408059B CN201580076993.3A CN201580076993A CN107408059B CN 107408059 B CN107408059 B CN 107408059B CN 201580076993 A CN201580076993 A CN 201580076993A CN 107408059 B CN107408059 B CN 107408059B
- Authority
- CN
- China
- Prior art keywords
- call
- prefetch
- resource
- logic
- traversing
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- 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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/541—Interprogram communication via adapters, e.g. between incompatible applications
-
- 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/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- 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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- 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/15—Use in a specific computing environment
- G06F2212/154—Networked environment
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
在实施例中,描述了与以下操作相关联的装置、方法和存储介质(暂时性的和非暂时性的):从应用程序接收在共享库处的调用;至少部分地基于第一调用访问第一资源,并且至少部分地基于第二资源的地址将预取条目存储在预取引擎中,以准备用于服务需要遍历共享库处的多个级的对共享库的第二调用。可以至少部分地基于第二调用来执行预取请求,并且可以至少部分地基于预取请求的结果来访问第二资源。在实施例中,共享库可以是消息传递接口(MPI)库。可以描述和/或要求保护其他实施例。
Description
技术领域
本公开涉及数据处理领域,具体地涉及将数据资源预取到高速缓存中。
背景技术
本文提供的背景描述是为了通常呈现本公开的上下文的目的。除非本文中另有说明,否则本节中描述的材料不是本申请中权利要求书的现有技术,并且不因包含在本节中而被认为现有技术。
使用诸如消息传递接口(MPI)库的多级软件栈从共享库中的一级移到另一级可能会花费CPU周期,特别是当所需数据不在CPU的高速缓存中时。对于对存储器访问延迟敏感的小消息传送路径性能,情况尤其如此。用于预取的现有方案通常工作于多级库的一个特定级上,通过在工作于数据的较近部分的同时从同一级别预取数据的远部分。这种技术对于小的消息无法最佳地发挥作用。
附图说明
通过结合附图的以下详细描述将容易理解实施例。为了便于该说明,相同的附图标记表示相同的结构要素。实施例在附图的图中以示例而非限制的方式示出。
图1是根据各种实施例的包括具有本公开的共享多级库和预取教导的计算设备的网络环境的框图。
图2是根据各种实施例的可以在本文描述的各种计算设备上实现的预取资源的示例性过程的流程图。
图3示出了根据各种实施例的适用于实施本公开的各个方面的示例性计算环境。
图4示出了根据各种实施例的具有指令的示例的存储介质,指令被配置为使得装置能够实施本公开的各个方面。
具体实施方式
在下面的详细描述中,参考形成其一部分的附图,其中相同的附图标记始终表示相同的部分,并且其中通过说明的方式示出可以实施的实施例。应当理解,在不脱离本公开的范围的情况下,可以使用其他实施例并且可以进行结构或逻辑改变。因此,以下详细描述不应被认为是限制性的,并且实施例的范围由所附权利要求及其等同物限定。
可以以对于理解所要求保护的主题最有帮助的方式将各种操作依次描述为多个离散动作或操作。然而,描述的顺序不应被解释为意味着这些操作必然是顺序相关的。特别地,这些操作可以不按照呈现的顺序执行。所描述的操作可以以与所描述的实施例不同的顺序执行。在另外的实施例中,可以执行各种附加操作和/或可以省略描述的操作。
为了本公开的目的,短语“A和/或B”表示(A),(B)或(A和B)。为了本公开的目的,短语“A、B和/或C”是指(A),(B),(C),(A和B),(A和C),(B和C),或(A、B和C)。
该描述可以使用短语“在实施例中”或“在各实施例中”,其可以各自指代相同或不同的实施例中的一个或多个。此外,关于本公开的实施例使用的术语“包括”、“包含”、“具有”等等是同义的。
如本文所使用的,术语“逻辑”和“模块”可以指代专用集成电路(ASIC)、电子电路、执行一个或多个软件或固件程序的处理器(共享、专用或组)和/或存储器(共享、专用或组)、组合逻辑电路、状态机和/或提供所描述的功能的其它合适的组件,是它们的一部分或包括它们。术语“模块”可以指被配置为执行或导致与本公开一致的一个或多个操作的执行的软件、固件和/或电路。软件可以体现为在非暂时性计算机可读存储介质上记录的软件包、代码、指令、指令集和/或数据。固件可以被实现为在存储器设备中被硬编码(例如,非易失性)的代码、指令或指令集和/或数据。如本文任何实施例中所使用的“电路”可以包括例如单一或任意组合的硬连线电路,诸如包括一个或多个单独指令处理核的计算机处理器的可编程电路,状态机电路,存储由可编程电路执行的指令的软件和/或固件。模块可以共同地或单独地被体现为形成计算设备的一部分的电路。如本文所使用的,术语“处理器”可以是处理器核。
现在参考图1,示出了根据各种实施例的网络环境100,包括具有本公开的共享多级库和预取教导的计算设备102。计算设备102可以在网络108上与计算节点104、106进行数据通信。如图所示,计算设备102可以包括多个组件110-148,包括处理器110、集成高速缓存112、外部高速缓存114、系统存储器116、执行环境118、库模块120、预取引擎122和网络接口卡(NIC)124,它们可以耦合在一起并且被配置为彼此协作以使用预取引擎122从系统存储器116或另一位置预取资源预取资源到诸如集成高速缓存112或外部高速缓存114的高速缓存。在实施例中,处理器110可以包括多个处理器或处理器核。在实施例中,集成高速缓存112或外部高速缓存114可以具有多于一个的高速缓存级别。例如,在各种实施例中,集成高速缓存112可以具有级别1(L1)高速缓存和级别2(L2)高速缓存。
系统存储器116可以包括诸如第一资源126、第二资源128和第三资源130的多个资源,第一资源126、第二资源128和第三资源130可以例如是非暂时性的或暂时性的,例如在由处理器110执行应用程序期间。在实施例中,执行环境118可以包括在各种实施例中可以是共享库模块的库模块120。在实施例中,库模块120可以包括软件栈132,其包括多个层或逻辑级。在各种实施例中,库模块120可以是消息传递接口(MPI)库。
在实施例中,软件栈132可以包括第一逻辑级134、第二逻辑级136、第三逻辑级138、第四逻辑级140和第五逻辑级142。在实施例中,第一逻辑级134可以是MPI库的入口级,而第二逻辑级136可以是传输级,例如对存储在存储器中的硬件资源或资源有访问权的MPI库级别。第三逻辑级138、第四逻辑级140和第五逻辑级142可以是位于第一逻辑级134和第二逻辑级136之间的堆栈顺序的软件栈的层。在实施例中,软件栈132可以包括对应于MPI标准的MPI库的级别,例如诸如MPI标准版本2.0(MPI-2)或3.0(MPI-3)。在各种实施例中,软件栈132的级别可以包括抽象设备接口,例如第三代抽象设备接口(ADI3),信道接口,诸如信道接口的第三版本(CH3),以及通信层,诸如Nemesis(其可以用作低级通信子系统层并且在一些MPI实现中用作CH3信道)。ADI3可以是使用CH3实现提供在MPI进程之间发送数据的例程并在各种实施例中提供其他能力的通信信道的层。在实施例中,软件栈132的每个级别或接口可对应于第一逻辑级134、第二逻辑级136、第三逻辑级138、第四逻辑级140、第五逻辑级142或存在于软件栈132中的其它逻辑级中的一个或多个。在实施例中,软件栈可以具有不同数量的逻辑级。
在实施例中,诸如第二逻辑级136的软件栈132的较低级别例如可以提供对诸如共享存储器资源之类的节点内资源的访问。例如,通过使用CH3或Nemesis来访问共享存储器资源。在实施例中,共享存储器资源可以对应于第一资源126、第二资源128和第三资源130。在各种实施例中,共享存储器资源可以以不同的方式被构造,这取决于应用,诸如例如缓冲器、数组或链接列表。在实施例中,诸如第二逻辑级的软件栈132的较低级别可以提供对节点间资源的访问,诸如通过使用通过Nemesis或另一通信层的网络通信结构。可以使用例如诸如InfiniBand,iWarp,Dolphin,Qlogic,True Scale,Myrinet或Ethernet等技术提供的接口或驱动程序访问节点间资源。在实施例中,诸如直接访问编程库(DAPL),OpenFabrics联盟(OFA)接口,OpenFabrics企业分发(OFEDTM)动词,远程直接存储器访问(RDMA),标签匹配接口(TMI),套接字或其他技术的中间级可以用来访问节点间资源或节点内资源。在实施例中,计算设备102可以通过例如经由NIC 124通信来通过网络108访问诸如节点104或节点106上的注册存储器的节点间资源。
在实施例中,预取引擎122可以包括预取表144,其可以包括对应于要预取的资源的参数。在实施例中,预取表144可以包括指向资源的地址的指针、预取类型和预取深度。在实施例中,预取类型可以包括可以对应于资源将被预取或请求预取到的例如诸如L1,L2或级别3(L3)的高速缓存级别的参数。在实施例中,预取深度可以包括对应于要预取的多个高速缓存行的参数。在实施例中,高速缓存行大小可以是64字节。在实施例中,预取表144可以仅包括对应于要预取的资源的参数,并且预取引擎122可以在各种实施例中包括预定义的预取类型或预定义的预取深度,或者当未在预取表144中规定时可以使用默认预取类型或默认预取深度。例如,在一个实施例中,预定义的预取类型可以是预取到L1高速缓存,并且预定义的预取深度可以是两个高速缓存行。通常,在实施例中,预取表可以包括诸如以下的条目:
prefetch_engine[(prefetch_entry_index)]=(address);
prefetch_engine_control[(prefetch_entry_index)].type=(type_);和
prefetch_engine_control[(prefetch_enty_index)].depth=(depth_)。
在实施例中,例如,预取类型可以是_MM_HINT_T0,_MM_HINT_T1或_MM_HINT_T2。在各种实施例中,预取类型还可以指定预取到多于一个级的高速缓存中。
在各种实施例中,执行环境118还可以包括其他模块146和/或存储设备148。执行环境118还可以包括由处理器110操作的操作系统(OS)。在实施例中,执行环境可以包括诸如MPI应用程序的应用程序,当由处理器110执行时,应用程序使一个或多个进程调用库模块120。在实施例中,每个进程可以具有其自己的预取引擎,使得预取引擎122的多个实例可以在处理器110执行进程的同时存在。在实施例中,应用程序可以包括在其他模块146中。在各种实施例中,节点104或节点106可以以类似的方式构造或包括与计算设备102类似的组件。
图2描绘了根据各种实施例的用于预取可由计算设备102实现的资源的示例过程200。在各种实施例中,过程200可以由库模块120执行,包括预取引擎122和预取表144。在其他实施例中,可以使用更多或更少的模块和/或一些操作按不同的顺序来执行过程200。如图所示,对于实施例,过程200可以在判定框202处开始,其中可以确定是否已经接收到对诸如库120的库的调用。如果在库中没有接收到调用,则在各种实施例中,该过程可以在判定框202处等待。
如果在决策框202处在库中接收到调用,则过程200可以进行到框204,在框204处可以进入诸如第一逻辑级134的第一逻辑级。这可以通过处理器110操作库模块120和从MPI应用程序接收对库的调用诸如MPI_Send调用而发生。然后可以进入MPI上下文,并且在各种实施例中可以使用来自MPI应用程序的等级参数和通信器参数将MPI_Send调用映射到可被称为虚拟连接的内部连接/等级相关结构。也可以使用其他参数,例如MPI标签参数。
在判定框206,可以确定接收的调用是否是导致预取请求的调用类型。在实施例中,可以在判定框206确定接收的调用是否在可以包括多个调用类型的通信调用类型类别内。例如,在各种实施例中,通信调用类型类别可以包括诸如MPI_Send、MPI_Sendrecv和MPI_Put之类的调用。在实施例中,可以确定接收到的调用是否是特定调用类型,例如诸如MPI_Send调用,或者所接收的调用是否属于一组特定的调用类型。
如果在判定框206处确定所接收的调用是预取调用类型,则过程200可以进行到框208,其中可以检查诸如预取引擎表144之类的预取引擎表。在实施例中,可以从库的入口级(例如第一逻辑级134)检查预取引擎表。在各种实施例中,可以从低于的入口级的库级别(诸如第三逻辑级138)检查预取引擎表,其可能仍然在用于访问资源的库的传输级别之上。通常,可以在各种实施例中执行跨级预取,其中在高于用于访问资源的库的低级传输层的库的级别检查预取引擎表。
在判定框210处,可以确定所检查的预取表是否为空。如果在判定框210处确定预取表是空的(例如可能在过程200的初始迭代中发生),则可以在框212处遍历软件栈(例如诸如软件栈132)。如果在判定框206确定接收到的调用不是预取调用类型,则过程200也可以进行到框212,其中可以遍历软件栈,而不执行预取引擎表的检查。
在操作214,可以访问资源,诸如第一资源126(在过程200的初始迭代期间)、第二资源128或第三资源130(在随后的迭代期间)。如果资源尚未在过程200的先前迭代中被预取或以其他方式存储在高速缓存位置中,则资源可以在例如诸如存储器116的存储器中被访问。在各种实施例中,如果资源在过程200的先前迭代中被预取,则可以在诸如高速缓存112或外部高速缓存114的高速缓存中访问资源。在实施例中,资源可以由库中的软件栈的低级传输逻辑级访问,例如库模块120的软件栈132中的第二逻辑级136。当资源是诸如可以存储在共享存储器位置中的节点内资源时,可以使用诸如CH3或Nemesis的低级逻辑级来访问资源。当资源是诸如可以存储在节点104或节点106上并且从计算设备102访问的节点间资源时,可以使用诸如InfiniBand的技术来访问资源,在各种实施例中,通信层例如Nemesis作为软件栈中的低级通信逻辑级,其可以通过诸如DAPL或OFA的接口来起作用,所述接口可以是软件栈的一部分或在软件栈外部。
在判定框216处,可以以与关于判定框206讨论的类似的方式来确定所接收的调用是否是预取调用类型。如果所接收的调用是诸如MPI_Send调用的预取调用类型,例如,可以在框218处确定下一资源地址。例如,如果在操作214处访问诸如第一资源126的第一资源,则下一资源地址可对应于第二资源128。在实施例中,诸如第二逻辑级136的库的传输级别可以以先入先出(FIFO)方式注册共享存储器,并且可以至少部分地基于该信息来确定下一资源地址。
在过程200的后续迭代中,所访问的资源和下一资源地址可以改变,其中来自先前迭代的下一资源在当前迭代中成为所访问的资源。例如,第二资源128可以成为所访问的资源,并且第三资源130可以是过程200的第二次迭代上的下一资源。在框220,预取引擎表,诸如预取表144,可以至少部分地基于所确定的下一资源地址进行更新。在实施例中,可以用指向所确定的下一资源地址的指针来更新预取表。在实施例中,可以使用与确定的下一资源地址(例如,虚拟存储器地址标识符或物理存储器地址)相对应的另一参数来更新预取表。可以在各种实施例中使用预取深度和预取类型更新预取表,例如关于预取表144所描述的。在实施例中,预取引擎表可以在由应用程序调用的库的软件栈中的最低传输级或逻辑级更新。
如果在判定框210处确定预取引擎表不为空,则过程200可以进行到框222,其中可以发送预取请求。这可以通过预取引擎122至少部分地基于例如在过程200的先前迭代中被更新的预取引擎表中的条目发送预取请求而发生。在各种实施例中,计算设备102可以将诸如第二资源128的下一资源预取到例如高速缓存,例如集成高速缓存112或外部高速缓存114。在各种实施例中,可以从MPI库的入口级发送预取请求。预取请求可以作为在各个实施例中可以根据影响应用、处理器或高速缓存占用级别的其他约束而遵循的建议或提示来发送。在实施例中,预取请求可以作为将被遵循的命令发送,而不是可以遵循的建议或提示。在实施例中,可以使用固有的_mm_prefetch编译器来生成中央处理单元(CPU)预取指令。通常,预取请求可以以跨级方式发送,使得从库的高于用于访问预取资源的逻辑级的逻辑级来发送预取请求。然后,过程200可以在框212处继续遍历软件栈。例如,该过程可以遍历MPI库的ADI3和CH3级。然后,如上所述,过程200可以在操作214处继续。
现在参考图3,示出了根据各种实施例的适于实施本公开的示例性计算机300,如前面参考图1-2所述。如图所示,计算机300可以包括一个或多个处理器或处理器核302和系统存储器304。为了包括权利要求的本申请的目的,术语“处理器”和“处理器核”可以被认为是同义的,除非上下文显然有其它要求。另外,计算机300可以包括一个或多个图形处理器305、大容量存储设备306(诸如软盘,硬盘驱动器,光盘只读存储器(CD-ROM)等等)、输入/输出设备308(诸如显示器,键盘,光标控件,遥控器,游戏控制器,图像捕获装置等)、传感器集线器309和通信接口310(例如网络接口卡,调制解调器,红外接收器,无线电接收器(例如,蓝牙)等等)。元件可以经由系统总线312彼此耦合,系统总线312可以表示一个或多个总线。在多个总线的情况下,它们可以由一个或多个总线桥(未示出)桥接。
这些元件中的每一个可以执行本领域已知的其常规功能。特别地,可以采用系统存储器304和大容量存储设备306来存储实现与计算设备102相关联的操作的编程指令的工作副本和永久副本,操作例如对于如图1所示的库模块120和其他模块146所描述的操作,或者在图2的过程200中示出的操作,统称为计算逻辑322。系统存储器304和大容量存储设备306也可用于存储实现与在计算设备102上运行的OS相关联的操作的编程指令的工作副本和永久副本。系统存储器304和大容量存储设备306也可在各种实施例中用于存储数据或本地资源。各种元件可以由处理器302支持的汇编器指令或可被编译成这样的指令的高级语言(例如C)来实现。
编程指令的永久副本可以在工厂或现场通过例如诸如光盘(CD)的分布介质(未示出)或通过通信接口310(从分发服务器(未示出))放置到大容量存储设备306中。也就是说,可以使用具有代理程序的实现的一个或多个分布介质来分发代理和对各种计算设备编程。
这些元件308-312的数量、能力和/或容量可以根据计算机300是诸如服务器、高性能计算节点、机顶盒或台式计算机的固定计算设备,诸如平板计算设备、膝上型计算机或智能电话的移动计算设备,还是嵌入式计算设备而不同。它们的构成是已知的,因此将不再进一步描述。在各种实施例中,可以使用图3所示的不同元件或元件子集。例如,一些设备可以不包括图形处理器305,可以使用用作存储器和存储设备二者的统一存储器,或者可以在不使用传感器集线器的情况下耦合传感器。
图4示出了根据各种实施例的至少一个非暂时性计算机可读存储介质402的示例,其具有被配置为执行与先前所描述的计算设备102相关联的操作中的所有或选定的操作的指令。如图所示,至少一个非暂时性计算机可读存储介质402可以包括多个编程指令404。存储介质402可以表示本领域已知的广泛范围的持久存储介质,包括但不限于闪速存储器、动态随机存取存储器、静态随机存取存储器、光盘、磁盘等。编程指令404可以被配置为响应于编程指令404的执行而使得诸如计算机300或计算设备102的设备执行例如但不限于对图1所示的库模块120和其他模块146所描述的各种操作,或图2的过程200的操作。在替代实施例中,编程指令404可以设置在多个计算机可读存储介质402上。在替代实施例中,存储介质402可以是暂时的,例如,用编程指令404编码的信号。
返回参考图3,对于一个实施例,处理器302中的至少一个可以与具有计算逻辑322的存储器打包在一起,其中计算逻辑322被配置为实施对图1所示的库模块120和其他模块146所描述的各方面,或图2的过程200的操作。对于一个实施例,处理器302中的至少一个可以与具有计算逻辑322的存储器打包在一起,其中计算逻辑322被配置为实施对图1所示的库模块120和其它模块146所描述的各方面,或图2的过程200的操作,以形成系统级封装(SiP)。对于一个实施例,处理器302中的至少一个可以与具有计算逻辑322的存储器集成在同一管芯上,其中计算逻辑322被配置成实施对于图1所示的库模块120和其他模块146所描述的方面,或图2的过程200的操作。对于一个实施例,处理器302中的至少一个可以与具有计算逻辑322的存储器打包在一起,计算逻辑322被配置为实施图1所示的库模块120和其他模块146的方面或图2的过程200以形成片上系统(SoC)。对于至少一个实施例,SoC可以用于例如但不限于移动计算设备,例如可穿戴设备和/或智能电话。
用于执行上述技术的机器可读介质(包括非暂时性机器可读介质,诸如机器可读存储介质)、方法、系统和设备是本文公开的实施例的说明性示例。此外,上述交互中的其他设备可以被配置为执行各种公开的技术。
示例
示例1可以包括用于执行应用程序的计算设备,包括:一个或多个处理器;库模块,包括用于预取资源的预取引擎,由一个或多个处理器操作以用于:接收来自应用程序的对所述库模块的第一调用;至少部分地基于所述第一调用来访问第一资源;以及至少部分地基于第二资源的地址来将第一预取条目存储在所述预取引擎中,以准备用于服务来自所述应用程序的对所述库模块的第二调用,所述第二调用需要遍历所述库模块处的多个级。
示例2可以包括示例1的主题,其中所述计算设备还包括与所述一个或多个处理器中的处理器集成的高速缓存,其中所述库模块由所述一个或多个处理器进一步操作以用于:接收来自应用程序的所述第二调用;至少部分地基于第二调用而进入库模块的第一逻辑级;至少部分地基于第一预取条目而执行第一预取请求;进入所述库模块的低于第一逻辑级的第二逻辑级;以及至少部分地基于第一预取请求的结果从第二逻辑级访问高速缓存中的第二资源。
示例3可以包括示例1-2中任一项的主题,其中库模块是消息传递接口(MPI)库模块。
示例4可以包括示例1-3中任一项的主题,其中第一调用是通信调用类型,并且其中第二调用是通信调用类型。
示例5可以包括示例1-4中任一项的主题,其中第一调用是第一MPI_Send调用,并且其中第二调用是第二MPI_Send调用。
示例6可以包括示例2-5中任一项的主题,其中第一预取条目包括指向第二资源的地址的指针、距离值和预取类型,并且其中执行第一预取请求至少部分地基于指向第二资源的地址的指针、距离值和预取类型。
示例7可以包括示例6的主题,其中库模块由一个或多个处理器进一步操作以用于:确定第三资源的地址;并且至少部分地基于第三资源的地址、距离值和预取类型将第二预取条目存储在预取引擎中,以准备用于服务来自所述应用程序的对所述库模块的第三调用,所述第三调用需要遍历所述库模块处的多个级。
示例8可以包括示例7的主题,还包括共享存储器,其中库模块进一步由一个或多个处理器操作以用于:接收来自应用程序的第三调用;至少部分地基于第三调用而进入第一逻辑级;至少部分地基于第三调用来调用预取引擎;至少部分地基于第二预取条目而执行第二预取请求;遍历第一逻辑级和第二逻辑级之间的第三逻辑级;进入位于第三逻辑级之后的第二逻辑级;以及至少部分地基于所述第二预取请求从所述第二逻辑级访问高速缓存中的第三资源,其中所述第三资源的地址对应于所述共享存储器的区域。
示例9可以包括用于执行应用程序的计算机实现的方法,包括:由计算设备接收来自应用程序的在共享库处的第一调用;由所述计算设备至少部分地基于所述第一调用来访问第一资源;以及由所述计算设备至少部分地基于第二资源的地址来将第一预取条目存储在预取引擎中,以准备用于服务对所述共享库的第二调用,所述第二调用需要遍历所述共享库处的多个级。
示例10可以包括示例9的主题,还包括:由计算设备接收来自应用程序的在所述共享库处的第二调用;由所述计算设备至少部分地基于所述第二调用而进入所述共享库的第一逻辑级;由所述计算设备至少部分地基于所述第一预取条目来执行第一预取请求;由计算设备进入共享库的第二逻辑级;以及由所述计算设备至少部分地基于所述第一预取请求的结果,从所述第二逻辑级访问与计算设备的处理器集成的高速缓存中的第二资源。
示例11可以包括示例9-10中任一项的主题,其中共享库是消息传递接口(MPT)共享库。
示例12可以包括示例9-11中任一项的主题,其中第一调用是通信调用类型,并且其中第二调用是通信调用类型。
示例13可以包括示例9-12中任一项的主题,其中第一调用是MPI_Send调用,并且其中第二调用是MPI_Send调用。
示例14可以包括示例10-13中任一项的主题,其中第一预取条目包括指向第二资源的地址的指针,预取类型和距离值,并且其中执行第一预取请求至少部分地基于指向第二资源的地址的指针、预取类型和距离值。
示例15可以包括示例14的主题,还包括:由计算设备确定第三资源的地址;以及由所述计算设备至少部分地基于所述第三资源的地址、所述距离值和所述预取类型将第二预取条目存储在所述预取引擎中,以准备用于服务来自所述应用程序的对所述共享库的第三调用,所述第三调用需要遍历所述共享库处的多个级。
示例16可以包括示例15的主题,还包括:由计算设备接收来自所述应用程序的在所述共享库处的所述第三调用;由计算设备至少部分地基于第三调用而进入第一逻辑级;由所述计算设备至少部分地基于所述第三调用而调用所述预取引擎;由所述计算设备至少部分地基于所述第二预取条目而执行第二预取请求;由计算设备遍历第一逻辑级和第二逻辑级之间的第三逻辑级;由计算设备进入位于第三逻辑级之后的第二逻辑级;以及由所述计算设备至少部分地基于所述第二预取请求而从所述第二逻辑级访问高速缓存中的第三资源,其中第三资源的地址对应于共享存储器的区域。
示例17可以包括至少一个非暂时性计算机可读介质,其包含存储在其上的指令,响应于计算设备执行指令,指令使得计算设备:接收来自应用程序的在共享库处的第一调用;至少部分地基于第一调用来访问第一资源;以及至少部分地基于第二资源的地址将第一预取条目存储在预取引擎中,以准备用于服务对所述共享库的第二调用,所述第二调用需要遍历所述共享库处的多个级。
示例18可以包括示例17的主题,其中进一步使得所述计算设备:接收来自应用程序的在共享库处的所述第二调用;至少部分地基于第二调用而进入共享库的第一逻辑级;至少部分地基于第一预取条目而执行第一预取请求;进入共享库的第二逻辑级;以及至少部分地基于所述第一预取请求的结果,从所述第二逻辑级访问与所述计算设备的处理器集成的高速缓存中的第二资源。
示例19可以包括示例17-18中任一项的主题,其中共享库是消息传递接口(MPI)共享库。
示例20可以包括示例17-19中任一项的主题,其中第一调用是通信调用类型,并且其中第二调用是通信调用类型。
示例21可以包括示例17-20中任一项的主题,其中第一调用是MPI_Send调用,并且其中第二调用是MPI_Send调用。
示例22可以包括示例18-21中任一项的主题,其中第一预取条目包括指向第二资源的地址的指针、预取类型和距离值,并且其中使计算设备执行第一预取请求至少部分地基于指向第二资源的地址的指针、预取类型和距离值。
示例23可以包括示例22的主题,其中进一步使计算设备:确定第三资源的地址;以及至少部分地基于所述第三资源的地址、所述距离值和所述预取类型将第二预取条目存储在所述预取引擎中,以准备用于服务来自所述应用程序的对所述共享库的第三调用,所述第三调用需要遍历所述共享库处的多个级。
示例24可以包括示例23的主题,其中进一步使计算设备:接收来自所述应用程序的在所述共享库处的第三调用;至少部分地基于第三调用而进入第一逻辑级;至少部分地基于第三调用来调用预取引擎;至少部分地基于第二预取条目执行第二预取请求;遍历第一逻辑级和第二逻辑级之间的第三逻辑级;进入位于第三逻辑级之后的第二逻辑级;以及至少部分地基于所述第二预取请求从所述第二逻辑级访问高速缓存中的第三资源,其中所述第三资源的地址对应于共享存储器的区域。
示例25可以包括用于执行应用程序的计算设备,包括:用于接收来自应用程序的在共享库处的第一调用的模块;用于至少部分地基于所述第一调用来访问第一资源的模块;以及用于至少部分地基于第二资源的地址将第一预取条目存储在预取引擎中以准备用于服务对所述共享库的第二调用的模块,所述第二调用需要遍历所述共享库处的多个级。
示例26可以包括示例25的主题,还包括:用于接收来自所述应用程序的在所述共享库处的第二调用的模块;用于至少部分地基于所述第二调用来进入所述共享库的第一逻辑级的模块;用于至少部分地基于所述第一预取条目执行第一预取请求的模块;用于进入共享库的第二逻辑级的模块;以及用于至少部分地基于第一预取请求的结果而从第二逻辑级访问与计算设备的处理器集成的高速缓存中的第二资源的模块。
示例27可以包括示例25-26中任一项的主题,其中共享库是消息传递接口(MPI)共享库。
示例28可以包括示例25-27中任一项的主题,其中第一调用是通信调用类型,并且其中第二调用是通信调用类型。
示例29可以包括示例25-28中任一项的主题,其中第一调用是MPI_Send调用,并且其中第二调用是MPI_Send调用。
示例30可以包括示例26-29中任一项的主题,其中第一预取条目包括指向第二资源的地址的指针、预取类型和距离值,并且其中执行第一预取请求至少部分地基于指向第二资源的地址的指针、预取类型和距离值。
示例31可以包括示例30的主题,还包括:用于确定第三资源的地址的模块;以及用于至少部分地基于第三资源的地址、距离值和预取类型来将第二预取条目存储在预取引擎中以准备用于服务来自所述应用程序的对所述共享库的第三调用的模块,所述第三调用需要遍历所述共享库处的多个级。
示例32可以包括示例31的主题,还包括:用于接收来自所述应用程序的在所述共享库处的第三调用的模块;至少部分地基于第三调用而进入第一逻辑级的模块;至少部分地基于第三调用来调用预取引擎的模块;用于至少部分地基于所述第二预取条目执行第二预取请求的模块;用于遍历第一逻辑级和第二逻辑级之间的第三逻辑级的模块;用于进入位于第三逻辑级之后的第二逻辑级的模块;以及用于至少部分地基于第二预取请求从第二逻辑级访问高速缓存中的第三资源的模块,其中第三资源的地址对应于共享存储器的区域。
虽然为了描述的目的已经在这里示出和描述了一些实施例,但是为了实现相同的目的而计算出的各种替代和/或等同的实施例或实现可以代替所示和所描述的实施例而不脱离本公开的范围。本申请旨在涵盖本文讨论的实施例的任何修改或变化。因此,明显地意图是本文描述的实施例仅由权利要求来限制。
在公开内容记载“一个”或“第一”元件或其等同词的情况下,则这样的公开包括一个或多个这样的元件,既不要求也不排除两个或更多个这样的元件。此外,用于识别的元件的序数表示词(例如,第一、第二或第三)用于区分元件,并且不表示或暗示所需或有限数量的这些元件,它们也不表示这样的元件的特定位置或顺序,除非另有明确规定。
Claims (19)
1.一种用于执行应用程序的计算设备,包括:
一个或多个处理器;
库模块,包括多个逻辑级和预取引擎,所述预取引擎用于在所述多个逻辑级访问资源之前预取用于所述多个逻辑级的资源,其中所述预取引擎包括预取表,用于维护标识要预取的资源的一个或多个预取条目,当所述库模块被调用时,所述多个逻辑级由所述一个或多个处理器执行以用于:
接收来自应用程序的对所述库模块的第一调用;
至少部分地基于所述第一调用,遍历所述多个逻辑级的至少第一逻辑级以执行所述第一逻辑级;
在遍历所述第一逻辑级或所述第一逻辑级之后的第二逻辑级时,确定所述第一调用是否是预取调用类型,并且如果所述第一调用是预取调用类型,确定在所述预取引擎的预取表中是否存在第一资源的预取条目;
当所述第一调用是预取调用类型,并且预取第一资源的预取条目在所述预取引擎中,预取所述第一资源;
当遍历所述第二逻辑级或所述第二逻辑级之后的第三逻辑级时,至少部分地基于所述第一调用来访问所述第一资源;以及
当所述第一调用是预取调用类型时,在对所述第一资源的访问中,利用第二资源的地址来更新所述预取引擎中的所述预取条目以得到更新的预取条目,以便在触发对所述库模块的第二资源的事件访问中,准备服务第二调用,其中所述第二调用来自所述应用程序的第一调用之后的对所述库模块的调用。
2.根据权利要求1所述的计算设备,其中,所述计算设备还包括与所述一个或多个处理器中的处理器集成的高速缓存,其中,所述库模块由所述一个或多个处理器执行以用于:
接收来自所述应用程序的所述第二调用;
至少部分地基于所述第二调用遍历所述第一逻辑级以执行所述第一逻辑级;
在遍历所述第一逻辑级时,至少部分地基于所述更新的预取条目将所述第二资源预取到所述高速缓存中;
遍历所述第二逻辑级以执行所述第二逻辑级;以及
在遍历所述第二逻辑级时,访问被预取到所述高速缓存中的所述第二资源。
3.根据权利要求2所述的计算设备,其中,所述库模块是消息传递接口MPI库模块。
4.根据权利要求1-3中任一项所述的计算设备,其中,所述第一调用是通信调用类型,并且其中,所述第二调用是通信调用类型。
5.根据权利要求4所述的计算设备,其中,所述第一调用是第一MPI_Send调用,并且其中,所述第二调用是第二MPI_Send调用。
6.根据权利要求2-3中任一项所述的计算设备,其中,所述更新的预取条目包括指向所述第二资源的所述地址的指针、距离值和预取类型,并且其中,预取所述第二资源是至少部分地基于指向所述第二资源的所述地址的所述指针、所述距离值和所述预取类型的。
7.根据权利要求6所述的计算设备,其中,所述库模块由所述一个或多个处理器执行以用于:
对所述第二资源访问中,确定第三资源的地址;以及
至少部分地基于所述第三资源的所述地址,更新所述预取引擎中的所述预取条目以得到进一步更新的预取条目,以便在触发对所述库模块的第三资源的事件访问中,准备服务第三调用,其中所述第三调用来自所述应用程序的对所述库模块的调用。
8.根据权利要求7所述的计算设备,还包括共享存储器,其中,所述库模块由所述一个或多个处理器执行以用于:
接收来自所述应用程序的所述第三调用;
至少部分地基于所述第三调用,遍历所述第一逻辑级以执行所述第一逻辑级;
在遍历所述第一逻辑级时,至少部分地基于所述进一步更新的预取条目将所述第三资源预取到所述高速缓存中;
遍历所述第三逻辑级以执行所述第三逻辑级;
在遍历所述第三逻辑级时,访问预取到所述高速缓存中的所述第三资源。
9.一种用于执行应用程序的计算机实现的方法,包括:
由计算设备的共享库接收来自应用程序的第一调用,所述共享库具有多个逻辑级和预取引擎,当所述共享库被调用时,所述预取引擎在所述多个逻辑级访问资源之前预取用于所述多个逻辑级的资源,其中所述预取引擎包括预取表,用于维护标识要预取的资源的一个或多个预取条目;
至少部分地基于所述第一调用,由所述共享库遍历所述多个逻辑级的至少第一逻辑级以执行所述第一逻辑级;
在遍历所述第一逻辑级或所述第一逻辑级之后的第二逻辑级时,由所述共享库确定所述第一调用是否是预取调用类型,并且如果所述第一调用是预取调用类型,确定在所述预取引擎的预取表中是否存在第一资源的预取条目;
当所述第一调用是预取调用类型,并且预取第一资源的预取条目在所述预取引擎中,由所述共享库预取所述第一资源;
当遍历所述第二逻辑级或所述第二逻辑级之后的第三逻辑级时,由所述共享库至少部分地基于所述第一调用来访问所述第一资源;以及
当所述第一调用是预取调用类型时,在对所述第一资源的访问中,由所述共享库至少部分地基于第二资源的地址来更新所述共享库中所述预取引擎中的所述预取条目以得到更新的预取条目,以便在触发对所述第二资源的事件访问中,准备服务第二调用,其中所述第二调用来自所述应用程序的所述第一调用之后的调用。
10.根据权利要求9所述的方法,还包括:
由所述共享库接收来自所述应用程序的所述第二调用;
由所述共享库至少部分地基于所述第二调用遍历所述第一逻辑级以执行所述第一逻辑级;
在遍历所述第一逻辑级时,由所述共享库至少部分地基于所述更新的预取条目将所述第二资源预取到所述计算设备的高速缓存中;
由所述共享库遍历所述第二逻辑级以执行所述第二逻辑级;以及
由所述共享库从所述第二逻辑级访问所述高速缓存中的所述第二资源。
11.根据权利要求10所述的方法,其中,所述共享库是消息传递接口MPI共享库。
12.根据权利要求9-11中任一项所述的方法,其中,所述第一调用是通信调用类型,并且其中,所述第二调用是通信调用类型。
13.根据权利要求12所述的方法,其中,所述第一调用是MPI_Send调用,并且其中,所述第二调用是MPI_Send调用。
14.根据权利要求10-11中任一项所述的方法,其中,所述更新的预取条目包括指向所述第二资源的所述地址的指针、预取类型和距离值,并且其中,预取所述第二资源是至少部分地基于指向所述第二资源的所述地址的所述指针、所述预取类型和所述距离值的。
15.根据权利要求14所述的方法,还包括:
在对所述第二资源的访问中,由所述共享库确定第三资源的地址;以及
由所述共享库至少部分地基于所述第三资源的所述地址更新所述预取引擎中的所述预取条目以得到进一步更新的预取条目,以便在触发对所述第三资源的事件访问中,准备服务第三调用,其中所述第三调用来自所述应用程序的所述第二调用之后的对所述共享库的调用。
16.根据权利要求15所述的方法,还包括:
由所述共享库接收来自所述应用程序的所述第三调用;
由所述共享库至少部分地基于所述第三调用而遍历所述第一逻辑级以执行所述第一逻辑级;
在遍历所述第一逻辑级时,由所述共享库至少部分地基于所述进一步更新的预取条目,将第三资源预取到所述高速缓存中;
由所述共享库遍历所述第三逻辑级以执行所述第三逻辑级;
在遍历所述第三逻辑级时由所述共享库访问所述高速缓存中的第三资源。
17.一种用于执行应用程序的计算设备,包括:用于实现权利要求9-16中任一项所述方法的模块。
18.至少一种非暂时性计算机可读介质,包括存储在其上的指令,响应于计算设备执行所述指令,所述指令使所述计算设备执行权利要求9-16中任一项所述的方法。
19.一种计算设备,包括存储有指令的存储器以及处理器,响应于所述处理器执行所述指令,所述指令使所述处理器执行权利要求9-16中任一项所述的方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/RU2015/000180 WO2016153378A1 (en) | 2015-03-26 | 2015-03-26 | Cross-level prefetch for shared multi-level libraries |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107408059A CN107408059A (zh) | 2017-11-28 |
CN107408059B true CN107408059B (zh) | 2021-09-28 |
Family
ID=56978232
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580076993.3A Active CN107408059B (zh) | 2015-03-26 | 2015-03-26 | 共享多级库的跨级预取 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10664272B2 (zh) |
EP (1) | EP3274829A4 (zh) |
CN (1) | CN107408059B (zh) |
WO (1) | WO2016153378A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11573900B2 (en) * | 2019-09-11 | 2023-02-07 | Intel Corporation | Proactive data prefetch with applied quality of service |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103810133A (zh) * | 2012-11-05 | 2014-05-21 | 国际商业机器公司 | 动态共享读缓冲器管理 |
CN103984640A (zh) * | 2014-05-14 | 2014-08-13 | 华为技术有限公司 | 实现数据预取方法及装置 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6298440B1 (en) * | 1994-04-22 | 2001-10-02 | Microsoft Corporation | Method and system for providing multiple entry point code resources |
US6874001B2 (en) * | 2001-10-05 | 2005-03-29 | International Business Machines Corporation | Method of maintaining data consistency in a loose transaction model |
US8996821B1 (en) * | 2004-12-15 | 2015-03-31 | Emc Corporation | Methods and systems for providing resource sharing through file descriptor isomorphism |
US8516494B2 (en) * | 2008-06-16 | 2013-08-20 | International Business Machines Corporation | Executing an application on a parallel computer |
US8443150B1 (en) * | 2008-11-04 | 2013-05-14 | Violin Memory Inc. | Efficient reloading of data into cache resource |
US8140769B2 (en) * | 2009-04-20 | 2012-03-20 | Oracle America, Inc. | Data prefetcher |
US8539456B2 (en) * | 2009-06-30 | 2013-09-17 | Intel Corporation | Automatic conversion of MPI source code programs into MPI thread-based programs |
US9110806B2 (en) * | 2010-03-10 | 2015-08-18 | Microsoft Technology Licensing, Llc | Opportunistic page caching for virtualized servers |
US8977819B2 (en) | 2010-09-21 | 2015-03-10 | Texas Instruments Incorporated | Prefetch stream filter with FIFO allocation and stream direction prediction |
US8584141B2 (en) * | 2011-01-17 | 2013-11-12 | International Business Machines Corporation | Data communications in a parallel active messaging interface of a parallel computer |
US9519530B2 (en) * | 2012-05-30 | 2016-12-13 | Red Hat, Inc. | Detecting conflicting operations and providing resolution in a tasking system |
US9569613B2 (en) * | 2014-12-23 | 2017-02-14 | Intel Corporation | Techniques for enforcing control flow integrity using binary translation |
US10614210B2 (en) * | 2015-07-31 | 2020-04-07 | Digital Guardian, Inc. | Systems and methods of protecting data from injected malware |
-
2015
- 2015-03-26 EP EP15886609.5A patent/EP3274829A4/en not_active Withdrawn
- 2015-03-26 CN CN201580076993.3A patent/CN107408059B/zh active Active
- 2015-03-26 US US15/553,519 patent/US10664272B2/en active Active
- 2015-03-26 WO PCT/RU2015/000180 patent/WO2016153378A1/en active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103810133A (zh) * | 2012-11-05 | 2014-05-21 | 国际商业机器公司 | 动态共享读缓冲器管理 |
CN103984640A (zh) * | 2014-05-14 | 2014-08-13 | 华为技术有限公司 | 实现数据预取方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
EP3274829A4 (en) | 2018-11-21 |
US10664272B2 (en) | 2020-05-26 |
EP3274829A1 (en) | 2018-01-31 |
CN107408059A (zh) | 2017-11-28 |
WO2016153378A1 (en) | 2016-09-29 |
US20180032339A1 (en) | 2018-02-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9760386B2 (en) | Accelerator functionality management in a coherent computing system | |
KR101817397B1 (ko) | 하나의 아키텍처의 코드 모듈이 다른 아키텍처의 라이브러리 모듈을 사용할 수 있게 하는 아키텍처 간 호환성 모듈 | |
JP7483950B2 (ja) | バイナリ変換を実行するためのシステム及び方法 | |
US9886385B1 (en) | Content-directed prefetch circuit with quality filtering | |
US20170185528A1 (en) | A data processing apparatus, and a method of handling address translation within a data processing apparatus | |
US11016695B2 (en) | Methods and apparatus to perform memory copy operations | |
EP3757860B1 (en) | Providing improved efficiency for metadata usages | |
US9239682B2 (en) | I/O hint framework for Server Flash Cache | |
US10324760B2 (en) | Leases for blocks of memory in a multi-level memory | |
US10423563B2 (en) | Memory access broker system with application-controlled early write acknowledgment support and identification of failed early write acknowledgment requests to guarantee in-order execution of memory requests of applications | |
EP3571595B1 (en) | Saving/restoring guarded storage controls in a virtualized environment | |
TW201941197A (zh) | 混合式記憶體系統 | |
CN110209354B (zh) | 用于处理数据的方法、装置、设备和介质 | |
US11093245B2 (en) | Computer system and memory access technology | |
US20100161914A1 (en) | Autonomous memory subsystems in computing platforms | |
CN107408059B (zh) | 共享多级库的跨级预取 | |
US8719542B2 (en) | Data transfer apparatus, data transfer method and processor | |
JP6022604B2 (ja) | マルチバンクキャッシュメモリ | |
CN115269199A (zh) | 数据处理方法、装置、电子设备及计算机可读存储介质 | |
US9460011B1 (en) | Memory reference estimation method and device based on improved cache | |
CN112602068B (zh) | 用于幽灵缓解的数据高速缓存隔离 | |
US11074200B2 (en) | Use-after-free exploit prevention architecture | |
WO2019104981A1 (zh) | 数据访问方法、电子装置及可读存储介质 | |
CN104166633B (zh) | 用于存储器访问保护的方法和系统 | |
US20230333769A1 (en) | Shared memory protection method for securing mmio commands |
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 |