|
本帖最后由 axot 于 2009-4-15 23:42 编辑
C++写的,intel c++编译器,无壳
可以选择3中模式,具体看程序
这个运用其实很广泛,玩游戏开的话能感到明显区别的(读图时间,FPS,PING etc.),缺点就是比较费电xD
中断速率粒度: (转自intel) http://software.intel.com/zh-cn/articles/cpu-power-utilization-on-intel-architectures/
通常操作系统每 10-15.6 毫秒接收一次基于定期计时器的中断。我们不妨看一个示例,其中,应用程序使用 timeSetEvent()API 每隔 32 毫秒播放一段音频,操作系统每 15毫秒接收一次中断。计时器每次滴答时,操作系统都将检查截止时间,在前两次计时器滴答过程中检查时(也就是 30 毫秒后),尚未到达应用程序播放截止时间。在第三次计时器滴答时(45毫秒后),操作系统才发现已过播放截止时间,然后启动播放。此时的问题是,播放时间比应用程序计划时间延迟了 13 毫秒。这表明,计时器中断的时间粒度对定时启动的定期调用有一定影响。
增大中断速率的粒度可以更加精确地提高定期调用的时间线。例如,前面的示例中,由于每毫秒都触发中断,因此播放将在正确时间进行。但是,增加中断速率粒度会大大增加功耗。而且并非所有多媒体内容都需要如此高的中断频率。以下将分析在当前和未来英特尔架构上,如此高的中断频率对睡眠状态和 CPU 功耗的影响。分析中包括若干多媒体应用程序实验,实验表明,对于特定媒体内容,使用默认中断速率仍可保持用户体验和整体性能。
最终结果
下表显示了采用高中断速率和低中断速率(1 毫秒对比 10 毫秒)的多媒体应用程序的最终结果。在所测试的英特尔® 酷睿™双核处理器上,每项的内容并不会大量耗用 CPU 功率。这为各种活动保留了大量扩展空间,同时也反映了使用播放功能并不会消耗大量资源。该表中包括C0/C3 状态保持以及 CPU 平均功耗。%C3Res 包括所有 C3 状态保持以及深层睡眠状态。
每秒帧数和音频/视频同步可用来衡量用户体验。对这些因素的任何影响都将反映用户体验下降。通过我们已测试的内容,我们发现,当中断速率降低至 10 毫秒时,用户体验并未发生明显变化。
应用 | %C0 | %C3Res | 每秒中断次数 | 平均功率 | 内容 | 多媒体插件 1*:
1 毫秒 | ~25% | ~75% | ~1087 | 1.24 瓦 | 在线广告 | 多媒体插件 1*:
10 毫秒 | ~10% | ~90% | ~71 | 1.10 瓦 | 多媒体插件 2*:
1 毫秒 | ~36% | ~64% | ~1110 | 1.84 瓦 | 640x248,电影花絮 | 多媒体插件 2*:
10 毫秒 | ~20% | ~80% | ~80 | 1.32 瓦 | 多媒体插件 3*:
1 毫秒 | ~57% | ~43% | ~1035 | 2.788 瓦 | 1280x720,高清电影 | 多媒体插件 3*:
10 毫秒 | ~47% | ~53% | ~65 | 2.45 瓦 | 随着中断频率从 1 毫秒降低到 10 毫秒,C3 状态保持明显上升,C0 状态保持明显下降。其结果是节约了大量的 CPU 能耗,最大节约 0.5W,这取决于内容和应用程序。在未来的架构中,预期节能将大大增长。
结论- 中断速率会大大影响深层睡眠保持和 CPU 能耗。在未来的平台中,预期能耗损失将大大增长。
- 许多多媒体播放应用程序采用非常高的中断速率(1 毫秒)。
- 根据内容的不同,可以在降低中断速率的同时保持原有的用户体验,从而节约了 CPU 功耗。
- 建议仅当媒体内容绝对需要时才使用高中断速率(1 毫秒)。
- 许多应用程序中都创建了粘着中断,也就是说即使内容播放完成后仍保持中断。此类粘着中断降低空闲期间的睡眠状态保持。建议一旦完成播放后,立即关闭高中断速率。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?注个册吧
×
|