1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

MIPS 4Kのwaitインストラクション

Last updated at Posted at 2019-07-31

MIPS 4KにはwaitというCPUをsleepさせて省電力を実現するインストラクションがあります。通常のLinuxやFreeBSDではカーネルモードでは使うことなくて、ユーザモードでは使えないインストラクションなはずです。勝手にユーザにCPU止められたら困りますよね。

試しにadm5120で測ってみました。

状態 mA
通常 504
wait 420

adm5120はSwitchなども入っているので、あまり小さくならないのかもしれませんが、ある程度の効果はあるようです。

waitから次の実行に移すには割り込みを上げる必要があります。割込みが上がりハンドラが呼び出された後にwaitの次のインストラクションが実行されます。

mips_wait.png

mruby on YABMではTimerとEthernetの受信割り込みを使っています。Timerは10msでEthernetは随時上がります。

waitを使うためにはEthernetの受信割り込みを止める、またはパケットが入ってこない設定にする、Timerを指定した時間、または長めに指定するなどにする必要があります。

MIPSは1本のTimerで時間も管理しているので、結構厄介です。

ちょっと複雑になるのと効果が薄そうなので、とりあえず実装しないつもりです。

この手の省電力はOSがある場合は使うのが非常に難しいですが、BearMetalの場合には考えれば使いようがあるような気もします。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?