Toppersのキャッシュ全フラッシュ処理について #157
Unanswered
ryamamoto-melco
asked this question in
Q&A
Replies: 1 comment 1 reply
-
FMP3開発担当の本田です. ご指摘ありがとうございます.ご指摘とおり,wayの設定ビットが間違っていますね.修正したパッケージを近日中に公開します. |
Beta Was this translation helpful? Give feedback.
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
三菱電機の山本と申します。
Toppersのキャッシュ全フラッシュ処理について、
全てのキャッシュをフラッシュできていないように見えたので報告させてください
対象開発物:fmp3_zcu102_arm64_gcc-20230914
対象ファイル:fmp3_zcu102_arm64_gcc-20230914\fmp3_3.3\arch\arm64_gcc\common\arm64.c
対象処理:91行目、138行目
データキャッシュをフラッシュする際に、DC CISW命令のオペランドに
フラッシュ対象のway、set、levelを設定していると思いますが、wayの設定が間違っているように見えます。
ARM仕様によると、wayの指定は、[31:32-A]で指定するとの記載があります。
また、A=Log2(ASSOCIATIVITY)となっており、
例えば4ウェイセットアソシアティブの場合は、[31:30]がwayの指定ビットになります。
https://developer.arm.com/documentation/ddi0601/2024-12/AArch64-Instructions/DC-CISW--Data-or-unified-Cache-line-Clean-and-Invalidate-by-Set-Way
確認した処理は、下記のようにwayの設定を行っていましたが、4ウェイセットアソシアティブの場合、
__builtin_clz(4)は、29となり、wayの値を29ビットシフトすることになりますが、その場合、wayの指定ビットは、[30:29]になります。
つまり、1ビット分のシフトが足りない様子でしたので、下記のように変更して性能を測定しました。
結果、改変前と比較して、キャッシュをフラッシュできているように見えました。
お忙しいところ恐縮ですが、ご確認いただけますと幸いです。
よろしくお願いいたします。
Beta Was this translation helpful? Give feedback.
All reactions