【摘要】:PCIe总线使用的软件电源管理机制与PCI PM兼容。图4-15 Power Management Capability结构Capability ID字段记载Power Management Capability结构的ID号,其值为0x01。该寄存器的结构如图4-16所示,其中PMCR寄存器在Power Management Capability结构的第3~2字节中。系统软件将这个请求处理完毕后,将通知这个PCI设备,之后该PCI设备将PME#信号置为无效。D2位为1表示PCIe设备支持D2状态;D1位为1表示PCIe设备支持D1状态。图4-17 Power Management Status/Control寄存器●Power State字段可读写,该字段记录PCIe设备所处的状态。
PCIe总线使用的软件电源管理机制与PCI PM(Power Management)兼容。而PCI总线的电源管理机制需要使用Power Management Capability结构,该结构由一些和PCI/PCI-X和PCIe总线的电源管理相关的寄存器组成,包括PMCR(Power Management Capabilities Regis-ter)和PMCSR(Power Management Control and Status Register),其结构如图4-15所示。
图4-15 Power Management Capability结构
Capability ID字段记载Power Management Capability结构的ID号,其值为0x01。在PCIe设备中,每一个Capability都有唯一的一个ID号,而Next Capability Pointer字段存放下一个Capability结构的地址。
1.PMCR寄存器
PMCR寄存器由16位组成,其中所有位和字段都是只读的。该寄存器的主要目的是记录当前PCIe设备的物理属性,系统软件需要从PMCR寄存器中获得当前PCIe设备的信息后,才能对PMCSR寄存器进行修改。该寄存器的结构如图4-16所示,其中PMCR寄存器在Power Management Capability结构的第3~2字节中。
图4-16 Power Management Capabilities寄存器
●Version字段只读,记录Power Management Capability结构的版本号。
●PME Clock位只读,该位没有被PCIe总线使用[11],硬件逻辑必须将其接为0。PCI设备可以使用PME#信号通知设备改变电源状态,在PCI总线中,如果PME#信号需要使用时钟(PCI Clock)时,该位为1;否则该位为0。PCI设备改变电源状态时,将PME#信号置为有效,向处理器系统提交请求。系统软件将这个请求处理完毕后,将通知这个PCI设备,之后该PCI设备将PME#信号置为无效。
●RsvdP字段为系统保留字段。
●DSI(Device Specific Initialization)位只读。某些PCIe设备在上电时处于某种工作模式,之后可以通过重新配置运行在其他工作模式中,此时该设备需要使用DSI位表示该设备可以使用自定义的电源工作方式。
●AUX(Auxiliary device)Current字段只读,表示PCIe设备需要使用辅助电源的电流强度。PCIe设备需要使用两种电源,一个是主电源Vcc,另一个是辅助电源Vaux。当PCIe设备进入某种节能状态时,主电源将停止供电,而辅助电源需要继续供电。该字段记录Vaux使用的电流强度,其最大值为375mA,最小值为0,即不使用Vaux。(www.chuimin.cn)
●D2和D1位只读。D2位为1表示PCIe设备支持D2状态;D1位为1表示PCIe设备支持D1状态。PCI PM机制规定PCIe设备可以支持四种状态,分别为D0~D3状态。PCIe设备处于D0状态时的功耗最高,处于D3状态时最低。多数支持电源管理的PCIe设备仅支持D0状态和D3状态,而D1和D2状态可选,有关这四种状态的详细说明见第8.4.1节。
●PME Support字段只读,存放PCIe设备支持的电源状态。第27位为1时,表示PCIe设备处于D0状态时,可以发送PME消息;第28位为1时,表示PCIe设备处于D1状态时,可以发送PME消息;第29位为1时,表示PCIe设备处于D2状态时可以发送PME消息;第30位为1时,表示PCIe设备处于D3hot状态时可以发送PME消息;第31位为1时,表示PCIe设备处于D3cold状态时可以发送PME消息。
2.PMCSR寄存器
系统软件可以通过操作PMCSR寄存器,完成PCIe设备电源状态的迁移。该寄存器的结构如图4-17所示。
图4-17 Power Management Status/Control寄存器
●Power State字段可读写,该字段记录PCIe设备所处的状态。“0b00”与D0状态对应;“0b01”与D1状态对应;“0b10”与D2状态对应;“0b11”与D3状态对应。系统软件改变该字段时,PCIe设备将进行电源状态迁移。
●No_Soft_Reset位只读。如果该位为1,PCIe设备从D3hot状态迁移到D0状态时,并不需要进行内部复位操作,有关PCIe设备配置的现场信息可以由PCIe设备的硬件逻辑保存,此时当设备从D0状态迁移到D3hot状态时,不需要系统软件的干预,其现场由PCIe设备主动保存;而该位为0时,PCIe设备从D3hot状态迁移到D0状态时,需要进行复位操作,因此系统软件在通过改变Power State字段使PCIe设备从D0状态迁移到D3hot状态之前,需要保存PCIe设备的相关上下文,当PCIe设备从D3hot状态迁移到D0状态时,再进行上下文的恢复操作。
●PME Enable位,可读写。该位为1时,PCIe设备可以发送PME消息;如果为0,不可以发出PME消息。当PCIe设备处于D3cold状态不能发送PME消息时,该位由系统软件设为0。支持远程唤醒模式的网卡需要将此位使能。
●Data Select字段可读写,而Data Scale字段和Data字段只读。系统软件通过这组字段,读取PCIe设备处于不同状态时的功耗。首先系统软件置Data Select字段为0~7之间的数值,其中0和4与D0状态对应,1和5与D1状态对应,2和6与D2状态对应,3和7与D3状态对应;之后系统软件读取Data Select和Data字段并以此计算在不同状态下PCIe设备的功耗。其中Data Scale字段记录精度,为0时表示该PCIe设备不支持这组字段[12];为1时表示Data字段的数据需要乘以0.1后,才能到得PCIe设备的功耗,其单位为W;为2时表示Data字段的数据需要乘以0.01;为3时表示Data字段的数据需要乘以0.001。
●PME Status位,该位只读且写1清除,对此位写0无意义。该位为1时表示PCIe设备可以正常发送PME消息,系统软件对此位写1时,将该位清除。该位由硬件逻辑控制,系统软件仅能清除该位,而不能将该位置1。
●PCIe总线没有实现B2/B3Support和Bus Power/Clock Control Enable位。在PCI总线中,Bus Power/Clock Control Enable位为1时使能PCI总线的电源和时钟管理,为0时表示关闭;当Bus Power/Clock Control Enable位为1时,B2/B3Support位才有意义,B2/B3 Support位为1时表示,当PCI桥片处于D3hot状态时,这个桥片将停止为Secondary PCI总线提供时钟;为0时表示,当PCI桥片处于D3hot状态时,将停止为Secondary PCI总线提供电源。
相关推荐