JP5794133B2 - データ処理装置、変換装置、データ処理システム、変換方法、および変換プログラム - Google Patents

データ処理装置、変換装置、データ処理システム、変換方法、および変換プログラム Download PDF

Info

Publication number
JP5794133B2
JP5794133B2 JP2011271782A JP2011271782A JP5794133B2 JP 5794133 B2 JP5794133 B2 JP 5794133B2 JP 2011271782 A JP2011271782 A JP 2011271782A JP 2011271782 A JP2011271782 A JP 2011271782A JP 5794133 B2 JP5794133 B2 JP 5794133B2
Authority
JP
Japan
Prior art keywords
code
instruction
conversion
information
unit
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
JP2011271782A
Other languages
English (en)
Other versions
JP2013122740A (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 JP2011271782A priority Critical patent/JP5794133B2/ja
Publication of JP2013122740A publication Critical patent/JP2013122740A/ja
Application granted granted Critical
Publication of JP5794133B2 publication Critical patent/JP5794133B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Description

本発明は、ハードウェア・アクセラレーションに関するデータ処理装置、変換装置、データ処理システム、変換方法、および変換プログラムに関する。
従来から、特定の処理に対して、CPU(Central Processing Unit)の上でソフトウェアを実行する場合より高速に行うために、CPUに対し付加的なハードウェアを用意して、特定の処理を高速に実行することが行われている。このような技術は、ハードウェア・アクセラレーションと呼ばれ、また、付加的なハードウェアは、アクセラレータと呼ばれる。アクセラレータとして、たとえば、画像処理を行うGPU(Graphics Processing Unit)、デジタル信号処理を行うDSP(Digital Signal Processor)等が存在する。
アクセラレータは、アクセラレータが実行可能なネイティブ命令を有している。または、互換性のために抽象化された中間命令も存在し、開発者は、中間命令にてアプリケーションソフトウェアの開発を行ってもよい。以下の説明では、アプリケーションソフトウェアをアプリと称する。中間命令が含まれたアプリの実行時、CPUは、JIT(Just In Time)コンパイラによって、中間命令をネイティブ命令に変換し、アクセラレータに変換後のネイティブ命令を実行させる。
たとえば、アクセラレータを用いる技術として、Java(登録商標)の中間命令に関して、Javaアクセラレータが実行可能な中間命令についてはネイティブ命令に変換してJavaアクセラレータが実行し、他の中間命令についてはCPUが実行するものがある。また、Javaアクセラレータに関して、Javaスタックマシンをレジスタマシンで再現する場合、冗長となるLoad命令を供給しないことで、Javaプログラムの実行速度を向上させる技術が開示されている(たとえば、下記特許文献1、2を参照。)。
特開2004−280766号公報 特開2009−176311号公報
しかしながら、上述した従来技術において、開発者が、アクセラレータの動作のデバッグや、チューニングのために、実行履歴や実行回数を取得したい場合、アクセラレータ側の機構を用いるので、アクセラレータのネイティブ命令の単位で取得することになる。開発者は、中間命令を用いて開発を行っているため、ネイティブ命令の単位による実行履歴、実行回数を取得しても、デバッグ、チューニングが行い難いという問題がある。
本発明は、上述した従来技術による問題点を解消するため、デバッグを効率化できるデータ処理装置、変換装置、データ処理システム、変換方法、および変換プログラムを提供することを目的とする。
上述した課題を解決し、目的を達成するため、本発明の一側面によれば、命令コードと、命令コードに関連付けられた命令コードの変換前のコードを特定する情報と、を受け付け、命令コードの実行により、変換前のコードを特定する情報を記録するデータ処理装置が提案される。
また、他の側面によれば、一連の命令コードに対する注釈を示す情報と一連の命令コードの変換前のコードを特定する情報とを含む注釈コードまたは一連の命令コードを受け付け、注釈コードが受け付けられた場合、一連の命令コードの実行前に、一連の命令コードの変換前のコードを特定する情報を記録し、一連の命令コードが受け付けられた場合、一連の命令コードを実行するデータ処理装置が提案される。
また、他の側面によれば、命令コードと命令コードの変換前のコードとの組合せを記憶し、変換前のコードが検出された場合、記憶された組合せを参照して、変換前のコードを、命令コードと命令コードに関連付けられた変換前のコードを特定する情報とに変換し、命令コードと命令コードに関連付けられた変換前のコードを特定する情報とを、自装置から他装置に送信する変換装置、変換方法、および変換プログラムが提案される。
また、他の側面によれば、第1の装置と、特定の処理を実行する第2の装置と、を含むデータ処理システムであって、第2の装置が実行可能な命令コードと命令コードの変換前のコードとの組合せを記憶し、変換前のコードが検出された場合、変換前のコードを、命令コードと命令コードに関連付けられた変換前のコードを特定する情報と、に変換し、命令コードと命令コードに関連付けられた変換前のコードを特定する情報とを、第1の装置から第2の装置に送信し、第2の装置によって、命令コードと命令コードに関連付けられた変換前のコードを特定する情報とを受け付け、第2の装置によって、命令コードの実行により、変換前のコードを特定する情報を記録するデータ処理システムが提案される。
本発明の一側面によれば、デバッグの効率化を図ることができるという効果を奏する。
図1は、実施の形態1におけるアクセラレータの動作例を示す説明図である。 図2は、実施の形態1にかかるデータ処理システムのハードウェアの一例を示すブロック図である。 図3は、実施の形態1にかかるデータ処理システムの機能例を示すブロック図である。 図4は、ソフトウェアおよび入出力データの一例を示す説明図である。 図5は、データ処理システムの動作例を示すシーケンス図である。 図6は、テンプレート情報の記憶内容の一例を示す説明図である。 図7は、実施の形態1におけるJITコンパイラによる中間命令の変換例を示す説明図である。 図8は、中間命令での実行履歴および実行回数の具体例を示す説明図である。 図9は、JITコンパイラによる変換処理の一例を示すフローチャートである。 図10は、実施の形態1におけるアクセラレータの動作例を示すフローチャートである。 図11は、実施の形態2にかかるデータ処理システムの機能例を示すブロック図である。 図12は、実施の形態2におけるJITコンパイラによる中間命令の変換例を示す説明図である。 図13は、実施の形態2におけるアクセラレータの動作例を示すフローチャートである。 図14は、実施の形態3にかかるデータ処理システムの機能例を示すフローチャートである。 図15は、実施の形態3におけるJITコンパイラによる中間命令の変換例を示す説明図である。 図16は、実施の形態3におけるアクセラレータの動作例を示すフローチャートである。 図17は、実施の形態1〜3にかかるコンピュータを用いたシステムの適用例を示す説明図である。
以下に添付図面を参照して、開示のデータ処理装置、変換装置、データ処理システム、変換方法、および変換プログラムの実施の形態を詳細に説明する。以下の説明では、データ処理装置をアクセラレータとして、変換装置をCPUとして説明している。
(実施の形態1の説明)
図1は、実施の形態1におけるアクセラレータの動作例を示す説明図である。データ処理システム100は、CPU101と、GPU、DSPなどのアクセラレータ102と、を含む。CPU101とアクセラレータ102は、バス103で接続されている。
CPU101は、事前に、中間命令111を、アクセラレータ102のネイティブ命令112と中間命令111を特定する情報113とに変換している。また、実施の形態1では、アクセラレータ102は、特定の処理を高速に実行することの他に、中間命令111単位で示された性能情報121を提供することも目的としている。性能情報121は、命令の実行履歴や実行回数が記録された情報である。
アクセラレータ102は、CPU101から、アクセラレータ102のネイティブ命令112と、ネイティブ命令112に関連付けられた中間命令111を特定する情報113と、を受け付ける。
図1の例では、アクセラレータ102は、1命令目として、ネイティブ命令112−1が“NOT R3,1”であり、情報113−1として、“ldrp”を受け付ける。また、アクセラレータ102は、2命令目として、ネイティブ命令112−2が“AND R3,R2,R3”であり、情報113−2として、“and”を受け付ける。
次に、アクセラレータ102は、ネイティブ命令112“NOT R3,1”、“AND R3,R2,R3”を実行し、中間命令を特定する情報113“ldrp”、“and”を記録する。これにより、CPU101は、中間命令単位で命令の実行履歴や実行回数を開発者に提供できるため、開発者によるデバッグを効率化できる。以下、図1に示した動作を行うデータ処理システム100の詳細を、図2〜図10を用いて説明する。
(データ処理システム100のハードウェア)
図2は、実施の形態1にかかるデータ処理システムのハードウェアの一例を示すブロック図である。図2において、データ処理システム100は、CPU101と、アクセラレータ102と、ROM(Read‐Only Memory)201と、RAM(Random Access Memory)202と、を含む。また、データ処理システム100は、磁気ディスクドライブ203と、磁気ディスク204と、光ディスクドライブ205と、光ディスク206と、を含む。また、ユーザやその他の機器との入出力装置としてデータ処理システム100は、ディスプレイ207と、I/F(Interface)208と、キーボード209と、マウス210と、を含む。また、各部はバス103によってそれぞれ接続されている。
ここで、CPU101は、データ処理システム100の全体の制御を司る。アクセラレータ102は、CPU101からの指示により、特定の処理を実行する。また、アクセラレータ102がGPUである場合、GPUを画像処理以外となる、より一般的な計算処理に使用するGPGPU(General−Purpose computing on GPU)という技術が適用される場合もある。
ROM201は、ブートプログラムなどのプログラムを記憶している。RAM202は、CPU101のワークエリアとして使用される。磁気ディスクドライブ203は、CPU101の制御にしたがって磁気ディスク204に対するデータのリード/ライトを制御する。磁気ディスク204は、磁気ディスクドライブ203の制御で書き込まれたデータを記憶する。
光ディスクドライブ205は、CPU101の制御にしたがって光ディスク206に対するデータのリード/ライトを制御する。光ディスク206は、光ディスクドライブ205の制御で書き込まれたデータを記憶したり、光ディスク206に記憶されたデータをコンピュータに読み取らせたりする。なお、ROM201、磁気ディスク204、光ディスク206のいずれかの記憶装置に、実施の形態1〜3にかかる変換プログラムが格納されていてもよい。
ディスプレイ207は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。たとえば、ディスプレイ207は、CRT、TFT液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
I/F208は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワーク211に接続され、ネットワーク211を介して他の装置に接続される。そして、I/F208は、ネットワーク211と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F208には、たとえばモデムやLANアダプタなどを採用することができる。
キーボード209は、文字、数字、各種指示などの入力のためのキーを有し、データの入力を行う。また、キーボード209は、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス210は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などを行う。また、データ処理システム100は、マウス210の代わりとして、ポインティングデバイスとして同様に機能を有するものであれば、トラックボールやジョイスティックなどであってもよい。
(データ処理システム100の機能)
次に、データ処理システム100の機能について説明する。図3は、実施の形態1にかかるデータ処理システムの機能例を示すブロック図である。データ処理システム100では、CPU101がJITコンパイラ301と、デバイスドライバ302を実行する。また、実施の形態1にかかるデータ処理システム100は、受付部311と、判断部312と、実行部313と、記録部314と、出力部315と、記憶部321と、検出部322と、変換部323と、送信部324と、取得部325を含む。検出部322〜取得部325は、記憶装置に記憶されたプログラムをCPU101が実行することにより、その機能を実現する。ここで、記憶装置とは、具体的には、たとえば、図2に示したROM201、RAM202、磁気ディスク204、光ディスク206などである。
また、アクセラレータ102は、性能情報121にアクセス可能である。性能情報121は、中間面例単位での命令の実行履歴や実行回数が記録された情報である。性能情報121が、実行履歴と、実行回数と、のうちいずれを記録するのかについては、アクセラレータ102の初期時に、CPU101により設定されてもよいし、アクセラレータ102を用いるアプリの初期設定によって設定されてもよい。
また、CPU101は、テンプレート情報331にアクセス可能である。テンプレート情報331は、中間命令とネイティブ命令との変換方法を示すテーブルである。テンプレート情報331の詳細は、図6にて後述する。また、テンプレート情報331は、RAM202、磁気ディスク204、光ディスク206などの記憶領域に存在する。
JITコンパイラ301は、中間命令から、中間命令の情報を含んだネイティブ命令に変換する機能を有する。具体的な変換方法については、図6、図7にて後述する。デバイスドライバ302は、アクセラレータ102を制御するソフトウェアである。具体的な動作については、図4にて説明する。なお、受付部311〜出力部315は、アクセラレータ102が有する機能であり、変換部323は、JITコンパイラ301が有する機能であり、送信部324、取得部325は、デバイスドライバ302が有する機能である。
受付部311は、命令コードと、命令コードに関連付けられた命令コードの変換前のコードを特定する情報と、を受け付ける機能を有する。ここで、命令コードは、アクセラレータ102のネイティブ命令であり、変換前のコードは、中間命令である。関連付けの方法としては、たとえば、命令コードと変換前のコードが1命令内の前後で結合していてもよいし、順序が入れ替わってもよい。また、変換前のコードを特定する情報とは、変換前のコードを一意にする識別情報であり、たとえば、中間命令のオペコード部分である。また、変換前のコードを特定する情報は、変換前のコードそのものであってもよい。
たとえば、受付部311は、命令コードである“NOT R3,1”と、変換前のコードである“ldrp”を受け付ける。なお、受け付けた情報は、アクセラレータ102のレジスタ等といった記憶領域に記憶される。
判断部312は、受付部311によって受け付けた変換前のコードを特定する情報が、変換前のコードが存在しないことを示す情報であるか否かを判断する機能を有する。変換前のコードが存在しないことを示す情報は、たとえば、全ての中間命令に対応しないビットコードでもよいし、また、全ての中間命令に対応しないビット列がなければ、“nop”を示すビットコードでもよい。なお、判断結果は、アクセラレータ102のレジスタ等といった記憶領域に記憶される。
実行部313は、命令コードを実行する機能を有する。たとえば、実行部313は、ネイティブ命令“NOT”、ネイティブ命令“AND”といった命令コードを実行する。なお、実行結果は、アクセラレータ102のレジスタ等といった記憶領域に記憶される。
記録部314は、実行部313による命令コードの実行により、変換前のコードを特定する情報を記録する機能を有する。たとえば、記録部314は、ネイティブ命令“NOT”の実行により、変換前のコードを特定する情報“ldrp”を記録する。また、記録するタイミングは、実行部313による命令コードの実行と同時でもよいし、前でも後でもよい。なお、記録部314は、変換前のコードを特定する情報を性能情報121として、アクセラレータ102のレジスタ等といった記憶領域に記録する。
また、記録部314は、判断部312によって変換前のコードを特定する情報が変換前のコードが存在しないことを示す情報であると判断された場合、命令コードの実行により、変換前のコードを特定する情報を記録しない。
また、記録部314は、命令コードの実行により、命令コードの実行順に変換前のコードを特定する情報を記録してもよい。たとえば、“NOT”、“AND”の順に実行した場合、記録部314は、“ldrp”、“and”の順に記録する。
また、記録部314は、命令コードの実行により、命令コードの実行回数を変換前のコードを特定する情報と対応づけて記録してもよい。たとえば、“NOT”、“AND”を1回ずつ実行した場合、記録部314は、“ldrp”が1回、“and”が1回というように記録する。
出力部315は、性能情報121を出力する機能を有する。たとえば、出力部315は、性能情報121となる中間命令単位となる実行履歴、実行回数を、アクセラレータ102内の、CPU101がアクセス可能な記憶領域に出力する。
記憶部321は、命令コードと命令コードの変換前のコードとの組合せを記憶する機能を有する。なお、各組は、テンプレート情報331の1レコードとして記録されている。なお、記憶部321は、RAM202、磁気ディスク204、光ディスク206などの記憶領域に存在する。
検出部322は、変換前のコードを検出する機能を有する。たとえば、検出部322は、画像処理を実行する中間命令を検出する。なお、検出結果は、CPU101のレジスタ、RAM202、磁気ディスク204、光ディスク206などの記憶領域に存在する。
変換部323は、記憶部321を参照して、変換前のコードを、命令コードと命令コードに関連付けられた変換前のコードを特定する情報とに変換する機能を有する。具体的な変換方法については、図6、図7にて説明する。なお、変換された情報は、CPU101のレジスタ、RAM202、磁気ディスク204、光ディスク206などの記憶領域に存在する。
送信部324は、命令コードと命令コードに関連付けられた変換前のコードを特定する情報とを、他装置に送信する機能を有する。たとえば、送信部324は、命令コード“NOT R3,1”、変換前のコードを特定する情報“ldrp”をアクセラレータ102に送信する。
取得部325は、アクセラレータ102から性能情報121を取得する。たとえば、取得部325は、所定の周期で、アクセラレータ102から性能情報121を取得する。取得した性能情報121は、RAM202、磁気ディスク204、光ディスク206などの記憶領域に存在する。次に、図4にて、データ処理システム100で使用されるソフトウェアおよび入出力データについて説明する。
図4は、ソフトウェアおよび入出力データの一例を示す説明図である。データ処理システム100にて実行されるソフトウェア、またはアクセラレータ102に対して入力、または出力されるデータとして、性能情報121、ソースコード401、ネイティブ命令402、入力データ403、出力データ404がある。データ処理システム100にて実行されるソフトウェアとして、JITコンパイラ301、コンパイラ411、アプリ412、デバイスドライバ302がある。
ソースコード401は、プログラミング言語にしたがって記述されたコンピュータプログラムである。ソースコード401の中には、CPU101にて実行される部分と、アクセラレータ102によって実行される部分が存在する。
ネイティブ命令402は、アクセラレータ102が直接実行可能な命令で記載された実行コードである。入力データ403は、アクセラレータ102に対して入力されるデータである。出力データ404は、アクセラレータ102から出力されるデータである。
コンパイラ411は、ソースコード401から、CPU101が実行可能なソフトウェアを生成する機能を有する。図4の例では、コンパイラ411は、ソースコード401からアプリ412を生成する。
アプリ412は、データ処理システム100にて実行可能なソフトウェアである。アプリ412は、CPU101にて実行される実行コードと、アクセラレータ102によって実行される中間命令が含まれている。
デバイスドライバ302は、アクセラレータ102を制御するソフトウェアである。具体的に、デバイスドライバ302は、API(Application Programming Interface)を有し、アプリ412とアクセラレータ102のデータの入出力を行う。たとえば、デバイスドライバ302は、入力データ403を受け付け、アクセラレータ102がアクセス可能なバッファに、入力データ403を書き込む。
また、デバイスドライバ302は、アクセラレータ102のレジスタを参照し、出力データ404が読込可能である場合、出力データ404を読み込み、CPU101がアクセス可能な記憶領域に退避する。同様に、デバイスドライバ302は、性能情報121を取得し、CPU101がアクセス可能な記憶領域に退避する。続けて、図5にて、図4で説明したソフトウェア、アクセラレータ102の動作をシーケンス図にて示す。
図5は、データ処理システムの動作例を示すシーケンス図である。アプリ412は、中間命令の実行要求をJITコンパイラ301に送信する(ステップS501)。中間命令を受け付けたJITコンパイラ301は、中間命令をネイティブ命令402に変換する(ステップS502)。次に、JITコンパイラ301は、デバイスドライバ302にネイティブ命令を送信する(ステップS503)。ネイティブ命令を受け付けたデバイスドライバ302は、アクセラレータ102にネイティブ命令を送信する(ステップS504)。
ネイティブ命令を受け付けたアクセラレータ102は、ネイティブ命令402を実行し(ステップS505)、さらに、性能情報121となる、中間命令を特定する情報を記録する(ステップS506)。次に、アクセラレータ102は、デバイスドライバ302に出力データ404を送信する(ステップS507)。出力データ404を受け付けたデバイスドライバ302は、アプリ412に出力データ404を送信する(ステップS508)。また、アクセラレータ102は、所定の周期で、デバイスドライバ302に性能情報121を出力する(ステップS509)。
図6は、テンプレート情報の記憶内容の一例を示す説明図である。テンプレート情報331は、レコード331−1〜レコード331−7までを登録している。テンプレート情報331は、パターン、パターン適合条件、テンプレートコードという3つのフィールドを含む。パターンフィールドには、変換元の中間命令が格納される。パターン適合条件フィールドには、パターンフィールドに格納された中間命令の適合条件が格納される。テンプレートコードフィールドには、変換後のネイティブ命令の元となる情報が格納される。また、図6で示す<addr>はアドレスを示しており、<reg>はレジスタ名を示しており、<imm>は即値を示している。
たとえば、レコード331−1は、中間命令branch(分岐命令)が条件によらず、ネイティブ命令BRA(分岐命令)に変換されることを示している。また、変換後のネイティブ命令内に、中間命令に関する情報として、テンプレートコードフィールドの最後の引数であるbranchを示すビットコードが格納される。具体的な格納箇所については、図7にて説明する。
また、レコード331−2は、中間命令ldrp(即値ロード命令)に関して、即値が0から0xffffまでであれば、ネイティブ命令MOV(レジスタ転送命令)に変換されることを示している。また、変換後のネイティブ命令内に、ldrpのビットコードが格納される。
また、レコード331−3は、中間命令ldrp(即値ロード命令)に関して、即値が0xffff0000から0xffffffffまでであれば、ネイティブ命令NOT(ビット反転命令)に変換されることを示している。また、変換後のネイティブ命令内に、ldrpを示すビットコードが格納される。
また、レコード331−4は、中間命令ldrp(即値ロード命令)に関して、即値が0x10000から0xfffeffffまでであり、かつ、即値の下4ビットが全て0であれば、ネイティブ命令SHL(左シフト命令)に変換されることを示している。また、変換後のネイティブ命令内に、ldrpを示すビットコードが格納される。
また、レコード331−5は、中間命令ldrp(即値ロード命令)に関して、即値が0x10000から0xfffeffffまでであり、かつ、即値の下4ビットが0でないビットがあれば、ネイティブ命令SHLと、ネイティブ命令ADDI(即値加算命令)に変換されることを示している。また、変換後のネイティブ命令の1命令目に、ldrpを示すビットコードが格納され、2命令目に対応する中間命令がないことを示す“”を示すビットコードが格納される。レコード331−6、レコード331−7も同様に、中間命令からネイティブ命令に変換する内容を示している。
図7は、実施の形態1におけるJITコンパイラによる中間命令の変換例を示す説明図である。図7中の(a)は、変換後のネイティブ命令のフォーマットを示しており、図7中の(b)は、中間命令の具体的な変換例を示している。
変換後のネイティブ命令701は、中間命令、ネイティブ命令という2つのフィールドを有する。中間命令フィールドは、ネイティブ命令に対応する中間命令を特定する情報が格納される。たとえば、中間命令フィールドは、中間命令の全ビットが格納されてもよいし、中間命令のオペコード部分のビットが格納されてもよい。また、性能情報121が、命令ごとの実行回数を提供する場合、中間命令フィールドは、中間命令を識別可能な最小限のビットが格納されてもよい。ネイティブ命令は、アクセラレータ102が実行可能な実行コードである。なお、実行履歴、または実行回数のいずれかを提供するか否かは、たとえば、アクセラレータ102の初期時に、CPUによって設定される。
たとえば、中間命令702_Mとして、“setzero r3”を変換する場合を示す。このとき、JITコンパイラ301は、テンプレート情報331のレコード331−6から、中間命令702_Mをネイティブ命令702_Nに変換する。以下、接尾記号“_M”は中間命令を示し、接尾記号“_N”はネイティブ命令を示す。ネイティブ命令702_Nの中間命令フィールドには、setzeroを示すビットが格納されており、ネイティブ命令フィールドには、“MOV R3,R0”を示すビットが格納されている。
また、中間命令703_Mとして、“ldrp r3,0x10001”を変換する場合を示す。このとき、JITコンパイラ301は、テンプレート情報331のレコード331−5から、中間命令703_Mをネイティブ命令703_Nに変換する。ネイティブ命令703_Nの1命令目の中間命令フィールドには、“ldrp”を示すビットが格納されており、1列目のネイティブ命令フィールドには、“SHL R3,1,16”を示すビットが格納されている。また、2命令目の中間命令フィールドには、何も処理を行わない“nop”を示すビットが格納されており、2列目のネイティブ命令フィールドには、“ADDI R3, R3, 1”を示すビットが格納されている。
このように、中間命令1に対してネイティブ命令が2以上となる場合、テンプレート情報331の対応するレコードの2命令目以降には対応する中間命令が存在しないことを示す“”を示すビットコードが格納されている。これに基づいて、JITコンパイラ301は、2命令目以降の中間命令フィールドに、“nop”を示すビットを格納する。または、JITコンパイラ301は、全ての中間命令に対応しないビットを格納してもよい。この理由として、“nop”命令がコンパイラ411にて使用されている場合、nop命令が実行されたとカウントされるためである。したがって、JITコンパイラ301は、全ての中間命令に対応しないビットがあれば、該当のビットを格納し、なければ、“nop”を示すビットを格納してもよい。
また、図7では図示していないが、中間命令2以上に対してネイティブ命令が1となる場合、JITコンパイラ301は、2命令以降のネイティブ命令フィールドに、“nop”を示すビットを格納する。または、アクセラレータ102が、コードを読み飛ばす命令が存在すれば、該当の命令を示すビットを格納してもよい。
このように、整数m、nが1以上の整数であって、中間命令mに対してネイティブ命令nであり、mとnが異なる場合、JITコンパイラ301は、多い命令に対応するフィールドに“nop”を格納する。または、JITコンパイラ301は、mよりnが大きい場合、中間命令フィールドに全ての中間命令に対応しないビットを格納し、nよりmが大きい場合、ネイティブ命令フィールドにコードを読み飛ばす命令を格納してもよい。
図8は、中間命令での実行履歴および実行回数の具体例を示す説明図である。図8では、ネイティブ命令801_Nが実行された場合の実行履歴および実行回数を示している。また、表802がネイティブ命令の実行履歴を示し、表803が中間命令の実行履歴を示し、表804が中間命令の実行回数を示している。
たとえば、レジスタR1が1である場合、アクセラレータ102は、4命令目の“BEQ L2”を実行し、ラベルL2へ遷移する。次に、アクセラレータ102は、ラベルL2から3命令目の“BRA L4”を実行し、ラベルL4へ遷移する。したがって、ネイティブ命令での実行履歴は、表802となる。
中間命令の実行履歴を出力する場合、アクセラレータ102は、ネイティブ命令801_Nの1命令目である“CMP R1,0”の実行により、中間命令フィールドに格納された“switch2d”を取得し、性能情報121として記録する。また、アクセラレータ102は、ネイティブ命令801_NのラベルL2から1命令目の“SHL R3,1,16”の実行を契機として、中間命令フィールドに格納された“ldrp”を取得し、性能情報121として格納する。また、アクセラレータ102は、ネイティブ命令801_NのラベルL2から3命令目の“BRA L4”の実行を契機として、中間命令フィールドに格納されたbranchを取得し、性能情報121として格納する。最終的に、性能情報121は、表803で示すような値となる。
また、中間命令の実行回数を出力する場合、アクセラレータ102は、“switch2d”を取得して、“switch2d”の実行回数を1インクリメントする。同様に、アクセラレータ102は、“ldrp”を取得して、“ldrp”の実行回数を1インクリメントし、“branch”を取得して、“branch”の実行回数を1インクリメントする。
図9は、JITコンパイラによる変換処理の一例を示すフローチャートである。初めに、JITコンパイラ301は、中間命令を受け付ける(ステップS901)。次に、JITコンパイラ301は、テンプレート情報331から、中間命令に一致するパターンが存在するか否かを判断する(ステップS902)。パターンが存在する場合(ステップS902:Yes)、JITコンパイラ301は、一致した中間命令を、テンプレートコードを用いて変換し(ステップS903)、ステップS902の処理に移行する。パターンが存在しない場合(ステップS902:No)、全て変換し終えたことを示しているため、JITコンパイラ301は、中間命令を特定する情報を含んだ、ネイティブ命令をアクセラレータ102に送信し(ステップS904)、変換処理を終了する。
図10は、実施の形態1におけるアクセラレータの動作例を示すフローチャートである。アクセラレータ102は、ネイティブ命令を受け付ける(ステップS1001)。次に、アクセラレータ102は、中間命令フィールドに中間命令が存在しないことを示す情報が格納されているか否かを判断する(ステップS1002)。中間命令を特定する情報である場合(ステップS1002:No)、アクセラレータ102は、ネイティブ命令フィールドの命令を実行する(ステップS1003)。続けて、アクセラレータ102は、中間命令フィールドに格納された中間命令を特定する情報を記録する(ステップS1004)。なお、ステップS1003とステップS1004は、同一クロックサイクル内で実行されることが望ましいが、別のクロックサイクルで実行する形態でもかまわない。その場合、ステップS1003とステップS1004はどちらか先に実行されてもかまわない。
また、中間命令が存在しないことを示す情報である場合(ステップS1002:Yes)、アクセラレータ102は、ネイティブ命令フィールドの命令を実行する(ステップS1005)。ステップS1003とステップS1004の両方、またはステップS1005の実行後、アクセラレータ102は、アクセラレータ102の実行が終了したか否かを判断する(ステップS1006)。実行が終了していない場合(ステップS1006:No)、アクセラレータ102は、ステップS1002の処理に移行する。実行が終了した場合(ステップS1006:Yes)、アクセラレータ102は、性能情報121を出力し(ステップS1007)、動作を終了する。
以上説明したように、データ処理装置によれば、ネイティブ命令と中間命令を特定する情報とを受け付けて、ネイティブ命令の実行により、中間命令を実行したことを記録する。これにより、データ処理装置は、中間命令単位で命令の実行履歴や実行回数を提供できるため、開発者によるデバッグを効率化できる。また、ネイティブ命令と中間命令を特定する情報が1命令であれば、中間命令を特定する情報が入っていない場合と、命令数が変わらないため、実行タイミングを従来例にかかるデータ処理装置と同一にすることができる。
また、データ処理装置は、中間命令を特定する情報が、中間命令が存在しないことを示す情報である場合、中間命令を実行したことを記録しなくてよい。これにより、データ処理装置は、中間命令が2つ以上のネイティブ命令に変換された場合も、変換前の中間命令1つを記録することができる。
また、データ処理装置は、ネイティブ命令の実行により、ネイティブ命令の実行順に中間命令を特定する情報を記録してもよい。これにより、データ処理システムは、中間命令単位での命令の実行履歴を提供することができる。従来例におけるデータ処理システムにて、中間命令単位での実行履歴を開発者に提供する場合、CPUがネイティブ命令の実行履歴から中間命令のいずれに当たるかを推定することになる。この方法の場合、アクセラレータの実行後に、複雑なパターンマッチを行うことになるという問題がある。また、引数等を含めてまったく同一のネイティブ命令に変換される中間命令が複数存在する場合、従来例におけるデータ処理システムは、正しい情報を提供することが困難となる。
また、データ処理装置は、ネイティブ命令コードの実行回数を、中間命令を特定する情報と対応づけて記録してもよい。これにより、データ処理システムは、中間命令単位での命令の実行回数を提供することができる。従来例におけるデータ処理システムにて、中間命令単位での実行回数を開発者に提供しようとする場合、CPUが実行回数の変換処理を行うことになる。この変換処理は、命令の種類数が多いほど大量の計算を行うことになるという問題がある。また、同一のネイティブ命令に変換される中間命令が複数存在する場合、この変換処理方法では元の中間命令に変換することができなくなってしまう。また、ネイティブ命令の実行履歴から、中間命令の実行履歴を得て、中間命令の実行回数を取得する方法もあるが、実行回数を得たいがために、実行履歴を蓄えるメモリが要求されるため、オーバヘッドが大きくなってしまう。
(実施の形態2の説明)
実施の形態1では、全てのネイティブ命令に対して中間命令を特定する情報が付与されている。実施の形態2では、実施の形態1より使用するメモリ量を削減する方法を提案する。なお、実施の形態2にかかるデータ処理システム100のハードウェアは、実施の形態1にかかるデータ処理システム100のハードウェアと同一であるため、説明を省略する。
図11は、実施の形態2にかかるデータ処理システムの機能例を示すブロック図である。実施の形態2にかかるデータ処理システム100は、受付部1101と、判断部1102と、実行部1103と、記録部1104と、出力部315と、記憶部321と、検出部322と、変換部1111と、送信部1112と、取得部325を含む。検出部322、取得部325、変換部1111、送信部1112は、記憶装置に記憶されたプログラムをCPU101が実行することにより、その機能を実現する。ここで、記憶装置とは、具体的には、たとえば、図2に示したROM201、RAM202、磁気ディスク204、光ディスク206などである。なお、実施の形態1と同一の符号の機能部については、実施の形態1と同一の機能を有するため、説明を省略する。
受付部1101は、一連の命令コードに対する注釈を示す情報と一連の命令コードの変換前のコードを特定する情報とを含む注釈コードまたは一連の命令コードを受け付ける機能を有する。注釈を示す情報は、たとえば、アクセラレータのネイティブ命令のオペコードのうち、未使用であるビットコードを採用する。注釈コードは、ネイティブ命令の一つとなる。
たとえば、受付部1101は、注釈を示す情報と中間命令を特定する情報“switch2d”を含む注釈コード、または一連の命令コード“CMP R1,0”、“BEQ L1”、“CMP R1,1”、“BEQ L2”、“BRA L3”を受け付ける。なお、受け付けた注釈コードまたは一連の命令コードは、アクセラレータ102のレジスタ等といった記憶領域に記憶される。
判断部1102は、受付部1101によって一連の命令コードが受け付けられたか、または注釈コードが受け付けられたかを判断する機能を有する。判断結果は、アクセラレータ102のレジスタ等といった記憶領域に記憶される。
実行部1103は、受付部1101によって一連の命令コードが受け付けられた場合、一連の命令コードを実行する機能を有する。たとえば、実行部1103は、一連の命令コード“CMP R1,0”、“BEQ L1”、“CMP R1,1”、“BEQ L2”、“BRA L3”を順次実行する。
記録部1104は、受付部1101によって注釈コードが受け付けられた場合、一連の命令コードの実行前に、一連の命令コードの変換前のコードを特定する情報を記録する機能を有する。たとえば、記録部1104は、注釈コードが受け付けられた場合、“switch2d”を記録する。また、記録部1104は、命令コードの実行順に変換前のコードを特定する情報を記録してもよいし、命令コードの実行回数を変換前のコードを特定する情報と対応づけて記録してもよい。
変換部1111は、記憶部321を参照して、変換前のコードを、一連の命令コードに対する注釈を示す情報と一連の命令コードの変換前のコードを特定する情報とを含む注釈コードと、一連の命令コードと、に変換する機能を有する。なお、具体的な変換方法については、図12にて後述する。送信部1112は、注釈コードと、一連のネイティブ命令とを、他装置に送信する機能を有する。
図12は、実施の形態2におけるJITコンパイラによる中間命令の変換例を示す説明図である。図12中の(a)は、実施の形態2で用いる注釈コード1201のフォーマットを示しており、図12中の(b)は、中間命令の具体的な変換例を示している。
注釈コード1201は、オペコード、中間命令という2つのフィールドを有する。オペコードフィールドには、注釈を示す情報が格納されている。注釈を示す情報は、たとえば、図12で示すような“111”である。以下、オペコードフィールドに“111”が格納されている場合、注釈コード(ANON)と表記する。中間命令フィールドは、注釈コード1201の後続のネイティブ命令に対応する中間命令を特定する情報が格納される。たとえば、中間命令フィールドは、中間命令の全ビットが格納されてもよいし、中間命令のオペコード部分のビットが格納されてもよい。
JITコンパイラ301は、中間命令1202_Mからネイティブ命令1202_Nに変換する。より詳細な例として、中間命令1202_Mに含まれる、中間命令1202−1_M“switch2d r1,0,L1,1,L2,L3”を変換する場合について説明する。このとき、JITコンパイラ301は、中間命令1202−1_Mを、注釈を示す情報と中間命令を特定する情報“switch2d”を含むネイティブ命令とレコード331−7による変換とネイティブ命令とを含むネイティブ命令1202−1_Nに変換する。
このように、ネイティブ命令の1命令あたりの消費ビット数が、実施の形態1にかかる変換例に比べて削減されることになる。具体的に、実施の形態2にかかる変換例では、中間命令とネイティブ命令の対応と特定する情報を埋め込むことができる。一方、実施の形態1にかかる変換例では、対応する中間命令とネイティブ命令でいずれか一方が多い場合は無効である旨を示す情報をフィールドに埋め込むこととなるため、総ビット数は実施の形態2より等しいか多くなる。したがって、実施の形態2にかかる変換例は、同一の命令メモリサイズで、実施の形態1以上の命令数を実行することができる。
図13は、実施の形態2におけるアクセラレータの動作例を示すフローチャートである。なお、図13で示すステップS1301、ステップS1305、ステップS1306は、ステップS1001、ステップS1006、ステップS1007と同一の処理であるため、説明を省略する。
ステップS1301の処理後、アクセラレータ102は、オペコードフィールドに注釈を示す情報が格納されているか否かを判断する(ステップS1302)。注釈を示す情報が格納されている場合(ステップS1302:Yes)、アクセラレータ102は、中間命令フィールドに格納された中間命令を特定する情報を記録し(ステップS1303)、ステップS1305の処理に移行する。注釈を示す情報が格納されていない場合(ステップS1302:No)、アクセラレータ102は、ネイティブ命令を実行し(ステップS1304)、ステップS1305の処理に移行する。
以上説明したように、データ処理装置によれば、注釈コードを受け付けた場合、注釈コード内の中間命令を特定する情報を記録する。これにより、データ処理システムは、ネイティブ命令1つあたりの使用メモリ量を、実施の形態1に比べて削減することができる。
(実施の形態3の説明)
実施の形態2にかかるデータ処理システム100は、ネイティブ命令1つあたりの使用メモリ量を実施の形態1より削減していた。実施の形態3にかかるデータ処理システム100は、実施の形態2にかかるデータ処理システム100よりさらに使用メモリ量を削減できる方法を提供する。なお、実施の形態3にかかるデータ処理システム100のハードウェアは、実施の形態1にかかるデータ処理システム100のハードウェアと同一であるため、説明を省略する。
図14は、実施の形態3にかかるデータ処理システムの機能例を示すブロック図である。実施の形態3にかかるデータ処理システム100は、記憶部1401と、受付部1101と、判断部1402と、実行部1403と、記録部1404と、出力部315と、記憶部321と、検出部322と、変換部1411と、送信部1112と、取得部325を含む。検出部322、取得部325、変換部1411、送信部1112は、記憶装置に記憶されたプログラムをCPU101が実行することにより、その機能を実現する。ここで、記憶装置とは、具体的には、たとえば、図2に示したROM201、RAM202、磁気ディスク204、光ディスク206などである。なお、実施の形態1、または実施の形態2と同一の符号の機能部については、実施の形態1、または実施の形態2と同一の機能を有するため、説明を省略する。
記憶部1401は、変換前のコードと1対1対応する命令コードと、変換前のコードを特定する情報との組合せを記憶する機能を有する。ここで、変換前のコードと1対1対応する命令コードとは、変換前のコードに対応する命令コードが、他の変換前コードに対応する命令コードに含まれないものである。たとえば、記憶部1401は、変換前のコードとなる“and”と、“and”と1対1対応するネイティブ命令“AND”と、を記憶する。
判断部1402は、注釈コードの後続コードが、一連の命令コードの中のいずれかの命令コードであるか、一連の命令コードの変換前のコードとは異なる他の変換前のコードと1対1対応する命令コードであるか否かを判断する機能を有する。たとえば、判断部1402は、後続コードが1対1対応する命令コードである“AND”か否かを判断する。なお、判断結果は、アクセラレータ102のレジスタ等といった記憶領域に記憶される。
実行部1403は、判断部1402によって他の変換前のコードと1対1対応する命令コードであると判断された場合、他の変換前のコードと1対1対応する命令コードを実行する機能を有する。たとえば、実行部1403は、ネイティブ命令“AND”を実行する。
記録部1404は、他の変換前のコードと1対1対応する命令コードを記録する。たとえば、記録部1404は、“AND”を記録する。また、記録部1404は、記憶部1401を参照して、他の変換前のコードを特定する情報を記憶してもよい。
変換部1411は、記憶部321を参照して、変換前のコードを、変換前のコードが命令コードと1対1対応する場合、命令コードに変換し、対応しない場合、注釈コードと一連の命令コードとに変換する機能を有する。なお、変換前のコードが命令コードと1対1対応するか否かの判断方法については、たとえば、テンプレート情報331に1対1対応するか否かを示す識別子を格納する新たなフィールドを設定しておき、新たなフィールドを参照して判断してもよい。また、設定される内容は、記録部1404と同一の情報となる。
図15は、実施の形態3におけるJITコンパイラによる中間命令の変換例を示す説明図である。図15では、中間命令の具体的な変換例を示している。JITコンパイラ301は、中間命令1501_Mからネイティブ命令1501_Nに変換する。より詳細な例として、中間命令1501_Mに含まれる、中間命令1501−1_M“and r3,r2,r3”を変換する場合について説明する。
JITコンパイラ301は、中間命令1501−1_Mのオペコード部分より、ネイティブ命令と1対1対応する中間命令であることを判断し、注釈コードを付与せずに、ネイティブ命令1501−1_Nに変換する。また、他の中間命令に関しては、1対1対応ではないため、JITコンパイラ301は、注釈コードを付与している。
このように、中間命令と1対1対応するネイティブ命令には、注釈コードを付与しないことで、実施の形態3におけるデータ処理システム100は、使用メモリ量を実施の形態2におけるデータ処理システム100より削減することができる。
図16は、実施の形態3におけるアクセラレータの動作例を示すフローチャートである。なお、図16で示すステップS1601〜ステップS1603、ステップS1608、ステップS1609は、ステップS1301〜ステップS1303、ステップS1305、ステップS1306と同一の処理であるため、説明を省略する。
注釈を示す情報が格納されていない場合(ステップS1602:No)、アクセラレータ102は、中間命令と1対1対応するネイティブ命令か否かを判断する(ステップS1604)。1対1対応するネイティブ命令である場合(ステップS1604:Yes)、アクセラレータ102は、ネイティブ命令を実行する(ステップS1605)。続けて、アクセラレータ102は、ネイティブ命令に対応する中間命令を特定する情報を記録し(ステップS1606)、ステップS1608の処理に移行する。なお、ステップS1605とステップS1606は、同一クロックサイクル内で実行しても、ステップS1606、ステップS1605の順に実行してもかまわない。1対1対応するネイティブ命令でない場合(ステップS1604:No)、アクセラレータ102は、ネイティブ命令を実行し(ステップS1607)、ステップS1608の処理に移行する。
図17は、実施の形態1〜3にかかるコンピュータを用いたシステムの適用例を示す説明図である。図17において、ネットワークNWは、サーバ1701とクライアント1711〜クライアント1714とが通信可能なネットワークであり、たとえば、LAN、WAN、インターネット、携帯電話網などを含む。
クライアント1711はノート型PC(Personal Computer)である。クライアント1712はデスクトップ型PC、クライアント1713は携帯電話機である。携帯電話機として、クライアント1713は、スマートフォンであってもよいし、PHS(Personal Handyphone System)であってもよい。クライアント1714はタブレット型端末である。図17のサーバ1701、クライアント1711〜クライアント1714は、それぞれCPUとアクセラレータを有し、本実施の形態1〜3のいずれかにかかる動作を実行する。
以上説明したように、データ処理装置によれば、中間命令と1対1対応するネイティブ命令を受け付けた場合、ネイティブ命令を記録する。これにより、データ処理システムは、ネイティブ命令1つあたりの使用メモリ量を、実施の形態2に比べて削減することができる。したがって、データ処理システムは、同一の命令メモリサイズで、実施の形態2以上の命令数を実行することができる。
また、データ処理装置は、変換前のコードと1対1対応する命令コードと、変換前のコードを特定する情報との組合せを記憶し、1対1対応するネイティブ命令を受け付けた場合、対応する変換前のコードを特定する情報を記録してもよい。これにより、データ処理システムは、開発者に対して提供する性能情報を、全て中間命令単位にすることができる。また、データ処理装置は、1対1対応する命令コードと、変換前のコードを特定する情報との組合せを記憶してなくてもよい。この場合、性能情報にネイティブ命令が含まれることになるが、1対1対応しているため、CPUがネイティブ命令から中間命令に変換することは容易である。
なお、本実施の形態で説明した変換方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本変換プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また変換プログラムは、インターネット等のネットワークを介して配布してもよい。
また、本実施の形態で説明したアクセラレータ102は、スタンダードセルやストラクチャードASIC(Application Specific Integrated Circuit)などの特定用途向けIC(以下、単に「ASIC」と称す。)やFPGAなどのPLD(Programmable Logic Device)によっても実現することができる。具体的には、上述したアクセラレータ102の機能(受付部311〜出力部315、受付部1101〜記録部1104、記憶部1401〜記録部1404)をHDL記述によって機能定義し、そのHDL記述を論理合成してASICやPLDに与えることにより、アクセラレータ102を製造することができる。
上述した実施の形態1〜3に関し、さらに以下の付記を開示する。
(付記1)命令コードと、前記命令コードに関連付けられた前記命令コードの変換前のコードを特定する情報と、を受け付ける受付部と、
前記命令コードの実行により、前記変換前のコードを特定する情報を記録する記録部と、
を備えることを特徴とするデータ処理装置。
(付記2)前記受付部によって受け付けた前記変換前のコードを特定する情報が、前記変換前のコードが存在しないことを示す情報であるか否かを判断する判断部をさらに備え、
前記記録部は、
前記判断部によって前記変換前のコードを特定する情報が前記変換前のコードが存在しないことを示す情報であると判断された場合、前記命令コードの実行により、前記変換前のコードを特定する情報を記録しない、
ことを特徴とする付記1に記載のデータ処理装置。
(付記3)一連の命令コードに対する注釈を示す情報と前記一連の命令コードの変換前のコードを特定する情報とを含む注釈コードまたは前記一連の命令コードを受け付ける受付部と、
前記受付部によって前記注釈コードが受け付けられた場合、前記一連の命令コードの実行前に、前記一連の命令コードの変換前のコードを特定する情報を記録する記録部と、
前記受付部によって前記一連の命令コードが受け付けられた場合、前記一連の命令コードを実行する実行部と、
を備えることを特徴とするデータ処理装置。
(付記4)前記記録部は、
前記命令コードの実行により、前記命令コードの実行順に前記変換前のコードを特定する情報を記録する、
ことを特徴とする付記1または3に記載のデータ処理装置。
(付記5)前記記録部は、
前記命令コードの実行により、前記命令コードの実行回数を前記変換前のコードを特定する情報と対応づけて記録する、
ことを特徴とする付記1または3に記載のデータ処理装置。
(付記6)前記注釈コードの後続コードが、前記一連の命令コードの中のいずれかの命令コードであるか、前記一連の命令コードの変換前のコードとは異なる他の変換前のコードと1対1対応する命令コードであるか否かを判断する判断部を備え、
前記実行部は、
前記他の変換前のコードと1対1対応する命令コードであると判断された場合、前記他の変換前のコードと1対1対応する命令コードを実行し、
前記記録部は、
前記他の変換前のコードと1対1対応する命令コードを記録する、
ことを特徴とする付記3に記載のデータ処理装置。
(付記7)前記他の変換前のコードと1対1対応する命令コードと前記他の変換前のコードを特定する情報との組合せを記憶する記憶部を備え、
前記記録部は、
前記記憶部を参照して、前記他の変換前のコードを特定する情報を記録する、
ことを特徴とする付記6に記載のデータ処理装置。
(付記8)前記記録部は、
前記命令コードと、前記他の変換前のコードと1対1対応する命令コードと、の実行順に、前記変換前のコードを特定する情報と、前記他の変換前のコードを特定する情報と、を記録する、
ことを特徴とする付記7に記載のデータ処理装置。
(付記9)前記記録部は、
前記他の変換前のコードと1対1対応する命令コードの実行回数を前記他の変換前のコードを特定する情報と対応づけて記録する、
ことを特徴とする付記7に記載のデータ処理装置。
(付記10)命令コードと前記命令コードの変換前のコードとの組合せを記憶する記憶部と、
前記変換前のコードが検出された場合、前記記憶部を参照して、前記変換前のコードを、前記命令コードと前記命令コードに関連付けられた前記変換前のコードを特定する情報とに変換する変換部と、
前記命令コードと前記命令コードに関連付けられた前記変換前のコードを特定する情報とを、自装置から他装置に送信する送信部と、
を備えることを特徴とする変換装置。
(付記11)第1の装置と、特定の処理を実行する第2の装置と、を含むデータ処理システムであって、
前記第2の装置が実行可能な命令コードと前記命令コードの変換前のコードとの組合せを記憶する記憶部と、
前記変換前のコードが検出された場合、前記変換前のコードを、前記命令コードと前記命令コードに関連付けられた前記変換前のコードを特定する情報と、に変換する変換部と、
前記命令コードと前記命令コードに関連付けられた前記変換前のコードを特定する情報とを、前記第1の装置から前記第2の装置に送信する送信部と、
前記第2の装置によって、前記命令コードと前記命令コードに関連付けられた前記変換前のコードを特定する情報とを受け付ける受付部と、
前記第2の装置によって、前記命令コードの実行により、前記変換前のコードを特定する情報を記録する記録部と、
を備えることを特徴とするデータ処理システム。
(付記12)命令コードと前記命令コードの変換前のコードとの組合せを記憶する記憶部にアクセス可能なコンピュータが、
前記変換前のコードが検出された場合、前記記憶部を参照して、前記変換前のコードを、前記命令コードと前記命令コードに関連付けられた前記変換前のコードを特定する情報とに変換し、
前記命令コードと前記命令コードに関連付けられた前記変換前のコードを特定する情報とを、他装置へ送信する、
処理を実行することを特徴とする変換方法。
(付記13)命令コードと前記命令コードの変換前のコードとの組合せを記憶する記憶部にアクセス可能なコンピュータに、
前記変換前のコードが検出された場合、前記組合せを参照して、前記変換前のコードを、前記命令コードと前記命令コードに関連付けられた前記変換前のコードを特定する情報とに変換する、
処理を実行させることを特徴とする変換プログラム。
100 データ処理システム
101 CPU
102 アクセラレータ
301 JITコンパイラ
302 デバイスドライバ
311、1101 受付部
312、1102、1402 判断部
313、1103、1403 実行部
314、1104、1404 記録部
315 出力部
321 記憶部
322 検出部
323、1111、1411 変換部
324、1112、1412 送信部
325 取得部
331 テンプレート情報
1401 記憶部

Claims (8)

  1. 命令コードと、前記命令コードに関連付けられた前記命令コードの変換前のコードを特定する情報と、を受け付ける受付部と、
    前記受付部によって受け付けた前記変換前のコードを特定する情報が、前記変換前のコードが存在しないことを示す情報であるか否かを判断する判断部と、
    前記判断部によって前記変換前のコードを特定する情報が前記変換前のコードが存在しないことを示す情報でないと判断された場合、前記命令コードの実行により、前記変換前のコードを特定する情報を記録し、前記判断部によって前記変換前のコードを特定する情報が前記変換前のコードが存在しないことを示す情報であると判断された場合、前記命令コードの実行により、前記変換前のコードを特定する情報を記録しない記録部と、
    を備えることを特徴とするデータ処理装置。
  2. 一連の命令コードに対する注釈を示す情報と前記一連の命令コードの変換前のコードを特定する情報とを含む注釈コードまたは前記一連の命令コードを受け付ける受付部と、
    前記受付部によって前記注釈コードが受け付けられた場合、前記一連の命令コードの実行前に、前記一連の命令コードの変換前のコードを特定する情報を記録する記録部と、
    前記受付部によって前記一連の命令コードが受け付けられた場合、前記一連の命令コードを実行する実行部と、
    を備えることを特徴とするデータ処理装置。
  3. 前記注釈コードの後続コードが、前記一連の命令コードの中のいずれかの命令コードであるか、前記一連の命令コードの変換前のコードとは異なる他の変換前のコードと1対1対応する命令コードであるか否かを判断する判断部を備え、
    前記実行部は、
    前記他の変換前のコードと1対1対応する命令コードであると判断された場合、前記他の変換前のコードと1対1対応する命令コードを実行し、
    前記記録部は、
    前記他の変換前のコードと1対1対応する命令コードを記録する、
    ことを特徴とする請求項に記載のデータ処理装置。
  4. 前記他の変換前のコードと1対1対応する命令コードと前記他の変換前のコードを特定する情報との組合せを記憶する記憶部を備え、
    前記記録部は、
    前記記憶部を参照して、前記他の変換前のコードを特定する情報を記録する、
    ことを特徴とする請求項に記載のデータ処理装置。
  5. 命令コードと前記命令コードの変換前のコードとの組合せを記憶する記憶部と、
    前記変換前のコードが検出された場合、前記記憶部を参照して、前記変換前のコードを、前記命令コードと前記命令コードに関連付けられた前記変換前のコードを特定する情報とに変換し、前記変換前のコードが2以上の前記命令コードに変換された場合、2命令目以降の前記命令コードには、前記命令コードに関連付けられた前記変換前のコードを特定する情報として、前記変換前のコードが存在しないことを示す情報を格納する変換部と、
    前記命令コードと前記命令コードに関連付けられた前記変換前のコードを特定する情報とを、自装置から他装置に送信する送信部と、
    を備えることを特徴とする変換装置。
  6. 第1の装置と、特定の処理を実行する第2の装置と、を含むデータ処理システムであって、
    前記第2の装置が実行可能な命令コードと前記命令コードの変換前のコードとの組合せを記憶する記憶部と、
    前記変換前のコードが検出された場合、前記変換前のコードを、前記命令コードと前記命令コードに関連付けられた前記変換前のコードを特定する情報と、に変換し、前記変換前のコードが2以上の前記命令コードに変換された場合、2命令目以降の前記命令コードには、前記命令コードに関連付けられた前記変換前のコードを特定する情報として、前記変換前のコードが存在しないことを示す情報を格納する変換部と、
    前記命令コードと前記命令コードに関連付けられた前記変換前のコードを特定する情報とを、前記第1の装置から前記第2の装置に送信する送信部と、
    前記第2の装置によって、前記命令コードと前記命令コードに関連付けられた前記変換前のコードを特定する情報とを受け付ける受付部と、
    前記第2の装置によって、受け付けた前記変換前のコードを特定する情報が、前記変換前のコードが存在しないことを示す情報であるか否かを判断する判断部と、
    前記第2の装置によって、前記変換前のコードを特定する情報が前記変換前のコードが存在しないことを示す情報でないと判断された場合、前記命令コードの実行により、前記変換前のコードを特定する情報を記録し、前記判断部によって前記変換前のコードを特定する情報が前記変換前のコードが存在しないことを示す情報であると判断された場合、前記命令コードの実行により、前記変換前のコードを特定する情報を記録しない記録部と、
    を備えることを特徴とするデータ処理システム。
  7. 命令コードと前記命令コードの変換前のコードとの組合せを記憶する記憶部にアクセス可能なコンピュータが、
    前記変換前のコードが検出された場合、前記記憶部を参照して、前記変換前のコードを、前記命令コードと前記命令コードに関連付けられた前記変換前のコードを特定する情報とに変換し、前記変換前のコードが2以上の前記命令コードに変換された場合、2命令目以降の前記命令コードには、前記命令コードに関連付けられた前記変換前のコードを特定する情報として、前記変換前のコードが存在しないことを示す情報を格納し、
    前記命令コードと前記命令コードに関連付けられた前記変換前のコードを特定する情報とを、他装置へ送信する、
    処理を実行することを特徴とする変換方法。
  8. 命令コードと前記命令コードの変換前のコードとの組合せを記憶する記憶部にアクセス可能なコンピュータに、
    前記変換前のコードが検出された場合、前記組合せを参照して、前記変換前のコードを、前記命令コードと前記命令コードに関連付けられた前記変換前のコードを特定する情報とに変換し、前記変換前のコードが2以上の前記命令コードに変換された場合、2命令目以降の前記命令コードには、前記命令コードに関連付けられた前記変換前のコードを特定する情報として、前記変換前のコードが存在しないことを示す情報を格納する
    処理を実行させることを特徴とする変換プログラム。
JP2011271782A 2011-12-12 2011-12-12 データ処理装置、変換装置、データ処理システム、変換方法、および変換プログラム Expired - Fee Related JP5794133B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011271782A JP5794133B2 (ja) 2011-12-12 2011-12-12 データ処理装置、変換装置、データ処理システム、変換方法、および変換プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011271782A JP5794133B2 (ja) 2011-12-12 2011-12-12 データ処理装置、変換装置、データ処理システム、変換方法、および変換プログラム

Publications (2)

Publication Number Publication Date
JP2013122740A JP2013122740A (ja) 2013-06-20
JP5794133B2 true JP5794133B2 (ja) 2015-10-14

Family

ID=48774653

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011271782A Expired - Fee Related JP5794133B2 (ja) 2011-12-12 2011-12-12 データ処理装置、変換装置、データ処理システム、変換方法、および変換プログラム

Country Status (1)

Country Link
JP (1) JP5794133B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109885487A (zh) * 2019-01-29 2019-06-14 深圳市极致汇仪科技有限公司 一种提高测试程序运行速度的方法及系统

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7324027B2 (ja) * 2019-03-28 2023-08-09 株式会社エヌエスアイテクス プロファイリング方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6244844A (ja) * 1985-08-23 1987-02-26 Fujitsu Ltd 実行軌跡情報収集装置
JPH06236294A (ja) * 1993-02-10 1994-08-23 Fuji Electric Co Ltd ソースプログラム・レベルでのデバッグ・モニタ制御方式
JP2002278803A (ja) * 2001-03-22 2002-09-27 Yaskawa Electric Corp エラー報告方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109885487A (zh) * 2019-01-29 2019-06-14 深圳市极致汇仪科技有限公司 一种提高测试程序运行速度的方法及系统

Also Published As

Publication number Publication date
JP2013122740A (ja) 2013-06-20

Similar Documents

Publication Publication Date Title
US10824420B2 (en) Caching build graphs
US9021428B2 (en) Troubleshooting visuals and transient expressions in executing applications
JP5488697B2 (ja) マルチコアプロセッサシステム、同期制御方法、および同期制御プログラム
JP2022519169A (ja) ガベージコレクションのマーキングにおける同期依存の軽減
EP3123316B1 (en) Supporting dynamic behavior in statically compiled programs
US8276130B2 (en) Method and compiler of compiling a program
KR20080041211A (ko) 명령을 내리는 방법 및 컴퓨터 판독가능 매체
WO2014028655A1 (en) User interface control framework for stamping out controls using a declarative template
EP2867797A2 (en) Generating localized user interfaces
JP2007183900A (ja) ハイレベル言語のハードウェア記述言語への自動変換方法
US20210089309A1 (en) Byte comparison method for string processing and instruction processing apparatus
KR20220113372A (ko) 통합된 참조물 및 2차 객체 표시
JP5794133B2 (ja) データ処理装置、変換装置、データ処理システム、変換方法、および変換プログラム
US20120011490A1 (en) Development system
WO2022068556A1 (zh) 一种代码翻译方法、装置及设备
CN111971655B (zh) 用于超文本标记语言图形内容的本机运行时技术
US10198784B2 (en) Capturing commands in a multi-engine graphics processing unit
JP5770534B2 (ja) プロセッサ、圧縮プログラム、圧縮装置、および圧縮方法
JP2007213556A (ja) 回路解析装置
JP7025104B2 (ja) 情報処理装置、方法およびプログラム
JP5702265B2 (ja) プログラム自動生成装置およびプログラム自動生成方法
CN111782196A (zh) 基于mvp架构的开发方法及装置
JP2020115246A (ja) 生成装置、ソフトウェアロボットシステム、生成方法及び生成プログラム
JP6168894B2 (ja) システム、エミュレータ、デバッグシステムおよびデバッグシステムにおける方法
JP2013257670A (ja) プロセッサ、圧縮装置、圧縮方法、および圧縮プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140805

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150319

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150428

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150629

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: 20150714

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150727

R150 Certificate of patent or registration of utility model

Ref document number: 5794133

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees