CN113574505A - 分布式系统中的硬件协调资源管理 - Google Patents

分布式系统中的硬件协调资源管理 Download PDF

Info

Publication number
CN113574505A
CN113574505A CN202080020560.7A CN202080020560A CN113574505A CN 113574505 A CN113574505 A CN 113574505A CN 202080020560 A CN202080020560 A CN 202080020560A CN 113574505 A CN113574505 A CN 113574505A
Authority
CN
China
Prior art keywords
entity
ownership
common resource
source
resource
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.)
Pending
Application number
CN202080020560.7A
Other languages
English (en)
Inventor
P·帕特尔
K·曼
T·哈吉斯
M·辛格
M·库特奇
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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN113574505A publication Critical patent/CN113574505A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • 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/468Specific access rights for resources, e.g. using capability register
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/524Deadlock detection or avoidance
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • 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/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/522Barrier synchronisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Multi Processors (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Multimedia (AREA)
  • Hardware Redundancy (AREA)

Abstract

系统和方法涉及用于在分布式系统中将公共资源的所有权从拥有资源的源实体转移到将拥有资源的目的地实体的方法和设备。本方法包括源实体接收命令以改变所有权(MOVE命令),以及然后标记源实体不再拥有公共资源。源实体然后发送MOVE命令到目的地实体,目的地实体然后将更新其公共资源所有权的表以反映公共资源的所有权已经从源实体被转移到目的地实体。更新源实体中的公共资源的所有权与分配MOVE命令到目的地实体同时发生是有利的。

Description

分布式系统中的硬件协调资源管理
根据35 U.S.C.§119要求优先权
本专利申请要求于2019年3月11日提交的、名称为“HARDWARE CO-ORDINATION OFRESOURCE MANAGEMENT IN DISTRIBUTED SYSTEMS”的第16/298,419号非临时申请的优先权,该申请转让给本申请的受让人,以引用方式将其明确地并入本文。
技术领域
所公开的方面涉及分布式电子系统,更具体地,示例性方面涉及在分布式电子系统中共享资源。
背景技术
随着电子和封装领域的越来越多的进步,功能可以被压缩到分布式系统中。由于大量的独立电子实体可以包括在分布式系统中,实体共享资源是有利的,例如,使得功能单元不被无必要的复制。有效共享资源也是有益的,例如,这种共享引起的延迟被减小。
因此,改善分布式系统中资源所有权管理是有必要的。
发明内容
本发明的示例性方面涉及用于管理在分布式系统中的资源的硬件,系统和方法。
在一个实施例中,公开了一种用于示例性分布式系统中的方法,包括源实体和目的地实体。分布式系统中每个实体具有记录所有权的公共资源所有权的表,(即,哪个实体可以访问公共资源)。由分布式系统中各实体共享的资源是公共资源,因为多于一个实体能够访问它们,但一次只有一个实体能够访问公共资源。公共资源所有权的表记录哪些实体拥有(即,可以访问)公共资源。可以访问公共资源的实体被称为拥有该资源,并且公共资源的任意访问由拥有该公共资源的实体来执行。
该方法包括由在分布式系统中的源实体确定公共资源的所有权(访问公共资源的权利)将被转移到目的地实体中。该方法还包括更新源实体的公共资源所有权的表,以反映源实体不再拥有公共资源;以及向分布式系统内的另一实体发送MOVE命令,反映公共资源所有权已经从源实体改变到目的地实体。
在另一实施例中,公开了一种在示例性分布式系统中控制对公共资源的访问的方法。该方法包括由非源实体(不拥有该公共资源的实体)生成访问该公共资源的请求。该方法还包括:向源实体发送访问请求,由所述源实体生成对公共资源的访问,并且将所述公共资源的访问的结果引导到非源实体。
在另一实施例中,公开了一种在示例性分布式系统中、当源实体不被发起实体所知时而转移公共资源的所有权的方法,源实体拥有公共资源。发起实体(生成对公共资源的访问的访问请求的实体)请求转移所有权,但不是源实体。该方法包括:由具有共同资源所有权的表的非源发起实体接受MOVE命令,由发起实体检查公共资源所有权的表,以确定哪一实体拥有公共资源,以及从发起实体发送MOVE命令到源实体,指示公共资源的所有权的、从源实体到目的地实体的转移被请求。
在另一实施例中,公开了当拥有公共资源的源实体不具有公共资源所有权的表时在示例性分布式系统中转移公共资源的方法。本方法包括由不具有公共资源所有权的表的实体接受MOVE命令,由不具有公共资源所有权的表的实体确定该实体不再拥有公共资源,以及从非源实体发送MOVE命令到至少一个其他实体,指示公共资源所有权的、从公共源实体到目的地实体的转移被指示。
在另外的实施例中,公开了一种将访问请求和公共资源所有权从源实体转发到目的地实体的方法。本方法包括在目的地实体接收公共资源所有权将从源实体移动到目的地实体的指示;以及检查源实体命令序列,以确定是否存在用于目的地实体的对公共资源的访问请求以及将公共资源的所有权转移到目的地实体的MOVE命令。如果MOVE命令和访问请求均存在,确保MOVE命令在访问请求到达目的地实体之前到达目的地实体。
公开了一种用于在示例性分布系统中转移公共资源所有权的装置。装置包括:用于接收由源实体公共资源的所有权将被转移的指示的输入;用于通过源实体更新所有权以反映源实体不再拥有公共资源的公共资源所有权的表;以及用于向在分布式系统内的另一实体发送MOVE命令以反映公共资源所有权已经从源实体改变到目的地实体的变化的电路装置。
在另外的实施例,公开了用于在分布式系统中控制对公共资源的访问的装置。该装置包括:被配置为由非源实体生成访问公共资源的请求的电路装置;被配置为将访问请求传送到源实体的电路装置,被配置为由源实体生成对公共资源的访问的电路装置;以及将公共资源的访问的结果引导到非源实体的电路装置。
在另外的实施例中,公开了一种在分布式系统中、当源实体未被发起实体所知时而转移公共资源的所有权的装置,源实体拥有公共资源,发起实体请求转移所有权。该装置包括:被配置为由具有公共资源所有权的表的非源发起实体接收MOVE命令的电路装置;被配置为由发起实体检查公共资源所有权的表以确定哪一实体拥有公共资源的电路装置;以及被配置为从发起实体发送MOVE命令到源实体指示公共资源的所有权的、从源实体到目的地实体的转移被请求的电路装置。
在另外的实施例中,公开了一种装置,该装置配置为当源实体不具有公共资源所有权的表时转移分布式系统中的公共资源的所有权,源实体拥有公共资源。该装置包括:源实体电路装置,被配置为接受MOVE命令;指示器,指示源实体是否拥有公共资源;源电路装置,被配置为注意源实体是否拥有公共资源;以及电路装置被配置为从非源实体发送MOVE命令到至少一个其他源实体,指示公共资源所有权的、从源实体到目的地实体的转移已经发生。
在另一实施例中,公开了一种将访问请求和公共资源所有权从源实体转发到目的地实体的装置。该装置包括:被配置为在目的地实体处接收公共资源的所有权将从源实体移动到目的地实体的指示的电路装置;源实体序列,用于在执行用于源实体的命令之前存储用于源实体的命令;以及电路装置,被配置为检查源实体命令序列以确定是否存在用于目的地实体的对公共资源的访问请求以及将公共资源的所有权转移到目的地实体的MOVE命令,如果MOVE命令和访问请求都存在,该电路装置确保MOVE命令在访问请求到达目的地实体之前到达该目的地实体。
在另外的实施例中,公开了一种配置为在示例性分布式系统中转移公共资源所有权的装置。装置包括:用于接收由源实体确定公共资源的所有权将被转移到目的地实体的指示的部件;用于由源实体更新所有权以反映源实体不再拥有公共资源的部件;以及用于向在分布式系统内的另一实体发送MOVE命令以反映公共资源所有权已经从源实体改变到目的地实体的变化的部件。
在另外的实施例中,公开了一种非暂态计算机可读存储介质,其包括代码,该代码当由处理器执行时,使得处理器执行用于在示例性分布式系统中管理资源所有权的表的操作。非暂态计算机可读存储介质中包含的编码包括:用于由源实体接收的公共资源的所有权将被转移的指示的编码,用于由源实体更新所有权以反映源实体不再拥有公共资源的编码,以及用于向在分布式系统内的另一实体发送MOVE命令以反映公共资源所有权的变化已经从源实体被转变到目的地实体的编码。
附图说明
呈现附图以帮助描述本发明的实施例的方面,以及附图仅仅用于提供对这些方面的说明而非限制本发明。
图1是简单的示例性分布式系统的图形图示;
图2是说明性分布式系统中的一部分的图形表示;
图3是在实体间的资源所有权转移的图形图示;
图4是说明实体间的资源所有权转移的流程图;
图5是说明性的分布式系统的一部分的图形表示;
图6是说明性的分布式系统的一部分的图形表示。
具体实施方式
在针对本发明的特定方面的以下描述和相关附图中公开了本发明的各方面。在不脱离本发明的范围的情况下,可以设计备选的方面。另外,本发明的实施例中众所周知的元素将不被详细的描述或被省略,以免混淆本文中教导的相关说明性细节。
词语“示例性”在本文中用于表示“作为示例,实例或阐述使用”。本文中描述为“示例性”的任何方面不必解释为比其它方面优选或有利。类似的,术语“本发明的特定方面”不要求发明的所有方面包括讨论的特性,优点或操作模式。
本文中使用的术语仅用于描述特定方面的目的并且不旨在作为本发明的方面的限制。如本文中所使用的,单数形式“一”,“一个”,“该”也旨在包括复数形式,除非文中另外明确指示。将进一步理解,术语“包括(comprises)”,“包括(comprising)”,“包括(includes)”和/或“包括(including)”在本文中使用时,指定所述特征,整数,步骤,操作,元件和/或部件,但不排除一个或多个其它特征,整数,步骤,操作,元件,部件和/或它们的组合的存在或添加。
此外,根据要由例如计算设备的元件执行的动作序列来描述许多方面。将认识到,本文中所描述的各种动作可以由特定电路(例如,专用集成电路(ASIC))、由一个或多个处理器执行的程序指令或通过两者的组合来执行。另外,本文中所描述的动作序列可以被视为完全体现于任何形式的计算机可读存储介质内,该计算机可读存储介质中存储有对应的一组计算机指令,该组计算机指令在执行时将致使相关联的处理器执行本文中所描述的功能性。因此,本发明的各个方面可以以许多不同形式来体现,所有这些形式都被预期在所要求保护的主题的范围内。另外,对于本文中所描述的方面中的每一方面,任何此类方面的对应形式可以在本文中描述为(例如)“经逻辑配置以”执行所描述动作。
出于本公开的目的,分布式系统包含但不限于电子实体(实体)包括,但不限于用于接收信息的输入,用于传输信息的输出以及用于与其他实体通信的消息传递机构。用于接收信息的输入以及用于与其他实体通信的输出以及消息传递总线事实上可以是同样的物理连接,例如都用作输入或输出两者的串行或并行的总线,但它们不是必需是。
出于本公开的目的,共享资源(资源)被定义为由不同实体在不同时间使用的共享设备(例如,存储器表、浮点单元、输入/输出单元、寄存器等),例如,共享资源可以由多线程计算环境中的不同线程访问。
出于本公开的目的,所有者被定义为用作到共享资源的网关的、单数的、选择的访问控制器。所有权(和非所有权)可以被包含在实体内在公共资源所有权表中(尽管不需要),使得实体可以知道它是否可以访问共享资源。一旦共享资源被拥有,所有者实体就可以访问或授权对共享资源的访问。
出于本公开的目的,访问被定义为需要通信的任何操作,例如对公共资源的写入或从公共资源读取。
出于本公开中的目的,MOVE命令是将共享资源的所有权从一个实体转移到另一实体的命令。MOVE命令包括公共资源的标识以及公共资源的所有权将被移动到的实体的指示,尽管其也可以包括其他信息。
出于本公开的目的,源实体是拥有公共资源的实体。
出于本公开的目的,目的地实体是公共资源的所有权将被转移到的实体。
出于本公开中的目的,发起实体是其中可以发起MOVE指令的非源的以及非目的地实体。
出于本公开中的目的,公共资源所有权的表(也称为公共源表,公共所有权的表,以及资源所有权的表)是目前拥有公共资源的实体的列表。
图1是简单的示例性分布式系统的图形图示。通常,分布式系统是运算资源去中心化到协作以适当起作用的多个实体的系统。这样的合作通过具有在实体间传递信息的机制而被共同完成。图1中的系统是简单分布式系统的示例。图1展示了元件101(分布式系统的示例性部分),包括在负载基底102上的不同的半导体管芯103,109a,109b,109c,115a,115b和115c。在图1中,三个CPU(中央处理单元)管芯115a,115b和115c通过三个互联的总线113a,113b和113c而被分别耦合到三个存储器管理单元管芯109a,109b和109c。三个存储器管理单元管芯109a,109b和109c还经由存储器总线107而被耦合到存储器管芯103中。存储器管芯103包括三个CPU管芯115a,115b和115c将访问的表105。由于只有一个表105,CPU管芯115a,115b和115c必须轮流访问表105。对表105的访问在消息传递总线111之上介导。存储器管理单元管芯109a,109b以及109c使用消息传递总线111共享所有权以及转移表格105的所有权。控制所有权(允许从被多个实体使用的公共资源读取或向其写入)的一种方式是在每个实体内保持列出每个实体以及哪个实体拥有公共资源并且因此被允许访问公共资源的所有权的表。本文中这样的表被认为是公共资源所有权的表。只有表105的所有者—源实体可以在给定的时间内访问它,因此对表105的访问是使用消息传递总线111来管理的。这样的消息传递“总线”可以是由消息传递总线111所示的串行或并行总线,或也可以是一些种类的虚拟通道。能够在实体之间传递信息的机构在这里被认为是消息传递“总线”。
当多个实体,例如存储器管理单元管芯109a,109b和109c从公共资源中读取以及写入到公共资源,例如表105,存在系统由于一个存储器管理实体必须等待另一实体完成公共资源的使用而被变慢的可能性。如果等待公共资源的时间超标,则系统的运行会变慢。因此,快速地转换资源所有权是有益的。然而,如果一个实体打断另一实体的数据(例如,如果被指定于一个实体的数据由于属于第二实体而被第二实体中断)或在竞争状况的情况下,多于一个MMU109试图同时访问表105,快速转换所有权可能导致竞赛状况以及导致资源讹误。当两个或更多实体同时想访问公共资源,减少被分配给转换源所有权的时间将可能增长实体间竞争状况的可能性,这会恶化资源讹误的问题。
如图1所示的分布式系统示例是一种分布式系统的示例。虚拟无限数量的不同的分布式系统可以被设计。目前的示例被包括于给出具体的,易于理解的系统示例,其中多个实体通过消息传递总线111协作,以用于访问公共资源表105。
图2是另一说明性分布式系统中一部分201的图形表示。在分布式系统201中,存储器表203将被四个计算实体写入以及从中读取,四个计算实体为:实体1(205a),实体2(205b),实体3(205c)和实体4(205d)。实体205a-205d经由消息传递总线207互相通信,这可以是本领域已知的、能够在实体间传递消息的任何类型的信道,例如串行总线,并行总线或虚拟信道等。
在图2中,实体1(205a)最初拥有存储器表203。然而,存储器表203是公共拥有资源,其信息对于说明性分布式系统201中所有的实体205a-205d是相关的。如果实体1(205a)是公共拥有资源(存储器表203)的所有者,则其他实体205b-205d中没有一个实体被允许访问存储器表203。如果实体请求从存储器表203访问,它可以转发访问请求到资源所有者实体1(205a),因为实体1(205a)拥有存储器表203,以及通常没有其他同时到存储器203的访问是被允许的,例如,以用于保护数据连续性问题。出于示例的目的,只有资源的所有者(例如,源实体)将访问资源,以及如果其他实体请求公共资源中的数据,它们将向当前的公共资源所有者上传对该公共资源的访问请求以获得访问。
系统软件(未示出)可以揭示公共资源所有权的变化。这样的所有权转移能提高系统的性能存在于许多情况中。
所有权的从一个实体到另一实体的转移可以引起存储器连续性的问题,例如,如果两个实体试图同时向存储器表203中相同的位置进行写入。这样的情况通常被提及作为竞态条件(race condition)。竞态条件难以解决,因为这样的竞态条件可以取决于多种因素间歇地使数据讹误。因此,通过确保仅资源的拥有者可以访问该资源来防止这样的竞态条件是有利的。
一种简单但有效的方法来用于在转移所有权时避免竞态条件的方法是将实体暂缓。换言之,当需要改变公共资源的所有权时,竞态条件可以通过仅仅停止所有实体的访问(例如,对公共资源的读出或写入公共资源),直到所有权的转移完成来避免。这种方法当然有明显的缺点,即,不管是否必要,公共资源的所有访问被停止。
图3是实体间的资源所有权转移的图表说明。本方法包括转移资源所有权,解决了上文描述的竞态条件而不需要低效地暂缓系统中的实体。图3中,实体1到4(分别是305a到305d)是所有可能需要访问公共资源311的实体。实体305a-305d通过任何适合的类型(未示出)的消息总线传递消息,以通过转移资源的所有权来共享到公共资源311的访问。
在要转移的资源(例如,公共资源311)的所有权的转移中的第一步是针对源实体(其拥有资源)来更新其在其公共资源所有权表313中的所有权。公共资源所有权的表(例如313)是系统中的实体的清单,以及系统中每个实体拥有(能够访问)什么公共资源。每个实体可以包括具有同样信息的公共资源所有权的表。公共资源所有权的表313将被更新以反映源实体1(305a)放弃所有权到目的地实体305b(即,实体2)。在任何其他的实体更新其公共资源所有权的表之前,在源实体中更新公共资源所有权的表对避免竞态条件是有帮助的。图3中的每个实体305a-305d具有公共资源所有权的表,类似于公共资源所有权的表313,其记录了目前拥有资源的实体。实体3和实体4中的公共资源所有权的表没有被示出,以避免对图3的不必要的混淆。当前示例中的实体1(305a)拥有公共资源311。为了转移公共资源311的所有权,实体1(305a)更新其公共资源所有权的表313以反映其不再是公共资源311的所有者,并且目的地实体305b是新的所有者的事实。目前到达实体1(305a)的、对公共资源311的任何访问请求将被转发到新的所有者,其反映在实体1(305a)的公共资源所有权的表313中。
然后,一旦实体1(305a)可以执行命令并且更新其公共资源所有权的表315,实体1(305a)发送MOVE命令307a到即将变成新的公共资源311的所有者的目的地实体305b。MOVE命令也被发送到本系统的其他实体中,以至于它们的公共资源所有权的表能够被被适当地更新有新的公共资源所有权。所有权的改变应当尽可能的接近于基元操作,也就是说,被反映于公共资源所有权的所有权改变应当与向其他实体(例如,307a,311a和309a)发送MOVE命令同时发生。然而如果这样的基元操作由于一些原因不可能发生,所有权的改变应该在MOVE命令被任何其他实体所执行之前在源实体的公共资源所有权的表中被反映,以确保“线程安全”操作以及从而确保一个线程不会讹误其他线程的数据,一旦每个实体已经改变它的资源所有权的表,可以向源实体回传MOVE命令已经被执行(例如307b,309b和311b可以报告它们的公共资源所有权的表已经被更新)。
图4是示出资源所有权在实体之间的转移的流程图,概括性地在401中展现。
在框图403中,当前拥有公共资源311的源实体305a,从另一实体(例如,305b,目的地实体)中接收MOVE命令。下一个决策框图405被执行。
在决策框图405中,源实体305a确定是否公共资源311已经完成访问公共资源。如果源实体305a没有完成访问公共资源311,框图405将被继续执行。如果源实体305a完成了公共资源311的使用,流程将转到框图407。
在框图407中,源实体305a通过更新其公共资源所有权的表313来让与所有权,以反映目的地实体305b拥有公共资源311的事实。控制所有权的一种方式是在每个实体内维护所有权的表,该所有权的表列出了每个公共资源以及哪个实体拥有公共资源,并且因此被允许从公共资源中读取或写入(即,访问)公共资源。在更简单的系统中,例如,访问仅仅一个公共资源的实体,公共资源所有权的表可以由关于实体是否拥有公共资源的指示符替换。在当前更复杂的示例性系统中,源实体305a通过在其公共资源所有权的表313中注意到公共资源311由目的地实体305b所有来以让与所有权。然后控制转到框图409。
在框图409中,源实体发送MOVE命令到(也被认为是MOVE命令)到目的地实体305b,接下来执行框图411。
在框图411中,目的地实体305b接收MOVE命令,接下来更新其内部公共资源所有权,以反映目的地实体305b现在是公共资源311的所有者。接下来执行框图413。
在框图413中,目的地实体305b检查其公共资源表来确定是否其现在拥有公共资源311。如果目的地实体305b不再拥有公共资源311,接下来执行框图415。
在框图415中,目的地实体305b将从公共资源到达到他这里的任意访问请求转发回到源实体,以及接下来将执行框图413。
当然,如果源实体305a从公共资源接收任意数据,将检查它的公共资源表313,以及一旦确定其公共资源表该表示公共资源属于目的地实体305b,将转发数据到目的地实体305b。这种框图413与框图415之间的交替过程(ping ponging)将在框图413中被打破,当目的地305b的公共资源所有权的表313被更新,使得目的地实体305b是公共资源311的所有者。接下来将执行417。
在框图417中,目的地实体305b具有公共资源311的所有权,其被反映在公共资源所有权的表315中,以及目的地实体305b可以开始访问公共资源311。
图5是说明性的分布式系统的一部分501图形表示。通常,在分布式系统中运行的软件知道哪个实体拥有特定的公共资源。在图5中,示出了在分布式系统中的第一实体中执行的软件不知道哪个实体拥有特定的公共资源的情况。在这样的情况下,MOVE命令能够被发送第二实体,例如通过将第一实体耦合到第二实体的消息传递总线。如果第二实体没有拥有作为MOVE命令的主题的公共资源,接收MOVE命令的第二实体将试图将其转发到拥有特定公共资源的实体。如果接收MOVE命令的第二实体拥有公共资源,第二实体将执行MOVE命令以及让与公共资源的所有权。
在图5的图形表示中,示出了四个实体:505a,505b,505c和505d。每个实体分别具有公共资源所有权的表503a,503b,503c和503d。
假设,用于说明的目的,MOVE命令被发送到实体3(505c),实体3不是其所有权将被移动的公共资源的当前所有者。实体3可以被视为发起实体,因为它是MOVE命令被最初发送(即,发起)的地方。假设实体1(505a)是拥有公共资源的实体(即,源实体),实体3不应是在其公共资源表503c中改变其映射第一个。一旦实体3(505c)(发起实体)检查它的公共资源所有权的表503c,将确定(例如)实体1(505a)是其所有权将被移动的公共资源的当前所有者(源实体)。实体3(505c)然后将发送MOVE FWD请求507b到实体1(505a)。一旦实体1接收MOVE FWD请求507b,它将更新其公共资源所有权的表503a以反映公共资源所有权到目的地实体505b的转移的移动。随后,一旦实体1(505a)已经更新它的公共资源所有权的表503a,实体1(505a)然后可以发送MOVE命令到509b,507c和509d所示的实体2,3,和4,使得它们可以在其公共资源所有权的表503b,503c和503d中更新所传输的资源的所有权。一旦实体2、3、4已更新其公共资源表,它们可以发送MOVE CMPLT(MOVE完成)命令(509c,511和507d)到MOVE命令的源实体中,在示例实体3(505c)中。一旦请求了所有权变更请求的实体1(505a)从分布式系统的其他实体中接收MOVE COPLT命令(509c,511和507d),可以通知软件公共资源所有权的改变的请求已经完成。
在某些情况下,可以有实体不需要拥有某些公共资源,在一些情况下甚至可能不具备公共资源所有权的表。例如,仅访问打印机的实体将不需要资源所有权的表,该实体需要指示其是否目前拥有打印机。在目前的示例实体3(505c)中,这样的实体可以通过发送“虚设”MOVE CMPLT命令到被请求移动的实体来响应MOVE命令。
源实体没有公共资源所有权的表的示例场景可以出现,例如,如果实体只访问一个公共资源并没有对其他公共资源的访问。正如上述示例,其中实体访问仅一个公共资源,打印机,可以存在在系统内部不具有公共资源所有权的表的实体由于它们访问单一公共资源。实体不需要跟踪它不使用的公共资源。
例如,假设源实体是实体1(505a)并且不存在公共资源所有权的表503a。需要采取机制以处理这个情况。再次,实体3(503c),发起实体,接收MOVE命令并将其转发到源实体实体1(505a)中。尽管实体1(505a)没有公共资源所有权的表,作为源实体,它仍然和公共资源转移协调。一旦源实体505a从请求实体505c中接收MOVE命令,源实体505a可以标记公共资源为其对它不再可用,并创造了临时标记(未示出)。然后源实体505a可以发送MOVE命令(例如,509b,509d和507c)。一旦发起请求的实体505c从系统中所有其他实体中接收所有的MOVE CMPLT信号(509c、511和507d),它然后可以告知源实体505a资源所有权转移已完成,并发送MOVE CMPLT命令507a到源实体505a以指示所有权的转移已完成,以及实体1(505a)可以移动临时资源映射表。在这种情况下,临时资源映射表能够记录系统中的实体以及它们是否响应于MOVE命令(例如509b,509d和507c)并发送MOVE CMPLT命令(509c,511和507d)到源实体,以及如果需要发送到发起实体。
图6是说明性的分布式系统的一部分601的图形表示。在图6中,示出了四个实体:实体1(605a),实体2(605b),实体3(605c)和实体4(605d)。
实体1(605a)是源实体。实体1(605a)包括命令序列607。命令序列607包括用于实体1(605a)去执行的命令,例如传送命令,这可以是没有顺序的。
例如,如图5中所示,假设实体1(605a)接收到将被实体2(605b)完成的公共资源访问的请求。还假设公共资源所有权的表603a指示实体1(605a)是当前的、将被实体2(605b)访问的资源的所有者。在某些时刻,我们可以假设实体1的命令序列607将包括对于实体2(605b)的到公共资源615的访问请求611。实体1(605a)了解其必须通过访问请求611到实体2(605b)。在某些时刻,实体1(605a)也将确定实体1是公共拥有资源615的所有者,并生成MOVE命令609以将公共拥有资源615移动到实体2(605b)。访问请求611被安排为优先于MOVE命令609而被传送到实体2(605b)是完全可能的。如果访问请求611在MOVE命令609之前到达实体2(605b),然后实体2(605b)的目的地将简单地转发访问请求611回到实体1(605a),如图613所示。然而,如果实体1(605a)能够检测到它将发送针对公共拥有资源615的第一访问请求611和MOVE命令609两者到公共实体,这将比优先发送MOVE命令609更有效率。
如果访问请求611被发送到目的地实体605b优先于MOVE命令被发送到目的地实体605b,目的地实体605b可以检测它的公共资源所有权的表603b,并且确定公共资源615由源实体605a拥有,以及转发613访问请求611到公共拥有资源615先前的所有者(在这种情况下是源实体605a)。然而,如果MOVE请求609优先于访问请求611而被从源实体605a发送,则目的地实体605b将在获得访问请求611之前更新其公共资源所有权的表。目的地实体605b将确定其拥有公共资源615,并且访问公共资源615是自由的。
在这种情况下,访问请求611优先于MOVE命令609而被发送到目的地实体605b,以及访问请求611将在613被转发返回到源实体605a,源实体605a将检查其公共资源所有权的表603a,并且然后转发访问请求611返回到目的地实体605b(即,实体2)。相应地,如果实体1(605a)检测出这里有转移公共资源的所有权到目的地实体605b的MOVE命令609,以及是在命令序列607中代表目的地实体605b的公共资源的访问请求611的命令两者,这对于实体1(605a)确保MOVE命令609被发送,并在访问请求611到达目的地实体605b前到达目的地实体605b是有益的,这将确保目的地实体605b已经更新其公共资源所有权的表603b。一旦公共资源615的所有权已经被源实体605a让与,目的地实体605更新其公共资源所有权的表603b,目的地实体605b拥有公共资源。一旦目的地实体605b拥有公共资源615,其将完成访问请求611并不再在613转发访问请求。
本领域的技术人员可以理解,信息和信号可以使用任意各种的不同的科技和技术而被表示。例如,数据,指令,命令,信息,信号,位,符号和芯片可以通过上述描述而由电压,电流,电磁波,磁场或磁粒子,光场或光粒子,或上述的组合来呈现。
另外,本领域技术人员可以与本发明的方面相关联的各种示例性逻辑框图,模块,电路和算法步骤可以被实施于电子硬件,计算机软件或二者的结合。为了清晰地说明这种可交互变换的硬件和软件,在上文描述的各种说明性组件,模块,电路以及步骤可以就它们的功能而被概括。将此功能性实施为硬件还是软件取决于特定应用以及强加于整个系统的设计约束。所属领域的技术人员可以针对每种特定应用以不同方式实施所描述的功能性,但此类实施决策不应被解释为致使脱离本发明的范围。
与本文中公开的方面相关联的方法,序列和/或算法可以直接体现在硬件、由处理器执行的软件模块或二者的结合中。软件模块可以被驻留在RAM寄存器,闪存,ROM存储器,EPROM存储器,寄存器,硬盘,可移动硬盘,CD-ROM,或本领域已知的任意其他形式的存储介质。示例性存储介质被耦合到处理器,使得该处理器可以从存储介质中读取信息或将信息写入存储介质。作为备选,存储介质可以被集成到处理器。
因此,本发明的一个方面可以包括实现用于管理高速缓存的分配的方法的计算机可读非暂态介质。因此,本发明不限于所说明的实例,并且用于执行本文中所描述的功能性的任何装置被包括在本发明的方面中。
尽管前述公开展示了本发明的说明性方面,但应注意,在不脱离如所附权利要求书所限定的本发明的范围的情况下,可以在本文中做出各种改变和修改。此外,尽管本发明的元件可能以单数形式描述或被要求保护,但除非明确陈述限制于单数形式,复数形式也被涵盖。

Claims (15)

1.一种用于分布式系统的方法,所述分布式系统包括源实体和目的地实体,其中每个实体具有公共资源所有权的表,所述方法包括:
由所述源实体确定公共资源的所有权将被转移到所述目的地实体;
更新所述源实体的所述公共资源所有权的表,以反映所述源实体不再拥有所述公共资源;以及
向所述分布式系统中的另一实体发送MOVE命令,反映所述公共资源所有权已经从所述源实体改变到所述目的地实体。
2.根据权利要求1所述的方法,其中更新所述公共资源所有权的表还包括指示所述目的地实体拥有所述公共资源。
3.根据权利要求2所述的方法,还包括向至少一个非源实体发送MOVE命令,指示所述公共资源的所有权已经从所述源实体改变到所述目的地实体。
4.根据权利要求3所述的方法,其中所述方法还包括从至少一个非源实体发送所述公共资源的所有权已经从所述源实体改变到所述目的地实体的确认。
5.一种在分布式系统中控制对公共资源的访问的方法,所述方法包括:
由非源实体生成访问所述公共资源的请求;
将所述访问请求传送到源实体;
由所述源实体生成对所述公共资源的访问;以及
将所述公共资源的所述访问的结果引导到所述非源实体。
6.根据权利要求5所述的方法,其中将所述访问请求传送到所述源实体还包括:经由一个消息传递总线发送所述访问请求。
7.一种在分布式系统中、当源实体未被发起实体所知时而转移公共资源的所有权的方法,所述源实体拥有所述公共资源,所述发起实体请求转移所有权,所述方法包括:
由具有公共资源所有权的表的非源发起实体接收MOVE命令;
由所述发起实体检查所述公共资源所有权的表,以确定哪一实体拥有所述公共资源;以及
从所述发起实体发送MOVE命令到所述源实体,指示所述公共资源的所有权的、从所述源实体到目的地实体的转移被请求。
8.根据权利要求7所述的方法,还包括:
由所述源实体发送MOVE命令到至少一个非源实体,指示所述公共资源的所有权已经从所述源实体被移动到所述目的地实体。
9.根据权利要求8所述的方法,还包括:
由所述非源发起实体从源实体接受所述MOVE命令;以及
通知所述非源发起实体所述公共资源的所有权已经被转移到所述目的地实体。
10.一种当源实体不具有公共资源所有权的表时转移分布式系统中的公共资源的所有权的方法,所述源实体拥有所述公共资源,所述方法包括:
由不具有公共资源所有权的表的实体接受MOVE命令;
由不具有公共资源所有权的表的实体确定所述实体不再拥有所述公共资源;以及
从非源实体发送MOVE命令到至少一个其他实体,指示所述公共资源的所有权的、从所述源实体到目的地实体的转移被指示。
11.根据权利要求10所述的方法,还包括:
由不具有公共资源所有权的表的所述实体创建临时表,所述临时表指示其他实体对公共拥有资源的所有权,以及指示所述其他实体是否已经响应所述MOVE命令,所述其他实体具有到所述公共拥有资源的访问;
当实体确认所述MOVE命令来自不具有公共资源所有权的表的实体,将到所述临时表的条目标记为已经将所述公共拥有资源的所有权从所述源实体移动到所述目的地实体。
12.根据权利要求11所述的方法,还包括一旦具有到所述公共资源的访问的所有实体以MOVE CMPLT命令来响应所述MOVE命令,移动所述临时表,所述MOVE CMPLT命令指示所述目的地实体所述公共拥有资源的所述所有权已经从所述源实体被更新到所述目的地实体。
13.一种将访问请求和公共资源所有权从源实体转发到目的地实体的方法,所述方法包括:
在所述目的地实体处接收所述公共资源的所有权将从所述源实体移动到所述目的地实体的指示;以及
检查源实体命令序列,以确定是否存在用于所述目的地实体的对所述公共资源的访问请求以及将所述公共资源所有权转移到所述目的地实体的MOVE命令,并且如果所述访问请求和所述MOVE命令均存在,则确保所述MOVE命令在所述访问请求到达所述目的地实体之前到达所述目的地实体。
14.根据权利要求13所述的方法,其中确保所述MOVE命令在所述访问请求到达所述目的地实体之前到达所述目的地实体还包括:在消息传递总线之上将所述访问请求转移到所述目的地实体之前,在消息传递总线之上将所述MOVE命令转移到所述目的地实体。
15.根据权利要求9所述的方法,其中通知所述非源发起实体所述公共资源的所有权已经被转移到所述目的地实体包括:目的地实体发送MOVE CMPLT返回到所述非源发起实体。
CN202080020560.7A 2019-03-11 2020-03-10 分布式系统中的硬件协调资源管理 Pending CN113574505A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/298,419 US11640317B2 (en) 2019-03-11 2019-03-11 Hardware co-ordination of resource management in distributed systems
US16/298,419 2019-03-11
PCT/US2020/021870 WO2020185766A1 (en) 2019-03-11 2020-03-10 Hardware co-ordination of resource management in distributed systems

Publications (1)

Publication Number Publication Date
CN113574505A true CN113574505A (zh) 2021-10-29

Family

ID=70050216

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080020560.7A Pending CN113574505A (zh) 2019-03-11 2020-03-10 分布式系统中的硬件协调资源管理

Country Status (5)

Country Link
US (2) US11640317B2 (zh)
EP (1) EP3938903A1 (zh)
CN (1) CN113574505A (zh)
TW (1) TW202040380A (zh)
WO (1) WO2020185766A1 (zh)

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6341340B1 (en) 1998-12-28 2002-01-22 Oracle Corporation Transitioning ownership of data items between ownership groups
US6965893B1 (en) 2000-12-20 2005-11-15 Oracle International Corporation Techniques for granting shared locks more efficiently
EP2562662B1 (en) 2001-06-28 2019-08-21 Oracle International Corporation Partitioning ownership of a database among different database servers to control access to the database
US7162476B1 (en) * 2003-09-11 2007-01-09 Cisco Technology, Inc System and method for sharing global data within distributed computing systems
US8320244B2 (en) 2006-06-30 2012-11-27 Qualcomm Incorporated Reservation based MAC protocol
US20080086603A1 (en) * 2006-10-05 2008-04-10 Vesa Lahtinen Memory management method and system
US9113499B2 (en) * 2010-10-01 2015-08-18 Viasat, Inc. Multiple domain smartphone
US20120271903A1 (en) 2011-04-19 2012-10-25 Michael Luna Shared resource and virtual resource management in a networked environment
US9830210B2 (en) * 2013-03-15 2017-11-28 Nvidia Corporation CPU-to-GPU and GPU-to-GPU atomics
US9823925B2 (en) * 2014-03-28 2017-11-21 Intel Corporation Instruction and logic for a logical move in an out-of-order processor
US9323701B2 (en) * 2014-07-29 2016-04-26 Netapp, Inc. Technique for synchronizing IOMMU memory de-registration and incoming I/O data
US10664179B2 (en) * 2015-09-25 2020-05-26 Intel Corporation Processors, methods and systems to allow secure communications between protected container memory and input/output devices
US10331570B2 (en) * 2016-07-31 2019-06-25 Avago Technologies International Sales Pte. Limited Real time memory address translation device
US10732903B2 (en) * 2018-04-27 2020-08-04 Hewlett Packard Enterprise Development Lp Storage controller sub-LUN ownership mapping and alignment
US10929286B2 (en) * 2018-06-29 2021-02-23 Seagate Technology Llc Arbitrated management of a shared non-volatile memory resource
US10929199B2 (en) * 2018-07-02 2021-02-23 International Business Machines Corporation Memory lock serialization

Also Published As

Publication number Publication date
TW202040380A (zh) 2020-11-01
EP3938903A1 (en) 2022-01-19
WO2020185766A1 (en) 2020-09-17
US20240078131A1 (en) 2024-03-07
US20200293363A1 (en) 2020-09-17
US11640317B2 (en) 2023-05-02

Similar Documents

Publication Publication Date Title
US10169080B2 (en) Method for work scheduling in a multi-chip system
US9137179B2 (en) Memory-mapped buffers for network interface controllers
US8756601B2 (en) Memory coherency acceleration via virtual machine migration
US7177987B2 (en) System and method for responses between different cache coherency protocols
JP4680851B2 (ja) システムコントローラ,同一アドレスリクエストキューイング防止方法および情報処理装置
US20150253997A1 (en) Method and Apparatus for Memory Allocation in a Multi-Node System
US8131940B2 (en) Methods and apparatuses to support memory transactions using partial physical addresses
US20150254182A1 (en) Multi-core network processor interconnect with multi-node connection
US10592459B2 (en) Method and system for ordering I/O access in a multi-node environment
JP2002304328A (ja) マルチプロセッサシステム用コヒーレンスコントローラ、およびそのようなコントローラを内蔵するモジュールおよびマルチモジュールアーキテクチャマルチプロセッサシステム
US10162757B2 (en) Proactive cache coherence
JP4660064B2 (ja) 分散処理システムにおけるロックの実行
US20150254183A1 (en) Inter-chip interconnect protocol for a multi-chip system
US20170228164A1 (en) User-level instruction for memory locality determination
US7107408B2 (en) Methods and apparatus for speculative probing with early completion and early request
US7159079B2 (en) Multiprocessor system
CN113574505A (zh) 分布式系统中的硬件协调资源管理
KR102526431B1 (ko) 데이터 처리
US10917198B2 (en) Transfer protocol in a data processing network
US20210397560A1 (en) Cache stashing system
CN105786744B (zh) 互连装置和互连的操作方法
JP4833911B2 (ja) プロセッサユニットおよび情報処理方法
JP2922342B2 (ja) 割込み制御装置
CN116089116A (zh) 数据处理方法及装置
JP2506975B2 (ja) 情報処理装置のバッファ無効化処理方式

Legal Events

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