(toppers-users 360) Re: Toppers CPU ロック状態について

TAKADA Hiroaki hiro @ ertl.ics.tut.ac.jp
2002年 1月 31日 (木) 13:29:25 JST


CPUロックに関して、もう2つコメントします。

高田さん wrote:
>  ここに関して、各 CPU のソースをチェックしたのですが、CPU の割り込みマ
> スクビットで CPU ロック状態を検査しているけれど、割り込み許可ビット(MIPS 
> では CP0 $12 IEc にあたり、SH3 では ステータスレジスタの BL にあたると思
> います ) では判定していない実装があります。

MIPS については知りませんが、SH3 の BLビットは、割込み禁止とは考えない
方がよいと思います。BLビットを立てると、割込みだけでなく、例外まで禁止
されます。BLビットは、CISCプロセッサであればハードウェア的に不可分で実
行する処理をソフトウェアで書くために、一時的にすべてを止めてしまうため
のものだと思います。そのため、BLビットはカーネル内で使うべきもので、BL
ビットをセットしたままユーザプログラムを実行するのはお勧めできません 
(もちろん、そのような最適化を否定はしませんが)。JSPカーネルでも、割込
みハンドラへ飛ぶ前にBLビットを落としています。

若林君 wrote:
> ここまで書いていて気づいたのですが、「割込み禁止 = CPUロック状態」という
> 実装で一番厄介なケースが割込みハンドラ内のソフトウェア例外要求です。

ここの記述は間違っています。ソフトウェア例外は、「例外」であって、「割
込み」ではないと考えて下さい。

μITRON4.0仕様では、3.3.1節の最初の段落にあるように、「外部割込み」の
ことを単に「割込み」と書いています。「例外」は「外部割込み」ではありま
せんので、CPUロック状態であっても発生します (というよりも、発生を止め
られない)。3.4.2節の最後の文からもわかると思いますが、CPUロック状態で
も「CPU例外ハンドラ」は起動されます。

高田広章
豊橋技術科学大学