(57)【要約】【課題】機械語のコードの語長の割り当ての不具合を改善する。【解決手段】語長の異なる機械語のコードにより命令が構成されたプログラムを実行するに際し、前記機械語のコードに対応する内部動作の種類を分析・認識して取得するための命令デコーダ１１と、内部動作を定義するマイクロコードを取得してこのマイクロコードによる演算処理を行う実行制御演算手段１２と、語長別で各機械語毎にデコード回数の頻度情報を検出する頻度情報検出手段１４と、頻度情報につき、予め定められた語長変更を行うべき条件に合致した機械語を検出し、語長の異なる機械語のコードへの変更を行うと共に機械語のコードに対応する内部動作の種類を対応して変更する変更処理手段１５とを具備する。【選択図】図４
2019053636.tif 000002
【特許請求の範囲】
【請求項１】
語長の異なる機械語のコードにより命令が構成されたプログラムを実行するに際し、前記機械語のコードに対応する内部動作の種類を分析・認識して取得するためのデコーダ手段と、
前記デコーダ手段により得られた内部動作の種類に基づき、当該内部動作を定義するマイクロコードを取得してこのマイクロコードによる演算処理を行う実行制御演算手段と、
前記プログラムの機械語と前記デコーダ手段に与える機械語のコードとの対応関係が記憶された機械語コード記憶テーブルと、
前記デコーダ手段に与えられた機械語のコードについて、語長別で各機械語毎にデコード回数の頻度情報を検出する頻度情報検出手段と、
前記頻度情報検出手段により検出された頻度情報につき、予め定められた語長変更を行うべき条件に合致した機械語を検出し、前記機械語コード記憶テーブルにおいて語長の異なる機械語のコードへの変更を行うと共に前記デコーダ手段における機械語のコードに対応する内部動作の種類を対応して変更する変更処理手段と
を具備することを特徴とする命令処理装置。
【請求項２】
語長変更を行うべき条件は、機械語のコードが相対的に所定番目以内に高い頻度情報となっていることであることを特徴とする請求項１に記載の命令処理装置。
【請求項３】
語長変更を行うべき条件は、機械語のコードが所定数以上の頻度情報となっていることであることを特徴とする請求項１または２に記載の命令処理装置。
【請求項４】
前記変更処理手段は、前記デコーダ手段の動作が所定時間となるごとに処理を行うことを特徴とする請求項１乃至３のいずれか１項に記載の命令処理装置。
【請求項５】
前記変更処理手段は、外部からの指示があると処理を行うことを特徴とする請求項１乃至４のいずれか１項に記載の命令処理装置。
【請求項６】
語長の異なる機械語のコードにより命令が構成されたプログラムを実行するに際し、前記機械語のコードに対応する内部動作の種類を分析・認識して取得するためのデコーダ手段と、
前記デコーダ手段により得られた内部動作の種類に基づき、当該内部動作を定義するマイクロコードを取得してこのマイクロコードによる演算処理を行う実行制御演算手段と、
前記プログラムの機械語と前記デコーダ手段に与える機械語のコードとの対応関係が記憶された機械語コード記憶テーブルと、
を具備することを特徴とする第１、第２の命令処理装置を備え、一方が命令処理について稼働状態であり他方が命令処理について休止状態である命令処理システムにおいて、
稼働中の命令処理装置における前記デコーダ手段に与えられた機械語のコードについて、語長別で各機械語毎にデコード回数の頻度情報を検出する頻度情報検出手段と、
前記頻度情報検出手段により検出された頻度情報につき、予め定められた語長変更を行うべき条件に合致した機械語を検出し、前記機械語コード記憶テーブルにおいて語長の異なる機械語のコードへの変更を行うと共に前記デコーダ手段における機械語のコードに対応する内部動作の種類を対応して変更する変更処理手段と
を具備し、
前記変更処理手段による変更処理が終了すると、第１、第２の命令処理装置における稼働中と休止中とを変換することを特徴とする命令処理システム。
【請求項７】
前記第１、第２の命令処理装置がＦＰＧＡにより構成され、
前記頻度情報検出手段と前記変更処理手段が、前記ＦＰＧＡの構成を作成する装置へ語長変更の指示を与える語長変更処理装置に備えられることを特徴とする請求項６に記載の命令処理システム。
【請求項８】
プログラムの機械語とデコーダ手段に与える機械語のコードとの対応関係が記憶された機械語コード記憶テーブルの機械語コードを受けて命令処理を行う命令処理装置のコンピュータを、
語長の異なる機械語のコードにより命令が構成されたプログラムを実行するに際し、前記機械語のコードに対応する内部動作の種類を分析・認識して取得するためのデコーダ手段、
前記デコーダ手段により得られた内部動作の種類に基づき、当該内部動作を定義するマイクロコードを取得してこのマイクロコードによる演算処理を行う実行制御演算手段、
前記デコーダ手段に与えられた機械語のコードについて、語長別で各機械語毎にデコード回数の頻度情報を検出する頻度情報検出手段、
前記頻度情報検出手段により検出された頻度情報につき、予め定められた語長変更を行うべき条件に合致した機械語を検出し、前記機械語コード記憶テーブルにおいて語長の異なる機械語のコードへの変更を行うと共に前記デコーダ手段における機械語のコードに対応する内部動作の種類を対応して変更する変更処理手段
として機能させることを特徴とする命令処理用プログラム。
【請求項９】
語長変更を行うべき条件は、機械語のコードが相対的に所定番目以内に高い頻度情報となっていることであることを特徴とする請求項８に記載の命令処理用プログラム。
【請求項１０】
語長変更を行うべき条件は、機械語のコードが所定数以上の頻度情報となっていることであることを特徴とする請求項８または９に記載の命令処理用プログラム。
【請求項１１】
前記変更処理手段を、前記デコーダ手段の動作が所定時間となるごとに処理を行うように動作させることを特徴とする請求項８乃至１０のいずれか１項に記載の命令処理用プログラム。
【請求項１２】
前記変更処理手段は、外部からの指示があると処理を行うことを特徴とする請求項８乃至１１のいずれか１項に記載の命令処理用プログラム。
【請求項１３】
プログラムの機械語とデコーダ手段に与える機械語のコードとの対応関係が記憶された機械語コード記憶テーブルの機械語コードを受けて命令処理を行う第１と第２の命令処理装置により構成され、一方が命令処理について稼働状態であり他方が命令処理について休止状態である命令処理システムにおける前記第１と前記第２の命令処理装置のそれぞれのコンピュータを、
語長の異なる機械語のコードにより命令が構成されたプログラムを実行するに際し、前記機械語のコードに対応する内部動作の種類を分析・認識して取得するためのデコーダ手段、
前記デコーダ手段により得られた内部動作の種類に基づき、当該内部動作を定義するマイクロコードを取得してこのマイクロコードによる演算処理を行う実行制御演算手段、
として機能させ、
稼働中の命令処理装置における前記コンピュータを、前記デコーダ手段に与えられた機械語のコードについて、語長別で各機械語毎にデコード回数の頻度情報を検出する頻度情報検出手段、
前記頻度情報検出手段により検出された頻度情報につき、予め定められた語長変更を行うべき条件に合致した機械語を検出し、前記機械語コード記憶テーブルにおいて語長の異なる機械語のコードへの変更を行うと共に前記デコーダ手段における機械語のコードに対応する内部動作の種類を対応して変更する変更処理手段
として機能させ、
前記変更処理手段による変更処理が終了すると、第１、第２の命令処理装置における稼働中と休止中とを変換することを特徴とする命令処理用プログラム。
【請求項１４】
前記第１、第２の命令処理装置がＦＰＧＡにより構成され、
前記ＦＰＧＡの構成を作成する装置へ語長変更の指示を与える語長変更処理装置のコンピュータが前記頻度情報検出手段と前記変更処理手段として機能することを特徴とする請求項１３に記載の命令処理用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、最終的にマイクロコードを取得してこのマイクロコードによる演算処理を行う命令処理装置、命令処理システム、命令処理用プログラムに関するものである。
【背景技術】
【０００２】
プログラムを機械語とし、機械語を機械語のコードとし、これをデコードして最終的にマイクロコードを取得してこのマイクロコードによる演算処理を行う命令処理装置においては、機械語のコードとこれに対応する内部動作の種類がユニークに定義されている必要があり、更に、上記内部動作の種類から一定のマイクロコードが引き出せるように定義がされている必要がある。
【０００３】
マイクロコードによる演算処理を行う命令処理装置は、例えば、図１に示されるように構成される。プログラムを機械語（例えば、ＰＲＩＮＴ，ＳＴＯＲＥ，ＬＯＡＤ等）により記述し、この機械語に対応する機械語のコードが命令デコーダ１０１に与えられる。命令デコーダ１０１は、与えられた機械語のコードに対応する内部動作の種類を分析・認識して取得する。内部動作の種類は、どのマイクロコードを実行するかを示しており、マイクロコードには、例えば、ａｄｄ，ｓｕｂ，ｍｕｌ等により示される数値演算と、例えば、ＯＲ，ＮＯＴ，ＸＯＲなどで示される論理演算に対応するコードが存在する。
【０００４】
命令デコーダ１０１により得られた内部動作の種類は、実行制御ユニット１０２へ送られる。実行制御ユニット１０２は、命令デコーダ１０１により送られた内部動作の種類に基づき、当該内部動作を定義するマイクロコードを取得する。ここでは、マイクロコードは、実行制御ユニット１０２の外部のマイクロコード記憶部１０３にストックされているように記載されているが、実行制御ユニット１０２の内部にストックされていても良い。
【０００５】
実行制御ユニット１０２により取得されたマイクロコードは、演算ユニット１０４に渡される。演算ユニット１０４は、与えられたマイクロコードにより数値演算や論理演算処理を行って、結果に基づき内部レジスタ１０５の値を更新する。
【０００６】
このような命令処理装置では、機械語のコードを命令デコーダ１０１が分析・認識して内部動作の種類を取得するまでのサイクル数によって内部動作開始までの時間、即ち、マイクロコードの処理開始までの時間、が左右される。上記サイクル数は、機械語のコードの語長により決められる。
【０００７】
例えば、命令処理装置のデータバス幅が１バイトであるとし、９００００命令が備えられたシステムを想定する。このシステムでは、機械語のコードの語長が１バイトであると、データバス幅が１バイトであるからサイクル数は１回となるが、最大で２５６命令に対応できるだけである。そこで、１バイトの語長の命令を２００命令とし、残りの５６命令に１バイト追加して２バイトの命令とすると、５６×２５６＝１４３３６命令を作成できるので、１バイト命令と２バイト命令を合わせて（２００＋５６×２５６＝１４５３６命令）に対応可能となる。即ち、図２に示されるように、１バイトの語長の命令が２００命令セットされた命令テーブル２０１と、２バイトの語長の命令が２５６命令セットされた５６個の命令テーブル２０２−１〜２０２−５６とを備えることになる。
【０００８】
３バイト命令を許容する場合には、１バイト命令を２５０命令用意し、残りの５０命令中の６命令を２５０の２バイト命令として割り当てると６×２５０＝１５００命令が用意できる。更に、上記２バイト命令に１バイト追加した２５６個の３バイト命令に加工すると、６×６×２５６＝９２１６命令を作成できるので、１バイト命令と２バイト命令と３バイト命令を合わせて（２５０＋６×２５０＋６×６×２５６＝１０９９６命令）に対応可能となる。この場合には、図３に示されるように、１バイトの語長の命令が２５０命令セットされた命令テーブル３０１と、２バイトの語長の命令が２５０命令セットされた６個の命令テーブル３０２−１〜３０２−６と、３バイトの語長の命令が２５６命令セットされた３６個の命令テーブル３０３−１〜３０３−３６とを備えることになる。
【０００９】
上記の１バイト命令と２バイト命令とを混合して使用する図２のシステムでは、１サイクルで内部動作の種類を取得可能な命令数は２００であり、２サイクルで内部動作の種類を取得可能な命令数は１４３３６である。また、上記の１バイト命令と２バイト命令と３バイト命令とを混合して使用する図３のシステムでは、１サイクルで内部動作の種類を取得可能な命令数は２５０であり、２サイクルで内部動作の種類を取得可能な命令数は１５００であり、３サイクルで内部動作の種類を取得可能な命令数は９２１６である。このように命令の語長がいくつのものをいくつ用意するかによって、内部動作の種類を取得するまでの時間が決まり、所望の時間で処理が可能なシステムを構築できる。
【００１０】
しかしながら、システムにおいては実行されるプログラムが変更されると、そのプログラムに含まれている語長の割合が変化し、全体として処理速度が低下するという不具合を生じる。このような場合には、語長の割合を変更するなどの対策が行われていた。語長の割合変更には、命令デコーダ１０１の設計変更が必要であり、多くの時間と労力が必要であった。
【００１１】
特許文献１には、演算の高速化という観点から、命令列をデコードし、この命令列がループである場合に値再利用を行うデータ処理装置が開示されている。
【００１２】
特許文献２には、保持させる実行結果の数に対してハッシュ値（キャッシュインデックス）のビット長が不要に長いために検索に時間がかかり、値再利用の効率の低下が生じてしまうという問題点を解決する。このために、複数回実行される命令区間である再利用区間が含まれる命令列に基づく処理を実行する場合に、再利用区間の実行前において予告命令に基づいて再利用区間の入力値を取得し、その取得された入力値と予告命令により特定された識別情報とに基づいて履歴メモリにおける実行結果を検索させて、予告命令によって識別された再利用区間における処理が実行されるときに、実行結果が抽出された実行結果を、上記命令列に基づく処理を実行する実行部へ出力させるように作用する。
【００１３】
また特許文献３には、計算にかかる処理時間を予測し、その予測した処理時間が計算に割り当てられているタイムスライスを上回る場合に、計算で用いるデータ量の削減もしくは反復計算の回数の削減を行うことで処理時間を調整し、調整した計算を行うことによりリアルタイム制約を守るシステムが開示されている。
【００１４】
更に特許文献４には、オペコード部の語長が命令により固定であり、プログラムごとにおいて命令の使用頻度が異なるため、オペコード部の語長が長い命令が高頻度で使用されるプログラムにおいてはコードサイズが大きくなっていた問題を解決する装置が開示されている。
【００１５】
この特許文献４のものでは、プログラムを機械語のコードに変換してコード別の使用頻度を求め、頻度の高い語長の長いコードを語長の短いコードへ変換する。変換したコードを含む新たなプログラムを実行する際には、変換したコードであるか変換されていないコードであるかを検出し、変換後のコードが到来するとこれを変換前のコードへ戻してデコードを行う。これによって、命令デコーダの変換機構に変更を伴うことがないという効果を奏するものである。
【先行技術文献】
【特許文献】
【００１６】
【特許文献１】特開２００４−２５８９０５号公報
【特許文献２】国際公開第２０１１／０１８９７４号パンフレット
【特許文献３】国際公開第２０１３／０３０８６０号パンフレット
【特許文献４】特開平１１−２２４１９９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１７】
上記特許文献１に記載の発明は、高速化という観点では本願発明と共通するものの、命令に対応する処理が同じである場合に値再利用を行うだけであり、特に機械語のコードの語長の問題に関する解決策が開示されているものではない。
【００１８】
また、特許文献２に記載の発明は、ハッシュ値（キャッシュインデックス）のビット長が不要に長いために検索に時間がかかるという問題を解決するものである。そして、この発明においても複数回実行される命令区間である再利用区間が含まれる命令列に基づく処理を実行する場合に、再利用区間の入力値を取得して出力するものであり、機械語のコードの語長の問題に関する解決策が開示されているものではない。
【００１９】
また、特許文献３に記載の発明は、計算で用いるデータ量の削減もしくは反復計算の回数の削減を行うことで処理時間を調整しようというものであり、やはり、機械語のコードの語長の問題に関する解決策が開示されているものではない。
【００２０】
更に、特許文献４の発明では、機械語のコードの語長の問題を解決できる。しかしながら、プログラムにおける機械語のコードの使用頻度に基づきコード変更した機械語が分かっている必要があり、語長変更がなされている機械語が既知でないプログラムを実行しながらコード変更することはできない。
【００２１】
本発明は、上記のような命令処理における問題点を解決せんとしてなされたもので、その目的は、実際にプログラムを実行しながら、プログラムを実行した結果、機械語のコードの語長の割り当ての不具合を検出しながら手直しを行い、現在よりさらに好適に処理を進めることが可能な命令処理装置、命令処理システム、命令処理用プログラムを提供することである。
【課題を解決するための手段】
【００２２】
本発明に係る命令処理装置は、語長の異なる機械語のコードにより命令が構成されたプログラムを実行するに際し、前記機械語のコードに対応する内部動作の種類を分析・認識して取得するためのデコーダ手段と、前記デコーダ手段により得られた内部動作の種類に基づき、当該内部動作を定義するマイクロコードを取得してこのマイクロコードによる演算処理を行う実行制御演算手段と、前記プログラムの機械語と前記デコーダ手段に与える機械語のコードとの対応関係が記憶された機械語コード記憶テーブルと、前記デコーダ手段に与えられた機械語のコードについて、語長別で各機械語毎にデコード回数の頻度情報を検出する頻度情報検出手段と、前記頻度情報検出手段により検出された頻度情報につき、予め定められた語長変更を行うべき条件に合致した機械語を検出し、前記機械語コード記憶テーブルにおいて語長の異なる機械語のコードへの変更を行うと共に前記デコーダ手段における機械語のコードに対応する内部動作の種類を対応して変更する変更処理手段とを具備することを特徴とする。
【００２３】
本発明に係る命令処理装置では、語長変更を行うべき条件は、機械語のコードが相対的に所定番目以内に高い頻度情報となっていることであることを特徴とする。
【００２４】
本発明に係る命令処理装置では、語長変更を行うべき条件は、機械語のコードが所定数以上の頻度情報となっていることであることを特徴とする。
【００２５】
本発明に係る命令処理装置では、前記変更処理手段は、前記デコーダ手段の動作が所定時間となるごとに処理を行うことを特徴とする。
【００２６】
本発明に係る命令処理装置では、前記変更処理手段は、外部からの指示があると処理を行うことを特徴とする。
【００２７】
本発明に係る命令処理システムは、語長の異なる機械語のコードにより命令が構成されたプログラムを実行するに際し、前記機械語のコードに対応する内部動作の種類を分析・認識して取得するためのデコーダ手段と、前記デコーダ手段により得られた内部動作の種類に基づき、当該内部動作を定義するマイクロコードを取得してこのマイクロコードによる演算処理を行う実行制御演算手段と、前記プログラムの機械語と前記デコーダ手段に与える機械語のコードとの対応関係が記憶された機械語コード記憶テーブルと、を具備することを特徴とする第１、第２の命令処理装置を備え、一方が命令処理について稼働状態であり他方が命令処理について休止状態である命令処理システムにおいて、稼働中の命令処理装置における前記デコーダ手段に与えられた機械語のコードについて、語長別で各機械語毎にデコード回数の頻度情報を検出する頻度情報検出手段と、前記頻度情報検出手段により検出された頻度情報につき、予め定められた語長変更を行うべき条件に合致した機械語を検出し、前記機械語コード記憶テーブルにおいて語長の異なる機械語のコードへの変更を行うと共に前記デコーダ手段における機械語のコードに対応する内部動作の種類を対応して変更する変更処理手段とを具備し、前記変更処理手段による変更処理が終了すると、第１、第２の命令処理装置における稼働中と休止中とを変換することを特徴とする。
【００２８】
本発明に係る命令処理システムでは、前記第１、第２の命令処理装置がＦＰＧＡにより構成され、
前記頻度情報検出手段と前記変更処理手段が、前記ＦＰＧＡの構成を作成する装置へ語長変更の指示を与える語長変更処理装置に備えられることを特徴とする。
【００２９】
命令処理用プログラムは、プログラムの機械語とデコーダ手段に与える機械語のコードとの対応関係が記憶された機械語コード記憶テーブルの機械語コードを受けて命令処理を行う命令処理装置のコンピュータを、語長の異なる機械語のコードにより命令が構成されたプログラムを実行するに際し、前記機械語のコードに対応する内部動作の種類を分析・認識して取得するためのデコーダ手段、前記デコーダ手段により得られた内部動作の種類に基づき、当該内部動作を定義するマイクロコードを取得してこのマイクロコードによる演算処理を行う実行制御演算手段、前記デコーダ手段に与えられた機械語のコードについて、語長別で各機械語毎にデコード回数の頻度情報を検出する頻度情報検出手段、前記頻度情報検出手段により検出された頻度情報につき、予め定められた語長変更を行うべき条件に合致した機械語を検出し、前記機械語コード記憶テーブルにおいて語長の異なる機械語のコードへの変更を行うと共に前記デコーダ手段における機械語のコードに対応する内部動作の種類を対応して変更する変更処理手段として機能させることを特徴とする。
【００３０】
本発明に係る命令処理用プログラムでは、語長変更を行うべき条件は、機械語のコードが相対的に所定番目以内に高い頻度情報となっていることであることを特徴とする。
【００３１】
本発明に係る命令処理用プログラムでは、語長変更を行うべき条件は、機械語のコードが所定数以上の頻度情報となっていることであることを特徴とする。
【００３２】
本発明に係る命令処理用プログラムでは、前記変更処理手段を、前記デコーダ手段の動作が所定時間となるごとに処理を行うように動作させることを特徴とする。
【００３３】
本発明に係る命令処理用プログラムでは、前記変更処理手段は、外部からの指示があると処理を行うことを特徴とする。
【００３４】
本発明に係る命令処理用プログラムでは、プログラムの機械語とデコーダ手段に与える機械語のコードとの対応関係が記憶された機械語コード記憶テーブルの機械語コードを受けて命令処理を行う第１と第２の命令処理装置により構成され、一方が命令処理について稼働状態であり他方が命令処理について休止状態である命令処理システムにおける前記第１と前記第２の命令処理装置のそれぞれのコンピュータを、語長の異なる機械語のコードにより命令が構成されたプログラムを実行するに際し、前記機械語のコードに対応する内部動作の種類を分析・認識して取得するためのデコーダ手段、前記デコーダ手段により得られた内部動作の種類に基づき、当該内部動作を定義するマイクロコードを取得してこのマイクロコードによる演算処理を行う実行制御演算手段、として機能させ、稼働中の命令処理装置における前記コンピュータを、前記デコーダ手段に与えられた機械語のコードについて、語長別で各機械語毎にデコード回数の頻度情報を検出する頻度情報検出手段、前記頻度情報検出手段により検出された頻度情報につき、予め定められた語長変更を行うべき条件に合致した機械語を検出し、前記機械語コード記憶テーブルにおいて語長の異なる機械語のコードへの変更を行うと共に前記デコーダ手段における機械語のコードに対応する内部動作の種類を対応して変更する変更処理手段として機能させ、前記変更処理手段による変更処理が終了すると、第１、第２の命令処理装置における稼働中と休止中とを変換することを特徴とする。
【００３５】
本発明に係る命令処理用プログラムでは、前記第１、第２の命令処理装置がＦＰＧＡにより構成され、前記ＦＰＧＡの構成を作成する装置へ語長変更の指示を与える語長変更処理装置のコンピュータが前記頻度情報検出手段と前記変更処理手段として機能することを特徴とする。
【発明の効果】
【００３６】
本発明によれば、実際にプログラムを実行しながら、プログラムを実行した結果、機械語のコードの語長の割り当ての不具合を検出しながら手直しを行い、現在よりさらに好適に処理を進めることが可能である。
【図面の簡単な説明】
【００３７】
【図１】従来の命令処理装置の構成を示すブロック図。
【図２】１バイトと２バイトの語長の異なる命令コードが格納されたテーブルを示す図。
【図３】１バイトと２バイトと３バイトの語長の異なる命令コードが格納されたテーブルを示す図。
【図４】本発明に係る第１の実施形態の命令処理装置の構成を示すブロック図。
【図５】本発明に係る第１の実施形態の命令処理装置が備える機械語コード記憶テーブルの構成を示す図。
【図６】本発明に係る第１の実施形態の命令処理装置が備える頻度情報テーブルの構成を示す図。
【図７】本発明に係る第１の実施形態の命令処理装置の動作を説明するためのフローチャート。
【図８】本発明に係る命令処理システムにおける第１の実施形態の構成を示すブロック図。
【図９】本発明に係る命令処理システムにおける第２の実施形態の構成を示すブロック図。
【発明を実施するための形態】
【００３８】
以下添付図面を参照して、本発明に係る命令処理装置、命令処理システム、命令処理用プログラムの実施形態を説明する。各図において、同一の構成要素には同一の符号を付して重複する説明を省略する。図４に、本発明に係る命令処理装置の実施形態のブロック図を示す。実施例に係る命令処理装置は、デコーダ手段である命令デコーダ１１、実行制御演算手段１２、機械語コード記憶テーブル１３、頻度情報検出手段１４、変更処理手段１５を有している。
【００３９】
本実施形態の命令処理装置では、プログラムが機械語（ＰＲＩＮＴ，ＳＴＯＲＥ，ＬＯＡＤ等）により記述され、この機械語に対応する機械語のコードが命令デコーダ１１に与えられる。機械語コード記憶テーブル１３には、図５に示すように、機械語（ここでは、ニーモニックにより表わす）の例えば、ＰＲＩＮＴ，ＳＴＯＲＥ，ＬＯＡＤ，・・・に対応して、例えば、１バイト命令、２バイト命令、３バイト命令の機械語のコードが記憶されている。１バイト命令、２バイト命令、３バイト命令の数は、既に述べた通り、システムの設計仕様によって適宜に決定される。決定された数の１バイト命令の機械語のコードを全て機械語と対応付けておくか、または、空を設けておくかはシステムの設計仕様によって適宜になされる。また、決定された数の２バイト命令の機械語のコードを全て機械語と対応付けておくか、または、空を設けておくかはシステムの設計仕様によって適宜になされる。同様に、決定された数の３バイト命令の機械語のコードを全て機械語と対応付けておくか、または、空を設けておくかはシステムの設計仕様によって適宜になされる。
【００４０】
命令デコーダ１１は、語長の異なる機械語のコードにより命令が構成されたプログラムを実行するに際し、上記機械語のコードに対応する内部動作の種類を分析・認識して取得するためのものである。内部動作の種類は、どのマイクロコードを実行するかを示しており、マイクロコードには、例えば、ａｄｄ，ｓｕｂ，ｍｕｌ等により示される数値演算に対応するコードと、例えば、ＯＲ，ＮＯＴ，ＸＯＲなどで示される論理演算に対応するコードが存在する。実行制御演算手段１２は、上記命令デコーダ１１により得られた内部動作の種類に基づき、当該内部動作を定義するマイクロコードを取得してこのマイクロコードによる演算処理を行うものである。
【００４１】
実行制御演算手段１２には、実行制御ユニット２１、マイクロコード記憶部２２、演算ユニット２３、内部レジスタ２４が備えられている。命令デコーダ１１により得られた内部動作の種類は、実行制御ユニット２１へ送られる。実行制御ユニット２１は、命令デコーダ１１により送られた内部動作の種類に基づき、当該内部動作を定義するマイクロコードを取得する。ここでは、マイクロコードは、実行制御ユニット２１の外部のマイクロコード記憶部２２にストックされているように記載されているが、実行制御ユニット２１の内部にストックされていても良い。
【００４２】
実行制御ユニット２１により取得されたマイクロコードは、演算ユニット２３に渡される。演算ユニット２３は、与えられたマイクロコードにより数値演算や論理演算処理を行って、結果に基づき内部レジスタ２４の値を更新する。
【００４３】
頻度情報検出手段１４は、命令デコーダ１１に与えられた機械語のコードについて、語長別で各機械語毎にデコード回数の頻度情報を検出するものである。頻度情報検出手段１４は、検出した頻度情報を図６に示すような頻度情報テーブルとして保持する。
【００４４】
変更処理手段１５は、上記頻度情報検出手段１４により検出された頻度情報につき、予め定められた語長変更を行うべき条件に合致した機械語を検出し、上記機械語コード記憶テーブルにおいて語長の異なる機械語のコードへの変更を行うと共に命令デコーダ１１における機械語のコードに対応する内部動作の種類を対応して変更するものである。ここで、語長変更を行うべき条件（第１の条件）とは、「機械語のコードが相対的に所定番目以内に高い頻度情報となっていること」とすることができる。この第１の条件は、相対的に頻度が高ければ語長変更を行うことを意味する。語長変更を行うべき条件（第２の条件）とは、「機械語のコードが所定数以上の頻度情報となっていること」とすることができる。この第２の条件は、所定閾値を超えた頻度情報となっているときには語長変更を行うことを意味する。第１の条件と第２の条件は、いずれか一方を採用しても良いし、双方とも採用しても良い。
【００４５】
変更処理手段１５が処理を開始するタイミングは、上記命令デコーダ１１の動作が所定時間となるごと（第１のタイミング）とすることができる。また、変更処理手段１５が処理を開始するタイミングは、外部からの指示があると処理を行うこと（第２のタイミング）とすることができる。第１のタイミングと第２のタイミングは、いずれか一方を採用することができ、また、両方のタイミングで行うようにしても良い。
【００４６】
以上のように構成された命令処理装置の動作を、図７に示すフローチャートを参照しながら説明する。この命令処理装置は、通常の命令処理装置としての動作を行う（Ｓ１１）。上記ステップＳ１１の動作に並行して語長別で各機械語毎にデコード回数の頻度情報を検出する（Ｓ１２）。
【００４７】
ステップＳ１２に続いて変更処理のタイミングであるかを検出し（Ｓ１３）、ＮＯとなるとステップＳ１１へ戻って処理を続ける。ステップＳ１３においてＹＥＳとなると、頻度情報に基づき語長変更を行うべき条件に合致した変更対象の機械語を検出し（Ｓ１４）、該当の機械語があるかを検出する（Ｓ１５）。
【００４８】
ステップＳ１５においてＮＯとなるとステップＳ１１へ戻って処理を続ける。ステップＳ１５においてＹＥＳとなると、該当する機械語に語長の短い機械語のコードを割り当て機械語コード記憶テーブルの書き換えを行うと共に、命令デコーダ１１における当該機械語のコードに対応する内部動作の種類を対応して変更する（Ｓ１６）。
【００４９】
例えば、図６に示されるように、語長の長い３バイト命令である機械語ＬＯＡＤの頻度が３５であり、頻度の閾値を超えているという条件(第１の条件)が満たされていることにより、この機械語が変更対象であるとする。この場合に、機械語ＬＯＡＤに１バイト命令のコードを割り当てる。この割り当てに係る１バイト命令のコードは、現在において１バイト命令が割り当てられている機械語のものを入れ換えて用いても良いし、または、現在において割り当てられていない１バイト命令のコードを割り当てるようにしても良い。上記入れ換えで用いる対応の機械語は、当然に使用頻度が少ないもの（基本的に、頻度０）が選択される。そして、この割り当ての変更に従って、命令デコーダ１１における当該機械語のコードに対応する内部動作の種類を対応して変更する。
【００５０】
ステップＳ１６に続いて条件に合致する全ての機械語について変更処理が完了したのかを検出し（Ｓ１７）、完了していない場合にはステップＳ１６へ戻って処理を続ける一方、完了するとステップＳ１１へ戻って処理を続ける。なお、以上では、最も長い語長から最も短い語長への変更としたが、使用頻度の値に応じて２つのランクに分け、低いランクの場合には３バイト命令から２バイト命令へ、高いランクの場合には３バイト命令から１バイト命令へ変更するようにしても良い。更に、１〜３バイト命令が使われる場合において、３バイト命令をより短くする条件（基準）だけでなく、２バイト命令を１バイト命令へ変更する条件（基準）を別に決めておき、これを実行しても良い。つまり、最長の語長の機械語コードだけではなく、語長の長さに応じてより短い語長のコードへ変更する条件（基準）を決めておき、これを実行しても良い。
【００５１】
図８に、本発明に係る命令処理システムの実施形態の構成を示す。この命令処理システムは、図４に示した命令処理装置の命令デコーダ１１と機械語コード記憶テーブル１３と実行制御演算手段１２、頻度情報検出手段１４、変更処理手段１５とを備えた２台の命令処理装置１０−１、１０−２を設け、一方が命令処理について稼働状態であり、他方が命令処理について休止状態である命令処理システムとしたものである。
【００５２】
また、頻度情報検出手段１４と変更処理手段１５は休止状態の装置のものが動作する。頻度情報検出手段１４は稼働中の装置から頻度情報を得る。即ち、頻度情報検出手段１４によって稼働中の命令処理装置における上記デコーダ手段である命令デコーダ１１に与えられた機械語のコードについて、語長別で各機械語毎にデコード回数の頻度情報を検出する。また、変更処理手段１５により、上記頻度情報検出手段１４により検出された頻度情報につき、予め定められた語長変更を行うべき条件に合致した機械語を検出し、上記機械語コード記憶テーブル１３において語長の異なる機械語のコードへの変更を行うと共に命令デコーダ１１における機械語のコードに対応する内部動作の種類を対応して変更する。
【００５３】
そして、上記変更処理手段１５による変更処理が終了すると、第１、第２の命令処理装置１０−１、１０−２における稼働中と休止中とを変換する。この構成によれば、一方の命令処理装置が稼働中に他方で頻度情報と変更処理が行われ、使用頻度に応じた適切な命令処理装置が構築されて行く。稼働中と休止中とを変換するときには、休止中の装置において変更処理が完了しており、直ぐに最適な命令処理装置の運用を開始できる。
【００５４】
また、頻度情報検出手段１４と変更処理手段１５を共通に、例えば一方の装置に設けてもよい。頻度情報検出手段１４によって稼働中の命令処理装置におけるデコーダ手段である命令デコーダ１１に与えられた機械語のコードについて、語長別で各機械語毎にデコード回数の頻度情報を検出する。また、変更処理手段１５により、上記頻度情報検出手段１４により検出された頻度情報につき、予め定められた語長変更を行うべき条件に合致した機械語を検出し、休止中の装置における機械語コード記憶テーブル１３において語長の異なる機械語のコードへの変更を行うと共に上記命令デコーダ１１における機械語のコードに対応する内部動作の種類を対応して変更する。この構成によっても、稼働中と休止中とを変換するときには、休止中の装置において変更処理が完了しており、直ぐに最適な命令処理装置の運用を開始できる。
【００５５】
図９は、図８のシステムの第１、第２の命令処理装置１０−１、１０−２をＦＰＧＡ（Field Programmable Gate Array）により構成するものである。ＦＰＧＡを第１、第２の命令処理装置３００−１、３００−２に構成するためのコンピュータである、ＦＰＧＡの構成を作成するＦＰＧＡ構成装置４００を備え、このＦＰＧＡ構成装置４００に対し、頻度情報検出手段１４と変更処理手段１５を具備する語長変更処理装置５００から語長変更指示を与える。図８のシステムと同様に、第１、第２の命令処理装置３００−１、３００−２の一方を稼働中とし、他方を休止中とする。語長変更処理装置５００は、稼働中の第１、第２の命令処理装置３００−１または第２の命令処理装置３００−２に対して頻度情報検出手段１４が語長別で各機械語毎にデコード回数の頻度情報を検出する。
【００５６】
変更処理手段１５により、上記頻度情報検出手段１４により検出された頻度情報につき、予め定められた語長変更を行うべき条件に合致した機械語を検出し、休止中の装置の図示しない機械語コード記憶テーブル１３において語長の異なる機械語のコードへの変更を行うと共に上記デコーダ手段である命令デコーダ１１における機械語のコードに対応する内部動作の種類を対応して変更する。これによって、ＦＰＧＡを第１、第２の命令処理装置３００−１、３００−２として作成し、稼働中と休止中として運用しながら、機械語のコードの語長の割り当ての不具合を検出しながら手直しを行い、現在よりさらに好適に処理を進めることが可能な命令処理システムを実現することができる。
【符号の説明】
【００５７】
１０−１、１０−２  命令処理装置
１１  命令デコーダ
１２  実行制御演算手段
１３  機械語コード記憶テーブル
１４  頻度情報検出手段
１５  変更処理手段
２１  実行制御ユニット
２２  マイクロコード記憶部
２３  演算ユニット
２４  内部レジスタ
【図１】
2019053636.tif 000003
【図２】
2019053636.tif 000004
【図３】
2019053636.tif 000005
【図４】
2019053636.tif 000006
【図５】
2019053636.tif 000007
【図６】
2019053636.tif 000008
【図７】
2019053636.tif 000009
【図８】
2019053636.tif 000010
【図９】
2019053636.tif 000011