NXPチームの皆様、こんにちは。
S32K388コントローラで使用可能なメモリマップで定義されているTCM-RAM(タイトリーカップリングメモリ)領域について:
メモリマップを見ると、これら全て(ITCMかDTCMかを問わず)はそれぞれ同じアドレスに配置されていることがわかります(添付のスクリーンショットを参照)。
1) ローカルコアからバックドアアドレス経由でTCMにアクセスすると、パフォーマンスが低下するかどうかを明確にしていただけますか?(。例えばCore0 が ITCM0 に 0x0 ではなく 0x11000000 でアクセスしています)
1.1)はいの場合:どの程度の損失が予想されますか?
私のプロジェクトでは、GNUスタイルのLDファイル(GHS)を使用しています。
2) 単一のLDファイル内で、同一コアアクセス専用のTCMを(LDファイル内のセクションを介して)明確に指定する方法はありますか?
ありがとう
よろしくお願いします
ダイモン
こんにちは、ピーターさん。
ご回答ありがとうございます。この規模の見積もりは私にとっては十分ですが(私の用途には大きすぎます)。
直接アドレス領域に関してですが、ITCMの場合、0x0~0xFFFFのことでしょうか?
それらを区別するために利用できる、バックドアパスにマッピングされない固有のアドレスはありますか?
コード内でそれらを指定するのは問題ありませんが、LD ファイル内に専用のセクションを作成してそこにオブジェクトを配置しようとすると、アドレスがあいまいになります。
それに対処するための道筋はあるのでしょうか?
ありがとう!
よろしくお願いします、
ダイモン
こんにちは、
1) ローカルコアからバックドアアドレス経由でTCMにアクセスすると、パフォーマンスが低下するかどうかを明確にしていただけますか?
はい、バックドアからのアクセスは速度が遅くなります。
バックドアはシステムバスを介してTCMにアクセスするため、同じメモリにアクセスしようとする他のマスターとの仲裁の対象となり、可変的な遅延が発生する可能性があります。
1.1) はいの場合:どのくらいの損失が予想されますか?
S32K3におけるバックドアTCMのパフォーマンスに関するサイクル精度の数値は公表されていません。
私はM7アーキテクチャに基づいてしか推論できません。
アーキテクチャ上の想定:一般的なコードのフェッチまたはロード/ストアにおいて、約4~6倍遅くなる。
2) 単一のLDファイル内で、同一コアアクセス専用のTCMを(LDファイル内のセクションを介して)明確に指定する方法はありますか?
はい、ただし各TCMの直接アドレスがコアごとに一意である必要があります。
S32K388では、各コアがそれぞれ独自のITCMおよびDTCMの直接アドレス領域を持っています。
よろしくお願いいたします。
ピーター