JP6394341B2 - 計算装置、計算方法、および計算プログラム - Google Patents

計算装置、計算方法、および計算プログラム Download PDF

Info

Publication number
JP6394341B2
JP6394341B2 JP2014248968A JP2014248968A JP6394341B2 JP 6394341 B2 JP6394341 B2 JP 6394341B2 JP 2014248968 A JP2014248968 A JP 2014248968A JP 2014248968 A JP2014248968 A JP 2014248968A JP 6394341 B2 JP6394341 B2 JP 6394341B2
Authority
JP
Japan
Prior art keywords
simulation
core
calculation
access
code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2014248968A
Other languages
English (en)
Other versions
JP2016029554A (ja
Inventor
慎哉 桑村
慎哉 桑村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2014248968A priority Critical patent/JP6394341B2/ja
Priority to US14/800,277 priority patent/US10402510B2/en
Publication of JP2016029554A publication Critical patent/JP2016029554A/ja
Application granted granted Critical
Publication of JP6394341B2 publication Critical patent/JP6394341B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、計算装置、計算方法、および計算プログラムに関する。
従来、プログラムの開発を支援するために、プログラムをプロセッサ上で動作させた場合のプログラムの実行時間などの性能値を見積もる技術がある。例えば、実際のホストプロセッサが、評価対象となるプロセッサが実行可能なコードをホストプロセッサが実行可能なコードに変換する。そして、ホストプロセッサが変換後のコードを実行することによって評価対象となるプロセッサがコードを実行した場合の動作のシミュレーションを行う。これにより、ホストプロセッサがコードの性能値を見積もる。例えば、ロード命令やストア命令などの記憶装置へのアクセス命令の場合、評価対象のプロセッサがキャッシュメモリを介して記憶装置にアクセスするため、キャッシュアクセスがキャッシュミスとキャッシュヒットとに応じて性能値が異なる。そこで、従来、キャッシュミスとキャッシュヒットとのいずれかが予測結果とされ、予測結果の場合の性能値がアクセス命令の性能値とされる。そして、ホストプロセッサが、変換後のアクセス命令を実行した際に、モデル化したキャッシュメモリの動作のシミュレーションによって予測結果と異なるか否かによってアクセス命令の性能値を補正する技術がある(例えば、以下特許文献1参照。)。
また、複数の実行ブロックのサイクルを同期させて並列にシミュレーションを行うサイクルシミュレーションが公知である(例えば、以下特許文献2参照。)。また、複数のCPU(Central Processing Unit)の動作と、複数のCPUによって共有されるハードウェア資源とを模擬する際に、並列に実行されるプログラムの潜在的な不具合を検出する技術が公知である(例えば、以下特許文献3参照。)。
特開2013−84178号公報 特開2007−207158号公報 特開2011−203803号公報
しかしながら、評価対象のプロセッサが複数のコアを有し、コア間でキャッシュメモリを共有する場合に、コア間でアクセス命令のアクセス先が同一または近傍であると、アクセス順に応じてキャッシュヒットとミスヒットとが異なる場合がある。このような場合、従来技術では、性能値をコアごとに計算するため、プログラムの性能値の計算精度が低くなるという問題点がある。
1つの側面では、本発明は、プログラムの性能値の計算精度の向上を図ることができる計算装置、計算方法、および計算プログラムを提供することを目的とする。
本発明の一側面によれば、同一のキャッシュメモリを介して同一の記憶装置にアクセス可能な第1コアおよび第2コアを有するマルチコアプロセッサについて、前記記憶装置へのアクセスを指示する第1アクセス命令を有する第1コードを前記第1コアが実行した場合の前記第1コードの第1性能値を、前記第1コアが前記第1コードを実行する動作の第1シミュレーションによって計算する第1計算処理と、前記記憶装置へのアクセスを指示する第2アクセス命令を有する第2コードを前記第2コアが実行した場合の前記第2コードの第2性能値を、前記第2コアが前記第2コードを実行する動作の第2シミュレーションによって計算する第2計算処理と、前記第1シミュレーションにおいて前記第1アクセス命令が実行される場合に、前記第1シミュレーションと前記第2シミュレーションとの同期を行う同期処理と、前記同期処理による前記同期の後に、前記第1アクセス命令によって前記第1コアが前記キャッシュメモリを介して前記記憶装置にアクセスする場合の前記キャッシュメモリの動作の第3シミュレーションによって、前記第1計算処理によって計算される前記第1性能値の補正を行う補正処理と、を実行する制御部を有する計算装置、計算方法、および計算プログラムが提案される。
本発明の一態様によれば、プログラムの性能値の計算精度の向上を図ることができる。
第1の実施の形態の計算装置の一動作例を示す説明図である。 マルチコアプロセッサシステムの一例を示す説明図である。 計算装置のハードウェア構成例を示すブロック図である。 実施例1にかかる計算装置の機能的構成例を示すブロック図である。 ホストコード例を示す説明図である。 アクセス時刻記録例を示す説明図である。 実施例1にかかる動作例を示す説明図(その1)である。 実施例1にかかる動作例を示す説明図(その2)である。 ld命令についてのヘルパー関数に含まれる補正処理の関数例を示す説明図である。 実施例1にかかる計算装置が行う計算処理手順例を示すフローチャートである。 図10に示す生成処理手順例を示すフローチャートである。 実施例1にかかる計算装置によるキャッシュメモリについてのヘルパー関数に従う計算処理手順例を示すフローチャートである。 実施例2にかかる前提条件例を示す説明図である。 実施例2にかかる計算装置の機能的構成例を示すブロック図である。 システム制御レジスタ変更命令のホストコード生成例を示す説明図である。 共有状況テーブル例を示す説明図である。 実施例2にかかる計算装置によるキャッシュメモリについてのヘルパー関数に従う計算処理手順例を示すフローチャートである。 計算装置によるシステム制御レジスタ変更命令についてのヘルパー関数に従う計算処理手順例を示すフローチャートである。 異種混合プロセッサシステムの一例を示す説明図である。 実施例3にかかる計算装置の機能的構成例を示すブロック図である。 実施例3にかかる計算装置によるキャッシュメモリについてのヘルパー関数に従う計算処理手順例を示すフローチャートである。 実施例4にかかる計算装置の機能的構成例を示すブロック図である。 実施例4にかかる計算装置によるキャッシュメモリについてのヘルパー関数に従う計算処理手順例を示すフローチャートである。
以下に添付図面を参照して、本発明にかかる計算装置、計算方法、および計算プログラムの実施の形態を詳細に説明する。
(第1の実施の形態)
図1は、第1の実施の形態の計算装置の一動作例を示す説明図である。計算装置100は、同一のキャッシュメモリ102を介して同一の記憶装置103にアクセス可能な第1コア111および第2コア112を有するマルチコアプロセッサ101について、各コアが実行するコードの性能値を計算するコンピュータである。
マルチコアプロセッサ101は、第1コア111と第2コア112とを有する。第1コア111と第2コア112とは、第1コア111と第2コア112とによって共有されるキャッシュメモリ102を介して記憶装置103にアクセスする。
従来、上述したように、ターゲットのプロセッサがコードを実行した場合のコードの性能値をプロセッサの動作のシミュレーションによって計算する技術がある。ターゲットのプロセッサがマルチコアプロセッサ101であり、コア間でキャッシュメモリ102を共有していると、アクセス命令のアクセス先が同一または近傍である場合がある。この場合、いずれのコアが先にアクセスしたかによってキャッシュメモリ102に対するキャッシュヒットとミスヒットとが異なる。より具体的には、例えば、アクセス命令が第1コア111または第2コア112において実行されると、キャッシュメモリ102がアクセス命令のアクセス先の内容が記憶されているか否かを判断する。記憶されている場合、キャッシュメモリ102は、ヒットとして記憶内容を更新または読み出しする。記憶されていない場合、キャッシュメモリ102は、ミスヒットとし、記憶装置103にアクセスすることとなる。そのため、ヒットの場合とミスヒットの場合とによってアクセス命令の性能値が異なる。これに対して、従来技術では、コアごとにコードの性能値を計算するため、コードの性能値の計算精度が低くなるという問題点がある。
そこで、本実施の形態では、計算装置100は、コードのコアによる実行のシミュレーションにおいて記憶装置へのアクセス命令の実行時に、各コアのシミュレーションの同期後に行ったキャッシュメモリのシミュレーション結果により該命令の性能値を補正する。これにより、計算精度の向上を図ることができる。
また、本実施の形態では、例えば、ターゲットのマルチコアプロセッサ101は、ARM(登録商標)であり、計算装置100が有するホストCPUはIntel64である。また、マルチコアプロセッサ101では、1つのOS(Operating System)を動作させるSMP(Symmetric Multi Processor)構成とする。例えば、計算対象の性能値は実行時間であり、シミュレーション精度はクロックサイクルである。
まず、図1(1)に示すように、計算装置100は、第1コードc1を第1コア111が実行した場合の第1コードc1の第1性能値を、第1コア111が第1コードc1を実行する動作の第1シミュレーションsim1によって計算する第1計算処理を実行する。第1コードc1は、記憶装置103へのアクセスを指示する第1アクセス命令を有する。第1アクセス命令は、例えば、ld命令またはst命令である。例えば、第1コードc1は、プログラムを分割した場合のブロックである。ここでのプログラムからの分割についての詳細は、特許文献1に記載された例と同じである。
計算装置100は、第2コードc2を第2コア112が実行した場合の第2コードc2の第2性能値を、第2コア112が第2コードc2を実行する動作の第2シミュレーションsim2によって計算する第2計算処理を実行する。第2コードc2は、記憶装置103へのアクセスを指示する第2アクセス命令を有する。第2アクセス命令は、例えば、ld命令またはst命令である。例えば、第2コードc2は、プログラムを分割した場合のブロックである。
計算装置100は、第1シミュレーションsim1において第1アクセス命令が実行される場合に、第1シミュレーションsim1と第2シミュレーションsim2との同期を行う同期処理を実行する。
また、図1(2)に示すように、計算装置100は、同期処理による同期の後に、第1計算処理によって計算される第1性能値の補正を行う補正処理を実行する。補正処理は、第1アクセス命令によって第1コア111がキャッシュメモリ102を介して記憶装置103にアクセスする場合のキャッシュメモリ102の動作の第3シミュレーションsim3によって補正を行う。
このように、第1シミュレーションsim1と第2シミュレーションsim2との同期が行われることによって、コア間のアクセス命令の実行順序のシミュレーション精度が向上する。そのため、アクセス命令のキャッシュメモリ102のヒットとミスヒットのシミュレーション精度が向上するため、計算精度の向上を図ることができる。
図2は、マルチコアプロセッサシステムの一例を示す説明図である。性能値を計算する対象となるマルチコアプロセッサシステム200の一例について説明する。マルチコアプロセッサシステム200は、例えば、ターゲットプロセッサであるマルチコアプロセッサ101と、キャッシュメモリ102と、デバイス201と、記憶装置103と、を有する。
マルチコアプロセッサ101は、マルチコアプロセッサシステム200の全体の制御を行う。マルチコアプロセッサ101は、第1コア111と第2コア112とを有する。第1コア111と第2コア112とは、プロセッサコアである。キャッシュメモリ102は、第1コア111と第2コア112とによって共有される共有資源であり、記憶装置103とマルチコアプロセッサ101との間に設けられる一時記憶装置である。記憶装置103は、例えば、RAM(Random Access Memory)である。
デバイス201は、第1コア111と第2コア112とによって共有される共有資源である。例えば、デバイス201は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワークNETに接続されるI/Fである。また、例えば、デバイス201は、キーボード、マウス、タッチパネルなどの入力装置であり、ディスプレイやプリンタなどの出力装置である。また、例えば、デバイス201は、磁気ディスク、光ディスクなどのディスクとディスクドライブなどである。
(計算装置100のハードウェア構成例)
図3は、計算装置のハードウェア構成例を示すブロック図である。計算装置100は、ホストCPU301と、ROM(Read Only Memory)302と、RAM303と、ディスクドライブ304と、ディスク305と、を有する。計算装置100は、I/F(Interface)306と、入力装置307と、出力装置308と、を有する。また、各部はバス300によってそれぞれ接続される。
ここで、ホストCPU301は、計算装置100の全体の制御を司る。ROM302は、ブートプログラムなどのプログラムを記憶する。RAM303は、ホストCPU301のワークエリアとして使用される記憶部である。ディスクドライブ304は、ホストCPU301の制御に従ってディスク305に対するデータのリード/ライトを制御する。ディスク305は、ディスクドライブ304の制御で書き込まれたデータを記憶する。ディスク305としては、磁気ディスク、光ディスクなどが挙げられる。
I/F306は、通信回線を通じてLAN、WAN、インターネットなどのネットワークNETに接続され、このネットワークNETを介して他の装置に接続される。そして、I/F306は、ネットワークNETと内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F306には、例えばモデムやLANアダプタなどを採用することができる。
入力装置307は、キーボード、マウス、タッチパネルなどユーザの操作により、各種データの入力を行うインターフェースである。また、入力装置307は、カメラから画像や動画を取り込むこともできる。また、入力装置307は、マイクから音声を取り込むこともできる。出力装置308は、ホストCPU301の指示により、データを出力するインターフェースである。出力装置308には、ディスプレイやプリンタが挙げられる。
本実施の形態では、実施例1と実施例2とに分けて説明する。実施例1では、記憶装置103へのアクセス命令を含むコードのコアによる実行のシミュレーションにより該コードの性能値の計算時に、各コアのシミュレーションの同期後に行った共有キャッシュのシミュレーション結果により該命令の性能値を補正する。実施例2では、各コアが異なる物理アドレス空間にアクセスする場合には、各コアのシミュレーションの同期を行わずに共有キャッシュのシミュレーションを行ったシミュレーション結果により命令の性能値を補正する。
(実施例1)
実施例1では、記憶装置103へのアクセス命令を含むコードのコアによる実行のシミュレーションにより該コードの性能値の計算時に、各コアの模擬の同期後に行った共有キャッシュのシミュレーション結果により該命令の性能値を補正する。これにより、計算精度が向上する。
(実施例1にかかる計算装置100の機能的構成例)
図4は、実施例1にかかる計算装置の機能的構成例を示すブロック図である。計算装置100は、コード変換部401と、シミュレーション実行部402と、シミュレーション情報収集部403と、を有する。
コード変換部401からシミュレーション情報収集部403の処理は、例えば、ホストCPU301がアクセス可能なディスク305などの記憶装置に記憶された計算プログラムにコーディングされる。そして、ホストCPU301が記憶装置に記憶された計算プログラムを読み出して、計算プログラムにコーディングされている処理を実行する。これにより、コード変換部401からシミュレーション情報収集部403の処理が実現される。また、各部の処理結果は、例えば、RAM303、ディスク305などの記憶装置に記憶される。また、タイミング情報430と、ターゲットのプログラムprgと、予測情報431と、は予め取得され、RAM303やディスク305などの記憶装置に記憶される。
本実施の形態では、図2に示したように、ターゲットのマルチコアプロセッサ101が有するコアが2つの場合を例に挙げるが、コアが2より多い数である場合、コアごとに各部を有する。「−1」については第1コア111に対応する処理部であり、「−2」については第2コア112に対応する処理部であり、同じ機能である場合には、「−1」と「−2」とを省略して説明する。
また、タイミング情報430と、予測情報431と、の例については、特許文献1に記載されたタイミング情報と予測情報と同じであるため、詳細な例を省略する。
コード変換部401の処理については、特許文献1に記載されたコード変換部と同じであるため、ここでのコード変換部401の説明は簡単にする。コード変換部401は、対象ブロックの各命令の性能値によって対象ブロックがマルチコアプロセッサ101によって実行された場合の性能値を算出可能な計算用コードを生成する。コード実行部421は、計算用コードを実行することによって、対象ブロックがマルチコアプロセッサ101によって実行された場合の性能値を算出する。
具体的には、コード変換部401は、ブロック分割部411と、予測シミュレーション実行部412と、コード生成部413と、を有する。
ブロック分割部411は、計算装置100に入力されたターゲットのプログラムprgを所定基準によってブロックに分割する。分割タイミングは、例えば、対象ブロックが変化した場合にあらたな対象ブロックを分割してもよいし、事前にターゲットのプログラムprgを複数のブロックに分割してもよい。分割されるブロック単位は、例えば、ベーシックブロック単位でよく、または、予め定められた任意のコード単位でよい。ベーシックブロック単位とは、分岐命令からつぎの分岐命令前までの命令群である。
予測シミュレーション実行部412は、予測情報431に基づいて、対象ブロックに含まれる外部依存命令についての各予測ケースを設定する。そして、予測シミュレーション実行部412は、タイミング情報430を参照して、予測ケースを前提とするブロック内の各命令の実行の進み具合をシミュレーションする。これにより、予測シミュレーション実行部412は、設定した予測ケースを前提とする場合のブロック内の各命令の性能値を求める。
コード生成部413は、予測シミュレーション結果に基づいて、ホストコードを生成する。ホストコードは、コアが対象ブロックを実行する動作のシミュレーションを行う機能用コードと、コアが対象ブロックを実行した場合の対象ブロックの性能値を計算する計算用コードと、を有する。
図5は、ホストコード例を示す説明図である。例えば、ホストコードhcは、対象ブロックbに含まれる各命令をコンパイルすることによって得られるホストCPU301が実行可能なホスト命令が含まれる機能用コードを有する。また、ホストコードhcは、対象ブロックbに含まれる各命令の性能値を計算可能な計算命令が含まれる計算用コードccを有する。例えば、ld命令やst命令などの記憶装置103へのアクセスを指示するアクセス命令については、ヘルパー関数呼び出し命令によって性能値が計算される。本実施の形態では、ヘルパー関数は、各補正部423である。ヘルパー関数が呼び出されてヘルパー関数が実行されることは、補正部423が補正を行うことに相当する。
シミュレーション実行部402は、コード生成部413が生成したホストコードhcを実行して、プログラムprgを実行するコアの命令実行の機能および性能シミュレーションを行う処理部である。シミュレーション実行部402は、コード実行部421と、同期部422と、補正部423と、を有する。
コード実行部421−1は、第1コードc1を第1コア111が実行した場合の第1コードc1の第1性能値を、第1コア111が第1コードc1を実行する動作の第1シミュレーションsim1によって計算する第1計算処理を行う。第1コードc1は、記憶装置103へのアクセスを指示する第1アクセス命令を有する。例えば、コード実行部421−1は、第1ホストコードhcを用いて、マルチコアプロセッサ101がプログラムprgを実行した場合の機能シミュレーションおよび性能シミュレーションを行う処理部である。機能シミュレーションは、ホストコードhcに含まれる機能コードfcを実行することによって行われる。性能シミュレーションは、ホストコードhcに含まれる計算用コードccを実行することによって行われる。特許文献1に示すように、機能シミュレーションによってつぎに対象となる対象ブロックbが特定可能となる。
コード実行部421−2は、第2コードc2を第2コア112が実行した場合の第2コードc2の第2性能値を、第2コア112が第2コードc2を実行する動作の第2シミュレーションsim2によって計算する第2計算処理を行う。第2コードc2は、記憶装置103へのアクセスを指示する第2アクセス命令を有する。例えば、コード実行部421−2は、第2ホストコードhcを用いて、マルチコアプロセッサ101がプログラムprgを実行した場合の機能シミュレーションおよび性能シミュレーションを行う処理部である。機能シミュレーションは、機能コードfcを実行することによって行われる。性能シミュレーションは、計算用コードccを実行することによって行われる。
同期部422−1は、第1シミュレーションsim1において第1アクセス命令が実行される場合に、第1シミュレーションsim1と第2シミュレーションsim2との同期を行う。
補正部423−1は、同期部422−1による同期の後に、第1計算処理によって計算される第1性能値を補正する第1補正処理を行う。第1補正処理は、第1アクセス命令によって第1コア111がキャッシュメモリ102を介して記憶装置103にアクセスする場合のキャッシュメモリ102の動作の第3シミュレーションsim3によって補正を行う。第3シミュレーションsim3については、モデル化したキャッシュメモリ102にアドレスを与えることによって行われる。
また、同期部422−1は、第1シミュレーションsim1における時刻が第2シミュレーションsim2における時刻よりも遅れている場合に、第2シミュレーションsim2と第1シミュレーションsim1との同期を行わない。補正部423−1は、第3シミュレーションsim3によって、第1計算処理によって計算される第1性能値を補正する。
また、同期部422−2は、第2シミュレーションsim2において第2アクセス命令が実行される場合に、第1シミュレーションsim1と第2シミュレーションsim2との同期を行う。
補正部423−2は、同期部422−2による同期の後に、第2計算処理によって計算される第2性能値を補正する第2補正処理を行う。第2補正処理は、第2アクセス命令によって第2コア112がキャッシュメモリ102を介して記憶装置103にアクセスする場合のキャッシュメモリ102の動作の第3シミュレーションsim3によって、補正を行う。
また、シミュレーション実行部402−2は、第2シミュレーションsim2における時刻が第1シミュレーションsim1における時刻よりも遅れている場合に、同期部422−2による第2同期処理を行わずに、補正部423−2による第2補正処理を行う。
例えば、補正部423−1は、第1シミュレーションsim1における第1アクセス命令を実行する場合に、第1シミュレーションsim1におけるアクセス時刻を記録する。また、例えば、補正部423−2は、第2シミュレーションsim2における第2アクセス命令を実行する場合に、第2シミュレーションsim2におけるアクセス時刻を記録する。
図6は、アクセス時刻記録例を示す説明図である。アクセス時刻テーブル600は、アクセス命令が発生したシミュレーションの時刻であるアクセス時刻と、アクセス命令におけるアクセス先のアドレスと、を設定可能である。
アクセス時刻テーブル600は、例えば、第1コア時刻、第1コアアドレス、第2コア時刻、第2コアアドレスのフィールドを有する。第1コア時刻のフィールドには、第1シミュレーションsim1におけるアクセス命令を実行する場合の第1シミュレーションsim1における時刻が設定される。第1コアアドレスのフィールドには、第1シミュレーションsim1におけるアクセス命令のアクセス先が設定される。第2コア時刻のフィールドには、第2シミュレーションsim2におけるアクセス命令を実行する場合の第2シミュレーションsim2における時刻が設定される。第2コアアドレスのフィールドには、第2シミュレーションsim2におけるアクセス命令のアクセス先が設定される。
図7および図8は、実施例1にかかる動作例を示す説明図である。ここでのアクセス時刻テーブル600についてはアドレスのフィールドを省略して示す。図7(1)に示すように、第1シミュレーションsim1において対象ブロックbがブロックB11であり、第1シミュレーションsim1において対象ブロックbのシミュレーションが終了した時のシミュレーション時刻が7である。シミュレーション時刻は、例えば、サイクル数によって表される。
図7(2)に示すように、第2シミュレーションsim2において対象ブロックbがブロックB21であり、第2シミュレーションsim2において対象ブロックbのシミュレーションが終了した時の第2シミュレーションsim2における時刻が2である。
図7(3)に示すように、第1シミュレーションsim1において対象ブロックbがブロックB12であり、第1シミュレーションsim1における時刻が12にてアクセス命令が実行される。図7(3)に示すように、補正部423−1は、例えば、アクセス命令を実行するシミュレーション時刻をアクセス時刻テーブル600に記録する。そして、図7(3)に示すように、同期部422−1は、第1シミュレーションsim1における時刻が第2シミュレーションsim2における時刻よりも遅れているかを判断する。図7(3)に示すように、同期部422−1は、第1シミュレーションsim1における時刻が第2シミュレーションsim2におけるシミュレーション時刻よりも遅れていないため、第1シミュレーションsim1と第2シミュレーションsim2とを同期させる。このため、同期部422−1は、第1シミュレーションsim1を待機させる。
図8(1)に示すように、第2シミュレーションsim2において対象ブロックbがブロックB23であり、第2シミュレーションsim2における時刻が10にてアクセス命令が実行される。図8(1)に示すように、補正部423−2は、例えば、第2シミュレーションsim2においてアクセス命令を実行する時刻をアクセス時刻テーブル600に記録する。そして、図8(1)に示すように、同期部422−2は、第2シミュレーションsim2における時刻が第1シミュレーションsim1における時刻よりも遅れているかを判断する。図8(1)に示すように、同期部422−2は、第2シミュレーションsim2における時刻が第1シミュレーションsim1におけるシミュレーション時刻よりも遅れているため、第1シミュレーションsim1と第2シミュレーションsim2との同期を行わない。
そのため、補正部423−2は、アクセス時刻テーブル600から、第2シミュレーションsim2における時刻よりも早いシミュレーションの時刻の中で最も近いシミュレーションの時刻を取得する。ここでは、第2シミュレーションsim2における時刻よりも早いシミュレーションの時刻が記録されていないため、0が取得される。そして、例えば、補正部423−2は、第2シミュレーションsim2における時刻と取得した時刻とに基づいて、第2シミュレーションsim2におけるアクセス命令についての性能値を補正する処理を行う。より具体的に、例えば、補正部423−2は、第2シミュレーションsim2におけるアクセス命令のアクセス先のアドレスと、第2シミュレーションsim2における時刻と、取得した時刻と、補正処理の関数と、によってアクセス命令の性能値を補正する。補正処理の具体例については、図9に示す。
つぎに、図8(2)に示すように、補正部423−1は、第1シミュレーションsim1と第2シミュレーションsim2とが同期された後に、アクセス時刻テーブル600から、最も近いシミュレーションの時刻を取得する。最も近いシミュレーションの時刻は、第2シミュレーションsim2における時刻よりも早いシミュレーションの時刻の中で最も近いシミュレーションの時刻である。そして、例えば、補正部423−1は、第1シミュレーションsim1における時刻と取得した時刻とに基づいて、第1シミュレーションsim1におけるアクセス命令についての性能値を補正する処理を行う。より具体的に、例えば、補正部423−1は、第1シミュレーションsim1におけるアクセス命令のアクセス先のアドレスと、第1シミュレーションsim1における時刻と、取得した時刻と、補正処理の関数と、によってアクセス命令の性能値を補正する。
図9は、ld命令についてのヘルパー関数に含まれる補正処理の関数例を示す説明図である。ヘルパー関数の“rep_delay”は、ld命令の返り値を使用するつぎの命令の実行までに、ペナルティ時間のうち遅延時間として処理されなかった時間(猶予時間)である。“pre_delay”は、1つ前の命令から受ける遅延時間である。“−1”は、前の命令に遅延がないことを示す。“rep_delay”と“pre_delay”は、予測シミュレーション実行部412によって得られる性能シミュレーション結果とタイミング情報430との静的分析処理の結果から得られる時間情報である。
図9に示す例では、補正部423は、現タイミングcurrent_timeと1つ前のld命令の実行タイミングpreld_timeとの差が、1つ前のld命令の遅延時間pre_delayを超えているときは、1つ前のld命令の実行タイミングpreld_timeと現タイミングcurrent_timeまでの時間で遅延時間pre_delayを調整して有効遅延時間avail_delayを求める。
つぎに、補正部423は、キャッシュメモリ102の動作結果が“キャッシュミス”であれば、予測ケースの誤りであり、有効遅延時間avail_delayにキャッシュミス時のペナルティ時間cache_miss_latencyを加算して、猶予時間rep_delayをもとに、ld命令の性能値を補正する。ここでの補正の具体的な処理については、特許文献1と同じであるため、詳細な説明を省略する。
シミュレーション情報収集部403は、性能シミュレーションの実行結果として、各命令の実行時間を含むシミュレーション情報を収集する処理部である。
(実施例1にかかる計算装置100が行う計算処理手順例)
図10は、実施例1にかかる計算装置が行う計算処理手順例を示すフローチャートである。計算装置100は、マルチコアプロセッサ101に含まれるコアの各々について計算処理手順を行う。例えば、計算装置100は、ターゲットのプログラムprgの性能値の計算を終了したか否かを判断する(ステップS1001)。例えば、終了していないと判断された場合(ステップS1001:No)、計算装置100は、ホストコードhcの生成処理を行う(ステップS1002)。
例えば、計算装置100は、ホストコードhcを実行する(ステップS1003)。そして、例えば、計算装置100は、計算結果を収集し(ステップS1004)、ステップS1001へ戻る。終了したと判断された場合(ステップS1001:Yes)、計算装置100は、一連の処理を終了する。
図11は、図10に示す生成処理手順例を示すフローチャートである。例えば、計算装置100は、対象ブロックbがコンパイル済みか否かを判断する(ステップS1101)。対象ブロックbがコンパイル済みでないと判断された場合(ステップS1101:No)、計算装置100は、ターゲットのプログラムprgから対象ブロックbを分割して取得する(ステップS1102)。計算装置100は、外部依存命令を検出する(ステップS1103)。
つぎに、計算装置100は、検出した外部依存命令についての予測ケースを設定する(ステップS1104)。そして、計算装置100は、タイミング情報430に基づいて、設定した予測ケースにおける各命令の性能値の予測シミュレーションを行う(ステップS1105)。つぎに、計算装置100は、機能コードfcと、予測シミュレーション結果に基づく計算用コードccと、を有するホストコードhcを生成し(ステップS1106)、一連の処理を終了する。対象ブロックbがコンパイル済みであると判断された場合(ステップS1101:Yes)、計算装置100は、一連の処理を終了する。
図12は、実施例1にかかる計算装置によるキャッシュメモリについてのヘルパー関数に従う計算処理手順例を示すフローチャートである。まず、計算装置100は、キャッシュアクセスが要求されているか否かを判断する(ステップS1201)。キャッシュアクセスが要求されていないと判断された場合(ステップS1201:No)、計算装置100は、ステップS1210へ移行する。
キャッシュアクセスが要求されていると判断された場合(ステップS1201:Yes)、計算装置100は、アクセス時刻とアクセス先アドレスとを記録する(ステップS1202)。計算装置100は、自コアのシミュレーションの時刻が他のコアのシミュレーションの時刻よりも遅れているか否かを判断する(ステップS1203)。遅れていると判断された場合(ステップS1203:Yes)、計算装置100は、ステップS1205へ移行する。一方、遅れていないと判断された場合(ステップS1203:No)、計算装置100は、同期を行う(ステップS1204)。計算装置100は、前回のアクセス命令のアクセス時刻を取得する(ステップS1205)。
そして、計算装置100は、アクセス時刻を考慮したキャッシュアクセスのシミュレーションを行う(ステップS1206)。つぎに、計算装置100は、キャッシュアクセスの結果はヒットかミスヒットかを判断する(ステップS1207)。
ミスヒットであると判断された場合(ステップS1207:ミス)、計算装置100は、サイクル数の補正を行う(ステップS1208)。そして、計算装置100は、補正されたサイクル数を出力し(ステップS1209)、一連の処理を終了する。
ヒットであると判断された場合(ステップS1207:ヒット)、計算装置100は、予測されたサイクル数を出力し(ステップS1210)、一連の処理を終了する。
(実施例2)
例えば、異なるコアが異なる物理アドレス領域にアクセスしている場合、いずれのコアからのアクセスが先であるかに性能値が依存しない。例えば、異なる物理アドレス領域にアクセスする場合とは、第1コア111と第2コア112とがそれぞれ異なるアプリケーションプログラムを実行している場合などである。そこで、実施例2では、第1コア111と第2コア112とで異なる物理アドレス空間にアクセスする場合には、2つのシミュレーションの同期を行わない。これにより、性能値の計算精度を維持しつつ、計算速度の向上を図る。実施例2では、実施例1と同一構成には同一符号を付し、詳細な説明を省略する。
図13は、実施例2にかかる前提条件例を示す説明図である。実施例2では、例えば、第1コア111と第2コア112とは、1つのOS202を動作させる。また、例えば、第1コア111と第2コア112とは、OS202の上でそれぞれ異なるプログラムを動作させることを前提とする。例えば、アクセス先となる物理アドレスはプログラムごとに異なる場合、プログラムごとにアドレス空間識別子が割り振られる。例えば、アドレス空間識別子は、ASID(Address Space IDentification)と称する。図13の例では、第1プログラムprg1のASIDは1であり、第2プログラムprg2のASIDは2であり、OS202のASIDは0である。
(実施例2にかかる計算装置100の機能的構成例)
図14は、実施例2にかかる計算装置の機能的構成例を示すブロック図である。計算装置100は、コード変換部401と、シミュレーション実行部402と、シミュレーション情報収集部403と、を有する。
コード変換部401は、実施例1と同様に、ブロック分割部411と、予測シミュレーション実行部412と、コード生成部413と、がある。ブロック分割部411と、予測シミュレーション実行部412と、シミュレーション情報収集部403とについては実施例1と同様であるため、詳細な説明を省略する。また、コード変換部401からシミュレーション情報収集部403の処理は、例えば、ホストCPU301がアクセス可能なディスク305などの記憶装置に記憶された計算プログラムにコーディングされる。そして、ホストCPU301が記憶装置に記憶された計算プログラムを読み出して、計算プログラムにコーディングされている処理を実行する。これにより、コード変換部401からシミュレーション情報収集部403の処理が実現される。また、各部の処理結果は、例えば、RAM303、ディスク305などの記憶装置に記憶される。また、タイミング情報430と、ターゲットのプログラムprgと、予測情報431と、は予め取得され、RAM303やディスク305などの記憶装置に記憶される。
また、例えば、ターゲットのマルチコアプロセッサシステム200がARMのプロセッサを有する場合、OS202のカーネルでは、スケジューラによりコンテキストスイッチなどが行われる際に、システム制御レジスタ変更命令が発生する。システム制御レジスタ変更命令は、例えば、システム制御レジスタの設定値を変更する命令であり、物理アドレス空間を変更可能な命令である。ARMのプロセッサであれば、システム制御レジスタ変更命令はmcr命令である。mcr命令の一例は以下の通りである。
mcr p15,0,r0,c13,c0,1
上記のmcr命令は、r0の値をc13レジスタに書き込む命令である。ARMのプロセッサのシステム制御レジスタにおいてc13レジスタは、プログラムごとのASIDが格納されるレジスタである。
図15は、システム制御レジスタ変更命令のホストコード生成例を示す説明図である。例えば、図15に示す対象ブロックbは、システム制御レジスタ変更命令を有する。コード生成部413は、対象ブロックbにシステム制御レジスタ変更命令が含まれる場合、システム制御レジスタ変更命令のホスト命令と、システム制御レジスタ変更命令のヘルパー関数呼び出し命令と、を有するホストコードhcを生成する。システム制御レジスタ変更命令のホスト命令は機能コードfcである。システム制御レジスタ変更命令のヘルパー関数呼び出し命令は、計算用コードccである。システム制御レジスタ変更命令のヘルパー関数による処理については更新部1402によって実現される。
シミュレーション実行部402は、コード生成部413が生成したホストコードhcを実行して、プログラムを実行するコアの命令実行の機能および性能シミュレーションを行う処理部である。シミュレーション実行部402は、コード実行部421と、同期部422と、補正部423と、共有判断部1401と、更新部1402と、を有する。
更新部1402−1は、第1シミュレーションsim1においてシステム制御レジスタ変更命令が実行される場合に、第1シミュレーションsim1においてシステム制御レジスタの値を変更する。システム制御レジスタについては、第1シミュレーションsim1と第2シミュレーションsim2とにおいて共通でモデルが利用されることとする。そして、更新部1402は、システム制御レジスタのうち、システム制御レジスタ変更命令による変更対象のレジスタが、ASIDが格納されているレジスタであるか否かを判断する。
ASIDが格納されているレジスタである場合、更新部1402は、自コアについてのASIDと他コアについてのASIDとを比較する。更新部1402は、比較結果に基づいて共有状況テーブルに登録する。
図16は、共有状況テーブル例を示す説明図である。例えば、共有状況テーブル1600は、各コアについてのシミュレーションにおいてアドレス空間を共有しているか否かを示す表である。共有状況テーブル1600は、コアと、共有と、のフィールドを有する。コアのフィールドには、コアを識別する識別子が設定される。共有状況テーブル1600の例では、コアの数が4つの場合を例に挙げてある。共有のフィールドには、自コアとアドレス空間を共有するコアの識別子、または「なし」が設定される。「なし」は、物理アドレス空間を共有するコアがないことを示す。
例えば、更新部1402−1は、自コアについてのASIDと一致するコアがない場合に、共有状況テーブル1600の自コアについてのレコードに「なし」を登録する。例えば、更新部1402は、自コアについてのASIDと一致するコアがある場合、共有状況テーブル1600の自コアについてのレコードに、一致するコアの識別子を登録する。
共有判断部1401−1は、第1シミュレーションsim1において第1アクセス命令が実行される場合に、記憶装置103のうちのシミュレーションにおいてコア間で利用する記憶領域が一致しているか否かの判断を行う。例えば、共有判断部1401は、記憶装置103のうちの第1シミュレーションsim1において第1コア111が利用する記憶領域と、記憶装置103のうちの第2シミュレーションsim2において第2コア112が利用する記憶領域と、の一致を判断する。例えば、共有判断部1401は、システム制御レジスタをモデル化したシミュレーションにおけるシステム制御レジスタの設定内容に基づき判断を行う。より具体的には、例えば、共有判断部1401は、共有状況テーブル1600から自コアについてのレコードを参照することによって物理アドレス空間を共有するコアがあるか否かの判断を行うことで、該一致を判断する。
シミュレーション実行部402−1は、共有判断部1401−1によって一致しないと判断された場合に、同期部422−1による第1同期処理を行わずに、補正部423−1による第1補正処理を行う。シミュレーション実行部402−1は、共有判断部1401−1によって一致すると判断された場合に、同期部422−1による第1同期処理を行った後に、補正部423−1による第1補正処理を行う。
また、シミュレーション実行部402−2の各部の処理については、シミュレーション実行部402−1の各部の処理と同様の処理であるため、詳細な説明を省略する。
(実施例2にかかる計算装置100による計算処理手順)
実施例2にかかる計算装置による計算処理手順については、図10と図11とに示す実施例1にかかる計算装置100による計算処理手順についてと同じである。そのため、ここでは、実施例2にかかるキャッシュメモリ102についてのヘルパー関数が行う処理手順例と、実施例2にかかるシステム制御レジスタ変更命令のヘルパー関数が行う処理手順例と、について説明する。
図17は、実施例2にかかる計算装置によるキャッシュメモリについてのヘルパー関数に従う計算処理手順例を示すフローチャートである。まず、計算装置100は、キャッシュアクセスが要求されているか否かを判断する(ステップS1701)。キャッシュアクセスが要求されていないと判断された場合(ステップS1701:No)、計算装置100は、ステップS1711へ移行する。
キャッシュアクセスが要求されていると判断された場合(ステップS1701:Yes)、計算装置100は、アクセス時刻とアクセス先アドレスとを記録する(ステップS1702)。計算装置100は、共有状況テーブル1600に基づいて、物理アドレス空間を共有するコアがあるか否かを判断する(ステップS1703)。物理アドレス空間を共有するコアがないと判断された場合(ステップS1703:No)、計算装置100は、ステップS1706へ移行する。物理アドレス空間を共有するコアがあると判断された場合(ステップS1703:Yes)、計算装置100は、自コアのシミュレーションの時刻が他のコアのシミュレーションの時刻よりも遅れているか否かを判断する(ステップS1704)。遅れていると判断された場合(ステップS1704:Yes)、計算装置100は、ステップS1706へ移行する。一方、遅れていないと判断された場合(ステップS1704:No)、計算装置100は、同期を行う(ステップS1705)。計算装置100は、前回のアクセス命令のアクセス時刻を取得する(ステップS1706)。
そして、計算装置100は、アクセス時刻を考慮したキャッシュアクセスのシミュレーションを行う(ステップS1707)。つぎに、計算装置100は、キャッシュアクセスの結果はヒットかミスヒットかを判断する(ステップS1708)。
ミスヒットであると判断された場合(ステップS1708:ミス)、計算装置100は、サイクル数の補正を行う(ステップS1709)。そして、計算装置100は、補正されたサイクル数を出力し(ステップS1710)、一連の処理を終了する。ヒットであると判断された場合(ステップS1708:ヒット)、計算装置100は、予測されたサイクル数を出力し(ステップS1711)、一連の処理を終了する。
図18は、計算装置によるシステム制御レジスタ変更命令についてのヘルパー関数に従う計算処理手順例を示すフローチャートである。計算装置100は、モデル化されたシステム制御レジスタの値を変更する(ステップS1801)。計算装置100は、変更先のレジスタが、アドレス空間を示す情報が格納されているレジスタであるか否かを判断する(ステップS1802)。
変更先のレジスタがアドレス空間を示す情報が格納されているレジスタでないと判断された場合(ステップS1802:No)、計算装置100は、一連の処理を終了する。変更先のレジスタがアドレス空間を示す情報が格納されているレジスタであると判断された場合(ステップS1802:Yes)、計算装置100は、自コアについてのASIDと他コアについてのASIDとを比較する(ステップS1803)。計算装置100は、ASIDが一致するコアがあるか否かを判断する(ステップS1804)。
ASIDが一致するコアがあると判断された場合(ステップS1804:Yes)、計算装置100は、一致するコアの識別子を記録し(ステップS1805)、一連の処理を終了する。ASIDが一致するコアがないと判断された場合(ステップS1804:No)、計算装置100は、「なし」を記録し(ステップS1806)、一連の処理を終了する。
以上説明したように、計算装置100は、記憶装置へのアクセス命令を含むコードのコアによる実行のシミュレーションによりコードの性能値の計算時に、各コアのシミュレーションの同期後に行った共有キャッシュのシミュレーションを行う。計算装置100は、共有キャッシュのシミュレーション結果により該命令の性能値を補正する。このように、第1シミュレーションsim1と第2シミュレーションsim2との同期が行われることによって、コア間のアクセス命令の実行順序のシミュレーション精度が向上する。そのため、アクセス命令のキャッシュメモリ102のヒットとミスヒットのシミュレーション精度が向上するため、計算精度の向上を図ることができる。
また、計算装置100は、第1シミュレーションにおける時刻が第2シミュレーションにおける時刻よりも遅れている場合に、同期を行わずに共有キャッシュのシミュレーションを行ったシミュレーション結果によりアクセス命令の性能値を補正する。このように、第1シミュレーションsim1が第2シミュレーションsim2よりも遅れている場合、第1シミュレーションsim1におけるアクセス命令よりも前の第2シミュレーションsim2におけるアクセス命令は実行済みである。そのため、コア間のアクセス命令の実行順序が保たれていると判別できるため、同期処理を行わないことによってシミュレーションに要する時間の短縮化を図ることができる。
また、計算装置100は、各コアが異なる物理アドレス空間にアクセスする場合には、各コアのシミュレーションの同期処理を実行せずに共有キャッシュのシミュレーションを行ったシミュレーション結果によりアクセス命令の性能値を補正する。このように、物理アドレス空間が異なる場合、アクセス先が重ならないと判別されるため、同期処理を行わないことによってシミュレーションに要する時間の短縮化を図ることができる。
(第2の実施の形態)
以下第2の実施の形態の計算装置および計算方法を説明する。第2の実施の形態の計算装置および計算方法は、異種混合プロセッサ(ヘテロジニアスプロセッサ)システムにおける性能値を計算するものである。異種混合プロセッサシステムでは、CPUとアクセラレータとで同じ物理アドレス空間・データが共有される。
なお、アクセラレータとは、CPUの処理を代替して処理の効率を向上させる装置のことである。アクセラレータとして、GPU(Graphics Processing Unit)、DSP(Digital Signal Processor)、FPGA(Field−Programmable Gate Array)などがある。
以下では、アクセラレータとしてGPUを用いた場合について説明するが、これに限定されるものではない。
図19は、異種混合プロセッサシステムの一例を示す説明図である。図2に示したマルチコアプロセッサシステムと同じ要素については同一符号を付し、その説明を省略する。
異種混合プロセッサシステム200aは、GPU104を有している。図19の例では、GPU104は、キャッシュメモリ102と記憶装置103を、マルチコアプロセッサ101と共有している。以下では、マルチコアプロセッサ101は、CPUであるものとして説明する。
第2の実施の形態の計算方法は、図3に示したようなハードウェア構成の計算装置100で実現できる。
以下、第2の実施の形態の計算方法を、実施例3と実施例4とに分けて説明する。
(実施例3)
(実施例3にかかる計算装置100の機能的構成例)
図20は、実施例3にかかる計算装置の機能的構成例を示すブロック図である。図20において、図4に示した実施例1と同様の要素については、同一符号を付し説明を省略する。
計算装置100は、GPUシミュレーション部404を有している。GPUシミュレーション部404は、例えば、図19に示した、性能値を計算する対象となる異種混合プロセッサシステム200aに含まれるGPU104のシミュレーションを行う。
GPUシミュレーション部404は、GPU104が記憶装置103にアクセスする時刻を記録する機能、GPU104の動作を一時停止および再開する機能を有する。さらに、GPUシミュレーション部404は、CPU側のシミュレーションを行うシミュレーション実行部402a−1,402a−2と同期して処理を行う機能を有する。
なお、GPUシミュレーション部404の処理も、例えば、ホストCPU301がアクセス可能なディスク305などの記憶装置に記憶された計算プログラムにコーディングされる。そして、ホストCPU301が記憶装置に記憶された計算プログラムを読み出して、計算プログラムにコーディングされている処理を実行する。これにより、GPUシミュレーション部404の処理が実現される。また、GPUシミュレーション部404の処理結果は、例えば、RAM303、ディスク305などの記憶装置に記憶される。
シミュレーション実行部402a−1,402a−2は、図4に示したシミュレーション実行部402−1,402−2とほぼ同様の機能を有しているが、GPUシミュレーション部404と同期処理を行う機能を有している。
例えば、シミュレーション実行部402a−1の同期部422a−1は、前述した第1シミュレーションsim1と第2シミュレーションsim2との同期処理を行うとともに、第1シミュレーションsim1とGPUシミュレーションとの同期処理を行う。
同期部422a−1は、GPUシミュレーション部404から、GPU104の記憶装置103へのアクセス時刻を取得する。これにより、第1シミュレーションsim1と第2シミュレーションsim2との間の同期処理と同様に、第1シミュレーションsim1と、GPUシミュレーションとの同期処理を行うことができる。
例えば、第1シミュレーションsim1で、記憶装置103の、あるアドレスへのアクセス命令が発生した時刻が、GPUシミュレーションでそのアドレスへのアクセス命令が発生した時刻より速いときには、第1シミュレーションsim1が待機される。第1シミュレーションsim1で、記憶装置103のあるアドレスへのアクセス命令が発生した時刻が、GPUシミュレーションでそのアドレスへのアクセス命令が発生した時刻より遅いときには、同期部422a−1は、GPUシミュレーションを待機させる。
また、補正部423a−1は、前述した第1シミュレーションsim1と第2シミュレーションsim2との同期処理に基づく補正処理と同様に、第1シミュレーションsim1とGPUシミュレーションとの同期処理に基づく補正処理も行う。
第2シミュレーションsim2と、GPUシミュレーションとの同期処理および、その同期処理に基づく補正処理についても同様である。
また、シミュレーション情報収集部403a−1,403a−2は、上記のようなGPUシミュレーションと、第1シミュレーションsim1および第2シミュレーションsim2との同期処理、補正処理を考慮した性能シミュレーションの実行結果を収集する。
(実施例3にかかる計算装置100が行う計算処理手順例)
全体の計算処理の流れと、ホストコードの生成処理の流れは、図10、図11に示したフローチャートと同様であるため、説明を省略する。
図21は、実施例3にかかる計算装置によるキャッシュメモリについてのヘルパー関数に従う計算処理手順例を示すフローチャートである。
ステップS2101の処理は、図12に示したステップS1201の処理と同じであるため説明を省略する。ステップS2102の処理では、計算装置100は、シミュレーションsim1,sim2のアクセス時刻とアクセス先アドレスだけでなく、GPUシミュレーションのアクセス時刻とアクセス先アドレスも記録する。
ステップS2103の処理では、計算装置100は、自コアのシミュレーションの時刻が、他のコアのシミュレーションの時刻またはGPUシミュレーションの時刻よりも遅れているか否かを判断する。遅れていると判断された場合(ステップS2103:Yes)、計算装置100は、ステップS2105へ移行する。つまり、自コアを待機させなくてよいため、同期処理が省かれる。
一方、遅れていないと判断された場合(ステップS2103:No)、計算装置100は、同期を行う(ステップS2104)。例えば、自コアでのアクセス命令の発生時のシミュレーションの時刻が、GPU104のアクセス命令の発生時のシミュレーションの時刻よりも早い場合、計算装置100は、自コアのシミュレーションを待機させ、GPUシミュレーションと同期させる。
ステップS2105〜S2110の処理は、図12に示したステップS1205〜S1210の処理と同じであるため説明を省略する。
(実施例4)
(実施例4にかかる計算装置100の機能的構成例)
図22は、実施例4にかかる計算装置の機能的構成例を示すブロック図である。図22において、図14、図20と同様の要素については、同一符号を付し説明を省略する。
計算装置100において、シミュレーション実行部402b−1は、図20に示したシミュレーション実行部402a−1と異なり、共有判断部1401a−1と更新部1402a−1をさらに有している。図示を省略しているが、シミュレーション実行部402b−2も、同様の要素を有している。
更新部1402a−1は、図14の更新部1402−1とほぼ同様の機能を有しているが、図16に示した共有状況テーブル1600に自コアについてのASIDとGPU104についてのASIDとが一致するときに、GPU104を識別する識別子を設定する。
共有判断部1401a−1は、図14の共有判断部1401−1とほぼ同様の機能を有しているが、自コアと他コアで物理アドレス空間を共有しているか否かを判断するとともに、自コアとGPU104とで物理アドレス空間を共有しているか否かを判断する。すなわち、共有判断部1401a−1は、第1シミュレーションにおいて自コアが利用する記憶装置103の記憶領域と、GPUシミュレーションにおいてGPU104が利用する記憶領域とが一致しているか否かを判断する。第1シミュレーションにおいて自コアが利用する記憶装置103の記憶領域と、GPUシミュレーションにおいてGPU104が利用する記憶領域とが一致しない場合には、自コアとGPU104との同期をとらなくてもよい。
例えば、共有判断部1401a−1は、前述した共有状況テーブル1600から自コアについてのレコードを参照することによって物理アドレス空間を共有するコアまたはGPUがあるか否かの判断を行う。
(実施例4にかかる計算装置100が行う計算処理手順例)
全体の計算処理の流れと、ホストコードの生成処理の流れは、図10、図11に示したフローチャートと同じであるため、説明を省略する。
図23は、実施例4にかかる計算装置によるキャッシュメモリについてのヘルパー関数に従う計算処理手順例を示すフローチャートである。
ステップS2301の処理は、図12に示したステップS1201の処理と同じであるため説明を省略する。ステップS2302の処理では、計算装置100は、シミュレーションsim1,sim2のアクセス時刻とアクセス先アドレスだけでなく、GPUシミュレーションのアクセス時刻とアクセス先アドレスも記録する。
ステップS2103の処理では、計算装置100は、前述した共有状況テーブル1600に基づいて、物理アドレス空間を共有するコアがあるか否か、または、GPU利用時には、GPUと物理アドレス空間を共有するコアがあるか否かを判断する。物理アドレス空間を共有するコアまたは、GPU利用時であってGPUと物理アドレス空間を共有するコアがあると判断された場合(ステップS2303:Yes)、ステップS2304の処理が行われる。物理アドレス空間を共有するコアがなく、GPUが利用されない、もしくはGPU利用時であってもGPUと物理アドレス空間を共有するコアがないと判断された場合(ステップS2303:No)、ステップS2306の処理が行われる。
例えば、GPU104が描画処理などで単独で動作していて、物理アドレス空間を共有するコアもない場合には、ステップS2303の処理から、ステップS2306の処理への遷移が行われる。
ステップS2304,S2305の処理は、図21に示したステップS2103,S2104の処理と同じであり、ステップS2306〜S2311の処理は、図12に示したステップS1205〜S1210の処理と同じであるため説明を省略する。
以上説明したような第2の実施の形態の計算装置および計算方法でも、第1の実施の形態の計算装置および計算方法と同様の効果が得られる。さらに、CPU(マルチコアプロセッサ)でのシミュレーションとGPUシミュレーションとの同期が行われることによって、CPUとGPU間の記憶装置へのアクセス命令の実行順序のシミュレーション精度が向上する。これによりGPUの記憶装置へのアクセスを考慮した性能値が算出できるため、性能値の計算精度が向上する。
また、記憶装置へのアクセス命令発生時の、第1シミュレーションにおける時刻がGPUシミュレーションにおける時刻よりも遅れている場合には、同期処理を行わないことによってシミュレーションに要する時間の短縮化を図ることができる。
また、CPUとGPUとで共有する、記憶装置の記憶領域(物理アドレス空間)がない場合、もしくは、GPUを利用していない場合、同期処理を行わないことによってシミュレーションに要する時間の短縮化を図ることができる。
なお、本実施の形態で説明した計算方法は、予め用意された計算プログラムをパーソナル・コンピュータやワークステーションなどのコンピュータで実行することにより実現することができる。本計算プログラムは、磁気ディスク、光ディスク、USB(Universal Serial Bus)フラッシュメモリなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、計算プログラムは、インターネットなどのネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1) 同一のキャッシュメモリを介して同一の記憶装置にアクセス可能な第1コアおよび第2コアを有するマルチコアプロセッサについて、
前記記憶装置へのアクセスを指示する第1アクセス命令を有する第1コードを前記第1コアが実行した場合の前記第1コードの第1性能値を、前記第1コアが前記第1コードを実行する動作の第1シミュレーションによって計算する第1計算処理と、
前記記憶装置へのアクセスを指示する第2アクセス命令を有する第2コードを前記第2コアが実行した場合の前記第2コードの第2性能値を、前記第2コアが前記第2コードを実行する動作の第2シミュレーションによって計算する第2計算処理と、
前記第1シミュレーションにおいて前記第1アクセス命令が実行される場合に、前記第1シミュレーションと前記第2シミュレーションとの同期を行う同期処理と、
前記同期処理による前記同期の後に、前記第1アクセス命令によって前記第1コアが前記キャッシュメモリを介して前記記憶装置にアクセスする場合の前記キャッシュメモリの動作の第3シミュレーションによって、前記第1計算処理によって計算される前記第1性能値の補正を行う補正処理と、
を実行する制御部を有することを特徴とする計算装置。
(付記2) 前記制御部は、
前記第1シミュレーションにおける時刻が前記第2シミュレーションにおける時刻よりも遅れている場合に、前記同期処理を実行せずに前記補正処理を行うことを特徴とする付記1に記載の計算装置。
(付記3) 前記制御部は、
前記第1シミュレーションにおいて前記第1アクセス命令が実行される場合に、前記記憶装置のうちの前記第1シミュレーションにおいて前記第1コアが利用する第1の記憶領域と、前記記憶装置のうちの前記第2シミュレーションにおいて前記第2コアが利用する第2の記憶領域と、が一致しているか否かを判断する判断処理を実行し、
前記判断処理によって一致していないと判断された場合、前記同期処理を実行せずに前記補正処理を行うことを特徴とする付記1または2に記載の計算装置。
(付記4) 前記制御部は、
前記第1シミュレーションにおいて前記第1アクセス命令が実行される場合に、前記第1シミュレーションと、前記記憶装置にアクセス可能なアクセラレータの動作をシミュレートするアクセラレータシミュレーションとの同期を行う第2同期処理を実行し、
前記第2同期処理の後に、前記補正処理を行うことを特徴とする付記1に記載の計算装置。
(付記5) 前記制御部は、前記第1シミュレーションにおける時刻が前記アクセラレータシミュレーションにおける時刻よりも遅れている場合に、前記第2同期処理を省くことを特徴とする付記4に記載の計算装置。
(付記6) 前記制御部は、前記第1シミュレーションにおいて前記第1アクセス命令が実行される場合に、前記記憶装置のうちの前記第1シミュレーションにおいて前記第1コアが利用する第1の記憶領域と、前記記憶装置のうちの前記アクセラレータシミュレーションにおいて前記アクセラレータが利用する第3の記憶領域とが一致していない場合、前記第2同期処理を省くことを特徴とする付記4または5に記載の計算装置。
(付記7) 前記制御部は、
前記第2シミュレーションにおいて前記第2アクセス命令が実行される場合に、前記第1シミュレーションと前記第2シミュレーションとの同期を行う第3同期処理と、
前記第3同期処理による前記同期の後に、前記第2アクセス命令によって前記第2コアが前記キャッシュメモリを介して前記記憶装置にアクセスする場合の前記第3シミュレーションによって、前記第2計算処理によって計算される前記第2性能値の補正を行う第2補正処理と、
を実行することを特徴とする付記1〜3のいずれか一つに記載の計算装置。
(付記8) 前記制御部は、
前記第2シミュレーションにおける時刻が前記第1シミュレーションにおける時刻よりも遅れている場合に、前記第3同期処理を実行せずに前記第2性能値の補正を行うことを特徴とする付記7に記載の計算装置。
(付記9) 前記制御部は、
前記第2シミュレーションにおいて前記第1アクセス命令が実行される場合に、前記記憶装置のうちの前記第1シミュレーションにおいて前記第2コアが利用する記憶領域と、前記記憶装置のうちの前記第1シミュレーションにおいて前記第2コアが利用する記憶領域と、が一致しているか否かを判断する第2判断処理を実行し、
前記第2判断処理によって一致していないと判断された場合、前記第3同期処理を実行せずに前記第2性能値の補正を行うことを特徴とする付記7または8に記載の計算装置。
(付記10) コンピュータが、
同一のキャッシュメモリを介して同一の記憶装置にアクセス可能な第1コアおよび第2コアを有するマルチコアプロセッサについて、
前記記憶装置へのアクセスを指示する第1アクセス命令を有する第1コードを前記第1コアが実行した場合の前記第1コードの第1性能値を、前記第1コアが前記第1コードを実行する動作の第1シミュレーションによって計算する第1計算処理と、
前記記憶装置へのアクセスを指示する第2アクセス命令を有する第2コードを前記第2コアが実行した場合の前記第2コードの第2性能値を、前記第2コアが前記第2コードを実行する動作の第2シミュレーションによって計算する第2計算処理と、
前記第1シミュレーションにおいて前記第1アクセス命令が実行される場合に、前記第1シミュレーションと前記第2シミュレーションとの同期を行う同期処理と、
前記同期処理による前記同期の後に、前記第1アクセス命令によって前記第1コアが前記キャッシュメモリを介して前記記憶装置にアクセスする場合の前記キャッシュメモリの動作の第3シミュレーションによって、前記第1計算処理によって計算される前記第1性能値の補正を行う補正処理と、
を実行することを特徴とする計算方法。
(付記11) コンピュータに、
同一のキャッシュメモリを介して同一の記憶装置にアクセス可能な第1コアおよび第2コアを有するマルチコアプロセッサについて、
前記記憶装置へのアクセスを指示する第1アクセス命令を有する第1コードを前記第1コアが実行した場合の前記第1コードの第1性能値を、前記第1コアが前記第1コードを実行する動作の第1シミュレーションによって計算する第1計算処理と、
前記記憶装置へのアクセスを指示する第2アクセス命令を有する第2コードを前記第2コアが実行した場合の前記第2コードの第2性能値を、前記第2コアが前記第2コードを実行する動作の第2シミュレーションによって計算する第2計算処理と、
前記第1シミュレーションにおいて前記第1アクセス命令が実行される場合に、前記第1シミュレーションと前記第2シミュレーションとの同期を行う同期処理と、
前記同期処理による前記同期の後に、前記第1アクセス命令によって前記第1コアが前記キャッシュメモリを介して前記記憶装置にアクセスする場合の前記キャッシュメモリの動作の第3シミュレーションによって、前記第1計算処理によって計算される前記第1性能値の補正を行う補正処理と、
を実行させることを特徴とする計算プログラム。
100 計算装置
101 マルチコアプロセッサ
102 キャッシュメモリ
103 記憶装置
111 第1コア
112 第2コア
421 コード実行部
422 同期部
423 補正部
1401 共有判断部
sim1 第1シミュレーション
sim2 第2シミュレーション
sim3 第3シミュレーション
c1 第1コード
c2 第2コード

Claims (8)

  1. 同一のキャッシュメモリを介して同一の記憶装置にアクセス可能な第1コアおよび第2コアを有するマルチコアプロセッサについて、
    前記記憶装置へのアクセスを指示する第1アクセス命令を有する第1コードを前記第1コアが実行した場合の前記第1コードの第1性能値を、前記第1コアが前記第1コードを実行する動作の第1シミュレーションによって計算する第1計算処理と、
    前記記憶装置へのアクセスを指示する第2アクセス命令を有する第2コードを前記第2コアが実行した場合の前記第2コードの第2性能値を、前記第2コアが前記第2コードを実行する動作の第2シミュレーションによって計算する第2計算処理と、
    前記第1シミュレーションにおいて前記第1アクセス命令が実行される場合に、前記第1シミュレーションと前記第2シミュレーションとの同期を行う同期処理と、
    前記同期処理による前記同期の後に、前記第1アクセス命令によって前記第1コアが前記キャッシュメモリを介して前記記憶装置にアクセスする場合の前記キャッシュメモリの動作の第3シミュレーションによって、前記第1計算処理によって計算される前記第1性能値の補正を行う補正処理と、
    を実行する制御部を有することを特徴とする計算装置。
  2. 前記制御部は、
    前記第1シミュレーションにおける時刻が前記第2シミュレーションにおける時刻よりも遅れている場合に、前記同期処理を実行せずに前記補正処理を行うことを特徴とする請求項1に記載の計算装置。
  3. 前記制御部は、
    前記第1シミュレーションにおいて前記第1アクセス命令が実行される場合に、前記記憶装置のうちの前記第1シミュレーションにおいて前記第1コアが利用する第1の記憶領域と、前記記憶装置のうちの前記第2シミュレーションにおいて前記第2コアが利用する第2の記憶領域と、が一致しているか否かを判断する判断処理を実行し、
    前記判断処理によって一致していないと判断された場合、前記同期処理を実行せずに前記補正処理を行うことを特徴とする請求項1または2に記載の計算装置。
  4. 前記制御部は、
    前記第1シミュレーションにおいて前記第1アクセス命令が実行される場合に、前記第1シミュレーションと、前記記憶装置にアクセス可能なアクセラレータの動作をシミュレートするアクセラレータシミュレーションとの同期を行う第2同期処理を実行し、
    前記第2同期処理の後に、前記補正処理を行うことを特徴とする請求項1に記載の計算装置。
  5. 前記制御部は、前記第1シミュレーションにおける時刻が前記アクセラレータシミュレーションにおける時刻よりも遅れている場合に、前記第2同期処理を省くことを特徴とする請求項4に記載の計算装置。
  6. 前記制御部は、前記第1シミュレーションにおいて前記第1アクセス命令が実行される場合に、前記記憶装置のうちの前記第1シミュレーションにおいて前記第1コアが利用する第1の記憶領域と、前記記憶装置のうちの前記アクセラレータシミュレーションにおいて前記アクセラレータが利用する第3の記憶領域とが一致していない場合、前記第2同期処理を省くことを特徴とする請求項4または5に記載の計算装置。
  7. コンピュータが、
    同一のキャッシュメモリを介して同一の記憶装置にアクセス可能な第1コアおよび第2コアを有するマルチコアプロセッサについて、
    前記記憶装置へのアクセスを指示する第1アクセス命令を有する第1コードを前記第1コアが実行した場合の前記第1コードの第1性能値を、前記第1コアが前記第1コードを実行する動作の第1シミュレーションによって計算する第1計算処理と、
    前記記憶装置へのアクセスを指示する第2アクセス命令を有する第2コードを前記第2コアが実行した場合の前記第2コードの第2性能値を、前記第2コアが前記第2コードを実行する動作の第2シミュレーションによって計算する第2計算処理と、
    前記第1シミュレーションにおいて前記第1アクセス命令が実行される場合に、前記第1シミュレーションと前記第2シミュレーションとの同期を行う同期処理と、
    前記同期処理による前記同期の後に、前記第1アクセス命令によって前記第1コアが前記キャッシュメモリを介して前記記憶装置にアクセスする場合の前記キャッシュメモリの動作の第3シミュレーションによって、前記第1計算処理によって計算される前記第1性能値の補正を行う補正処理と、
    を実行することを特徴とする計算方法。
  8. コンピュータに、
    同一のキャッシュメモリを介して同一の記憶装置にアクセス可能な第1コアおよび第2コアを有するマルチコアプロセッサについて、
    前記記憶装置へのアクセスを指示する第1アクセス命令を有する第1コードを前記第1コアが実行した場合の前記第1コードの第1性能値を、前記第1コアが前記第1コードを実行する動作の第1シミュレーションによって計算する第1計算処理と、
    前記記憶装置へのアクセスを指示する第2アクセス命令を有する第2コードを前記第2コアが実行した場合の前記第2コードの第2性能値を、前記第2コアが前記第2コードを実行する動作の第2シミュレーションによって計算する第2計算処理と、
    前記第1シミュレーションにおいて前記第1アクセス命令が実行される場合に、前記第1シミュレーションと前記第2シミュレーションとの同期を行う同期処理と、
    前記同期処理による前記同期の後に、前記第1アクセス命令によって前記第1コアが前記キャッシュメモリを介して前記記憶装置にアクセスする場合の前記キャッシュメモリの動作の第3シミュレーションによって、前記第1計算処理によって計算される前記第1性能値の補正を行う補正処理と、
    を実行させることを特徴とする計算プログラム。
JP2014248968A 2014-07-23 2014-12-09 計算装置、計算方法、および計算プログラム Expired - Fee Related JP6394341B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014248968A JP6394341B2 (ja) 2014-07-23 2014-12-09 計算装置、計算方法、および計算プログラム
US14/800,277 US10402510B2 (en) 2014-07-23 2015-07-15 Calculating device, calculation method, and calculation program

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2014150157 2014-07-23
JP2014150157 2014-07-23
JP2014248968A JP6394341B2 (ja) 2014-07-23 2014-12-09 計算装置、計算方法、および計算プログラム

Publications (2)

Publication Number Publication Date
JP2016029554A JP2016029554A (ja) 2016-03-03
JP6394341B2 true JP6394341B2 (ja) 2018-09-26

Family

ID=55166928

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014248968A Expired - Fee Related JP6394341B2 (ja) 2014-07-23 2014-12-09 計算装置、計算方法、および計算プログラム

Country Status (2)

Country Link
US (1) US10402510B2 (ja)
JP (1) JP6394341B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6223637B2 (ja) * 2015-05-29 2017-11-01 三菱電機株式会社 シミュレーション装置及びシミュレーション方法及びシミュレーションプログラム
US11861272B2 (en) * 2016-10-20 2024-01-02 Oracle International Corporation Comprehensive contention-based thread allocation and placement
US11151002B2 (en) 2019-04-05 2021-10-19 International Business Machines Corporation Computing with unreliable processor cores
JP7305052B2 (ja) * 2020-07-28 2023-07-07 三菱電機株式会社 遅延量更新装置、処理システム及びプログラム

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0588912A (ja) 1991-09-27 1993-04-09 Nitto Seiko Co Ltd マルチプロセツサシミユレータ
JPH08339388A (ja) 1995-06-09 1996-12-24 Fujitsu Ltd マルチプロセッサシステムにおける論理シミュレーション方法
JP3746371B2 (ja) * 1998-04-09 2006-02-15 株式会社日立製作所 性能シミュレーション方法
JP2002288003A (ja) 2001-03-26 2002-10-04 Nec Corp シミュレーション方法およびシミュレーションプログラム
US7000079B2 (en) * 2003-04-17 2006-02-14 International Business Machines Corporation Method and apparatus for verification of coherence for shared cache components in a system verification environment
US7991602B2 (en) * 2005-01-27 2011-08-02 Rockwell Automation Technologies, Inc. Agent simulation development environment
JP4820654B2 (ja) 2006-02-06 2011-11-24 富士通セミコンダクター株式会社 サイクルシミュレーション方法、サイクルシミュレーションプログラム、該プログラムを記録した記録媒体、およびサイクルシミュレータ
CN101256502B (zh) * 2007-02-27 2011-02-09 国际商业机器公司 模拟多处理器系统的系统和方法
US20110153529A1 (en) * 2009-12-23 2011-06-23 Bracy Anne W Method and apparatus to efficiently generate a processor architecture model
JP2011203803A (ja) 2010-03-24 2011-10-13 Toshiba Corp デバッグ支援装置及びデバッグ支援用プログラム
KR101136850B1 (ko) * 2010-07-22 2012-04-20 연세대학교 산학협력단 중앙 처리 장치, 그것의 gpu 시뮬레이션 방법 그리고 그것을 포함하는 컴퓨팅 시스템
JP2013025403A (ja) * 2011-07-15 2013-02-04 Toshiba Corp プログラム生成装置
JP5961971B2 (ja) 2011-10-12 2016-08-03 富士通株式会社 シミュレーション装置,方法,およびプログラム
CA2755605C (en) * 2011-10-21 2019-08-13 Ibm Canada Limited - Ibm Canada Limitee Online simulation model optimization

Also Published As

Publication number Publication date
US20160026741A1 (en) 2016-01-28
JP2016029554A (ja) 2016-03-03
US10402510B2 (en) 2019-09-03

Similar Documents

Publication Publication Date Title
JP6394341B2 (ja) 計算装置、計算方法、および計算プログラム
US9785443B2 (en) Data cache system and method
CN101452396B (zh) 结合静态优化的动态二进制翻译方法
US8738349B2 (en) Gate-level logic simulator using multiple processor architectures
CN110688256A (zh) 一种元数据上电恢复方法、装置、电子设备及存储介质
JPWO2012127590A1 (ja) エンディアン変換方法、およびシステム
Wang et al. Fast and accurate cache modeling in source-level simulation of embedded software
US11226798B2 (en) Information processing device and information processing method
CN104133668B (zh) 用于转换多线程程序代码的设备和方法
JP5059174B2 (ja) プログラム変換装置、およびそのプログラム
CN103942082A (zh) 一种消除冗余的内存访问操作的编译优化方法
JP2007310449A (ja) ソフトウェア/ハードウェア協調設計のためのモデル生成プログラム、およびモデル生成方法
KR102574449B1 (ko) 데이터 처리 방법 및 장치
JP6287650B2 (ja) シミュレーション方法、シミュレーションプログラム
JP5979965B2 (ja) 回路設計支援装置及び回路設計支援方法及びプログラム
KR101754998B1 (ko) 멀티 코어 시스템 및 멀티 코어 시스템에서의 데이터 병렬 처리 방법
JP6519228B2 (ja) データ配置決定装置、データ配置決定プログラム及びデータ配置決定方法
CN108846248B (zh) 一种应用建模及性能预测方法
JP4860240B2 (ja) 翻訳方法および実行通知命令の埋め込み方法
JP2009211540A (ja) コンピュータ使用可能コードを実行する装置及び方法
JP6187264B2 (ja) 計算方法、計算プログラム、および計算装置
JP2014010754A (ja) プログラム開発支援装置、及びプログラム開発支援ツール
JP2011022863A (ja) 動作合成装置及び動作合成方法
KR101171655B1 (ko) 동적 바이너리 변환을 위한 트레이스 결정 방법
CN109710268B (zh) 面向vliw架构的动态二进制翻译方法和装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170804

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180718

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180731

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180813

R150 Certificate of patent or registration of utility model

Ref document number: 6394341

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees