CN104756078A - 处理资源分配 - Google Patents

处理资源分配 Download PDF

Info

Publication number
CN104756078A
CN104756078A CN201380051671.4A CN201380051671A CN104756078A CN 104756078 A CN104756078 A CN 104756078A CN 201380051671 A CN201380051671 A CN 201380051671A CN 104756078 A CN104756078 A CN 104756078A
Authority
CN
China
Prior art keywords
processing unit
data
virtual function
calling
instruction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201380051671.4A
Other languages
English (en)
Other versions
CN104756078B (zh
Inventor
唐纳德·凯文·卡梅伦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Publication of CN104756078A publication Critical patent/CN104756078A/zh
Application granted granted Critical
Publication of CN104756078B publication Critical patent/CN104756078B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/78Architectures of resource allocation
    • H04L47/788Autonomous allocation of resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/22Microcontrol or microprogram arrangements
    • G06F9/24Loading of the microprogram
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5033Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering data affinity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/133Protocols for remote procedure calls [RPC]

Abstract

于一实施例中,公开一处理资源分配的方法。方法可包括识别映射至具有一预选数据地址的数据的一指令。方法也可以包括根据预选数据地址,判定是否从一第一处理单元传输指令的一呼叫至一第二处理单元。

Description

处理资源分配
交叉引用相关申请
本案主张美国临时案的利益,美国临时案的序列号为61/684,813并提交于2012年8月20日,其全部的内容被引用并入本文的参考文献。
技术领域
本案为关于处理资源分配的领域。
背景技术
依据示范性的方案(Exemplary Scenario),一电脑系统可以是用于各种数据处理应用的实施的有用工具。然而当一电脑程序及数据储存范例(Paradigm)持续变得越来越复杂,电脑执行相对地复杂的程序以及处理相对地大量的数据的能力采用一迅速和有效的方式渐渐地变得更加重要。因此,有效地分配处理资源的能力,例如在一多处理架构(Multi-ProcessorArchitecture)中,对于现代以及未来电脑系统可是一不可或缺的工具。
发明内容
此概述的提供是为了介绍在一简化形式中一概念的选择,其在以下的实施方式中进一步地描述。此概述并非旨在识别专利标的的关键或必要特征,也不是旨在用于帮助在确定专利标的的范围。
于一实施例中公开一处理资源分配方法。所述方法可包含识别映射至具有一预选数据地址(Preselected Data Location)的一指令(Instruction)。所述方法还可包含根据预选数据地址,确定是否从一第一处理单元(Processing Unit,PU)传输指令的一呼叫(Call)至一第二处理单元。
此外,于一实施例中公开一处理资源分配方法,其中所述方法可包含识别映射至具有一预选数据地址的一指令。所述方法还可包含以一处理资源分配元件(Processing Resource Allocation Device)确定是否从一第一处理单元传输指令的一呼叫至一第二处理单元。
再者,于一实施例中公开一电脑可读取媒体(Computer-ReadableMedium),其中电脑可读取媒体储存一组指令,当其被执行时,引起一电脑系统执行一处理资源分配的方法。所述方法可包含识别映射至具有一预选数据地址的一指令。所述方法还可包含根据预选数据地址,确定是否从一第一处理单元传输指令的一呼叫至一第二处理单元。
附图说明
附图被纳入以及形成此说明书的一部分,附图绘示本技术的实施例,以及附图结合实施方式用于解释于以下所讨论的原理。
图1是依据一实施例的示范性的处理架构的方块图。
图2是依据一实施例的示范性的分散性处理架构的方块图。
图3是依据一实施例的示范性的进步分析的示意图。
图4是依据一实施例的示范性的处理资源分配的方法流程图。
图5是依据一实施例的示范性的处理资源分配的范例的方块图。
图6是依据一实施例的第一示范性的呼叫的传输的范例的方块图。
图7是依据一实施例的示范性的存储器分配的范例的方块图。
图8是依据一实施例的一第二示范性呼叫的传输范例的方块图。
图9是依据一实施例的示范性的处理单元的识别范例的方块图。
图10A是依据一实施例的示范性的重定向呼叫的识别范例的方块图。
图10B是依据一实施例的示范性的目标码的执行范例的方块图。
图10C是依据一实施例的第三示范性的呼叫的传输范例的方块图。
图11是依据一实施例的示范性的呼叫传输的判定范例的方块图。
图12是依据一实施例的示范性的存储器的分割范例的方块图。
图13是依据一实施例的示范性的处理资源分配系统的方块图。
图14是依据一实施例的示范性的重定向分析的流程图。
图15是依据一实施例的示范性的全域代码程序库范例的方块图。
图16是依据一实施例的第四示范性的呼叫的传输范例的方块图。
图17是依据一实施例的第五示范性的呼叫的传输范例的方块图。
图18是依据一实施例的第六示范性的呼叫的传输范例的方块图。
图19是依据一实施例的示范性的代码的注入范例的方块图。
图20是依据一实施例的示范性的代码的选择范例的方块图。
图21是依据一实施例的示范性的虚拟函数表的取代范例的方块图。
图22是依据一实施例的示范性的虚拟函数表的修正范例的方块图。
图23是依据一实施例的示范性的修正指令的选择范例的方块图。
图24是依据一实施例的第一示范性的虚拟函数的重新映射范例的方块图。
图25是依据一实施例的示范性的呼叫位置的修正范例的方块图。
图26是依据一实施例的第二示范性的虚拟函数的重新映射范例的方块图。
图27是依据一实施例的示范性的自动呼叫的传输范例的方块图。
图28是依据一实施例的示范性的存储器的加载范例的方块图。
图29是依据一实施例的示范性的数据的传递范例的方块图。
图30是依据一实施例的示范性的指标的重新映射范例的方块图。
图31是依据一实施例的示范性的远端程序呼叫的传输范例的方块图。
图32是依据一实施例的示范性的数据的储存范例的方块图。
图33是依据一实施例的示范性的远端程序呼叫的构成范例的方块图。
图34是依据一实施例的示范性的执行常式的效能范例的方块图。
图35是依据一实施例的示范性的执行常式的传输范例的方块图。
图36是依据一实施例的示范性的电脑系统的方块图。
图37是依据一实施例的示范性的指令执行系统的方块图。
在本说明书中提及的附图除非特别指出,否则是不可以理解为按比例绘制,这样的附图于实际上仅为示范性的。
具体实施方式
关于本技术将以实施例并参照所附附图,进行详细说明与讨论。尽管本技术将结合各种实施例进行描述,但这些实施例并不限制本技术的技术。相反地,本技术被理解为包括各式各样的替代方案、修改及等同物。
此外,其指出,为了提供彻底理解本技术,于本文中阐述了许多具体细节。其进一步地指出,这些具体细节于实际上仅为示范性的,本技术可以在没有这些具体细节的情况下实施。在其他情况下,为了不混淆本技术,没有详细描述公知的方法、过程、组件、电路以及系统。
再者,其指出,在整个描述中,利用表明某些动作(Action)或处理(Process)的用语(Term)的发生可以指电脑系统或类似的电子计算装置的动作和处理。例如,电脑系统或类似的电子计算装置操作在电脑系统的暂存器或存储器中代表为物理(如电子)量的数据,并且将其转换成在电脑系统的暂存器或存储器或其他这类的信息储存、传输或显示装置中代表为物理量(如电子)量的其他数据。本技术还非常适合于其他类型的电脑系统的使用,例如光学及机械的电脑。
因此,其指出,本技术可在电脑可执行程序的一般背景内容(Context)下所描述,例如由电脑所执行的程序模块。这类的程序模块可包括例如常式(Routine)、程序、物件(Object)、组件(Component)、数据结构等,其执行特定任务或实施特定抽象数据类型。此外,本技术可在分散式计算环境所实行。在分散式计算环境中的任务由通过通讯网络所连结的远端处理装置所执行。在分散式计算环境中,程序模块可位于区域及远端数据储存媒体(Local and Remote Data Storage Media)以及电脑存储器装置两者。
前述尽管如此,其进一步地指出,表明某些动作或处理的用语的发生可以指手动的动作或处理。实际上,本技术的各种实施例实施一或多个电脑实施的动作或处理伴随着一或多个手动的动作或处理。再者,一或多个电脑实施的动作或处理可自动地发生,例如对(1)特定的用户输入、(2)合格因素或参数或(3)先前动作或处理的发生以作出响应。
此外,其指出,”耦接(coupled with)”的术语(Terminology)并不一定表示一个直接的物理关系。例如当描述两组件为彼此”耦接”,其可能有一或多个其他部件、材料等(如黏着剂或信号/传输线)于两组件间耦合、附着、结合等。因此,除非另有说明,"耦接"的术语应给予其最广泛的可能的含义。
再者,”通讯地相关联(communicatively associated with)”的术语并不一定表示一个直接的物理关系。例如当描述两组件为彼此"通讯地相关联",这些组件可被配置以为互相通讯,例如无线及/或有线的通讯协议(Communication Protocol)。因此,除非另有说明,”通讯地相关联”的术语应给予其最广泛的可能的含义。
另外,”范例(Paradigm)”的用语不应被理解为表明所引用的标的的先前已知的知识。相反地,”范例”的用语可以理解为,例如作为简单地参考依据本技术的一实施例所呈现的例子、配置、或模型。实际上,除非另有说明,”范例”的用语应给予其最广泛的可能的含义。
此外,为了清楚起见,其指出,”程序(program)”的用语可以指为,例如演算法(Algorithm)或一系列指令,或为了一特定的任务的效能而提供代码指令的行为。尽管这些示范性的定义,除非另有说明,”程序”的用语应给予其最广泛的可能的含义。
其进一步地指出,”处理(Process)”的用语可以指为,例如借以执行程序(或演算法)的活力(Activity),或正在执行的电脑程序的特定情况。可替代地,”处理”的用语可简单地指为,例如采取一系列的动作以实现一个结果,或可替代地,为了实现一个结果而执行一系列操作的动作。尽管这些示范性的定义,除非另有说明,”处理(process)”的用语应给予其最广泛的可能的含义。
最后,本技术的”电脑可读取媒体(Computer-Readable Medium)”可被解释为,例如作为指一暂时性(Transitory)或非暂时性(Non-Transitory)的电脑可读取媒体。然而,在任何的时候都不应将电脑可读取媒体的术语解释为仅包括一或多个信号(例如一或多个暂时的、传播的信号)本身。再者,在"电脑可读取媒体"的术语被解释为"非暂时性的电脑可读取媒体"的情况下,所得到的术语"电脑可读取媒体"应该解释为包括所有的电脑可读取媒体,有唯一例外为仅包括一或多个信号(例如一或多个暂时的、传播的信号)本身的电脑可读取媒体。
I.概述
依据一示范性的方案,处理器(Processor)在处理架构共享存储器(如:随机存取存储器(Random Access Memory,RAM)或二级(Level 2,L2)快取存储器(Cache))内,及每一个处理器有它自己的快取存储器与它自己的存储器视图(View of the Memory)。每一个处理器被程序化为一单一处理器。因此,一多处理器(multi-processor)架构基本上使用单一处理器的方法。而且,实施的通讯机构是通过共用存储器存在于处理器之间。其指出,采用这种方法的许多问题可能产生。例如,可能很难决定于处理器之间通讯的执行的优先顺序,于处理器间尝试传输少量的信息可能不是有效的,并且可能会经历到快取存储器一致性(Cache Coherency)问题。
依据一示范性的方案,快取存储器一致性问题可能是特别麻烦的。例如,每个处理器查看数据的相同视图可能是很重要的,除非数据实际上被保存在许多不同的地方。特别是,在快取存储器架构内,处理器将写入其自己的快取存储器,其可以被称为,例如一级(Level 1,L1)快取存储器。而且由于L1快取存储器不是共享存储器,则其他的处理器将无法查看写入的是什么。因此,在其他处理器能查看到数据的变化之前,数据的变化被传达给第二级快取存储器(或L2快取存储器),然后再送入每一个其他的处理器的各自的L1快取存储器。因此,当实施一个数据的变化时,这种变化将"污染(Dirty)"快取存储器线路,在这种情况下,发送一个信号以让每个处理器知道暂时不使用这个数据。因此,其指出,在不同的L1快取存储器中储存相同数据值的多个副本(Copy)会导致快取存储器一致性问题。
依据对于这样的快取存储器一致性问题的一示范性的解决方案,可以实施互斥(Mutual Exclusion,Mutex)锁定(Lock)。例如,当一第一处理器打算写入某一数据变量(Variable),数据变量变成锁定的,使得当数据变量处于锁定状态时没有其他处理器能够写入至其中。第一处理器随后能写锁定的数据变量,然后将其解锁,使得新的数据值被发送至L2快取存储器,然后送入每一个剩余的L1快取存储器。然而,关于这个示范性的解决方案可能发生问题,因为在示范性的解决方案中这种类型的系统可能不能很好地扩展。例如,当实施的架构包括可能涉及相当数量的额外硬件(ExtraHardware)的一百个处理器时,试图实施一互斥锁定(Mutex Lock)。
除了上述内容,其指出,以各式各样的效能为主的方法的目标是最小化移动某物所花的时间,其取决于什么正在被移动。依据上述的示范性的方案,其是被移动的数据;实际上,当代码是固定的(以及提供指令快取存储器(Instruction Cache)其可被填满并随后再被填满)时,移动代码未必是必要的。依据本技术的一实施例,然而,数据本身不移动,其有助于解决上述问题。例如本技术的一实施例提供一个混合式电脑架构(HybridComputer Architecture),其通过最小化整体数据移动(Data Movement)及快取存储器一致性的要求,而能够更好地并行处理(Parallel Processing)及性能。其还提供信息至软件以作为如何引导背景内容切换(Context Switch),及实施代码连结的新方法以便利用这一优点。
依据一实施例,实施使用"漂移线程(Wandering Threads)"的技术。这种实施方式的目标是具有在区域快取存储器外工作以及最小化快取存储器未命中(Cache Miss)的处理器。这种技术可以在如处理使用中央处理单元(CPU)紧密结合于存储器的架构的一多核心(Multi-core/Many-core)的非均匀存储器存取(Non-Uniform Memory Access,NUMA)之中被实施。再者,在处理架构具有一未定义的全域地址空间(Global Address Space)的情况下,所述机制能伴随着预定义、单一线程(Single-Threaded)的代码被采用以在无需修正下而达到更好的效能。因此,其指出,这种方法可以被实施,使得其支持先前存在的代码,并使用非均匀存储器存取的机器(其没有快取存储器一致性),其具有相对高的核心计数及其中的存储器和处理器采用"芯片堆叠(Die Stacking)"所建立。
II.示范性的架构、方法及范例
本技术的各种示范性的实施例现在将阐述。其指出,然而,本技术不限于这些示范性的实施例,并且本技术还包括示范性的实施例及如本文所描述的实施的明显变化。其进一步地指出,各种众所周知的元件一般未在附图中绘示出,以避免不必要地混淆本文所讨论的原理,但是这种众所周知的元件可以由本领域的技术人员来实施以实践本技术的各种的实施例。
A.示范性的处理架构
现在将探讨一些示范性的处理架构。其指出,然而,本技术不限于这些示范性的处理架构,并且可以实施其它处理架构的技术。
在一示范性的方案中,电脑系统的处理器的发展可以是独立于存储器的发展及不同集成电路制程(IC Process)的使用的两者。因此,一个显著数目的电脑架构可被集中于管理在存储器芯片及处理单元之间移动的数据及代码。这可能会导致在多层的快取存储器中,其持有数据的暂时副本被移动。由于集成电路制程缩放的特性,处理器速度可能达到平稳状态或"达到最高点(Top Out)",且单一核心效能可能为一平均物理距离横跨在一操作期间以移动数据及代码的函数(Function)。由于增加核心的尺寸未必是有益的,处理器在每个处理单元/半导体的封装可内建多个核心,其中此类多核心共享存取被包括的存储器,如图1所示。
请参阅图1,为绘示依据一实施例的示范性的处理架构100。示范性的处理架构100包括一或多个处理单元(Processing Unit,PU),例如示范性的处理单元110、120。每个处理单元包括至少一处理核心,例如示范性的处理核心111、121,其中每一这些处理核心可被称为,例如一中央处理单元(CPU)。一或多个这些处理单元亦可选择地包括一或多个附加的处理核心,例如附加的处理核心112-114、122-124。其指出,每个处理核心被配置以处理电子信息,例如当电脑可读取指令以电子数字化信号(DigitalSignal)的形式发送至这些核心。再者,一实施例提供预定义实施的处理核心或扩张处理器(Augmented Processor)能够运行顺序代码(如:x86、ARM或MIPS处理器)。
另外,在一实施例中,一或多个这些处理单元,其每个包括至少一快取存储器单元(Cache Memory Unit),例如示范性的快取存储器单元115、125。每个这样的快取存储器单元通讯地耦合与包括在相同处理单元内的处理核心,或每个这样的快取存储器单元与包括在相同处理单元内的处理核心为相关联。再者,每个这些快取存储器单元被配置以储存电子信息,例如电子数字化信息代表数据及电脑可读取指令。例如,在一个实施方案中,不同的电脑可读取指令从一外部资源以电子数字化信息的形式传输至每个示范性的处理单元110、120。随后分别地在示范性的处理单元110、120接收这些指令,所接收的指令分别地储存在示范性的快取存储器单元115、125。随后,在相同的处理单元内的处理核心作为一特定的快取存储器单元,其可存取储存于这样的快取存储器单元内的数据或指令,其可根据所存取的数据以执行这些指令,以及其可返回一些处理结果至快取存储器单元,其中这样的结果将被储存。
因此,根据各种实施例,多个处理单元被实施。其指出,一实施的处理单元或一些其构成零组件(Constituent Component),其可包括在一集成电路(Integrated Circuit,IC)的芯片或封装。其进一步地指出,然而,本技术不限于集成电路的芯片或封装的实施。
请再参阅图1,每个处理单元通讯地相关联或耦合于一总线(Bus)130(如:数据/地址总线)。在一实施例中,总线130(及/或连结示范性的处理架构100的各种组件的一或多个其他物理传输线)包括印刷电路板(Printed Circuit Board,PCB)的轨道(Track),例如一在芯片外的印刷电路板轨道。总线130通讯地相关联或耦合于一或多个存储器控制器(MemoryController),例如示范性的存储器控制器140、150。再者,每个这些存储器控制器通讯地相关联或耦合于一或多个存储器单元(Memory Unit),例如示范性的存储器单元141-144、151-154。其指出,一或多个这些存储器单元可包括如随机存取存储器(Random Access Memory,RAM),诸如动态随机存取存储器(Dynamic RAM,DRAM)。
在一示范性的实施,配置一或多个存储器单元以储存指令及/或数据,并且配置一或多个存储器控制器140、150以管理往返存储器单元的信息流。所述的一或多个存储器单元,如示范性存储器单元141-144、151-154。所述的存储器控制器140、150,如示范性的存储器控制器140、150。当指令及/或数据从这些存储器单元被发送至一或多个前述的处理单元,存储器控制器被配置在这些存储器单元中以接收这类的信息,并且存储器控制器将信息沿着总线130发送至上述的处理单元。
请再参阅图1所绘示的示范性的处理架构100,一示范性的方案提供此种架构对于各种的通讯通道的任意操作及争夺(Contention)因一长传输路径而受影响。因此,一个实施例采取最小化一核心与其数据及代码之间的距离、最小化核心之间的争夺以及最小化代码及数据的移动的方式,以提供核心及存储器的重新配置。尽管上述在一单一集成电路制程可能是困难的,其指出,"芯片堆叠"集成电路的能力使上述更容易实现,从而提供一架构,如图2所示,其中共享存储器总线被一网络(Network)所取代,其是无瓶颈的,其中从多个存储器单元之中的每一片存储器具有直接地相关联的处理器,以及其中一中央处理单元可具有多个处理核心。
为了进一步说明,并请参阅图2,依据一实施例所绘示的一示范性的分散式处理架构200。示范性的分散式处理架构(Distributed ProcessingArchitecture,DPA)200包括多个处理单元,如示范性的处理单元210、220、230,其中这些处理单元可随意地以一”芯片堆叠的”配置排列。例如,其指出,“芯片堆叠"可以被定义,例如堆叠多个组件(如半导体芯片)在位于单一半导体封装内的一个其他组件之上的处理。因此,一实施例提供堆叠两个或多个实施的处理单元在一个其他处理单元之上,并且在其内容纳这些堆叠的处理单元,例如一单一半导体封装嵌入在一印刷电路板上。
在一实施例中,实施的处理单元通讯地相关联或耦合于一网络240,其中配置网络240用以发送往返数据处理单元的信息。在一实施例中,网络240可以是例如区域及/或远端地定位的电脑及服务器(Server)的分散式网络。其指出,然而,本技术不限于任何特定类型的网络。
请再参阅图2,每个实施的处理单元包括至少一中央处理单元,例如示范性之中央处理单元211、221及231,其中如当电脑可读取指令以电子数字化信号的形式发送至中央处理单元的时候,中央处理单元被配置用以处理电子信息。一实施例提供预定义实施之中央处理单元或扩张处理器能够运行顺序代码(如:x86、ARM或MIPS处理器)。每个实施的处理单元亦包括至少一随机存取存储器单元(RAM Unit)(如一动态随机存取存储器单元),例如示范性的随机存取存储器单元212、222及232,其中被包括之中央处理单元通讯地相关联或耦合于定位于其各自的处理单元内的随机存取存储器单元。其指出,每个实施的随机存取存储器单元被配置以储存指令及数据,其可通过其各自的中央处理单元检索或存取。
再者,一实施例提供全域地映射一或多个这些随机存取存储器单元,使得储存在这些被全域地映射的随机存取存储器单元的信息可通过位于不同的处理单元之中央处理单元存取。举例说明,其指出,随机存取存储器212通讯地相关联或耦合于中央处理单元211,这两者都位于相同的处理单元(处理单元210)内,使得中央处理单元能检索或存取储存于随机存取存储器212内的信息。此外,依据一示范性的实施,随机存取存储器212是全域地映射,使得关于随机存取存储器212,定位于不同处理单元之中央处理单元221、231,亦能检索及存取储存在随机存取存储器212的信息。在某些随机存取存储器的存在为一个以上处理单元的情况下,这样的随机存取存储器可被称为”共享随机存取存储器(Shared RAM)”。然而,一个别的处理单元的随机存取存储器可被分割(Partition),使得部分或全部的个别的处理单元的随机存取存储器专用于这样的处理单元。再者,一”共享存储器单元(Shared RAM Unit)”可指如在一特定的处理单元中不论其是否共享的所有的随机存取存储器。
另外,请再参阅图2,每个处理单元包括一快取存储器单元,例如示范性的快取存储器单元213、223及233,其中这样的快取存储器单元为通讯地相关联或耦合于位于其各自的处理单元之中央处理单元及随机存取存储器的两者,以及其中这样的快取存储器单元可被配置以从事如存储器管理及/或网络处理。事实上,在一实施例中,位于一特定处理单元(Specific PU)内之中央处理单元、随机存取存储器及快取存储器单元被配置以通过如一硅穿孔(Through-Silicon-Via,TSV)、宽广的输入/输出(Wide-Input/Output,Wide-IO)(或单芯片(On-Chip))的通讯架构以互相通讯。其指出,然而,本技术不限于这个特定的通讯架构,并且可实施其他通讯架构。
另外,请再参阅图2,一实施例提供在伴随每个处理单元是一服务器的一服务器场(Server Farm)之内的服务器的网络内包括相同的结构,并且其中网络是封包交换的(例如一个以太网络(Ethernet)的范例)。在这样的系统中,存储器可能无法横跨服务器被一致性地管理,并且信息传递程序化的形式可被用来程序化系统(如一信息传递接口(Message Passing Interface,MPI)。依照一些示范性的实施,于此所描述的方法提供一统一的方法以程序化如此大的分散式系统以及小、高度整合、平行的系统。
关于系统的效能及依据一示范性的实施,其指出,每个处理器有一“背景内容(Context)”,其意指它的堆叠帧(Stack Frame)。特别是,处理器具有一存储器堆叠(Memory Stack),其工作于处理器内,这意指的是执行的程序是在一特定的时间点的常式(Routine)。因此,处理器当前在的常式可以被称为如作为其背景内容。再者,在这么多的信息中,常式被储存在区域之中央处理单元暂存器(Local CPU Register)之中,使得这数据可以被快速地存取,这些暂存器连同程序计数器(Program Counter)(或指令指标(Instruction Pointer)),可以被理解作为表示对于一特定处理的背景内容。因此,"任务的背景内容(Task Context)"可以被定义为例如:作为通过一特定任务所利用的数据的极小集(Minimal Set),特定任务被保存下来以实现这样的任务之中断,这样的任务在其被中断的每个点通过这相同任务的成功延续被随后地跟随。鉴于上述情况,一实施提供一"背景内容"包括储存在暂存器之内的数据及程序员所看不见的呼叫堆叠(例如:因为其不具有一存储器地址)但仍然由执行中的代码所利用的呼叫堆叠。
当处理器呼叫一新的常式(Routine),其将会从存储器取回新的指令给这个其他的常式,然后执行它们;这个可被称为如一"背景内容切换(Context Switch)",借以当执行一呼叫时,处理器从一帧至另外一帧。其指出,这样一个背景内容切换可通过区域地储存中央处理单元的由目前执行的线程所利用的暂存器所执行,然后加载由下一个执行的线程所利用的暂存器。其进一步地指出,这样的背景内容切换可使得多个处理(Process)共享单一的中央处理单元,并且因此可以是一个多任务操作系统的极为重要的特征。特别是,非常地快速执行这样的背景内容切换,使得其可能看起来在相同的处理器上同时地执行多个处理。
请再参阅图2中所示的示范式的分散式处理架构200,在一实施例,这个架构是一非均匀存储器存取架构,其可以(或可以不)是快取存储器一致的(Cache Coherent),取决于网络及快取存储器的实施。类似地,存储器可以或可以不被配置排列,使得其形成一全域地址空间(Global AddressSpace),并从多个实施的处理器之中提供给每个处理器。
前述尽管如此,示范性的方案提供一问题存在于这个后者的分散式架构。特别是,仍然有一定量的区域存储器及快取存储器,因此,在存储器内的任务效可能比可与示范性的处理架构100来实现更好。如果被请求的数据或代码不是被区域地储存对一特定的处理器,处理器仍然会失速(Stall),其如果执行正常执行代码(如:x86、ARM或MIPS处理器),将涉及对于交换数据进出快取存储器及/或存储器(如动态随机存取存储器)的管理。再者,一第二示范性的方案提供对称多处理(SymmetricMultiprocessing,SMP)的处理架构或许不能很好地扩展,而且也不能做与其所使用的软件的方法。然而,本技术的一实施例提供如果例如代码式样(Coding Style)是信息传递而不是对称多处理,及如过每个线程能被绑定或分配至一特定的中央处理单元,可有效地利用分散性处理架构,而不需运行至这些问题。其指出,一"线程"可以被定义为例如在程序之内的一独立指令序列,所述程序能独立地执行关于程序的其他代码。特别是,每个线程表示通过代码的一单独的控制路径,及如果多个线程被定义在一特定的处理,然后每个这些线程将基本上为彼此独立的。
鉴于上述问题,对简单的分散性处理架构作一些建议的扩展/修改将于此作探讨。这些建议的扩展/修改被一些观察(Observation)所支持。首先,请参阅图3,绘示依据一实施例的示范性的进步分析(Progress Analysis)300的示意图。在图中,纵轴310是用于测量绘制信息的大小(Size),及一横轴320是用于测量与绘制信息相关联的科技进步(Technological Progress),其中科技进步是信息大小的函数。再者,当这样的数据及代码的大小增加时,有关数据及代码的观察被分别地绘制,如曲线330及340。示意图产率(依据一示范性的方案)随着时间迁移关于观察结论的代码及数据,其中当数据指数地增长时,代码大小对数地增长。这样做的原因是,数据容量呈现遵循摩尔定律(Moore’s Law)(其中指出集成电路(IC)内可容纳的晶体管(Transistor)的数目,约每隔两年增加一倍),其中代码随着时间迁移能被重复使用以及具有可被经常地呼叫或使用的函数。
再者,依据一示范性的方案,一第二观察提供,对于一特定的数据类型,有一固定数量的在其上执行的操作。这可以形式化于"物件导向"程序语言(Programming Language),如根据C程序语言的C++程序语言(以下分别地简称为”C++”和”C”),其中数据被描述为属于类别(Classes),其指出,一类别包括例如一定数量的能实施数据的"方法"或常式。
鉴于上述两观察,其指出,在一分散性处理架构中如果特定类型的多个数据组(Data Set)的每个被分配至特定的处理单元的存储器,则用来实施这个数据的代码将集中于对于特定数据类型的方法,以及实施代码的数量(依照一实施)将明显地小于数据本身。因此,在一特定的处理单元内,区域地储存代码将是对于区域地保留数据的方法的代码。
B.示范性的处理资源分配
现在将探讨一些示例处理资源分配技术。其指出,然而本技术不限于这些示例性处理的资源分配技术,并且可实施其他的处理资源分配的技术。
鉴于上述情况,并请参阅图4,绘示依据一实施例的示范性的处理资源分配的方法400。示范性的处理资源分配的方法400包括识别映射至具有一预选数据地址的数据的一指令410及根据预选数据地址,判定是否从一第一处理单元传输指令的一呼叫至一第二处理单元420。为了说明,考虑实例,其中数据目前没有储存在分配至第一处理单元的一快取存储器单元中的,但数据目前可储存在分配至第二处理单元的一不同的快取存储器单元。如果这个不同的快取存储器事实上正在储存这个数据,使得第二处理单元已经具有相对快速地存取这个区域地储存的数据,一"控制线程(Thread Of Control)",其涉及到前述可从第一处理单元传输至第二处理单元的指令(由于相对容易与第二处理单元能存取数据,并且为了防止第一处理单元开始储存这个数据的一区域拷贝(Local Copy)的处理,以便执行指令)。以这种方式,控制线程可以被移动,而不是数据本身被移动。
其指出,移动一线程可能是一个单方向性的任务,然而,依据一示范性的方案,在发送一请求(Request)及返回数据中,一数据/代码的提取(Fetch)是双向性的。高频宽低延迟的通讯频道(CommunicationChannel)(如:光纤频道(Fiber Optic Channel)),其比请求数据/代码单纯地作为涉及距离的结果,可更快地移动至一线程的背景内容。特别是,电子信号以接近光的速度行进,但这仍然是每毫微秒公分(Centimeters PerNanosecond)。相比之下,一些示范性的处理器在单一毫微秒内能执行许多操作。
为了进一步说明,一示范性的实施提供一第一处理单元运行一线程(使得这个处理单元具有一特定的"控制线程")。接着,当第一处理单元是执行一跳跃(Jump)或常式呼叫(Routine Call),其可以涉及例如一代码跳跃(Code Jump),则呈现对于第一处理单元的一决定点。特别是,第一处理单元识别将跳跃至其的存储器地址(Memory Address),并且第一处理单元再决定是其或一不同的处理单元将执行跳跃或常式呼叫。为了作出这个决定,第一处理单元判定(1)涉及什么数据、(2)相对应的数据位于哪里(如,如果一常式涉及一特定的物件,则判定所述物件的位置)以及(3)哪个处理单元具有对应于所述特定位置的区域存储器(如L1快取存储器或随机存取存储器)。基于所述位置信息及相对应的处理单元的身分(Identity),第一处理单元能判定是否执行跳跃或常式呼叫本身,或其他传输(或传递)控制线程置一不同的处理单元(如一第二处理单元、一第三处理单元等)。如果所述控制线程确实是传递至一不同的处理单元,则所述其他的处理单元将会执行呼叫,以及第一处理单元然后将自由地开始运行一不同的线程。
为了进行进一步说明,一示范性的实施提供,在C++中,在一方法上一第一处理单元开始执行一执行常式呼叫,并且有一数据指标(DataPointer)映射至一特定的物件,其是被检索以对于这样的常式的执行。其指出,在一呼叫内所述指标位于一个特定的引数,使得执行的处理单元将在一特定的暂存器工作。第一处理单元将查看这些暂存器,以判定什么存储器值(Memory Value)储存于其中,以及如果存储器值不属于第一处理单元,其将传输呼叫至一不同的处理单元,在这种情况下,第一处理单元将不会打扰检索、分析、处理额外的与这个常式相关的代码。
鉴于上述情况,一实施例提供一第一处理单元在一分散性处理架构中接收上述的控制线程,其中一特定型代的多个数据组于这样的分散性处理架构内每个被分配至一第二处理单元的存储器,以及其中数据是第一处理单元的传输决定的主体,其与这些数据组其中的一相对应。因此,如果第一处理单元尚未储存这个数据的一拷贝,则第一处理单元将传输这个控制线程至第二处理单元,其对于区域地储存的数据将区域地储存方法的代码。如前面所指,这能够使一相对高程度的处理效率被实现,因为用来处理这个数据的代码将被集中于对于特定数据类型的方法,以及实施代码的数量将(依据一实施)明显地小于数据本身。
为了进一步说明,并请参阅图5,绘示依据一实施例的示范性的处理资源分配500的范例。特别是,识别映射至具有一预选数据地址(PreselectedData Location)530的数据520的一指令510,例如可能会发生当一第一处理单元540接收指令510。其指出,预选数据地址530可能位于例如特定处理单元的区域存储器之内。此外,如通过一处理资源分配元件560执行一处理资源分配550,为了根据预选数据地址530判定是否从第一处理单元540传输指令510的一呼叫570至第二处理单元580。例如,如果预选数据地址530位于第一处理单元540的区域存储器内,则呼叫570将不会被传输,在这种情况下,第一处理单元将维持控制线程及执行呼叫570。另外,如果预选数据地址530不位于第一处理单元540的区域存储器内,但位于第二处理单元580的区域存储器内,则呼叫570将传输至第二处理单元580,在这种情况下,第二处理单元580将获得控制线程及执行呼叫570。
请再参阅图5,其指出,处理资源分配550可通过处理资源分配元件560所执行。在一实施例中,处理资源分配元件560包括一或多个的实施的处理单元,如第一处理单元540。再者,一实施例提供处理资源分配550通过第一处理单元540所执行。其指出,然而,处理资源分配550可通过不同于第一处理单元540的一处理单元所执行。
鉴于上述情况,一示范性的实施涉及移动计算的背景内容至与其相关联的代码及数据,而不是移动数据及代码于特定的处理核心进出。因此,数据以保留区域性的方法分布全域地共享存储器,使得一特定的处理器(1)在特定的处理时距(Time Span)内只处理数据类型的一特定的子集(Subset)、(2)不会错过对于指令的快取以及(3)是不太可能错过对于数据的快取。事实上,相对高程度的处理效率将被实现,无论交叉处理器(Cross-Processor)的快取存储器一致性是否实现,因为利用相同数据的线程将被引导至相同的处理器。这种方法可以被称为,例如,"漂移线程(Wandering Threads)",因为当存取存储器的不同区域时一单一控制线程可漂移交叉于处理器。另外,一实施例提供实施多个处理器,线程将在相同的处理器及在争夺资源的可能性较低。类似地,实施处理器的数目较高,越有可能其将为将被储存在区域的快取存储器而不是在外部的动态随机存取存储器的相关数据。
前述尽管如此,其指出,如以上所讨论,处理资源分配的示范性的方法400可以被补充及/或修改。事实上,为了说明的目的,一些示范性的实施例现在将被探讨。然而,本技术不限于这些示范性的实施例。
类似于图1中所绘示的实施例,一实施例提供一处理的机器、系统及架构,如可通过一平行的处理机器所实施,其包括多个处理单元,其彼此间通讯地相关联及耦合或彼此连接,其中每个多个处理单元具有区域存储器,以及其中多个处理单元被配置为执行一指令或传输指令的执行至另一个处理单元,根据在与指令相关联的存储器中一数据或代码的位置(Location)。为了进行说明,并请参阅图6,绘示依据一实施例的一第一示范性的呼叫的传输的范例600。特别是,识别与指令510相关联的一代码或数据存储器地址(Code or Data Memory Location)610,以及根据与第二处理单元580相关联的代码或数据存储器地址610,从第一处理单元540传输呼叫570至第二处理单元580。
考虑实例,其中第一快取存储器单元620及第二快取存储器单元630分别地相关联于(如分配至或包括于)第一处理单元540及第二处理单元580。通过如第一处理器执行一存储器分配识别(Memory LocationIdentification)640,借以判定数据520目前储存在代码或数据存储器地址610(如图5中所绘示的预选数据地址530),其中代码或数据存储器地址610位于第二快取存储器单元630而不是第一快取存储器单元620。这是重要的,因为指令510被映射至数据520,使得存取数据520是一个条件以成功地执行指令510中的全部内容。因此,从第一处理单元540传输呼叫570至第二处理单元580,因为第二处理单元580已经具有区域存取数据520。特别地,其指出,由第二处理单元580呼叫570的一效能(Performance)将不涉及相关联于发送一数据需求(Data Request)至外部存储器的额外的时间及能量以及然后等待返回值(Returned Value)/数据组。
为了进一步说明,考虑实例,其中一处理器运行一相对大或复杂的程序。由于程序的尺寸或复杂性,处理器有时会错过指令快取,因为有时程序执行会涉及从共享存储器发出一组新的指令。再者,在物件导向语言(Object Oriented Language)中,特定的数据类型可以与写入代码的方式的特定操作相关联。因此,一实施例提供一特定类型及一特定空间的物件分配到一特定的处理器,使得处理器,在一特定的处理时距间,只打算来处理与特定的数据类型相互作用的代码。因此,如果一处理器在L1快取存储器中或在这样的L1快取存储器的一预选部分中只有一特定的数据类型,则处理器只会实施,当一特定的处理时距间,一相对少量的指令,这使得处理器将错过指令的可能性非常小。
因此,在一实施例中,如果第二处理器在其自己的L1快取存储器中已经具有相关数据,第一处理器将改为传递背景内容,以及特别是传递呼叫,至一第二处理器,而不是区域地执行一呼叫。因此,其是移动背景内容而不是数据本身。本质上,第一处理器放弃在一特定的背景内容,并传递其至一不同的处理器。再者,一实施例提供如果第二处理器以放弃在这个背景内容结束,则其能再传递其至一第三处理器,以此类推。其结果是,传递的控制线程可被称为,例如:作为一"漂移线程(Wandering Threads)"。因此,控制线程可被传递(或"漂移(Wander)")至一不同的处理器,其中指令及数据位于区域存储器。
为了选择一特定的处理架构,其指出,漂移线程可被实施,例如:在一分散性处理架构,如于此所述。例如,其指出,许多线程可同时在一分散性处理架构系统中被执行,以及如果它们使用不同于彼此的数据,则这样的线程将碰撞是不可能的。然而,本技术不限于分散性处理架构的实施。漂移线程也可以在除了分散性处理架构外被实施,事实上,一实例提供使用以太网络通讯的服务器场可具有一类似的结构。
请参考呼叫传输机制,一实施例提供运行信息传递代码(RunningMessage Passing Code)不仅涉及传输数据于处理单元间的能力,并且涉及当其到达时处理其的能力。这可以被实施,例如,作为一远端程序呼叫(Remote Procedure Call,RPC),这将在此作进一步讨论。其指出,一远端程序呼叫可以被定义,例如:作为一机制,其被配置以传输一第一处理单元的一计算背景内容,其执行一程序至一第二处理单元,以使这个第二处理单元能持续地执行程序,其被指出,一编译程序(compiler)可重组一使用者的代码以具有不同的呼叫边界(Boundary)。例如,而不是简单地传递数据于处理单元之间,数据及处理器常式入口点(Handler Routine EntryPoint)两者被发送。因此,单线程代码可以在分散性处理架构以全域地址空间运行,通过使用远端程序呼叫机制以传输控制于处理单元之间。因此,而不是具有通过连续地读入指令集数据以执行单一线程代码的单个核心,控制线程从处理单元漂移至处理单元为取决于什么数据正在被处理。方法的代码很可能是常驻与在处理单元上的数据,相对较少的"快取未中(Cache Misses)"将发生。以这种方式,一快取未中的成本可能被交换至传输呼叫背景内容之上。其指出,这种技术可以采用针对多种处理器编译的单一线程代码编译,如果例如硬件支持(Hardware Support)被增加至核心以识别对于一假定的常式呼叫或操作进行存取的存储器其属于另一个处理单元且传输控制至该处理单元可能是有益的。
C.示范性的存储器分配
一些示范性的存储器分配技术现在将探索。其指出,然而,本技术不限于这些示范性的存储器分配技术,并且可以实施其他存储器分配技术。
在一实施例中,不同处理单元的各自的区域存储器被各别地分配至不同的数据组,事先通过这样的处理单元接收漂移线程,使得配置每个这些不同的处理单元以有效地处理特定线程。以这种方式,一相对地有效及专门的处理架构可被实现。
为了说明,现请参阅图7,绘示依据一实施例的一示范性的存储器分配的范例700。特别是,第一快取存储器单元620及第二快取存储器单元630分别地相关联于(如分配至或包括于)第一处理单元540及第二处理单元580之内,其被识别以通过快取存储器识别(Cache MemoryIdentification)701为代表。此外,第一数据定位710及第二数据定位720分别地相关联于第一数据组730及第二数据组740,其被识别以通过数据定位识别(Data Location Identification)702为代表,其中第一数据定位710及第二数据定位720分别地位于第一快取存储器单元620及第二快取存储器单元630内。例如,根据各别地储存于第一数据定位710及第二数据定位720的第一数据组730及第二数据组740,可以定义第一数据定位710及第二数据定位720。
再者,第一快取存储器单元620及第二快取存储器单元630的一分配,通过快取存储器分配703作为代表,分别地至第一数据组730及第二数据组740,其根据第一数据定位710及第二数据定位720所执行。特别是,在这么多的第一数据定位710及第二数据定位720分别地位于第一快取存储器单元620及第二快取存储器单元630,第一快取存储器单元620及第二快取存储器单元630分别地被分配至第一数据组730及第二数据组740。因此,这些快取存储器单元已被分配到完全不同的数据组,其可以被存取,例如:为了各别地执行不同的处理线程。以这种方式,处理单元能被配置以有效地处理这些映射至特定的数据组的线程,它的区域存储器已经被分配。
因此,请再参阅图7,如果属于第一数据组730的控制线程通过第二处理单元580所接收,则第二处理单元580可传递这个控制线程至第一处理单元540,自从第一处理单元540已经被分配至这个特定的数据组。同样地,如果属于第二数据组740的一不同的控制线程通过第一处理单元540所接收,则第一处理单元540可传递这个不同的控制线程至第二处理单元580,自从第二处理单元580已经被分配至这个特定的数据组。
另外,第一数据组730及第二数据组740分别地具有两个不同的数据类型,则具有这两种数据类型中的一个的第三数据组可以被发送至快取存储器单元,其已经储存具有相同数据类型的数据。以这种方式,多个数据组,其共享一特定数据类型将被共同定位于对于一特定处理单元的相同区域存储器单元之内,其进一步地增加相对效率,第一处理单元将能够处理这些被映射至其区域储存数据的线程。
请参阅图8,为绘示依据一实施例的一第二示范性呼叫的传输范例800。特别是,映射至指令的数据组810被定义,其通过数据组识别(DataSet Identification)820所表示。此外,其判定目前正在储存的数据组810,通过数据定位判定(Data Location Determination)830为代表,在第二快取存储器单元630(如第二数据定位720),而不是在第一快取存储器单元620,从而决定第一处理单元540传输呼叫570至第二处理单元580。
例如,执行数据定位判定830,由此判定数据组810未定位于第一快取存储器单元620内。因此,数据定位判定830随后涉及判定,如果一或多个其他处理单元当前储存数据组810,例如与一存储器管理单元(Memory Management Unit,MMU)通讯,其与实施的处理单元(如第一处理单元540)其中的一通讯地相关联或耦合。作为探究的结果,其判定储存数据组810当前被储存于第二快取存储器单元630内。另外。一呼叫传输判定(Call Transfer Determination)850被执行,由此其决定从第一处理单元540传输呼叫570至第二处理单元580,以因应(1)数据组810当前没有被储存于第一快取存储器单元620内以及(2)数据组810已经当前被储存于第一快取存储器单元620内。
鉴于上述情况,其指出,依据一实施例,判定是否传输呼叫为根据数据的定位(如物理地址)而不是特定的这样的数据的数据类型。例如,而不是根据数据类型以决定传输呼叫,数据类型的信息可预先通过存储器分配器(Memory Allocator)被存取,以确保相同类型的数据被共同定位,使得一特定的处理器将具有大致相同的储存于其区域存储器的数据类型。此外,代码的静态分析(Static Analysis)可被实施以助于生成替代存储器分配器,其操作区域分配。再者多个处理单元可具有相同数据的拷贝,使得对高度使用的数据的请求能被有效地处理。一实施例提供数据类型在呼叫传输决定(Call Transfer Decision)中相较于数据定位是较不太重要的,虽然数据定位可代表一代理服务器(Proxy)用于可应用的数据类型。实际上,在各种示范性的实施中,运行时间系统(Runtime System)将能在代码串(Code Stream)中识别地址(如指标),但将无法识别数据类型的信息。
D.示范性的传输决定的处理
现在将探讨一些示范性的传输决定(Transfer Decision)的技术。其指出,本技术不限于这些示范性的传输决定的技术,并且可以实施其他传输决定的技术。
首先,其指出各种机制可以(同时地在某些情况下)被实施以支持漂移线程。这些机制可包括硬件及软件的支持,前者是通透至程序执行,以及后者涉及代码于加载前后的修饰。
i.硬件支持
现在将探讨一些示范性的硬件支持技术。其指出,然而,本技术不限于这些示范性的硬件支持技术,并且可以实施其他硬件支持技术。
根据一示范性的实施,可提供两个不同级别的硬件支持,第一级别涉及判定代码是否储存于存储器的一重定向磁区(Redirect Sector)内。如果是,则存取的呼叫被识别作为一潜在的重定向呼叫(Potential RedirectCall)。如果不是,则呼叫通过第一处理单元执行而不是被传输至一个不同的处理单元。然而,如果呼叫被识别为一潜在的重定向呼叫以因应第一级别的硬件支持,第二级别涉及识别哪个处理单元已经储存相关数据,使得呼叫可以被重定向至这样的处理单元。
因此,在一实施例中,硬件支持用于呼叫传输技术可包括,例如:识别呼叫或操作,其可能被传输、实施一个查表机制(Lookup Mechanism),为了识别哪个实际呼叫或操作考虑用于传输,以及提供地址至处理单元的识别符号(Identifier)的转译(Translation)。鉴于上述情况,现在将探讨一些示范性的技术。
a.阴影暂存器(Shadow Register)
在一实施例中,"阴影暂存器"用于执行控制及支持软件(例如,使用者级别)的决定有关的传输的直接转移。为了说明,并且依据一示范性的实施,其指出,处理单元具有一数据路径(Data Path)或”管线(Pipeline)”。此外,处理单元为通讯地相关联或耦合于一存储器管理单元(请参阅例如图8中所绘示的存储器管理单元840),其被配置以管理存取存储器,其为通过处理单元所请求。特别是,当处理单元接收一呼叫,其从存储器管理单元请求关于相对应的存储器位置的信息。由于地址被填补于管线上,存储器管理单元在处理单元中填补额外的暂存器(如阴影暂存器),从而识别哪种地址,那些是(如区域的、共享的、重定向的)。当处理单元呼叫代码,其被映射至这些地址的其中的一,处理单元可以存取其阴影暂存器以协助判定呼叫是否应该被传输。
例如,一实施例提供一处理器与一深的数据路径(deep data-path)及预取代码,其中阴影暂存器被使用于标记哪个指标暂存器具有一相关联的处理单元。信息关于呼叫及指令处理被持有以作为标签在指令/数据的快取存储器中。例如,当指令或数据从存储器被取出至快取存储器,标签被设置以作后续的使用。在这么多的分散性处理架构具有一相对低的快取未中率(Cache-Miss Rate),该标记估计的评价不会影响整体效能,且其能在平行于存储器取来完成。因此,标签估计可通过已经被快取的支持代码来执行。
请参阅图9,为绘示依据一实施例的一示范性的处理单元的识别范例900。特别是,关联于(如分配至或储存于)第一处理单元540的一快取存储器单元(Cache Memory Unit)910被选择,并且关联于(如映射至)指令510的代码或数据920被取来至快取存储器单元910。此外,关联于第一处理单元540的一处理单元数据路径(PU Data Path)931被识别,以及定义在处理单元数据路径931中的阴影暂存器值(Shadow Register Value)930,使得阴影暂存器值930反映处理单元的识别符号(PU Identifier)940,其标示关联于代码或数据920的至少一处理单元950,例如,其中至少一处理单元950已经区域地储存代码或数据920。
考虑实例,其中第一处理单元540包括一些阴影暂存器(ShadowRegister)960以及快取存储器单元910,以及其中处理单元识别符号(PUIdentifiers)940被储存在阴影暂存器960,例如通过存储器管理单元840,其通讯地相关联及耦合于第一处理单元540。阴影暂存器值930被定义在处理单元数据路径931,其中阴影暂存器值930反映处理单元的识别符号940。在这么多的处理单元的识别符号(以及类似地定义的阴影暂存器值930)表明至少一处理单元950已经有区域存取代码或数据920,至少一处理单元950的识别可以通过存取阴影暂存器值930以简单地确认。
依据一示范性的实施,其指出,"数据路径"用于处理器可以被定义,例如,作为阶段限制数据用于处理器核心的一管线。每个管线阶段(PipelineStage)可具有一版本的暂存器。虽然一管线将停滞在快取未中之上,复杂的处理器可以并行运行多个管线,使得停滞的管线(Stalled Pipeline)可以跳过。阴影暂存器与常规暂存器行进于管线。例如,当暂存器填满一指标地址(或随机数据),下一个(或一后续的)管线阶段可能增加一阴影暂存器与存储器管理单元的猜测(Guess)作为这个地址(或数据)属于哪个处理单元。其指出,对于许多处理器,在存储器的代码及数据本身之间的硬件级别没有实质的区别,所以代码可被视为一特定类型的数据。其进一步指出,某些处理器确实作出这种区别;特别是,这样的处理器将写保护代码及/或数据的区块执行,以防止“骇侵(Hacking)”,虽然这种保护是可选的于反向相容性(Backward Compatibility)。
前述尽管如此,其指出一处理核心在其数据路径的每一个阶段能存取阴影暂存器的状态并且决定是否传输控制线程置其他处理核心。如果没有传输由硬件自动地执行,在阴影暂存器中的信息仍然是可获得的至代码以支持一软件方法(Software Methodology),如本文所述。
在一实施例中,每个处理单元调谐(Per-PU Tuning)可通过修正指令快取存储器以实现,指令快取存储器是从存储器在一只读模式(Read-OnlyMode)下运作。因此,当评估指令快取存储器以重定向标签,加载至快取存储器(如呼叫地址等)的代码可被修正。这个机制在每个处理单元基础下可以被实施以常式的正常版本交换重定向版本,使得可避免在执行之前修改代码,并使得在处理单元的效能上没有明显的影响,其中一重定向是不被实施的。
另外,于一实施例中,多个处理单元可具有相同数据的拷贝,且配置各个处理单元以发送关于其至网络有多忙的信息,使得存储器管理单元840,其于阴影暂存器填满处理单元的识别符号,而能智能地挑选处理单元。再者,一监测处理的系统在分散性处理架构中可被实施以从关于效能的处理单元信息中识别出"热点(Hot Spot)",并且分配其他的处理至存储器的特定区域。
b.重定向呼叫(Redirect Call)
给定编译代码(Compiled Code)的一主体,当连接或加载的期间一常式呼叫能被重定向以便指向替换的实施。一旦其判定这个呼叫示被重定向,这样的呼叫可被称为例如作为一”重定向呼叫(Redirect Call)”。
请参阅图10A,为绘示依据一实施例的一示范性的重定向呼叫的识别范例1000。特别是,第一快取记忆单元620及第二快取记忆单元630被识别为,例如通过快取存储器识别701所表示,其中第一快取记忆单元620及第二快取记忆单元630分别地相关联于(如分配至或包括于)第一处理单元540及第二处理单元580。此外,呼叫570被存取于第一处理单元540,其中呼叫570包括指示指令510映射至预选数据地址530的一引数(Argument)1020。再者,引数1020与第一处理单元540被分析,为了做一判定为预选数据地址530不被定位于第一快取存储器单元620内,通过数据定位判定830所表示。另外。以这个判定为基础上,呼叫被识别作为一潜在的重定向呼叫,例如通过潜在的重定向呼叫识别(Potential RedirectCall Identification)1010所表示。
呼叫570被识别为一潜在的重定向呼叫后,判定潜在的重定向呼叫是否被传输至一个不同的处理单元。依据一示范性的实施,区域地执行一目标码(Target Code),在这种情况下,不执行重定向呼叫的机制。为了进行说明,请参阅图10B,绘示依据一实施例的一示范性的目标码的执行范例1001。特别是,呼叫570被识别作为一潜在的重定向呼叫,通过潜在的重定向呼叫1030所表示,并且其判定预选数据地址530不位于第二快取存储器单元630内,通过数据定位判定830所表示,借以作出一决定,例如通过目标码执行的判定(Target Code Execution Determination)1040所表示,以使用第一处理单元540执行相关联于(或映射至)潜在的重定向呼叫1030的目标码1050。再者,根据这个决定使用第一处理单元540执行目标码1050,通过目标码的执行(Target Code Execution)1060所表示。
尽管如前所述,如果预选数据地址530位于分配至一处理单元而不是第一处理单元540的一快取存储器单元内,一实施例提供呼叫将被传输至这样的其他的处理单元。例如,请参阅图10C,为绘示依据一实施例的第三示范性的呼叫的传输范例1002。特别是,其被判定,通过数据定位判定830所表示,预选数据地址530位于第二快取存储器单元630,从而识别潜在的重定向呼叫作为一实际的重定向呼叫(Actual Redirect Call)1070,通过实际的重定向呼叫的识别(Actual Redirect Call Identification)1080所表示。因此,从第一处理单元540将实际的重定向呼叫1070传输至第二处理单元580。
c.存储器分割
因此,在一实施例中,一处理单元被配置根据数据是否已经被储存于其他处理器的区域存储器(如动态随机存取存储器)以判定是否传输一呼叫。可替代地,或者除了上述之外,一实施例提供一处理单元通过判定指令是否储存于一特定的共享存储器的磁区(如全域地址范围(GlobalAddress Range)1000-2000),而能够判定是否传输一呼叫。
特别地,其指出,代码本身可被加载,使得代码被分配至共享存储器的一特定的、预定义的区域。例如,代码的静态分析可被实施以判定代码类型,其中信息可以被用于驱动存储器配置(Memory Placement)。再者,代码已经被加载至分配存储器后,且当代码的地址随后被识别,这个地址信息将指示与代码相关联的性质(Nature)(如重定向的(Redirectable)或其他)。因此,根据一个实施例,判定映射到一呼叫的代码是否被存储在存储器的"一重定向磁区(Redirect Sector)"中。对于一重定向磁区,重定向磁区的开始及结束地址可以被识别,从而产生一重定向地址范围(RedirectAddress Range),以及如果一地址在这个范围内,则呼叫将被识别为一潜在的重定向呼叫。如果不是,则呼叫被立即区域地执行而是被进一步地详查对于一可能传输至一不同的处理单元。
为了说明,请参阅图11,为绘示依据一实施例的示范性的呼叫传输的判定范例1100。特别是,具有储存在其中的指令510的一共享的随机存取存储器单元(Shared RAM Unit)1110被选择,通过随机存取存储器的选择(RAM Selection)1120所表示。此外共享的随机存取存储器单元1110的一磁区被识别作为一重定向磁区(Redirect Sector)1111,通过重定向磁区识别(Redirect Sector Identification)1130所表示,其中重定向磁区1111从共享的随机存取存储器单元1110的非重定向磁区1112识别。再者,判定指令510是否储存在重定向磁区1111,通过指令定位判断(InstructionLocation Determination)1140所表示,从而判断是否从第一处理单元540传输呼叫至第二处理单元580,通过呼叫传输判定(Call TransferDetermination)1150所表示。
为了进一步说明,示范性实施提供了如果判定指令510被储存在共享的随机存取存储器单元1110的重定向磁区1111,然后呼叫570被识别为一潜在的重定向呼叫,在这种情况下,呼叫570可以是随后从第一处理单元540传输至第二处理单元580。例如,呼叫570可以在判定指令510储存在重定向磁区1111时自动地传输,或呼叫570如果判定可以被传输,在进一步地分析时(例如进一步于此所讨论),呼叫570是一实际的重定向呼叫(非简单的一个潜在的重定向呼叫)。在呼叫570最终从第一处理单元540传输至第二处理单元580的情况下,则第二处理单元580将执行呼叫570以及从重定向磁区1111存取指令510。以这种方式,与执行常式相关联的控制线程包括指令510已经被成功地传递至第二处理单元580,并且第二处理单元580将执行指令510。
可替代地,如果判定指令510没有被储存在共享的随机存取存储器单元1110的重定向磁区1111,而是被储存在非重定向磁区1112,然后呼叫570将不会从第一处理单元540传输至第二处理单元580(除非进一步的分析成功地识别呼叫570作为实际的重定向呼叫),在这种情况下,第一处理单元540将执行呼叫570及从非重定向磁区1112存取指令510。以这种方式,与执行常式相关联的控制线程,其包括已经通过第一处理单元540所保存的指令510,以及第一处理单元540将执行指令510。
除了前述的,一实施例提供加载代码至存储器于特定地址,以支持呼叫传输判定1150。例如,当一个程序启动时,其可以映射共享程序库(Shared Library)至存储器中,但在非特定地址。依据一实施,然而,静态代码(Static Code)及共享程序库及其分部(Subsection)被映射至随机存取存储器的磁区,以便支持这样的重定向磁区的技术。
为了说明,请参阅图12,为绘示依据一实施例的示范性的存储器的分割范例1200。特别是,一个共享的随机存取存储器单元1110被选择,并共享的随机存取存储器单元1110的一个或多个磁区(Sector)分别地被识别为一或多个重定向磁区(One Or More Redirect Sectors)1201。事实上,其指出,一共享的随机存取存储器单元可包括多个重定向磁区,并且每个这些重定向磁区可以与一不同的行为相关联。此外,识别包括指令510的程序1210,并且存取对应于程序1210的静态代码1220。再者,共享的随机存取存储器单元1110是被分割的,通过随机存取存储器分割(RAMPartitioning)1240所表示,根据静态代码1220的尺寸(Size)以定义一或多个重定向磁区1201的一共同的尺寸(Collective Size)。另外,根据分割及(可选择地根据一处理单元的处理单元的规格(PU Specification)1203,如其中处理单元的处理单元的规格1203表示一特定的处理单元不被提供所有的静态代码)1220),从一或多个重定向磁区1201之中加载静态代码1220(或者一定数量的静态代码)。在这种方式下,一实施例提供相对有效的技术用于呼叫传输决定的处理。
其指出,前述处理(Process)对于程序1210是完全静态的情况下可以是有用的,因为可能会发生,例如,在内嵌式系统(Embedded System)中。前述尽管如此,一实施提供的是,上述处理是适于一种不完全静止的程序。特别是,请再参阅图12,共享的随机存取存储器单元1110的一或多个不同的磁区分别地被识别为一或多个非重定向磁区(One or MoreNon-Redirect Sectors)1202,以及相对应于程序1210的至少一共享程序库(At Least One Shared Library)1230的一或多个部份被存取。此外,根据静态代码1220的共同的尺寸及至少一共享程序库1230的一或多部分,例如在随机存取存储器分割1240的期间,通过定义一或多个重定向磁区1201的共同的尺寸,以配比(Proportioning)共享的随机存取存储器单元1110。再者,一或多个静态代码1220(1)从一或多个重定向磁区1201中被加载至一或多个选择的重定向磁区或(2)根据配比(以及可选地根据处理单元的规格1203)从一或多个非重定向磁区1202中被加载至一或多个选择的非重定向磁区。可替代地,或者除了上述情况,至少一共享程序库1230的一或多个部分(1)从一或多个重定向磁区1201中被加载至一或多个选择的重定向磁区或(2)根据配比(以及可选地根据处理单元的规格1203)从一或多个非重定向磁区1202中被加载至一或多个选择的非重定向磁区。
依据一示范性的实施,许多处理器将利用重新定位的代码。因此,在加载阶段(Loading Phase)期间于周围移动这样的代码是比较容易的。另外,为了说明的目的,一实施例提供一或多个这些操作通过一处理单元1250所执行,其可以是例如第一处理单元540,或可替代地,一个完全不同的处理单元。
请参阅图13,为绘示依据一实施例的一示范性的处理资源分配系统1300。其中,可以实质上相似于上述图2中的分散性处理架构的示范性处理资源分配系统1300,包括有多个处理单元,例如示范性处理单元210、220、230。其中,等处理单元是可通讯地与一通讯布料(CommunicationFabric)1310耦合或相关连,且该等处理单元可以被统整配置排列如一芯片堆叠的结构。可包括有例如一前端总线(Front Side Bus)与存储器子系统(Memory Subsystem)的通讯布料1310(例如:通过实施一周边组件互连表达结构)是由该等处理单元配置于路径信息。
各处理单元包括有至少一中央处理单元,例如示范性中央处理单元211、221、231,与至少一随机存取存储器单元(像是一动态随机存取存储器单元),例如示范性随机存取存储器212、222、232。其中,各处理单元的该等中央处理单元与该等随机存取存储器单元是互相可通讯地连接或耦合。此外,各随机存取存储器单元是全域地映射,以至于其他处理单元可以取得存取于一外部随机存取存储器单元的信息。如此一来,于本系统中的多个处理器中的任何一个处理器都可以从多个应用存储器单元中可能存取数据的任一存储器单元获得数据。
再者,各处理单元包括一快取存储器单元,例如示范性快取存储器单元213、223、233。其中,该等快取存储器单元是可通讯地连接或耦合于位于各自的处理单元中的中央处理单元与随机存取存储器单元。于一实施例中,于一处理单元中之中央处理单元、随机存取存储器单元和快取存储器单元是互相连接以便互相通讯的,例如一硅穿孔(TSV)/宽输入/宽输出(Wide-Input/Output,Wide-IO)(或者在芯片上)通讯结构。
请参阅图13,其提供一全域代码程序库(Global Code Library)1320,其中全域代码程序库1320包括有一重定向磁区1111。于一实施例中,重定向磁区1111包括有一或多识别代码组,例如第一代码组1330与第二代码组1340。再者,不同的处理单元将被各自地分配到不同数据类型的物件。举例来说,于本图的实施例中,因处理单元230与处理单元210已经被区域地各自储存于属于第一与第二数据类型的物件,所以处理单元230是被分配到一属于第一数据类型的物件,而处理单元210是被分配到一属于第二数据类型的物件。必然地,如果第一代码组1330和第二代码组1340各自包括有一属于这类第一和第二数据类型的物件,则第一代码组1330和第二代码组1340将被分别发送至处理单元230与处理单元210。于本方式,当处理单元230是可以执行与拥有第一数据类型的物件有关的方法时,处理单元210是可以执行与拥有第二数据类型的物件有关的方法,以提高与这些方法有关的效能的效率。而于这些方法的效能提高期间,该等处理单元将已拥有各自区域地储存动作的相关代码和数据。
请继续参阅图13,考虑一实例,其中第一代码组1330和第二代码组1340是各自地与第一和第二数据类型有关连的。第一数据指标1331和第二数据指标1341是各自地被连接于第一代码组1330和第二代码组1340,且显示第一代码组1330和第二代码组1340是各自地和前述的第一和第二数据类型有关连。此外,若和第一数据类型有关的代码或函数等被储存,例如,一部分1350的随机存取存储器232,则产生一第一虚拟函数指标(VFP)1351,其中第一虚拟函数指标1351指出,或者是被映射于随机存取存储器232的一部分1350。相似的,若和第二数据类型有关的代码或函数等被储存,例如,一部分1360的随机存取存储器212,则产生一第二虚拟函数指标(VFP)1361,其中第二虚拟函数指标1361指出,或者是被映射于随机存取存储器212的一部分1360。所以,当一呼叫被判定为一潜在的重定向呼叫由于其重定向磁区1111已经被存取时,该等虚拟函数指标将被分析以判定设于重定向磁区1111中与相关代码组有关的数据是否已被一有效的处理单元区域地储存;若是,则潜在的重定向呼叫将被判定为一实际的重定向呼叫,而重定向呼叫将会被传输(或传递)至特定的处理单元。
再者,请参阅图14,为绘示依据一实施例的示范性的重定向分析1400。特别地,一函数f0(x,…)的呼叫是通过一第一处理单元被存取于1410,其中”f0”是一函数指标,且其中”x”示一数据指标(值得注意的是,其中”...”代表不只一个数据指标可被参阅)。于1420,其将被判定是否有一函数f0(x,…)的重定向版本(例如漂移线程版本)于当下被储存于全域存储器中的一重定向磁区,其中,函数f0(x,…)的重定向版本可被参阅如函数f(0)。若是,则函数f(0)通过一第二处理单元于1430被呼叫,既第二处理单元已经拥有区域地储存属于函数的代码与/或数据。接着,于1440,第二处理单元将进行函数f(0)。选择性地,于1420,若其被判定函数f(0)当下没有被储存于全域存储器中的一重定向磁区,则函数将不会被重定向,且可被储存于全域存储器中的非重定向区的函数f0(x,…)将通过第一处理单元被呼叫于1450,接着被第一处理单元执行于1460。
ii.软件支持
鉴于上述情况,一实施例提供一可通讯地连接或耦合于(或包括)一存储器管理单元的处理单元。存储器管理单元追踪哪一处理单元拥有存储器且拥有数据。一处理单元询问其特定的数据被映射于存储器的存储器管理单元,以判定数据是否被映射于本身的区域存储器或者是其他处理器的区域存储器。如此一来,一但有一呼叫被判定为一潜在的重定向呼叫,其将被判定数据是否于当下被储存于一重定向位置,同时潜在的重定向呼叫将被判定为一实际的重定向呼叫,而呼叫将会被传输。尽管这可以被完成于一硬件级别(Hardware Level),软件可以被应用以支持其技术。特别地,软件支持可以被加入以协助处理单元做更复杂的决定,例如增加支持代码于运行时间代码之中,或者是接近运行时间代码。实际上,虽然处理单元的处理速度是相对地快,但自其中移动信息进或出则可能是相对的慢。所以,做一个聪明的决定可节省大量的时间与能源。如此,不同的实施例于加载前或后涉及软件修饰以支持于处理单元间控制的传输。
必然地,现在将探讨数个示范性软件支持技术。值得注意的是,然而,本发明并不以此示范性软件支持技术为限,其他软件支持技术也可以被应用于其中。
a.重定向代码
就漂移线程来说,一常式可以被重定向为一代码,其中代码将检视预期呼叫的引数以判定呼叫是否被区域地实行或者是于一不同的处理器被实行(例如通过调用一远端程序呼叫,将会被进一步的探究于本文中)。例如,一示范性C语言呼叫为
“fprintf”:
int fprintf(FILE*stream,const char*format,...);
重定向代码将标注其为重定向呼叫“fprint”且将检视指标串以了解其是否指向区域存储器。若不是,且一处理单元对于存储器可以被识别,则重定向代码将实行一传输至处理单元并且等待其完成,进而造成线程的一区域性中止。若重定向代码判定指标是区域的或者无法识别处理元件,则其区域地执行实际“fprint”呼叫。其优点在于只有处理单元处理“fprint”将实际地复引用指标串与其相关暂存区。重定向代码可以被转向相关的背景内容,以被特定的呼叫利用,如此一来该处理单元于执行处理时就不用回到原始的处理单元的快取存储器;实际地,于一实施例中,软件修正指令快取存储器是被应用于每一处理单元加载后的代码转换。相同的重定向代码可以被应用于若目标函数为一引数时(例如第一引数为一指标且传输至处理单元的存储器),多个目标常式分享一引数档案。当“fprint”重定向代码被应用于一C程序语言时,其看起可相似于下述:
int redirect_fn_p_var(int(*fn)(),void*p1,…){
int pu;
if(local_address(p1)||!(pu=pu_for_address(p1))){
return asm_redirect_var(fn,p1);//(Comment 1:Perform call)
}
return wt_transfer_wait_var(pu,fn,p1);//(Comment 2:Transfer andwait)
}
再者,请参阅图15,其为绘示依据一实施例的一示范性的全域代码程序库1500。特别地,一全域代码程序库(Global Code Library)1320包括有一重定向磁区1111以及一非重定向磁区(Non-Redirect Sector)1112,其中一函数“fprint”1510是被储存于非重定向磁区1112,而其中,此函数中的一漂移线程版本(即如函数fprintfwt 1520)是被储存于重定向磁区1111。其指出,一存储器指标1530是被连接于函数fprintfwt 1520的,其中存储器指标1530识别属于此函数的数据是被储存于什么地址。如此一来,当第一处理单元540接收一函数fprintf 1510的呼叫1540时,其将被判定此函数的一漂移线程版本是被储存于重定向磁区1111。接着,第一处理单元540识别此函数为一可重定位的呼叫,而一与第一处理单元540连接的存储器管理单元840分析存储器指标1530(存储器指标1530是与一特定的输入/输出暂存区连接,其中暂存区是被其中一处理单元所控制)以判定识别地址是否被定位于第一处理单元540的区域存储器中。若是,则第一处理单元540将呼叫函数fprint 1510,然后通过存取区域地存取的数据以执行函数。若否,则存储器管理单元840判定地址是被定位于何处(并且识别与该地址连接的处理单元)。依据一示范性实施,附属于此一分析的代码可类似于下述:
fprintf(file*p,…){
if(my_memory(p)){
fprintf(p,…)
}
else{
PU 2=find_PU(p);
transfer_context(PU 2)
}
};
其中“p”是被详查的存储器指标。
请再参阅图15,一旦此其他处理单元被识别,则第一处理单元将传输呼叫1540至其他处理单元(被呈现于图15中如第二处理单元580)。为了回应存取的呼叫1540,此其他处理单元将存取此函数(呈现如函数fprintfwt 1520)的漂移线程版本。
以程序语言来说,例如C++,其可执行各类别(Per-Class)分配的工作与虚拟函数。重定向代码可以被加入类别方法且于连结/加载时,检察一计画方法的代码是否正被执行于一支持漂移线程的机器上。于一实施例中,类别建构器将置类别的例子于一特定的处理单元已取得类别的最佳效能。Java与SystemVerilog是与C++类似的程序语言,但不同的是其为用“废弃物收集”于存储器配置(例如存储器可以被分配至一对于非参考数据的背景扫描检视)。其指出,上述方法不排除使用废弃物收集;更确切的说,上述方法将通过限制搜寻的范围以改善其效能。
根据一示范性实施例,上述方法是应用于使用者代码未被修改。再者,出色的晶向控制可以被取得通过直接地使用漂移线程支持常式于使用者原始代码中,或者是通过分析与利用重定向以重新产生汇编代码。其中,后者方法可以被应用于低级别虚拟机器型态代码。前述尽管如此,于一实施例中,位元组代码(而不是机器特定代码)于应用时,将会通过运行时间系统被解释阐述。例如,如果旧式x86代码被加载,额外加入的代码可能不适用于x86,但将仍然被运行时间系统所理解。
b.处理能力
其指出,于多个不同的实施例中,处理器单元效能的监控是为了控制处理器单元以做回应或选择。实际地,于一实施例中,一重定向呼叫在基于一当下的处理单元的处理能力被传输到一特定的处理单元,其中,可被应用的处理能力分析可以被实施。举例来说,通过被应用的支持代码。举例来说,一旦一呼叫被识别为一潜在的重定向呼叫,结果有超过一个的处理单元是可以处理呼叫的,例如可能发生超过一个处理单完式当下正在区域地存取相关数据,则当下的等处理单元的处理能力可以被分析,以根据哪一处理单元可以处理目标常式最有效率做一有根据的决定。如一第二例子,一常式可拥有多个不同的引数,其中各引数可与不同的处理单元有关联(与自身的目标码一同),于此例中,注入的代码将决定哪一个元素是最重要的。
再者,请参阅图16,其为绘示依据一实施例的一第四示范性的呼叫的传输范例1600。特别地,当其通过存储器地址相关判定(MemoryLocation Association Determination)1610被呈现,其被判定一与指令510(请见图6)相关的代码或数据存储器地址610是与第二处理单元580和一多个其他处理单元1620有关(例如定位于其中)。于图16中所示,多个其他处理单元1620包括有第三处理单元1621、第四处理单元1622以及第五处理单元1623。此外,一数值测量(Numerical Measurement)1630用以反映一当下可用的处理能力对应于第二处理单元580被定义。意即,第二处理单元580的当下可用的处理能力可以被测量,举例来说,通过判定第二处理单元580当下于一特定时间内可进行的计算或处理循环数目,而数值测量1630将对其提供一数值反映。
再者,多个其他数值测量1640被定义,其中,多个其他数值测量1640个别反映多个其他当下可用的处理能力,而其中多个其他当下可用的处理能力是个别对应于多个其他处理单元1620。意即,第三处理单元1621、第四处理单元1622以及第五处理单元1623的当下可用的处理能力可以被测量,例如,通过判定该等处理单元当下于一特定时间内可进行的计算或处理循环数目,而多个其他数值量测1640将对其各自的提供一数值反映。于本事件,数值量测1630比任一其他数值量测1640来的大,所以指出第二处理单元580是有能力比其他可用的处理单元还要快的去处理指令510,而呼叫570将被自第一处理单元540传输至第二处理单元580。
c.资源存取
前述尽管如此,于一实施例中,一重定向呼叫被传输至一特定的处理单元基于处理单元允许存取一特定的资源(例如一以太网络或一序列先进技术附件接口(Serial Advanced Technology Attachment(SATA)Interface)。特别地,一重定向将被加入以达到邻接与存取该等资源的目的。举例来说,一旦一呼叫被识别为一重定向呼叫,于本事件中超过一个处理单元是可被使用以处理呼叫的,例如可能发生有超过一个处理单元是当下正区域地储存相关数据,则一可以被有效率处理的目标常式的特定资源被识别,且其中一可用的处理单元基于该等处理单元存取被识别的资源而被选择。有效用的,举例来说,一特定的处理单元拥有一硬件的独占控制以避免并发议题。
再者,请参阅图17,其为绘示依据一实施例的第五示范性的呼叫的传输范例1700。特别地,一特定的资源(Specific Resource)1710被选定,例如通过资源选择(Resource Selection)1720以呈现,而呼叫570被传输自第一处理单元540至第二处理单元580基于(1)一特定的资源1710被分配到第二处理单元580的控制程度(2)第一处理单元540缺乏存取特定资源1710的能力,以及/或(3)一或多个其他处理单元1730缺乏存取特定的资源1710的能力。如此一来,尽管一或多个其他处理单元1730中的一处理单元可以区域地储存属于目标常式的数据,处理单元将不会被选择以进行呼叫的重定向,因为于处理重定向呼叫的过程中,处理单元没有能力运用特定的资源1710。于一程序语言,例如C++,这技术可以被达成,例如,通过分配描述串(或其元数据)于合适的处理单元的存储器中。例如,处理单元580可以被建立于其中,举例来说,一序列先进技术附件控制器或一其自身的硬盘,且当有问题的呼叫通过处理单完540被加入且参阅数据位于其他处理单元580上时,其可以被连接以管理数据传输至一直接附属的硬盘。被执行于处理单元540上的远端程序呼叫代码可以发送请求至其他处理单元以使数据被送至处理单元580以加速完成呼叫。
d.机器共享存储器一致性机器指令
其指出,根据一示范性的实施,特定的机器指令被用于多线程,对称多处理机器,以及多种执行常式的建立于此指令之后。特别地,该等执行常式包括使用可识别的共享存储器一致性机器指令;特定的例子包括该等运用测试与组装(例如互斥)代码与信号机的常式。究可携式作业系统接口(POSIX)线程(或者”P线程(Pthreads)”),于一实施例中,其提供P线程常式,意味着用低级别机器机制以操控跨线程通讯。因此,依据一实施例,识别共享存储器一致性机器指令将有助于判定可移动至相同处理器的常式,以使相同的处理器可以有效率的执行该等特定的机器指令。其指出,这类指令可以被识别,例如,加载然后定向以使其包括或映射至可执行的常式将被置于一适宜的重定向磁区。不同的重定向磁区可以被用于显示不同的呼叫类型。P线程互斥呼叫拥有该有影响力的第一引数的地址以及其他常式,可能第二或第三引数是数据的地址,其为与远端程序呼叫决定最相关的。磁区选择可以指引如何使阴影暂存器反映呼叫类型与如何使一应用的硬件远端程序呼叫机制被使用。
再者,请参阅图18,其为绘示依据一实施例的第六示范性的呼叫的传输范例1800。特别地,与指令510有关的代码1810被识别,例如代码1810是被映射至哪里或包括有指令510,以及代码1810是被第一处理单元540存取于哪里。此外,包括至少一共享存储器一致性机器指令1830的一执行常式1820被识别。再者,呼叫570被由第一处理单元540传输至第二处理单元580基于执行常式是与第二处理单元580有关联,与基于代码1810是被映射至至少一共享存储器一致性机器指令1830。
再者,考虑实例,其中预定义程序库代码(例如P线程,其意味着应用一致性指令的应用)是不存在的。其指出,代码利用例如测试与组装指令可以被识别及标记于一与P线程乎较相似的方法。再者,众多测试与组装作业可以是更简单的如果其不跨越多个处理单元。一实施例提供一连续的该等呼叫处理于一单一处理单元将使硬件一致性支持于一实施例中被避免。前述尽管如此,其他方法亦可以被应用。
e.代码注入
如先前指出,一实施例提供一代码注入技巧,可以于判定是否传输一呼叫中扮演重要的角色。例如,请参阅图19,其为绘示依据一实施例的示范性的代码的注入范例1900。特别地,一与第一处理单元540有关联的(例如被分配至或者被包括于)快取存储器单元910被选择,即如快取存储器选择1910所呈现,且指令510被加载于快取存储器单元910。此外,一额外的代码组1920被注入至快取存储器单元910于一与指令510有关的边界(例如存储器地址的一相邻组或近似的地址顺序),其中指令510是一目标指令。其指出,边界判定可以被执行,例如,于快取存储器选择1910中。其更进一步注记额外的代码组1920是被设置以使第一处理单元54去判定是否传输呼叫570至一特定处理单元,例如第二处理单元580。于本方法中,附加的软件可以被应用以帮助支持硬件于其重定向决定处理过程,因此使更复杂的分析被完成(例如本文所讨论的方法)。一运用动态共享程序库注入代码于一系统中的示范性方法是于被隐含值应用前加载选择性的分享程序库,并且包括适宜的进入点。这可以被完成于Linux系统,例如,通过环境变量的运用,例如“LD_PRELOAD”;运行时间系统接着运用预加载常式,然后其接着可以呼叫原始目标或者其他代码。Linux指令“strace”运用这类机制,其被注记为一”开资源(Open Source)”作业系统。
所以,一实施例提供于代码加载阶段,额外代码是被注入于执行常式边界以决定是否移动呼叫至其他处理单元或者将其保持于本区域。其指出,不同的处理器结构可以被增加以提供信息给注入的代码以帮助决定处理过程。其更进一步的注记软件注入技巧可以被单独利用于现有的对称多处理机器与现有的(例如预编辑)软件,仅管这方法可以有很好的表现于控制相对大量的稳态数据于随机方法的软件,例如,线路模拟、数据库以及人工智慧(AI)的应用。
f.指标转换
根据一示范性实施,一特定的常式呼叫类型运用指标当引数而不是拷贝数据以进行达到提升效率的目标,而此等指标可以被转换至数值传递呼叫。例如,考虑作业系统呼叫“开始”,如描述于其“man”页:
int stat(const char*path,struct stat*buf);
被传输的数据于本呼叫是一档案的地址路径与回传信息的地址。一远端程序呼叫可以适用于此,因为处理单元执行代码并不会控制档案。此类呼叫可以被重新映射至一拷贝进/拷贝出呼叫,其数据是通过数值被传输而不是引址,例如:
struct stat_i rpc_stat(const char path[MAX_PATH]);
其中stat_i包括与稳态数据一起的正常稳态呼叫的回传。
待传输呼叫自一处理单元至其他处理单元后,接收到的远端程序呼叫将呼叫标准的“stat”与暂时区域储存”路径(path)”及”buf”。”buf”数据将被传输回呼叫器,而不需调用该通过存储器子系统以寻址原始数据的负担。作业系统的代码呼叫可以被预先产生通过处理原始代码给系统程序库然后转译其于按数值传递版本,其将可以被任一处理单元的运行时间加载器所应用。所以,注入代码以做远端程序呼叫分支决定可以假设数值传递(或部分数值传递)支持代码是存在的。进一步的,一呼叫“stat”将被转换,例如,一呼叫“stat$transfer”于加载时(值得注意的是,“$”符号可以被专门用来做系统的呼叫),然后注入的分支代码将呼叫“stat”或者是“stat$rpc”,其中“stat$rpc”版本是提同于一程序库,转换至数值传递然后执行远端程序呼叫。这防止加载器被智慧地强制运转关于这些呼叫如何运作,既其将不会分析支持代码所提供的常式。对于以前不曾见过的呼叫(例如与使用者代码有关的呼叫),其将不可能做此类转换,而远端程序呼叫可以包括指标回到原始的处理单元,其将被处理通过存储器子系统于较高的耗能。于一常式无关联于发送一返回数值时(其可以被显示,例如于C/C++是“void”呼叫和“const”引数),远端程序呼叫机制可以区域地立即返回,而不用等远端处理单元完成远端程序呼叫,则远端程序呼叫成为一分离的或是独立的线程。
所以,于一实施例中,执行常式名被应用以选择将被注入的代码以做远端程序呼叫决定。进一步的,请参阅图20,其为绘示依据一实施例的示范性的代码的选择范例2000。特别地,一或多个执行常式名(ExecutableRoutine Name)2010分别地对应于一或多个预选的执行常式2020被识别。此外,额外的代码组1920被选择基于一或多个执行常式名2010以转换呼叫570,如呼叫转换2030所呈现,由一引址传递呼叫(Pass-by-ReferenceCall)转换为一按数值传递呼叫。
再者,一实施例提供多种可以被应用的混合(例如硬件加软件)方法。例如,代码可以被静态地建档以判定处理单元的规格(例如其为64位元还是32位元)或是否浮点是可以被应用的。这可以被用于标签代码于程序库中,以使一处理单元用一最小的硬件以执行代码。
另外,依据一示范性实施,一应用的处理单元包括一浮点单元(Floating-Point Unit,FPU),其可被参阅如一数学处理器,且被设置以执行浮点数上的作业。接着,当其他处理单元没有此支持试图呼叫一与浮点支持有关的函数,硬件的重定向至此处理单元是自动的。其指出,其可能不与实际数据存储器存取有关联,而其为在代码类型的假设下。此外,这么多代码和数据都存在于存储器,其可以被接通于代码的地址,然后该置代码于存储器的加载器可以命令其已使特定的代码类型被存于存储器中特定的区域,如此一来造成处理单元作业变得相对的简单。再者,其指出,浮点指令可以被辨别通过代码于一相似于一致性指令的辨别的方法。
g.虚拟函数表
就于程序语言,例如C++,修正代码于运行时间而言,其有一可选择的选择以注入代码于正常的呼叫位置(如于一C语言)。特别地,一示范性实施提供于C++用”虚拟函数表”(VFTs)以客制化子类别,任一举例说明的属于一虚拟函数类别的数据项目勇有一或多虚拟函数表指标。设定或初始化虚拟函数表指标是一部分的C++建构器的工作,所以如果一”包裹”被加入于建构器的四周,虚拟函数表指标可以被修正以指出其他版本的虚拟函数表,其将会用远端程序呼叫重定向代码于呼叫有问题的方法之前。所以,当代码被加载,特定的类别建构器将以其他代码的呼叫被取代,其将呼叫建构器,但也修正被分配的数据于传回数据地址至原始呼叫器之前,值得注意的是建构器呼叫已被修正(经由一较低的级别)以协助确认数据地址是否正确。
所以,于一实施例,一包裹呼叫是被注入于建构器的四周(例如C++建构器)于加载时,以由一拥有远端程序呼叫决定包裹的虚拟函数表取代原始虚拟函数表。考虑实例,其中一虚拟函数表存在于汇编代码的预定义的版本。此虚拟函数表被拷贝且其数个入口被换掉使该等入口指向远端程序呼叫决定包裹。此外,先前于虚拟函数表预定义版本的指标被以一新的指标于新的虚拟函数表版本取代。
进一步地,请参阅图21,其为绘示依据一实施例的示范性的虚拟函数表的取代范例2100。特别地,一包括有指令510的程序1210被存取,而一程序语言2110对应于程序1210被识别,其中程序语言2110被设置以应用一虚拟函数表(Virtual Function Table,VFT)2120使一属于一类别2140拥有一或多个虚拟函数2150的数据项目2130包括映射于虚拟函数表2120的一或多个虚拟函数表指标2160。此外,一与程序语言2110有关的建构器(Constructor)2170被识别,其中建构器2170被设置以定义一或多个虚拟函数表指标2160。再者,一包裹呼叫(Wrapper Call)2180被注入于建构器2170四周于程序1210的加载过程,以对于一或多个虚拟函数2150,取代拥有指标2191的一或多个虚拟函数表指标2160,成为包括一或多个远端程序呼叫决定包裹(RPC Decision Wrapper)2190的虚拟函数表2192。
前述尽管如此,于一实施例,一包裹呼叫被注入于建构器四周于程序的加载过程,以取代一或多虚拟函数表入口以一或多个远端程序呼叫决定包裹。此外,类别举例的虚拟函数表指标被更新以使用新的虚拟函数表。其指出,选择的虚拟函数表可以被分配置相同的存储器区块中,或以至于其可以被分别管理。现在将探讨其关联于每一例子代码修饰。
于一实施例中,于一类别例子中众多虚拟函数表指标是对该等例子来说是特定的,该等指标可以于运行时间被修正于一每一例子的基础上。于一事件中,远端程序呼叫是通常地被制造(或很少或从来没有被制造),然后虚拟函数表可以被修正以使远端程序呼叫决定代码(RPC Decision Code)不被呼叫,而虚拟函数将直接的区域地抵达代码或一远端程序呼叫。此等分支决定数据可以被存于虚拟函数表,其为被分配通过类别例子当使用远端程序呼叫决定包裹(其中正常的C++将分享一虚拟函数表于所有或多个类别的例子中)。接着,其指出,当虚拟函数表指标的地址可以被取得,虚拟函数被以一指标呼叫至类别例子。
再者,于一实施例中,此方法关联于处理单元的加载包括虚拟函数表指标的存储器,其通过数据被共同订定位,其中一”呼叫端(Call-Site)”方法将与分析地址有关,其中方法不含加载。然而,所有与目标有关的数据可能被加载或不被加载,所以当大量的目标是与多个于远端目标的处理单元管理作业有关联时,这方法可以是有好处的。
所以,于一实施例中,虚拟函数表是被自行修改以使远端程序呼叫决定代码不被呼叫。进一步地,请参阅图22,其为绘示依据一实施例的示范性的虚拟函数表的修正范例2200。特别地,包括指令510的程序1210被存取。此外,对应于程序1210的程序语言2110被识别,其中程序语言2110是被设置以应用虚拟函数表2120以使拥有一或多个虚拟函数2150的属于一类别2140的数据项目2130包括一或多个虚拟函数表指标2160,其中一或多个虚拟函数表指标2160是被映射至虚拟函数表2120。
除了上述之外,一实施例提供虚拟函数表2120是无需呼叫远端程序呼叫决定代码而被修正。举例来说,请继续参阅图22,虚拟函数表2120可以被修正,如多个远端程序呼叫的一实施例的结果所示,一或多个虚拟函数2150不用呼叫远端程序呼叫决定代码而被自动地各自定向至一或多个远端程序呼叫2210。依据一第二范例,然而,虚拟函数表2120被修正,如一一或多个远端程序呼叫2210的实施例的缺失的结果所示(或如一无需用到一远端程序呼叫的处理单元的结果所示),一或多个虚拟函数2150无需呼叫远端程序呼叫决定代码地被自动地重定向至一与程序1210有关的区域代码(Local Code)2220。
h.运行时间/分支行为
于一实施例中,运行时间度量指标被用以调整虚拟函数表至一最佳的行为。例如,其指出,一大部分执行于运行时间的加速代码可以取决于成功的处理器硬件中的分支预测;确切的,硅显示其可以包括至少一个处理器。运用数据子类别特定方法的C++和相似的程序语言可以降低做决定通过假设特定的情况于一子类别。所以,一运行时间分支决定是被交换以为了一汇编时间决定,而耗能变成常数虚拟函数呼叫重定向,其为相反于一不可预测的分支失误。有能力观察虚拟函数呼叫的运行时间行为使运行时间系统可以选择介于实施例中的一常式假设一组分支行为较其他更为可能。举例来说,若一常式有两个分支,代码的四个版本可以被产生,其中四个版本恰当地控制不同的情况,但其中其代码示被产生通过假设不同的是/否可能性于分支上。
所以,依据一实施例,代码的多个版本被产生以使分支最佳化。进一步的,请参阅图23,其为绘示依据一实施例的示范性的修正指令的选择范例2300。特别地,一指令510的预定义版本(Predefined Version)2310被存取,其中预定义版本2310包括代码2311被映射至一多个条件分支(Conditional Branch)2312。此外,多个指令510的修正模式(ModifiedVersion)2320被产生,其中修正模式2320包括N个修正模式(其中N是一大于一的整数);进一步的,修正模式2320被显示于图23中如包括第一修正模式至第N修正模式2321-2323。再者,任一修正模式2320包括被修正的代码2311以跟随一不同的条件分支于多个条件分支2312中。举例来说,于图23,第一至第N修正模式2321至2323被显示如分别地包括第一修正代码组至第N修正代码组2324-2326,其中第一修正代码组至第N修正代码组2324-2326已被修正以分别地跟随第一条件分支至第N条件分支2327-2329。
一示范性方法以选择使用哪一代码版本,其关于(1)分配一位元于一钥匙中至各个决定/分支于该代码中的一多个决定/分支,以及(2)依照一特定的事件顺序设定决定/分支中的位元,其中事件是与对应的决定/分支有关。其是可以被完成的,举例来说,于硬件级别与一”shift-and-or”的阴影分支操作的操作(其有一最小的影响于效能上),待呼叫/返回操作之后,钥匙被自动地重设。于有问题代码顺序的最后,钥匙可以被用如部份的”hash”外观以选择一特定的常式版本(有一负数个可能的常式版本中)以给下次顺序被呼叫,其中特定的常式版本被选择由于其为相对的有效率的版本对执行等常式来说。再者,其指出,呼叫端的更新是极微的且可以被执行于一分离的线程上(例如,通过硬件支持,仰视与重写作业可以被独立的分支以运作,当控制的主要线程漫游于其他地方)。此使”单一线程”代码自我最佳化通过用被用合新于一多核心处理单元结构以执行即时运算模式转换。
继续参阅依据一实施例的示范性的修正指令的选择范例2300,与多个修正模式2320相关联的多个行为2330是分别地被预测。此外,一与指令510有关的执行常式1820被存取,且一与执行常式1820有关的运行时间的行为(Runtime Behavior)2340被识别。另外,一修正模式由修正模式2320中被选择,如选择版本(Selected Version)2350所呈现,以于一执行常式1820的执行过程中被执行,基于一修正模式的预测行为(PredictedBehavior)对应于运行时间的行为2340。
另外,一实施例提供,当有重定向/远端程序呼叫版本,虚拟函数的分支行为可以被监控,且,若其为次佳的,虚拟函数表入口可以被交换以获得较合适于行为的另一个。一实例为模型代码于Spice模拟器中被使用,其中模型代码有很多因素可以选择使用哪一个方程序以计算电压与电流;然而,大多数的因素是运行时间常数,不会改变于模拟器开始后。用一一般的模型代码的自我监控版本当起始版本,第一少数呼叫于一模型例子上可以被观察,而一有最佳化分支预设值(或没有分支)的无监控版本的转换可以被执行。其指出,编译程序系统增加监控代码而使用者将不会察觉到此。分支代码也可以被识别于现有的汇编代码,而方法可以被应用于重新产生汇编代码于不同的形式。
于一示范性实施,当最佳化虚拟函数表时,虚拟函数表指标于类别例子中可以被改变(例如指着不同的虚拟函数表版本),或者是该虚拟函数表自身的入口可以被改变;选择是基于应用的类别方法与类别例子的数目。于事件一相对大量的相同类别的例子被应用,一虚拟函数表的常见组被应用以降低存储器被使用的数量(例如一数以千计的例子被应用当一明显小的数量的有区别的作业模式被应用)。相似地,若有一相关存在于各自的不同的方法的行为,则一状态的改变于类别例子中可以牵涉于改变一数量的方法已使最佳化效能可以被达成,而更新虚拟函数表指标可以比改变全部虚拟函数表的方法指标来得快。然而,于本事件中,例子的数目是相对的小而有小关联于各自的应用的方法的行为,一更新处理独立的虚拟函数表的入口被应用,其中该处理可以被参阅如,举例来说,呼叫端重写。
进一步的,请参阅图24,其为绘示依据一实施例的第一示范性的虚拟函数的重新映射范例2400。特别地,相关联于(例如包括或被映射于)指令510的执行常式1820被存取,而一虚拟函数(Virtual Function)2410的第一实施2411和第二实施2412被识别,其中虚拟函数2410包括一虚拟函数表入口2413指向第一实施2411,而其中虚拟函数2410进一步包括一虚拟函数指标2414映射于自多个虚拟函数表2430中的一第一虚拟函数表2431。绘图的目的为显示,多个虚拟函数表2430被显示于图24中,如包括第一虚拟函数表至第N虚拟函数表2431-2433。此外,一执行常式1820的一部分的效能是随第一实施2411被起始,如执行常式效能(Executable Routine Performance)2440所呈现,而一分支行为2450被定义通过第一实施2411于执行过程中被呈现。
于分支行为2450被识别后,虚拟函数表指标2414可以被映射,或者虚拟函数入口2413可以被更新,基于此分支行为2450。特别地,请继续参阅图24,分支行为2450的效能分析(Performance Analysis)2460被引导以判定第二实施2412对应于分支行为2450的程度是比第一实施2411对应于分支行为2450的程度来的大。另外,虚拟函数指标2414是被映射至多个虚拟函数表2430中的第二虚拟函数表2432(例如,该等虚拟函数表指标2414不会再被映射至第一虚拟函数表2431)基于效能分析2460,其中第二虚拟函数表2432包括一映射于第二实施2412的指标2434;选择性地,虚拟函数表入口2413可以被更新以指向(例如重定位)第二实施2412(而不是第一实施2411)基于效能分析2460。
更进一步的,其指出,虚拟函数2410的第一实施2411和第二实施2412可以各自成为(或可以对应于各自的实施)两个虚拟函数2410的不同的版本。于本方法中,其指出,使用单一虚拟函数的不同的版本可以通过使用不同的虚拟函数而被分辨出来;例如,于一C++类别,多个有区别的虚拟函数可存在,而其任一可以被提供通过一不同的虚拟函数的狭缝/入口。相反地,一实施例提供单一虚拟函数的不同版本被汇编(或预汇编),而这些虚拟函数版本中的一版本被选择(例如于运行时间)基于该等版本,嵌入或表现一相对有效率有影响力的一特定方法的实施。进一步的,考虑实例有一类别可以有”方法A”与”方法B”被应用如”虚拟函数A和虚拟函数B”,其中虚拟函数的”入口0”和”入口1”将各自指向”A”和”B”。一”B”的新版本(例如B1)可以被产生通过以不同参数汇编”B”,而”B1”可以被应用通过改变”入口1”以指向”B1”而不是”B”。其他本方法的示范性应用可以包括交换介于一常式的最佳化与除错版本。举例来说,于一除错环境,当使用者设定一断点于一常式中,代码版本可以被交换自一完全最佳化的版本成为一可支持除错或断点的版本,其可以有效能的优点通过对整个程序汇编版本之间的转换。
于一实施例中,一程序也可以表现特定的行为,于做一特定的决定之后,不同的行为较可能于下次发生通过有问题的呼叫。一特定的函数实施可以重写其"呼叫端"(例如,为了呼叫函数的虚拟函数表的入口)以致于下一次将比较不可能疏忽快取暂存区。一如上述的例子牵涉逻辑操作的模拟模型,其中模型转换于状态之间,以及其中每个状态反应不同。用于这种模型的代码可具有一个”状态变量(State Variable)”,其被查询作为类别实例的一部分。因此,能够重写代码入口点以避免状态变量的实施,由于状态是隐含于正在进行的呼叫中。在编译程序系统知道利用呼叫-地址重写入的情况下,如状态变量能从产生的代码被消除,从而保存存储器。
请参阅图25,为绘示依据一实施例的示范性的呼叫位置的修正范例2500。特别是,存取相关联于(如包含于或映射于)指令510的程序1210,其中程序1210包含映射于预定义呼叫位置(Predefined Call Site)2520的一预定义函数(Predefined Function)2510。此外,使用预定义呼叫位置2520执行预定义函数2510的一呼叫570,例如使用一虚拟函数表的指标入口,并且通过识别预定义函数2510所表示的分支行为(Branch Behavior)2450被识别为呼叫570的结果。再者,预定义呼叫位置2520被修正,通过呼叫位置修饰(Call Site Modification)2530所表示,根据分支行为2450。例如,根据分支行为2450,实施的虚拟函数表的指标(VFT Pointers)可以被重新映射至一不同的虚拟函数表的入口。
在一示范性的实施中,一硬件支持的版本被提供,其中一呼叫位置地址储存于阴影暂存器之中。特别是,该方法涉及增加执行常式至所产生的代码(如“set$call(<version>)”)以使用阴影暂存器的信息,其中最终不进行这样的常式,如果硬件/软件无法支持这种代码。再者,其指出分支失能(Branch Miss)能引起管线失速,当处理器等待其取码硬件以赶上其中分支实际地进行。依据第二示范性,然而,一个完全实线系统被提供,其中分支预测硬件被消除,因为软件本身为更好地预测其本身的行为。其指出,这节省了时间和功率,并使得多个元件表面积可用于快取存储器及/或其他功能。
因此,其指出,一实施例提供用于呼叫位置重写(Call-Site Rewriting)。依据一示范性的方案,然而,GNU的编译程序集合(Gnu CompilerCollection,GCC),这是GNU的C语言编译程序,其允许标记分支的选择,但GNU的编译程序集合不产生多个版本的代码。前述尽管如此,在一实施例中,编译程序的系统被配置以使用户能够指示分支行为是运行时间的常数,以支持前述内容,并使得产生的代码版本消除不必要的分支的决定。因此,除了创建重定向及远端程序呼叫的代码,不同版本的目标码将被生成以供运行时间的系统使用,而额外的版本可以被包含于可执行程序及/或它的共享程序库。其指出,C++程序库可另外使用“名字修饰(NameMangling)”,使多个版本的常式使用相同的名字而能存在以支持函数超载(Function Overloading)。
如前所述,一个程序可以表现出某些行为,借以在做完一个特定的决定后,不同的行为更可能发生于将来。在一个实施例中,一个虚拟函数可以相应地重新映射。为了进行说明,请参阅图26,图26是依据一实施例的第二示范性的虚拟函数的重新映射范例2600。特别是,存取相关联于(如包括或映射至)指令510的执行常式1820,识别虚拟函数2410的第一实施2411及第二实施2412,其中虚拟函数2410包括一虚拟函数表入口(VFTentry)2413指在第一实施2411,并且其中虚拟函数2410更包括一虚拟函数表指标(VFT pointer)2414,其从多个虚拟函数表(Virtual Function Table,VFT)2430之中映射至一第一虚拟函数表2431。为了说明的目的,多个虚拟函数表2430被绘示于图26为包括第一至第N虚拟函数表2431-2433。此外,启动与第一实施2411的部份的执行常式1820的效能,通过执行常式效能(Routine Performance)2440所表示,识别当这个效能的期间由第一实施2411所表现的分支行为2450,以及根据分支行为2450所预测的虚拟函数2410的一可能的未来行为(Possible Future Behavior)2610。
在预测可能的未来行为2610之后,根据这个可能的未来行为2610,可以重新映射虚拟函数表指标2414,或可以更新虚拟函数表入口2413。特别是,请再参阅图26,执行可能的未来行为2610的效能分析2460,从而判定相对应于可能的未来行为2610的第二实施2412的程度大于相对应于可能的未来行为2610的第一实施2411的程度。另外,根据效能分析(Performance Analysis)2460,从多个虚拟函数表2430之中将虚拟函数表指标2414重新映射至第二虚拟函数表2432,(使得这样的虚拟函数表指标2414不再映射至第一虚拟函数表2431),其中第二虚拟函数表2432包括映射至第二实施2412的一指标2434;可替代地,根据效能分析2460,虚拟函数表入口2413可以被更新以指向(如直接地指向)第二实施2412(如而不是第一实施2411)。
E.示范性的呼叫传输
一些示范性的呼叫传输的技术现在将进行探讨。其指出,然而,本技术不限于这些示范性的呼叫传输的技术,并且可实施其他的呼叫传输的技术。
i.自动传输(Automatic Transferring)
鉴于上述情况,一实施例提供一处理单元(如一第一处理单元540),其存取一呼叫以判定呼叫是否应被重定向,如与一远端程序呼叫,至一不同的处理单元。如先前所解释的,这个决定可以与硬件及/或软件支持机制(Mechanism)以作出。在一实施例中,然而,控制线程在作出这样一个较高级别的决定之前可以首先自动地传输,例如在随后的远端程序呼叫的决定的处理被执行之前,从一不同的处理单元将控制线程自动地传输至第一处理单元540,因为这个其他的处理单元不具有存取所有的系统存储器。
为了说明自动呼叫传输的概念,请参阅图27,为绘示依据一实施例的示范性的自动呼叫的传输范例2700。特别是,识别与指令510相关联的全域存储器地址(Global Memory Location)2710。此外,从第三处理单元1621自动地传输呼叫570至第一处理单元540,以因应第三处理单元1621缺乏存取全域存储器地址2710以及第一处理单元540具有存取全域存储器地址2710。
为了进一步说明,虽然一个全域存储器地址可被实施,一示范性的实施提供,并非所有的处理器已经存取所有存储器,以及涉及不能被区域地存取或快取的存储器的呼叫可被自动地传输至处理单元存取。这可能使存储器的部分能够抵御骇侵。例如一处理单元将具有处理加密钥匙的任务,其中这样的处理单元是从具有存取相关联数据的多个实施的处理单元之中的唯一的处理单元。试图解决从其他的处理单元的数据空间将导致一分段故障(Segmentation Fault,SEGV),以及存取只能通过被允许传输的授权的(或"布烈谢德(Blessed)")的常式来实现,其是用于强化现有的代码的方法,其中要被保护的信息是在由安全性较低的用户代码所利用的共享程序库之中。
类似地,一实施例提供指令的存储器可被锁定在安全的处理单元,使得这样的处理单元是不能自由地运行其他代码。依据一示范性的实施,这可以通过定制存储器的保护在非分散式架构中来实现,尽管仍然会有从使用者代码至被提供一定程度保护的存储器的物理路径。根据一个示范性的实施,然而,远端程序呼叫机制将在一个分散性处理架构可供使用,使得不存在其他路径至存储器以被保护。
ii.存储器分配每个数据类型
依据一实施例,存储器分配是每个数据类型进行。特别是,示范性的实施提供这样的存储器分配是有些难以实施与C语言,但是C++及物件导向语言使用类型特定的建构器对于这个额外代码可以被注入。例如,当加载一个C++程序库时,存储器分配呼叫被识别为建构器以及修改以使用存储器的特定区域,使得数据将驻留一个特定的处理单元。
为了说明的目的,请参阅图28,为绘示依据一实施例的示范性的存储器的加载范例2800。特别是,识别相关联于(如分配至或包括于)一特定处理单元(如第二处理单元580)的快取存储器单元910,以及根据定位于快取存储器单元910内的预选数据地址530,执行快取存储器单元910至相关联于数据520的一特定的数据类型2810的分配,通过快取存储器分配(Cache Memory Allocation)2820所表示。此外,包括指令510的程序1210被存取,以及相对应于程序1210的程序语言2110被识别。
在其中建构器被嵌套的情况下,内部的建构器可被引导以分配存储器至相同的处理单元作为外部建构器,使得相关联的数据被收集。这可能是这种情况,例如,在任务中例如一模拟,其中一电路模型被分层级地构成。
再者,相对应于程序语言2110的一程序库2840被存取,其中程序库2840定义为包括一存储器分配呼叫(Memory Allocation Call)2850的建构器(Constructor)2170,以及其中存储器分配呼叫2850被映射至具有特定的数据类型2810的信息2860。另外,根据(在快取存储器分配2820期间执行)的分配,一修改(Amendment)2870至存储器分配呼叫2850被实施,从而产生程序1210的一修改的存储器分配呼叫2880及一修正模式(ModifiedVersion)2890,并且修改的存储器分配呼叫2880被执行,使得信息2860被加载至快取存储器单元910以因应修改2870。
请参阅图28,依据一实施例,执行呼叫570以向特定处理单元执行程序1210的修正模式2890以因应(在快取存储器分配2820的期间所执行)的分配。考虑实例,其中从第一处理单元540将呼叫570传输至第二处理单元580,并在第二处理单元580从第一处理单元540接收程序1210的修正模式2890。第二处理单元580执行呼叫570使得程序1210的修正模式2890被执行,其中程序1210的这个特定的版本的执行通过第二处理单元580执行以因应上述的存储器分配。
再者,一实施例提供对于前述存储器加载方法的代码注入法(CodeInjection Method)是大致相同于对于远端程序呼叫决定作成处理的代码注入法,并指出,(1)当一程序加载至存储器时,代码的注入被执行于每个处理单元的基础、(2)不同的处理单元可以具有不同版本的程序在存储器内,取决于当其被加载时是如何修改的以及(3)代码的位置意味远端程序呼叫的模式。相对于各种平台(Platform)和分散式计算环境其中不存在的物理共享存储器,其指出,这种方法可涉及一“仅有软件”的机制,虽然硬件支持可用于使处理更快及更有效。
iii.代码预处理(Code Preprocessing)
正如前面所指出的,一示范性的实施提供一特定类型的常式呼叫的用途,为了效率的目的,指标(Pointer)作为引数(Argument)而不是拷贝数据,而这些指标可被转换至按数值传递呼叫(Pass-By-Value Calls)。前述尽管如此,在一实施例中,一传输程序库(Transfer Library)被实施以传输数据于实施的处理单元之间,并且操作系统代码(Operating System Code)被预处理在这种传书之前,为了产生这种传输程序库,其中这个预处理涉及转译引址传递(Pass-By-Reference)的原始代码至按数值传递的支持代码(Support Code)。
为了说明,并请参阅图29,为绘示依据一实施例的示范性的数据的传递范例2900。特别是,一或多个代码程序库(One Or More CodeLibraries)2910被识别,以及与一或多个代码程序库2910相关联的引址传递的原始代码(Pass-By-Reference Source Code)2920被存取。此外,引址传递的原始代码2920被转译至按数值传递的支持代码(Pass-By-ValueSupport Code)2930,由此产生一传输程序库(Transfer Library)2940。再者,传输程序库2940是通过数值而不是通过引址用以传递数据520。
另外,在一个实施例中,原始目标码/常式被称为指标,指标被重新映射至通过远端程序呼叫的机制进行传输的区域拷贝。为了进行说明,并请参阅图30,为绘示依据一实施例的示范性的指标的重新映射范例3000。特别是,第一处理单元540及第二处理单元580分别地包括第一快取存储器单元620及第二快取存储器单元630,以及数据520被储存于第一快取存储器单元620。此外,在呼叫570中的一或多个指标3010被识别,且一或多个指标3010被转译,通过指标转译(Pointer Translation)3020所表示,从而配置呼叫570通过数值而不是通过引址以传递数据520。再者,呼叫570从第一处理单元540至第二处理单元580的传输被执行,以及数据520在这个传输期间通过数值以传递,从而储存数据520的一区域拷贝(Local Copy)3030在第二快取存储器单元630内。另外,一或多个指标3010被重新映射至区域拷贝3030,通过指标重新映射(Pointer Remapping)3040所表示,从而启动呼叫570以执行而不需要存取第一快取存储器单元620。
iv.远端程序呼叫的传输(RPC Transferring)
正如前面所指出的,一实施例提供一远端程序呼叫的机制可以被用于呼叫传输处理。例如,请参考图31,为绘示依据一实施例的示范性的远端程序呼叫的传输范例3100。特别是,一远端程序呼叫(Remote ProcedureCall,RPC)3110被调用,以由此从第一处理单元540传输呼叫570至第二处理单元580。在这方面,其指出,依据一示范性的实施,远端程序呼叫3110是一中间处理通讯(Inter-Process Communication),其允许电脑程序以引起一子常式(Subroutine)或程序(如一程序映射至呼叫570),以在各种资源(如多个处理单元)的一共享网络内的另一个地址空间中(如在一不同的处理单元中)执行。实际上,远端程序呼叫3110也可以在这个呼叫传输处理期间被配置以传输第一处理器540的一背景内容至第二处理器580。其指出,远端程序呼叫3110类似于一区域程序呼叫,所不同的是被呼叫的程序可以或不可以存在于相同的地址空间如同呼叫程序。相反地,两个不同的处理可以运行在相同的电脑系统上,或者它们可以分别地运行在不同的电脑系统上,与一网络使这样的系统彼此进行通讯。这样,远端程序呼叫3110可以被实施以实现相对有效和真正的分散式应用。
另外,在一实施例中,实施远端程序呼叫3110使得一“客户端(Client)/服务器(Server)”的模式不被利用。例如,在对比一个远端程序呼叫的模式,由此通过来源的处理单元(Originating PU)运行的客户端程序(ClientProgram)等待来自通过目标处理单元(Target PU)运行的服务器程序的结果,一实施例提供线程可以或不可以返回至来源的处理单元,以及这些线程因此可能从处理单元蜿蜒或漂移通过存储器至处理单元,如直到这样的时间,因为这些线程是被完全地执行(或从理论上讲,在线程不是最终执行的情况下,它们可无限期地漂移)。这是特别地相关于数据库(Database)检索,其中一个复杂的查询(Query)可以被发出而没有立即返回的期望。
例如,远端程序呼叫3110通过第一处理单元540开始,其将请求信息发送至到第二处理单元580以执行一特定的程序与提供的参数,如其中这个程序被映射至呼叫570。特别地,第一处理单元540区域地呼叫一代理函数以及传递其引数关于远端代码,其中这样的引数可以被传递作为地址。该代理然后(1)例如通过将它们转化成所谓的外部数据表示(ExternalData Representation,XDR)的预定义传输格式,以将远端程序引数进行编码、序列化或“按次序排列成形(Marshall)”,以及(2)产生一个系统呼叫,从而导致区域操作系统发送代码封包(Encoded Packet)至第二处理单元580(例如与使用者数据协议(User Data Protocol,UDP)的封包或区域信息伫列)。在这么多的客户端/服务器的模式没有被实施,其指出,第一处理单元540没有等待结果一旦其发出封包至第二处理单元580。因此,第一处理单元540是自由地处理一个不同的线程。
当或随后至接收代码封包的第二处理单元580后,其传递这个封包至一个调度常式(Dispatch Routine),将(1)远端程序引数解码、重现或“不按次序排列成形(Unmarshall)”(例如与预定义的外部数据表示的过滤器),以及(2)呼叫及执行远端程序。其指出,在这么多的客户端/服务器的模式没有被执行,第二处理单元580不启动编码、序列化或按次序排列成形结果的处理至一新封包,然后发送这个封包返回至第一处理单元540。相反地,第二处理单元580是自由地持续处理这个相同的线程或其他,在线程飘移至一不同的处理单元的情况下,开始/继续处理一不同的线程。因此,其指出这个方法与客户端/服务器的模式的远端程序呼叫相比产生更大的系统处理效率。
事实上,对于整个系统的效能,一示范性的实施提供一Pthread互斥锁呼叫(Pthread Mutex Lock Call),其可以被定义如下:
int pthread_mutex_lock(pthread_mutex_t*mutex);
数据传输用于远端程序呼叫的方法是(1)互斥地址(Mutex Address)、(2)代码地址、(3)用于返回的识别符号(如一个地址)以及(4)标头(Header),其可聚集至例如:4字最小值(4Word Minimum)。试图读取互斥直接涉及更新/刷新(Flushing)至少一个快取存储器线(Cache Line),其将是至少4个字,及可能的8个字以上。然而,快取存储器线将于多个处理器之间共享,而远端程序呼叫的呼叫可以是专用于涉及从存储器系统分离的处理单元,如通过实施,例如,一点对点(Point-to-Point),多处理器互连协议(InterconnectProtocol)(例如,英特尔的QuickPathTM或AMD的HyperTransport技术TM)。因此,远端程序呼叫的机制可以被实施,使得呼叫能以一相对地有效的方式被传送。
鉴于上述情况,其指出,多个线程的实施可涉及互斥操作的利用度(Utilization),其可以被实施,例如,使用信号机,以防止共同数据(CommonData)当在被修正的处理时被读取或修改的。其亦指出,互斥呼叫对于一特定的互斥操作可以一原子的方式在单个处理器上被连续地处理,使得没有机会重迭存取(以及因此没有竞争条件(Race Condition)或快取存储器一致性的问题)。其进一步地指出,有更多的处理单元或存储器的精细分割,它更可能是共享数据的特定部分具有其自己的处理单元,以及远端程序呼叫的处理将更快。因此,这种方法很好地进行扩展,使得相对大量的处理单元当存在代码被支持时可以被实施。
前述尽管如此,在一实施例中,用于执行远端程序呼叫的实际机制取决于被使用核心的类别。对于大多数处理器,呼叫/代码的背景内容在暂存器中被举行,传输控制至另一个处理单元涉及传输暂存器组。传输其他数据的能力被区域地保持在快取存储器中,以及可能是有益的,但它可能难以完全自动执行此。因此,一示范性的实施提供一使用者级别(UserLevel)的呼叫以“推(Push)”区域快取存储器的数据至一处理单元,其是远端程序呼叫的目标,其中这样的数据是在重定向代码(Redirect Code)中使用。因此,其指出,使用者级别控制可以被提供用于直接从快取存储器拷贝数据至从快取存储器。
例如,如果一个远端程序呼叫正在被实施以及远端代码被映射至来自于来源的处理单元的存储器的数据,远端程序呼叫的机制可以将数据推至呼叫之前或和呼叫一起。为了进行说明,现请参阅图32,为绘示依据一实施例的示范性的数据的储存范例3200。特别是,分别地与第一处理单元540及第二处理单元580相关联的第一快取存储器单元620及第二快取存储器单元630被识别,通过快取存储器识别3210所表示。此外,储存在第一快取存储器单元620中及相关联于指令510的数据值3220被识别,通过数据值识别3230所表示。再者,数据值3220被储存在第二快取存储器单元630中以因应远端程序呼叫3110,如当从第一处理单元540传输呼叫570至第二处理单元580,远端程序呼叫3110"推"数据值3220至第二快取存储器单元630。
为了进一步说明,并参照涉及fprintf函数的前述实例,一示范性的实施提供在重定向代码中推引数至呼叫的选项。选项至推函数控制区域快取是否被刷新因此,呼叫可能类似于以下内容:
void push(local_address,data_size,target_pu,option_flags);
如果数据在区域的快取存储器或其它区域的存储器是不实际的,则没有采取动作以检索或移动数据,在这种情况下,指令是有效地一个“无作业(no-op)”,其可以被定义,例如,作为一电脑指令,其利用相对较少量的存储器空间,但没有特定的操作,使得处理器仅仅移动至下一顺序指令(Next Sequential Instruction)。目标的处理单元的快取策略(Caching Policy)也可以被考虑,使得操作可以被跳过。使用者还可以提供与“推”的额外信息作为数据是否在区域快取存储器中被保留。
除了前述,一实施例提供远端处理单元可具有保持或延缓传输呼叫,直到数据以到达的能力。为了进行说明,请再参阅图32,一实施例提供呼叫570的执行是由第二处理单元580所延迟,通过执行延迟(ExecutionDelay)3240所表示,直到储存数据值3220在第二快取存储器单元630。其指出,延缓传输呼叫的执行,直到数据已经到达,可有助于避免停转(Stalling)远端处理单元的主要处理管线。
鉴于上述情况,并根据实施例,其指出,“推”存储器/数据的概念可被实施。依据一示范性的实施,这样一数据“推”的方法(Data PushingApproach)解决了有关(1)知道何时使区域快取存储器无效及(2)当请求数据时在远端导致延迟(Latency)的两个问题。因此,注入的远端程序呼叫的代码能从区域快取存储器推额外的数据,并将其与远端程序呼叫发送,从而无效/释放区域快取存储器于处理中,或设置一直接存储器存取(DMA)的传输(例如,区域快取存储器的外面),使得当呼叫被远端地执行时,实施的数据将已经定位于远端处理单元的快取存储器中。
依据一示范性的实施,利用推、重新映射及漂移在一起的机制意味着一任务,如数据库查询可以通过多个处理单元有效地移动,而无需存取共享存储器的机制以检索本身的查询的部分,并且它可以存在于区域存储器及快取存储器(而不是在其他存储器)。同样地,一物件,如一视讯框/序列,能通过一连串的处理单元传递以用于影片压缩或解压缩。然而,在程序员的级别,这是没有必要知道运行时间系统的架构;相反地,代码将被分割,使得潜在的远端程序呼叫的边界可以被识别。例如,在通用绘图处理单元(General Purpose-Graphical Processing Unit,GP-GPU)的系统中用于视讯处理,特别是“经纱(Warp)”,其中一个经纱是运行在相同的代码的处理器的银行(Bank),将与特定的常式(使用代码磁区映射)相关联关联,以及依靠类型的分配(Type-Dependent Allocation)和重新映射能利用中间银行存储器,使得使用者级别的任务会自动“漂移”通过绘图处理单元的管线。现有的方法编程的绘图处理单元包括统一计算架构(CUDA)及开放运算语言(OpenCL),其中针对特定的处理架构及涉及学习新的代码式样,而“漂移线程”的方法允许程序员使用熟悉的平台独立(对称多处理(SMP))的类型,并在那里代码的实际运行和数据储存的架构问题可以独立地处理,因此使代码更可携式及更长的寿命。
在一实施例中,全域存储器地图(Global Memory Map)至在一个特定的系统或网络中的所有存储器被识别地分配可以是不同于个体的处理单元的各自的存储器地图。以及当远端程序呼叫处理时地址可以被转译。为了进行说明,并请参阅图33,为绘示依据一实施例的示范性的远端程序呼叫的构成范例3300。特别是,各别地与第一处理单元540及第二处理单元580相关联的第一区域存储器地图(Local Memory Map)3310及第二区域存储器地图3320,(如通过第一处理单元540)所表示。此外,在第一区域存储器地图3310及第二区域存储器地图3320之间的区别(Distinction)3330被识别,以及根据区别3330产生一存储器地址转译(Memory Address Translation)3340。再者,存储器地址转译3340被利用以构成远端程序呼叫3110。以这种方式,远端程序呼叫是根据客户端及服务器处理单元的区域存储器地图所产生。
实际上,在一实施例中,区域存储器可以被映射到较低的地址空间,使得大多数的区域存储器可与少量的地址位元存取。考虑实例,处理器是被设计为处理一个16位元或32位元的地址空间,而不是一个64位元的地址空间,这也可用于系统内的每个处理器的情况下得以实施。这类似于“虚拟存储器(Virtual Memory)”,但它也可以实现在应用层中,使得多台计算机可以跨越并且具有更佳的精细度。因此,相对大的程序被实施,其是跨越多个机器,映射整个系统可能是不可行的,如果控制不是保持在映射处理的区域存储器。因此,在全域地图中运行时间的代码将映射区域机器至一识别空间,部分的全域地图可(例如,通过软件而不是硬件)被区域地快取,以及呼叫对于非区域的数据将自动地传输当必须时,注意这个工作对于单一地址引数呼叫(如互斥呼叫)但可能不工作对于呼叫至具有引数的执行常式,其是指标至存储器在不同的机器上(没有软件的快取,其可涉及)原始代码的级别的意识)。
正如前所述,在一个常式不涉及返回(例如如C/C++所示作为"无效(Void)"的呼叫)的情况下,一实施例提供远端程序呼叫的机制可以立即区域地返回而不等待远端处理单元。为了进行说明,并请参阅图34,为绘示依据一实施例的示范性的执行常式的效能范例3400。特别是,存取程序1210,其包括指令510以及关联于第一控制线程(First Thread ofControl)3420的执行常式3410。此外,在呼叫570中的一或多个指标3010被识别,并且一或多个指标3010被转译,通过指标转译3020所表示,为了构成呼叫570通过数值而不是通过引址以传递数据520,从而产生一第二控制线程(Second Thread of Control)3430。再者,相关联于(如包括于或分配至)第二处理单元580的快取存储器单元910被识别,通过快取存储器识别3210所表示,以及数据520通过数值传递以因应远端程序呼叫3110从而储存数据520的区域拷贝3030在快取存储器单元910中以提供第二处理单元580与第二控制线程3430。另外,根据第一控制线程3420执行执行常式3410与第一处理单元540,当根据第二控制线程3430第二处理单元580执行指令510的执行,以因应独立于第二控制线程3430的第一控制线程3420,其中执行常式3410缺乏一返回请求对于当执行时所产生的数据值3220。
鉴于上述情况,其指出,依据一实施例,第一处理单元540能够继续而无需等待从远端程序呼叫的返回,在此情况下,将假设第二处理单元580将完成呼叫。例如,如果一引址传递列印呼叫(Print Call)被转换成一按数值传递呼叫,并且如果第一处理单元540不被提供(当这样的执行事实上已经成功时)传输呼叫的执行已经成功时的确认,则传输呼叫因此成为一个独立的线程(例如,一个漂移线程)。
前述尽管如此,其指出,在一个实施例中,呼叫传输程序根据共享存储器一致性机器指令的实施所执行。为了进行说明,并请参阅图35,为绘示依据一实施例的示范性的执行常式(Executable Routine)的传输范例3500。特别是,一第一处理核心(Processing Core)3520被识别,其中,第一处理核心3520正在执行映射至数据520的第一执行常式3530,并且其中第一执行常式3520包括共享存储器一致性机器指令(Shared-MemoryCoherence Machine Instruction)3540。此外,一第二执行常式3550被存取在第二处理核心3560;因此,其指出,两个不同的处理核心被实施。根据映射至数据520的第二执行常式3550,以及根据包括共享存储器一致性机器指令3540的第二执行常式3550,调用一程序呼叫(ProcedureCall)3580(例如远端程序呼叫),从而从第二处理核心3560传输第二执行常式3550至第一处理核心3520。事实上,在这么多的在这么多的第一处理核心3520已经在处理第一执行常式3530,其包括共享存储器一致性机器指令3540,当第二执行常式3550的执行期间,第一处理核心3520将能够有效地执行这些相同的共享存储器一致性机器指令3540。
请再参阅图35,一实施例提供不同的处理单元分别地包括第一处理核心3520及第二处理核心3560。考虑实例,其中第一处理单元540及第二处理单元580,分别地包括第二处理核心3560及第一处理核心3520。由于具有决定传输一呼叫的结果,从在第一处理单元540中的第二处理核心3560传输呼叫至在第二处理单元中580的第一处理核心3520,使得从第一处理单元540传输控制线程至第二处理单元580,以及使得第一处理单元540因而自由地存取不同的独立的线程。
依据一实施例,然而,一单一处理单元(例如,第一处理单元540)包括第一处理核心3520及第二处理核心3560两者,例如其中远端程序呼叫被路由于核心之间于多个核心处理器内。例如,如果一特定的处理单元具有多个核心,可以区域地使用远端程序呼叫的机制,以便只有一个处理器处理在共享数据上的呼叫(如相同处理核心被分配给所有的互斥呼叫)。在这种情况下,呼叫将跨越核心共享一相干存储器系统(Coherent MemorySystem)(如L2快取存储器),其是相对于远端程序呼叫,远端程序呼叫路由在编址不一致的存储器的不相交部分的核心之间。
III.示范性的电脑系统环境
其指出,本技术的各种组件可被硬接连的或配置以执行在此所讨论的各种动作和操作。依据一实施例,然而,一个电脑系统可以被实施以执行本技术的各种操作。因此,现在将探讨示范性的电脑系统和结构。然而,本技术不限于这个示范性系统及配置。实际上,其他系统和配置也可以实施。
现在请参阅图36,为绘示依据一实施例的示范性的电脑系统3600。电脑系统3600可以是任何类型的计算装置(例如,用于执行与程序或演算法相关联的计算、处理、操作及功能的计算装置)。于本内文的讨论中,某些处理和步骤被讨论其被实现,依据一实施例,作为一系列的指令,如软件程序,其驻留在电脑可读取存储器单元(Computer-Readable MemoryUnits)内,以及通过电脑系统3600的一或多个处理器所执行。当执行时,指令使电脑系统3600执行特定行动,并呈现本文中所描述于各种实施例中的特定行为。
请再参阅图36,电脑系统3600包括一地址/数据总线,其被配置以在一来源及一目的地之间通讯信息。此外,一或多个数据处理器,例如处理器3620,其耦合于地址/数据总线,其中处理器3620被配置以处理信息及指令。在一实施例中,处理器3620是一个微处理器或微控制器,尽管其它类型的数据处理器可以被实施。
电脑系统3600亦包括许多的数据存储元件,例如,易失性存储器单元(Volatile Memory Unit)3630。易失性存储器单元3630是通讯地相关联或耦合于地址/数据总线(Address/Data Bus)3610。此外,易失性存储器单元3630是配置以储存用于处理器3620的信息及指令。再者,易失性存储器单元3630可包括例如随机存取存储器,诸如静态随机存取存储器及/或动态随机存取存储器。电脑系统3600更包括一非易失性存储器单元(Non-Volatile Memory Unit)3640,其通讯地相关联或耦合于地址/数据总线3610以及被配置以储存静态信息及指令用于处理器3620。在一个实施例中,非易失性存储器单元3640包括只读存储器(Read-Only Memory,ROM),诸如可程序化只读存储器(Programmable ROM)、快闪式存储器(Flash Memory)、可擦除可编程只读存储器(Erasable Programmable ROM,EPROM)及/或电可擦除程序化只读存储器(Electrically ErasableProgrammable ROM,EEPROM)。前述尽管如此,其指出,本技术不限于使用本文所讨论的示范性的存储单元,并且可以实施其它类型的存储器。
请再参阅图36,电脑系统3600更包括一或多个信号产生及接收装置,例如信号产生/接收单元(Signal Generating/Receiving Unit)3650,其是通讯地相关联或耦合于地址/数据总线3610,及其被配置以使电脑系统3600与其他电子元件及电脑系统联系。通过一或多个信号产生及接收元件以实施通讯接口可利用有线(如串联电缆、光纤电缆、数据机以及网络转接器)及/或无线(如无线数据机及无线网络转接器)的通讯技术。
在一实施例中,电脑系统3600可选地包括通讯地相关联或耦合于地址/数据总线3610的字母数字输入元件(Alphanumeric Input Device)3660,其中,字母数字输入元件3660包括用于传递信息及命令选择至处理器3620的字母数字及功能键。再者,依据一个实施例,游标控制元件(CursorControl Device)3670是通讯地相关联或耦合于地址/数据总线3610,其中,可选的游标控制元件3670被配置以传递使用者输入信息及命令选择至处理器3620。例如,游标控制元件3670可以使用鼠标,追踪球(Track-Ball),追踪垫(Track-Pad),光学追踪元件(Optical Tracking Device),或一触控式萤幕(Touch Screen)来实施。在第二个例子中,游标被引导及/或激活以对来自字母数字输入元件3660的输入做出响应,例如当特定键或键序列命令被执行时。其指出,然而,一游标可通过其他方式如语音命令所引导。
请再参阅图36,电脑系统3600,依据一个实施例,可选地包括一数据储存元件3680,其是通讯地关联或耦合于地址/数据总线3610,其中,数据储存元件3680被配置以储存信息及/或电脑可执行指令。为了说明,一实施例提供数据储存元件3680是一个磁盘或光盘驱动机,例如硬盘驱动机(Hard Disk Drive,HDD)、软式磁盘驱动机(Floppy Disk Drive)、光盘只读存储器(CD-ROM)的驱动机、数字多用途光盘(Digital Versatile Disk,DVD)的驱动机或蓝光光盘TM(Blu-Ray Disk,BD)的驱动机。
另外,在一实施例中,一显示元件(Display Device)3690为通讯地相关联或耦合于地址/数据总线3610并被配置以显示视频及/或图形。显示元件3690可以是例如阴极射线管(Cathode Ray Tube,CRT)的显示器、场效发射显示器(Field Emission Display,FED)、电浆显示器(Plasma Display)、液晶显示器(Liquid Crystal Display,LCD)、发光二极体(Light Emitting Diode,LED)的显示器或任何其他显示元件适合于显示视频及/或图形图像以及能够被使用者识别的字母数字符号。
其指出,电脑系统3600依据一实施例被表示为一示范性的计算环境。然而,电脑系统3600没有严格限制于一个电脑系统。例如,一实施例提供电脑系统3600表示为根据本文所描述的各种实施例以被使用的数据处理分析的一类型。再者,其他的计算系统可被实施。实际上,本技术不限于任何特定的数据处理环境。
除了上述之外,其指出,本技术的各种方法可以通过被配置以执行一组指令的电脑系统来执行。这样的指令可以被储存,例如在一电脑可读取媒体之上或之内(如在一非暂时性的电脑可读取媒体之上或之内或在一暂时性的电脑可读取媒体之上或之内,其包括除了一或多个暂时的传播信号本身的东西),使得指令在被执行时导致一电脑系统以执行本技术的一种方法。因此,现在将探讨示范性的系统及用于电脑可读取媒体的配置。然而,本技术不限于这个示范性的系统及配置。实际上,其他系统及配置也可以被实施。
现请参阅图37为绘示依据一实施例的示范性的指令执行系统3700。示范性的指令执行系统(Instruction Execution System)3700包括一电脑可读取媒体(Computer-Readable Medium)3710,其被配置以储存指令集(SetOf Instructions)3720,当其被执行时导致一电脑系统,如示范性的电脑系统(Exemplary Computer System)3730,执行本技术的一种方法,如示范性的方法(Exemplary Method)3740。例如,在一实施例中,指令集3720由电脑系统3730从电脑可读取媒体3710取得,然后电脑系统3730执行指令集3720从而执行示范性的方法3740。
前述尽管如此,其指出,本文所探讨的基于电子的或软件的系统仅仅是对于本技术可以被实施如何合适的计算环境的实例,并且这些实例不旨在暗示作为本技术的使用或功能的任何范围。也不应该将这样的示范性系统解释为具有关于被说明于揭示的实例中的任何一个或组合的依赖或要求。
IV.示范性的实施
鉴于上述情况,其指出,本技术的各种实施例涉及下列中的至少一个:
特征1:利用数据区域性(Data Locality)以避免指令代码快取未命中,例如通过分配特定的数据类型至特定的处理单元;
特征2:分配在存储器中的数据,从而实现数据区域性以支持特征1;
特征3:实施“漂移线程”,以利用特征1及2;以及
特征4:代码的注入及运行时间的修饰用于效能并且以支持特征1至3。
其进一步指出,各种实施例涉及处理器在存储器中的架构(Processor-In-Memory Architecture)及软件方法用于平行处理与用于加速单线程代码支持的实施。再者,一示范性的实施提供支持漂移线程的平台被配置以提供一应用程序设计接口(Application Programming Interface,API),其是可从C及/或组合级别的指令呼叫的,为了调用远端程序呼叫的机制。
根据一示范性的实施中,本技术的各种实施例的值,可以通过观察基于硬件描述语言如Verilog和VHDL的电路模拟的行为以理解。这样的描述是非常平行的,但不加速线性(如N倍快速用于N处理器,其中N是大于1的整数值)与各种定义的对称多处理架构。效能的缺失主要是因为在共享存储器系统中的瓶颈,其通过从多个实施处理器之中的每个处理器所利用。再者,代码由于快取存储器一致性的问题可能难以验证,并且错误(Bug)可能难以复制。另外快取存储器一致性的问题也能花费在硬件及电力两方面。依据本技术的各种实施例,然而,这些相同的模拟程序能被使用,但通过管理如何分配表示电路的模拟数据,其就可以确保于模拟的相邻部分间的通讯是区域的,因其将在模块化的实际的、物理的电路。
考虑实例,其中一大型集成电路被提供在一硅基板上,其已经被分离成瓦片(Tile),其中每一瓦执片行其自己的处理并与仅沿着其边缘的邻居进行通讯。以类似的方法至瓦片在模拟中通过分配存储器至处理单元,边界通讯将被类似地区域化,并且一模拟的非邻接段(Non-Adjacent Segment)将不会干扰。线程产生在处理单元上用于通讯信号值的改变可以是分叉和分离(如通过注入代码),使得他们将”漂移”至其他的处理单元以及完成后不复存在,从而留下来源处理单元自由地做其他工作。
此外,依据一示范性的实施,以汇编代码模拟器(例如)的次要问题是,代码是特定的至电路,使得用于组件具有多种不同的用途的大型电路通常产生比较大的程序,以及大型随机存取的程序代码往往在指令提取上会错过快取。在个别的处理单元上这么多的数据变化通过一分配数据类型的可接受的范围所定义,相对应的代码本身将被最小化,以及未命中率会降低。
再者,某些问题与涉及硬件模拟及数据库搜寻的应用可以被称为,例如,当数据在程序的生命周期期间在系统中没有明显的改变,作为”数据静态(Data Static)”的问题,虽然各种操作可在数据上执行,在不可预期的行为下(如对其修正)而导致较差的快取效能以及用于存储器存取的竞争。本技术依据一实施例的一处理单元架构被配置以避免这样的”数据静态”的问题,因为处理单元至处理单元的通讯不是通过共享的会流排,以及处理单元将自动地限制快取存储器使用代码,其将被使用于处理数据,他们处理(作为区域的工作数据至处理单元)。这样,一旦可靠的数据的分配系统/频道被建立,则其被隐含地配置以相对有效的方式来执行。
根据一示范性的实施中,例如当应用在结构化或无结构化的数据库进行搜索时,在分散性处理架构上漂移线程的方法至代码执行是特别适合于涉及大量的静态数据。考虑实例,其中一线程被配置以识别或查找在数据库中的信息。这个线程漂移通过多个处理单元,因为其通过索引代码及然后通过数据本身,伴随着写回至来源的处理单元的代码,因为其击中数据中的目标。多个请求可以被同时地处理而没有太多的干扰,以及如果当处理的时候存在瓶颈,如可能会出现,例如,在一索引中,附加处理单元能被显然地分配以处理相同的地址空间,使用远端程序呼叫的选择机制以挑选随机的或较容易从潜在的目标中加载的处理单元两者任一。
尽管本文所讨论的各种实施例涉及一系列的用于实现结果的特定的步骤、动作或操作,其指出这些步骤、动作或操作是可以依据一些示范性的实施来执行各种步骤,动作或操作的实例。实际上,在此揭示的实施例可被配置使得各种其他的步骤、动作或操作被执行,如被列举的步骤、动作或操作的变化。再者,于此所揭示的步骤可以以不同于之前所呈现的顺序来执行,以及在部分实施例中并非所有的步骤一定要被执行。
V.示范性的摘要概念
其指出,前述的讨论已发表在至少以下概念:
概念0一平行处理机器(Parallel Processing Machine)包括或包含:
通讯地相关联或耦合于彼此或彼此连接的多个处理单元(PU),其中每个多个处理单元具有区域存储器,以及其中根据在与指令相关联的存储器中的数据或代码地址,多个处理单元被配置以执行一指令或传输一指令的执行至另一个处理单元。
概念1一电脑可读取媒体,用以储存一组指令,当组指令被执行时,引起一电脑系统执行一处理资源分配的方法,该方法包括或包含:
识别映射至具有一预选数据地址的数据的一指令;以及
根据预选数据地址,判定是否从一第一处理单元传输指令的一呼叫至一第二处理单元。
概念2如概念1所述的电脑可读取媒体,其中该方法更包括或包含:
选择与第一处理单元相关联的一快取存储器单元;
加载指令至快取存储器单元;以及
在与指令相关联的一边界注入一附加代码组(Extra Code Set)至快取存储器单元,指令为一目标指令,以及配置附加代码组使得第一处理单元能够判定是否传输呼叫至一特定处理单元。
概念3如概念2所述的电脑可读取媒体,其中该方法更包括或包含:
分别地识别与一或多个预选执行常式相对应的一或多个执行常式名;以及
根据一或多个执行常式名选择附加代码组,以便从一引址传递呼叫转换呼叫至一按数值传递呼叫。
概念4如概念1所述的电脑可读取媒体,其中该方法更包括或包含:
分别地识别与第一处理单元及第二处理单元相关联的一第一快取存储器单元及一第二快取存储器单元;
分别地识别与一第一数据组及一第二数据组相关联的一第一数据地址及一第二数据地址,第一数据地址及第二数据地址分别地位于第一快取存储器单元及第二快取存储器单元内;以及
根据第一数据地址及第二数据地址,分别地执行分配第一快取存储器单元及第二快取存储器单元至第一数据组及第二数据组。
概念5如概念4所述的电脑可读取媒体,其中该方法更包括或包含:
识别映射至指令的一数据组;以及
判定数据组目前被储存在第二快取存储器单元,而不是储存在第一快取存储器单元,从而决定从第一处理单元传输呼叫至第二处理单元。
概念6如概念1所述的电脑可读取媒体,其中该方法更包括或包含:
分别地识别与第一处理单元及第二处理单元相关联的一第一快取存储器单元及一第二快取存储器单元;
存取呼叫于第一处理单元,呼叫包含一引数,引数显示指令映射至预选数据地址;
分析引数于第一处理单元以作出一判定,判定为预选数据地址不位于第一快取存储器单元内;以及
根据判定识别呼叫作为一潜在的重定向呼叫。
概念7如概念6所述的电脑可读取媒体,其中该方法更包括或包含:
判定预选数据地址不位于第二快取存储器单元内,从而使用第一处理单元作出一决定以执行与潜在的重定向呼叫相关联的一目标码;以及
根据决定,使用第一处理单元执行目标码。
概念8如概念6所述的电脑可读取媒体,其中该方法更包括或包含:
判定预选数据地址位于第二快取存储器单元内,从而识别潜在的重定向呼叫作为一实际的重定向呼叫;以及
从第一处理单元传输实际的重定向呼叫至第二处理单元。
概念9如概念1所述的电脑可读取媒体,其中该方法更包括或包含:
识别与指令相关联的一代码或数据存储器地址;以及
根据与第二处理单元相关联的代码或数据存储器地址,从第一处理单元传输呼叫至第二处理单元。
概念10如概念9所述的电脑可读取媒体,其中该方法更包括或包含:
判定代码或数据存储器地址与第二处理单元及多个其他处理单元相关联;
定义反映一目前可用处理容量的一数值测量,目前可用处理容量与第二处理单元相对应;
分别地定义反映多个其他目前可用处理容量的多个其他数值测量,多个其他目前可用处理容量与多个其他处理单元分别地相对应;以及
根据大于每一其他数值测量的数值测量,从第一处理单元传输呼叫至第二处理单元。
概念11如概念9所述的电脑可读取媒体,其中该方法更包括或包含:
选择一特定资源;以及
根据分配至第二处理单元的特定资源的一控制程度、根据缺乏存取特定资源的第一处理单元以及根据缺乏存取特定资源的一或多个其他处理单元,从第一处理单元传输呼叫至第二处理单元。
概念12如概念1所述的电脑可读取媒体,其中该方法更包括或包含:
选择具有指令的一共享的随机存取存储器单元,指令储存于其中;
识别共享的随机存取存储器单元的一磁区作为一重定向磁区;以及
判定指令是否储存于重定向磁区内,从而判定是否从第一处理单元传输呼叫至第二处理单元。
概念13如概念1所述的电脑可读取媒体,其中该方法更包括或包含:
选择一共享的随机存取存储器单元;
分别地识别共享的随机存取存储器单元的一或多个磁区作为一或多个重定向磁区;
识别包含指令的一程序;
存取与程序相对应的静态代码;
通过根据静态代码的尺寸以定义一或多个重定向磁区的一共同的尺寸,分割共享的随机存取存储器单元;以及
根据分割及一处理单元的规格,加载一定量的静态代码至一或多个从一或多个重定向磁区之中所选择出的重定向磁区。
概念14如概念13所述的电脑可读取媒体,其中该方法更包括或包含:
分别地识别一或多个共享的随机存取存储器单元的不同的磁区作为一或多个非重定向磁区;
存取与程序相对应的至少一共享程序库的一或多个部分;
通过根据静态代码的一共同的尺寸及至少一共享程序库的一或多个部分以定义一或多个重定向磁区的共同的尺寸,配比共享的随机存取存储器单元;以及
根据配比及处理单元的规格,加载静态代码的一或多个部分至一或多个从一或多个重定向磁区之中选择出的重定向磁区,或至一或多个从一或多个非重定向磁区之中选择出的非重定向磁区;
根据配比及处理单元的规格,加载至少一共享程序库的一或多个部份至一或多个从一或多个重定向磁区之中选择出的重定向磁区,或至一或多个从一或多个非重定向磁区之中选择出的非重定向磁区。
概念15如概念1所述的电脑可读取媒体,其中该方法更包括或包含:
选择与第一处理单元相关联的一快取存储器单元;
发出与指令相关联的代码或数据至快取存储器单元;
识别与第一处理单元相关联的一处理单元数据路径;以及
在处理单元数据路径中定义阴影暂存器值,使得阴影暂存器值反映指示与代码或数据相关联的至少一数据处理单元的处理单元识别符号。
概念16如概念1所述的电脑可读取媒体,其中该方法更包括或包含:
识别与该指令相关联的一代码;
识别包含至少一共享存储器一致性机器指令的一执行常式;以及
根据与该第二处理单元相关联的该执行常式,以及根据映射至该至少一共享存储器一致性机器指令的该代码,从该第一处理单元传输该呼叫至该第二处理单元。
概念17如概念1所述的电脑可读取媒体,其中该方法更包括或包含:
识别与指令相关联的一全域存储器地址;以及
从一第三处理单元自动地传输呼叫至第一处理单元,以因应第三处理单元缺乏存取全域存储器地址以及第一处理单元具有存取全域存储器地址。
概念18如概念1所述的电脑可读取媒体,其中该方法更包括或包含:
识别与一特定处理单元相关联的一快取存储器单元;
根据位于快取存储器单元内的预选数据地址,执行快取存储器单元的一分配至与数据相关联的一特定数据类型(Specific Data Type);
存取包含指令的一程序;
识别与程序相对应的一程序语言;
存取与程序语言相对应的一程序库,程序库定义包含一存储器分配呼叫的一建构器,以及存储器分配呼叫映射至具有特定数据类型的信息;
根据分配实施一修改至存储器分配呼叫,从而产生一修改的存储器分配呼叫及程序的一修正模式;以及
执行修改的存储器分配呼叫,使得加载信息至快取存储器单元以因应修改。
概念19如概念18所述的电脑可读取媒体,其中该方法更包括或包含:
执行呼叫以向特定处理单元执行程序的修正模式以因应分配。
概念20如概念1所述的电脑可读取媒体,其中该方法更包括或包含:
识别一或多个代码程序库;
存取与一或多个代码程序库相关联的引址传递原始代码;
传输引址传递原始代码至按数值传递支持代码(Pass-By-ValueSupport Code),从而产生一传输程序库;以及
使用传输程序库通过数值而不是通过引址以传递数据。
概念21如概念1所述的电脑可读取媒体,其中该方法更包括或包含:
在呼叫中识别一或多个指标;
转译一或多个指标,从而通过数值而不是通过引址以配置呼叫以传递数据;
从第一处理单元执行呼叫的一传输至第二处理单元;
当传输期间通过数值传递数据,从而在一第一快取存储器单元中储存数据的一区域拷贝,第二处理单元包含第一快取存储器单元;以及
重新映射一或多个指标至区域拷贝,从而不需要存取一第二快取存储器单元即能够执行呼叫,第一处理单元包含第二快取存储器单元。
概念22如概念1所述的电脑可读取媒体,其中该方法更包括或包含:
调用一远端程序呼叫,从而从第一处理单元传输呼叫至第二处理单元。
概念23如概念22所述的电脑可读取媒体,其中该方法更包括或包含:
分别地识别与第一处理单元及第二处理单元相关联的第一区域存储器地图及第二区域存储器地图;
识别在第一区域存储器地图及第二区域存储器地图之间的一区别;
根据区别产生一存储器地址转译;以及
使用存储器地址转译以构成远端程序呼叫。
概念24如概念22所述的电脑可读取媒体,其中该方法更包括或包含:
分别地识别与第一处理单元及第二处理单元相关联的一第一快取存储器单元及一第二快取存储器单元;
识别储存在第一快取存储器单元及与指令相关联的一数据值;以及
由于远端程序呼叫,储存数据值在第二快取存储器单元。
概念25如概念24所述的电脑可读取媒体,其中该方法更包括或包含:
通过第二处理单元延迟呼叫的一执行,直到储存数据值在第二快取存储器单元内。
概念26如概念22所述的电脑可读取媒体,其中该方法更包括或包含:
存取包含指令的一程序以及与一第一控制线程相关联的一执行常式;
在呼叫中识别一或多个指标;
转译一或多个指标以便配置呼叫,以通过数值而不是通过引址传递数据,从而产生一第二控制线程;
识别与第二处理单元相关联的一快取存储器单元;
因应远端程序呼叫通过数值传递数据,从而在快取存储器单元中储存数据的一区域拷贝,以及提供第二控制线程给第二处理单元;以及
根据第一控制线程使用第一处理单元执行执行常式,当第二处理单元根据第二控制线程执行指令的一执行,由于第一控制线程独立于第二控制线程,借以执行常式缺乏在执行期间产生一数据值的一返回请求。
概念27如概念1所述的电脑可读取媒体,其中该方法更包括或包含:
识别执行一第一执行常式的一第一处理核心,第一执行常式映射至数据,第一执行常式包含共享存储器一致性机器指令;
在一第二处理核心存取一第二执行常式;以及
根据映射至数据的第二执行常式,以及根据包含共享存储器一致性机器指令的第二执行常式,调用一程序呼叫,从而从第二处理核心传输第二执行常式至第一处理核心。
概念28如概念27所述的电脑可读取媒体,其中不同的处理单元分别地包含第一处理核心及第二处理核心,程序呼叫为一远端程序呼叫。
概念29如概念27所述的电脑可读取媒体,其中一单一处理单元包含第一处理核心及第二处理核心两者,程序呼叫为一远端程序呼叫。
概念30如概念1所述的电脑可读取媒体,其中该方法更包括或包含:
存取包含指令的一程序;
识别与程序相对应的一程序语言,配置程序语言以实施一虚拟函数表,使得一数据项包含一或多个虚拟函数表的指标,数据项属于具有一或多个虚拟函数的一类别,一或多个虚拟函数表的指标映射至虚拟函数表;
识别与程序语言相关联的一建构器,配置建构器以定义一或多个虚拟函数表的指标;以及
对于一或多个虚拟函数,在程序的一加载期间,注入环绕于建构器的一包裹呼叫至包含一或多个远端程序呼叫决定包裹的虚拟函数表,从而用指标取代一或多个虚拟函数表的指标。
概念31如概念1所述的电脑可读取媒体,其中该方法更包括或包含:
存取包含指令的一程序;
识别与程序相对应的一程序语言,配置程序语言以实施一虚拟函数表,使得一数据项包含一或多个虚拟函数表的指标,数据项属于具有一或多个虚拟函数的一类别,一或多个虚拟函数表的指标映射至虚拟函数表;以及
修正虚拟函数表以因应多个远端程序呼叫,使得没有呼叫一远端程序呼叫决定代码,分别地自动地指导一或多个虚拟函数至一或多个远端程序呼叫。
概念32如概念1所述的电脑可读取媒体,其中该方法更包括或包含:
存取包含指令的一程序;
识别与程序相对应的一程序语言,配置程序语言以实施一虚拟函数表,使得属于具有一或多个虚拟函数的一类别的一数据项包含映射至虚拟函数表的一或多个虚拟函数表的指标;以及
修正虚拟函数表以因应缺乏一或多个远端程序呼叫,使得没有呼叫一远端程序呼叫决定代码,自动地指导一或多个虚拟函数至与程序相关联的一区域代码。
概念33如概念1所述的电脑可读取媒体,其中该方法更包括或包含:
存取指令的一预定义模式,指令包含映射至多个条件分支的代码;
产生指令的多个修正模式,每一修正模式包含修正代码以从多个条件分支中跟随一不同的条件分支;
分别地预测与多个修正模式相关联的多个行为;
存取与指令相关联的一执行常式;
识别与执行常式相关联的一运行时间的行为;以及
从多个修正模式中选择一修正模式,以于执行常式的一效能的期间执行,以修正模式的一预测行为为依据,修正模式相对应于运行时间的行为。
概念34如概念1所述的电脑可读取媒体,其中该方法更包括或包含:
存取与指令相关联的一执行常式;
识别一虚拟函数的一第一实施及一第二实施,虚拟函数包含指向第一实施的一虚拟函数表的入口,以及虚拟函数更包含一虚拟函数表的指标,从多个虚拟函数表之中映射虚拟函数表的指标至一第一虚拟函数表;
使用第一实施起始一部份的执行常式的一效能;
在效能期间识别通过第一实施所展示的一分支行为;
执行分支行为的一效能分析,从而判定第二实施相对应于分支行为的程度大于第一实施相对应于分支行为的程度;以及
两者任一:
根据效能分析,从多个虚拟函数表之中重新映射虚拟函数表的指标至一第二虚拟函数表,第二虚拟函数表包含映射至第二实施的一指标,或
根据效能分析,更新虚拟函数表的入口以指向第二实施。
概念35如概念1所述的电脑可读取媒体,其中该方法更包括或包含:
存取与指令相关联的一程序,程序包含映射至一预定义呼叫位置的一预定义函数;
使用预定义呼叫位置执行预定义函数的一呼叫;
由于呼叫,识别通过预定义函数所展示的一分支行为;以及
根据分支行为,修正预定义呼叫位置。
概念36如概念1所述的电脑可读取媒体,其中该方法更包括或包含:
存取与指令相关联的一执行常式;
识别一虚拟函数的一第一实施及一第二实施,虚拟函数包含指向第一实施的一虚拟函数表的入口,以及虚拟函数更包含一虚拟函数表的指标,从多个虚拟函数表之中映射虚拟函数表的指标至一第一虚拟函数表;
使用第一实施起始一部份的执行常式的一效能;
在效能期间识别通过第一实施展示的一分支行为;
根据分支行为,预测虚拟函数的一可能的未来行为;
执行可能的未来行为的一效能分析,从而判定第二实施相对应于可能的未来行为的程度大于第一实施相对应于可能的未来行为的程度;以及
两者任一:
根据效能分析,从多个虚拟函数表之中重新映射虚拟函数表的指标至一第二虚拟函数表,第二虚拟函数表包含映射至第二实施的一指标,或
根据效能分析,更新虚拟函数表的入口以指向第二实施。
概念37一处理资源分配的方法包括或包含:
识别映射至具有一预选数据地址的数据的一指令;以及
根据预选数据地址,判定一处理资源分配元件是否从一第一处理单元传输指令的一呼叫至一第二处理单元。
概念38如概念37所述的处理资源分配的方法,更包括或包含:
选择与第一处理单元相关联的一快取存储器单元;
加载指令至快取存储器单元;以及
在与指令相关联的一边界注入一附加代码组至快取存储器单元,指令为一目标指令,以及配置附加代码组使得第一处理单元能够判定是否传输呼叫至一特定处理单元。
概念39如概念38所述的处理资源分配的方法,更包括或包含:
分别地识别与一或多个预选执行常式相对应的一或多个执行常式名;以及
根据一或多个执行常式名选择附加代码组,以便从一引址传递呼叫转换呼叫至一按数值传递呼叫。
概念40如概念37所述的处理资源分配的方法,更包括或包含:
分别地识别与第一处理单元及第二处理单元相关联的一第一快取存储器单元及一第二快取存储器单元;
分别地识别与一第一数据组及一第二数据组相关联的一第一数据地址及一第二数据地址,第一数据地址及第二数据地址分别地位于第一快取存储器单元及第二快取存储器单元内;以及
根据第一数据地址及第二数据地址,分别地执行分配第一快取存储器单元及第二快取存储器单元至第一数据组及第二数据组。
概念41如概念40所述的处理资源分配的方法,更包括或包含:
识别映射至指令的一数据组;以及
判定数据组目前被储存在第二快取存储器单元,而不是储存在第一快取存储器单元,从而决定从第一处理单元传输呼叫至第二处理单元。
概念42如概念37所述的处理资源分配的方法,更包括或包含:
分别地识别与第一处理单元及第二处理单元相关联的一第一快取存储器单元及一第二快取存储器单元;
存取呼叫于第一处理单元,呼叫包含一引数,引数显示指令映射至预选数据地址;
分析引数于第一处理单元以作出一判定,判定为预选数据地址不位于第一快取存储器单元内;以及
根据判定识别呼叫作为一潜在的重定向呼叫。
概念43如概念42所述的处理资源分配的方法,更包括或包含:
判定预选数据地址不位于第二快取存储器单元内,从而使用第一处理单元作出一决定以执行与潜在的重定向呼叫相关联的一目标码;以及
根据决定,使用第一处理单元执行目标码。
概念44如概念42所述的处理资源分配的方法,更包括或包含:
判定预选数据地址位于第二快取存储器单元内,从而识别潜在的重定向呼叫作为一实际的重定向呼叫;以及
从第一处理单元传输实际的重定向呼叫至第二处理单元。
概念45如概念37所述的处理资源分配的方法,更包括或包含:
识别与指令相关联的一代码或数据存储器地址;以及
根据与第二处理单元相关联的代码或数据存储器地址,从第一处理单元传输呼叫至第二处理单元。
概念46如概念45所述的处理资源分配的方法,更包括或包含:
判定代码或数据存储器地址与第二处理单元及多个其他处理单元相关联;
定义反映一目前可用处理容量的一数值测量,目前可用处理容量与第二处理单元相对应;
分别地定义反映多个其他目前可用处理容量的多个其他数值测量,多个其他目前可用处理容量与多个其他处理单元分别地相对应;以及
根据大于每一其他数值测量的数值测量,从第一处理单元传输呼叫至第二处理单元。
概念47如概念45所述的处理资源分配的方法,更包括或包含:
选择一特定资源;以及
根据分配至第二处理单元的特定资源的一控制程度、根据缺乏存取特定资源的第一处理单元以及根据缺乏存取特定资源的一或多个其他处理单元,从第一处理单元传输呼叫至第二处理单元。
概念48如概念37所述的处理资源分配的方法,更包括或包含:
选择具有指令的一共享的随机存取存储器单元,指令储存于其中;
识别共享的随机存取存储器单元的一磁区作为一重定向磁区;以及
判定指令是否储存于重定向磁区内,从而判定是否从第一处理单元传输呼叫至第二处理单元。
概念49如概念37所述的处理资源分配的方法,更包括或包含:
选择一共享的随机存取存储器单元;
分别地识别共享的随机存取存储器单元的一或多个磁区作为一或多个重定向磁区;
识别包含指令的一程序;
存取与程序相对应的静态代码;
通过根据静态代码的尺寸定义一或多个重定向磁区的一共同的尺寸,分割共享的随机存取存储器单元;以及
根据分割及一处理单元的规格,加载一定量的静态代码至一或多个从一或多个重定向磁区之中所选择出的重定向磁区。
概念50如概念49所述的处理资源分配的方法,更包括或包含:
分别地识别一或多个共享的随机存取存储器单元的不同的磁区作为一或多个非重定向磁区;
存取与程序相对应的至少一共享程序库的一或多个部分;
通过根据静态代码的一共同的尺寸及至少一共享程序库的一或多个部分以定义一或多个重定向磁区的共同的尺寸,配比共享的随机存取存储器单元;以及
根据配比及处理单元的规格,加载静态代码的一或多个部分至一或多个从一或多个重定向磁区之中选择出的重定向磁区,或至一或多个从一或多个非重定向磁区之中选择出的非重定向磁区;
根据配比及处理单元的规格,加载至少一共享程序库的一或多个部份至一或多个从一或多个重定向磁区之中选择出的重定向磁区,或至一或多个从一或多个非重定向磁区之中选择出的非重定向磁区。
概念51如概念37所述的处理资源分配的方法,更包括或包含:
选择与第一处理单元相关联的一快取存储器单元;
发出与指令相关联的代码或数据至快取存储器单元;
识别与第一处理单元相关联的一处理单元数据路径;以及
在处理单元数据路径中定义阴影暂存器值,使得阴影暂存器值反映指示与代码或数据相关联的至少一数据处理单元的处理单元识别符号。
概念52如概念37所述的处理资源分配的方法,更包括或包含:
识别与指令相关联的一代码;
识别包含至少一共享存储器一致性机器指令的一执行常式;以及
根据与第二处理单元相关联的执行常式,以及根据映射至至少一共享存储器一致性机器指令的代码,从第一处理单元传输呼叫至第二处理单元。
概念53如概念37所述的处理资源分配的方法,更包括或包含:
识别与指令相关联的一全域存储器地址;以及
从一第三处理单元自动地传输呼叫至第一处理单元,以因应第三处理单元缺乏存取全域存储器地址以及第一处理单元具有存取全域存储器地址。
概念54如概念37所述的处理资源分配的方法,更包括或包含:
识别与一特定处理单元相关联的一快取存储器单元;
根据位于快取存储器单元内的预选数据地址,执行快取存储器单元的一分配至与数据相关联的一特定数据类型;
存取包含指令的一程序;
识别与程序相对应的一程序语言;
存取与程序语言相对应的一程序库,程序库定义包含一存储器分配呼叫的一建构器,以及存储器分配呼叫映射至具有特定数据类型的信息;
根据分配实施一修改至存储器分配呼叫,从而产生一修改的存储器分配呼叫及程序的一修正模式;以及
执行修改的存储器分配呼叫,使得加载信息至快取存储器单元以因应修改。
概念55如概念54所述的处理资源分配的方法,更包括或包含:
执行呼叫以向特定处理单元执行程序的修正模式以因应分配。
概念56如概念37所述的处理资源分配的方法,更包括或包含:
识别一或多个代码程序库;
存取与一或多个代码程序库相关联的引址传递原始代码;
传输引址传递原始代码至按数值传递支持代码,从而产生一传输程序库;以及
使用传输程序库通过数值而不是通过引址以传递数据。
概念57如概念37所述的处理资源分配的方法,更包括或包含:
在呼叫中识别一或多个指标;
转译一或多个指标,从而通过数值而不是通过引址以配置呼叫以传递数据;
从第一处理单元执行呼叫的一传输至第二处理单元;
当传输期间通过数值传递数据,从而在一第一快取存储器单元中储存数据的一区域拷贝,第二处理单元包含第一快取存储器单元;以及
重新映射一或多个指标至区域拷贝,从而不需要存取一第二快取存储器单元即能够执行呼叫,第一处理单元包含第二快取存储器单元。
概念58如概念37所述的处理资源分配的方法,更包括或包含:
调用一远端程序呼叫,从而从第一处理单元传输呼叫至第二处理单元。
概念59如概念58所述的处理资源分配的方法,更包括或包含:
分别地识别与第一处理单元及第二处理单元相关联的第一区域存储器地图及第二区域存储器地图;
识别在第一区域存储器地图及第二区域存储器地图之间的一区别;
根据区别产生一存储器地址转译;以及
使用存储器地址转译以构成远端程序呼叫。
概念60如概念58所述的处理资源分配的方法,更包括或包含:
分别地识别与第一处理单元及第二处理单元相关联的一第一快取存储器单元及一第二快取存储器单元;
识别储存在第一快取存储器单元及与指令相关联的一数据值;以及
由于远端程序呼叫,储存数据值在第二快取存储器单元。
概念61如概念60所述的处理资源分配的方法,更包括或包含:
通过第二处理单元延迟呼叫的一执行,直到储存数据值在第二快取存储器单元内。
概念62如概念58所述的处理资源分配的方法,更包括或包含:
存取包含指令的一程序以及与一第一控制线程相关联的一执行常式;
在呼叫中识别一或多个指标;
转译一或多个指标以便配置呼叫,以通过数值而不是通过引址传递数据,从而产生一第二控制线程;
识别与第二处理单元相关联的一快取存储器单元;
因应远端程序呼叫通过数值传递数据,从而在快取存储器单元中储存数据的一区域拷贝,以及提供第二控制线程给第二处理单元;以及
根据第一控制线程使用第一处理单元执行执行常式,当第二处理单元根据第二控制线程执行指令的一执行,由于第一控制线程独立于第二控制线程,借以执行常式缺乏在执行期间产生一数据值的一返回请求。
概念63如概念37所述的处理资源分配的方法,更包括或包含:
识别执行一第一执行常式的一第一处理核心,第一执行常式映射至数据,第一执行常式包含共享存储器一致性机器指令;
在一第二处理核心存取一第二执行常式;以及
根据映射至数据的第二执行常式,以及根据包含共享存储器一致性机器指令的第二执行常式,调用一程序呼叫,从而从第二处理核心传输第二执行常式至第一处理核心。
概念64如概念63所述的处理资源分配的方法,其中不同的处理单元分别地包含第一处理核心及第二处理核心,程序呼叫为一远端程序呼叫。
概念65如概念63所述的处理资源分配的方法,其中一单一处理单元包含第一处理核心及第二处理核心两者,程序呼叫为一远端程序呼叫。
概念66如概念37所述的处理资源分配的方法,更包括或包含:
存取包含指令的一程序;
识别与程序相对应的一程序语言,配置程序语言以实施一虚拟函数表,使得一数据项包含一或多个虚拟函数表的指标,数据项属于具有一或多个虚拟函数的一类别,一或多个虚拟函数表的指标映射至虚拟函数表;
识别与程序语言相关联的一建构器,配置建构器以定义一或多个虚拟函数表的指标;以及
对于一或多个虚拟函数,在程序的一加载期间,注入环绕于建构器的一包裹呼叫至包含一或多个远端程序呼叫决定包裹的虚拟函数表,从而用指标取代一或多个虚拟函数表的指标。
概念67如概念37所述的处理资源分配的方法,更包括或包含:
存取包含指令的一程序;
识别与程序相对应的一程序语言,配置程序语言以实施一虚拟函数表,使得一数据项包含一或多个虚拟函数表的指标,数据项属于具有一或多个虚拟函数的一类别,一或多个虚拟函数表的指标映射至虚拟函数表;以及
修正虚拟函数表以因应多个远端程序呼叫,使得没有呼叫一远端程序呼叫决定代码,分别地自动地指导一或多个虚拟函数至一或多个远端程序呼叫。
概念68如概念37所述的处理资源分配的方法,更包括或包含:
存取包含指令的一程序;
识别与程序相对应的一程序语言,配置程序语言以实施一虚拟函数表,使得一数据项包含一或多个虚拟函数表的指标,数据项属于具有一或多个虚拟函数的一类别,一或多个虚拟函数表的指标映射至虚拟函数表;以及
修正虚拟函数表以因应缺乏一或多个远端程序呼叫,使得没有呼叫一远端程序呼叫决定代码,自动地指导一或多个虚拟函数至与程序相关联的一区域代码。
概念69如概念37所述的处理资源分配的方法,更包括或包含:
存取指令的一预定义模式,指令包含映射至多个条件分支的代码;
产生指令的多个修正模式,每一修正模式包含修正代码以从多个条件分支中跟随一不同的条件分支;
分别地预测与多个修正模式相关联的多个行为;
存取与指令相关联的一执行常式;
识别与执行常式相关联的一运行时间的行为;以及
从多个修正模式中选择一修正模式,以于执行常式的一效能的期间执行,以修正模式的一预测行为为依据,修正模式相对应于运行时间的行为。
概念70如概念37所述的处理资源分配的方法,更包括或包含:
存取与指令相关联的一执行常式;
识别一虚拟函数的一第一实施及一第二实施,虚拟函数包含指向第一实施的一虚拟函数表的入口,以及虚拟函数更包含一虚拟函数表的指标,从多个虚拟函数表之中映射虚拟函数表的指标至一第一虚拟函数表;
使用第一实施起始一部份的执行常式的一效能;
在效能期间识别通过第一实施所展示的一分支行为;
执行分支行为的一效能分析,从而判定第二实施相对应于分支行为的程度大于第一实施相对应于分支行为的程度;以及
两者任一:
根据效能分析,从多个虚拟函数表之中重新映射虚拟函数表的指标至一第二虚拟函数表,第二虚拟函数表包含映射至第二实施的一指标,或
根据效能分析,更新虚拟函数表的入口以指向第二实施。
概念71如概念37所述的处理资源分配的方法,更包括或包含:
存取与指令相关联的一程序,程序包含映射至一预定义呼叫位置的一预定义函数;
使用预定义呼叫位置执行预定义函数的一呼叫;
由于呼叫,识别通过预定义函数所展示的一分支行为;以及
根据分支行为,修正预定义呼叫位置。
概念72如概念37所述的处理资源分配的方法,更包括或包含:
存取与指令相关联的一执行常式;
识别一虚拟函数的一第一实施及一第二实施,虚拟函数包含指向第一实施的一虚拟函数表的入口,以及虚拟函数更包含一虚拟函数表的指标,从多个虚拟函数表之中映射虚拟函数表的指标至一第一虚拟函数表;
使用第一实施起始一部份的执行常式的一效能;
在效能期间识别通过第一实施展示的一分支行为;
根据分支行为,预测虚拟函数的一可能的未来行为;
执行可能的未来行为的一效能分析,从而判定第二实施相对应于可能的未来行为的程度大于第一实施相对应于可能的未来行为的程度;以及
两者任一:
根据效能分析,从多个虚拟函数表之中重新映射虚拟函数表的指标至一第二虚拟函数表,第二虚拟函数表包含映射至第二实施的一指标,或
根据效能分析,更新虚拟函数表的入口以指向第二实施。
其指出,贯穿本说明书中对特征、优点或类似语言的参考并不意味着所有的特征及优点应该是或在任何单一实施例中。相反地,意指特征及优点的语言可以被理解为特定的特征、优点或描述与实施例包括在本技术的至少一实施例中有关的特征。因此,贯穿本说明书中对特征、优点及类似语言的讨论,可以但不一定是指的是同一实施例。
本公开内容的的各种实施例,如以上述所讨论的,也可以以不同的顺序实施步骤及/或操作,及/或有在其中配置不同于所公开的硬件元件。因此,虽然本技术已经根据上述示范性的实施例进行了描述,其指出,某些修正,变化及替换的结构可以在不脱离本发明的技术的范围的情况下实施。
尽管本技术的各种示范性实施例以特定于结构特征及/或方法动作的语言于此描述,在所依附的权利要求中定义的专利标的不必限制于上述的特定的特征或动作。当然地,上述特定的特征及动作被公开作为实施权利要求的示范性的形式。

Claims (72)

1.一电脑可读取媒体,用以储存一组指令,当该组指令被执行时,引起一电脑系统执行一处理资源分配的方法,该方法包含:
识别映射至具有一预选数据地址的数据的一指令;以及
根据该预选数据地址,判定是否从一第一处理单元传输该指令的一呼叫至一第二处理单元。
2.如权利要求1所述的电脑可读取媒体,其中该方法还包含:
选择与该第一处理单元相关联的一快取存储器单元;
加载该指令至该快取存储器单元;以及
在与该指令相关联的一边界注入一附加代码组至该快取存储器单元,该指令为一目标指令,以及配置该附加代码组使得该第一处理单元能够判定是否传输该呼叫至一特定处理单元。
3.如权利要求2所述的电脑可读取媒体,其中该方法还包含:
分别地识别与一或多个预选执行常式相对应的一或多个执行常式名;以及
根据该一或多个执行常式名选择该附加代码组,以便从一引址传递呼叫转换该呼叫至一按数值传递呼叫。
4.如权利要求1所述的电脑可读取媒体,其中该方法还包含:
分别地识别与该第一处理单元及该第二处理单元相关联的一第一快取存储器单元及一第二快取存储器单元;
分别地识别与一第一数据组及一第二数据组相关联的一第一数据地址及一第二数据地址,该第一数据地址及该第二数据地址分别地位于该第一快取存储器单元及该第二快取存储器单元内;以及
根据该第一数据地址及该第二数据地址,分别地执行分配该第一快取存储器单元及该第二快取存储器单元至该第一数据组及该第二数据组。
5.如权利要求4所述的电脑可读取媒体,其中该方法还包含:
识别映射至该指令的一数据组;以及
判定该数据组目前被储存在该第二快取存储器单元,而不是储存在该第一快取存储器单元,从而决定从该第一处理单元传输该呼叫至该第二处理单元。
6.如权利要求1所述的电脑可读取媒体,其中该方法还包含:
分别地识别与该第一处理单元及该第二处理单元相关联的一第一快取存储器单元及一第二快取存储器单元;
存取该呼叫于第一处理单元,该呼叫包含一引数,该引数显示该指令映射至该预选数据地址;
分析该引数于该第一处理单元以作出一判定,该判定为该预选数据地址不位于该第一快取存储器单元内;以及
根据该判定识别该呼叫作为一潜在的重定向呼叫。
7.如权利要求6所述的电脑可读取媒体,其中该方法还包含:
判定该预选数据地址不位于该第二快取存储器单元内,从而使用该第一处理单元作出一决定以执行与该潜在的重定向呼叫相关联的一目标码;以及
根据该决定,使用该第一处理单元执行该目标码。
8.如权利要求6所述的电脑可读取媒体,其中该方法还包含:
判定该预选数据地址位于该第二快取存储器单元内,从而识别该潜在的重定向呼叫作为一实际的重定向呼叫;以及
从该第一处理单元传输该实际的重定向呼叫至该第二处理单元。
9.如权利要求1所述的电脑可读取媒体,其中该方法还包含:
识别与该指令相关联的一代码或数据存储器地址;以及
根据与该第二处理单元相关联的该代码或数据存储器地址,从该第一处理单元传输该呼叫至该第二处理单元。
10.如权利要求9所述的电脑可读取媒体,其中该方法还包含:
判定该代码或数据存储器地址与该第二处理单元及多个其他处理单元相关联;
定义反映一目前可用处理容量的一数值测量,该目前可用处理容量与该第二处理单元相对应;
分别地定义反映多个其他目前可用处理容量的多个其他数值测量,该多个其他目前可用处理容量与该多个其他处理单元分别地相对应;以及
根据大于每一该其他数值测量的该数值测量,从该第一处理单元传输该呼叫至该第二处理单元。
11.如权利要求9所述的电脑可读取媒体,其中该方法还包含:
选择一特定资源;以及
根据分配至该第二处理单元的该特定资源的一控制程度、根据缺乏存取该特定资源的该第一处理单元以及根据缺乏存取该特定资源的一或多个其他处理单元,从该第一处理单元传输该呼叫至该第二处理单元。
12.如权利要求1所述的电脑可读取媒体,其中该方法还包含:
选择具有该指令的一共享的随机存取存储器单元,该指令储存于其中;
识别该共享的随机存取存储器单元的一磁区作为一重定向磁区;以及
判定该指令是否储存于该重定向磁区内,从而判定是否从该第一处理单元传输该呼叫至该第二处理单元。
13.如权利要求1所述的电脑可读取媒体,其中该方法还包含:
选择一共享的随机存取存储器单元;
分别地识别该共享的随机存取存储器单元的一或多个磁区作为一或多个重定向磁区;
识别包含该指令的一程序;
存取与该程序相对应的静态代码;
通过根据该静态代码的尺寸以定义该一或多个重定向磁区的一共同的尺寸,分割该共享的随机存取存储器单元;以及
根据该分割及一处理单元的规格,加载一定量的该静态代码至一或多个从该一或多个重定向磁区之中所选择出的重定向磁区。
14.如权利要求13所述的电脑可读取媒体,其中该方法还包含:
分别地识别一或多个该共享的随机存取存储器单元的不同的磁区作为一或多个非重定向磁区;
存取与该程序相对应的至少一共享程序库的一或多个部分;
通过根据该静态代码的一共同的尺寸及该至少一共享程序库的该一或多个部分以定义该一或多个重定向磁区的该共同的尺寸,配比该共享的随机存取存储器单元;以及
根据该配比及该处理单元的规格,加载该静态代码的一或多个部分至一或多个从该一或多个重定向磁区之中选择出的重定向磁区,或至一或多个从该一或多个非重定向磁区之中选择出的非重定向磁区;
根据该配比及该处理单元的规格,加载该至少一共享程序库的该一或多个部份至一或多个从该一或多个重定向磁区之中选择出的重定向磁区,或至一或多个从该一或多个非重定向磁区之中选择出的非重定向磁区。
15.如权利要求1所述的电脑可读取媒体,其中该方法还包含:
选择与该第一处理单元相关联的一快取存储器单元;
发出与该指令相关联的代码或数据至该快取存储器单元;
识别与该第一处理单元相关联的一处理单元数据路径;以及
在该处理单元数据路径中定义阴影暂存器值,使得该阴影暂存器值反映指示与该代码或数据相关联的至少一数据处理单元的处理单元识别符号。
16.如权利要求1所述的电脑可读取媒体,其中该方法还包含:
识别与该指令相关联的一代码;
识别包含至少一共享存储器一致性机器指令的一执行常式;以及
根据与该第二处理单元相关联的该执行常式,以及根据映射至该至少一共享存储器一致性机器指令的该代码,从该第一处理单元传输该呼叫至该第二处理单元。
17.如权利要求1所述的电脑可读取媒体,其中该方法还包含:
识别与该指令相关联的一全域存储器地址;以及
从一第三处理单元自动地传输该呼叫至该第一处理单元,以因应该第三处理单元缺乏存取该全域存储器地址以及该第一处理单元具有存取该全域存储器地址。
18.如权利要求1所述的电脑可读取媒体,其中该方法还包含:
识别与一特定处理单元相关联的一快取存储器单元;
根据位于该快取存储器单元内的该预选数据地址,执行该快取存储器单元的一分配、至与该数据相关联的一特定数据类型;
存取包含该指令的一程序;
识别与该程序相对应的一程序语言;
存取与该程序语言相对应的一程序库,该程序库定义包含一存储器分配呼叫的一建构器,以及该存储器分配呼叫映射至具有该特定数据类型的信息;
根据该分配实施一修改至该存储器分配呼叫,从而产生一修改的存储器分配呼叫及该程序的一修正模式;以及
执行该修改的存储器分配呼叫,使得加载该信息至该快取存储器单元以因应该修改。
19.如权利要求18所述的电脑可读取媒体,其中该方法还包含:
执行该呼叫以向该特定处理单元执行该程序的该修正模式以因应该分配。
20.如权利要求1所述的电脑可读取媒体,其中该方法还包含:
识别一或多个代码程序库;
存取与该一或多个代码程序库相关联的引址传递原始代码;
传输该引址传递原始代码至按数值传递支持代码,从而产生一传输程序库;以及
使用该传输程序库通过数值而不是通过引址以传递该数据。
21.如权利要求1所述的电脑可读取媒体,其中该方法还包含:
在该呼叫中识别一或多个指标;
转译该一或多个指标,从而通过数值而不是通过引址以配置该呼叫以传递该数据;
从该第一处理单元执行该呼叫的一传输至该第二处理单元;
当该传输期间通过数值传递该数据,从而在一第一快取存储器单元中储存该数据的一区域拷贝,该第二处理单元包含该第一快取存储器单元;以及
重新映射该一或多个指标至该区域拷贝,从而不需要存取一第二快取存储器单元即能够执行该呼叫,该第一处理单元包含该第二快取存储器单元。
22.如权利要求1所述的电脑可读取媒体,其中该方法还包含:
调用一远端程序呼叫,从而从该第一处理单元传输该呼叫至该第二处理单元。
23.如权利要求22所述的电脑可读取媒体,其中该方法还包含:
分别地识别与该第一处理单元及该第二处理单元相关联的第一区域存储器地图及第二区域存储器地图;
识别在该第一区域存储器地图及该第二区域存储器地图之间的一区别;
根据该区别产生一存储器地址转译;以及
使用该存储器地址转译以构成该远端程序呼叫。
24.如权利要求22所述的电脑可读取媒体,其中该方法还包含:
分别地识别与该第一处理单元及该第二处理单元相关联的一第一快取存储器单元及一第二快取存储器单元;
识别储存在该第一快取存储器单元及与该指令相关联的一数据值;以及
由于该远端程序呼叫,储存该数据值在该第二快取存储器单元。
25.如权利要求24所述的电脑可读取媒体,其中该方法还包含:
通过该第二处理单元延迟该呼叫的一执行,直到储存该数据值在该第二快取存储器单元内。
26.如权利要求22所述的电脑可读取媒体,其中该方法还包含:
存取包含该指令的一程序以及与一第一控制线程相关联的一执行常式;
在该呼叫中识别一或多个指标;
转译该一或多个指标以便配置该呼叫,以通过该数值而不是通过该引址传递该数据,从而产生一第二控制线程;
识别与该第二处理单元相关联的一快取存储器单元;
因应该远端程序呼叫通过数值传递该数据,从而在该快取存储器单元中储存该数据的一区域拷贝,以及提供该第二控制线程给该第二处理单元;以及
根据该第一控制线程使用该第一处理单元执行该执行常式,当该第二处理单元根据该第二控制线程执行该指令的一执行,由于该第一控制线程独立于该第二控制线程,借以该执行常式缺乏在该执行期间产生一数据值的一返回请求。
27.如权利要求1所述的电脑可读取媒体,其中该方法还包含:
识别执行一第一执行常式的一第一处理核心,该第一执行常式映射至该数据,该第一执行常式包含共享存储器一致性机器指令;
在一第二处理核心存取一第二执行常式;以及
根据映射至该数据的该第二执行常式,以及根据包含该共享存储器一致性机器指令的该第二执行常式,调用一程序呼叫,从而从该第二处理核心传输该第二执行常式至该第一处理核心。
28.如权利要求27所述的电脑可读取媒体,其中不同的处理单元分别地包含该第一处理核心及该第二处理核心,该程序呼叫为一远端程序呼叫。
29.如权利要求27所述的电脑可读取媒体,其中一单一处理单元包含该第一处理核心及该第二处理核心两者,该程序呼叫为一远端程序呼叫。
30.如权利要求1所述的电脑可读取媒体,其中该方法还包含:
存取包含该指令的一程序;
识别与该程序相对应的一程序语言,配置该程序语言以实施一虚拟函数表,使得一数据项包含一或多个虚拟函数表的指标,该数据项属于具有一或多个虚拟函数的一类别,该一或多个虚拟函数表的指标映射至该虚拟函数表;
识别与该程序语言相关联的一建构器,配置该建构器以定义该一或多个虚拟函数表的指标;以及
对于该一或多个虚拟函数,在该程序的一加载期间,注入环绕于该建构器的一包裹呼叫至包含一或多个远端程序呼叫决定包裹的虚拟函数表,从而用指标取代该一或多个虚拟函数表的指标。
31.如权利要求1所述的电脑可读取媒体,其中该方法还包含:
存取包含该指令的一程序;
识别与该程序相对应的一程序语言,配置该程序语言以实施一虚拟函数表,使得一数据项包含一或多个虚拟函数表的指标,该数据项属于具有一或多个虚拟函数的一类别,该一或多个虚拟函数表的指标映射至该虚拟函数表;以及
修正该虚拟函数表以因应多个远端程序呼叫,使得没有呼叫一远端程序呼叫决定代码,分别地自动地指导该一或多个虚拟函数至一或多个远端程序呼叫。
32.如权利要求1所述的电脑可读取媒体,其中该方法还包含:
存取包含该指令的一程序;
识别与该程序相对应的一程序语言,配置该程序语言以实施一虚拟函数表,使得属于具有一或多个虚拟函数的一类别的一数据项包含映射至该虚拟函数表的一或多个虚拟函数表的指标;以及
修正该虚拟函数表以因应缺乏一或多个远端程序呼叫,使得没有呼叫一远端程序呼叫决定代码,自动地指导该一或多个虚拟函数至与该程序相关联的一区域代码。
33.如权利要求1所述的电脑可读取媒体,其中该方法还包含:
存取该指令的一预定义模式,该指令包含映射至多个条件分支的代码;
产生该指令的多个修正模式,每一修正模式包含修正该代码以从该多个条件分支中跟随一不同的条件分支;
分别地预测与该多个修正模式相关联的多个行为;
存取与该指令相关联的一执行常式;
识别与该执行常式相关联的一运行时间的行为;以及
从该多个修正模式中选择一修正模式,以于该执行常式的一效能的期间执行,以该修正模式的一预测行为为依据,该修正模式相对应于该运行时间的行为。
34.如权利要求1所述的电脑可读取媒体,其中该方法还包含:
存取与该指令相关联的一执行常式;
识别一虚拟函数的一第一实施及一第二实施,该虚拟函数包含指向该第一实施的一虚拟函数表的入口,以及该虚拟函数还包含一虚拟函数表的指标,从多个虚拟函数表之中映射该虚拟函数表的指标至一第一虚拟函数表;
使用该第一实施起始一部份的该执行常式的一效能;
在该效能期间识别通过该第一实施所展示的一分支行为;
执行该分支行为的一效能分析,从而判定该第二实施相对应于该分支行为的程度大于该第一实施相对应于该分支行为的程度;以及
两者任一:
根据该效能分析,从该多个虚拟函数表之中重新映射该虚拟函数表的指标至一第二虚拟函数表,该第二虚拟函数表包含映射至该第二实施的一指标,或
根据该效能分析,更新该虚拟函数表的入口以指向该第二实施。
35.如权利要求1所述的电脑可读取媒体,其中该方法还包含:
存取与该指令相关联的一程序,该程序包含映射至一预定义呼叫位置的一预定义函数;
使用该预定义呼叫位置执行该预定义函数的一呼叫;
由于该呼叫,识别通过该预定义函数所展示的一分支行为;以及
根据该分支行为,修正该预定义呼叫位置。
36.如权利要求1所述的电脑可读取媒体,其中该方法还包含:
存取与该指令相关联的一执行常式;
识别一虚拟函数的一第一实施及一第二实施,该虚拟函数包含指向该第一实施的一虚拟函数表的入口,以及该虚拟函数还包含一虚拟函数表的指标,从多个虚拟函数表之中映射该虚拟函数表的指标至一第一虚拟函数表;
使用该第一实施起始一部份的该执行常式的一效能;
在该效能期间识别通过该第一实施展示的一分支行为;
根据该分支行为,预测该虚拟函数的一可能的未来行为;
执行该可能的未来行为的一效能分析,从而判定该第二实施相对应于该可能的未来行为的程度大于该第一实施相对应于该可能的未来行为的程度;以及
两者任一:
根据该效能分析,从该多个虚拟函数表之中重新映射该虚拟函数表的指标至一第二虚拟函数表,该第二虚拟函数表包含映射至该第二实施的一指标,或
根据该效能分析,更新该虚拟函数表的入口以指向该第二实施。
37.一处理资源分配的方法,包含:
识别映射至具有一预选数据地址的数据的一指令;以及
根据该预选数据地址,判定一处理资源分配元件是否从一第一处理单元传输该指令的一呼叫至一第二处理单元。
38.如权利要求37所述的处理资源分配的方法,还包含:
选择与该第一处理单元相关联的一快取存储器单元;
加载该指令至该快取存储器单元;以及
在与该指令相关联的一边界注入一附加代码组至该快取存储器单元,该指令为一目标指令,以及配置该附加代码组使得该第一处理单元能够判定是否传输该呼叫至一特定处理单元。
39.如权利要求38所述的处理资源分配的方法,还包含:
分别地识别与一或多个预选执行常式相对应的一或多个执行常式名;以及
根据该一或多个执行常式名选择该附加代码组,以便从一引址传递呼叫转换该呼叫至一按数值传递呼叫。
40.如权利要求37所述的处理资源分配的方法,还包含:
分别地识别与该第一处理单元及该第二处理单元相关联的一第一快取存储器单元及一第二快取存储器单元;
分别地识别与一第一数据组及一第二数据组相关联的一第一数据地址及一第二数据地址,该第一数据地址及该第二数据地址分别地位于该第一快取存储器单元及该第二快取存储器单元内;以及
根据该第一数据地址及该第二数据地址,分别地执行分配该第一快取存储器单元及该第二快取存储器单元至该第一数据组及该第二数据组。
41.如权利要求40所述的处理资源分配的方法,还包含:
识别映射至该指令的一数据组;以及
判定该数据组目前被储存在该第二快取存储器单元,而不是储存在该第一快取存储器单元,从而决定从该第一处理单元传输该呼叫至该第二处理单元。
42.如权利要求37所述的处理资源分配的方法,还包含:
分别地识别与该第一处理单元及该第二处理单元相关联的一第一快取存储器单元及一第二快取存储器单元;
存取该呼叫于该第一处理单元,该呼叫包含一引数,该引数显示该指令映射至该预选数据地址;
分析该引数于该第一处理单元以作出一判定,该判定为该预选数据地址不位于该第一快取存储器单元内;以及
根据该判定识别该呼叫作为一潜在的重定向呼叫。
43.如权利要求42所述的处理资源分配的方法,还包含:
判定该预选数据地址不位于该第二快取存储器单元内,从而使用该第一处理单元作出一决定以执行与该潜在的重定向呼叫相关联的一目标码;以及
根据该决定,使用该第一处理单元执行该目标码。
44.如权利要求42所述的处理资源分配的方法,还包含:
判定该预选数据地址位于该第二快取存储器单元内,从而识别该潜在的重定向呼叫作为一实际的重定向呼叫;以及
从该第一处理单元传输该实际的重定向呼叫至该第二处理单元。
45.如权利要求37所述的处理资源分配的方法,还包含:
识别与该指令相关联的一代码或数据存储器地址;以及
根据与该第二处理单元相关联的该代码或数据存储器地址,从该第一处理单元传输该呼叫至该第二处理单元。
46.如权利要求45所述的处理资源分配的方法,还包含:
判定该代码或数据存储器地址与该第二处理单元及多个其他处理单元相关联;
定义反映一目前可用处理容量的一数值测量,该目前可用处理容量与该第二处理单元相对应;
分别地定义反映多个其他目前可用处理容量的多个其他数值测量,该多个其他目前可用处理容量与该多个其他处理单元分别地相对应;以及
根据大于每一该其他数值测量的该数值测量,从该第一处理单元传输该呼叫至该第二处理单元。
47.如权利要求45所述的处理资源分配的方法,还包含:
选择一特定资源;以及
根据分配至该第二处理单元的该特定资源的一控制程度、根据缺乏存取该特定资源的该第一处理单元以及根据缺乏存取该特定资源的一或多个其他处理单元,从该第一处理单元传输该呼叫至该第二处理单元。
48.如权利要求37所述的处理资源分配的方法,其中该方法还包含:
选择具有该指令的一共享的随机存取存储器单元,该指令储存于其中;
识别该共享的随机存取存储器单元的一磁区作为一重定向磁区;以及
判定该指令是否储存于该重定向磁区内,从而判定是否从该第一处理单元传输该呼叫至该第二处理单元。
49.如权利要求37所述的处理资源分配的方法,还包含:
选择一共享的随机存取存储器单元;
分别地识别该共享的随机存取存储器单元的一或多个磁区作为一或多个重定向磁区;
识别包含该指令的一程序;
存取与该程序相对应的静态代码;
通过根据该静态代码的尺寸定义该一或多个重定向磁区的一共同的尺寸,分割该共享的随机存取存储器单元;以及
根据该分割及一处理单元的规格,加载一定量的该静态代码至一或多个从该一或多个重定向磁区之中所选择出的重定向磁区。
50.如权利要求49所述的处理资源分配的方法,还包含:
分别地识别一或多个该共享的随机存取存储器单元的不同的磁区作为一或多个非重定向磁区;
存取与该程序相对应的至少一共享程序库的一或多个部分;
通过根据该静态代码的一共同的尺寸及该至少一共享程序库的该一或多个部分以定义该一或多个重定向磁区的该共同的尺寸,配比该共享的随机存取存储器单元;以及
根据该配比及该处理单元的规格,加载该静态代码的一或多个部分至一或多个从该一或多个重定向磁区之中选择出的重定向磁区,或至一或多个从该一或多个非重定向磁区之中选择出的非重定向磁区;
根据该配比及该处理单元的规格,加载该至少一共享程序库的该一或多个部份至一或多个从该一或多个重定向磁区之中选择出的重定向磁区,或至一或多个从该一或多个非重定向磁区之中选择出的非重定向磁区。
51.如权利要求37所述的处理资源分配的方法,还包含:
选择与该第一处理单元相关联的一快取存储器单元;
发出与该指令相关联的代码或数据至该快取存储器单元;
识别与该第一处理单元相关联的一处理单元数据路径;以及
在该处理单元数据路径中定义阴影暂存器值,使得该阴影暂存器值反映指示与该代码或数据相关联的至少一数据处理单元的处理单元识别符号。
52.如权利要求37所述的处理资源分配的方法,其中该方法还包含:
识别与该指令相关联的一代码;
识别包含至少一共享存储器一致性机器指令的一执行常式;以及
根据与该第二处理单元相关联的该执行常式,以及根据映射至该至少一共享存储器一致性机器指令的该代码,从该第一处理单元传输该呼叫至该第二处理单元。
53.如权利要求37所述的处理资源分配的方法,还包含:
识别与该指令相关联的一全域存储器地址;以及
从一第三处理单元自动地传输该呼叫至该第一处理单元,以因应该第三处理单元缺乏存取该全域存储器地址以及该第一处理单元具有存取该全域存储器地址。
54.如权利要求37所述的处理资源分配的方法,还包含:
识别与一特定处理单元相关联的一快取存储器单元;
根据位于该快取存储器单元内的该预选数据地址,执行该快取存储器单元的一分配至与该数据相关联的一特定数据类型;
存取包含该指令的一程序;
识别与该程序相对应的一程序语言;
存取与该程序语言相对应的一程序库,该程序库定义包含一存储器分配呼叫的一建构器,以及该存储器分配呼叫映射至具有该特定数据类型的信息;
根据该分配实施一修改至该存储器分配呼叫,从而产生一修改的存储器分配呼叫及该程序的一修正模式;以及
执行该修改的存储器分配呼叫,使得加载该信息至该快取存储器单元以因应该修改。
55.如权利要求54所述的处理资源分配的方法,还包含:
执行该呼叫以向该特定处理单元执行该程序的该修正模式以因应该分配。
56.如权利要求37所述的处理资源分配的方法,还包含:
识别一或多个代码程序库;
存取与该一或多个代码程序库相关联的引址传递原始代码;
传输该引址传递原始代码至按数值传递支持代码,从而产生一传输程序库;以及
使用该传输程序库通过数值而不是通过引址以传递该数据。
57.如权利要求37所述的处理资源分配的方法,还包含:
在该呼叫中识别一或多个指标;
转译该一或多个指标,从而通过数值而不是通过引址以配置该呼叫以传递该数据;
从该第一处理单元执行该呼叫的一传输至该第二处理单元;
当该传输期间通过数值传递该数据,从而在一第一快取存储器单元中储存该数据的一区域拷贝,该第二处理单元包含该第一快取存储器单元;以及
重新映射该一或多个指标至该区域拷贝,从而不需要存取一第二快取存储器单元即能够执行该呼叫,该第一处理单元包含该第二快取存储器单元。
58.如权利要求37所述的处理资源分配的方法,还包含:
调用一远端程序呼叫,从而从该第一处理单元传输该呼叫至该第二处理单元。
59.如权利要求58所述的处理资源分配的方法,还包含:
分别地识别与该第一处理单元及该第二处理单元相关联的第一区域存储器地图及第二区域存储器地图;
识别在该第一区域存储器地图及该第二区域存储器地图之间的一区别;
根据该区别产生一存储器地址转译;以及
使用该存储器地址转译以构成该远端程序呼叫。
60.如权利要求58所述的处理资源分配的方法,还包含:
分别地识别与该第一处理单元及该第二处理单元相关联的一第一快取存储器单元及一第二快取存储器单元;
识别储存在该第一快取存储器单元及与该指令相关联的一数据值;以及
由于该远端程序呼叫,储存该数据值在该第二快取存储器单元。
61.如权利要求60所述的处理资源分配的方法,还包含:
通过该第二处理单元延迟该呼叫的一执行,直到储存该数据值在该第二快取存储器单元内。
62.如权利要求58所述的处理资源分配的方法,还包含:
存取包含该指令的一程序以及与一第一控制线程相关联的一执行常式;
在该呼叫中识别一或多个指标;
转译该一或多个指标以便配置该呼叫,以通过该数值而不是通过该引址传递该数据,从而产生一第二控制线程;
识别与该第二处理单元相关联的一快取存储器单元;
因应该远端程序呼叫通过数值传递该数据,从而在该快取存储器单元中储存该数据的一区域拷贝,以及提供该第二控制线程给该第二处理单元;以及
根据该第一控制线程使用该第一处理单元执行该执行常式,当该第二处理单元根据该第二控制线程执行该指令的一执行,由于该第一控制线程独立于该第二控制线程,借以该执行常式缺乏在该执行期间产生一数据值的一返回请求。
63.如权利要求37所述的处理资源分配的方法,还包含:
识别执行一第一执行常式的一第一处理核心,该第一执行常式映射至该数据,该第一执行常式包含共享存储器一致性机器指令;
在一第二处理核心存取一第二执行常式;以及
根据映射至该数据的该第二执行常式,以及根据包含该共享存储器一致性机器指令的该第二执行常式,调用一程序呼叫,从而从该第二处理核心传输该第二执行常式至该第一处理核心。
64.如权利要求63所述的处理资源分配的方法,其中不同的处理单元分别地包含该第一处理核心及该第二处理核心,该程序呼叫为一远端程序呼叫。
65.如权利要求63所述的处理资源分配的方法,其中一单一处理单元包含该第一处理核心及该第二处理核心两者,该程序呼叫为一远端程序呼叫。
66.如权利要求37所述的处理资源分配的方法,还包含:
存取包含该指令的一程序;
识别与该程序相对应的一程序语言,配置该程序语言以实施一虚拟函数表,使得一数据项包含一或多个虚拟函数表的指标,该数据项属于具有一或多个虚拟函数的一类别,该一或多个虚拟函数表的指标映射至该虚拟函数表;
识别与该程序语言相关联的一建构器,配置该建构器以定义该一或多个虚拟函数表的指标;以及
对于该一或多个虚拟函数,在该程序的一加载期间,注入环绕于该建构器的一包裹呼叫至包含一或多个远端程序呼叫决定包裹的虚拟函数表,从而用指标取代该一或多个虚拟函数表的指标。
67.如权利要求37所述的处理资源分配的方法,还包含:
存取包含该指令的一程序;
识别与该程序相对应的一程序语言,配置该程序语言以实施一虚拟函数表,使得一数据项包含一或多个虚拟函数表的指标,该数据项属于具有一或多个虚拟函数的一类别,该一或多个虚拟函数表的指标映射至该虚拟函数表;以及
修正该虚拟函数表以因应多个远端程序呼叫,使得没有呼叫一远端程序呼叫决定代码,分别地自动地指导该一或多个虚拟函数至一或多个远端程序呼叫。
68.如权利要求37所述的处理资源分配的方法,还包含:
存取包含该指令的一程序;
识别与该程序相对应的一程序语言,配置该程序语言以实施一虚拟函数表,使得一数据项包含一或多个虚拟函数表的指标,该数据项属于具有一或多个虚拟函数的一类别,该一或多个虚拟函数表的指标映射至该虚拟函数表;以及
修正该虚拟函数表以因应缺乏一或多个远端程序呼叫,使得没有呼叫一远端程序呼叫决定代码,自动地指导该一或多个虚拟函数至与该程序相关联的一区域代码。
69.如权利要求37所述的处理资源分配的方法,还包含:
存取该指令的一预定义模式,该指令包含映射至多个条件分支的代码;
产生该指令的多个修正模式,每一修正模式包含修正该代码以从该多个条件分支中跟随一不同的条件分支;
分别地预测与该多个修正模式相关联的多个行为;
存取与该指令相关联的一执行常式;
识别与该执行常式相关联的一运行时间的行为;以及
从该多个修正模式中选择一修正模式,以于该执行常式的一效能的期间执行,以该修正模式的一预测行为为依据,该修正模式相对应于该运行时间的行为。
70.如权利要求37所述的处理资源分配的方法,还包含:
存取与该指令相关联的一执行常式;
识别一虚拟函数的一第一实施及一第二实施,该虚拟函数包含指向该第一实施的一虚拟函数表的入口,以及该虚拟函数还包含一虚拟函数表的指标,从多个虚拟函数表之中映射该虚拟函数表的指标至一第一虚拟函数表;
使用该第一实施起始一部份的该执行常式的一效能;
在该效能期间识别通过该第一实施所展示的一分支行为;
执行该分支行为的一效能分析,从而判定该第二实施相对应于该分支行为的程度大于该第一实施相对应于该分支行为的程度;以及
两者任一:
根据该效能分析,从该多个虚拟函数表之中重新映射该虚拟函数表的指标至一第二虚拟函数表,该第二虚拟函数表包含映射至该第二实施的一指标,或
根据该效能分析,更新该虚拟函数表的入口以指向该第二实施。
71.如权利要求37所述的处理资源分配的方法,还包含:
存取与该指令相关联的一程序,该程序包含映射至一预定义呼叫位置的一预定义函数;
使用该预定义呼叫位置执行该预定义函数的一呼叫;
由于该呼叫,识别通过该预定义函数所展示的一分支行为;以及
根据该分支行为,修正该预定义呼叫位置。
72.如权利要求37所述的处理资源分配的方法,还包含:
存取与该指令相关联的一执行常式;
识别一虚拟函数的一第一实施及一第二实施,该虚拟函数包含指向该第一实施的一虚拟函数表的入口,以及该虚拟函数还包含一虚拟函数表的指标,从多个虚拟函数表之中映射该虚拟函数表的指标至一第一虚拟函数表;
使用该第一实施起始一部份的该执行常式的一效能;
在该效能期间识别通过该第一实施展示的一分支行为;
根据该分支行为,预测该虚拟函数的一可能的未来行为;
执行该可能的未来行为的一效能分析,从而判定该第二实施相对应于该可能的未来行为的程度大于该第一实施相对应于该可能的未来行为的程度;以及
两者任一:
根据该效能分析,从该多个虚拟函数表之中重新映射该虚拟函数表的指标至一第二虚拟函数表,该第二虚拟函数表包含映射至该第二实施的一指标,或
根据该效能分析,更新该虚拟函数表的入口以指向该第二实施。
CN201380051671.4A 2012-08-20 2013-08-19 处理资源分配的装置和方法 Active CN104756078B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201261684813P 2012-08-20 2012-08-20
US61/684,813 2012-08-20
PCT/US2013/055588 WO2014031540A1 (en) 2012-08-20 2013-08-19 Processing resource allocation

Publications (2)

Publication Number Publication Date
CN104756078A true CN104756078A (zh) 2015-07-01
CN104756078B CN104756078B (zh) 2018-07-13

Family

ID=50150328

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380051671.4A Active CN104756078B (zh) 2012-08-20 2013-08-19 处理资源分配的装置和方法

Country Status (5)

Country Link
US (2) US9923840B2 (zh)
EP (1) EP2885708A4 (zh)
JP (1) JP6218833B2 (zh)
CN (1) CN104756078B (zh)
WO (1) WO2014031540A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111666229A (zh) * 2019-03-06 2020-09-15 爱思开海力士有限公司 存储器管理器、数据处理结构和生成地址转换信息的方法
CN114371814A (zh) * 2021-12-08 2022-04-19 浙江大华存储科技有限公司 数据处理的方法、装置及固态硬盘
CN114371814B (zh) * 2021-12-08 2024-05-10 浙江华忆芯科技有限公司 数据处理的方法、装置及固态硬盘

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9626261B2 (en) * 2013-11-27 2017-04-18 Futurewei Technologies, Inc. Failure recovery resolution in transplanting high performance data intensive algorithms from cluster to cloud
US9665633B2 (en) 2014-02-19 2017-05-30 Snowflake Computing, Inc. Data management systems and methods
US9384019B2 (en) 2014-03-25 2016-07-05 International Business Machines Corporation Dynamic code injection
US9286085B2 (en) 2014-06-27 2016-03-15 International Business Machines Corporation Correlating class loader objects across execution environments
US9990305B2 (en) * 2014-09-19 2018-06-05 Nxp Usa, Inc. Memory management component having multiple memory management modules and method therefor
CN104375963B (zh) * 2014-11-28 2019-03-15 上海兆芯集成电路有限公司 基于缓存一致性的控制系统和方法
EP3062142B1 (en) 2015-02-26 2018-10-03 Nokia Technologies OY Apparatus for a near-eye display
US10571993B2 (en) * 2015-03-20 2020-02-25 Sanken Electric Co., Ltd. Micro controller unit
US10121220B2 (en) * 2015-04-28 2018-11-06 Nvidia Corporation System and method for creating aliased mappings to minimize impact of cache invalidation
US10021008B1 (en) 2015-06-29 2018-07-10 Amazon Technologies, Inc. Policy-based scaling of computing resource groups
US10148592B1 (en) * 2015-06-29 2018-12-04 Amazon Technologies, Inc. Prioritization-based scaling of computing resources
US10181030B2 (en) 2015-07-24 2019-01-15 Citrix Systems, Inc. Blocking routine redirection
CN106201438A (zh) * 2016-07-05 2016-12-07 河北建筑工程学院 基于Intel平台服务器CPU对个人计算机的移植方法和系统
US10650552B2 (en) 2016-12-29 2020-05-12 Magic Leap, Inc. Systems and methods for augmented reality
EP3343267B1 (en) 2016-12-30 2024-01-24 Magic Leap, Inc. Polychromatic light out-coupling apparatus, near-eye displays comprising the same, and method of out-coupling polychromatic light
US10592451B2 (en) * 2017-04-26 2020-03-17 International Business Machines Corporation Memory access optimization for an I/O adapter in a processor complex
US10572286B2 (en) 2017-04-26 2020-02-25 International Business Machines Corporation Memory access optimization in a processor complex
US10578870B2 (en) 2017-07-26 2020-03-03 Magic Leap, Inc. Exit pupil expander
WO2019113570A1 (en) 2017-12-10 2019-06-13 Magic Leap, Inc. Anti-reflective coatings on optical waveguides
EP3729172A4 (en) 2017-12-20 2021-02-24 Magic Leap, Inc. INSERT FOR AUGMENTED REALITY VIEWING DEVICE
US11436143B2 (en) * 2017-12-22 2022-09-06 Alibaba Group Holding Limited Unified memory organization for neural network processors
WO2019178567A1 (en) 2018-03-15 2019-09-19 Magic Leap, Inc. Image correction due to deformation of components of a viewing device
WO2019213625A1 (en) 2018-05-03 2019-11-07 De Rochemont Pierre L High speed / low power server farms and server networks
US11204491B2 (en) 2018-05-30 2021-12-21 Magic Leap, Inc. Compact variable focus configurations
EP3803450A4 (en) 2018-05-31 2021-08-18 Magic Leap, Inc. POSITIONING A RADAR HEAD
CN112400157A (zh) 2018-06-05 2021-02-23 奇跃公司 观看系统的基于单应性变换矩阵的温度校准
JP7426103B2 (ja) 2018-06-05 2024-02-01 デ,ロシェモント,エル.,ピエール 高ピーク帯域幅i/oチャネルを備えたモジュール
US11092812B2 (en) 2018-06-08 2021-08-17 Magic Leap, Inc. Augmented reality viewer with automated surface selection placement and content orientation placement
US11579441B2 (en) 2018-07-02 2023-02-14 Magic Leap, Inc. Pixel intensity modulation using modifying gain values
US11856479B2 (en) 2018-07-03 2023-12-26 Magic Leap, Inc. Systems and methods for virtual and augmented reality along a route with markers
WO2020010226A1 (en) 2018-07-03 2020-01-09 Magic Leap, Inc. Systems and methods for virtual and augmented reality
JP7374981B2 (ja) * 2018-07-10 2023-11-07 マジック リープ, インコーポレイテッド クロス命令セットアーキテクチャプロシージャ呼出のためのスレッドウィービング
WO2020023543A1 (en) 2018-07-24 2020-01-30 Magic Leap, Inc. Viewing device with dust seal integration
EP4270016A3 (en) 2018-07-24 2024-02-07 Magic Leap, Inc. Temperature dependent calibration of movement detection devices
WO2020028834A1 (en) 2018-08-02 2020-02-06 Magic Leap, Inc. A viewing system with interpupillary distance compensation based on head motion
EP3830631A4 (en) 2018-08-03 2021-10-27 Magic Leap, Inc. NON-FUSED POSE DRIFT CORRECTION OF A FUSED TOTEM IN A USER INTERACTION SYSTEM
CN117111304A (zh) 2018-11-16 2023-11-24 奇跃公司 用于保持图像清晰度的图像尺寸触发的澄清
JP2022519292A (ja) 2019-02-06 2022-03-22 マジック リープ, インコーポレイテッド 複数のプロセッサによって発生される総熱を限定するための標的意図ベースのクロック速度の決定および調節
EP3939030A4 (en) 2019-03-12 2022-11-30 Magic Leap, Inc. REGISTRATION OF LOCAL CONTENT BETWEEN FIRST AND SECOND VIEWERS OF AUGMENTED REALITY
US11445232B2 (en) 2019-05-01 2022-09-13 Magic Leap, Inc. Content provisioning system and method
US10908924B2 (en) * 2019-05-01 2021-02-02 Intuit Inc. System and methods for loading objects from hash chains
CN114174895A (zh) 2019-07-26 2022-03-11 奇跃公司 用于增强现实的系统和方法
JP2023502927A (ja) 2019-11-15 2023-01-26 マジック リープ, インコーポレイテッド 外科手術環境において使用するための視認システム
US11256522B2 (en) 2019-11-22 2022-02-22 Advanced Micro Devices, Inc. Loader and runtime operations for heterogeneous code objects
US11467812B2 (en) * 2019-11-22 2022-10-11 Advanced Micro Devices, Inc. Compiler operations for heterogeneous code objects
CN111538576B (zh) * 2020-04-20 2023-05-02 支付宝(杭州)信息技术有限公司 数据资源处理方法、装置、设备和存储介质
CN111966607A (zh) * 2020-09-07 2020-11-20 湖南国科微电子股份有限公司 双倍速率存储器的访问方法及系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6269390B1 (en) * 1996-12-17 2001-07-31 Ncr Corporation Affinity scheduling of data within multi-processor computer systems
US7155708B2 (en) * 2002-10-31 2006-12-26 Src Computers, Inc. Debugging and performance profiling using control-dataflow graph representations with reconfigurable hardware emulation
US7350028B2 (en) * 1999-05-21 2008-03-25 Intel Corporation Use of a translation cacheable flag for physical address translation and memory protection in a host
CN101946235A (zh) * 2008-02-27 2011-01-12 国际商业机器公司 用于在共享处理器分区环境中移动线程的方法及装置
CN102473112A (zh) * 2009-09-11 2012-05-23 英派尔科技开发有限公司 关于线程迁移的高速缓存预填充

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2517859B2 (ja) * 1991-10-22 1996-07-24 工業技術院長 並列プロセス管理方法
US6108715A (en) * 1994-12-13 2000-08-22 Microsoft Corporation Method and system for invoking remote procedure calls
JP3639366B2 (ja) * 1995-11-29 2005-04-20 富士通株式会社 アドレス空間共有システム
US6772416B1 (en) * 1999-11-19 2004-08-03 General Dynamics Decision Systems, Inc. Separation kernel with memory allocation, remote procedure call and exception handling mechanisms
US7661107B1 (en) * 2000-01-18 2010-02-09 Advanced Micro Devices, Inc. Method and apparatus for dynamic allocation of processing resources
US9213836B2 (en) * 2000-05-28 2015-12-15 Barhon Mayer, Batya System and method for comprehensive general electric protection for computers against malicious programs that may steal information and/or cause damages
US20030159070A1 (en) * 2001-05-28 2003-08-21 Yaron Mayer System and method for comprehensive general generic protection for computers against malicious programs that may steal information and/or cause damages
US20040034794A1 (en) * 2000-05-28 2004-02-19 Yaron Mayer System and method for comprehensive general generic protection for computers against malicious programs that may steal information and/or cause damages
JP4001727B2 (ja) * 2001-06-15 2007-10-31 富士通株式会社 ファイルアクセス制御プログラム、ファイルアクセス制御装置およびファイルアクセス制御方法
US7093004B2 (en) * 2002-02-04 2006-08-15 Datasynapse, Inc. Using execution statistics to select tasks for redundant assignment in a distributed computing platform
US7509644B2 (en) * 2003-03-04 2009-03-24 Secure 64 Software Corp. Operating system capable of supporting a customized execution environment
US20050071608A1 (en) 2003-09-30 2005-03-31 International Business Machines Corporation Method and apparatus for selectively counting instructions and data accesses
GB2406663B (en) * 2003-10-01 2006-03-22 Toshiba Res Europ Ltd Flexible protocol stack
JP4652680B2 (ja) * 2003-12-22 2011-03-16 パナソニック株式会社 コンパイル方法および装置、ならびにコンパイラ
US7380039B2 (en) 2003-12-30 2008-05-27 3Tera, Inc. Apparatus, method and system for aggregrating computing resources
US7594234B1 (en) * 2004-06-04 2009-09-22 Sun Microsystems, Inc. Adaptive spin-then-block mutual exclusion in multi-threaded processing
US20070106986A1 (en) * 2005-10-25 2007-05-10 Worley William S Jr Secure virtual-machine monitor
US7979844B2 (en) * 2008-10-14 2011-07-12 Edss, Inc. TICC-paradigm to build formally verified parallel software for multi-core chips
JP5245722B2 (ja) * 2008-10-29 2013-07-24 富士通株式会社 スケジューラ、プロセッサシステム、プログラム生成装置およびプログラム生成用プログラム
US20100274972A1 (en) * 2008-11-24 2010-10-28 Boris Babayan Systems, methods, and apparatuses for parallel computing
US9672019B2 (en) * 2008-11-24 2017-06-06 Intel Corporation Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads
US9569270B2 (en) * 2009-04-21 2017-02-14 Empire Technology Development Llc Mapping thread phases onto heterogeneous cores based on execution characteristics and cache line eviction counts
CA2680601C (en) * 2009-10-16 2010-11-02 Ibm Canada Limited - Ibm Canada Limitee Managing multiple speculative assist threads at differing cache levels
JP5810918B2 (ja) * 2009-12-24 2015-11-11 日本電気株式会社 スケジューリング装置、スケジューリング方法及びプログラム
WO2012136766A1 (en) * 2011-04-06 2012-10-11 Telefonaktiebolaget L M Ericsson (Publ) Multi-core processors
US9830158B2 (en) * 2011-11-04 2017-11-28 Nvidia Corporation Speculative execution and rollback
US9128786B2 (en) * 2011-11-22 2015-09-08 Futurewei Technologies, Inc. System and method for implementing shared locks between kernel and user space for synchronize access without using a system call to the kernel
US9280347B2 (en) * 2012-03-15 2016-03-08 International Business Machines Corporation Transforming non-contiguous instruction specifiers to contiguous instruction specifiers
US8966494B2 (en) * 2012-03-16 2015-02-24 Arm Limited Apparatus and method for processing threads requiring resources
CN104781803B (zh) * 2012-12-26 2018-06-15 英特尔公司 用于架构不同核的线程迁移支持

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6269390B1 (en) * 1996-12-17 2001-07-31 Ncr Corporation Affinity scheduling of data within multi-processor computer systems
US7350028B2 (en) * 1999-05-21 2008-03-25 Intel Corporation Use of a translation cacheable flag for physical address translation and memory protection in a host
US7155708B2 (en) * 2002-10-31 2006-12-26 Src Computers, Inc. Debugging and performance profiling using control-dataflow graph representations with reconfigurable hardware emulation
CN101946235A (zh) * 2008-02-27 2011-01-12 国际商业机器公司 用于在共享处理器分区环境中移动线程的方法及装置
CN102473112A (zh) * 2009-09-11 2012-05-23 英派尔科技开发有限公司 关于线程迁移的高速缓存预填充

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111666229A (zh) * 2019-03-06 2020-09-15 爱思开海力士有限公司 存储器管理器、数据处理结构和生成地址转换信息的方法
CN111666229B (zh) * 2019-03-06 2023-04-18 爱思开海力士有限公司 存储器管理器、数据处理装置和生成地址转换信息的方法
CN114371814A (zh) * 2021-12-08 2022-04-19 浙江大华存储科技有限公司 数据处理的方法、装置及固态硬盘
CN114371814B (zh) * 2021-12-08 2024-05-10 浙江华忆芯科技有限公司 数据处理的方法、装置及固态硬盘

Also Published As

Publication number Publication date
US20180219795A1 (en) 2018-08-02
EP2885708A1 (en) 2015-06-24
US20150256484A1 (en) 2015-09-10
US10999214B2 (en) 2021-05-04
JP2015526821A (ja) 2015-09-10
CN104756078B (zh) 2018-07-13
EP2885708A4 (en) 2016-11-09
WO2014031540A1 (en) 2014-02-27
JP6218833B2 (ja) 2017-10-25
US9923840B2 (en) 2018-03-20

Similar Documents

Publication Publication Date Title
CN104756078A (zh) 处理资源分配
CN1894662B (zh) 作为用于执行引导码的ram的处理器缓存存储器
CN101950259B (zh) 用于执行事务的装置、系统及方法
CN104205064B (zh) 将程序事件记录事件向运行时间检测事件变换的系统及方法
CN101322106B (zh) 用于在可控运行时环境中进行基于硬件的动态逸出检测的方法和装置
US10592430B2 (en) Memory structure comprising scratchpad memory
CN105493041A (zh) 在访问动态类型化对象过程中的并发内联高速缓存优化
CN104704474B (zh) 用于管理的运行时间的基于硬件的运行时间检测设施
CN101611380A (zh) 推测性吞吐量计算
Lustig et al. ArMOR: Defending against memory consistency model mismatches in heterogeneous architectures
CN103582879B (zh) 管理耦合设施中的操作员消息缓冲器
Wood et al. Low-level detection of language-level data races with LARD
Huber et al. Worst‐case execution time analysis‐driven object cache design
Manivannan et al. Efficient forwarding of producer-consumer data in task-based programs
CN103597462B (zh) 发送操作员消息命令到耦合设施
Bijo et al. A Maude framework for cache coherent multicore architectures
Bijo et al. An operational semantics of cache coherent multicore architectures
Principe et al. A distributed shared memory middleware for speculative parallel discrete event simulation
Bijo et al. A formal model of parallel execution on multicore architectures with multilevel caches
Papadakis Performance analysis and optimizations of managed applications on Non-Uniform Memory architectures
Jung et al. SnuRHAC: a runtime for heterogeneous accelerator clusters with CUDA unified memory
Zhang et al. Versionized process based on non-volatile random-access memory for fine-grained fault tolerance
US20230236835A1 (en) Cooperative garbage collection barrier elision
Lüdtke et al. Cache-Related Performance Analysis Using Rogue Wave Software’s ThreadSpotter
Wood Software and Hardware Support for Data-Race Exceptions

Legal Events

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