割り込みが変わる

コンピュータに割り込みがなかったら、というぐらい、重要な機構なのだけど、省エネの必要性から、そのからくりが変わろうとしている。
割り込みは、名前の通り、本来やっている仕事とは無関係に、ほかの仕事が割り込むための仕組みです。いつ何時割り込みがかかるかわからないから、即座に反応しないといけない。また、普通のOSでは、例えば、10msごとにプログラムを優先順位をつけて、順番に動かし、順々に仕事が回るようにしている。
でも、そうすると、CPUは、常に起きないといけない。仕事がほとんどなくても、すぐに起こされる。休みの長いほど、電力消費の少ないモードに入れるのだけど、割り込みがかかれば、起こされる。
CPUが起きなくても、DMAを使うと、データの転送などは、周りのロジックがやってしまうことができる。ある入力があって、512バイトのデータをメモリのどこそこへ収納するといったことは、最初に取り決めておけば、CPUがやらなくても実現できる。
CPUが電気を食うので、仕事がない時には、休ませたい。でも割り込みは、定期的に、不定期にかかってします。でも、ロジックで、割り込み主に対してCPUはあと300usは休んでいるよと伝えることはできる。割り込み主も、500usは待ってもいいよと伝えることができるようになっていれば、CPUが起きたときに、複数のそれら予約された割り込みを一気に片づけて、スリープすることが可能。つまり、CPUをスリープする時間を増やすことができる。
もちろん、そういう取り決めが周辺デバイスを含めて協調できるようになって初めて実現できるようになるのだけど、パソコンでもここ数年で、実装されるようだ。