CN106104505A - 一种cpu及多cpu系统管理方法 - Google Patents

一种cpu及多cpu系统管理方法 Download PDF

Info

Publication number
CN106104505A
CN106104505A CN201580012642.6A CN201580012642A CN106104505A CN 106104505 A CN106104505 A CN 106104505A CN 201580012642 A CN201580012642 A CN 201580012642A CN 106104505 A CN106104505 A CN 106104505A
Authority
CN
China
Prior art keywords
cpu
group
cross
territory
domain
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
CN201580012642.6A
Other languages
English (en)
Other versions
CN106104505B (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.)
XFusion Digital Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202010104409.3A priority Critical patent/CN111427827B/zh
Publication of CN106104505A publication Critical patent/CN106104505A/zh
Application granted granted Critical
Publication of CN106104505B publication Critical patent/CN106104505B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0721Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
    • G06F11/0724Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU] in a multiprocessor or a multi-core unit
    • 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/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • G06F15/8023Two dimensional arrays, e.g. mesh, torus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17337Direct connection machines, e.g. completely connected computers, point to point communication networks
    • G06F15/17343Direct connection machines, e.g. completely connected computers, point to point communication networks wherein the interconnection is dynamically configurable, e.g. having loosely coupled nearest neighbor architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors

Abstract

本发明提供一种多CPU系统,多CPU系统包括:至少两个高速互联协议QPI域、第一节点控制器NC组以及第二节点控制器NC组,根据CPU的路由配置,至少存在一个CPU可以通过第一NC组访问其他QPI域中的CPU;至少存在一个CPU可以通过第二NC组访问其他QPI域中的CPU。按照这种拓扑,可以在对系统影响较小的情况下,实现对NC的热插拔。

Description

一种CPU及多CPU系统管理方法
技术领域
本发明涉及计算机领域,尤其涉及一种CPU及多CPU系统管理方法。
背景技术
在非一致性内存访问架构(Non-Uniform Memory Access Architecture,NUMA)系统中,中央处理器(Central Processing Unit,CPU)之间可以通过互联总线进行互联组成多CPU系统。一种常见的互联总线是高速互联协议(Quick-Path Interconnect,QPI)。
但是因为元件的资源限制,例如CPU的互联端口的个数限制,仅使用互联总线最多实现8个CPU之间的互联,对于8个以上的CPU互联需要使用节点控制器(Node Controller,NC)。
现有技术中的多CPU系统结构如图1所示,包括节点控制器111和节点控制器121,以及8个CPU。其中,CPU121、CPU122、CPU123、和CPU124组成一个QPI域,CPU125、CPU126、CPU127和CPU128组成另外一个QPI域。QPI域内部的CPU之间可以通过CPU之间的QPI总线通信,不同QPI域的CPU之间需要可以借助NC进行通信。
在系统运行过程中,跨NC访问路径单一,造成系统延时较长。出现可靠性降低的情况,需要把可靠性低的NC移除进行更换。而按照图1的架构,在更换NC期间,CPU对另外一个域的访问会受到影响。
发明内容
本发明实施例提出一种多CPU系统架构,提供2个NC组供CPU使用,CPU可以选择访问目标NC速度最快的NC组,提高了系统整体效率。
第一方面,本发明实施例提供一种CPU,可以作为对多CPU系统进行管理的主CPU,其中,所述多CPU系统包括:第一缓存一致性CC域、第二CC域、第一节点控制器NC组以及第二NC组,所述第一NC组分别和所述第一CC域、所述第二CC域连接,所述第二NC组分别和所述第一CC域、所述第二CC域连接,每个CC域包括至少一个CPU,所述主CPU属于所述第一CC域或者所述第二CC域,其中,所述主CPU用于:当所述第一NC组中的NC预备被移除,控制所述多CPU系统中所有使用所述第一NC组进行跨域访问的CPU,通过更改路由配置切换为使用所述第二NC组进行跨域访问。
应用该方法,可以实现NC的热移除。减小NC移除对多CPU系统性能的影响。
第一方面的第一种可能实现方式,所述主CPU控制所述多CPU系统中所有使用所述第一NC组进行跨域访问的CPU,通过更改路由配置切换为使用所述第二NC组进行跨域访问,具体包括,所述主CPU用于:指令使用所述第一NC组进行跨域访问的CPU把记录的数据状态配置为无效态;发起系统静默,以将所述多CPU系统中所有的CPU置为静默状态;指令使用所述第一NC组进行跨域访问的CPU,把路由寄存器中访问其他域CPU的端口,配置成所述使用第二NC组进行跨域访问的端口;发起解除系统静默。
这种实现方式提供了一种通过更改CPU的路由配置来实现NC热移除的具体方式。
第一方面的第二种可能实现方式,主CPU还用于:当预备被移除的NC被移除,并且目标NC接入到所述第一NC组并和所述第一NC组原有NC建立拓扑联系后,控制所述多CPU系统中至少一个使用所述第二NC组进行跨域访问的CPU,通过更改路由配置切换为使用所述第一NC组进行跨域访问。
这种实现方式提供了一种热移除NC的技术。添加NC的流程可以是独立方案,也可以和第一种方面,或者第一种方面的第一种可能实现方式结合形成组合方案。
第一方面的第三种可能实现方式,主CPU还用于:当预备被移除的NC被移除,并且目标NC插入到第一NC组后,指令至少一个使用所述第二NC组进行跨域访问的CPU把所记录的数据状态配置为无效态;发起系统静默,以将所述多CPU系统中所有CPU置为静默状态;建立所述目标NC与所述第一NC组原有NC之间的拓扑联系;指令所述至少一个CPU把路由寄存器中访问其他域CPU的端口,配置成所述使用第二NC组进行跨域访问的端口;发起解除系统静默。
这种方案提供了一种更详细的热移除NC的技术。
第一方面的第四种可能实现方式,所述主CPU还用于:当目标NC添加到所述第一NC组后,对至少一个用所述第二NC组进行跨域访问的CPU发送指令,指令所述至少一个CPU把记录的数据状态中对应于M个跨域宿CPU的数据状态设置为无效态,其中,所述CPU记录的数据状态一共对应于N个跨域宿CPU,M<N;发起系统静默,以将所述多CPU系统中所有CPU置为静默状态;修改所述至少一个CPU的的路由寄存器配置,将所述路由寄存器中访问所述M个CPU的端口,配置成使用第一NC组进行跨域访问的端口;在修改完路由寄存器配置后,解除系统静默。
应用第一方面的第四种可能实现方式,可以按照宿节点的不同,选择一部分CPU改变路由,余下CPU路由不变。
第二种方面,提供一种CPU,作为对多CPU系统进行管理的主CPU,其特征在于,所述多CPU系统包括:第一缓存一致性CC域、第二CC域、第一节点控制器NC组以及第二NC组,所述第一NC组分别和所述第一CC域、所述第二CC域连接,所述第二NC组分别和所述第一CC域、所述第二CC域连接,每个CC域包括至少一个CPU,所述主CPU属于所述第一CC域或者所述第二CC域,其中,所述主CPU用于:当所述第一NC组中的目标NC预备被移除,控制所述多CPU系统中所有使用所述目标NC进行跨域访问的CPU,通过更改路由配置切换为使用所述第二NC组进行跨域访问。
该方案可以实现NC热移除。
第二方面的第一种可能实现方式,所述主CPU用于控制所述多CPU系统中所有使用所述目标NC进行跨域访问的CPU,通过更改路由配置切换为使用所述第二NC组进行跨域访问,具体包括,所述主CPU用于:指令使用所述目标NC进行跨域访问的CPU把记录的数据状态配置为无效态;发起系统静默,以将所述多CPU系统中所有CPU置为静默状态;指令第一NC组中余下NC更新路由配置,以便隔离所述目标NC,并且指令使用所述目标NC进行跨域访问的CPU,把路由寄存器中访问其他域CPU的端口,配置成所述使用第二NC组进行跨域访问的端口;发起解除系统静默。
第三方面,作为对多CPU系统进行管理的主CPU,所述多CPU系统包括:第一缓存一致性CC域、第二CC域、第一节点控制器NC组以及第二NC组,所述第一NC组分别和所述第一CC域、所述第二CC域连接,所述第二NC组分别和所述第一CC域、所述第二CC域连接,每个CC域包括至少一个CPU,所述主CPU属于所述第一CC域或者所述第二CC域,其中,所述主CPU用于:
当目标NC接入到所述第一NC组,控制所述第一CC域中的至少一个使用所述第二NC组进行跨域访问的CPU,通过更改路由配置切换为使用所述目标NC进行跨域访问,其中,所述目标NC和第一CC域连接。
第三方面的第一种可能实现方式,提供一种NC添加技术。
第三方面的第一种可能实现方式,所述主CPU用于控制所述第一CC域中的至少一个使用所述第二NC组进行跨域访问的CPU,通过更改路由配置切换为使用所述目标NC进行跨域访问,具体包括,所述主CPU用于:指令所述至少一个CPU把数据状态配置为无效态;发起系统静默,以将所述多CPU系统中所有CPU置为静默状态;指令所述目标NC与第一NC组原NC之间建立拓扑联系;指令所述至少一个CPU修改路由配置,将路由寄存器中访问其他域CPU的端口,修改为使用目标NC进行跨域访问的端口;发起解除系统静默。
第三方面的第一种可能实现方式,提供一种详细的NC添加技术。
第三方面的第二种可能实现方式,其中,所述主CPU用于控制所述第一CC域中的至少一个使用所述第二NC组进行跨域访问的CPU,通过更改路由配置切换为使用所述目标NC进行跨域访问,具体包括,所述主CPU用于:对至少一个用所述第二NC组进行跨域访问的CPU发送指令,指令所述至少一个CPU把记录的数据状态中对应于M个跨域宿CPU的数据状态设置为无效态,其中,所述CPU记录的数据状态一共对应于N个跨域宿CPU,M<N;发起系统静默,以将所述多CPU系统中所有CPU置为静默状态;指令所述至少一个CPU修改路由配置,将所述路由寄存器中,访问所述M个CPU的端口,配置成使用所述目标NC跨域进行访问的端口。
第三方面的第二种可能实现方式,提供一种详细的NC添加技术,可以对不同宿节点的路由进行改变。
本发明还提供计算机,包括所述第一CC域、所述第二CC域、所述第一NC组以及所述第二NC组,所述计算机还包括BIOS,其中,所述BIOS用于存储上述各方面的CPU运行所需要的指令。并拥有上述各方面相似的技术效果。
本发明还提供多CPU系统管理方法,应用于上述各方面的主CPU中或者上述计算机中,并拥有相似的技术效果。
附图说明
图1是现有技术中多CPU系统架构图。
图2本发明多CPU系统实施例架构图。
图3是本发明一NC移除方法实施例流程图。
图4是本发明一NC添加方法实施例流程图。
图5是本发明另一NC移除方法实施例流程图。
图6是本发明另一NC添加方法实施例流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
多CPU系统例如是NUMA,位于计算机中。多CPU系统中,如果只依靠CPU直接连接,由于CPU对外接口数量有限,因此规模难以做大。为了形成更多CPU的CPU系统,往往会使用NC连接不同的CPU组,使用NC在CPU组之间传递数据。
NC组又称为NC平面,由一个或多个NC组成,同一个NC组中的多个NC互相连接,连接方式可以是全互联(full mesh)、环形或者串联。CPU组又称为QPI域,QPI域由一个CPU或者多个CPU组成,同一个QPI域中的多个CPU通过QPI总线连接。NC组和CPU组连接。
CPU组中的CPU之间除了使用QPI总线连接,还可以使用其他缓存一致性(CacheCoherency,CC)总线进行连接,例如超传输(Hyper-Transport,HT)总线。因此我们也可以把CPU组称为缓存一致性域。为了方面说明,本发明实施例中,以QPI域为例进行介绍。
本实施例中,CPU有一个端口和NC连接,其余端口和域内其他CPU连接。NC组可以在QPI域之间进行报文转发,因此不同QPI域之间的CPU可以借由NC组实现报文传递。
可选的,每个CPU有多个端口,其中一个端口和NC连接,其余端口和本QPI域的CPU相连。另外CPU有3个端口,一个端口和NC连接,另外两个端口分别和相邻的CPU连接。CPU和NC连接线路也就是CPU和NC组连接的线路,NC组提供转发功能,CPU通过和NC组连接的线路与其他QPI域的CPU通信。
NC在使用过程中,存在可靠性降低甚至故障的可能,如果NC故障,会对多CPU系统的CPU直接访问的带宽造成具体影响。为了提高多CPU系统的可靠性,理想的多CPU系统应支持NC的热插拔。通过管理软件监控多CPU系统的运行状态,如果发现有NC运行不稳定,比如NC在一段时间出错频率或次数超过阈值,则将该NC标记为有风险。并在该NC不可用之前,通过热移除风险NC,然后热添加新NC的方式对其进行替换,防止该NC突然失效对系统造成致命影响。
热插拔即带电插拔,允许用户在不关闭系统、不切断电源的情况下对相关部件进行更换。具体而言,热插拔包括热移除和热添加两个过程。
本发明实施例中,多个QPI域和相同的多个NC组连接。NC和CPU寄存器中存储有路由配置,通过修改路由配置,可以改变传输报文的路径。在CPU之间互相访问的操作中,以事务描述一系列的访问操作。发起访问事务(发出访问请求)的CPU称为源CPU,响应事务(响应访问请求)的CPU称为宿CPU。在事务处理过程中,源CPU和宿CPU之间传递数据的通道称为路由。数据报文的传输方向和事务的路由方向相反,宿CPU是数据报文的发起方,源CPU是数据报文的接收方。请求报文的传输方向和事务路由的方向相同,源CPU发起数据请求报文,宿CPU响应数据请求报文。
附图2是本发明实施例架构图。QPI域23、QPI域24和QPI域25均和NC组21、NC组22连接。任意一个CPU可以通过NC组21或者通过NC组22访问其他QPI域中的CPU。同一个CPU访问其他域的不同CPU时,也可以通过不同的NC组。本发明实施例所说的访问,例如是以报文的形式从其他CPU读取数据。具体而言,是从其他CPU所管理的内存中读取数据。
多CPU系统中存在一个CPU作为主CPU中,主CPU对NC以及其他CPU进行管理、控制,主CPU可以位于任意QPI域中。主CPU通过运行程序生成管理、控制的指令,程序可以从计算机的BIOS中获取,BIOS和多CPU系统连接,多CPU系统和BIOS都是计算机中的组成部分。
也就是说,QPI域内的CPU互相访问,可以不经过NC。例如在附图2中,如果CPU231要访问CPU234,可以有多条路由可选,包括:CPU231——CPU232——CPU233——CPU234,CPU231——CPU234,以及CPU231——NC211——CPU234。然而,不同QPI域的CPU互相访问,必须要经过NC组。如果CPU231访问CPU241,可选选择的访问路径是CPU231——NC211——NC212——CPU241,或者,也可以选择访问路径CPU231——CPU232——NC221——NC222——CPU242——CPU241;前者经过了NC组21,而后者经过了NC组22。
本发明一个实施例中,多CPU系统包括:至少两个高速互联协议QPI域以及第一NC组、第二NC组,每个所述QPI域包括至少一个CPU,每个NC组包括至少一个NC,每个NC均和每个QPI域相连。
所述多CPU系统中,根据CPU的路由配置,可以有CPU在对其他QPI域的第一宿CPU进行访问时,将访问请求发到所述第一NC组,所述第一NC组用于将访问请求转发到第二QPI域中的第一宿CPU;还可以有CPU根据自己的路由配置,在对其他QPI域的第二宿CPU进行访问时,将访问请求发到所述第一NC组,所述第一NC组用于将访问请求转发到第二QPI域中的第二宿CPU。
其中,通过第一NC组访问第一宿CPU的CPU和通过第二NC组访问第二宿CPU的可以是同一个CPU;也可以是不同CPU。
下面对属于不同QPI域的CPU进行通信时,NC被移除和添加对系统的改变进行简单介绍。
例如,当NC组21中有NC211需要移除时,本发明实施例提供两种解决方式,这两种方式都是在主CPU的控制之下执行。一种是:将原本通过NC组21的路由全部切换到NC组22;另外一种是:将原本通过NC211的路由切换到NC组22;通过NC组21其他NC的路由保持不变。
类似的,当有NC需要添加时,例如在原NC211移除后,添加新的NC211到NC组21,在主CPU控制之下,也有几种解决方式。一种是:主CPU将经过NC组22的路由,按照发起跨域访问的源CPU的不同,选择部分路由切换到NC组21,其余路由保持不变;另外一种是:主CPU将原本通过NC组22的路由,按照跨域访问的宿CPU的不同,选择部分宿CPU所对应的路由切换到NC组21,其余路由保持不变;再有一种,将所有经过NC组22的路由,全部切换到NC组21。
跨域访问是指,被访问的CPU和发出访问请求的CPU不在同一个QPI域。具体而言,被访问的内存地址是其他QPI域的CPU所管理的内存地址。其中,访问请求,用于一个CPU请求从另外一个CPU获得数据。需要说明的是,跨域访问的访问请求经过某个NC组的任意NC,就认为跨域访问经过这个NC组。CPU使用一个NC组(或者NC)进行跨域访问,是指在CPU的路由配置中直接或者间接的指向了这个NC组或者NC。并不一定意味着当前时刻存在跨域访问。当是当CPU发出跨域访问请求,访问请求会经过这个NC组或者NC。
直接指向一个NC,例如是和被指向的NC直接连接,CPU的路由配置中,下一个节点就是被指向的NC。当CPU发出跨域访问请求,按照CPU的路由配置,跨域访问请求下一个经过的节点就是被指向的NC。间接指向一个NC,例如是先经过其他节点(例如NC或者CPU),再和被指向的NC连接。当CPU发出跨域访问请求,按照CPU的路由配置,跨域访问请求会先经过其他节点,再到达被指向的NC。以上是对直接或者指向一个NC的介绍,直接或者间接指向一个NC组的原理同样如此。
实施例一
参见附图3,本发明实施例提供一种NC热移除方法,该方法基于附图2的架构进行介绍。
当第一NC组中的NC预备被移除,主CPU控制所述多CPU系统中所有使用所述第一NC组进行跨域访问的CPU,切换为使用所述第二NC组进行跨域访问。
假设主CPU是QPI域23中的CPU234,待移除的NC是NC211,为了方便描述,本实施例将待移除的NC211称之为目标NC。NC组21称作第一NC组,NC组22称作第二NC组。
S301,主CPU接收第一NC组有NC需要被移除的信号。
示例地,用户在准备移除NC211时,可以通过操作系统给主CPU234发送移除指令,该移除指令中包括NC 211的标识。这样,该主CPU234在接收到该移除指令时,即可确定该NC组21中存在预备被移除的NC。
示例地,CPU234检测到NC21的NC211的可靠性降低后,可以启动对NC211的移除。在可以把经过NC组21的路由切换到NC组22,停止使用NC组21后,就可以对NC211做热移除。
S302,主CPU指令使用所述第一NC组进行跨域访问的CPU把自己记录的数据状态配置为无效态。
主CPU可以获知多CPU系统中,CPU之间的拓扑关系。或者说,主CPU知道每个CPU的不同端口和其他器件(NC或者CPU)的连接关系。因此,主CPU通过读取CPU路由配置中的出端口信息,可以获知CPU跨域访问所使用的NC组是不是第一NC组。相应的,如果主CPU指令其他CPU对路由配置中的出端口进行修改,可以改变CPU对外访问的路径(参见后续步骤S304)。路由配置记录在CPU的缓存中。
例如主CPU记录有:如果CPU231要通过NC组21访问其他域的CPU(例如CPU241),那么需要使用的端口是CPU231的3个端口中和NC211连接的端口;如果CPU231要通过NC组22访问其他域的CPU(例如CPU241),需要使用的端口是CPU231的3个端口中指向NC221所连接的端口,也就是CPU231和CPU232之间的端口。那么如果CPU231当前配置的访问其他域的端口是前者,就意味着CPU231是使用第一NC组进行跨域访问。按照这种办法,可以获得多CPU系统中,所有使用第一NC组进行跨域访问的CPU。
例如主CPU可以在缓存中记录各个CPU对不同的内存地址进行访问时使用的出端口,主CPU读取自己的缓存后,即可获知哪些CPU是通过第一NC组进行跨域访问的CPU。或者,也可以由独立的管理设备记录这个信息并提供给主CPU。
以图2为例,CPU231访问非本域的内存地址时,使用的端口是CPU231中和NC211连接的端口,CPU包括核心、缓存代理(Cache Agent,CA)和本地代理(Home Agent,HA)。CA对缓存进行管理,HA对内存进行管理。CPU核心在需要一个数据时,首先通过自己的CA,对CA管理的缓存进行查找;如果查找不到,再通过HA对HA管理的内存进行查找。
提供数据的HA和发出访问请求的核心位于同一个CPU,也可以不位于同一个CPU。本实施例以提供数据的HA,尤其重点介绍HA位于其他QPI中。
本发明实施例中,CPU的数据状态,是指CPU获取过的数据在CPU缓存中的状态。数据状态记录在CPU的缓存中,由CA进行管理。
如果CPU曾经访问过其他CPU的数据(具体而言,是其他CPU的HA所管理的内存中的数据),那么发起访问的CPU会记录被获取的数据的当前状态。在一次具体的报文传递过程中,发起访问的是源CPU,提供报文的是宿CPU。具体而言,宿CPU通过自己的HA从内存中获得数据,然后提供给源CPU。CPU记录的数据状态是其作为源CPU时,获得过的数据(例如报文)的状态,数据状态对应有访问请求的宿CPU。按照缓存一致性协议(cache coherencyprotocol),在获得自己需要的数据后,访问请求的源CPU把获得的数据的状态记录在自己的缓存中。状态包括独享(Exclusive,E)态、无效(Invalid,I)态,共享(Share,S)态、修改(Modify,M)态。这些状态在内存地址(cache line)中进行标记,内存地址中还可以记录数据在内存中的地址。
其中,M态表示内存地址标记的数据被源CPU修改过(dirty),与宿CPU所提供原始数据不一致。当被修改过的数据被写回内存之后,该内存地址的状态会变成E态。E态表示内存地址标记的数据是未被修改过的(clean),与内存中数据一致。S态意味着该内存地址标记的数据可能被多个CPU缓存,并且各个缓存中的数据与内存数据一致。I态表示该数据是无效的,例如可能有其它CPU修改了该内存地址标记的数据。
NC也可以记录数据的状态,CPU在进行跨域的报文传递时,跨域报文经过NC时,NC对数据状态进行记录,从而使得NC记录的数据状态和报文的源CPU保持一致。在后续进行跨域访问时,其他CPU通过NC即可知道CPU的数据状态;相较于从CPU获得数据状态而言,更加快捷。
本实施例中,要将所有通过NC组21访问过其他域的CPU的路由配置进行修改,把路由配置改为指向NC组22,而不是指向NC组21。由于这些CPU没有作为源CPU通过NC组22接收过报文,因此NC中没有相应数据状态的记录,也就是说,在NC的状态记录中,相应的数据状态是I态。把这些通过该NC组21发送报文的CPU中记录的状态修改为I态,可以使得NC和CPU中数据状态保持一致。
将使用所述第一NC组进行跨域访问的CPU所记录的数据状态配置为无效态,一种可选的实现方法包括两个部分:第一部分:主CPU指令这些CPU清空自己缓存的数据,使得CPU中M态的数据状态变为I态,清空缓存具体是指把缓存的数据返回提供这个数据的内存;第二部分:主CPU指令第一NC组中的NC清空自己所记录的数据状态,使得NC中记录的将S态和E态均变更为I态,从而使得CPU的S态和E态也相应的变更为I态。这两部分操作都是由主CPU通过指令发起的。下面进行具体解释。
第一部分:CPU核心执行清空缓存的命令,相应的,把CPU记录的数据状态是modified的数据写入内存,然后把数据的状态从modifed改为invalid。此外,在把数据写入内存的过程中,数据会经过第一NC组的NC,第一NC组的NC也把自己目录缓存所记录的相应目录状态从modifed改为invalid,和CPU中记录的访问过的数据的目录状态保持一致。
第二部分:(1)第一NC组的NC查询自己缓存的数据状态(CPU之间经过NC进行访问时,NC会记录被访问的数据的状态),获得当前状态是S态的记录和E态的记录,发送侦听消息给拥有这些S态或者E态记录的CPU。(2)收到侦听消息的CPU,把S态的记录和E态的记录降级成I态,,然后发送响应消息后给NC。NC收到响应消息后,把自己记录的S态和E态也降级成I态。收到侦听消息的CPU是通过第一NC组访问过其他QPI域的CPU。
S303,主CPU发起系统静默。
值得说明的是,对NC的热插拔不仅涉及某一条总线上的数据导通或者中断,还对整个多CPU系统的工作模式和能力有影响。因此,在多CPU系统处于静默状态时,对NC进行移除,可以避免NC移除时导致CPU的业务出错。其中,多CPU系统处于静默状态时,所有CPU暂停对内存和输入输出接口资源的访问,从输入输出接口发起的预取、中断等被关闭,CPU的指令指针被限制在一个软件循环中。
如果主CPU是多核的,那么系统静默范围是包括主CPU在内的所有CPU。其中,主CPU可以保留一个或多个核心不进入静默,其余核心进入静默;其他CPU所有核心进入静默。主CPU中保留的不进入静默的核心用于执行后续的操作。
如果主CPU是单核的,那么系统静默是指主CPU不进入静默,其他CPU的全部核心进入静默。由于主CPU是单核的情况比较少见,因此后续都以主CPU是多核的场景进行举例。
CPU234可以将自己需要静默的核心进入静默。对于其他CPU,可以有多种办法进入静默。一种可选的做法是,CPU234直接修改其他CPU的静默寄存器,被修改了静默寄存器的CPU被静默。另外一种可选的做法是,CPU234在整个多CPU系统内广播静默报文,收到报文的CPU启动静默操作,将自己置为静默状态。下面以后一种做法为例,进行具体介绍。
静默命令有两种类型,一种类型是:静默命令可以直接修改其他CPU静默寄存器的配置,静默寄存器被配置为静默的CPU进入静默状态。另外一种类型是,静默的命令是发送给其他CPU的核心的指令,收到指令的CPU,其核心启动静默程序使得CPU进入静默。
对于和CPU234处于同一个QPI域的CPU231、CPU232、CPU233,由CPU234通过域内CPU之间的QPI总线传递静默报文。CPU231和CPU233可以直接收到CPU234的静默报文,CPU232可以收到CPU231或者CPU233转发的静默报文。
对于和CPU234不在同一个QPI域的CPU。例如QPI域24、QPI域25中的CPU,CPU234把静默报文发送给NC组,由NC组把静默报文传递到QPI域24和QPI域25。收到静默报文的CPU在域内转发静默报文,最终实现所有CPU都收到静默报文。
例如,CPU234通过NC211、NC212把静默报文发送给CPU241,CPU241通过CPU之间的QPI总线继续发送静默报文,使得QPI域24中所有CPU收到静默报文。NC212还把静默报文发送给NC213,NC213把静默报文发送给CPU251,CPU251通过CPU之间的QPI总线继续发送静默报文,使得QPI域25中所有CPU收到静默报文。
S304,该主CPU指令所有通过第一NC组跨域访问的CPU修改路由配置,使得所有通过该第一NC组跨域访问的CPU切换成通过该第二NC组跨域访问。
CPU的路由寄存器中可以记录路由信息,路由信息可以是内存地址和CPU端口的对应关系。NC的路由寄存器也记录有路由信息,路由信息可以是内存地址和NC端口的对应关系。CPU和NC都按照路由信息中记录的端口发送请求报文,就实现了请求报文的按路由发送。通过修改路由所经过的节点的路由寄存器中的路由信息,可以实现访问请求整个传输路径的改变。路由寄存器可以集成在CPU的缓存中。
如果需要切换成通过第二NC组传递报文的CPU与第二NC组的NC直接连接,那么切换是指,将CPU跨域访问的端口配置为和第二NC组的NC直接相连的端口;如果需要切换成通过第二NC组传递报文的CPU和第二NC组的NC之间,没有直接直接相连,而是存在其他CPU,那么切换是指,将CPU跨域访问的端口配置为和其他CPU连接的端口,其他CPU收到访问请求后,可以转发给第二NC组的NC。
示例性的,CPU231访问CPU241属于跨域访问,假设原来配置的访问端口是CPU231的端口中,和NC211连接的端口。修改路由寄存器后,新的路由配置变成CPU231中的端口中,和CPU232连接的端口。在访问到达CPU232后,由于CPU232的路由配置中,访问CPU241的端口是CPU232和NC221之间的端口,因此CPU232会把访问转发给NC221,NC221继续转发访问,访问就可以到达CPU241,整个访问路径是CPU231——CPU232——CPU233——NC221——CPU242——CPU241。需要说明的是,主CPU234之所以选择把CPU231的访问请求转发给CPU232,而不是转发给CPU234,是因为主CPU记录有多CPU系统中CPU的拓扑关系以及各个CPU的出端口配置,因此可以获知通过CPU232可以比较直接的使用NC组22进行跨域访问,然后指令CPU234把路由端口配置成和CPU232对应的端口。
当然,按照不同的策略,在其他实施例中,主CPU231也可以选择让CPU231把访问请求转发给CPU234,由CPU234把访问请求转发给CPU233,接着CPU233把访问请求转发给NC221。
假设CPU234访问CPU252,假设原来配置的是是CPU234和NC211之间的端口,修改路由寄存器后,新的配置变成,CPU234和NC221之间的端口。
由此可见,CPU的端口(一个CPU可以拥有例如3个端口或者更多数量的端口)分别和不同的下一个节点(节点例如是NC或者CPU连接)连接,其他节点收到从CPU的端口发来的访问请求后,继续进行转发,直到访问请求到底访问的宿CPU。其中,从CPU的某一个端口发出的访问请求,在转发过程中,会经过第二NC域,这个端口就是使用第二NC组进行跨域访问的端口。因此可以在路由寄存器中,把访问其他域CPU的端口配置成使用第二NC组进行跨域访问的端口。其中,其他域CPU可以用其管理的内存地址进行标记。
在步骤S304之后,NC即可进行移除。
S305,修改完路由配置后,主CPU解除系统静默。
解除静默的流程和静默的流程在步骤上大致类似。包括:CPU234解除自己处于静默状态的核心的静默状态;以及CPU通过解除静默命令,修改其他CPU的配置,取消其他CPU的静默状态。对于QPI域23中的其他CPU,解除静默命令可以由CPU234直接发出,不经过NC中转;而对于其他QPI域中CPU,CPU234发出的解除静默命令可以由NC22转发过去。该主CPU解除系统静默的流程与发起系统静默的流程类似,因此可以参照步骤S303。不同的是,静默命令可以通过NC组21传递,而解除静默命令只能通过NC组22传递。
解除静默的命令有两种类型,一种类型是:解除静默命令可以直接修改其他CPU关于状态的寄存器配置,被修改了寄存器配置的CPU解除静默状态。另外一种类型是,解除静默的命令是发送给其他CPU的核心的指令,收到指令的CPU,其核心启动静默程序使得CPU解除静默。
解除系统静默后,各CPU恢复正常运行。此时,由于路由的修改,多CPU系统中的所有CPU后续在收发跨QPI域的报文时,均通过该NC组22,不再使用NC组21。确保了NC组21中的NC211在移除后,原本通过该NC组21收发跨域报文的CPU,可以继续收发跨QPI域的报文。也就是说,上述方法实现了对多CPU系统中NC的热移除。
实施例二
参见附图4,下面对在现有NC组中添加NC的过程进行介绍。仍然以图2的系统架构为例,其中CPU234是主CPU。在NC组21中新添加NC211,为了和实施例一中被移除的NC211进行区分,本实施例称之为另一目标NC。本实施例可以在实施例一之后执行,相当于对NC211的更换。在没有特别说明的情况下,沿用实施例一点相关介绍。
本实施例可以用于,在另一目标NC插入第一NC组后,重新启用第一NC组。也就是,控制所述多CPU系统中至少一个使用所述第二NC组进行跨域访问的CPU,切换为使用所述第一NC组进行跨域访问。
步骤S401,主CPU检测到另一目标NC插入第一NC组。
示例地,多CPU系统周期性检测每个插槽的状态,该插槽用于插入NC,插槽的状态用于表明该插槽中是否存在NC。这样,当新的NC插入插槽后状态会发生改变,主CPU就能检测到新的NC的插入。
上述只是举例说明,对于主CPU如何检测到另一目标NC接入第一NC组,本发明不做限定,例如,本发明实施例还可以由用户通过按钮,触发主CPU对每个插槽的状态进行检测。
S402,该主CPU向至少一个经过第二NC组进行跨域访问的CPU发出指令,指令这些CPU把自己所记录的数据状态全部置为I态。
本步骤中,需要置为I态的CPU是准备在后续步骤中进行路由切换的CPU。置为I态的操作包括:清空需要置为I态的CPU的缓存;以及,需要置为I态的CPU所经过的NC,把和这这些CPU相关的S态和E态置为I态,从而使得这些CPU的S态和E态也相应的变更为I态。具体过程可以参照步骤S302。
选择哪部分CPU切换到第一NC组,可以有不同的策略。可以根据两个NC组的性能,或者CPU之间访问时所经过的节点数量来选择。
S403,该主CPU发起系统静默。
系统静默的过程可以参见步骤S303,和步骤S303的区别在于,静默信息,在S303中可以通过NC组21进行跨域传播,也可以通过NC组22进行跨域传播。而在步骤S403中,NC组21不工作,因此只能通过NC组22进行跨域传播。
S404,激活所述另一目标NC,以建立另一目标NC与第一NC组原NC之间的拓扑联系。
通过配置路由寄存器,建立另一目标NC和第一NC组中至少一个原有NC之间的转发关系,如果第一NC组采用全互连的结构,则建立的是另一目标NC和第一NC组所有NC之间的转发关系。从而使得所述目标NC收到的数据可以转发给其他NC,其他NC也可以把数据转发给所述目标NC。
S405,该主CPU通过指令,控制所述至少一个使用第二NC组进行跨域访问的CPU更改路由,把路由更改成使用所述第一NC组进行跨域访问。
具体而言,是修改所述至少一个使用所述第二NC组进行跨域访问的CPU的的路由寄存器配置,这其中,包括通过步骤402把数据状态置为I态的CPU,也包括数据状态原本就处于I态的CPU。将所述路由寄存器中记录的访问其他域CPU的端口,修改为使用第一NC组进行跨域访问的端口。
所述至少一个使用第二NC组进行跨域访问的CPU中,数据状态在步骤S402中已经配置为I态,因此可以在本步骤进行路由信息的修改。
本步骤可以参见步骤304,不做详述。
需要说明的是,具体哪些路由切换到第一NC组可以根据策略改变,因此本发明不做限定。例如,可以根据两个NC组的性能,成比例的分配通过它们的路由数量。或者按照路由的两个端点之间经过的CPU/NC的数量,选择经过CPU/NC数量较少的路径配置为路由。
示例性的,CPU231访问CPU241,按照CPU231原有路由配置,下一个节点是CPU232,整个访问路径可以是CPU231——CPU232——NC221——NC222——CPU242——CPU241。修改路由寄存器后,在路由寄存器中,下一个节点被配置成CPU232,新的路由变成CPU231——NC211——NC212——CPU241。再例如,CPU234访问CPU252,假设在CPU234原有路由配置中,下一个节点是CPU23,整个访问路径可以是CPU234——CPU233——NC221——NC222——NC223——CPU252。修改路由寄存器后,路由寄存器中,下一个节点被配置成NC211,整个访问路径可以变成CPU234——NC211——NC212——NC213——CPU251——CPU252。
本步骤中,一种可选的方式是,把使用第二NC组进行跨域访问的CPU中,直接和第一NC组相连的CPU切换为使用所述第一NC组进行跨域访问。
步骤406,在修改完路由后,该主CPU解除系统静默。
CPU234解除自己处于静默状态的核心的静默状态;CPU234通过解除静默命令,修改其他CPU的配置,取消其他CPU的静默状态。具体过程可以参见解除静默的过程参见步骤305。多CPU系统解除系统静默后,各CPU恢复正常运行,另一目标NC添加完成。
上述步骤,实现了把至少一个使用所述第二NC组进行跨域访问的CPU,切换成使用第一NC组进行跨域访问。
本发明实施例还提供一种切换路由的方法。在至少一个使用所述第二NC组进行跨域访问的CPU中:按照跨域访问的宿CPU的不同,把对一部分宿CPU的跨域访问切换为使用所述第一NC组,对另外一部分宿CPU的跨域访问仍然使用第二NC组。下面进行具体描述。
本实施例的步骤S402中,可以把CPU的路由寄存器中中记录的所有数据状态置为I态。这些需要置为I态的数据状态所描述的数据可能来源于不同的CPU,因此,该步骤可以进行改进:按照数据来源的不同把数据状态进行划分,把来源于一部分CPU的数据的数据状态配置为I态,而来源于另外一部分CPU的数据所对应的状态保持不变。
也就是说,可以把步骤S402替换成S407。
S407,该主CPU对至少一个经过第二NC组进行跨域访问的CPU发出指令,收到指令的CPU把所记录的数据状态中的一部分配置为无效态。其中,被指令配置为无效态的数据状态,是主CPU访问过的一部分宿CPU所对应的数据状态。换句话说,对单个CPU而言,其记录的数据状态包括来自于N个跨域宿CPU的数据的数据状态,本步骤把其中来自于M个跨域宿CPU的数据的数据状态配置为无效态,M<N。被访问的宿CPU和发起访问的CPU不在同一个QPI域,因此,把被访问的宿CPU简称跨域宿CPU。
具体而言,CPU在获得被访问的数据后,会把访问过的数据的数据状态记录在自己的缓存中,假设访问过的跨域宿CPU数据是N个,那么CPU记录有来自于N个CPU的数据的数据状态;本步骤把其中来自于M个跨域宿CPU的数据的数据状态配置为无效态,M<N,M、N均为自然数。余下M-N个CPU的数据的数据状态保持不变。
可选的,这M个CPU直接和第一NC组连接。在执行步骤S408的路由切换后,就可以在不需要经过其他CPU中转的情况下,对这M个CPU进行跨域访问。
CPU记录的数据状态,是CPU访问过的数据的数据状态。数据状态对应有CPU缓存的数据,以及对应数据所来源的内存地址。数据所来源的内存地址对应有管理这个内存地址的CPU。因此,由数据状态可以对应到提供数据的CPU(宿CPU)。
为了方便理解,这里做进一步的解释:至少一个经过第二NC组进行跨域访问的CPU中,每个CPU记录的数据状态,是CPU过去访问过的数据的数据状态,而被CPU访问过的数据可以来自于其他CPU,这些CPU也称为被访问的CPU,或者宿CPU。在这些宿CPU中,和发起访问的CPU(源CPU)不在同一个QPI域的一共有N个,本实施例只对其中的M个宿CPU所对应的数据状态进行无效。相应的,后续步骤中,对这M个CPU进行路由切换。
选择来自于哪些CPU的数据的数据状态,有多种算法。例如,按照访问事务的源CPU和宿CPU之间经过的CPU节点数量,如果源CPU经过第一NC组访问宿CPU,途径的其他CPU的数量较少,那么就切换到第一NC组;反之,继续使用第二NC组。
举例:在附图2所示的架构中,CPU231记录有CPU241对应的数据状态以及CPU242对应的数据状态。按照步骤S402,CPU231所有的数据状态都置为I态;按照步骤S407,可以仅把CPU231中,和CPU241对应的数据状态置为I态,和CPU242对应的数据状态保持不变。
如果步骤S402替换成S407的话,那么步骤S405需要替换成S408。
S408,该主CPU指令所述至少一个使用所述第二NC组进行跨域访问的CPU,把对一部分跨域宿CPU的跨域访问切换为使用所述第一NC组。也就是,对在步骤S407中,被置为I态的数据状态所对应的M个CPU的跨域访问,切换为使用所述第一NC组,具体而言,将这些CPU的路由寄存器中跨域访问的端口,配置成CPU中和所述目标NC连接的端口。对余下数据状态对应的跨域宿CPU的访问可以保持不变。
沿用步骤S406举的例子,可以仅CPU231对CPU241的访问切换到第一NC组,CPU231对CPU242的访问仍然使用第二NC组。
在步骤S401,S407,S403,S408以及S405组成的实施例(附图4中方式二),相比步骤S401,S402,S403,S04以及S405组成实施例(附图4中方式一)而言,对路由的管理更加精细,能够提供通过路由进行跨域CPU访问的效率。
上述实施例一和实施例二分别描述了热移除和热添加NC的过程。如果联合在一起就是NC的热更换过程。也可以作为两个独立的流程分开使用,热添加或者热移除的NC数量,可以单个NC,也可以多个NC一起操作。
实施例三
在实施例一中,目标NC移除后,目标NC所在的整个NC组不再转发数据,这种做法切换速度快,操作简单。
参见图5,本实施例提出另外一种NC热移除方法。在目标NC移除后,目标NC所在的NC组余下的NC中,至少一个可以继续正常工作,也就是可以进行数据转发。相较于实施例一的方案,提高了NC的利用率。下面仍然参照附图2的架构,对本发明实施例具体介绍。
S501,主CPU接收第一NC组有目标NC需要被移除的信号。
目标NC是待移除NC,本实施例中是NC211。本步骤和步骤S301相同,因此不再赘述。
S502,主CPU指令多CPU系统中所有通过该目标NC进行跨域访问的CPU把自己所记录的数据状态配置为无效态。
本步骤和步骤S302相似,因此可以参照S302的内容,本步骤不再详述。不同之处在于,步骤S302中,数据记录配置为无效态的是使用所述第一NC组跨域访问的CPU;步骤S502是使用目标NC跨域访问CPU,使用第一NC组的其他NC但是不使用目标NC跨域访问的CPU,所记录的数据状态可以保持不变。因此,本专利中,受到影响的CPU范围缩小。
通过目标NC进行跨域访问的CPU,包括直接通过目标NC跨域访问的CPU,也包括经过其他NC或者其他CPU转发访问请求后,间接通过目标NC访问跨域访问的CPU。
S503,主CPU发起系统静默。
如果主CPU是多核的,那么系统静默范围是包括主CPU在内的所有CPU。如前所述,如果主CPU是多核的,主CPU可以保留一个或多个核心不进入静默,其余核心进入静默;其他CPU所有核心进入静默。主CPU中不进入静默的核心用于执行后续的操作。
静默过程和S303相同,此处不再详述。
S504,主CPU指令第一NC组中余下NC更新路由配置,以便隔离目标NC。
由于目标NC需要移除,因此第一NC组中余下的NC之间的信号传输通道要发生改变。通过对第一NC组中,余下的NC进行路由配置可以对目标NC进行隔离,避免其他NC把信息(例如报文或者管理信息)继续发送给目标NC。因此需要对余下的NC记录的路由进行更新。并不是第一NC组中所有余下的NC都需要更新路由配置,例如可以更新和目标NC直接相连的NC的路由配置,其余NC的路由配置保持不变。
可选的,本步骤第一NC组调整后的结果,相当于目标NC自始就不存在的情况下,第一NC组中各NC的路由配置。
本实施例中,在NC211删除后,NC214、NC212和NC211之间的信号通道消失,因此要对NC组21中未移除的NC的路由进行重新配置,包括删除和NC211直接相连的NC214、NC212中涉及NC211的路由信息。例如原本NC214在路由配置,如果要访问QPI域23,下一个要经过的NC是NC211;现在NC211需要被移除,因此,可以把NC214的路由配置中,访问QPI域23的下一个要经过的NC配置NC212。
此外,如果新增CPU到NC组的数据传输,可以在相应的NC中新增对宿NC的路由信息,新增的路由信息记录指向宿CPU的端口。这个路由信息可以通过NC在进行访问事务的过程中通过学习活动。如果不增加这个信息,也可以通过广播的方式把访问请求发送给宿CPU。
例如原本CPU231通过NC211对CPU241进行跨域访问,如果NC211移除后,来自CPU231的跨域访问请求,被NC221接管。因此,NC221的路由配置中,可以新增访问CPU241的端口信息。
本步骤对NC组21的调整结果,相当于NC211自始就不存在的情况下,NC组21和各QPI域连接后,对NC组21中各NC的路由配置。
以上只是简单举例,并没有进行完成的说明。尤其是,在QPI域21的NC数量更多的情况下,NC组21中NC的路由配置的调整将更为复杂。
步骤S504和下面的步骤S505的执行顺序不做区分,例如可以同时执行,或者任意一个优先执行。
S505,该主CPU指令所有通过目标NC跨域访问的CPU修改自己的路由配置,使得所有通过该目标跨域访问的CPU,切换为通过第二NC组跨域访问。
主CPU掌握了整个多CPU系统的拓扑,也就是说,主CPU了解CPU之间的连接关系。以及各个CPU对外访问使用的端口。本步骤改动目标NC对其他QPI域的访问端口,即可实现。
由于本步骤原理和步骤S304相同,因此参见步骤S304,此处不再详述。区别在于,本步骤切换的CPU更少,也就说改动路由配置的CPU数目更少。
在步骤S505之后,NC即可进行移除。
S506,主CPU解除系统静默。
本步骤可以参照步骤S305。
实施例四
参见图6,本实施例是在第一NC组已有NC在工作的情况下,添加新的NC(下面称为目标NC)到第一NC组,实现目标NC和第一NC组中已有NC共同工作。目标NC可以和第一QPI域连接。把第一QPI域中的至少一个使用所述第二NC组进行跨域访问的CPU,切换为使用所述目标NC进行跨域访问。
例如在实施例三热移除了NC211后,热添加新的NC211到NC21中,那么和NC211直接相连的CPU231,可以切换为使用目标NC访问其他QPI域。本实施例和实施例二有相似之处,区别在于,范围较小,本实施例中被切换跨域访问路由的CPU限于第一QPI域的CPU,而第二实施例没有这个限制;并且,本实施例中切换路由的CPU使用目标NC进行跨域访问,而第二实施例中,切换路由的CPU是使用第一NC组进行跨域访问。由于本实施例主体部分和第二实施例相似,因此本实施例大部分内容可以参考实施例二。
本实施例可以在实施例三之后执行,共同组成NC更换方法。也可以单独执行,在正常运行的NC组中新添加NC。
S601,主CPU检测到目标NC插入第一NC组。
在执行S601时,第一NC组中存在正常工作的NC,也就是说至少一个NC处于可以转发数据的状态,甚至正在转发数据。而实施例二中,在执行S401时,第一NC组中所有NC不再工作。
本步骤和步骤S401相同,不再详述。
S602,该主CPU指令第一QPI域中,至少一个经过第二NC组进行跨域访问的CPU中所记录的数据状态置为I态。
本步骤中,需要置为I态的CPU是将要在后续步骤中进行路由切换的CPU。
具体如何选择哪些CPU,可以有不同的算法。例如,可以根据目标NC的性能,从第二NC组承担的跨域访问CPU中,选择一部分CPU通过目标NC传递报文。
如何把CPU记录的数据状态置为I态参见步骤S402。
S603,该主CPU发起系统静默。
如何进行系统静默参见步骤S403。
S604,激活所述目标NC,建立所述目标NC与第一NC组原NC之间的拓扑联系。
参见步骤S404。
S605,该主CPU发出指令控制所述至少一个CPU改变自己的路由配置,以便切换为使用所述第一NC进行跨域访问。具体而言,是修改所述至少一个CPU中,每个CPU路由寄存器的路由配置,将所述路由寄存器中访问其他域CPU的端口配置为使用目标NC进行跨域访问的端口。例如配置成所述至少一个CPU的端口中,和目标NC直接连接的端口。
本步骤具体细节可以参见步骤S405,不再详述。区别点在于,步骤S405中,修改路由配置的CPU所在的QPI域不确定,而本实施例中,修改路由配置的CPU位于第一QPI域。
S606,在修改完路由后,该主CPU解除系统静默。
解除静默的过程和步骤S406相似,可以参照步骤S406。
和实施例二类似,本发明实施例还提供一种切换路由的方法,按照宿CPU不同,选择进行切换的路由。在附图6中,这两种方式分别标记为方式一和方式二。其中,步骤S601,S602,S603,S604,S605以及S606称为方式一。步骤S601,S607,S603,S604,S608以及S606称为方式二。
方式二,方式一和方式二有两个步骤不同。在第一QPI域的至少一个使用所述第二NC组进行跨域访问的CPU中:按照跨域访问的宿CPU的不同,把对一部分宿CPU的跨域访问切换为使用所述第一NC组,对另外一部分宿CPU的跨域访问仍然使用第二NC组。相当于把步骤S602替换成下面的步骤S607,步骤S605替换成步骤S608。
S607,该主CPU对第一QPI域的至少一个经过第二NC组进行跨域访问的CPU发出指令,收到指令的CPU把所记录的数据状态中的一部分配置为无效态。换句话说,对单个CPU而言,其记录的数据状态是来自于N个跨域宿CPU的数据的数据状态,本步骤把来自于M个跨域宿CPU的数据的数据状态配置为无效态,M<N。
本步骤详细说明和示例都可以参照步骤S407,因此不再详述。步骤S607和S407相比,区别在于,本步骤中,数据状态被置为无效态的CPU限定在第一QPI域中,步骤S407无QPI域的限制。
S608,该主CPU指令所述至少一个使用所述第二NC组进行跨域访问的CPU,把对一部分宿CPU的跨域访问切换为使用所述第一NC组。例如,对在步骤S607中,被置为I态的数据状态所对应的CPU的跨域访问,切换为使用所述目标NC。具体而言,将这些进行跨域访问的CPU的路由寄存器中,跨域访问的端口配置成CPU中和所述目标NC连接的端口。对余下数据状态对应的宿CPU的访问可以保持不变。
本步骤可以参照步骤408。
需要说明的是,上述各实施例对多CPU系统进行了介绍,本发明还提供关于计算机的实施例,计算机包括上述的多CPU系统,还包括BIOS,BIOS为主CPU提供程序,主CPU通过运行程序发出管理指令和控制指令。CPU还可以是其他可以用CC总线连接,以及通过NC通信的处理器。QPI域和NC组之间可以使用QPI总线;NC内部可以使用QPI总线,也可以使用其他总线。
本发明的各个方面、或各个方面的可能实现方式可以被具体实施为系统、方法或者计算机程序产品。因此,本发明的各方面、或各个方面的可能实现方式可以采用完全硬件实施例、完全软件实施例(包括固件、驻留软件等等),或者组合软件和硬件方面的实施例的形式,在这里都统称为“电路”、“模块”或者“系统”。此外,本发明的各方面、或各个方面的可能实现方式可以采用计算机程序产品的形式,计算机程序产品是指存储在计算机可读介质中的计算机可读程序代码。
计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质包含但不限于电子、磁性、光学、电磁、红外或半导体系统、设备或者装置,或者前述的任意适当组合,如随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或者快闪存储器)、光纤、便携式只读存储器(CD-ROM)。
计算机中的处理器读取存储在计算机可读介质中的计算机可读程序代码,使得处理器能够执行在流程图中每个步骤、或各步骤的组合中规定的功能动作;生成实施在框图的每一块、或各块的组合中规定的功能动作的装置。
显然,本领域的技术人员可以对本发明进行各种改动和变型。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (36)

1.一种CPU,作为对多CPU系统进行管理的主CPU,其特征在于,所述多CPU系统包括:第一缓存一致性CC域、第二CC域、第一节点控制器NC组以及第二NC组,所述第一NC组分别和所述第一CC域、所述第二CC域连接,所述第二NC组分别和所述第一CC域、所述第二CC域连接,每个CC域包括至少一个CPU,所述主CPU属于所述第一CC域或者所述第二CC域,其中,所述主CPU用于:
当所述第一NC组中的NC预备被移除,控制所述多CPU系统中所有使用所述第一NC组进行跨域访问的CPU,通过更改路由配置切换为使用所述第二NC组进行跨域访问。
2.根据权利要求1所述的CPU,其中,所述主CPU用于控制所述多CPU系统中所有使用所述第一NC组进行跨域访问的CPU,通过更改路由配置切换为使用所述第二NC组进行跨域访问,具体包括,所述主CPU用于:
指令使用所述第一NC组进行跨域访问的CPU把记录的数据状态配置为无效态;
发起系统静默,以将所述多CPU系统中所有的CPU置为静默状态;
指令使用所述第一NC组进行跨域访问的CPU,把路由寄存器中访问其他域CPU的端口,配置成所述使用第二NC组进行跨域访问的端口;
发起解除系统静默。
3.根据权利要求2所述的CPU,其中,所述主CPU用于指令使用所述第一NC组进行跨域访问的CPU把所记录的数据状态配置为无效态,具体包括,所述主CPU用于:
指令使用所述第一NC组进行跨域访问的CPU清空缓存中的数据,以将使用所述第一NC组进行跨域访问的CPU所记录的数据状态中的修改态置为无效态;以及
指令所述第一NC组中所有NC对共享态的和独享态的数据状态进行广播,以将使用所述第一NC组进行跨域访问的CPU所记录的数据状态中的共享态和独占态置为无效态。
4.根据权利要求2所述的CPU,其中,所述主CPU用于发起系统静默,以将所述多CPU系统中所有的CPU置为静默状态,具体包括,所述主CPU用于:
把所述主CPU中除一个或者多个保留核心外的其余核心进入静默,以及把所述多CPU系统中的其他CPU所有核心进入静默。
5.根据权利要求1所述的CPU,其中,所述主CPU还用于:
当预备被移除的NC被移除,并且目标NC接入到所述第一NC组并和所述第一NC组原有NC建立拓扑联系后,控制所述多CPU系统中至少一个使用所述第二NC组进行跨域访问的CPU,通过更改路由配置切换为使用所述第一NC组进行跨域访问。
6.根据权利要求1或2所述的CPU,其中,所述主CPU还用于:
当预备被移除的NC被移除,并且目标NC插入到第一NC组后,指令至少一个使用所述第二NC组进行跨域访问的CPU把所记录的数据状态配置为无效态;
发起系统静默,以将所述多CPU系统中所有CPU置为静默状态;
建立所述目标NC与所述第一NC组原有NC之间的拓扑联系;
指令所述至少一个CPU把路由寄存器中访问其他域CPU的端口,配置成所述使用第二NC组进行跨域访问的端口;
发起解除系统静默。
7.根据权利要求1或2所述的CPU,其中,所述主CPU还用于:
当预备被移除的NC被移除,并且目标NC接入到所述第一NC组并和所述第一NC组原有NC建立拓扑联系后;
控制至少一个使用所述第二NC组进行跨域访问的CPU,按被照跨域访问的跨域宿CPU的不同,通过更改路由配置把对一部分跨域宿CPU的跨域访问切换为使用所述第一NC组进行跨域访问。
8.根据权利要求1所述的CPU,其中,所述主CPU还用于:
当目标NC添加到所述第一NC组后,对至少一个用所述第二NC组进行跨域访问的CPU发送指令,指令所述至少一个CPU把记录的数据状态中对应于M个跨域宿CPU的数据状态设置为无效态,其中,所述CPU记录的数据状态一共对应于N个跨域宿CPU,M<N;
发起系统静默,以将所述多CPU系统中所有CPU置为静默状态;
修改所述至少一个CPU的的路由寄存器配置,将所述路由寄存器中访问所述M个CPU的端口,配置成使用第一NC组进行跨域访问的端口;
在修改完路由寄存器配置后,解除系统静默。
9.根据权利要求8所述的多CPU系统,其中:
所述M个CPU和第一NC组直接连接。
10.根据权利要求8所述的多CPU系统,其中,所述主CPU指令所述至少一个CPU把记录的数据状态中对应于M个跨域宿CPU的数据状态设置为无效态,具体包括,所述主CPU用于:
指令所述至少一个CPU,清空缓存中来自于所述M个CPU的数据,以将所述对应于M个跨域宿CPU的的数据状态中的修改态置为无效态;以及
指令所述第二NC组中的NC把记录的对应于M个跨域宿CPU的数据状态中的共享态和独享态的数据状态进行广播,以将所述对应于M个跨域宿CPU的数据状态中的共享态和独享态配置中的为无效态。
11.一种计算机,计算机包括权利要求1-10中任意权利要求中的所述第一CC域、所述第二CC域、所述第一NC组以及所述第二NC组,所述计算机还包括BIOS,其中,所述BIOS用于存储所述主CPU生成指令所需程序。
12.一种多CPU系统管理方法,应用于对多CPU系统进行管理的主CPU,其特征在于,所述多CPU系统包括:第一缓存一致性CC域、第二CC域、第一节点控制器NC组以及第二NC组,所述第一NC组分别和所述第一CC域、所述第二CC域连接,所述第二NC组分别和所述第一CC域、所述第二CC域连接,每个CC域包括至少一个CPU,所述主CPU属于所述第一CC域或者所述第二CC域,该方法包括:
当所述第一NC组中的NC预备被移除,控制所述多CPU系统中所有使用所述第一NC组进行跨域访问的CPU,通过更改路由配置切换为使用所述第二NC组进行跨域访问。
13.根据权利要求12所述的多CPU系统管理方法,其中,所述主CPU用于控制所述多CPU系统中使用所述第一NC组进行跨域访问的CPU,通过更改路由配置切换为使用所述第二NC组进行跨域访问,具体包括:
指令使用所述第一NC组进行跨域访问的CPU把记录的数据状态配置为无效态;
发起系统静默,以将所述多CPU系统中所有的CPU置为静默状态;
指令使用所述第一NC组进行跨域访问的CPU,把路由寄存器中访问其他域CPU的端口,配置成所述使用第二NC组进行跨域访问的端口;
发起解除系统静默。
14.根据权利要求13所述的多CPU系统管理方法,其中,所述指令使用所述第一NC组进行跨域访问的CPU把所记录的数据状态配置为无效态,具体包括:
指令使用所述第一NC组进行跨域访问的CPU清空缓存中的数据,以将使用所述第一NC组进行跨域访问的CPU所记录的数据状态中的修改态置为无效态;以及
指令所述第一NC组中所有NC对共享态的和独享态的数据状态进行广播,以将使用所述第一NC组进行跨域访问的CPU所记录的数据状态中的共享态和独占态置为无效态。
15.根据权利要求13所述的多CPU系统管理方法,其中,发起系统静默,以将所述多CPU系统中所有的CPU置为静默状态,具体包括:
把所述主CPU中除一个或者多个保留核心外的其余核心进入静默,以及把所述多CPU系统中的其他CPU所有核心进入静默。
16.根据权利要求12所述的多CPU系统管理方法,该方法还包括:
当预备被移除的NC被移除,并且目标NC接入到所述第一NC组并和所述第一NC组原有NC建立拓扑联系后,控制所述多CPU系统中至少一个使用所述第二NC组进行跨域访问的CPU,切换为使用所述第一NC组进行跨域访问。
17.根据权利要求12或13所述的多CPU系统管理方法,其中,所述方法还包括:
当目标NC插入到第一NC组后,指令至少一个使用所述第二NC组进行跨域访问的CPU把所记录的数据状态配置为无效态;
发起系统静默,以将所述多CPU系统中所有CPU置为静默状态;
建立所述目标NC与第一NC组原有NC之间的拓扑联系;
指令所述至少一个CPU把路由寄存器中访问其他域CPU的端口,配置成所述使用第一NC组进行跨域访问的端口;
发起解除系统静默。
18.根据权利要求12或13所述的多CPU系统管理方法,其中,该方法还包括:
当所述目标NC添加到所述第一NC组并和所述第一NC组原有NC建立拓扑联系后;
从至少一个使用所述第二NC组进行跨域访问的CPU中,按照跨域访问的跨域宿CPU的不同,把对一部分跨域宿CPU的跨域访问切换为使用所述第一NC组进行跨域访问。
19.根据权利要求12所述的多CPU系统管理方法,其中,该方法还包括:
当目标NC添加到所述第一NC组后,对至少一个用所述第二NC组进行跨域访问的CPU发送指令,指令所述至少一个CPU把记录的数据状态中对应于M个跨域宿CPU的数据状态设置为无效态,其中,所述CPU记录的数据状态一共对应于N个跨域宿CPU,M<N;
发起系统静默,以将所述多CPU系统中所有CPU置为静默状态;
修改所述至少一个CPU的的路由寄存器配置,将所述路由寄存器中,访问所述M个CPU的端口,配置成使用第一NC组进行跨域访问的端口。
在修改完路由寄存器配置后,解除系统静默。
20.一种CPU,作为对多CPU系统进行管理的主CPU,其特征在于,所述多CPU系统包括:第一缓存一致性CC域、第二CC域、第一节点控制器NC组以及第二NC组,所述第一NC组分别和所述第一CC域、所述第二CC域连接,所述第二NC组分别和所述第一CC域、所述第二CC域连接,每个CC域包括至少一个CPU,所述主CPU属于所述第一CC域或者所述第二CC域,其中,所述主CPU用于:
当所述第一NC组中的目标NC预备被移除,控制所述多CPU系统中所有使用所述目标NC进行跨域访问的CPU,通过更改路由配置切换为使用所述第二NC组进行跨域访问。
21.根据权利要求20所述的CPU,其特征在于,所述主CPU用于控制所述多CPU系统中所有使用所述目标NC进行跨域访问的CPU,通过更改路由配置切换为使用所述第二NC组进行跨域访问,具体包括,所述主CPU用于:
指令使用所述目标NC进行跨域访问的CPU把记录的数据状态配置为无效态;
发起系统静默,以将所述多CPU系统中所有CPU置为静默状态;
指令第一NC组中余下NC更新路由配置,以便隔离所述目标NC,并且指令使用所述目标NC进行跨域访问的CPU,把路由寄存器中访问其他域CPU的端口,配置成所述使用第二NC组进行跨域访问的端口;
发起解除系统静默。
22.根据权利要求21所述的CPU,其中,所述主CPU用于指令使用所述目标NC进行跨域访问的CPU把记录的数据状态配置为无效态,具体包括,所述主CPU用于:
指令使用所述目标NC进行跨域访问的CPU清空缓存,以将使用所述目标NC进行跨域访问的CPU所记录的数据状态中的修改态置为无效态;以及
指令所述目标NC对共享态和独享态的数据状态进行广播,以将使用所述目标NC进行跨域访问的CPU所记录的数据状态中的共享态和独占态置为无效态。
23.一种计算机,计算机包括权利要求20-22中,任意权利要求中的所述第一缓存一致性CC域、所述第二CC域、所述第一NC组以及所述第二NC组,所述计算机还包括BIOS,其中,所述BIOS用于存储所述主CPU生成指令所需程序。
24.一种多CPU系统管理方法,用于主CPU对多CPU系统进行管理,所述多CPU系统包括:第一缓存一致性CC域、第二CC域、第一节点控制器NC组以及第二NC组,所述第一NC组分别和所述第一CC域、所述第二CC域连接,所述第二NC组分别和所述第一CC域、所述第二CC域连接,每个CC域包括至少一个CPU,所述主CPU属于所述第一CC域或者所述第二CC域,其中,所述主CPU用于:
当所述第一NC组中的目标NC预备被移除,控制所述多CPU系统中所有使用所述目标NC进行跨域访问的CPU,通过更改路由配置切换为使用所述第二NC组进行跨域访问。
25.根据权利要求24所述的多CPU系统管理方法,其中,控制所述多CPU系统中所有使用所述目标NC进行跨域访问的CPU,通过更改路由配置切换为使用所述第二NC组进行跨域访问,具体包括:
指令使用所述目标NC进行跨域访问的CPU把记录的数据状态配置为无效态;
发起系统静默,以将所述多CPU系统中所有CPU置为静默状态;
指令第一NC组中余下NC更新路由配置,以便隔离所述目标NC;并且指令使用所述目标NC进行跨域访问的CPU,把路由寄存器中访问其他域CPU的端口,配置成所述使用第二NC组进行跨域访问的端口;
发起解除系统静默。
26.根据权利要求25所述的多CPU系统管理方法,其中,所述主CPU指令使用所述目标NC进行跨域访问的CPU把记录的数据状态配置为无效态,具体包括:
指令使用所述目标NC进行跨域访问的CPU清空缓存,以将使用所述目标NC进行跨域访问的CPU所记录的数据状态中的修改态置为无效态;以及
指令所述目标NC对共享态和独享态的数据状态进行广播,以将使用所述目标NC进行跨域访问的CPU所记录的数据状态中的共享态和独占态置为无效态。
27.一种CPU,作为对多CPU系统进行管理的主CPU,所述多CPU系统包括:第一缓存一致性CC域、第二CC域、第一节点控制器NC组以及第二NC组,所述第一NC组分别和所述第一CC域、所述第二CC域连接,所述第二NC组分别和所述第一CC域、所述第二CC域连接,每个CC域包括至少一个CPU,所述主CPU属于所述第一CC域或者所述第二CC域,其中,所述主CPU用于:
当目标NC接入到所述第一NC组,控制所述第一CC域中的至少一个使用所述第二NC组进行跨域访问的CPU,通过更改路由配置切换为使用所述目标NC进行跨域访问,其中,所述目标NC和第一CC域连接。
28.根据权利要求27所述的CPU,其中,所述主CPU用于控制所述第一CC域中的至少一个使用所述第二NC组进行跨域访问的CPU,通过更改路由配置切换为使用所述目标NC进行跨域访问,具体包括,所述主CPU用于:
指令所述至少一个CPU把数据状态配置为无效态;
发起系统静默,以将所述多CPU系统中所有CPU置为静默状态;
指令所述目标NC与第一NC组原NC之间建立拓扑联系;
指令所述至少一个CPU修改路由配置,将路由寄存器中访问其他域CPU的端口,修改为使用目标NC进行跨域访问的端口;
发起解除系统静默。
29.根据权利要求27所述的CPU,其中,所述主CPU用于控制所述第一CC域中的至少一个使用所述第二NC组进行跨域访问的CPU,通过更改路由配置切换为使用所述目标NC进行跨域访问,具体包括,所述主CPU用于:
对至少一个用所述第二NC组进行跨域访问的CPU发送指令,指令所述至少一个CPU把记录的数据状态中对应于M个跨域宿CPU的数据状态设置为无效态,其中,所述CPU记录的数据状态一共对应于N个跨域宿CPU,M<N;发起系统静默,以将所述多CPU系统中所有CPU置为静默状态;
指令所述至少一个CPU修改路由配置,将所述路由寄存器中,访问所述M个CPU的端口,配置成使用所述目标NC跨域进行访问的端口。
30.根据权利要求29所述的CPU,其特征在于,所述主CPU用于指令所述至少一个CPU把记录的数据状态中对应于M个跨域宿CPU的数据状态设置为无效态,具体包括,所述主CPU用于:
指令所述至少一个CPU清空缓存中来自于所述M个CPU的数据,以将所述对应于M个跨域宿CPU的数据状态中的修改态置为无效态;以及
还用于指令所述第二NC组中的NC将记录的对应于M个跨域宿CPU的数据状态配置中的共享态和独享态的数据状态进行广播,以将所述对应于M个跨域宿CPU的数据状态中的共享态和独享态配置中的为无效态。
31.一种多计算机,计算机包括权利要求27-30中,任意权利要求所述的第一缓存一致性CC域、第二CC域、第一NC组以及第二NC组,所述计算机还包括BIOS,其中,所述BIOS用于存储所述主CPU生成指令所需程序。
32.一种多CPU系统管理方法,用于主CPU对多CPU系统进行管理,所述多CPU系统包括:第一高速互联协议CC域、第二CC域、第一节点控制器NC组以及第二NC组,所述第一NC组分别和所述第一CC域、所述第二CC域连接,所述第二NC组分别和所述第一CC域、所述第二CC域连接,其中,每个CC域包括至少一个CPU,所述主CPU属于所述第一CC域或者所述第二CC域,该方法包括:
当目标NC接入到所述第一NC组,控制所述第一CC域中的至少一个使用所述第二NC组进行跨域访问的CPU,通过更改路由配置切换为使用所述目标NC进行跨域访问,其中,所述目标NC和第一CC域连接。
33.根据权利要求32所述的多CPU系统管理方法,其中,所述控制所述第一CC域中的至少一个使用所述第二NC组进行跨域访问的CPU,通过更改路由配置切换为使用所述目标NC进行跨域访问,具体包括:
指令所述至少一个CPU把数据状态配置为无效态;
发起系统静默,以将所述多CPU系统中所有CPU置为静默状态;
指令所述目标NC与第一NC组原NC之间建立拓扑联系;
指令所述至少一个CPU修改路由配置,将路由寄存器中访问其他域CPU的端口,修改为使用目标NC进行跨域访问的端口;
发起解除系统静默。
34.根据权利要求32所述的多CPU系统管理方法,其中,所述主CPU用于控制所述第一CC域中的至少一个使用所述第二NC组进行跨域访问的CPU,通过更改路由配置切换为使用所述目标NC进行跨域访问,具体包括,所述主CPU用于:
对至少一个用所述第二NC组进行跨域访问的CPU发送指令,指令所述至少一个CPU把记录的数据状态中对应于M个跨域宿CPU的数据状态设置为无效态,其中,所述CPU记录的数据状态一共对应于N个跨域宿CPU,M<N;
发起系统静默,以将所述多CPU系统中所有CPU置为静默状态;
指令所述至少一个CPU修改路由配置,将所述路由寄存器中,访问所述M个CPU的端口,配置成使用所述目标NC跨域进行访问的端口。
35.根据权利要求34所述的多CPU系统管理方法,其特征在于,所述主CPU用于指令所述至少一个CPU把记录的数据状态中对应于M个跨域宿CPU的数据状态设置为无效态,具体包括,所述主CPU用于:
指令所述至少一个CPU清空缓存中来自于所述M个CPU的数据,以将所述对应于M个跨域宿CPU的数据状态中的修改态置为无效态;以及
还用于指令所述第二NC组中的NC将记录的对应于M个跨域宿CPU的所述M个CPU的数据的数据状态配置中的共享态和独享态的数据状态进行广播,以将所述对应于M个跨域宿CPU的数据状态中的共享态和独享态配置中的为无效态。
36.一种多CPU系统,多CPU系统包括:至少两个缓存一致性CC域以及第一节点控制器NC组,每个所述CC域包括至少一个CPU,所述第一NC组包括至少一个NC,所述第一NC组与所述至少两个CC域相连,其特征在于:
所述多CPU系统还包括第二NC组,所述第二NC组包括至少一个NC,所述第二NC组与所述至少两个CC域相连;
所述多CPU系统中有至少一个CPU用于,根据自己的路由配置,在对其他CC域的第一跨域宿CPU进行访问时,将访问请求发到所述第一NC组,所述第一NC组用于将访问请求转发到第二CC域中的第一跨域宿CPU;
所述多CPU系统中有至少一个CPU用于,根据自己的路由配置,在对其他CC域的第二跨域宿CPU进行访问时,将访问请求发到所述第一NC组,所述第一NC组用于将访问请求转发到第二CC域中的第二跨域宿CPU。
CN201580012642.6A 2015-12-29 2015-12-29 一种cpu及多cpu系统管理方法 Active CN106104505B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010104409.3A CN111427827B (zh) 2015-12-29 2015-12-29 一种cpu及多cpu系统管理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2015/099589 WO2017113128A1 (zh) 2015-12-29 2015-12-29 一种cpu及多cpu系统管理方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202010104409.3A Division CN111427827B (zh) 2015-12-29 2015-12-29 一种cpu及多cpu系统管理方法

Publications (2)

Publication Number Publication Date
CN106104505A true CN106104505A (zh) 2016-11-09
CN106104505B CN106104505B (zh) 2020-02-21

Family

ID=57216272

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202010104409.3A Active CN111427827B (zh) 2015-12-29 2015-12-29 一种cpu及多cpu系统管理方法
CN201580012642.6A Active CN106104505B (zh) 2015-12-29 2015-12-29 一种cpu及多cpu系统管理方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202010104409.3A Active CN111427827B (zh) 2015-12-29 2015-12-29 一种cpu及多cpu系统管理方法

Country Status (12)

Country Link
US (1) US11138147B2 (zh)
EP (2) EP3575977A1 (zh)
JP (1) JP6536677B2 (zh)
KR (1) KR102092660B1 (zh)
CN (2) CN111427827B (zh)
AU (1) AU2015412144B2 (zh)
BR (1) BR112017008407B1 (zh)
CA (1) CA2965982C (zh)
RU (1) RU2658884C1 (zh)
SG (1) SG11201703261WA (zh)
WO (1) WO2017113128A1 (zh)
ZA (1) ZA201702790B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107396586A (zh) * 2017-07-27 2017-11-24 郑州云海信息技术有限公司 一种减少背板层叠的upi互连系统
CN107526617A (zh) * 2017-09-04 2017-12-29 井冈山电器有限公司 一种cpu更新方法及系统
CN108701117A (zh) * 2017-05-04 2018-10-23 华为技术有限公司 互连系统、互连控制方法和装置
CN114090095A (zh) * 2022-01-19 2022-02-25 苏州浪潮智能科技有限公司 一种多路服务器中cpu的bios加载方法及相关组件

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105700975B (zh) * 2016-01-08 2019-05-24 华为技术有限公司 一种中央处理器cpu热移除、热添加方法及装置
JP7068681B2 (ja) * 2017-06-02 2022-05-17 国立大学法人東京海洋大学 生殖細胞追跡用抗体
CN108182163B (zh) * 2018-01-02 2021-03-02 苏州浪潮智能科技有限公司 一种计算板级热插拔控制装置及控制方法
US11016822B1 (en) * 2018-04-03 2021-05-25 Xilinx, Inc. Cascade streaming between data processing engines in an array
CN112540941A (zh) * 2019-09-21 2021-03-23 华为技术有限公司 一种数据转发芯片及服务器

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090144476A1 (en) * 2007-12-04 2009-06-04 Xiaohua Cai Hot plug in a link based system
US20100251005A1 (en) * 2009-03-30 2010-09-30 Masaaki Kitano Multiprocessor system and failure recovering system
CN102449621A (zh) * 2011-08-25 2012-05-09 华为技术有限公司 一种节点控制器链路的切换方法、处理器系统和节点
CN103020004A (zh) * 2012-12-14 2013-04-03 杭州华为数字技术有限公司 高速缓存非对称一致性内存访问系统的访问方法和装置
US20140310555A1 (en) * 2013-04-12 2014-10-16 Oracle International Corporation Physical domain error isolation and recovery in a multi-domain system

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6516429B1 (en) * 1999-11-04 2003-02-04 International Business Machines Corporation Method and apparatus for run-time deconfiguration of a processor in a symmetrical multi-processing system
JP2002197073A (ja) * 2000-12-25 2002-07-12 Hitachi Ltd キャッシュ一致制御装置
US7477612B2 (en) * 2002-03-15 2009-01-13 Broadcom Corporation Topology discovery process and mechanism for a network of managed devices
US7483370B1 (en) * 2003-12-22 2009-01-27 Extreme Networks, Inc. Methods and systems for hitless switch management module failover and upgrade
JP2007011580A (ja) * 2005-06-29 2007-01-18 Toshiba Corp 情報処理装置
US7599302B2 (en) * 2005-07-19 2009-10-06 Cisco Technology, Inc. Dynamic enforcement of MPLS-TE inter-domain policy and QoS
US7761538B2 (en) 2006-08-30 2010-07-20 Microsoft Corporation Dynamically configuring, allocating and deploying computing systems
US7730248B2 (en) * 2007-12-13 2010-06-01 Texas Instruments Incorporated Interrupt morphing and configuration, circuits, systems and processes
CN101216815B (zh) * 2008-01-07 2010-11-03 浪潮电子信息产业股份有限公司 一种双翼可扩展多处理器紧耦合共享存储器体系结构
US8224955B2 (en) * 2009-05-07 2012-07-17 International Business Machines Corporation Ensuring affinity at all affinity domains by folding at each affinity level possible for a partition spanning multiple nodes
CN101640688B (zh) * 2009-08-20 2014-03-12 中兴通讯股份有限公司 基于cdn的节点主备用控制器切换方法及cdn网络
US20110161592A1 (en) * 2009-12-31 2011-06-30 Nachimuthu Murugasamy K Dynamic system reconfiguration
US20110179311A1 (en) 2009-12-31 2011-07-21 Nachimuthu Murugasamy K Injecting error and/or migrating memory in a computing system
US8677180B2 (en) * 2010-06-23 2014-03-18 International Business Machines Corporation Switch failover control in a multiprocessor computer system
US8656115B2 (en) * 2010-08-20 2014-02-18 Intel Corporation Extending a cache coherency snoop broadcast protocol with directory information
CN102141975B (zh) * 2011-04-01 2013-10-09 华为技术有限公司 计算机系统
CN102232218B (zh) 2011-06-24 2013-04-24 华为技术有限公司 计算机子系统和计算机系统
US8856495B2 (en) * 2011-07-25 2014-10-07 International Business Machines Corporation Automatically routing super-compute interconnects
WO2012119369A1 (zh) * 2011-08-02 2012-09-13 华为技术有限公司 基于cc-numa的报文处理方法、装置和系统
CN102521201A (zh) 2011-11-16 2012-06-27 刘大可 多核数字信号处理器片上系统及数据传输方法
CN202422104U (zh) * 2012-02-10 2012-09-05 广州瀚阳信息科技有限公司 多屏并行海量信息展示系统
CN103150264B (zh) * 2013-01-18 2014-09-17 浪潮电子信息产业股份有限公司 一种基于扩展型Cache Coherence协议的多级一致性域仿真验证和测试方法
US9361334B2 (en) * 2013-08-23 2016-06-07 Cisco Technology, Inc. Addressing cache coherence in updates to a shared database in a network environment
US10684973B2 (en) 2013-08-30 2020-06-16 Intel Corporation NUMA node peripheral switch
CN103530191B (zh) * 2013-10-18 2017-09-12 杭州华为数字技术有限公司 热点识别处理方法及装置
US9246803B2 (en) * 2014-01-02 2016-01-26 Futurewei Technologies, Inc. Method and apparatus for scalable content routing and mobility in named data networks
CN104811325B (zh) * 2014-01-24 2018-12-25 华为技术有限公司 一种集群节点控制器监控方法、相关装置以及控制器
US9749214B2 (en) * 2014-02-26 2017-08-29 Futurewei Technologies, Inc. Software defined networking (SDN) specific topology information discovery
US9477564B2 (en) * 2014-06-20 2016-10-25 Intel Corporation Method and apparatus for dynamic node healing in a multi-node environment
CN104077375B (zh) * 2014-06-24 2017-09-12 华为技术有限公司 一种cc‑numa系统中节点的错误目录的处理方法和节点
US9762479B2 (en) * 2014-11-10 2017-09-12 Maged E. Beshai Distributed routing control in a vast communication network
CN104899179A (zh) * 2015-04-03 2015-09-09 浪潮电子信息产业股份有限公司 一种基于融合架构的多路服务器qpi扣卡的设计方法
US10050806B2 (en) * 2015-12-07 2018-08-14 Futurewei Technologies, Inc. End-to-end (E2E) tunnel based on shortest point-to-point (P2P) path computation

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090144476A1 (en) * 2007-12-04 2009-06-04 Xiaohua Cai Hot plug in a link based system
US20100251005A1 (en) * 2009-03-30 2010-09-30 Masaaki Kitano Multiprocessor system and failure recovering system
CN102449621A (zh) * 2011-08-25 2012-05-09 华为技术有限公司 一种节点控制器链路的切换方法、处理器系统和节点
CN103020004A (zh) * 2012-12-14 2013-04-03 杭州华为数字技术有限公司 高速缓存非对称一致性内存访问系统的访问方法和装置
US20140310555A1 (en) * 2013-04-12 2014-10-16 Oracle International Corporation Physical domain error isolation and recovery in a multi-domain system

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108701117A (zh) * 2017-05-04 2018-10-23 华为技术有限公司 互连系统、互连控制方法和装置
US11100039B2 (en) 2017-05-04 2021-08-24 Huawei Technologies Co., Ltd. Interconnection system, and interconnection control method and apparatus
CN108701117B (zh) * 2017-05-04 2022-03-29 华为技术有限公司 互连系统、互连控制方法和装置
CN107396586A (zh) * 2017-07-27 2017-11-24 郑州云海信息技术有限公司 一种减少背板层叠的upi互连系统
CN107526617A (zh) * 2017-09-04 2017-12-29 井冈山电器有限公司 一种cpu更新方法及系统
CN114090095A (zh) * 2022-01-19 2022-02-25 苏州浪潮智能科技有限公司 一种多路服务器中cpu的bios加载方法及相关组件

Also Published As

Publication number Publication date
AU2015412144B2 (en) 2018-11-15
EP3226147A1 (en) 2017-10-04
KR102092660B1 (ko) 2020-03-24
EP3226147B1 (en) 2019-12-04
CA2965982A1 (en) 2017-06-29
AU2015412144A1 (en) 2017-07-13
BR112017008407A8 (pt) 2022-10-18
JP2018507454A (ja) 2018-03-15
ZA201702790B (en) 2019-12-18
CN106104505B (zh) 2020-02-21
RU2658884C1 (ru) 2018-06-25
US20170364475A1 (en) 2017-12-21
BR112017008407A2 (pt) 2017-12-19
BR112017008407B1 (pt) 2023-04-04
CA2965982C (en) 2019-02-12
WO2017113128A1 (zh) 2017-07-06
SG11201703261WA (en) 2017-08-30
JP6536677B2 (ja) 2019-07-03
KR20170093116A (ko) 2017-08-14
US11138147B2 (en) 2021-10-05
CN111427827A (zh) 2020-07-17
CN111427827B (zh) 2023-03-17
EP3226147A4 (en) 2017-12-27
EP3575977A1 (en) 2019-12-04

Similar Documents

Publication Publication Date Title
CN106104505A (zh) 一种cpu及多cpu系统管理方法
US7469307B2 (en) Storage system with DMA controller which controls multiplex communication protocol
TWI533133B (zh) 用於將分散式系統中多個組件的活動同步的方法、電路、裝置,及設備
US20080184259A1 (en) End node transactions at threshold-partial fullness of storage space
EP2230606A2 (en) System having a plurality of nodes connected in multi-dimensional matrix, method of controlling system and apparatus
US20090077272A1 (en) Disk controller
CN105009099A (zh) 计算机系统及数据控制方法
CN104115128A (zh) 具有高速缓存相干性的集成电路
US10437750B2 (en) Relative data width indication for read responses routed by an interconnect
US10592465B2 (en) Node controller direct socket group memory access
JP5842174B2 (ja) バス制御装置、中継装置およびバスシステム
US8463960B2 (en) Synchronisation of data processing systems
CN110581807B (zh) 节点设备、路由方法及互联系统
JP3821377B2 (ja) 双方向リングネットワーク、ノード装置、および双方向リングネットワークのルーティング情報構成方法
WO2015140973A1 (ja) 計算機の制御方法、管理装置、及び計算機システム
JP2012199767A (ja) 電子回路システム
JPH03234140A (ja) コンピュータネットワーク経路選択方式
JP2017169020A (ja) 通信管理方法、通信管理プログラム及び情報処理装置

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
TR01 Transfer of patent right

Effective date of registration: 20211227

Address after: 450046 Floor 9, building 1, Zhengshang Boya Plaza, Longzihu wisdom Island, Zhengdong New Area, Zhengzhou City, Henan Province

Patentee after: Super fusion Digital Technology Co.,Ltd.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd.

TR01 Transfer of patent right