(57)【要約】【課題】フェッチされた命令の所定のフィールドを拡張して、命令の種類やオペランドの長さを確保する。【解決手段】命令変換テーブルは、命令の所定のフィールドのビットパターンに関連付けて前記所定のフィールドより長い拡張フィールドを記憶する。拡張フィールド取得部は、フェッチされた命令の所定のフィールドのビットパターンによって命令変換テーブルを参照して、拡張フィールドを取得する。命令デコーダは、フェッチされた命令の所定のフィールドに代えて拡張フィールドを備える新たな命令について、デコード処理を行う。【選択図】図１
2019095952.tif 000002
【特許請求の範囲】
【請求項１】
命令の所定のフィールドのビットパターンに関連付けて前記所定のフィールドより長い拡張フィールドを記憶する命令変換テーブルと、
フェッチされた命令の前記所定のフィールドのビットパターンによって前記命令変換テーブルを参照して前記拡張フィールドを取得する拡張フィールド取得部と、
前記フェッチされた命令の前記所定のフィールドに代えて前記拡張フィールドを備える新たな命令についてデコード処理を行う命令デコーダと
を具備するプロセッサ。
【請求項２】
前記命令変換テーブルは、オペコードの少なくとも一部のビットパターンを前記所定のフィールドとして当該ビットパターンに関連付けて前記新たな命令のオペコードを前記拡張フィールドとして記憶する
請求項１記載のプロセッサ。
【請求項３】
前記命令変換テーブルは、オペコードの少なくとも一部のビットパターンを前記所定のフィールドとして当該ビットパターンに関連付けて前記新たな命令のオペコードとオペランドの少なくとも一部とを前記拡張フィールドとして記憶する
請求項１記載のプロセッサ。
【請求項４】
前記命令変換テーブルは、前記拡張フィールドとしてモード情報を含み、
前記命令デコーダは、前記モード情報に応じて前記新たな命令におけるオペランドを解釈する
請求項１記載のプロセッサ。
【請求項５】
前記拡張フィールド取得部は、前記フェッチされた命令の前記所定のフィールドのビットパターンが特定のパターンであることを条件として前記拡張フィールドを取得し、
前記命令デコーダは、前記フェッチされた命令の前記所定のフィールドのビットパターンが前記特定のパターンでない場合には前記フェッチされた命令についてデコード処理を行う
請求項１記載のプロセッサ。
【請求項６】
前記命令変換テーブルの記憶内容を書き替える書替え実行部をさらに具備する請求項１記載のプロセッサ。
【請求項７】
前記書替え実行部は、前記命令デコーダによってデコードされた命令が前記命令変換テーブルの書替え命令であった場合に、その命令によって指定された内容に前記命令変換テーブルを書き替える
請求項６記載のプロセッサ。
【請求項８】
命令の所定のフィールドのビットパターンに関連付けて前記所定のフィールドより長い拡張フィールドを記憶して、フェッチされた命令の前記所定のフィールドに代えて前記拡張フィールドを備える新たな命令に変換する命令変換部と、
前記新たな命令についてデコード処理を行う命令デコーダと
を具備するプロセッサ。
【請求項９】
命令列を記憶するメモリと、
命令の所定のフィールドのビットパターンに関連付けて前記所定のフィールドより長い拡張フィールドを記憶する命令変換テーブルと、
前記メモリからフェッチされた命令の前記所定のフィールドのビットパターンによって前記命令変換テーブルを参照して前記拡張フィールドを取得する拡張フィールド取得部と、
前記フェッチされた命令の前記所定のフィールドに代えて前記拡張フィールドを備える新たな命令についてデコード処理を行う命令デコーダと
を具備する情報処理装置。
【請求項１０】
命令の所定のフィールドのビットパターンに関連付けて前記所定のフィールドより長い拡張フィールドを記憶する命令変換テーブルを備えるプロセッサにおける処理方法であって、
フェッチされた命令の前記所定のフィールドを抽出する手順と、
前記抽出された前記所定のフィールドのビットパターンによって前記命令変換テーブルを参照して前記拡張フィールドを取得する手順と、
前記フェッチされた命令の前記所定のフィールドに代えて前記拡張フィールドを備える新たな命令についてデコード処理を行う手順と
を具備する処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、プロセッサに関する。詳しくは、メモリから命令をフェッチしてデコード処理を行うプロセッサ、情報処理装置、および、これらにおける処理方法ならびに当該方法をコンピュータに実行させるプログラムに関する。
【背景技術】
【０００２】
従来のプロセッサ、特に、ＣＩＳＣ（Complex Instruction Set Computer）、ＶＬＩＷ（Very Long Instruction Word）やＴＴＡ（Transport Triggered Architecture）においては、複数の命令の組合せを実現するために命令語長が長くなる傾向がある。アプリケーションごとに使用される命令の組合せ出現頻度は異なる。そのため、特定のアプリケーションでは無駄が生じてコードサイズが大きくなるという問題がある。
【０００３】
一方、従来のプロセッサにおいては、命令のビットフィールド割当ては命令デコーダの設計の時点で確定させる必要がある。したがって、アプリケーションプログラムを実行するときには命令デコーダの論理が固定されているため、命令のビットフィールド割当てを変更することはできない。
【０００４】
そこで、例えば、命令セットを拡張するために可変長命令セットの命令をデコードする方法が提案されている（例えば、特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００５−０２５７４１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述の従来技術では、可変長命令セットの命令をデコードすることにより、命令セットを拡張している。しかしながら、この従来技術では、エスケープコードを使用して命令空間を拡張しており、エスケープコードを解釈するための制御が複雑になるという問題がある。また、エスケープコードによる拡張命令の頻度によっては、コードサイズが大きくなるという問題がある。
【０００７】
本技術はこのような状況に鑑みて生み出されたものであり、フェッチされた命令の所定のフィールドを変換することにより、実質的な命令語長を拡張して、命令の種類やオペランドの長さを確保することを目的とする。
【課題を解決するための手段】
【０００８】
本技術は、上述の問題点を解消するためになされたものであり、その第１の側面は、命令の所定のフィールドのビットパターンに関連付けて上記所定のフィールドより長い拡張フィールドを記憶する命令変換テーブルと、フェッチされた命令の上記所定のフィールドのビットパターンによって上記命令変換テーブルを参照して上記拡張フィールドを取得する拡張フィールド取得部と、上記フェッチされた命令の上記所定のフィールドに代えて上記拡張フィールドを備える新たな命令についてデコード処理を行う命令デコーダとを具備するプロセッサ、そのプロセッサを含む情報処理装置およびそれらにおける処理方法である。これにより、フェッチされた命令における所定のフィールドより長い拡張フィールドを備える新たな命令としてデコード処理を行うという作用をもたらす。
【０００９】
また、この第１の側面において、上記命令変換テーブルは、オペコードの少なくとも一部のビットパターンを上記所定のフィールドとして当該ビットパターンに関連付けて上記新たな命令のオペコードを上記拡張フィールドとして記憶するようにしてもよい。これにより、フェッチされた命令におけるオペコードより長いオペコードを備える新たな命令としてデコード処理を行うという作用をもたらす。
【００１０】
また、この第１の側面において、上記命令変換テーブルは、オペコードの少なくとも一部のビットパターンを上記所定のフィールドとして当該ビットパターンに関連付けて上記新たな命令のオペコードとオペランドの少なくとも一部とを上記拡張フィールドとして記憶するようにしてもよい。これにより、新たなオペランドを備える新たな命令としてデコード処理を行うという作用をもたらす。
【００１１】
また、この第１の側面において、上記命令変換テーブルは、上記拡張フィールドとしてモード情報を含み、上記命令デコーダは、上記モード情報に応じて上記新たな命令におけるオペランドを解釈するようにしてもよい。これにより、モード情報を含む拡張フィールドを備える新たな命令としてデコード処理を行うという作用をもたらす。
【００１２】
また、この第１の側面において、上記拡張フィールド取得部は、上記フェッチされた命令の上記所定のフィールドのビットパターンが特定のパターンであることを条件として上記拡張フィールドを取得し、上記命令デコーダは、上記フェッチされた命令の上記所定のフィールドのビットパターンが上記特定のパターンでない場合には上記フェッチされた命令についてデコード処理を行うようにしてもよい。これにより、命令の一部についてのみ拡張フィールドを備える新たな命令としてデコード処理を行うという作用をもたらす。
【００１３】
また、この第１の側面において、上記命令変換テーブルの記憶内容を書き替える書替え実行部をさらに具備してもよい。これにより、拡張フィールドを備える新たな命令を動的に変更するという作用をもたらす。
【００１４】
また、この第１の側面において、上記書替え実行部は、上記命令デコーダによってデコードされた命令が上記命令変換テーブルの書替え命令であった場合に、その命令によって指定された内容に上記命令変換テーブルを書き替えるようにしてもよい。これにより、書替え命令を用いて新たな命令を動的に変更するという作用をもたらす。
【発明の効果】
【００１５】
本技術によれば、フェッチされた命令の所定のフィールドを拡張して、命令の種類やオペランドの長さを確保することができるという優れた効果を奏し得る。なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
【図面の簡単な説明】
【００１６】
【図１】本技術の第１の実施の形態における情報処理装置の構成例を示す図である。
【図２】本技術の第１の実施の形態における変換前の命令フォーマットの一例を示す図である。
【図３】本技術の第１の実施の形態におけるオペコード拡張の一例を示す図である。
【図４】本技術の第１の実施の形態における命令変換テーブル１２１による命令変換の一例を示す図である。
【図５】本技術の第１の実施の形態におけるプロセッサ１００の処理手順の一例を示す流れ図である。
【図６】本技術の第２の実施の形態における変換前の命令フォーマットの一例を示す図である。
【図７】本技術の第２の実施の形態における変換後の命令フォーマットの一例を示す図である。
【図８】本技術の第２の実施の形態における命令変換テーブル１２１による命令変換の一例を示す図である。
【図９】本技術の第３の実施の形態における変換前後の命令フォーマットの一例を示す図である。
【図１０】本技術の第３の実施の形態における命令変換テーブル１２１による命令変換の一例を示す図である。
【図１１】本技術の第３の実施の形態におけるプロセッサ１００の処理手順の一例を示す流れ図である。
【図１２】本技術の第４の実施の形態における情報処理装置の構成例を示す図である。
【図１３】本技術の第４の実施の形態における命令変換テーブル１２１の書替えを行うプログラムの一例を示す図である。
【発明を実施するための形態】
【００１７】
以下、本技術を実施するための形態（以下、実施の形態と称する）について説明する。説明は以下の順序により行う。
１．第１の実施の形態（オペコード拡張の例）
２．第２の実施の形態（オペランド拡張の例）
３．第３の実施の形態（一部の命令についてのみ拡張する例）
４．第４の実施の形態（命令参照テーブルを切り替える例）
【００１８】
＜１．第１の実施の形態＞
［情報処理装置の構成］
図１は、本技術の第１の実施の形態における情報処理装置の構成例を示す図である。この情報処理装置は、プロセッサ１００およびメモリ２００を備える。
【００１９】
メモリ２００は、プロセッサ１００における実行に必要なプログラムの命令やデータを記憶するものである。以下では、プロセッサ１００がメモリ２００から命令を読み出して（命令フェッチ）、その命令をデコードする一連の流れに着目して説明する。
【００２０】
プロセッサ１００は、メモリ２００から命令を読み出して、その命令を実行するものである。このプロセッサ１００は、フェッチユニット１１０と、命令変換部１２０と、命令デコーダ１３０と、実行ユニット１４０とを備える。
【００２１】
フェッチユニット１１０は、メモリ２００から命令を読み出す命令フェッチ処理を行うものである。このフェッチユニット１１０は、メモリ２００に記憶されているプログラムの命令列から順番に命令を読み出す。このフェッチユニット１１０は、基本的にはアドレスの昇順に命令を読み出すが、分岐命令などにより分岐（ジャンプ）が生じる場合にはその分岐先から命令を読み出すことになる。
【００２２】
命令変換部１２０は、フェッチユニット１１０によって読み出された命令の所定のフィールドを置換して、命令変換するものである。この命令変換部１２０は、命令変換テーブル１２１および拡張フィールド取得部１２２を備える。
【００２３】
命令変換テーブル１２１は、命令の所定のフィールドのビットパターンに関連付けて、拡張フィールドを記憶するものである。この拡張フィールドは、元の命令の所定のフィールドよりも長いビット長を有する。
【００２４】
拡張フィールド取得部１２２は、フェッチされた命令の所定のフィールドのビットパターンによって、命令変換テーブル１２１を参照して、拡張フィールドを取得するものである。元の命令の所定のフィールドに代えて、この取得された拡張フィールドを置換することにより、命令変換が行われる。
【００２５】
命令デコーダ１３０は、命令変換部１２０によって変換された新たな命令についてデコード処理を行うものである。この命令デコーダ１３０によるデコード処理の結果、プロセッサ１００の各部に対する制御が行われる。例えば、実行ユニット１４０における命令実行が制御される。
【００２６】
実行ユニット１４０は、命令デコーダ１３０によるデコード結果に従って、各種の命令を実行するものである。例えば、メモリ２００へのアクセスや、（図示しない）演算器における演算処理などが実行される。
【００２７】
［命令フォーマット］
図２は、本技術の第１の実施の形態における変換前の命令フォーマットの一例を示す図である。
【００２８】
ここでは、命令長３２ビットの命令を想定する。ＭＳＢ（Most Significant Bit）側の第３１ビットから第２４ビットの８ビットがオペコードであり、残りの第２３ビットから第０ビットの２４ビットがオペランドである。
【００２９】
一般的なプロセッサにおいては、同図に示すような各種の命令が命令セットとして設けられる。システム関連命令としては、主にオペレーティングシステムによるシステム関数呼び出しのために使用されるシステムコール命令（ｓｙｓｃａｌｌ）や、何もしない命令（ＮＯＰ：No Operation）等が分類される。
【００３０】
ロード命令は、メモリ２００からの読出しを行うための命令である。ストア命令は、メモリ２００への書込みを行うための命令である。レジスタ間転送命令は、プロセッサ１００の内部レジスタ間の転送を行うための命令である。
【００３１】
加算命令は、加算処理を行うための命令である。減算命令は、減算処理を行うための命令である。論理演算命令は、論理演算処理を行うための命令である。乗算命令は、乗算処理を行うための命令である。除算命令は、除算処理を行うための命令である。
【００３２】
分岐命令は、プログラムの命令列における分岐を行うための命令である。分岐命令には、ある条件を満たした（または満たさなかった）ときに分岐を行う条件分岐命令と、無条件に分岐を行う無条件分岐命令とがある。
【００３３】
これらの命令を備えることを想定した場合、仮にそれぞれの命令の種類が３２種類であるとすると、計３２０命令を設けることになる。オペコードとして８ビットを想定すると、表現できるのは最大２５６命令までである。この場合、例えば、乗算命令および除算命令を命令セットから除いて、残りの２５６命令を採用することが考えられる。しかし、乗算命令を多く必要とするアプリケーションもあり、命令の取捨選択は一概に決定できるものではない。そこで、この実施の形態においては、以下のようにオペコードを拡張することを考える。
【００３４】
図３は、本技術の第１の実施の形態におけるオペコード拡張の一例を示す図である。
【００３５】
この例では、８ビットのオペコードを１２ビットに拡張して、計３６ビットの命令に変換している。これにより、１２ビットのオペコードにより表現できるのは最大４０９６命令となり、命令セットの設計の自由度を向上させることができる。
【００３６】
［命令変換テーブル］
図４は、本技術の第１の実施の形態における命令変換テーブル１２１による命令変換の一例を示す図である。
【００３７】
上述のように、この実施の形態においては、変換前の命令のオペコードのビット長は８ビットである。命令変換テーブル１２１は、オペコードの８ビットのビットパターンに関連付けて、２５６個の拡張後の１２ビットのオペコードを拡張フィールドとして記憶する。
【００３８】
拡張フィールド取得部１２２は、フェッチされた命令の８ビットのオペコードのビットパターンによって、命令変換テーブル１２１を参照して、拡張後の１２ビットのオペコードを取得する。そして、元の命令の８ビットのオペコードに代えて、１２ビットのオペコードを置換することにより、３６ビット長の命令が得られる。このとき、２４ビットのオペランドについては、元の命令のオペランドがそのまま使用される。
【００３９】
ただし、同図から明らかなように、命令変換テーブル１２１に記憶される拡張後の１２ビットのオペコードは、２５６個である。したがって、命令変換テーブル１２１の記憶内容を変更しないことを前提とすれば、一度に使用可能な命令の種類は２５６命令である。それ以外の命令を使用するためには、命令変換テーブル１２１の記憶内容を変更する必要が生じる。これについては、後述の第４の実施の形態において説明する。
【００４０】
［動作］
図５は、本技術の第１の実施の形態におけるプロセッサ１００の処理手順の一例を示す流れ図である。
【００４１】
メモリ２００からフェッチユニット１１０によって命令がフェッチされると、拡張フィールド取得部１２２は、フェッチされた命令からオペコードのビットフィールドを抽出する（ステップＳ９１１）。この実施の形態においては、上述のように、ＭＳＢ側の第３１ビットから第２４ビットの８ビットがオペコードである。
【００４２】
そして、拡張フィールド取得部１２２は、抽出された８ビットのオペコードのビットフィールドによって命令変換テーブル１２１を参照して、１２ビットのオペコードを取得する（ステップＳ９１３）。これにより、オペコードが１２ビットに拡張された命令に変換される。
【００４３】
命令デコーダ１３０は、拡張フィールド取得部１２２により取得された１２ビットのオペコードと、元の命令のオペランドとを結合した、新たな命令をデコードする（ステップＳ９１４）。
【００４４】
このように、本技術の第１の実施の形態によれば、命令変換テーブル１２１を参照することにより、命令のオペコードを拡張することができる。
【００４５】
＜２．第２の実施の形態＞
上述の第１の実施の形態では、命令のオペコードを８ビットから１２ビットに拡張する一方で、２４ビットのオペランドについては元の命令のオペランドをそのまま用いていた。この第２の実施の形態では、オペランドとして使用可能なフィールドについて、拡張を図る。なお、プロセッサ１００としての基本的な構成については上述の第１の実施の形態と同様であるため、詳細な説明は省略する。
【００４６】
［命令フォーマット］
図６は、本技術の第２の実施の形態における変換前の命令フォーマットの一例を示す図である。
【００４７】
ここでは、上述の第１の実施の形態と同様に、命令長３２ビットの命令を想定し、ＭＳＢ側の８ビットがオペコードであり、残りの２４ビットがオペランドである。
【００４８】
この第２の実施の形態においては、オペランドの最上位ビットにモード情報（ｍｏｄｅ）を設けて、このモード情報によってオペランドのフィールドの解釈を変更することを想定する。すなわち、モード情報が０を示す場合には、レジスタ操作を行う命令として、５ビット分のデスティネーションレジスタを１つと、５ビット分のソースレジスタを２つ指定できるものとし、残りの８ビットはイミディエイト（即値）として用いることができる。レジスタ指定のフィールドとして５ビットずつを想定しているため、それぞれ３２個のレジスタを指定することができる。これにより、例えば、２つのソースレジスタの内容とイミディエイトに対して演算を行った結果を、デスティネーションレジスタに保持する処理を行うことができる。
【００４９】
モード情報が１を示す場合には、メモリアクセスを行う命令として、５ビット分のデスティネーションレジスタおよびベースアドレスレジスタをそれぞれ１つずつ指定できるものとし、残りの１３ビットはディスプレースメントとして用いることができる。これにより、例えば、ベースアドレスレジスタの内容にディスプレースメントを加算したアドレスにアクセスを行って、その結果をデスティネーションレジスタに保持する処理を行うことができる。
【００５０】
これらの場合、レジスタ指定のビット長や、イミディエイトまたはディスプレースメントについて、２４ビットに固定されたオペランドのフィールド内に収める必要がある。したがって、イミディエイトやディスプレースメントのビット長を長くしたい場合でも、ビットフィールドが足りないという問題を生じる。これに対して、この第２の実施の形態では、オペランドの一部を命令変換テーブル１２１に記憶しておくことにより、オペランドを拡張する。
【００５１】
図７は、本技術の第２の実施の形態における変換後の命令フォーマットの一例を示す図である。
【００５２】
この第２の実施の形態においては、オペランドを２つに分け、前半のオペランド（１）を命令変換テーブル１２１に記憶して、後半のオペランド（２）としては元の命令のオペランドをそのまま使用する。これにより、例えば、１９ビットのイミディエイトまたは２４ビットのディスプレースメントを使用することができる。
【００５３】
図８は、本技術の第２の実施の形態における命令変換テーブル１２１による命令変換の一例を示す図である。
【００５４】
この例では、命令変換テーブル１２１は、オペコードの８ビットのビットパターンに関連付けて２５６個のエントリを記憶する。各エントリは、９ビットのオペコード、１ビットのモード情報、５ビットのデスティネーションレジスタ、および、５ビットのソースレジスタまたはベースアドレスレジスタの各フィールドを拡張フィールドとして記憶する。これにより、オペコードだけでなく、オペランドについてもフィールドを拡張する。
【００５５】
このように、本技術の第２の実施の形態によれば、命令変換テーブル１２１を参照することにより、命令のオペランドを拡張することができる。
【００５６】
＜３．第３の実施の形態＞
上述の第１または第２の実施の形態では、全ての命令についてオペコードまたはオペランドを拡張していた。しかし、実際には拡張が不要な命令もあり、全ての命令を変換する必要がない場合もある。そこで、この第３の実施の形態では、一部の命令についてのみ変換を行い、他の命令についてはそのままの状態でデコード処理を行うことを想定する。なお、プロセッサ１００としての基本的な構成については上述の第１の実施の形態と同様であるため、詳細な説明は省略する。
【００５７】
図９は、本技術の第３の実施の形態における変換前後の命令フォーマットの一例を示す図である。
【００５８】
この第３の実施の形態では、一部の命令のみを命令変換の対象として、それ以外の場合には命令変換を行わないことを想定する。すなわち、拡張フィールド取得部１２２は、フェッチされた命令の所定のフィールドのビットパターンが特定のパターンであることを条件として拡張フィールドを取得し、特定のパターンでなければ拡張フィールドを取得しない。
【００５９】
例えば、同図におけるａのように、オペコードが「０ｘ０００」から「０ｘ０ｂｆ」の場合には、拡張フィールド取得部１２２は拡張フィールドを取得せず、命令デコーダ１３０はフェッチされた命令についてデコード処理を行う。一方、同図におけるｂのように、オペコードが「０ｘ０ｃ０」から「０ｘ０ｆｆ」の場合には、拡張フィールド取得部１２２は拡張フィールドを取得し、命令デコーダ１３０は拡張フィールドを備える新たな命令についてデコード処理を行う。なお、「０ｘ」は後続の数字が１６進数表記であることを意味する。
【００６０】
図１０は、本技術の第３の実施の形態における命令変換テーブル１２１による命令変換の一例を示す図である。
【００６１】
この例では、８ビットのオペコードの上位２ビットが「０ｂ１１」であることを条件として、拡張フィールド取得部１２２は命令変換テーブル１２１を参照して拡張フィールドを取得する。なお、「０ｂ」は後続の数字が２進数表記であることを意味する。
【００６２】
この例の命令変換テーブル１２１は、それぞれ２０ビットからなる６４個のエントリを有し、８ビットのオペコードの下位６ビットのビットフィールドによって参照される。命令変換テーブル１２１の各エントリは、９ビットのオペコード、１ビットのモード情報、５ビットのデスティネーションレジスタ、５ビットのソースレジスタまたはベースアドレスレジスタの各フィールドを備える。
【００６３】
取得された２０ビットの拡張フィールドは、元の命令の２４ビットのオペランドと結合されて、計４４ビットの新たな命令を形成する。命令デコーダ１３０はこの新たな命令についてデコード処理を行う。２０ビットの拡張フィールドには、９ビットのオペコードに加えて２１ビットのオペランド（１）が含まれる。すなわち、元の命令の２４ビットのオペランドをオペランド（２）とすると、オペランド（１）とオペランド（２）とを合わせた４５ビットのオペランドを構成する。このように、オペコードを拡張するだけでなく、オペランドについても拡張することができる。すなわち、図７において説明したように、例えば、１９ビットのイミディエイトまたは２４ビットのディスプレースメントを使用することができる。
【００６４】
［動作］
図１１は、本技術の第３の実施の形態におけるプロセッサ１００の処理手順の一例を示す流れ図である。なお、この第３の実施の形態におけるステップＳ９１１、Ｓ９１３およびＳ９１４は、上述の第１の実施の形態と同様である。
【００６５】
ステップＳ９１１において、フェッチされた命令からオペコードのビットフィールドが抽出されると、その命令が変換対象命令であるか否かが判断される（ステップＳ９１２）。変換対象命令であれば（ステップＳ９１２：Ｙｅｓ）、拡張フィールド取得部１２２によって拡張フィールドが取得され（ステップＳ９１３）、命令デコーダ１３０は元の命令のオペランドと結合された新たな命令をデコードする（ステップＳ９１４）。
【００６６】
一方、フェッチされた命令が変換対象命令でなければ（ステップＳ９１２：Ｎｏ）、命令デコーダ１３０はフェッチされた命令をデコードする（ステップＳ９１５）。
【００６７】
このように、本技術の第３の実施の形態によれば、一部の命令についてのみ変換を行い、他の命令についてはそのままの状態でデコード処理を行うことができる。
【００６８】
＜４．第４の実施の形態＞
上述の第１乃至第３の実施の形態では、命令変換テーブル１２１の内容は予め設定されていることを想定していたが、命令変換テーブル１２１の内容を書き替えることも可能である。この第４の実施の形態では、プログラムの実行中に命令変換テーブル１２１の内容を動的に書き替える手法について説明する。
【００６９】
［情報処理装置の構成］
図１２は、本技術の第４の実施の形態における情報処理装置の構成例を示す図である。この第４の実施の形態における情報処理装置は、命令変換テーブル１２１を書き替えることによりＮ個の何れかに切り替えて使用するものである。この書替えは、プログラムに従って実行ユニット１４０が行う。
【００７０】
［プログラム］
図１３は、本技術の第４の実施の形態における命令変換テーブル１２１の書替えを行うプログラムの一例を示す図である。
【００７１】
第１行目から第５行目は初期化部分である。＃ｉｎｓ＿ｄｅｆは、変換後の命令が記憶されるメモリ領域のアドレスである。第１行目の命令は、レジスタｒ４に＃ｉｎｓ＿ｄｅｆのアドレスを設定するｍｏｖｅ命令である。
【００７２】
ｔ０からｔ３は命令変換テーブル１２１の４つのエントリである。第２行目から第５行目の命令は、ｔ０からｔ３に命令変換テーブル１２１の設定内容をメモリ２００からロードするｌｏａｄ命令である。これにより、変換後の命令が命令変換テーブル１２１に設定される。
【００７３】
なお、命令変換テーブル１２１の初期値をＮＯＰに設定しておくことにより、誤動作を防ぐことができる。
【００７４】
＃ｄａｔａは、データが記憶されるメモリ領域のアドレスである。第１１行目は、データアドレスポインタとして使用されるレジスタｒ４に＃ｄａｔａのアドレスを設定するｍｏｖｅ命令である。第１２行目から第１４行目は、レジスタｒ０からｒ２にデータをメモリ２００からロードするｌｏａｄ命令である。これにより、命令変換テーブル１２１の切替えを行うことができる。
【００７５】
第１５行目の命令は、レジスタｒ４に＃ｉｎｓ＿ｄｅｆのアドレスを設定するｍｏｖｅ命令である。
【００７６】
第１６行目の命令は、ｔ０に命令変換テーブル１２１の設定内容をメモリ２００からロードするｌｏａｄ命令である。第１７行目の命令は、命令変換テーブル１２１を参照して拡張フィールドに差し替える命令である。
【００７７】
第１８行目の命令は、ｔ０に命令変換テーブル１２１の設定内容をメモリ２００からロードするｌｏａｄ命令である。第１９行目の命令は、命令変換テーブル１２１を参照して拡張フィールドに差し替える命令である。
【００７８】
このように、本技術の第４の実施の形態によれば、命令変換テーブル１２１の内容を動的に切り替えることができる。したがって、上述の例のように、変換により８ビットのオペコードを１２ビットに拡張する場合、最大で４０９６命令の中から任意の２５６命令を命令変換テーブル１２１に登録しておき、これを書き替えることにより４０９６命令を全て実行することが可能になる。
【００７９】
すなわち、本技術の実施の形態によれば、命令語長を縮小することができるため、プログラムのコードサイズを小さくすることができる。また、アプリケーションプログラム毎、または、アプリケーションプログラムの区間（例えばサブルーチン）毎に、命令変換テーブル１２１の内容をプログラム実行時に変更することにより、コードサイズを最適化することができる。そして、これらによる回路規模や命令フェッチ削減により、消費電力を削減することができる。
【００８０】
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
【００８１】
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、ＣＤ（Compact Disc）、ＭＤ（MiniDisc）、ＤＶＤ（Digital Versatile Disc）、メモリカード、ブルーレイディスク（Blu-ray（登録商標）Disc）等を用いることができる。
【００８２】
なお、本明細書に記載された効果はあくまで例示であって、限定されるものではなく、また、他の効果があってもよい。
【００８３】
なお、本技術は以下のような構成もとることができる。
（１）命令の所定のフィールドのビットパターンに関連付けて前記所定のフィールドより長い拡張フィールドを記憶する命令変換テーブルと、
フェッチされた命令の前記所定のフィールドのビットパターンによって前記命令変換テーブルを参照して前記拡張フィールドを取得する拡張フィールド取得部と、
前記フェッチされた命令の前記所定のフィールドに代えて前記拡張フィールドを備える新たな命令についてデコード処理を行う命令デコーダと
を具備するプロセッサ。
（２）前記命令変換テーブルは、オペコードの少なくとも一部のビットパターンを前記所定のフィールドとして当該ビットパターンに関連付けて前記新たな命令のオペコードを前記拡張フィールドとして記憶する
前記（１）に記載のプロセッサ。
（３）前記命令変換テーブルは、オペコードの少なくとも一部のビットパターンを前記所定のフィールドとして当該ビットパターンに関連付けて前記新たな命令のオペコードとオペランドの少なくとも一部とを前記拡張フィールドとして記憶する
前記（１）または（２）に記載のプロセッサ。
（４）前記命令変換テーブルは、前記拡張フィールドとしてモード情報を含み、
前記命令デコーダは、前記モード情報に応じて前記新たな命令におけるオペランドを解釈する
前記（１）から（３）のいずれかに記載のプロセッサ。
（５）前記拡張フィールド取得部は、前記フェッチされた命令の前記所定のフィールドのビットパターンが特定のパターンであることを条件として前記拡張フィールドを取得し、
前記命令デコーダは、前記フェッチされた命令の前記所定のフィールドのビットパターンが前記特定のパターンでない場合には前記フェッチされた命令についてデコード処理を行う
前記（１）から（４）のいずれかに記載のプロセッサ。
（６）前記命令変換テーブルの記憶内容を書き替える書替え実行部をさらに具備する前記（１）から（５）のいずれかに記載のプロセッサ。
（７）前記書替え実行部は、前記命令デコーダによってデコードされた命令が前記命令変換テーブルの書替え命令であった場合に、その命令によって指定された内容に前記命令変換テーブルを書き替える
前記（６）に記載のプロセッサ。
（８）命令の所定のフィールドのビットパターンに関連付けて前記所定のフィールドより長い拡張フィールドを記憶して、フェッチされた命令の前記所定のフィールドに代えて前記拡張フィールドを備える新たな命令に変換する命令変換部と、
前記新たな命令についてデコード処理を行う命令デコーダと
を具備するプロセッサ。
（９）命令列を記憶するメモリと、
命令の所定のフィールドのビットパターンに関連付けて前記所定のフィールドより長い拡張フィールドを記憶する命令変換テーブルと、
前記メモリからフェッチされた命令の前記所定のフィールドのビットパターンによって前記命令変換テーブルを参照して前記拡張フィールドを取得する拡張フィールド取得部と、
前記フェッチされた命令の前記所定のフィールドに代えて前記拡張フィールドを備える新たな命令についてデコード処理を行う命令デコーダと
を具備する情報処理装置。
（１０）命令の所定のフィールドのビットパターンに関連付けて前記所定のフィールドより長い拡張フィールドを記憶する命令変換テーブルを備えるプロセッサにおける処理方法であって、
フェッチされた命令の前記所定のフィールドを抽出する手順と、
前記抽出された前記所定のフィールドのビットパターンによって前記命令変換テーブルを参照して前記拡張フィールドを取得する手順と、
前記フェッチされた命令の前記所定のフィールドに代えて前記拡張フィールドを備える新たな命令についてデコード処理を行う手順と
を具備する処理方法。
【符号の説明】
【００８４】
１００  プロセッサ
１１０  フェッチユニット
１２０  命令変換部
１２１  命令変換テーブル
１２２  拡張フィールド取得部
１３０  命令デコーダ
１４０  実行ユニット
２００  メモリ
【図１】
2019095952.tif 000003
【図２】
2019095952.tif 000004
【図３】
2019095952.tif 000005
【図４】
2019095952.tif 000006
【図５】
2019095952.tif 000007
【図６】
2019095952.tif 000008
【図７】
2019095952.tif 000009
【図８】
2019095952.tif 000010
【図９】
2019095952.tif 000011
【図１０】
2019095952.tif 000012
【図１１】
2019095952.tif 000013
【図１２】
2019095952.tif 000014
【図１３】
2019095952.tif 000015