TB-RX65N/TB-RX231/TB-RX130+CC-RX/GNURXでCoreMark®ベンチマークを動かせるようにしてみようと思います

こんにちは。NoMaYです。#2連投の1つ目です。

ルネサスさんのアプリケーションノートに以下の『RX100シリーズ RX100上でCoreMarkを実行する方法』というRSK-RX111+IAR EW統合開発環境でEEMBCのCoreMarkベンチマークを実行するものがあったのですが、これをRX-TB 3種類+CC-RX/GNURXへ移植してみようと思います。まず、手始めにTB-RX130+CC-RX+CS+で試してみました。(後日、他のTBボードやGNURXでも動かしてみようと思います。さらに、e2 studioでも動かせるようにしてみようと思います。なお、その時は、GitHub上でEEMBCが公開しているCoreMarkベンチマークの以下のリポジトリのソースに差し替え、かつ、RXスマートコンフィグレータが生成したソースを出来るだけ使うような作りに変更しよう、と思っています。)

プロジェクトのファイル一式
tb_rx130_coremark_ccrx_c_csplus_20191026.zip    384KB

アプリケーションノート: RX100シリーズ RX100上でCoreMarkを実行する方法
www.renesas.com/jp/ja/search?keywords=CoreMark&f[0]=content_type:document

ドキュメント
www.renesas.com/jp/ja/document/apn/rx100-series-running-coremark-rx100

サンプルプログラム
www.renesas.com/jp/ja/document/scd/rx100-series-running-coremark-rx100

GitHub上でEEMBCが公開しているCoreMarkベンチマークのソース
github.com/eembc/coremark


TB-RX130+CC-RX V2.03で試した結果と試した時のCC-RXの最適化オプションは、以下の画面コピーの通りです。得られたCoreMark値が91.5、動作周波数が32MHz、よって、CoreMark/MHzは2.86、となりました。(ちなみに、CoreMark値やCoreMark/MHzは、そもそもそういうものなのですが、最適化オプションによりかなり値が変わります。) なお、以下の画面コピーの通り、RSK-RX111+EWRX V2.41.1でのCoreMark/MHzは3.073のようでした。また、ルネサスさんの製品ページでのRX130(やRX111)のCoreMark/MHzは3.08です。




  • こんにちは。NoMaYです。

    以前のCoreMarkベンチマークのソースを見直し、サンプルプログラム置き場に置き直し、GitHubにも置きました。また、RX72N+CC-RX/GNURX/ICCRXでCoreMark値とCoreMark/MHz値を計測しました。[追記] 2020/12/03 計測に使用したICCRXをV4.14.1→V4.20.1と変更して計測結果を差し替えました。

    japan.renesasrulz.com/cafe_rene/m/sample_program/437

    github.com/NoMaY-jp/CoreMark-Renesas-RX/tree/cafe_rene/barebones_renesas_rx

    計測結果 (小数点以下3桁目以降は切り捨てです)

      CC-RX V3.02 ICCRX V4.20.1 GNURX 2020q4
    (8.3.0.202004)
    公称値

    コンパイル最適化オプション

    -optimize=max
    -speed
    -goptimize
    -Ohs
    --no_size_constraints
    -O3  
    リンク最適化オプション -optimize=speed  
      CoreMark CoreMark
    /MHz
    CoreMark CoreMark
    /MHz
    CoreMark CoreMark
    /MHz
    CoreMark
    /MHz
    RX72N Envision Kit
    (RX72N 240MHz)
    1250.42 5.21 1290.92 5.37 862.65 3.59 5.82

    計測時の画面コピー

    CC-RX


    ICCRX


    GNURX

     

  • こんにちは。NoMaYです。

    先日は見直したCoreMarkベンチマークのソースを使用して計測したRX72N+CC-RX/ICCRX/GNURXの結果しか書きませんでしたので、今回はRX130/RX231/RX65N+CC-RX/ICCRX/GNURXの結果も書き加えました。(今回使用したCC-RX V3.02では最適化能力が以前に使用したCC-RX V2.03より向上しているせいだと思いますが、公称値がひょいっと出てますね、、、『それでいいのかコアマーク?』という感もありますが、そういうもの(コンパイラの最適化能力依存のCPUコア性能/CPUコア出来具合の指標)ですね、、、) [追記] 2020/12/03 計測に使用したICCRXをV4.14.1→V4.20.1と変更して計測結果を差し替えました。

    計測結果 (小数点以下3桁目以降は切り捨てです)

      CC-RX V3.02 ICCRX V4.20.1 GNURX 2020q4
    (8.3.0.202004)
    公称値

    コンパイル最適化オプション

    -optimize=max
    -speed
    -goptimize
    -Ohs
    --no_size_constraints
    -O3  
    リンク最適化オプション -optimize=speed  
      CoreMark CoreMark
    /MHz
    CoreMark CoreMark
    /MHz
    CoreMark CoreMark
    /MHz
    CoreMark
    /MHz
    RX72N Envision Kit
    (RX72N 240MHz)
    1250.42 5.21 1290.92 5.37 862.65 3.59 5.82
    TB-RX130
    (RX130 32MHz)

    100.20

    3.13 100.78 3.14 73.07 2.28 3.09
    TB-RX231
    (RX231 54MHz)
    229.31 4.24 230.41 4.26 165.38 3.06 4.16
    TB-RX65N
    (RX65N 120MHz)
    524.43 4.37 514.42 4.28 386.70 3.22 4.34

     

  • こんにちは。NoMaYです。

    1つ前と2つ前の投稿のICCRXでの計測結果をV4.20.1のものへと差し替えました。(ただ、若干の向上傾向はあるかな、といった程度で、殆ど同じでした。)

  • こんにちは。NoMaYです。

    ルネサスさんのブログに以下が投稿されてました。(投稿されたのは、しばらく前のことになります、ね。) なお、RXv2 ですらですよ。

    光陰矢のごとし、RXv2コアのCoremark/MHzが5.0を超えた!その理由(わけ)は?
    Sugako Otani
    RX CPU Chief Architect
    www.renesas.com/jp/ja/blogs/time-flies-flash-light-renesas-rxv2-core-has-exceeded-coremark-50-how-does-it-achieve-result

    以下、EEMBCのサイトのRXマイコンのスコアの画面コピーです。RX65Nとか更新されてないですね、、、


     

  • こんにちは。NoMaYです。

    私は今まで、GNURXでデバッグ最適化(-Ogオプション)を指定すれば、充分なデバッグ性とそこそこの最適化が両立しているのだと思い込んでましたが、単に私の思い込みだったようです。-O0オプション(最適化無し)でCoreMarkベンチマークを計り直した方が良いかも知れないと思い始めました。(普段はズボラして -O3 とか -Os とか普段の最適化のままデバッグしていたので、そういうものだったとは、今まで気付きませんでした。)

    以下、GNURX+e2 studioの画面コピーです。

    デバッグ最適化 -Og では思い込んでいたほどには充分に変数内容が表示されるわけではなかった


    最適化無し -O0 であれば思い込んでいたような充分な変数内容が表示されるのであった

     

  • こんばんは。尭です。

    光陰矢のごとし、RXv2コアのCoremark/MHzが5.0を超えた!その理由(わけ)は?
    Sugako Otani
    RX CPU Chief Architect
    www.renesas.com/jp/ja/blogs/time-flies-flash-light-renesas-rxv2-core-has-exceeded-coremark-50-how-does-it-achieve-result

    今年4月の記事のようですが
    >RXv2のデュアル・イシューのパイプライン構造がこの性能を実現しています。
    と書いてありRXv2がスーパースカラであったことを示しています。これは周知の内容なんでしょうか。
    RXv2はCortex-M7より10ヶ月ほど早い発表でしたが、当時のプレスリリース等やRXv2コア搭載マイコンのマニュアルを見てもそれらしい説明は見あたらないように思います。
    プレスリリースで“スーパースカラ”の文言を見るようになったのはRXv3の発表からで、発表時に「スーパースカラになりました!5.04CoreMarks/MHzを達成しました!」と謳っていたCortex-M7とは対照的です。

  • 尭さん、こんにちは。NoMaYです。

    > RXv2がスーパースカラであったことを示しています。これは周知の内容なんでしょうか。

    そこまで、RXv2やRXv3の広報や先日のRXの開発者さんのブログを、読みこんでは無かったです、、、RXv2から既にそうなっていたのですね。でも、記憶を掘り起こすと、そういえば、fujitaさんがRXv2で性能改善に寄与しそうな命令が追加されていたわけでもないのに何故性能向上しているのだろう?と、かふぇルネで訝しんでいたのを思い出しました。そういうカラクリだったのですね、、、

  • こんばんは。尭です。

    自分もその記事を読んで知ったわけではないです。最近Cortex-M7コア搭載のSTM32が載ったSTさんのNUCLEOボードを買ったのでアセンブラで命令を並べてRX65Nと比較していたところ、RX65Nの実行時間がおかしいんですよね。その原因を考えていく中でスーパースカラであると仮定すると説明できることに気が付きました。

    ネットで検索してみると関連する記事を2件見つかりまして、1件目がNoMaYさんが上で紹介されているブログ、もう1件が
    RX v2: Renesas's New-Generation MCU Processor
    www.jstage.jst.go.jp/.../en
    >Enhanced instructions such as DSP function and floating point operation and a five-stage dual-issue pipeline synergistically boost the performance of digital signal applications.
    これでした。

    RXv2、RXv3コア搭載マイコンのマニュアルに書いてあるサイクル数は間違っているとは言えずとも正確ではなく、依存関係を持たないADDやMULなどはスループット0.5~1/レイテンシ1と思われます。

    ちなみにもう一つネタがありまして単精度FPUの加算や乗算のサイクル数を比較すると
    RXv2    スループット1/レイテンシ2
    Cortex-M7 スループット1/レイテンシ3
    となります。

    個人的にはマーケティング的にも実装的にも結構重要なポイントだと思うのですがRenesasさんの認識はそうではないのでしょうか。
    かふぇルネはともかく何となくRXv2よりCortex-M7の方が優れていると思っている人は少なくないような気もしますが・・・(自分も実験してみるまでM7と比べるならRXv3かぁ・・・とか思っていました)

    それとも今のご時世その辺を気にする人は少ないのかな。

  • こんにちは。NoMaYです。

    先日、ルネサスさんの広報で120MHz RX671と200MHz RA6E1のCoreMark値が公表されていましたが、両者で余り変わらないみたいですね、、、(もっとも、マイコンのお値段がポイント、なのでしょうけれども。) RX671はCC-RXでしょうかね。RA6E1はEWARM?AC6?たぶんGNU ARM EmbeddedでのCoreMark値では無いと思いますけど、GNU ARM Embeddedだとどうなるのでしょう、、、逆転しているかも?、、、


    機器の高性能化と省電力化を両立し、非接触操作を実現するHMI機能を搭載した32ビットRXマイコン「RX671」を発売
    ~大容量メモリを搭載した極小パッケージも用意、幅広いニーズに1チップで対応~
    2021年9月8日
    www.renesas.com/jp/ja/about/press-room/renesas-launches-32-bit-rx671-mcus-realizing-high-performance-and-power-efficiency-hmi-functions

    120MHz動作のRXv3コアと60MHzの高速読み出しが可能なフラッシュメモリを搭載することにより最大で707CoreMarkの優れたリアルタイム性能を実現する



    産業およびIoTアプリケーションに向けRAファミリ拡充し、200MHz動作の高性能なエントリ品「RA6E1グループ」を発売
    ~RA6シリーズの高い処理性能はそのままに周辺機能やI/Fを最適化、低コスト化に対応~
    2021年9月30日
    www.renesas.com/jp/ja/about/press-room/renesas-introduces-industry-s-highest-performance-entry-line-mcus

    790CoreMark(内蔵フラッシュからCoreMarkプログラム実行時)の高性能