(57)【要約】【課題】本願明細書に開示される技術は、実際にプログラムが使用された使用頻度を考慮する、命令コードの置き換え技術に関するものである。【解決手段】本願明細書に開示される技術に関する演算実行装置は、命令コードに基づいて演算を行い、かつ、当該演算の実行に対応する実行ログを出力する演算部（２）と、実行ログに対応する命令コードの使用頻度を解析し、かつ、当該解析の解析結果を出力する頻度解析部（７）と、解析結果に基づいて選択的に、命令コードを短縮コードに置き換える置き換え部（８）とを備え、演算部（２）は、短縮コードに置き換えられた命令コードに関しては、短縮コードに基づいて演算を行う。【選択図】図２
2017199223.tif 000002
【特許請求の範囲】
【請求項１】
命令コードに基づいて演算を行い、かつ、当該演算の実行に対応する実行ログを出力する演算部と、
前記実行ログに対応する前記命令コードの使用頻度を解析し、かつ、当該解析の解析結果を出力する頻度解析部と、
前記解析結果に基づいて選択的に、前記命令コードを短縮コードに置き換える置き換え部とを備え、
前記演算部は、前記短縮コードに置き換えられた前記命令コードに関しては、前記短縮コードに基づいて演算を行う、
演算実行装置。
【請求項２】
前記置き換え部は、前記解析結果における前記命令コードの使用頻度の高さに基づいて選択的に、前記命令コードを前記短縮コードに置き換える、
請求項１に記載の演算実行装置。
【請求項３】
前記置き換え部は、前記解析結果における使用頻度の高い前記命令コードを優先的に前記短縮コードに置き換える、
請求項１または請求項２に記載の演算実行装置。
【請求項４】
前記置き換え部は、前記短縮コードを含む前記命令コードのアドレスを置き換える、
請求項１から請求項３のうちのいずれか１項に記載の演算実行装置。
【請求項５】
前記演算実行装置は、さらに、
前記短縮コードと、前記短縮コードが前記演算部において実行可能に変換された数値列との対応関係を示す短縮テーブルを備え、
前記演算部は、前記短縮テーブルを参照し、前記短縮コードに対応する前記数値列に基づいて演算を行う、
請求項１から請求項４のうちのいずれか１項に記載の演算実行装置。
【請求項６】
前記演算実行装置は、さらに、
前記命令コードがあらかじめ記憶されるコード記憶部を備え、
前記置き換え部は、前記解析結果に基づいて選択的に、前記コード記憶部に記憶された前記命令コードを前記短縮コードに置き換え、
前記演算実行装置は、さらに、
前記置き換え部から出力される前記短縮コードを含む前記命令コードを一時的に記憶する一時記憶部と、
前記一時記憶部に記憶された前記短縮コードを含む前記命令コードの一部を記憶するキャッシュと、
前記キャッシュに記憶された前記命令コードを、前記演算部において実行可能な数値列に変換する変換部と、
前記短縮テーブルを記憶するテーブル記憶部とを備える、
請求項５に記載の演算実行装置。
【請求項７】
前記頻度解析部は、前記実行ログ、または、前記解析結果を記憶する不揮発性の内蔵記憶部を備える、
請求項１から請求項６のうちのいずれか１項に記載の演算実行装置。
【請求項８】
前記内蔵記憶部は、優先度の低い前記実行ログを優先的に更新する、
請求項７に記載の演算実行装置。
【請求項９】
前記頻度解析部は、前記演算実行装置の初期化動作時に、前記命令コードの使用頻度を解析する、
請求項１から請求項８のうちのいずれか１項に記載の演算実行装置。
【請求項１０】
前記頻度解析部は、前記演算実行装置の終了動作時に、前記命令コードの使用頻度を解析する、
請求項１から請求項８のうちのいずれか１項に記載の演算実行装置。
【請求項１１】
前記頻度解析部は、前記演算部の演算実行時に、前記命令コードの使用頻度を解析する、
請求項１から請求項８のうちのいずれか１項に記載の演算実行装置。
【請求項１２】
前記頻度解析部は、前記実行ログに対応する前記命令コードのうちの一部についてのみ使用頻度を解析し、解析結果を出力する、
請求項１から請求項１１のうちのいずれか１項に記載の演算実行装置。
【請求項１３】
前記頻度解析部は、複数の前記命令コードを合わせた命令コード群の使用頻度を解析し、解析結果を出力する、
請求項１から請求項１２のうちのいずれか１項に記載の演算実行装置。
【請求項１４】
命令コードに基づいて演算を行い、かつ、当該演算の実行に対応する実行ログを出力し、
前記実行ログに対応する前記命令コードの使用頻度を解析し、かつ、当該解析の解析結果を出力し、
前記解析結果に基づいて選択的に、前記命令コードを短縮コードに置き換え、
前記短縮コードに置き換えられた前記命令コードに関しては、前記短縮コードに基づいて演算を行う、
演算実行方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本願明細書に開示される技術は、演算実行装置、および、演算実行方法に関するものである。
【背景技術】
【０００２】
近年、プログラムサイズの大規模化に伴って、命令コードサイズの圧縮に対する要求が高まっている。
【０００３】
たとえば、特許文献１（特開平１１−２２４１９９号公報）に開示される例では、語長が長く、かつ、使用頻度が高い命令コードを、あらかじめ予約されている語長の短いコードに置き換える。そうすることによって、命令コードサイズの圧縮を行う。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１１−２２４１９９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、使用頻度の高い命令コードを語長の短いコードに置き換えるにあたり、静的に、すなわち、実際の使用態様を考慮せずにプログラムを解析するだけでは、割り込み処理の偏り、または、繰り返し処理の偏りなど、実際にプログラムが使用される際の使用頻度の偏りを正確に見積もることが困難であった。
【０００６】
本願明細書に開示される技術は、以上に記載されたような問題を解決するためになされたものであり、実際にプログラムが使用された使用頻度を考慮する、命令コードの置き換え技術に関するものである。
【課題を解決するための手段】
【０００７】
本願明細書に開示される技術の第１の態様は、命令コードに基づいて演算を行い、かつ、当該演算の実行に対応する実行ログを出力する演算部と、前記実行ログに対応する前記命令コードの使用頻度を解析し、かつ、当該解析の解析結果を出力する頻度解析部と、前記解析結果に基づいて選択的に、前記命令コードを短縮コードに置き換える置き換え部とを備え、前記演算部は、前記短縮コードに置き換えられた前記命令コードに関しては、前記短縮コードに基づいて演算を行う。
【０００８】
また、本願明細書に開示される技術の第２の態様は、命令コードに基づいて演算を行い、かつ、当該演算の実行に対応する実行ログを出力し、前記実行ログに対応する前記命令コードの使用頻度を解析し、かつ、当該解析の解析結果を出力し、前記解析結果に基づいて選択的に、前記命令コードを短縮コードに置き換え、前記短縮コードに置き換えられた前記命令コードに関しては、前記短縮コードに基づいて演算を行う。
【発明の効果】
【０００９】
本願明細書に開示される技術の第１の態様は、命令コードに基づいて演算を行い、かつ、当該演算の実行に対応する実行ログを出力する演算部と、前記実行ログに対応する前記命令コードの使用頻度を解析し、かつ、当該解析の解析結果を出力する頻度解析部と、前記解析結果に基づいて選択的に、前記命令コードを短縮コードに置き換える置き換え部とを備え、前記演算部は、前記短縮コードに置き換えられた前記命令コードに関しては、前記短縮コードに基づいて演算を行うものである。このような構成によれば、実際にプログラムが使用された使用頻度を考慮して、命令コードの短縮コードへの置き換えを行うことができる。
【００１０】
また、本願明細書に開示される技術の第２の態様は、命令コードに基づいて演算を行い、かつ、当該演算の実行に対応する実行ログを出力し、前記実行ログに対応する前記命令コードの使用頻度を解析し、かつ、当該解析の解析結果を出力し、前記解析結果に基づいて選択的に、前記命令コードを短縮コードに置き換え、前記短縮コードに置き換えられた前記命令コードに関しては、前記短縮コードに基づいて演算を行う。このような構成によれば、実際にプログラムが使用された使用頻度を考慮して、命令コードの置き換えを行うことができる。
【００１１】
本願明細書に開示される技術に関する目的と、特徴と、局面と、利点とは、以下に示される詳細な説明と添付図面とによって、さらに明白となる。
【図面の簡単な説明】
【００１２】
【図１】実施の形態に関する、演算実行装置を実現するための構成を概念的に例示する図である。
【図２】実施の形態に関する、演算実行装置を実現するための構成をさらに具体的に例示する図である。
【図３】図２に例示される演算実行装置を実際に運用する場合のハードウェア構成を概略的に例示する図である。
【図４】図２に例示される演算実行装置を実際に運用する場合のハードウェア構成を概略的に例示する図である。
【図５】実施の形態に関する、頻度解析部の動作を例示するフローチャートである。
【図６】実行ログに示された命令コードと、その使用頻度を示すカウント値を例示する図である。
【図７】実施の形態に関する、演算実行装置の初期化時に頻度解析を行う場合における頻度解析部の内部構成を含む演算実行装置の構成を概念的に例示する図である。
【図８】実施の形態に関する、演算実行装置の終了時に頻度解析を行う場合における頻度解析部の内部構成を含む演算実行装置の構成を概念的に例示する図である。
【図９】実施の形態に関する、演算部の演算処理の実行時に、その並列処理、または、その並行処理として頻度解析を行う場合における、頻度解析部の内部構成を含む演算実行装置の構成を概念的に例示する図である。
【図１０】実施の形態に関する、頻度解析部の内部構成を含む演算実行装置の構成を概念的に例示する図である。
【図１１】実施の形態に関する、実行ログに示された命令コードを例示する図である。
【図１２】実施の形態に関する、ｎ＋１個目の実行ログを記憶する際の更新動作を説明するための図である。
【発明を実施するための形態】
【００１３】
以下、添付される図面を参照しながら実施の形態について説明する。
【００１４】
なお、図面は概略的に示されるものであり、異なる図面にそれぞれ示される画像の大きさと位置との相互関係は、必ずしも正確に記載されるものではなく、適宜変更され得るものである。
【００１５】
また、以下に示される説明では、同様の構成要素には同じ符号を付して図示し、それらの名称と機能とについても同様のものとする。したがって、それらについての詳細な説明を省略する場合がある。
【００１６】
＜第１の実施の形態＞
以下、本実施の形態に関する演算実行装置、および、演算実行方法について説明する。
【００１７】
＜本願明細書において用いられる用語について＞
まず、本願明細書において用いられる各種の用語を以下に示す。なお、本文中に同様の説明が重複している場合もある。
【００１８】
「演算部」は、演算実行装置における、中央演算処理装置（ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ、すなわち、ＣＰＵ）などが該当する。「演算部」は、中心的な処理装置として働き、かつ、演算などの処理を実行する。
【００１９】
「命令コード」は、演算部を動作させるために与えられる指示である。「命令コード」は、具体的には数値列である。
【００２０】
「実行ログ」は、演算部が実行した処理を記録したデータである。
【００２１】
「オペコード」は、命令コード中の、実行する操作の種類を指定する部分である。
【００２２】
「オペランド」は、命令コード中の、操作する対象となる値または変数を指定する部分である。
【００２３】
「命令データ」は、複数の命令コードが羅列されたデータである。「命令データ」は、具体的には、プログラムを機械語コードに翻訳したものである。
【００２４】
「処理ブロック」は、命令データ内の、ある目的を実現するためのまとまった処理ごとの塊である。
【００２５】
「並行処理」は、複数のアプリケーションが同時に実行される演算実行装置の動作形態を意味する。特に本願明細書では、１つの演算装置が複数のアプリケーションを、処理単位を区切って少しずつ交代で実行し、あたかも同時に実行しているような処理を行うことを指す。
【００２６】
「並列処理」は、複数のアプリケーションが同時に実行される演算実行装置の動作形態を意味する。特に本願明細書では、複数の演算装置が同時に異なる演算を実行する処理を行うことを指す。
【００２７】
「短縮コード」は、命令データ内の特定の命令コードを、短い数値列として暗号化したものである。
【００２８】
「短縮テーブル」は、短縮コードと短縮コードに暗号化された元の命令コードとの対応関係を示すデータである。
【００２９】
「優先度タグ」は、実行ログを格納する記憶部において、データを格納しておく優先順位を示すものである。記憶部においては、「優先度タグ」にしたがって、優先度が低いデータから順に新しいデータに上書きされる。
【００３０】
「組み込み機器」は、特定の機能を実現するために家電製品、機械、または、装置に組み込まれるコンピュータシステムである。
【００３１】
「不揮発性メモリ」は、システムが動作を終了するなどして電源供給が停止した場合でも、すでに書き込まれていたデータが保持される記憶装置である。
【００３２】
「ランダムアクセスメモリ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ、すなわち、ＲＡＭ）」は、読み出し、および、書き込みの双方が可能であり、かつ、電源供給が停止した場合にはすでに書き込まれていたデータが失われる記憶装置、すなわち、揮発性の記憶装置である。
【００３３】
「キャッシュ」は、命令データを格納する一時記憶領域の一種である。「キャッシュ」は、演算部からのデータの取得を高速に行うことができる。しかしながら、「キャッシュ」のデータ容量は、命令データ全体を格納するには小さいため、「キャッシュ」は、命令データ全体のうちの一部を格納する。
【００３４】
演算の実行中、演算部は、キャッシュに所望の命令コードが存在するか否かを確認する。そして、キャッシュに所望の命令コードが存在する場合には、キャッシュから当該命令コードを取得する。
【００３５】
一方で、キャッシュに所望の命令コードが存在しない場合には、命令データ全体が格納されたＲＡＭなどの記憶部を探索する。そして、演算部は、当該記憶部から命令コードを取得する。
【００３６】
キャッシュから命令コードを取得する場合は高速である一方、ＲＡＭなどから命令コードを取得する場合は時間がかかる。そのため、キャッシュに必要な命令コードが存在する確率が高いほど、高速な演算を行うことができる可能性が高まる。キャッシュに必要な命令コードが存在する確率を「キャッシュのヒット率」と称する。
【００３７】
「ＯＳ」は、オペレーティングシステム、すなわち、多くのソフトウェアが共通して利用する基本的な機能などを実装する、システム全体を管理するソフトウェアである。「ＯＳ」は、並列処理、または、並行処理などにおいて、処理の実行順序を決定するタスクスケジューリングなどを行う。
【００３８】
「主たる演算処理」は、演算実行装置において行われる本来の処理、たとえば、組み込み機器の制御などの処理である。「主たる演算処理」からは、頻度解析などの処理は除かれる。
【００３９】
「アイドルタスク」は、ＯＳによって管理される並列処理、または、並行処理などにおいて最も優先度の低い処理である。「アイドルタスク」は、最も優先度が低い処理であるため、他に何も実行するべき処理が存在しない場合にのみ動作する。
【００４０】
「解析指示」は、頻度解析部に入力される、頻度解析を開始するトリガーとなる信号である。
【００４１】
「解析終了指示」は、頻度解析部に入力される、頻度解析を終了するトリガーとなる信号である。
【００４２】
「マルチタスク」は、並行処理、または、並列処理などのように、複数の処理を同時に実行する処理方法である。
【００４３】
「スレッド」は、マルチタスクにおいて、演算部を占有する長さの１単位である。
【００４４】
＜演算実行装置の構成について＞
図１は、本実施の形態に関する演算実行装置を実現するための構成を概念的に例示する図である。
【００４５】
図１に例示される演算実行装置は、演算部２と、頻度解析部７と、置き換え部１０８とを備える。
【００４６】
演算部２は、命令コードに基づいて演算を行い、かつ、当該演算の実行に対応する実行ログを出力する機能部である。
【００４７】
頻度解析部７は、実行ログに対応する前記命令コードの使用頻度を解析し、かつ、当該解析の解析結果を出力する機能部である。
【００４８】
置き換え部１０８は、解析結果に基づいて選択的に、前記命令コードを短縮コードに置き換える機能部である。
【００４９】
ここで、演算部２は、短縮コードに置き換えられた命令コードに関しては、短縮コードに基づいて演算を行う。
【００５０】
図２は、上記の本実施の形態に関する演算実行装置を実現するための構成をさらに具体的に例示する図である。
【００５１】
図２は、本実施の形態に関する演算実行装置を実現するための構成を概念的に例示する図である。
【００５２】
図２に例示されるように、演算実行装置は、演算部２と、記憶部３と、一時記憶部４と、キャッシュ５と、命令デコードロジック部６と、頻度解析部７と、命令データ置き換え部８と、短縮テーブル生成部９と、テーブル記憶部１０と、記憶部２０と、記憶部２１とを備える。
【００５３】
図２に例示される命令データ置き換え部８は、図１に例示される置き換え部１０８に含まれる。
【００５４】
演算部２は、演算実行装置の演算処理を行う機能部である。演算部２は、一般的にはＣＰＵなどが該当する。演算部２は、命令コードに基づいて演算を行う。後述する短縮コードに置き換えられた命令コードに関しては、演算部２は、短縮コードに基づいて演算を行う。演算部２は、演算実行と同時に実行ログを出力する。実行ログには、実行された命令コードが示される。実行ログは、頻度解析部７へ格納される。
【００５５】
記憶部３には、演算部２に与えられる複数の命令コード、すなわち、命令データがあらかじめ格納される。組み込み機器などでは、記憶部３には不揮発メモリが使用される。
【００５６】
一時記憶部４には、命令データ置き換え部８から出力された命令データが一時的に格納される。一時記憶部４は、たとえば、メインメモリと呼ばれるＲＡＭである。
【００５７】
キャッシュ５は、一時記憶部４に格納された命令データの一部を格納する記憶部である。キャッシュ５に格納された命令データは、演算部２に処理を実行させるたびに１命令コードずつ、または、複数の命令コードずつ演算部２によって読み出される。
【００５８】
そして、演算部２によってキャッシュ５から読み出された命令コードは、命令デコードロジック部６において、演算部２が動作可能、すなわち、実行可能な数値列に翻訳される。そして、翻訳された数値列にしたがって、演算部２が動作する。
【００５９】
頻度解析部７は、演算部２が出力する実行ログに基づいて、実行されたそれぞれの命令コードの使用頻度を集計する。そして、頻度解析部７は、高い頻度で使用される命令コードを特定する頻度解析を行う。頻度解析部７における頻度解析は、演算部２からの解析指示にしたがって行われる。
【００６０】
命令データ置き換え部８は、頻度解析部７において特定された使用頻度の高い命令コードを、あらかじめ定められた短縮コードに置き換える。短縮コードは、記憶部２０にあらかじめ記憶された短縮コード表を参照することによって取得する。
【００６１】
短縮テーブル生成部９は、短縮コードと、対応するデコードされた後の数値列との関係を示す短縮テーブル９０を生成する。
【００６２】
短縮コードは、記憶部２０にあらかじめ記憶された短縮コード表を参照することによって取得する。また、短縮コードに対応するデコード後の数値列は、記憶部２１にあらかじめ記憶された命令デコードテーブルを参照することによって取得する。
【００６３】
テーブル記憶部１０は、短縮テーブル生成部９において生成された短縮テーブル９０を格納する。
【００６４】
記憶部２０は、命令コードと、対応する短縮コードとの関係を示す短縮コード表を格納する。
【００６５】
記憶部２１は、命令コードと、対応するデコード後の数値列との関係を示す命令デコードテーブルを格納する。
【００６６】
図３および図４は、図２に例示される演算実行装置を実際に運用する場合のハードウェア構成を概略的に例示する図である。
【００６７】
なお、図３および図４に例示されるハードウェア構成は、図２に例示される構成とは数などが整合しない場合があるが、これは図２に例示される構成が概念的な単位を示すものであることに起因する。
【００６８】
よって、少なくとも、図２に例示される１つの構成が、図３および図４に例示される複数のハードウェア構成から成る場合と、図２に例示される１つの構成が、図３および図４に例示されるハードウェア構成の一部に対応する場合と、さらには、図２に例示される複数の構成が、図３および図４に例示される１つのハードウェア構成に備えられる場合とが想定され得る。
【００６９】
また、図３および図４に例示されるハードウェア構成は、図２に例示される演算実行装置の概念的な構成を具体化して例示するものである。したがって、図２に例示される演算実行装置の概念的な構成に対応するハードウェア構成に加えて、新たなハードウェア構成が追加される場合があるが、新たに追加されるそれらのハードウェア構成が備えられない場合であっても、本実施の形態に関する演算実行装置は成立し得る。
【００７０】
図３では、図２中の演算実行装置を実現するためのハードウェア構成として、演算を行う処理回路１０２Ａと、情報を記憶することができる記憶装置１０３とが示される。これらの構成は、後述する他の実施の形態においても同様である。
【００７１】
図４では、図２中の演算実行装置を実現するためのハードウェア構成として、演算を行う処理回路１０２Ｂが示される。これらの構成は、後述する他の実施の形態においても同様である。
【００７２】
記憶部３と、一時記憶部４と、キャッシュ５と、テーブル記憶部１０と、記憶部２０と、記憶部２１とは、記憶装置１０３または別の記憶装置（ここでは、図示しない）によって実現される。
【００７３】
記憶装置１０３は、たとえば、ハードディスク（Ｈａｒｄ  ｄｉｓｋ  ｄｒｉｖｅ、すなわち、ＨＤＤ）、ランダムアクセスメモリ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ、すなわち、ＲＡＭ）、リードオンリーメモリ（ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ、すなわち、ＲＯＭ）、フラッシュメモリ、ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ（ＥＰＲＯＭ）およびｅｌｅｃｔｒｉｃａｌｌｙ  ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ（ＥＥＰＲＯＭ）などの、揮発性または不揮発性の半導体メモリ、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスクまたはＤＶＤなどを含むメモリ（記憶媒体）などによって構成されるなどを含むメモリ（記憶媒体）などによって構成される。
【００７４】
処理回路１０２Ａは、記憶装置１０３に格納されたプログラムを実行するものであってもよい。すなわち、たとえば、中央演算処理装置（ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ、すなわち、ＣＰＵ）、マイクロプロセッサ、マイクロコンピュータ、デジタルシグナルプロセッサ（ｄｉｇｉｔａｌ  ｓｉｇｎａｌ  ｐｒｏｃｅｓｓｏｒ、すなわち、ＤＳＰ）であってもよい。
【００７５】
処理回路１０２Ａが記憶装置１０３に格納されたプログラムを実行するものである場合、演算部２、命令デコードロジック部６、頻度解析部７、命令データ置き換え部８、および、短縮テーブル生成部９は、記憶装置１０３に格納されたプログラムが処理回路１０２Ａによって実行されるソフトウェア、ファームウェア、または、ソフトウェアとファームウェアとの組み合わせにより実現される。なお、この機能は、たとえば、複数の処理回路が連携することによって実現されてもよい。
【００７６】
ソフトウェア、および、ファームウェアはプログラムとして記述され、記憶装置１０３に記憶されるものであってもよい。その場合、処理回路１０２Ａは、記憶装置１０３に格納されたプログラムを読み出して実行することによって、上記の機能を実現する。すなわち、記憶装置１０３は、処理回路１０２Ａに実行されることによって、上記の機能が結果的に実現されるプログラムを記憶するものであってもよい。
【００７７】
また、処理回路１０２Ｂは、専用のハードウェアであってもよい。すなわち、たとえば、単一回路、複合回路、プログラム化されたプロセッサ、並列プログラム化されたプロセッサ、集積回路（ａｐｐｌｉｃａｔｉｏｎ  ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ、すなわち、ＡＳＩＣ）、ｆｉｅｌｄ−ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ（ＦＰＧＡ）またはこれらを組み合わせた回路であってもよい。
【００７８】
処理回路１０２Ｂが専用のハードウェアである場合、演算部２、命令デコードロジック部６、頻度解析部７、命令データ置き換え部８、および、短縮テーブル生成部９は、処理回路１０２Ｂが動作することにより実現される。なお、この機能は、別々の回路で実現されてもよいし、単一の回路で実現されてもよい。
【００７９】
なお、上記の演算部２、命令デコードロジック部６、頻度解析部７、命令データ置き換え部８、および、短縮テーブル生成部９の機能は、一部が記憶装置１０３に格納されたプログラムを実行するものである処理回路１０２Ａにおいて実現され、一部が専用のハードウェアである処理回路１０２Ｂにおいて実現されてもよい。
【００８０】
＜命令コードのサイズを小さくする背景について＞
キャッシュ５には、一時記憶部４に格納された命令データ全体のうちの一部が格納される。演算部２が命令コードを読み出す際に、キャッシュ５に所望の命令コードが存在しなかった場合、すなわち、キャッシュミスが起こった場合には、演算部２は、一時記憶部４から所望の命令コードを取得しなければならない。
【００８１】
演算部２がキャッシュ５から命令コードを取得することができる場合は、演算部２が一時記憶部４から命令コードを取得する場合と比較して、演算部２が命令コードを高速に取得することができる。
【００８２】
そのため、演算部２における処理を高速化させるためには、キャッシュ５に所望の命令コードが存在する確率を高めることが望ましい。それには、より多くの命令コードがキャッシュ５に格納されるように、それぞれの命令コードのサイズが小さい方が望ましい。
【００８３】
また、命令コードを取得する際の１回あたりのデータサイズは、通常、演算部２ごとに固定されている。したがって、命令コードのサイズが小さければ一度に取得することができる命令コードが多くなる。そのため、命令コードの取得が高速化する可能性が高い。
【００８４】
特に、キャッシュミスが起こるなどによって、演算部２の処理が一時停止してしまった直後などは、直前の処理の終了を待つ必要がないため、処理が高速化する可能性が高い。
【００８５】
＜頻度解析部の動作について＞
図５は、本実施の形態に関する頻度解析部の動作を例示するフローチャートである。
【００８６】
図５に例示されるように、まず、頻度解析部７は、実行ログが、頻度解析の対象となる実行ログであるか否かを判断する。これは、図５に例示されるステップＳＴ１０１に対応する動作である。
【００８７】
この動作は、後述するように頻度解析の対象となる実行ログと、頻度解析の対象とならない実行ログとが区分されている場合に有効な動作である。すべての実行ログが頻度解析の対象となっている場合には、実行ログが頻度解析の対象となる実行ログである、すなわち、図５に例示されるステップＳＴ１０１から分岐する「ＹＥＳ」に対応する場合として、図５に例示されるステップＳＴ１０２へ進む。
【００８８】
一方で、実行ログが頻度解析の対象とならない実行ログである、すなわち、図５に例示されるステップＳＴ１０１から分岐する「ＮＯ」に対応する場合には、図５に例示されるステップＳＴ１０５へ進む。
【００８９】
次に、頻度解析部７は、実行ログに示されている命令コード一行ごとに、その時刻よりも前に実行されていた命令コードであるか否かを確認する。これは、図５に例示されるステップＳＴ１０２に対応する動作である。
【００９０】
そして、頻度解析部７は、その時刻よりも前に実行されていた命令コードである場合、すなわち、図５に例示されるステップＳＴ１０２から分岐する「ＹＥＳ」に対応する場合には、その命令コードのカウント値に１を加算する。これは、図５に例示されるステップＳＴ１０３に対応する動作である。
【００９１】
一方で、頻度解析部７は、その時刻よりも前に実行されていた命令コードではない場合、すなわち、初めて実行された命令コードである場合には、新しくカウンターを作成してそのカウント値に１を加算する。これは、図５に例示されるステップＳＴ１０２から分岐する「ＮＯ」に対応する。そして、当該動作は、図５に例示されるステップＳＴ１０４に対応する動作である。
【００９２】
ステップＳＴ１０３の動作、または、ステップＳＴ１０４の動作が行われた後、頻度解析部７は、カウント値を加算した命令コードの次の行の命令コードが存在するか否かを判断する。これは、図５に例示されるステップＳＴ１０５に対応する動作である。
【００９３】
次の行の命令コードが存在する場合、すなわち、図５に例示されるステップＳＴ１０５から分岐する「ＹＥＳ」に対応する場合には、図５に例示されるステップＳＴ１０６へ進む。そして、頻度解析部７は、次の行の命令コードを頻度解析の対象として、ステップＳＴ１０１へ戻る。
【００９４】
一方で、次の行の命令コードが存在しない場合、すなわち、図５に例示されるステップＳＴ１０５から分岐する「ＮＯ」に対応する場合には、加算動作を終了する。
【００９５】
このようにして、頻度解析部７は、実行ログに示された命令コードの使用頻度を集計する。
【００９６】
図６は、実行ログに示された命令コードと、その使用頻度を示すカウント値を例示する図である。図６において、実行ログに示された命令コードがＸに例示され、その使用頻度を示すカウント値がＹに例示される。頻度解析部７は、図６に例示されるような、実行ログに示された命令コードの使用頻度を解析して、対応するカウント値を加算する。
【００９７】
頻度解析部７は、上記の動作によって積算されたカウント値に基づいて、使用頻度の高い命令コードを特定する。「使用頻度が高い」と判定する方法としては、たとえば、しきい値となる回数をあらかじめ設定しておき、当該しきい値を超えるカウント値である命令コードを、使用頻度の高い命令コードとする方法がある。または、「使用頻度が高い」と判定する方法としては、すべての命令コードをカウント値の多い順に並べた上で、当該カウント値の多い命令コードの上位のみを、使用頻度の高い命令コードとする方法もある。なお、この場合の「上位」は、あらかじめ定められた命令コード数に達するまでを「上位」としてもよいし、あらかじめ定められた全命令コードに対する割合に達するまでを「上位」としてもよい。
【００９８】
ここで、頻度解析部７は、実行ログに基づいて実際に使用された命令コードの使用頻度を集計する。そのため、使用頻度の高い命令コードの特定に際しては、命令コードの使用頻度の偏りなどが精度よく反映される。
【００９９】
＜命令データ置き換え部の動作について＞
命令データ置き換え部８は、記憶部３に格納されている命令データのうち、頻度解析部７において特定された使用頻度の高い命令コードを優先的に短縮コードに置き換える。
【０１００】
さらに、命令データ置き換え部８では、上記の一部の命令コードが短縮コードに置き換えられたために生じた空き領域を埋めるため、短縮コードに置き換えられた命令コードのアドレス、および、短縮コードに置き換えられていない命令コードのアドレスも含めて書き換える。この際、アドレスが書き換えられる命令コードのアドレスを指定する、他の命令コード中のジャンプ命令なども、それに応じて書き換える。
【０１０１】
＜短縮テーブル生成部の動作について＞
短縮テーブル生成部９では、短縮コードと、短縮コードに置き換えられた命令コードが命令デコードロジック部６の命令デコーダによってデコードされた場合の数値列との対応関係を示す短縮テーブル９０を生成する。
【０１０２】
＜命令コードの取得動作について＞
演算部２が短縮コードを含む命令コードを取得する際、取得される命令コードは、命令デコードロジック部６、または、テーブル記憶部１０に転送される。
【０１０３】
演算部２に取得される命令コードが短縮コードである場合には、テーブル記憶部１０に格納された短縮テーブル９０を参照して、対応する数値列に置き換えられる。そして、演算部２は、当該数値列を取得する。
【０１０４】
一方で、演算部２に取得される命令コードが短縮コードでない場合には、命令デコードロジック部６の命令デコードロジックによって、当該命令コードがデコードされる。そして、演算部２は、デコードされた当該数値列を取得する。
【０１０５】
このように、使用頻度の高い命令コードは、短縮コードに置き換えられた上で、一時記憶部４に格納される。したがって、使用頻度の高い命令コードのサイズを効率的に縮小することができる。
【０１０６】
そうすると、一時記憶部４に格納された命令データ全体のうちの一部が格納されるキャッシュ５には、より多くの命令コードが格納されることとなる。したがって、キャッシュ５に所望の命令コードが存在する確率を高まり、演算部２が命令コードを高速に取得することができる。
【０１０７】
よって、演算部２が命令コードを高速に取得することができるため、演算実行装置における処理が高速化する可能性が高まる。
【０１０８】
＜第２の実施の形態＞
本実施の形態に関する演算実行装置、および、演算実行方法について説明する。以下では、以上に記載された実施の形態で説明された構成と同様の構成については同じ符号を付して図示し、その詳細な説明については適宜省略するものとする。
【０１０９】
＜演算実行装置の構成について＞
頻度解析部における頻度解析が、演算部２の主たる演算処理の妨げにならないように、演算実行装置の初期化時、または、演算実行装置の終了時に頻度解析が行われてもよい。
【０１１０】
図７は、演算実行装置の初期化時に頻度解析を行う場合における頻度解析部の内部構成を含む演算実行装置の構成を概念的に例示する図である。
【０１１１】
図７に例示されるように、演算実行装置は、演算部２と、頻度解析部７０と、命令データ置き換え部８と、短縮テーブル生成部９とを備える。他の構成については、ここでは図示を省略する。
【０１１２】
頻度解析部７０は、記憶部１１と、頻度集計部１２と、記憶部１３とを備える。
【０１１３】
図７に例示される場合では、演算実行時に演算部２から出力される実行ログは、記憶部１１に格納される。記憶部１１は、不揮発性の記憶部である。そのため、演算実行装置が動作を停止した後も、実行ログは記憶部１１に格納された状態となる。
【０１１４】
その後、再び演算実行装置が駆動する際に初期化が行われ、初期化処理の一環として頻度解析部７０が頻度解析を行う。
【０１１５】
演算実行装置の初期化が開始されると、頻度解析を開始するための解析指示が演算部２から出力される。そして、頻度集計部１２は、演算部２からの解析指示を受けて、記憶部１１から実行ログを読み出す。そして、頻度集計部１２は、頻度解析を開始する。解析結果は、記憶部１３に格納される。
【０１１６】
上記のタイミングで頻度解析を行うことによって、初期化終了後の、演算実行装置の主たる演算処理の実行時には、頻度解析はすでに終了している。そのため、演算実行装置の主たる演算処理の妨げとはならない。
【０１１７】
解析結果を格納する記憶部１３は、揮発性のＲＡＭであっても不揮発性メモリであってもよい。ただし、記憶部１３がＲＡＭである方が処理が高速であるため、より望ましい。
【０１１８】
解析結果は、命令データ置き換え部８、または、短縮テーブル生成部９において用いられる。なお、頻度解析部７０は、図３および図４に例示されるような演算部２と同一のハードウェア構成のうちのそれぞれの機能部であってもよいし、演算部２とは別のハードウェア構成であってもよい。
【０１１９】
図８は、演算実行装置の終了時に頻度解析を行う場合における頻度解析部の内部構成を含む演算実行装置の構成を概念的に例示する図である。
【０１２０】
図８に例示されるように、演算実行装置は、演算部２と、頻度解析部７１と、命令データ置き換え部８と、短縮テーブル生成部９とを備える。他の構成については、ここでは図示を省略する。
【０１２１】
頻度解析部７１は、記憶部１４と、頻度集計部１２と、記憶部１５とを備える。
【０１２２】
図８に例示される場合では、演算実行時に演算部２から出力される実行ログは、記憶部１４に格納される。記憶部１４は、揮発性のＲＡＭであってもよいし不揮発性メモリであってもよい。ただし、記憶部１４がＲＡＭである方が処理が高速であるため、より望ましい。
【０１２３】
図８に例示される場合では、演算実行装置の終了処理の際、頻度解析部７１が頻度解析を行う。
【０１２４】
演算実行装置の終了処理が開始されると、頻度解析を開始するための解析指示が演算部２から出力される。そして、頻度集計部１２は、演算部２からの解析指示を受けて、記憶部１４から実行ログを読み出す。そして、頻度集計部１２は、頻度解析を開始する。解析結果は、記憶部１５に格納される。
【０１２５】
上記のタイミングで頻度解析を行うことによって、演算実行装置の主たる演算処理の実行時には、頻度解析は行われない。そのため、演算実行装置の主たる演算処理の妨げとはならない。
【０１２６】
解析結果を格納する記憶部１５は、不揮発性の記憶部である。そのため、演算実行装置が動作を停止した後も、実行ログは記憶部１５に格納された状態となる。
【０１２７】
次回演算実行装置が起動した後に、解析結果は、命令データ置き換え部８、または、短縮テーブル生成部９において用いられる。なお、頻度解析部７１は、図３および図４に例示されるような演算部２と同一のハードウェア構成のうちのそれぞれの機能部であってもよいし、演算部２とは別のハードウェア構成であってもよい。
【０１２８】
また、演算部２の演算処理の実行時に、その並列処理、または、その並行処理として頻度解析が行われてもよい。
【０１２９】
図９は、演算部２の演算処理の実行時に、その並列処理、または、その並行処理として頻度解析を行う場合における、頻度解析部の内部構成を含む演算実行装置の構成を概念的に例示する図である。
【０１３０】
図９に例示されるように、演算実行装置は、演算部２と、頻度解析部７２と、命令データ置き換え部８と、短縮テーブル生成部９とを備える。他の構成については、ここでは図示を省略する。
【０１３１】
頻度解析部７２は、記憶部１６と、頻度集計部１２と、記憶部１７とを備える。
【０１３２】
図９に例示される場合では、演算実行時に演算部２から出力される実行ログは、記憶部１６に格納される。記憶部１６は、揮発性のＲＡＭであってもよいし不揮発性メモリであってもよい。ただし、記憶部１６がＲＡＭである方が処理が高速であるため、より望ましい。
【０１３３】
図９に例示される場合では、演算実行装置の演算処理の実行時に、頻度解析部７２が頻度解析を行う。
【０１３４】
この場合は、演算実行装置の初期化時、または、演算実行装置の終了時に頻度解析を行う場合と比較して、より直近の動作に即した頻度解析を行うことが可能である。すなわち、実行ログの状態をリアルタイムで反映しつつ、頻度解析を行うことができる。
【０１３５】
演算実行装置の演算処理が実行されている間に、一定期間ごとに演算部２から解析指示が出力される。そして、頻度集計部１２は、演算部２からの解析指示を受けて、記憶部１６から実行ログを読み出す。そして、頻度集計部１２は、頻度解析を開始する。解析結果は、記憶部１７に格納される。
【０１３６】
解析結果を格納する記憶部１７は、揮発性のＲＡＭであっても不揮発性メモリであってもよい。ただし、記憶部１７がＲＡＭである方が処理が高速であるため、より望ましい。
【０１３７】
解析結果は、命令データ置き換え部８、または、短縮テーブル生成部９において用いられる。なお、頻度解析部７２は、図３および図４に例示されるような演算部２と同一のハードウェア構成のうちのそれぞれの機能部であってもよいし、演算部２とは別のハードウェア構成であってもよい。
【０１３８】
異なるハードウェア構成である場合には、演算部２における処理と頻度解析部７２における処理との並列処理を行うことが可能である。同一のハードウェア構成である場合には、頻度解析の処理を、演算実行装置の主たる演算処理に対する並行処理として実行することができる。
【０１３９】
さらに、並列処理、または、並行処理として頻度解析を実行する場合において、主たる演算処理が逼迫していない時間に頻度解析を行ってもよい。このような場合には、演算部２への負荷を最小限に抑えることが可能である。また、ＯＳによってタスク管理を行い、頻度解析を最も優先度の低い処理、すなわち、アイドルタスクとして実行させてもよい。
【０１４０】
さらに、頻度解析部７２として、演算部２とは異なるハードウェア構成を有し、頻度解析部７２に含まれるハードウェア構成がすべて演算部２の待機電圧状態においても動作する構造である場合には、演算部２が省電力の待機電圧状態となった期間にのみ頻度解析を行ってもよい。
【０１４１】
演算部２が省電力の待機電圧状態となった期間にのみ頻度解析を行う場合、頻度解析が演算部２の演算実行、初期化処理、および、終了処理の妨げとならない。演算部２が省電力の待機電圧状態となった期間にのみ頻度解析を行う場合、演算部２は待機電圧状態に入るときに解析指示を出力し、待機電圧状態から復帰する際に解析終了指示を出力するようにしてもよい。
【０１４２】
＜第３の実施の形態＞
本実施の形態に関する演算実行装置、および、演算実行方法について説明する。以下では、以上に記載された実施の形態で説明された構成と同様の構成については同じ符号を付して図示し、その詳細な説明については適宜省略するものとする。
【０１４３】
＜演算実行装置の構成について＞
頻度集計部は、演算部２において実行される命令コードのすべてを区別なく頻度解析してもよいが、特定の命令コードに限定して頻度解析を行うことで、効率を高めることができる。
【０１４４】
短縮コードによる命令データの縮小化によって処理が高速化される。しかしながら、特に、演算部２への負荷が高く、演算部２の演算処理が逼迫する可能性が高い命令コードを減らすことが重要である。したがって、使用頻度の高い命令コードに限って頻度解析を行うことによって処理を高速化させるだけでなく、演算部２への負荷の高い命令コードに限って頻度解析を行うことによって処理を高速化させてもよい。
【０１４５】
また、ＯＳの管理によってマルチタスクが実行されている場合、それぞれの処理において行われている演算が大きく異なり、したがって、それぞれ異なる使用頻度の偏りが存在する。そのため、それらの使用頻度を別々に集計してもよい。
【０１４６】
図１０は、頻度解析部の内部構成を含む演算実行装置の構成を概念的に例示する図である。
【０１４７】
図１０に例示されるように、演算実行装置は、演算部２と、頻度解析部７３と、命令データ置き換え部８と、短縮テーブル生成部９とを備える。他の構成については、ここでは図示を省略する。
【０１４８】
頻度解析部７３は、記憶部１８と、頻度集計部１２と、記憶部１９とを備える。
【０１４９】
図１０に例示される場合では、演算実行時に演算部２から出力される区分分けされた実行ログＡ、実行ログＢ、および、実行ログＣは、記憶部１８に格納される。記憶部１８は、揮発性のＲＡＭであってもよいし不揮発性メモリであってもよい。ただし、記憶部１８がＲＡＭである方が処理が高速であるため、より望ましい。
【０１５０】
図１０に例示される場合では、たとえば、演算実行装置の演算処理の実行時に、頻度解析部７３が頻度解析を行う。
【０１５１】
この場合は、演算実行装置の初期化時、または、演算実行装置の終了時に頻度解析を行う場合と比較して、より直近の動作に即した頻度解析を行うことが可能である。すなわち、実行ログの状態をリアルタイムで反映しつつ、頻度解析を行うことができる。
【０１５２】
演算実行装置の演算処理が実行されている間に、処理が切り換わるごとに演算部２から解析指示が出力される。そして、頻度集計部１２は、演算部２からの解析指示を受けて、記憶部１８から実行ログを読み出す。そして、頻度集計部１２は、頻度解析を開始する。解析結果は、記憶部１９に格納される。
【０１５３】
解析結果を格納する記憶部１９は、揮発性のＲＡＭであっても不揮発性メモリであってもよい。ただし、記憶部１９がＲＡＭである方が処理が高速であるため、より望ましい。
【０１５４】
図１０に例示されるように、頻度解析部７３は、区分分けされた実行ログＡ、実行ログＢ、および、実行ログＣの少なくとも１つに対して頻度の集計を行う。そして、実行ログＡの頻度解析の結果を解析結果Ａとして、実行ログＢの頻度解析の結果を解析結果Ｂとして、実行ログＣの頻度解析の結果を解析結果Ｃとして、それぞれ出力する。
【０１５５】
頻度解析部７３が、区分分けされた実行ログＡ、実行ログＢ、および、実行ログＣのうちのいずれかのみについて使用頻度の解析を行う場合には、処理を高速化させることができる。
【０１５６】
また、使用頻度の高い命令コードを特定するに際して、実行ログに現れた処理の種類すべてに対して集計を行うと、頻度解析部における計算量が膨大になる場合がある。そのため、頻度解析の対象を、一定以上の繰り返し処理などが現れた箇所にのみに限定してもよい。たとえば、図１１に例示されるように、複数の命令コードからなるパターンが一定回数以上繰り返された箇所、すなわち、命令コード群が一定回数以上繰り返された箇所を検出して使用頻度を算出してもよい。
【０１５７】
なお、図１１は、実行ログに示された命令コードを例示する図である。図１１においては、命令コード群がＺで例示される。
【０１５８】
さらに、命令データによっては、オペランドの使用頻度の偏りが、オペコードに比べて顕著である場合がある。そのような場合には、オペランドのみの頻度を算出し、オペランドのみを短縮コード化の対象としてもよい。
【０１５９】
逆に命令データによっては、オペコードの使用頻度の偏りが、オペランドに比べて顕著である場合がある。その場合、オペコードのみの頻度を算出し、オペコードのみを短縮コード化の対象とする。
【０１６０】
＜第４の実施の形態＞
本実施の形態に関する演算実行装置、および、演算実行方法について説明する。以下では、以上に記載された実施の形態で説明された構成と同様の構成については同じ符号を付して図示し、その詳細な説明については適宜省略するものとする。
【０１６１】
短縮テーブル９０の生成を、演算部２の主たる演算実行の妨げにならないようにする方法の１つとして、短縮テーブル生成部９を、初期化時に動作させるという手法が挙げられる。
【０１６２】
また、主たる演算実行装置の初期化の妨げにならないようにするために、短縮テーブル生成部９として、演算部２とは異なる演算部と用い、省電力の待機電源状態となった期間に動作させてもよい。
【０１６３】
＜第５の実施の形態＞
本実施の形態に関する演算実行装置、および、演算実行方法について説明する。以下では、以上に記載された実施の形態で説明された構成と同様の構成については同じ符号を付して図示し、その詳細な説明については適宜省略するものとする。
【０１６４】
命令データの置き換えを、演算部２の演算実行の妨げにならないようにする方法の１つとして、命令データ置き換え部８を初期化時に動作させるという手法が挙げられる。
【０１６５】
また、命令データの置き換えを、演算部２の演算実行、初期化、および、終了処理の妨げにならないようにする手法として、命令データ置き換え部８として、演算部２とは異なる演算部と用い、省電力の待機電源状態となった期間に動作させる。
【０１６６】
＜第６の実施の形態＞
本実施の形態に関する演算実行装置、および、演算実行方法について説明する。以下では、以上に記載された実施の形態で説明された構成と同様の構成については同じ符号を付して図示し、その詳細な説明については適宜省略するものとする。
【０１６７】
＜演算実行装置の構成について＞
図７から図１０の、実行ログを記憶する記憶部１１、記憶部１４、および、記憶部１６に、実行ログをブロック単位で、優先度タグをつけて保存する。
【０１６８】
その上で、新規の実行ログを記憶する際には、優先度の低い実行ログを上書きすることで、より優先度の高い実行ログが保存され、頻度解析の対象となるようにする。これは、実行ログを記憶する記憶部の容量が有限であるため、実際の使用状況に即した頻度解析を行うためには、記憶する実行ログをできるだけ新しいものに入れ替える必要があるためである。
【０１６９】
図１２は、ｎ＋１個目の実行ログを記憶する際の更新動作を説明するための図である。
【０１７０】
記憶部がｎ個の記憶領域、すなわち、第１記憶領域から第ｎ記憶領域を有するものとする。この場合、実行ログがｎ個記憶される場合には、たとえば、第１記憶領域から第ｎ記憶領域に対して、それぞれ、実行ログが時系列順に記憶される。
【０１７１】
すなわち、第１記憶領域に記憶される第１実行ログは最も古い実行ログであり、第ｎ記憶領域に記憶される第ｎ実行ログは最も新しい実行ログである。
【０１７２】
この場合に、第１実行ログには優先度タグ１、第ｎ実行ログには優先度タグｎを付するものとし、優先度タグとして付される数値が高いほど優先度が高いものとする。図１２においては、Ｗとして例示される。
【０１７３】
ｎ＋１個目の実行ログ、すなわち、第ｎ＋１実行ログが演算部２から出力された場合、記憶部に記憶された実行ログのうち最も優先度の低い実行ログ、すなわち、図１２の第１記憶領域における第１実行ログを、第ｎ＋１実行ログに更新する。
【０１７４】
そして、当該上書き動作に伴って、第１記憶領域に記憶された第ｎ＋１実行ログに優先度タグとしてｎを付し、第２実行ログの優先度タグは１に変更し、第ｎ実行ログの優先度タグはｎ−１に変更する。この時点で、最も優先度の低い実行ログは第２実行ログとなる。
【０１７５】
このような方法で実行ログの記憶を行う際、新しい実行ログを優先的に記憶するための方法として、図１２に例示されるように、時系列順となるように優先度を付すという手法があげられる。
【０１７６】
また、繰り返し回数が多い実行ログに高い優先度を付してもよい。また、演算部２が演算を行う際の負荷が高い命令コードに対応する実行ログに、高い優先度を付してもよい。
【０１７７】
＜以上に記載された実施の形態によって生じる効果について＞
次に、以上に記載された実施の形態によって生じる効果を例示する。なお、以下では、以上に記載された実施の形態に例示された具体的な構成に基づいて当該効果が記載されるが、同様の効果が生じる範囲で、本願明細書に例示される他の具体的な構成と置き換えられてもよい。
【０１７８】
また、当該置き換えは、複数の実施の形態に跨ってなされてもよい。すなわち、異なる実施の形態において例示されたそれぞれの構成が組み合わされて、同様の効果が生じる場合であってもよい。
【０１７９】
以上に記載された実施の形態によれば、演算実行装置は、演算部２と、頻度解析部７と、置き換え部とを備える。ここで、命令コード置き換え部８は、置き換え部に対応するものである。演算部２は、命令コードに基づいて演算を行い、かつ、当該演算の実行に対応する実行ログを出力する。頻度解析部７は、実行ログに対応する命令コードの使用頻度を解析し、かつ、当該解析の解析結果を出力する。命令コード置き換え部８は、解析結果に基づいて選択的に、命令コードを短縮コードに置き換える。そして、演算部２は、短縮コードに置き換えられた命令コードに関しては、短縮コードに基づいて演算を行う。
【０１８０】
また、上記の実施の形態によれば、演算実行装置は、プログラムを実行する処理回路１０２Ａと、実行されるプログラムを記憶する記憶装置１０３とを備える。そして、処理回路１０２Ａがプログラムを実行することによって、以下の動作が実現される。すなわち、命令コードに基づいて演算が行われ、かつ、当該演算の実行に対応する実行ログが出力される。そして、実行ログに対応する命令コードの使用頻度が解析され、かつ、当該解析の解析結果が出力される。そして、解析結果に基づいて選択的に、命令コードが短縮コードに置き換えられる。ここで、短縮コードに置き換えられた命令コードに関しては、短縮コードに基づいて演算が行われる。
【０１８１】
また、上記の実施の形態によれば、演算実行装置は、専用のハードウェアである処理回路１０２Ｂを備える。そして、専用のハードウェアである処理回路１０２Ｂは、以下の動作を行う。すなわち、専用のハードウェアである処理回路１０２Ｂは、命令コードに基づいて演算を行い、かつ、当該演算の実行に対応する実行ログを出力する。そして、実行ログに対応する命令コードの使用頻度を解析し、かつ、当該解析の解析結果を出力する。そして、解析結果に基づいて選択的に、命令コードを短縮コードに置き換える。そして、短縮コードに置き換えられた命令コードに関しては、短縮コードに基づいて演算を行う。
【０１８２】
このような構成によれば、実際にプログラムが使用された使用頻度を考慮して、命令コードの短縮コードへの置き換えを行うことができる。具体的には、演算部２が、演算の実行に対応する実行ログを出力する。そして、頻度解析部７が、当該実行ログに対応する命令コードの使用頻度を解析する。したがって、命令コードの実際の使用頻度を動的に解析することができるため、実際の演算部２の演算動作に即した頻度解析が可能となる。したがって、当該解析結果に基づく短縮コードに置き換える命令コードの選択の精度が高まる。それに伴って、キャッシュ５に記憶することができる命令コードの数を効果的に増加させることができるため、キャッシュ５におけるヒット率を向上させることができる。
【０１８３】
なお、これらの構成以外の本願明細書に例示される他の構成については適宜省略することができる。すなわち、これらの構成のみで、以上に記載された効果を生じさせることができる。
【０１８４】
しかしながら、本願明細書に例示される他の構成のうちの少なくとも１つを以上に記載された構成に適宜追加した場合、すなわち、以上に記載された構成としては記載されなかった本願明細書に例示される他の構成を以上に記載された構成に追加した場合でも、同様に以上に記載された効果を生じさせることができる。
【０１８５】
また、以上に記載された実施の形態によれば、命令コード置き換え部８は、解析結果における命令コードの使用頻度の高さに基づいて選択的に、命令コードを短縮コードに置き換える。このような構成によれば、命令コードの実際の使用頻度の高さを動的に解析することができるため、実際の演算部２の演算動作に即した頻度解析が可能となる。
【０１８６】
また、以上に記載された実施の形態によれば、命令コード置き換え部８は、解析結果における使用頻度の高い命令コードを優先的に短縮コードに置き換える。このような構成によれば、解析結果に基づいて使用頻度の高い命令コードを優先的に短縮コードに置き換えることによって、キャッシュ５に記憶することができる命令コードの数を効果的に増加させることができる。そのため、キャッシュ５におけるヒット率を向上させることができる。
【０１８７】
また、以上に記載された実施の形態によれば、命令コード置き換え部８は、短縮コードを含む命令コードのアドレスを置き換える。このような構成によれば、命令コードのサイズの変化によって生じた空き領域を埋めることによって、命令データ全体のサイズを縮小することができる。
【０１８８】
また、以上に記載された実施の形態によれば、演算実行装置は、短縮テーブル９０を備える。短縮テーブル９０は、短縮コードと、短縮コードが演算部２において実行可能に変換された数値列との対応関係を示す。そして、演算部２は、短縮テーブル９０を参照し、短縮コードに対応する数値列に基づいて演算を行う。このような構成によれば、短縮コードに関しては、命令デコードロジック部６におけるデコードを行わずに、代わりに、短縮テーブルを参照することによって対応する数値列に置き換えることができる。
【０１８９】
また、以上に記載された実施の形態によれば、演算実行装置は、コード記憶部を備える。ここで、記憶部３は、コード記憶部に対応するものである。記憶部３には、命令コードがあらかじめ記憶される。そして、命令コード置き換え部８は、解析結果に基づいて選択的に、記憶部３に記憶された命令コードを短縮コードに置き換える。また、演算実行装置は、さらに、一時記憶部４と、キャッシュ５と、変換部と、テーブル記憶部１０とを備える。ここで、命令デコードロジック部６は、変換部に対応するものである。一時記憶部４は、命令コード置き換え部８から出力される短縮コードを含む命令コードを一時的に記憶する。キャッシュ５は、一時記憶部４に記憶された短縮コードを含む命令コードの一部を記憶する。命令デコードロジック部６は、キャッシュ５に記憶された命令コードを、演算部２において実行可能な数値列に変換する。テーブル記憶部１０は、短縮テーブル９０を記憶する。このような構成によれば、命令コードの実際の使用頻度を動的に解析することができるため、実際の演算部２の演算動作に即した頻度解析が可能となる。したがって、当該解析結果に基づく短縮コードに置き換える命令コードの選択の精度が高まる。それに伴って、キャッシュ５に一度に記憶することができる命令コードの数を効果的に増加させることができるため、キャッシュ５におけるヒット率を向上させることができる。
【０１９０】
また、以上に記載された実施の形態によれば、頻度解析部７０は、実行ログ、または、解析結果を記憶する不揮発性の内蔵記憶部を備える。ここで、記憶部１１、記憶部１３、記憶部１４、記憶部１５、記憶部１６、記憶部１７、記憶部１８、および、記憶部１９は、内蔵記憶部に対応するものである。このような構成によれば、演算実行装置が動作を停止した後も、実行ログは記憶部に格納された状態となる。そのため、演算実行装置の主たる演算動作の妨げとならない時間帯である、演算実行装置の初期化時、または、演算実行装置の終了時に、頻度解析を行うことができる。
【０１９１】
また、以上に記載された実施の形態によれば、内蔵記憶部は、優先度の低い命令コードを優先的に更新する。このような構成によれば、優先度の高い実行ログを優先的に残すこととなるため、記憶容量を効率的に使用することができる。
【０１９２】
また、以上に記載された実施の形態によれば、頻度解析部７０は、演算実行装置の初期化動作時に、命令コードの使用頻度を解析する。このような構成によれば、演算実行装置の主たる演算動作の妨げとならない時間帯に、頻度解析を行うことができる。
【０１９３】
また、以上に記載された実施の形態によれば、頻度解析部７１は、演算実行装置の終了動作時に、命令コードの使用頻度を解析する。このような構成によれば、演算実行装置の主たる演算動作の妨げとならない時間帯に、頻度解析を行うことができる。
【０１９４】
また、以上に記載された実施の形態によれば、頻度解析部７２は、演算部２の演算実行時に、命令コードの使用頻度を解析する。このような構成によれば、演算部２における直近の演算動作に即した頻度解析を行うことができる。すなわち、実行ログの状態をリアルタイムで反映しつつ、頻度解析を行うことができる。
【０１９５】
また、以上に記載された実施の形態によれば、頻度解析部７３は、実行ログに対応する命令コードのうちの一部についてのみ使用頻度を解析し、解析結果を出力する。このような構成によれば、たとえば、使用頻度の高い命令コードに限って頻度解析を行うことによって処理を高速化させることができる。また、たとえば、演算部２への負荷の高い命令コードに限って頻度解析を行うことによって処理を高速化させることができる。
【０１９６】
また、以上に記載された実施の形態によれば、頻度解析部７は、複数の命令コードを合わせた命令コード群の使用頻度を解析し、解析結果を出力する。このような構成によれば、複数の命令コードからなるパターンが一定回数以上繰り返された箇所を検出して使用頻度を算出し、さらに、その命令コード群を１つの短縮コードに置き換えることができる。
【０１９７】
また、以上に記載された実施の形態によれば、演算実行方法において、命令コードに基づいて演算を行い、かつ、当該演算の実行に対応する実行ログを出力する。そして、実行ログに対応する命令コードの使用頻度を解析し、かつ、当該解析の解析結果を出力する。そして、解析結果に基づいて選択的に、命令コードを短縮コードに置き換える。そして、短縮コードに置き換えられた命令コードに関しては、短縮コードに基づいて演算を行う。
【０１９８】
このような構成によれば、実際にプログラムが使用された使用頻度を考慮して、命令コードの置き換えを行うことができる。具体的には、演算の実行に対応する実行ログを出力する。そして、当該実行ログに対応する命令コードの使用頻度を解析する。したがって、命令コードの実際の使用頻度を動的に解析することができるため、実際の演算動作に即した頻度解析が可能となる。したがって、当該解析結果に基づく短縮コードに置き換える命令コードの選択の精度が高まる。それに伴って、キャッシュ５に記憶することができる命令コードの数を効果的に増加させることができるため、キャッシュ５におけるヒット率を向上させることができる。
【０１９９】
＜以上に記載された実施の形態における変形例について＞
以上に記載された実施の形態では、それぞれの構成要素の寸法、形状、相対的配置関係または実施の条件などについても記載する場合があるが、これらはすべての局面において例示であって、本願明細書に記載されたものに限られることはないものとする。
【０２００】
したがって、例示されていない無数の変形例が、本願明細書に開示される技術の範囲内において想定される。たとえば、少なくとも１つの構成要素を変形する場合、追加する場合または省略する場合、さらには、少なくとも１つの実施の形態における少なくとも１つの構成要素を抽出し、他の実施の形態の構成要素と組み合わせる場合が含まれるものとする。
【０２０１】
また、矛盾が生じない限り、以上に記載された実施の形態において「１つ」備えられるものとして記載された構成要素は、「１つ以上」備えられていてもよいものとする。
【０２０２】
さらに、以上に記載された実施の形態におけるそれぞれの構成要素は概念的な単位であって、本願明細書に開示される技術の範囲内には、１つの構成要素が複数の構造物から成る場合と、１つの構成要素がある構造物の一部に対応する場合と、さらには、複数の構成要素が１つの構造物に備えられる場合とを含むものとする。
【０２０３】
また、以上に記載された実施の形態におけるそれぞれの構成要素には、同一の機能を発揮する限り、他の構造または形状を有する構造物が含まれるものとする。
【０２０４】
また、本願明細書における説明は、本技術に関するすべての目的のために参照され、いずれも、従来技術であると認めるものではない。
【０２０５】
また、以上に記載された実施の形態で記載されたそれぞれの構成要素は、ソフトウェアまたはファームウェアとしても、それと対応するハードウェアとしても想定され、その双方の概念において、それぞれの構成要素は「部」または「処理回路」などと称される。
【０２０６】
また、本願明細書に開示される技術は、それぞれの構成要素が複数の装置に分散して備えられる場合、すなわち、システムのような態様であってもよいものとする。
【０２０７】
たとえば、記憶部３、および、テーブル記憶部１０は、図２においては演算実行装置内に搭載されるものとして示されたが、これらのうちの少なくとも１つは、外部の機能部であってもよいものとする。その場合、演算実行装置内の他の機能部と外部の機能部とが互いに作用しあうことによって、全体として演算実行装置の機能を果たすものであればよい。
【符号の説明】
【０２０８】
２  演算部、３，１１，１３，１４，１５，１６，１７，１８，１９  記憶部、４  一時記憶部、５  キャッシュ、６  命令デコードロジック部、７，７０，７１，７２，７３  頻度解析部、８  命令データ置き換え部、９  短縮テーブル生成部、１０  テーブル記憶部、１２  頻度集計部、９０  短縮テーブル、１０２Ａ，１０２Ｂ  処理回路、１０３  記憶装置、１０８  置き換え部、Ａ，Ｂ，Ｃ  実行ログ、Ａ，Ｂ，Ｃ  解析結果。
【図１】
2017199223.tif 000003
【図２】
2017199223.tif 000004
【図３】
2017199223.tif 000005
【図４】
2017199223.tif 000006
【図５】
2017199223.tif 000007
【図６】
2017199223.tif 000008
【図７】
2017199223.tif 000009
【図８】
2017199223.tif 000010
【図９】
2017199223.tif 000011
【図１０】
2017199223.tif 000012
【図１１】
2017199223.tif 000013
【図１２】
2017199223.tif 000014