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

Takayuki WAKABAYASHI takayuki @ ertl.ics.tut.ac.jp
2002年 1月 28日 (月) 21:40:40 JST


はじめまして。
豊橋技術科学大学の若林です。

Shigemitu Takata さんは書きました:
 >   CPU ロックの実装について、Toppers ではどのように扱えばよいのでしょうか。

mITRON4.0仕様の定義から言うと、現在実行している処理が最高優先度であるかの
ように振舞うような設定をする必要があります。TOPPERS/JSPでは、CPUロックを
どうするかは実装依存部のポリシーで決まります。多くの依存部では、割込み
制御でCPUロックを実現しています。

具体的には、TOPPERS/JSPにおけるCPUロックは依存部によって2種類あります。
 #今は2つしかないですが、下の2つに限定するものではありません

 a) NMI以外すべての割込みをカーネル管理下に置く場合
     現在のJSP依存部の多くはこの場合に当てはまります。NMIは禁止でき
     ないので、カーネルの管理外としています。

 b) 特定の要因だけカーネルに拾わせたくない場合
     ARM依存部がこれに当てはまります。ARMはIRQとFIQという2種類の
     割込みを持っていますが、FIQは高速割込み用であるため、TOPPER
     S/JSP-ARMではFIQハンドラに余計なオーバヘッドをかけないために、
     FIQをカーネル管理外としています。そのため、CPUロック状態で
     あってもFIQは禁止にしていません。
      #全禁止してはいけません

他の依存部と同じにするのであれば、NMIはカーネル管理外であるとドキュメントに
明記し、単純な割込み禁止で実装すれば完成です。MIPSは詳しくないのですが、
多分ステータスレジスタ(CP0-12)の最下位ビット(IE)を0にすればいいと思います。

拾わせたくない要因がある場合、それ以外をマスクすれば完成です。この場合、
ステータスレジスタ(CP0-12)のビット[15:8](IM)を適切な値にするか、割込み
コントロールユニットの割込みマスクレジスタ(MxxxREG)を適切な値にすることで
実現できると思います。

Shigemitu Takata さんは書きました:
 >   Toppers での CPU ロック状態と言うのは 割り込み不可状態の事なのでしょうか?

「TOPPERS/JSPのCPUロック状態 = カーネル管理内割込みの禁止」だと認識しています。
ただ、実装方法によっては、割込みを禁止しなくてもよい場合もあります。
 #オーバヘッドが大きそうですが...

割込みの出入口処理とCPUロック状態に関しては、多分ほとんどの依存部がCPUロック状態
だと思います。少なくとも、V850は入口/出口の一部が割込み禁止で動作し、
かつCPUロックかどうかを割込み禁止ビットで見ているため、事実上CPUロック状態です

以上 参考になれば幸いです。

+----------------------------------------------+
| Takayuki WAKABAYASHI (わかばやし たかゆき)   |
|  mailto: takayuki @ ertl.ics.tut.ac.jp         |
+----------------------------------------------+
| 豊橋技術科学大学 工学研究科 電子情報工学専攻 |
|   組込みリアルタイムシステム研究室           |
+----------------------------------------------+