西東京市にいる組み込みおやじ-電子工作、回路設計、ファーム TIPS

このブログはビーコンの代表である菅原が、電気電子、電子工作、組み込みソフトウェアなどで、自分が苦労したところや面白い気づきなどを記事にしていきます。電子工作やマイコンに親しむ人が少しでも増えたらという思いでつづります。
やっぱり、電子工作が好きなんですよ。
<< ブラウザBOX レビュー | main | bluetoothキーボードの丸洗い >>
SH-2A マルチタスクとレジスタバンク
0
     こんにちは、ビーコンの菅原です。

    SH-2Aで、ちょっと戸惑ったところがあったのでメモ。

    ルネサスの SH-2Aコアのシリーズは組み込みプロセッサとしては最強なのではと個人的には思っております。
    ひょっとしたら使い慣れていているだけかもしれませんけど。

    SH-2A には、レジスタバンクが15枚あります。レジスタバンクとはZ80などにあった裏レジに近いものですが、これが贅沢にも 15枚もあります。

    これを割り込みがかかったときに、レジスタバンクを自動的に切り替えることにより、レジスタの内容をそっくりそのまま保存することができます。
    通常、割り込み処理では、最初にレジスタの退避、最後にレジスタの復元を行います。
    これが処理能力が高いプロセッサはレジスタの数が多いので、退避時間が馬鹿になりません。さらに SDRAMなどの遅いRAMだと、キャッシュがヒットしなければイチからアクセスしなくてはならないので、復元はともかくレジスタ退避にはとても時間がかかります。
    この面倒な退避、復元の時間がなくなるので、割り込みの応答がかなり高速化し、応答時間のばらつきも少なくなります。

    15枚あるということは、多重割り込み15段までOKということになりますが、割り込み優先レベルが0〜15まであるので、すべての割り込み優先レベルで順番に多重割り込みをかけたときに対応ということになりますね。


    当然コンパイラも対応していないといけないのですが、ルネサスのSH用コンパイラだと #pragma interrupt の末尾に(resbank)をつけてあげます。

    #pragma interrupt funcInterrupt (resbank)

    で、マイコンの設定でレジスタバンクを使う設定にします。

    INTC.IBNR.BIT.BE = 0x01;

    前置きが長くなりましたが、このレジスタバンクはFILO(先入れ後出し)方式です。
    自動的にレジスタを順番に退避するので、プログラマが意識する必要はあません。


    ただし、マルチタスクだと、割り込みがかかったあと、復帰するときに、同じところに戻ってくるとは限らないので、正しく復帰できないことも発生します。

    マニュアルでレジスタバンクを操作できない限り、この機能をマルチタスクで使うことはできません。

    最初にレジスタバンクのことを聞いたときには、15個までのタスクが超高速でタスクスイッチできるのではと期待しましたが、そういうことは無理です。

    --追記 2013年4月17日
    ルネサスのuITRONはレジスタバングに対応しているとのご指摘をいただきました。
    ツイートを掲載します。


    | ビーコン菅原 | Renesas SHマイコン | 12:33 | comments(0) | trackbacks(0) |









    http://blog.suga41.com/trackback/246
     123456
    78910111213
    14151617181920
    21222324252627
    28293031   
    << October 2018 >>
    + RECOMMEND
    + RECOMMEND
    + SELECTED ENTRIES
    + RECENT COMMENTS
    + RECENT TRACKBACK
    + CATEGORIES
    + ARCHIVES
    + つぶやき
    + MOBILE
    qrcode
    + LINKS
    + PROFILE