(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という時間が変動しないことが条件です。
>>
>> ベクタジャンプからハンドラ実行までの時間が
>> 何らかの要因によって変化することがありうるのでしょうか。
>>
>> ※ただし、多重割り込みが発生した場合は
>> 明らかに遅れることがわかりますので、
>> その点は除かせていただきます。
>>
>> 以上、よろしくお願いします。
>>
>
>