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です。




Parents Reply Children
  • こんばんは。尭です。

    光陰矢のごとし、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かぁ・・・とか思っていました)

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