こんにちは。NoMaYです。RXv3コア搭載の120MH動作のRXマイコンも、RX66T以降、RX671、RX66N、RX660と品種が増えてきましたが、RXv3コアのセールスポイントの1つであるレジスタ一括退避機能の使い方が今ひとつピンと来ません。そこで、いつものように、ちょっと好奇心からスレッドを立ててみました。(注: RX66Tは、160MHz動作、レジスタ一括退避機能未搭載、です。) いつものように、ぼちぼちと続きます。ホワイトペーパー卓越したMCU性能と電力効率を実現するRXv3コア2019年10月www.renesas.com/jp/ja/document/whp/introducing-rxv3-core-superior-performance-excellent-power-efficiency#page=6「割り込み応答時間の改善モータ制御システムなどは、高速な割り込み処理によるリアルタイム性能が必要となってきます。RXv3コアには、割り込み処理時にレジスタを高速退避/復帰するために、オプション機能として、レジスタ退避バンクと呼ばれる専用メモリを実装しています。図6に示すように、レジスタ退避バンクを使用することで割り込み応答時間を短縮でき、割り込み処理全体の時間を短縮することができます。 割り込み処理ルーチンの中で、SAVE命令を使用すると汎用レジスタとアキュムレータを1クロックで専用メモリに保存できます。RSTR命令は、保存されたレジスタを3~6cycleで復元します。レジスタ退避バンクは専用メモリを複数面持っており、多重割り込みにも対応することが可能です。図6.割り込み応答時間の改善レジスタ退避バンクは、割り込みハンドラだけでなく、RTOSコンテキスト切り替えにも使用できます。 RTOSコンテキスト切り替え時間は、レジスタバンク保存機能により最大20%高速化します。」
こんにちは。NoMaYです。割り込みは、割り込み許可状態だったとしても、割り込み要求が発生してすぐに割り込みルーチンへ飛ぶわけでは無いことを思い出し、ちょっと調べてみました。除算命令では命令実行に20クロックほど掛かるケースもあるようですね。命令実行が1クロックで終わる命令に比べ、その分、割り込みルーチンへ飛ぶのが遅れますね。なお、コンパイラには、命令実行に時間が掛かる命令(割り込みルーチンへ飛ぶのが遅れる命令)を使わないようにするコンパイルオプションもあります。ただ、そのようにした場合、割り込み応答性を低下させるリスクが減るメリットの代償として、プログラム処理時間が長くなるデメリットがありますけれども。(あと、PUSHM命令/POPM命令/RTSD命令も命令実行時間が長くなるケースがありますね。) [追記] 開平演算(√)命令も命令実行に時間が掛かる命令ですね。以下、ハードウェアマニュアルの画面コピーです。RX660グループ ユーザーズマニュアル ハードウェア編R01UH0937JJ0100 Rev.1.00 Pages 2302 2022.03.18www.renesas.com/jp/ja/document/mah/rx660-group-users-manual-hardware#page=136[追記]すみません、倍精度浮動小数点演算命令に関して載せ忘れましたので追加します。(あと、こちらも、除算命令の他に、DPUSHM命令/DPOPM命令も命令実行時間が長くなるケースがありますね。) [追記] 開平演算(√)命令も命令実行に時間が掛かる命令ですね。以下、ハードウェアマニュアルの画面コピーです。RX671グループ ユーザーズマニュアル ハードウェア編R01UH0899JJ0110 Rev.1.10 Pages 3084 2022.04.15www.renesas.com/jp/ja/document/mah/rx671-group-users-manual-hardware-rev100