(toppers-users 3245) Re: 割込みベクタからハンドラ起動までの時間の変化

hirose @ soundnet.yamaha.co.jp hirose @ soundnet.yamaha.co.jp
2010年 10月 6日 (水) 16:34:46 JST


ヤマハの広瀬です。

やはり一般論ですが、5usを気にするような場合、外部メモリはI/Oだ、という
認識でいた方がいいと思います。高田先生がおっしゃるように、キャッシュシ
ステムがあるとメモリアクセスの時間は予測不能になります。それ以外にも外
部メモリはDMAなどでバスを奪われがちなので、厳しいタイミングが必要なとき
はできるだけレジスタのみで処理を行い、メモリが必要な時もCPUが内蔵する
内部メモリ(もしあれば)を使うというのが常套手段かと思います。

もちろん、タイミングが厳しいところは全部アセンブラで書いてますよね。Cで
書いていた場合、コードを少し変えただけで最適化の条件が狂ってステップ数
が大きく変わることがあります。

まずは、今、得ている5usという時間を、「ベクタジャンプからハンドら実行ま
で」のステップ数とCPUクロックから計算できる値と比較してみましょう。

>From: Hiroaki TAKADA <hiro @ ertl.jp>
>Date: Wed, 06 Oct 2010 15:55:18 +0900

> Kota Wadaさん
> 
> 以下の回答は一般論です。
> 
>> ベクタジャンプからハンドラ実行までの時間が
>> 何らかの要因によって変化することがありうるのでしょうか。
> 
> まず、ソフトウェアで変化する要因がないこと(言い換えると、
> カーネルの割込み入口処理の中に条件分岐がないこと)を確認
> ください。
> 
> これがなければ、次はハードウェア要因で変化することがある
> かどうかです。例えば、キャッシュを持つプロセッサで、割込
> みの入口処理をキャッシュされる領域に置くと、明らかに変化
> します。他の要因については、プロセッサメーカにも聞かない
> と確定できないと思います。
> 
> ところで、「ベクタジャンプからハンドラ実行まで」と書かれ
> ていますが、実際は、割込み禁止によりベクタジャンプまでが
> 遅れるのが心配ですが、それは問題ないのでしょうか?
> 
> 高田広章
> 名古屋大学
> 
> (10/10/06 15:28), kouta wada wrote:
>> コニカミノルタセンシング派遣のKota Wadaと申します。
>> 
>> TOPPERS/ASPをR32Cへ移植しました。
>> (M32C-HEWをR32C用に変更しました)
>> 
>> 【質問】
>> タイマ設定〜ハンドラ実行まで
>> 設定した時間+5usかかります。
>> 
>> 割込みベクタジャンプから、
>> 割込みハンドラが実行されるまでに
>> ほぼ5usかかることがわかりました。
>> 
>> なるべく精密な時間計測が必要です。
>> 
>> このズレを解消するために、
>> あらかじめ5us短い時間を設定することを考えていますが
>> この5usという時間が変動しないことが条件です。
>> 
>> ベクタジャンプからハンドラ実行までの時間が
>> 何らかの要因によって変化することがありうるのでしょうか。
>> 
>> ※ただし、多重割り込みが発生した場合は
>> 明らかに遅れることがわかりますので、
>> その点は除かせていただきます。
>> 
>> 以上、よろしくお願いします。
>> 
> 
>