CN104375881A - 龙芯处理器的主核热插拔方法 - Google Patents
龙芯处理器的主核热插拔方法 Download PDFInfo
- Publication number
- CN104375881A CN104375881A CN201410586423.6A CN201410586423A CN104375881A CN 104375881 A CN104375881 A CN 104375881A CN 201410586423 A CN201410586423 A CN 201410586423A CN 104375881 A CN104375881 A CN 104375881A
- Authority
- CN
- China
- Prior art keywords
- main core
- core
- main
- opened
- agency
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Hardware Redundancy (AREA)
- Multi Processors (AREA)
Abstract
本发明公开了一种龙芯处理器的主核热插拔方法,包括动态关闭主核,所述动态关闭主核包括以下步骤:1)主核从辅助核心中选定一个核心为代理主核;2)代理主核通知主核执行角色转换例程并等待主核发送进入可关闭状态通知;3)主核执行角色转换例程,所述角色转换例程包括将CPU特征数据复制一份给代理主核,外部中断路由设置到代理主核,代理主核成为参考时钟源对象;4)主核进行任务迁移,主核向代理主核发送进入可关闭状态通知;5)代理主核关闭主核时钟。该方法解决动态关闭主核时CPU的特征信息被销毁,外部中断路由过程受阻,计时***校准失去参考对象的问题。使CPU热插拔过程更加完善,更加灵活、健壮。
Description
技术领域
本发明涉及一种处理器的主核热拔插方法,特别是涉及一种龙芯处理器的主核热插拔方法,属于计算机技术领域。
背景技术
灵活性、健壮性、节能都是计算机***设计的重要指标。CPU热插拔(即动态开关处理器核)是达成这些目的的一种重要手段。有了CPU热插拔,可以在不关机的情况下更改计算机配置,具有极大的灵活性;有了CPU热插拔,可以在个别处理器核出现故障的时候将其关闭并移走正在执行的任务,增强了健壮性;有了CPU热插拔,还可以在***负载较轻的时候关闭一部分处理器核,因而也是一种节能方法。云计算的典型模式就是拥有大量的CPU资源,在之上运行大量的虚拟机,因而CPU热插拔显得尤为重要。
CPU热插拔分为软件层面的热插拔和硬件层面的热插拔,前者只是在功能上启用或者禁用,后者是真正在物理上进行添加和移除。对于动态增加(热插),必须先在硬件层面添加,然后在软件层面启用;对于动态移除(热拔),必须现在软件层面禁用,然后在硬件层面移除。本发明主要关注的是软件层面上的热插拔。
大多数操作***都已经实现软件层面的CPU热插拔,但这些已有的方法都有一个缺点就是主核不能被热插拔。在多核处理器***里面,有一个特殊的核叫主核,或者叫启动核,编号通常是零。主核是计算机上电以后第一个启动的核,其他核(辅核,非启动核)都是被主核激活以后才上线的。虽然***启动完成以后,所有的CPU核都基本上是对称、等效的,但是主核还是有一些特别之处。除了启动时候的区别之外,还有一个重要的特点就是主核不能被热插拔(动态开关)。
运行在X86处理器上的Linux操作***已经在尝试实现对主核的热插拔。但X86处理器和MIPS家族的龙芯处理器有着极大的区别:与多核有关的中断路由、计时在两种处理器上完全不同;而且尤为重要的是,X86有基于ACPI的BIOS,可以协助操作***完成很多事情,龙芯则完全没有ACPI。因此在龙芯上实现主核热插拔会面临更多的新问题。
主核之所以不能热插拔,并不是因为技术上完全不可行,而是现有的操作***对于主核有一些假定,比如:
1、启动假定:因为计算机必须从主核启动,因此许多CPU的特征信息都记录在主核的数据结构里面。因此,一旦主核被关闭,相关数据结构被销毁,则许多有用的信息都将无法获取。
2、中断假定:龙芯电脑使用的中断控制器非常简单,不像X86的APIC那样可以动态仲裁、动态路由。在现有的操作***中,所有的外部中断都被路由到主核。这种配置对于辅核的热插拔来说非常方便,因为不管怎么开关,中断传递的过程都是不需要关注的。但是如果要做主核热插拔,这种配置就反倒成为了挑战。
3、计时假定:龙芯电脑上,计时***的主要时钟源是MIPS时钟源,即Count/Compare寄存器对。在没有CPU热插拔的时候,所有核的Count寄存器都是同步的,但一个核被关闭后,Count寄存器就会停止递增;当这个核重新开启后,Count寄存器的值就会落后于其他核。因此,新启动的核要跟其他核进行Count寄存器校准,而校准的参考对象就是主核。主核被假定永远在线,因此是最佳参考对象。而如果要实现主核热插拔,则这个假定不能成立。
发明内容
针对上述现有技术的不足,本发明的目的是提供一种龙芯处理器的主核热插拔方法,解决动态关闭主核时,CPU的特征信息被销毁,外部中断路由过程受阻,计时***校准失去参考对象的问题。将CPU热插拔过程更加完善,更加灵活、健壮。
本发明的技术方案是这样的:一种龙芯处理器的主核热插拔方法,包括动态关闭主核,其特征在于,所述动态关闭主核包括以下步骤:
1)主核从辅助核心中选定一个核心为代理主核;
2)代理主核通知主核执行角色转换例程并等待主核发送进入可关闭状态通知;
3)主核执行角色转换例程,所述角色转换例程包括主核将CPU特征数据复制一份给代理主核,外部中断路由设置到代理主核,代理主核成为参考时钟源对象;
4)主核进行任务迁移,主核向代理主核发送进入可关闭状态通知;
5)代理主核关闭主核时钟。
进一步的,所述角色转换例程包括主核将自身设置成离线状态,然后通知所有在线的处理器核暂停运行;主核将CPU特征数据复制一份给代理主核,外部中断路由设置到代理主核,代理主核成为参考时钟源对象;最后主核通知所有在线的处理器核继续运行。
优选的,所述主核从辅助核心中选定编号最小的一个核心为代理主核。
在本发明的一个具体实施例中,所述龙芯处理器的主核热插拔方法还包括动态开启核心,所述动态打开核心包括如下步骤:
1)主核执行BootSecondary:主核打开待开启核心的时钟,准备好待开启核心的初始执行入口、初始进程和初始堆栈,设置待开启核心的IPI寄存器,激活待开启核心使之开始执行,并等待待开启核心的通知;
2)待开启核心初始化并执行InitSecondary,所述InitSecondary包括协处理器0中断掩码设置和Count寄存器校准,所述校准的参考对象是主核;
3)待开启核心计算主频;
4)待开启核心执行SmpFinish,所述SmpFinish将自身设置成在线状态,然后通知主核并打开本地中断;
5)主核收到通知后,继续执行自身工作。
需要指出的是本发明引入了“代理主核”的概念,发明内容所述的主核并非仅为处理器的物理主核,其还可以包括进行过关闭物理主核后成为代理主核的辅助核心。因此本发明技术方案针对的是当前***中以“主核”身份运行的处理器核心关闭问题。对主核进行热插拔的过程即是在辅助核心中选出一个核来充当主核,将***中所有对原主核的依赖改造成对新主核的依赖;然后新主核承担原主核的职责,将原主核视为普通的辅助核心,对其进行热插拔。
本发明所提供的技术方案,处理器的热拔插操作不再局限于仅可关闭辅助核心或者必须在所有辅助核心关闭之后才能关闭主核。而是可以根据当前***运行情况,随时关闭具有“主核”身份的真正物理主核或者实际为辅助核心的代理主核,CPU热插拔是严格串行化的,因此不会出现多个主核或代理主核共存的情况。因此本发明技术方案使CPU热插拔过程更加完善,更加灵活、健壮。
附图说明
图1为龙芯处理器关核流程示意图。
图2为龙芯处理器开核流程示意图。
图3为龙芯处理器关核流程中主核关闭流程示意图。
图4为龙芯处理器开核流程中主核打开流程示意图。
具体实施方式
下面结合实施例对本发明作进一步说明,但不作为对本发明的限定。
请参见图1,关闭核心的完整过程是:
具有“主核”身份的核心:选择性地执行SelectMaster(当关闭目标是“主核”时执行该步骤)→执行CpuDie操作→等待“辅核”进入可关闭状态→关闭“辅核”继续运行。
“辅核”即目标核心:执行CpuDisable操作→将进程迁移到其他在线核心→执行PlayDead→等待直到被“主核”关闭。
请参见图2,开启核心的完整过程是:
具有“主核”身份的核心:执行BootSecondary操作→等待“辅核”启动完成→ 继续运行。
“辅核”即目标核心:执行初始化→执行InitSecondary操作→计算主频→执行SmpFinish→开始投入运行。
其中,
SelectMaster:在“主核”上执行,当即将被关闭的目标核心是具有“主核”身份的核心时,执行该操作。具体工作是:通知所有在线的处理器核暂停运行;在所有在线的“辅核”中,选择编号最小的“辅核”作为代理主核;本核进入等待状态,代理主核成为具有“主核”身份的核心,继续执行的后续工作,其他核继续执行本职工作。
本步骤完成之后,主核角色转换初步完成。
CpuDie:在“主核”上执行,它通知目标核心即将被关闭,然后等待目标核心进入可关闭状态后,关闭目标核心时钟。
CpuDisable:即角色转换例程,在目标核心上执行,进程迁移之前的工作都必须在此完成,主要是将本核设置成离线状态,如果目标核心是之前具有“主核”身份的核心,则还要完成主核资源移交。
主核资源移交所完成的工作:通知所有在线的处理器核暂停运行;将CPU特征数据复制一份,移交给初步转化角色后的新主核,这样原主核的数据结构就可以安全销毁了;在所有核暂停运行的状态下,可以安全地完成中断迁移,也就是将外部中断路由重新设置到新主核上面;将参考时钟源对象从原主核改设成新主核;通知所有在线的处理器核继续运行。当资源移交完毕后,主核角色转换全部完成。
PlayDead:在目标核心上执行,完成进程迁移之后的工作,包括TLB刷回,Cache刷回和声明本核已进入可关闭状态。
BootSecondary:在“主核”上执行,具体工作包括:打开目标“辅核”的时钟,准备好目标辅核的初始执行入口、初始进程和初始堆栈,设置目标“辅核”的IPI(Inter-Processor Interrupt,处理器间中断)寄存器,激活目标“辅核”使之开始执行。
(2)InitSecondary:在目标“辅核”上执行,主频计算之前的工作都必须在此完成,具体包括CP0(协处理器0)中断掩码设置和Count寄存器校准。校准的参考对象是主核或者代理主核。
(3)SmpFinish:在目标“辅核”上执行,完成主频计算之后剩余的工作,包括设置本核的在线状态并打开本地中断。设置好在线状态,“主核”就会得到通知,得以继续运行。
具体的,以四核龙芯3A为例,四个核分别编号为0、1、2、3,其中0号为物理主 核,其他三个为物理辅核。下面描述动态关闭和重新开启0号核(物理主核)的过程,假设初始状态是4个核全部在线。
动态关闭0号核的具体步骤如图3所示:
1)0号核执行SelectMaster:它通知所有在线的处理器核暂停运行;然后选择1号核作为代理主核;0号核进入等待状态,1号核则继续执行0号核的后续工作,其他核继续执行本职工作。
2)1号核执行CpuDie:它通知0号核即将被关闭,然后等待0号核进入可关闭状态后,关闭0号核时钟。
3)0号核执行CpuDisable:它将本核设置成离线状态,然后通知所有在线的处理器核暂停运行;将CPU特征数据复制一份,移交给1号核,这样0号核的数据结构就可以安全销毁了;在所有核暂停运行的状态下,可以安全地完成中断迁移,也就是将外部中断路由重新设置到1号核上面;将参考时钟源对象0号核改成1号核;通知所有在线的处理器核继续运行。本步骤执行完毕后,主核角色转换全部完成。
4)0号核进行任务迁移,本核即将离线,因此任务将转交给其他核代为执行。
5)0号核执行PlayDead:完成进程迁移之后的工作,包括TLB刷回,Cache刷回和声明本核已进入可关闭状态。
6)当1号核得到通知后,关闭0号核时钟,然后1号CpuDie返回,继续执行本职工作。主核关闭至此全部完成。
重新开启0号核的具体步骤如图4所示,此时1号核为代理主核:
1)1号核执行BootSecondary:它打开0号核的时钟,准备好0号核的初始执行入口、初始进程和初始堆栈,设置0号核的IPI(Inter-Processor Interrupt,处理期间中断)寄存器,激活0号核使之开始执行。完成之后进入等待。
2)0号核初始化,即CPU类型探测(非龙芯特有)。
3)0号核执行InitSecondary:具体包括CP0(协处理器0)中断掩码设置和Count寄存器校准。校准的参考对象是1号核(代理主核)。
4)0号核计算主频(非龙芯特有)。
5)0号核执行SmpFinish:将本核设置成在线状态,打开本地中断。接下来0号核就正式投入运行了。
6)1号核得到通知后,继续执行自己本职工作,主核开启至此全部完成。
Claims (4)
1.一种龙芯处理器的主核热插拔方法,包括动态关闭主核,其特征在于,所述动态关闭主核包括以下步骤:
1)主核从辅助核心中选定一个核心为代理主核;
2)代理主核通知主核执行角色转换例程并等待主核发送进入可关闭状态通知;
3)主核执行角色转换例程,所述角色转换例程包括将CPU特征数据复制一份给代理主核,外部中断路由设置到代理主核,代理主核成为参考时钟源对象;
4)主核进行任务迁移,主核向代理主核发送进入可关闭状态通知;
5)代理主核关闭主核时钟。
2.根据权利要求1所述的龙芯处理器的主核热插拔方法,其特征在于:所述角色转换例程包括主核将自身设置成离线状态,然后通知所有在线的处理器核暂停运行;主核将CPU特征数据复制一份给代理主核,外部中断路由设置到代理主核,代理主核成为参考时钟源对象;最后主核通知所有在线的处理器核继续运行。
3.根据权利要求1所述的龙芯处理器的主核热插拔方法,其特征在于:所述主核从辅助核心中选定编号最小的一个核心为代理主核。
4.根据权利要求1至3中任意一项所述的龙芯处理器的主核热插拔方法,其特征在于:所述龙芯处理器的主核热插拔方法还包括动态打开核心,所述动态打开核心包括如下步骤:
1)主核执行BootSecondary:主核打开待开启核心的时钟,准备好待开启核心的初始执行入口、初始进程和初始堆栈,设置待开启核心的IPI寄存器,激活待开启核心使之开始执行,并等待待开启核心的通知;
2)待开启核心初始化并执行InitSecondary,所述InitSecondary包括协处理器0中断掩码设置和Count寄存器校准,所述校准的参考对象是主核;
3)待开启核心计算主频;
4)待开启核心执行SmpFinish,所述SmpFinish包括将自身设置成在线状态,通知主核并打开本地中断;
5)主核收到通知后,继续执行自身工作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410586423.6A CN104375881B (zh) | 2014-10-28 | 2014-10-28 | 龙芯处理器的主核热插拔方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410586423.6A CN104375881B (zh) | 2014-10-28 | 2014-10-28 | 龙芯处理器的主核热插拔方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104375881A true CN104375881A (zh) | 2015-02-25 |
CN104375881B CN104375881B (zh) | 2017-11-14 |
Family
ID=52554820
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410586423.6A Active CN104375881B (zh) | 2014-10-28 | 2014-10-28 | 龙芯处理器的主核热插拔方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104375881B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105700975A (zh) * | 2016-01-08 | 2016-06-22 | 华为技术有限公司 | 一种中央处理器cpu热移除、热添加方法及装置 |
CN106708596A (zh) * | 2015-11-13 | 2017-05-24 | 华为技术有限公司 | 一种输入输出虚拟化资源的调整方法及处理器 |
CN110187966A (zh) * | 2019-05-13 | 2019-08-30 | 珠海全志科技股份有限公司 | 一种锁定cpu调度优化的方法、装置、***及程序产品 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070204268A1 (en) * | 2006-02-27 | 2007-08-30 | Red. Hat, Inc. | Methods and systems for scheduling processes in a multi-core processor environment |
CN101414268A (zh) * | 2007-10-15 | 2009-04-22 | 南京大学 | 一种在ARM MPCore处理器上管理处理器热插拔的方法 |
CN102368167A (zh) * | 2011-07-07 | 2012-03-07 | 曙光信息产业股份有限公司 | 一种龙芯cpu的smp功能展示的方法 |
US20120216064A1 (en) * | 2011-02-21 | 2012-08-23 | Samsung Electronics Co., Ltd. | Hot-plugging of multi-core processor |
US20130227326A1 (en) * | 2012-02-24 | 2013-08-29 | Samsung Electronics Co., Ltd. | Apparatus and method for controlling power of electronic device having multi-core |
CN103699444A (zh) * | 2013-12-17 | 2014-04-02 | 华为技术有限公司 | 中央处理器热插拔的实现方法及装置 |
-
2014
- 2014-10-28 CN CN201410586423.6A patent/CN104375881B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070204268A1 (en) * | 2006-02-27 | 2007-08-30 | Red. Hat, Inc. | Methods and systems for scheduling processes in a multi-core processor environment |
CN101414268A (zh) * | 2007-10-15 | 2009-04-22 | 南京大学 | 一种在ARM MPCore处理器上管理处理器热插拔的方法 |
US20120216064A1 (en) * | 2011-02-21 | 2012-08-23 | Samsung Electronics Co., Ltd. | Hot-plugging of multi-core processor |
CN102368167A (zh) * | 2011-07-07 | 2012-03-07 | 曙光信息产业股份有限公司 | 一种龙芯cpu的smp功能展示的方法 |
US20130227326A1 (en) * | 2012-02-24 | 2013-08-29 | Samsung Electronics Co., Ltd. | Apparatus and method for controlling power of electronic device having multi-core |
CN103699444A (zh) * | 2013-12-17 | 2014-04-02 | 华为技术有限公司 | 中央处理器热插拔的实现方法及装置 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106708596A (zh) * | 2015-11-13 | 2017-05-24 | 华为技术有限公司 | 一种输入输出虚拟化资源的调整方法及处理器 |
CN106708596B (zh) * | 2015-11-13 | 2020-02-14 | 华为技术有限公司 | 一种输入输出虚拟化资源的调整方法及处理器 |
CN105700975A (zh) * | 2016-01-08 | 2016-06-22 | 华为技术有限公司 | 一种中央处理器cpu热移除、热添加方法及装置 |
CN105700975B (zh) * | 2016-01-08 | 2019-05-24 | 华为技术有限公司 | 一种中央处理器cpu热移除、热添加方法及装置 |
US10846186B2 (en) | 2016-01-08 | 2020-11-24 | Huawei Technologies Co., Ltd. | Central processing unit CPU hot-remove method and apparatus, and central processing unit CPU hot-add method and apparatus |
CN110187966A (zh) * | 2019-05-13 | 2019-08-30 | 珠海全志科技股份有限公司 | 一种锁定cpu调度优化的方法、装置、***及程序产品 |
Also Published As
Publication number | Publication date |
---|---|
CN104375881B (zh) | 2017-11-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9891928B2 (en) | Propagation of updates to per-core-instantiated architecturally-visible storage resource | |
TWI613588B (zh) | 在核心間同步運作的方法、微處理器及電腦程式產品 | |
CN104216680B (zh) | 微处理器及其执行方法 | |
TWI556109B (zh) | 避免從異常返回時過早致能觸發揭露性中斷 | |
TW201734767A (zh) | 用於使用者等級執行緒暫止的方法、設備及指令 | |
JP6438039B2 (ja) | 装置、方法、コンピュータプログラムおよびコンピュータ可読記憶媒体 | |
US9715403B2 (en) | Optimized extended context management for virtual machines | |
CN104375881A (zh) | 龙芯处理器的主核热插拔方法 | |
US20180357089A1 (en) | Dynamic halt polling control | |
CN104331388B (zh) | 微处理器及在微处理器的处理核间同步的方法 | |
CN104238997B (zh) | 微处理器及其执行方法 | |
CN104598291B (zh) | 一种核电业务***虚拟服务器资源的回收方法及*** | |
JP2016189049A (ja) | 半導体装置及びその制御方法 | |
CN110609713A (zh) | 控制电池进入运输节电模式的实现方法及电子装置 | |
CN109656758A (zh) | 用于异构双处理器***芯片的调试方法及*** | |
CN104239275B (zh) | 多核微处理器及其重新配置方法 | |
CN104360727B (zh) | 微处理器及使用其省电的方法 | |
GB2532777A (en) | System error handling in a data processing apparatus | |
CN107704270B (zh) | 基于二取二架构的μC/OS-II***启动引导方法及装置 | |
CN109165189A (zh) | 微处理器及其配置方法、以及计算机可读存储介质 | |
Chen et al. | Asymmetric virtual machine replication for low latency and high available service | |
CN104331387B (zh) | 微处理器及其配置方法 | |
US7996703B2 (en) | Method and apparatus to avoid power transients during a microprocessor test | |
CN104216861B (zh) | 微处理器及在微处理器中同步处理核的方法 | |
CN104239272B (zh) | 微处理器及其操作方法 |
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 |