一种基于龙芯处理器平台的待机方法技术

技术编号:7496303 阅读:186 留言:0更新日期:2012-07-10 20:45
本发明专利技术公开了一种基于龙芯处理器平台的待机方法,其过程包括以下步骤:1)冻结进程;2)外设停止工作;3)关闭外设电源;4)关闭辅核;5)保存主核执行上下文;6)主核执行操作进入待机状态;7)恢复主核执行上下文;8)开启辅核;9)开启外设电源;10)外设开始工作;11)恢复进程。本发明专利技术方法不需要ACPI表来动态维护大量的信息,BIOS和操作系统都变得易于实现,健壮性好,不易有隐含的各种缺陷;本发明专利技术待机功能只需要和BIOS进行一次交互,因此高效。

【技术实现步骤摘要】

本专利技术涉及一种待机方法,特別是ー种基于龙芯处理器平台的待机方法
技术介绍
电源管理是计算机操作系统的ー个重要组件,其根本目的是节能并且不影响性能。这在通过电池供电的笔记本电脑、平板电脑等设备上显得尤为重要。通常来说,电源管理的方法策略主要包括三个方面运行时电源管理,待机管理,以及休眠管理。ACPI (Advanced Configuration Power Interface, , ^ρ )源管理规范,其实现需要软件、硬件和固件的高度协作配合。图1是ACPI所定义的各种电源状态,详细解释如下1,睡眠状态与全局状态睡眠状态中的计算机具有很低的功耗,可以接近于零。 ACPI定义了 6中睡眠状态,SO S5,值越大睡眠越深,SO是正常运行,S5是软关机。另外还定义了 GO G3四种全局状态,其中GO对应SO,Gl对应Sl到S4,G2对应S5,G3是彻底的硬关机,切断一切电源。2,CPU状态与设备状态当CPU或者I/O设备空闲时,可以让它们单独进入某种程度的低功耗状态或者停止运行的电源状态。而这时整个系统还是处于so。这些状态在 ACPI里面称为C状态(也称Cx或C-Mate,用于CPU)或D状态(也称Dx或Dltate,用于设备),从C0/D0直到Cn/Dn,η越大表示关闭的子部件越多,功耗越低。3,性能状态在系统的负载不是很高吋,可以让CPU或设备处于低于峰值的某种较低性能状态,较低的性能也意味着较低的功耗。ACPI定义的性能状态称为P状态(也称 Px或P-Mate),从PO直到Ρη,η越大表示性能和功耗越低。所有的P状态都是C0/D0的子状态。4,发热状态当系统出现过热状态时,可以改变系统状态减少发热(被动散热), 或者开启风扇等设备进行散热(主动散热)。被动散热可以通过调节P状态实现(这种方式叫TM2),如果到了功耗最低的P状态仍然不够,可以调节T状态(屏蔽部分时钟周期)进一歩降低功耗(这种方式叫TMl),从TO到Τη,η值越大功耗越低。待机是ー种电源管理方法,它让系统在空闲时候进入ー种可以快速唤醒的睡眠状态,功耗很低。待机也叫Suspend To RAM(挂起到内存,简称STR),对应ACPI S3。其特征如下CPU和外设全部断电,内存供电但处于低耗能的自刷新状态(内容保持不变)。功耗为开机状态的左右,唤醒时间5 8秒。可以通过电源按键唤醒。待机在基于X86处理器的平台早有实现。X86的待机功能严重依赖于ACPI,需要支持ACPI的硬件、ACPI感知的BIOS以及ACPI感知的操作系统。龙芯平台与X86平台有着较大的差异,其BIOS和操作系统不是ACPI感知的。因此,为了节省电能,延长笔记本电脑的电池续航时间,本专利技术具有十分重要的意义。
技术实现思路
3本专利技术所要解决的技术问题是提供一种基于龙芯处理器平台精简而高效的待机方法。为了解决上述的技术问题,本专利技术的技术方案是,其包括以下步骤1)冻结进程;2)外设停止工作;3)关闭外设电源;4)关闭辅核;5)保存主核执行上下文;i.调整堆栈指针,留出ー个栈帧来保存上下文;ii.将1 7号通用寄存器保存到栈帧;iii.将16 23号通用寄存器保存到栈帧;iv.将沈 31号,除四号寄存器外的其他通用寄存器保存到栈帧;v.将协处理0的寄存器保存到栈帧;6)主核执行操作进入待机状态i.将堆栈指针的当前值写入非易失性存储器;ii.将唤醒入口地址写入非易失性存储器;iii.刷回并无效化ー级高速缓存;iv.刷回并无效化ニ级高速缓存;v.通过BIOS调用接ロ,将控制权转交给BIOS ;vi. BIOS将内存设置成自刷新模式;vii. BIOS通知EC关闭除内存以外所有部件的电源;7)恢复主核执行上下文i.从栈帧恢复协处理0的部分寄存器;ii.从栈帧恢复1 7号通用寄存器;iii.从栈帧恢复16 ぬ号通用寄存器;iv.从栈帧恢复沈 31号,除四号寄存器外的其他通用寄存器;v.调整堆栈指针,丢弃没有用处的栈帧;8)开启辅核;9)开启外设电源;;10)外设开始工作;11)恢复进程。这里主核是指编号为0的CPU核,也叫启动处理器(Bootstrap Processor,简称 BP);辅核是指编号不为0的CPU核,也叫辅助处理器(Auxiliary I^rocessor,简称AP)。X86平台上的待机功能实现比较复杂,因为其BIOS和操作系统必须是ACPI感知的。ACPI感知的BIOS包含若干个ACPI表,这些表里面有大量的ACPI代码,就待机功能来说,这些ACPI代码主要实现的功能有定义电源管理寄存器、定义ー些电源管理对象 (如判断S3功能是否可用)、定义唤醒入口地址的保存场所、定义操作系统调用的BIOS接ACPI感知的操作系统需要有解析ACPI表和执行BIOS调用接ロ的功能。本专利技术采取的是ー种精简而高效的方法唤醒入口地址使用固定的保存场所,对操作系统只需要开放唯一一个BIOS调用接ロ,因此BIOS不需要冗长的ACPI代码,操作系统也不需要复杂的ACPI子系统。关键的技术点是如何保存唤醒入口地址、如何让操作系统内核与BIOS能够在内存中共存以及开放什么样的BIOS接ロ。本专利技术具有以下优点1.精简而易于实现。龙芯平台的待机功能使用固定的操作方式,因而不需要ACPI表来动态维护大量的信息。也正因为如此,BIOS和操作系统都变得易于实现,健壮性好,不易有隐含的各种缺陷。2.高效而执行快捷。如果是基于ACPI的待机实现,其执行过程中多数步骤(尤其是对设备的操作)都有操作系统和BIOS的交互,这些交互让执行过程变得缓慢。龙芯平台的待机功能只需要进行一次交互,因此高效。附图说明下面结合附图和具体实施方式对本专利技术作进ー步详细的说明。图1是ACPI状态关系图;图2是待机的执行流程图。具体实施例方式本专利技术所采用的硬件平台(处理器)是龙芯3A,软件平台(操作系统)是Linux 内核,版本为2. 6. 36,但本专利技术不限于龙芯3A的硬件平台。本专利技术待机方法如图2所示,其具体步骤是1)冻结进程;2)外设停止工作;3)关闭外设电源;4)关闭辅核;5)保存主核执行上下文;i.调整堆栈指针(SP寄存器),目的是留出一个栈帧来保存上下文;ii.将1 7号通用寄存器(用于汇编器的AT寄存器、用于存放函数返回值的V 系列寄存器以及用于存放函数參数的A系列寄存器)保存到栈帧;iii.将16 23号通用寄存器(函数调用时需要调用者保存的S系列寄存器)保存到栈帧;iv.将沈 31号通用寄存器(内核专用的K系列寄存器、全局指针GP,帧指针FP 和返回地址RA寄存器)保存到栈帧,但四号寄存器(堆栈指针SP)除外;v.将协处理0的部分寄存器(状态寄存器、配置寄存器、上下文寄存器和页面掩码寄存器等)保存到栈帧;6)主核执行操作进入待机状态i.将堆栈指针的当前值写入非易失性存储器;ii.将唤醒入口地址写入非易失性存储器;iii.刷回并无效化ー级高速缓存(Li Cache);iv.刷回并无效化ニ级高速缓存(L2 Cache);v.通过BIOS调用接ロ,将控制权转交给BIOS ;vi. BIOS将内存设置成自刷新模式;vii. BIOS通知EC(嵌入式控制器)关闭除内存以外所有部件的电源;7)恢复主核执行上下文i.从栈帧本文档来自技高网
...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:吴少刚陈华才
申请(专利权)人:江苏中科梦兰电子科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术