发明内容
本发明所要解决的技术问题是提供一种中央处理器工作状态和睡眠状态切换的方法和装置,用以通过降低功耗,有效延长网络通信终端待机和使用的时间。
为了解决上述问题,本发明公开了一种中央处理器工作状态和睡眠状态切换的方法,其特征在于,所述方法包括:
当预设时间内中央处理器未接收到操作信号时,保存关键信息到同步动态随机存储器;所述关键信息包括中央处理器及与中央处理器交互的各模块在各模式下的寄存器的配置和恢复状态函数;该恢复状态函数用于恢复中央处理器及与中央处理器交互的各模块的寄存器的配置;
保存恢复状态函数的入口地址到中央处理器的电源管理子模块;
同步动态随机存储器进入自刷新模式;
断开中央处理器中除电源管理子模块外的其他子模块以及与中央处理器交互的各模块的时钟和电源;
当中央处理器接收到操作信号时,接通中央处理器及与中央处理器交互的各模块的时钟和电源;
同步动态随机存储器退出自刷新模式;
根据恢复状态函数的入口地址获取恢复状态函数;
执行所获取的恢复状态函数以恢复中央处理器及与中央处理器交互的各模块的寄存器断电前的配置。
优选的,所述与中央处理器交互的模块包括同步动态随机存储器的控制器模块、固态存储器控制器模块、音频模块和视频模块。
优选的,所述中央处理器包括PC寄存器子模块和栈指针子模块。
优选的,所述模式包括普通模式、办公模式、会议模式和户外模式。
优选的,所述保存关键信息到同步动态随机存储器具体包括以下子步骤:
保存当前模式下中央处理器及与中央处理器交互的各模块的寄存器的配置到同步动态随机存储器;
依次切换其他各模式,并分别将各模式下中央处理器及与中央处理器交互的各模块的寄存器的配置保存到同步动态随机存储器;
保存恢复状态函数至同步动态随机存储器。
优选的,所述执行所获取的恢复状态函数具体包括以下子步骤:
获取中央处理器及与中央处理器交互的各模块各模式下寄存器的配置;
按所获取的配置,对各模式下的中央处理器及与中央处理器交互的各模块的寄存器的配置进行恢复。
本发明还公布了一种中央处理器工作状态和睡眠状态切换的装置,所述装置包括:
第一保存单元,用于当预设时间内中央处理器未接收到操作信号时,保存关键信息到同步动态随机存储器;所述关键信息包括中央处理器及与中央处理器交互的各模块各模式下寄存器的配置和恢复状态函数;该恢复状态函数用于恢复中央处理器及与中央处理器交互的各模块的寄存器的配置;
第二保存单元,用于保存恢复状态函数的入口地址到中央处理器的电源管理子模块;
第一配置单元,用于配置同步动态随机存储器进入自刷新模式;
第一处理单元,用于断开中央处理器中除电源管理子模块外的其他子模块以及与中央处理器交互的各模块的时钟和电源;
第二处理单元,用于当中央处理器接收到操作信号时,接通中央处理器及与中央处理器交互的各模块的时钟和电源;
第二配置单元,用于配置同步动态随机存储器退出自刷新模式;
获取单元,用于根据恢复状态函数的入口地址获取恢复状态函数;
执行单元,用于执行所获取的恢复状态函数以恢复中央处理器及与中央处理器交互的各模块的寄存器断电前的配置。
优选的,所述第一保存单元具体包括以下子单元:
第一保存子单元,用于保存当前模式下中央处理器及与中央处理器交互的各模块的寄存器的配置到同步动态随机存储器;
第二保存子单元,用于依次切换其他各模式,并分别将各模式下中央处理器及与中央处理器交互的各模块的寄存器的配置保存到同步动态随机存储器;
第三保存子单元,用于保存恢复状态函数至同步动态随机存储器。
优选的,所述执行单元具体包括以下子单元:
第一执行子单元,用于获取中央处理器及与中央处理器交互的各模块各模式下寄存器的配置;
第二执行子单元,用于按所获取的配置,对各模式下的中央处理器及与中央处理器交互的各模块的寄存器的配置进行恢复。
与现有技术相比,本发明具有以下优点:
本发明在检测到预设时间内未出现操作信号时,通过将中央处理器及与中央处理器交互的各模块各模式下寄存器的配置和恢复状态函数保存到同步动态随机存储器,并将恢复状态函数的入口地址到中央处理器的电源管理子模块,配置同步动态随机存储器进入自刷新模式,并断开中央处理器中除电源管理子模块外的其他子模块,以及,与中央处理器交互的各模块的时钟和电源,进入睡眠状态,当接收到操作信号时,接通中央处理器及与中央处理器交互的各模块的时钟和电源,配置同步动态随机存储器退出自刷新模式,根据恢复状态函数的入口地址获取恢复状态函数,执行所获取的恢复状态函数,以进入睡眠状态前的前的工作状态,既较大程度的节省电量,又不至于影响响应时间,极大的方便了用户的使用。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
图1示出了本发明的一种中央处理器工作状态和睡眠状态切换的方法流程图,所述方法具体包括步骤S101~S108。
在本实施例中,详细介绍一种中央处理器工作状态和睡眠状态切换的方法和装置,其中,所谓工作状态,也称normal状态,指时钟和电源都打开,中央处理器正常执行指令。实际应用中,工作状态又包括有操作信号和无操作信号两种情况。所述的中央处理器应用在各种SoC(System on Chip,片上系统)中,具体的应用于如手机、笔记本电脑、台式电脑、车载电脑、POS机、个人数字助理(PDA,Personal Digital Assistant)等网络通信终端。
步骤S101,当预设时间内中央处理器未接收到操作信号时,保存关键信息到同步动态随机存储器;
所述中央处理器在运行中需完成数据或指令传输、逻辑运算等任务,这些任务的完成中必然需与其他模块进行交互。所谓的交互即指中央处理器与其他模块之间进行指令或数据信息的交互通信。实际中,与中央处理器交互的模块包括同步动态随机存储器的控制器模块、固态存储器控制器模块、音频模块和视频模块。不同任务的完成需要中央处理器交互的模块也不尽相同,中央处理器还可能需与定时器模块和\或中断器模块等交互。因此,与中央处理器交互的模块还可以包括定时器模块和\或中断器模块。
当中央处理器处于工作状态时,实时的对其进行检测,当检测到中央处理器预设时间内未接收到操作信号时,保存关键信息到同步动态随机存储器。所述的关键信息具体来说包括中央处理器及与中央处理器交互的各模块在各模式下的寄存器的配置和恢复状态函数。寄存器的配置包括时钟的配置和任务的指针等信息。
实际应用中,检测的方式可根据具体情况进行选择,可以采用实时检测的方式;如不采用实时检测,也可以是每隔一段时间作检测,例如每一秒检测一次。
优选的,所述模式包括普通模式、办公模式、会议模式和户外模式。
对于不同的网络通信终端来说,为了满足不同的应用需求会存在多种模式,常见的模式如普通模式、办公模式、会议模式和户外模式。在某些网络通信终端中还会有住宅模式、车内模式等等。
优选的,所述步骤S101具体包括以下子步骤:
步骤S11,保存当前模式下中央处理器及与中央处理器交互的各模块的寄存器的配置到同步动态随机存储器;
步骤S12,依次切换其他各模式,并分别将各模式下中央处理器及与中央处理器交互的各模块的寄存器的配置保存到同步动态随机存储器;
步骤S13,保存恢复状态函数至同步动态随机存储器。
优选的,所述中央处理器包括程序计数器(PC,progammer counter)寄存器子模块和栈指针子模块。
首先,保存当前模式下中央处理器以及与中央处理器交互的各模块的寄存器的配置到同步动态随机存储器。具体的,如保存当前模式下中央处理器所运行的线程的栈指针子模块的配置start_stack到同步动态随机存储器的指定的第一内存空间sdram_reserved1中;PC寄存器子模块的配置保存到同步动态随机存储器的指定的第二内存空间sdram_reserved2中;中央处理器中其他子模块的寄存器的配置保存到同步动态随机存储器的指定的第三内存空间sdram_reserved3中;并将与中央处理器交互的其他各模块的寄存器的配置保存到同步动态随机存储器的指定的第四内存空间sdram_reserved4中。然后依次切换其他各模式,并分别将各模式下中央处理器及与中央处理器交互的各模块的寄存器的配置保存到同步动态随机存储器中的指定位置,同时,将恢复状态函数保存至同步动态随机存储器中的指定位置。所述恢复状态函数记录有:中央处理器及与中央处理器交互的各模块在各模式下的寄存器配置在同步动态随机存储器中的保存位置,其用于恢复中央处理器及与中央处理器交互的各模块的寄存器配置。运行恢复状态函数时,按照保存位置获取中央处理器及与中央处理器交互的各模块的寄存器配置的信息,进而完成对中央处理器及与中央处理器交互的各模块的寄存器配置的恢复。
步骤S102,保存恢复状态函数的入口地址到中央处理器的电源管理子模块;
所述的恢复状态函数保存在同步动态随机存储器中,这里的恢复状态函数的入口地址保存于中央处理器的电源管理子模块中。该恢复状态函数的入口地址也可理解为恢复状态函数的寻址地址,按照该入口地址可以准确查找到恢复状态函数。
步骤S103,同步动态随机存储器进入自刷新模式;
同步动态随机存储器进入自刷新模式后,不需要外部的时钟供给,其自身维持在一个低功耗状态的睡眠状态,并且其内部的数据信息不会丢失,本实施例中,配置同步动态随机存储器进入自刷新模式,确保存储在其内部的寄存器的配置和恢复状态函数等信息不丢失。
步骤S104,断开中央处理器中除电源管理子模块外的其他子模块以及与中央处理器交互的各模块的时钟和电源;
通过断开中央处理器的大部分模块以及与中央处理器交互的各模块的时钟和电源,使中央处理器进入睡眠状态。其中,电源管理子模块在中央处理器进入睡眠状态的时不断电源和时钟,故其内部数据和配置在状态变化的过程中不会改变,所以保存在其内部的恢复状态函数的入口地址不会丢失。
步骤S105,当中央处理器接收到操作信号时,接通中央处理器及与中央处理器交互的各模块的时钟和电源;
步骤S106,同步动态随机存储器退出自刷新模式;
步骤S107,根据恢复状态函数的入口地址获取恢复状态函数;
步骤S108,执行所获取的恢复状态函数以恢复中央处理器及与中央处理器交互的各模块的寄存器断电前的配置。
当接收到操作信号时,首先,接通中央处理器及与中央处理器交互的各模块的时钟的电源,具体实现中,中央处理器通过执行引导程序(例如Bootloader)完成自身的启动。其中,引导程序是指中央处理器刚加电时运行的第一段代码,一般以固件(firmware)的形式存在于SoC中,所谓firmware一般是指设备内部保存的设备“驱动程序”。所述的操作信号,实质上是一个唤醒(wake up)信号,用于将中央处理器从睡眠状态中唤醒转到工作状态。然后,配置同步动态随机储存器退出自刷新模式。并且从中央处理器的电源管理子模块中读取恢复状态函数的入口地址,根据入口地址可以获取到恢复状态函数,通过运行恢复状态函数完成睡眠状态到工作状态的转换。基于恢复状态函数清楚的记录了睡眠状态前中央处理器及与中央处理器交互的各模块在各模式下的寄存器配置的保存位置的具体信息,因此,运行该恢复状态函数能够使中央处理器及与中央处理器交互的各模块直接恢复到睡眠状态前的工作状态,既较大程度的节省电量,又不至于影响响应时间,极大的方便了用户的使用。
优选的,所述步骤S108具体包括以下子步骤:
步骤S21,获取中央处理器及与中央处理器交互的各模块各模式下寄存器的配置;
步骤S22,按所获取的配置,对各模式下的中央处理器及与中央处理器交互的各模块的寄存器的配置进行恢复。
执行恢复状态函数的具体实现方法包括:获取中央处理器及与中央处理器交互的各模块在各模式下寄存器的配置,并且按所获取的配置,对各模式下的中央处理器及与中央处理器交互的各模块的寄存器的配置进行恢复,使其恢复至睡眠状态前的工作状态。
图2示出了本发明一种中央处理器工作状态和睡眠状态切换的装置结构图,所述装置包括:
第一保存单元201,用于当预设时间内中央处理器未接收到操作信号时,保存关键信息到同步动态随机存储器;所述关键信息包括中央处理器及与中央处理器交互的各模块各模式下寄存器的配置和恢复状态函数;该恢复状态函数用于恢复中央处理器及与中央处理器交互的各模块的寄存器的配置;
第二保存单元202,用于保存恢复状态函数的入口地址到中央处理器的电源管理子模块;
第一配置单元203,用于配置同步动态随机存储器进入自刷新模式;
第一处理单元204,用于断开中央处理器中除电源管理子模块外的其他子模块以及与中央处理器交互的各模块的时钟和电源;
第二处理单元205,用于当中央处理器接收到操作信号时,接通中央处理器及与中央处理器交互的各模块的时钟和电源;
第二配置单元206,用于配置同步动态随机存储器退出自刷新模式;
获取单元207,用于根据恢复状态函数的入口地址获取恢复状态函数;
执行单元208,用于执行所获取的恢复状态函数以恢复中央处理器及与中央处理器交互的各模块的寄存器断电前的配置。
优选的,所述第一保存单元201具体包括以下子单元:
第一保存子单元2011,用于保存当前模式下中央处理器及与中央处理器交互的各模块的寄存器的配置到同步动态随机存储器;
第二保存子单元2012,用于依次切换其他各模式,并分别将各模式下中央处理器及与中央处理器交互的各模块的寄存器的配置保存到同步动态随机存储器;
第三保存子单元2013,用于保存恢复状态函数至同步动态随机存储器。
优选的,所述执行单元208具体包括以下子单元:
第一执行子单元2081,用于获取中央处理器及与中央处理器交互的各模块各模式下寄存器的配置;
第二执行子单元2082,用于按所获取的配置,对各模式下的中央处理器及与中央处理器交互的各模块的寄存器的配置进行恢复。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上对本发明所提供的一种中央处理器工作状态和睡眠状态切换的方法和装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。