Renesas SynergyのSSP v1.2.0のデータシートのCoreMark値からCoreMark/MHzを求めてみた

こんにちは。

ウェブで調べ物をしていたらRenesas SynergyのSSP v1.2.0のデータシートに気付いたのですが、中を見たところMHz値とCoreMark値は記載されているものの、普段馴染んでいるCoreMark/MHz値が記載されていませんでしたので、少し電卓で計算して求めてみました。(S7G2のCoreMark/MHz値が予想外に小さかったです。)

    MHz CoreMark CoreMark/MHz
DK-S124 (Cortex-M0+) GCC 32 50 1.56
IAR 32 80 2.50
DK-S3A7 (Cortex-M4) GCC 48 104 2.17
IAR 48 159 3.31
PK-S5D9 (Cortex-M4) GCC 120 263 2.19
IAR 120 417 3.48
DK-S7G2 (Cortex-M4) GCC 240 476 1.98
IAR 240 714 2.98

Synergy Software Package (SSP v1.2.0) Datasheet
www.renesas.com/.../r01ds0272eu0138-synergy-ssp-120-datasheet.pdf
ルネサスドキュメント検索で検索する場合
www.renesas.com/.../keyword-search.html#genre=document&q=R01DS0272
[画面コピー]



ちなみに他社は200MHz超になるとCortex-M7のデータになってしまうようでした。

www.eembc.org/coremark/index.php?mode=all&chk_comp=true&chk_date=true
[画面コピー]


参考までにRXマイコンのCoreMark/MHz値は以下の通りです。

www.eembc.org/coremark/index.php?mode=all&chk_comp=true&chk_date=true
[画面コピー]


RX113 公称CoreMark/MHz値 3.08
RX130 公称CoreMark/MHz値 3.08
www.renesas.com/.../rx113.html
www.renesas.com/.../rx130.html

RX231  公称CoreMark/MHz値 ?(RXv2コアなので4.55? 動作周波数で若干変わるらしい?)
www.renesas.com/..../rx231.html

RX64M 公称CoreMark/MHz値 4.55
www.renesas.com/.../rx64m.html

Parents
  • NoMaYさん
    まとめてみると分かりやすいですね。
    S7よりもS5の方が性能がいい?!
    ある周波数を超えると分岐命令でフラッシュの読み出しレイテンシが余分に必要になるせいでしょうか。
  • こんにちは。

    最初の投稿でCoreMark/MHz値を電卓で計算してみたところS7G2のCoreMark/MHz値が予想外に小さかったことが気になっていたのですが、Kirinさんが仰っていた「ある周波数を超えると分岐命令でフラッシュの読み出しレイテンシが余分に必要になる」という話の他に、もしかすると「測定誤差の問題もあるのではないか」(つまり「測定方法にも問題があるのではないか」)という可能性も、データシートを見直しているうちに考え始めるようになりました。

    まず最初に、Kirinさんが仰っていた話は、RXマイコンであれば、EEMBCのウェブサイトのスコア一覧でCoreMark/MHz値が以下のようになっていた件なのだろうと思います。(スコア一覧のEEMBC CERTIFIEDの欄にチェックマークが付いていますので、EEMBCによって公式に認定された値です。)

        MHz CoreMark/MHz 低下率
    RX65N (RXv2) CC-RX V2.05 50 4.62  
    120 4.34 (4.62-4.34)/4.34=0.065

     

        MHz CoreMark/MHz 低下率
    RX231 (RXv2) CC-RX V2.05 32 4.61  
    54 4.33 (4.61-4.33)/4.33=0.065

     

        MHz CoreMark/MHz 低下率
    RX64M (RXv2) CC-RX V2.03 120 4.55  
    RX71M (RXv2) 240 4.35 (4.55-4.35)/4.35=0.046


    それに比べて、Synergyマイコンでは、以下のようにCoreMark/MHz値の低下が激しいように思えました。

        MHz CoreMark/MHz 低下率
    PK-S5D9 (Cortex-M4) IAR Compiler 7.71.1 120 3.48  
    DK-S7G2 (Cortex-M4) 240 2.98 (3.48-2.98)/2.98=0.168


    ところが、IAR CompilerではなくGCC Compiler での値を見直してみると、低下の割合が小さいことに気付きました。

        MHz CoreMark/MHz 低下率
    PK-S5D9 (Cortex-M4) GCC Compiler 4.9.3
    20150529 (release)
    120 2.19  
    DK-S7G2 (Cortex-M4) 240 1.98 (2.19-1.98)/1.98=0.106


    DK-S7G2 (Cortex-M4)のIARコンパイラでのCoreMark/MHz値は CoreMark値=714 周波数=240MHz で割り算して得たのですが、この2つの数値だけ見ると有効桁数は2桁はありそうだったのですが、実はCoreMark値の方はCoreMarkベンチマークプログラムを10,000回実行させた時の 14秒 という値が生データですので、秒単位の表記という時点で分解能としては1/14=7%しかありませんし、さらに測定値が腕時計の秒針を読み取ったものとかであれば測定誤差としても1秒程度(1/14=7%)はありそうな気がします。

    試しに、14秒を中心にして12秒~16秒に対してCoreMark値とCoreMark/MHz値を計算し直してみると以下のようになります。(もちろん、依然としてCoreMark/MHz値を小数点以下2桁まで書いていることには、突っ込みを入れないようにお願いします。他方、CoreMark値の方は、データシートのCoreMark値が秒の値そのものを使って計算されたことを強調する為に意図的に小数点以下2桁まで書いています。)

    仮に実行時間が○○だったら、、、

    実行時間(仮に○○だったら) CoreMark(計算値) CoreMark/MHz(計算値)
    12秒 833.33 3.47
    13秒 769.23 3.21
    14秒 714.28 2.98
    15秒 666.67 2.78
    16秒 625.00 2.60


    それで思ったのですが、EEMBCのウェブサイトのCoreMark/MHz表記が小数点以下2桁までありますので、実行時間の測定精度をミリ秒にするか、実行時間が1000秒を超えるぐらいの繰り返し回数にするか(現状は4種類のMCUとも僅か10,000回の繰り返し回数になっているのを増やし且つMCUによらずに固定になっているのをMCUの周波数比に合わせて更に増やすようにする)、ということをした方が良いと思いました。

  • NoMaYさん
    なるほど、秒単位がくせものですね!
    結構粗い測定かもです。
Reply Children
No Data