MIPS 4Kのwaitインストラクション
MIPS 4KにはwaitというCPUをsleepさせて省電力を実現するインストラクションがあります。通常のLinuxやFreeBSDではカーネルモードでは使うことなくて、ユーザモードでは使えないインストラクションなはずです。勝手にユーザにCPU止められたら困りますよね。
試しにadm5120で測ってみました。
状態 | mA |
---|---|
通常 | 504 |
wait | 420 |
adm5120はSwitchなども入っているので、あまり小さくならないのかもしれませんが、ある程度の効果はあるようです。
waitから次の実行に移すには割り込みを上げる必要があります。割込みが上がりハンドラが呼び出された後にwaitの次のインストラクションが実行されます。
mruby on YABMではTimerとEthernetの受信割り込みを使っています。Timerは10msでEthernetは随時上がります。
waitを使うためにはEthernetの受信割り込みを止める、またはパケットが入ってこない設定にする、Timerを指定した時間、または長めに指定するなどにする必要があります。
MIPSは1本のTimerで時間も管理しているので、結構厄介です。
ちょっと複雑になるのと効果が薄そうなので、とりあえず実装しないつもりです。
この手の省電力はOSがある場合は使うのが非常に難しいですが、BearMetalの場合には考えれば使いようがあるような気もします。
Author And Source
この問題について(MIPS 4Kのwaitインストラクション), 我々は、より多くの情報をここで見つけました https://qiita.com/yamori813/items/1762e38e2ecf4e0a7d13著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .