(57)【要約】【課題】フェッチ回数とプログラムコードを共に削減することが可能な、命令コード圧縮方法と命令フェッチ回路を提供する。【解決手段】演算コードＯＰＣＯＤＥ等を含む上位ビット群と、オペランドＯＰＲ２等を含み上位ビット群と同じビット数の下位ビット群とで構成される命令コードの下位ビット郡に再利用フラグＲを設け、一連の命令コードの内で上位ビット群が同一である命令コードが２Ｎ＋１（但し、Ｎは１以上の整数）個連続するときに、その連続する命令コードの内の２ｎ（但し、ｎは１以上でＮ以下の整数）番目の命令コードと２ｎ＋１番目の命令コードの下位ビット群の各再利用フラグＲを“１”にセットすると共に、これらの２ｎ番目と２ｎ＋１番目の命令コードの下位ビット群を統合して１つの圧縮命令コードに置き代える。【選択図】図１
2009026106.tif 000002
【特許請求の範囲】
【請求項１】
演算コードを含む上位ビット群と、オペランドを含み該上位ビット群と同じビット数の下位ビット群とで構成される命令コードを順番に解読して実行する演算回路を有するコンピュータにおいて命令コード数を削減するための命令コード圧縮方法であって、
前記下位ビット群に再利用フラグを設け、
一連の命令コードの内で前記上位ビット群が同一である命令コードが２Ｎ＋１（但し、Ｎは１以上の整数）個連続するときに、該連続する命令コードの内の２ｎ（但し、ｎは１以上でＮ以下の整数）番目の命令コードと２ｎ＋１番目の命令コードの下位ビット群の各再利用フラグをセットすると共に、これらの２ｎ番目と２ｎ＋１番目の命令コードの下位ビット群を統合して１つの圧縮命令コードに置き代えることを特徴とする命令コード圧縮方法。
【請求項２】
演算コードを含む上位ビット群と、オペランドを含み該上位ビット群と同じビット数の下位ビット群とで構成される命令コードを順番に解読して実行する演算回路を有するコンピュータにおいて命令コード数を削減するための命令コード圧縮方法であって、
前記下位ビット群に再利用フラグと更新フラグを設け、
一連の命令コードの内で前記上位ビット群が同一である命令コードが２Ｎ＋１（但し、Ｎは１以上の整数）個以上存在し、かつ、その２番目以降の命令コードが２個単位で連続するときに、１番目の命令コードの更新フラグをセットし、
前記連続する２番目以降の命令コードの内の２ｎ（但し、ｎは１以上でＮ以下の整数）番目の命令コードと２ｎ＋１番目の命令コードの下位ビット群の各再利用フラグをセットすると共に、これらの２ｎ番目と２ｎ＋１番目の命令コードの下位ビット群を統合して１つの圧縮命令コードに置き代えることを特徴とする命令コード圧縮方法。
【請求項３】
演算コードを含む上位ビット群と、オペランドを含み該上位ビット群と同じビット数の下位ビット群とで構成される命令コードを順番に解読して実行する演算回路を有するコンピュータにおいて命令コード数を削減するための命令コード圧縮方法であって、
前記下位ビット群に再利用フラグとｎビットのバッファ番号設定領域を設け、
一連の命令コードの内で上位ビット群が同一である２ｎ種類の命令コードが繰り返されるときに、
前記２ｎ種類の命令コードの種類に応じて前記バッファ番号設定領域の値をセットすると共に、２回目以降の命令コードの各再利用フラグをセットし、
前記２回目以降の前記２ｎ種類の命令コードが２つ連続する毎に下位ビット群を統合して１つの圧縮命令コードに置き代えることを特徴とする命令コード圧縮方法。
【請求項４】
演算コードを含む上位ビット群と、オペランドを含み該上位ビット群と同じビット数の下位ビット群とで構成される命令コードを順番に解読して実行する演算回路を有するコンピュータにおいて命令コード数を削減するための命令コード圧縮方法であって、
前記下位ビット群に再利用フラグと更新フラグとｎビットのバッファ番号設定領域を設け、
一連の命令コードの内に前記上位ビット群が同一である２ｎ種類の命令コードが存在するときに、それらの命令コードの内でそれぞれ最初の命令コードの更新フラグをセットすると共に、前記バッファ番号設定領域に対応するバッファ番号をセットし、
前記２ｎ種類の命令コードを含む２回目以降の命令コードが２つ連続する毎に、その連続する２つの命令コードの再利用フラグをセットすると共に、それらの下位ビット群を統合して１つの圧縮命令コードに置き代えることを特徴とする命令コード圧縮方法。
【請求項５】
演算コードを含む上位ビット群と、オペランドを含み該上位ビット群と同じビット数の下位ビット群とで構成される命令コードを順番に解読して実行する演算回路を有するコンピュータにおいて命令コード数を削減するための命令コード圧縮方法であって、
前記下位ビット群に再利用フラグと更新フラグとバッファ番号の組み合わせをコード化したフラグコード領域を設け、
一連の命令コードの内に前記上位ビット群が同一である命令コードが複数個存在するときに、それらの命令コードの内でそれぞれ最初の命令コードの更新フラグをセットすると共に、該命令コードに対応するバッファ番号をセットし、これらのセットされた更新フラグとバッファ番号の組み合わせに基づいてフラグコードを生成して各命令コードのフラグコード領域に書き込み、
前記バッファ番号に対応した２回目以降の命令コードが連続するときには、それぞれに対応する前記バッファ番号をセットすると共に再利用フラグをセットし、これらのセットされたバッファ番号と再利用フラグの組み合わせに基づいてフラグコードを生成して各命令コードのフラグコード領域に書き込み、連続する２つの命令コード毎に下位ビット群を統合して１つの圧縮命令コードに置き代えることを特徴とする命令コード圧縮方法。
【請求項６】
演算コードと複数のオペランドを含む命令コードを順番に解読して実行する演算回路を有するコンピュータにおいて命令コード数を削減するための命令コード圧縮方法であって、
前記各命令コードに再利用フラグと更新フラグと複数のセット番号の組み合わせをコード化したフラグコード領域を設け、
一連の命令コードの内に同一の演算コードまたはオペランドの組み合わせパターンを含む命令コードが複数個存在するときに、
前記同一の組み合わせパターンを含む１回目の命令コードに対して、その更新フラグを設定すると共に該組み合わせパターンに対応するセット番号を設定し、該設定した更新フラグとセット番号をコード化したフラグコードを生成してフラグコード領域に書き込み、
前記組み合わせパターンを含む２回目以降の前記命令コードに対して、各再利用フラグを設定すると共に該組み合わせパターンに対応するセット番号を設定し、該設定した再利用フラグとセット番号をコード化したフラグコードを生成して各命令コードのフラグコード領域に書き込み、
前記２回目以降の連続する２つの命令コード毎に前記組み合わせパターンを除くオペランドとフラグコードを統合して１つの圧縮命令コードに置き代えることを特徴とする命令コード圧縮方法。
【請求項７】
演算コードを含む上位ビット群とオペランド及び再利用フラグを含み該上位ビット群と同じビット数の下位ビット群とで構成される基本命令コードと、一連の命令コードの内で前記上位ビット群が同一である命令コードが２Ｎ＋１（但し、Ｎは１以上の整数）個連続するときに、該連続する命令コードの内の２ｎ（但し、ｎは１以上でＮ以下の整数）番目の命令コードと２ｎ＋１番目の命令コードの下位ビット群の各再利用フラグがセットされると共に、これらの２ｎ番目と２ｎ＋１番目の命令コードの下位ビット群が統合された圧縮命令コードとを、順番に読み出して命令デコーダに与える命令フェッチ回路であって、
メモリから読み出した前記基本命令コードまたは圧縮命令コードを保持する命令レジスタと、
選択信号に従って前記命令レジスタの上位ビット群または下位ビット群を選択し、前記命令コードの下位ビット群として前記命令デコーダに与える第１のセレクタと、
前記命令レジスタの上位ビット群を保持する命令バッファと、
前記第１のセレクタで選択されて前記命令デコーダに与えられる下位ビット群の再利用フラグがセットされているときには前記命令バッファの内容を選択し、該再利用フラグがセットされていないときには前記命令レジスタの上位ビット群を選択して前記命令コードの上位ビット群として前記命令デコーダに与える第２のセレクタと、
前記第１のセレクタで選択されて前記命令デコーダに与えられる下位ビット群の再利用フラグがセットされているときに、前記命令レジスタの上位ビット群と下位ビット群を交互に選択するための前記選択信号を生成する選択信号生成手段とを、
備えたことを特徴とする命令フェッチ回路。
【請求項８】
演算コードを含む上位ビット群とオペランド、再利用フラグ及び更新フラグを含み該上位ビット群と同じビット数の下位ビット群とで構成される基本命令コードと、一連の命令コードの内で前記上位ビット群が同一である命令コードが２Ｎ＋１（但し、Ｎは１以上の整数）個以上存在し、かつ、その２番目以降の命令コードが２個単位で連続するときに、１番目の命令コードの更新フラグがセットされ、前記連続する２番目以降の命令コードの内の２ｎ（但し、ｎは１以上でＮ以下の整数）番目の命令コードと２ｎ＋１番目の命令コードの下位ビット群の各再利用フラグがセットされると共に、これらの２ｎ番目と２ｎ＋１番目の命令コードの下位ビット群が統合された圧縮命令コードとを、順番に読み出して命令デコーダに与える命令フェッチ回路であって、
メモリから読み出した前記基本命令コードまたは圧縮命令コードを保持する命令レジスタと、
選択信号に従って前記命令レジスタの上位ビット群または下位ビット群を選択し、前記命令コードの下位ビット群として前記命令デコーダに与える第１のセレクタと、
前記第１のセレクタで選択されて前記命令デコーダに与えられる下位ビット群の更新フラグがセットされているときに、前記命令レジスタの上位ビット群を保持する命令バッファと、
前記第１のセレクタで選択されて前記命令デコーダに与えられる下位ビット群の再利用フラグがセットされているときには前記命令バッファの内容を選択し、該再利用フラグがセットされていないときには前記命令レジスタの上位ビット群を選択して前記命令コードの上位ビット群として前記命令デコーダに与える第２のセレクタと、
前記第１のセレクタで選択されて前記命令デコーダに与えられる下位ビット群の再利用フラグがセットされているときに、前記命令レジスタの上位ビット群と下位ビット群を交互に選択するための前記選択信号を生成する選択信号生成手段とを、
備えたことを特徴とする命令フェッチ回路。
【請求項９】
演算コードを含む上位ビット群とオペランド、再利用フラグ及びバッファ番号設定領域を含み該上位ビット群と同じビット数の下位ビット群とで構成される基本命令コードと、一連の命令コードの内で第１及び第２の演算コードを含む同一の上位ビット群を有する命令コードが２個単位で繰り返されるときに、前記第２の演算コードを含む命令コードに対応するバッファ番号が前記バッファ番号設定領域にセットされると共に、２回目以降の命令コードの各再利用フラグがセットされ、前記２回目以降の第１及び第２の演算コードを含む２つの連続する命令コード毎に下位ビット群が統合された圧縮命令コードとを、順番に読み出して命令デコーダに与える命令フェッチ回路であって、
メモリから読み出した前記基本命令コードまたは圧縮命令コードを保持する命令レジスタと、
選択信号に従って前記命令レジスタの上位ビット群または下位ビット群を選択し、前記命令コードの下位ビット群として前記命令デコーダに与える第１のセレクタと、
前記命令レジスタから出力される前記第１の演算コードを含む上位ビット群を保持する第１の命令バッファと、
前記命令レジスタから出力される前記第２の演算コードを含む上位ビット群を保持する第２の命令バッファと、
前記第１のセレクタで選択されて前記命令デコーダに与えられる下位ビット群のバッファ番号設定領域にセットされたバッファ番号に基づいて前記第１または第２の命令バッファの内容を選択して出力する第２のセレクタと、
前記第１のセレクタで選択されて前記命令デコーダに与えられる下位ビット群の再利用フラグがセットされているときには前記第２のセレクタの出力を選択し、該再利用フラグがセットされていないときには前記命令レジスタの上位ビット群を選択して前記命令コードの上位ビット群として前記命令デコーダに与える第３のセレクタと、
前記第１のセレクタで選択されて前記命令デコーダに与えられる下位ビット群の再利用フラグがセットされているときに、前記命令レジスタの上位ビット群と下位ビット群を交互に選択するための前記選択信号を生成する選択信号生成手段とを、
備えたことを特徴とする命令フェッチ回路。
【請求項１０】
演算コードを含む上位ビット群とオペランド、再利用フラグ、バッファ番号設定領域及び更新フラグを含み該上位ビット群と同じビット数の下位ビット群とで構成される基本命令コードと、一連の命令コードの内に第１及び第２の演算コードを含む同一の上位ビット群を有する命令コードがそれぞれ２個以上存在するときに、前記第１及び第２の演算コードを含む１回目の命令コードの更新フラグがセットされると共に該第２の演算コードを含む命令コードのバッファ番号設定領域に対応するバッファ番号がセットされ、前記第１及び第２の演算コードを含む２回目以降の前記命令コードの各再利用フラグがセットされてこれらの２回目以降の第１及び第２の演算コードを含む連続する２つの命令コード毎に下位ビット群が統合された圧縮命令コードとを、順番に読み出して命令デコーダに与える命令フェッチ回路であって、
メモリから読み出した前記基本命令コードまたは圧縮命令コードを保持する命令レジスタと、
選択信号に従って前記命令レジスタの上位ビット群または下位ビット群を選択し、前記命令コードの下位ビット群として前記命令デコーダに与える第１のセレクタと、
前記第１のセレクタで選択されて前記命令デコーダに与えられる下位ビット群の更新フラグがセットされているときに、前記命令レジスタから出力される前記第１の演算コードを含む上位ビット群を保持する第１の命令バッファと、
前記第１のセレクタで選択されて前記命令デコーダに与えられる下位ビット群の更新フラグがセットされているときに、前記命令レジスタから出力される前記第２の演算コードを含む上位ビット群を保持する第２の命令バッファと、
前記第１のセレクタで選択されて前記命令デコーダに与えられる下位ビット群のバッファ番号設定領域にセットされたバッファ番号に基づいて前記第１または第２の命令バッファの内容を選択して出力する第２のセレクタと、
前記第１のセレクタで選択されて前記命令デコーダに与えられる下位ビット群の再利用フラグがセットされているときには前記第２のセレクタの出力を選択し、該再利用フラグがセットされていないときには前記命令レジスタの上位ビット群を選択して前記命令コードの上位ビット群として前記命令デコーダに与える第３のセレクタと、
前記第１のセレクタで選択されて前記命令デコーダに与えられる下位ビット群の再利用フラグがセットされているときに、前記命令レジスタの上位ビット群と下位ビット群を交互に選択するための前記選択信号を生成する選択信号生成手段とを、
備えたことを特徴とする命令フェッチ回路。
【請求項１１】
演算コードを含む上位ビット群と、オペランド及び再利用フラグと複数の命令バッファ番号と更新フラグの組み合わせがコード化されたフラグコード領域を含み該上位ビット群と同じビット数の下位ビット群とで構成される基本命令コードと、一連の命令コードの内にそれぞれ異なる演算コードを含む同一の上位ビット群を有する命令コードがそれぞれ複数個存在するときに、前記演算コードを含む１回目の命令コードの更新フラグが設定されると共に該演算コードを含む命令コードに対応する命令バッファ番号が設定され、前記演算コードを含む２回目以降の前記命令コードの各再利用フラグが設定され、前記設定された再利用フラグと命令バッファ番号と更新フラグの組み合わせをコード化したフラグコードが生成されて各命令コードのフラグコード領域に書き込まれ、前記２回目以降の連続する２つの命令コード毎に下位ビット群が統合された圧縮命令コードとを、順番に読み出して命令デコーダに与える命令フェッチ回路であって、
メモリから読み出した前記基本命令コードまたは圧縮命令コードを保持する命令レジスタと、
選択信号に従って前記命令レジスタの上位ビット群または下位ビット群を選択し、前記命令コードの下位ビット群として前記命令デコーダに与える第１のセレクタと、
前記第１のセレクタで選択された下位ビット群のフラグコード領域をデコードして前記再利用フラグと複数の命令バッファ番号と更新フラグを出力するデコーダと、
前記更新フラグがセットされているときに、前記命令レジスタから出力される演算コードを含む上位ビット群を前記命令バッファ番号に従って保持する複数の命令バッファと、
前記命令バッファ番号に基づいて前記複数の命令バッファの内容を選択して出力する第２のセレクタと、
前記再利用フラグがセットされているときには前記第２のセレクタの出力を選択し、該再利用フラグがセットされていないときには前記命令レジスタの上位ビット群を選択して前記命令コードの上位ビット群として前記命令デコーダに与える第３のセレクタと、
前記再利用フラグがセットされているときに、前記命令レジスタの上位ビット群と下位ビット群を交互に選択するための前記選択信号を生成する選択信号生成手段とを、
備えたことを特徴とする命令フェッチ回路。
【請求項１２】
命令コード毎に再利用フラグと更新フラグと複数のセット番号の組み合わせをコード化したフラグコード領域を設け、一連の命令コードの内に同一の演算コードまたはオペランドの組み合わせパターンを含む命令コードが複数個存在するときに、前記同一の組み合わせパターンを含む１回目の命令コードに対して、その更新フラグを設定すると共に該組み合わせパターンに対応するセット番号を設定し、該設定した更新フラグとセット番号をコード化したフラグコードを生成してフラグコード領域に書き込み、前記組み合わせパターンを含む２回目以降の前記命令コードに対して、各再利用フラグを設定すると共に該組み合わせパターンに対応するセット番号を設定し、該設定した再利用フラグとセット番号をコード化したフラグコードを生成して各命令コードのフラグコード領域に書き込み、前記２回目以降の連続する２つの命令コード毎に前記組み合わせパターンを除くオペランドとフラグコードを統合して圧縮命令コードに置き代えた命令コードを順番に読み出して命令デコーダに与える命令フェッチ回路であって、
メモリから読み出した前記命令コードを保持する命令レジスタと、
前記命令レジスタに保持された命令コードのフラグコード領域をデコードして前記再利用フラグと複数のセット番号と更新フラグを出力するデコーダと、
前記更新フラグがセットされているときに、前記命令レジスタから出力される命令コードを前記セット番号に応じた組み合わせパターンに従って保持する複数の命令バッファと、
前記セット番号に基づいて前記複数の命令バッファの内容を選択して出力する第２のセレクタと、
前記再利用フラグがセットされているときには前記第２のセレクタの出力を選択し、該再利用フラグがセットされていないときには前記命令レジスタを選択して前記命令コードを前記命令デコーダに与える第３のセレクタと、
前記再利用フラグがセットされているときに、前記命令レジスタの上位ビット群と下位ビット群を交互に選択するための前記選択信号を生成する選択信号生成手段とを、
備えたことを特徴とする命令フェッチ回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータにおける命令コード圧縮方法と、その圧縮された命令コードを読み出して命令デコーダ等に与える命令フェッチ回路に関するものである。
【背景技術】
【０００２】
近年のシステムでは、ソフトウエアの規模が増大してきており、ソフトウエアを格納するメモリの面積が、ＣＰＵ（中央処理装置）よりも大きい場合が多い。このような状況下では、ＣＰＵの消費電力を抑えることに加えて、メモリの消費電力を減らすことが重要になる。特に命令コードを格納したメモリに対するアクセスは、アプリケーション・プログラムの実行中、常に発生するため、アクセス回数を削減することが望まれている。
【０００３】
従来のＣＰＵでは、メモリからフェッチした命令コードは、そのまま命令デコーダで解読されるか、若しくは命令レジスタに一旦格納された後で命令デコーダによって解読されて実行されるのが一般的である。このように、一度使用された命令レジスタ上の命令コードは、常に次の命令コードで上書きされるため、メモリから新しい命令コードを読み出す必要があり、メモリへのアクセスによる消費電力を減らすことができない。また、メモリのサイズが大きくなるほど、１回のアクセスに必要な消費電力も大きくなるので、ソフトウエアのサイズが大きくなることも問題となる。
【０００４】
下記特許文献１には、ＲＩＳＣ（縮小命令セット・コンピュータ）用の命令コードの命令実行条件指定部において、“常に実行”という条件コード部を共通化することによりプログラムコードを圧縮してメモリに格納しておき、実行時にはメモリから圧縮したプログラムコードを読み出して展開するプログラムコード圧縮／解凍方法が記載されている。
【０００５】
【特許文献１】特開２００４−２５９２３４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、前記特許文献１のプログラムコード圧縮／解凍方法では、プログラムコードを圧縮して必要なメモリの容量を削減することができるものの、これを読み出して元の命令コードに展開するときに、圧縮されたプログラムコードの一つのブロック毎に、先頭の命令を読み出すときにアクセス回数が1回分多くなるため、読み出しのための実行時間と消費電力が増加するという課題があった。また、プログラムコードの圧縮も、上位４ビットのみを対象にしているため、メモリ容量は最大でも１０％程度しか削減できないという課題があった。
【０００７】
本発明は、フェッチ回数とプログラムコードを共に削減することが可能な、命令コード圧縮方法と命令フェッチ回路を提供することを目的としている。
【課題を解決するための手段】
【０００８】
本発明の内の請求項１の発明は、演算コードを含む上位ビット群と、オペランドを含み該上位ビット群と同じビット数の下位ビット群とで構成される命令コードを順番に解読して実行する演算回路を有するコンピュータにおいて命令コードの読み出し回数を削減するための命令コード圧縮方法であって、前記下位ビット群に再利用フラグを設け、一連の命令コードの内で前記上位ビット群が同一である命令コードが２Ｎ＋１（但し、Ｎは１以上の整数）個連続するときに、該連続する命令コードの内の２ｎ（但し、ｎは１以上でＮ以下の整数）番目の命令コードと２ｎ＋１番目の命令コードの下位ビット群の各再利用フラグをセットすると共に、これらの２ｎ番目と２ｎ＋１番目の命令コードの下位ビット群を統合して１つの圧縮命令コードに置き代えることを特徴としている。
【０００９】
請求項７の発明は、このような命令コードを順番に読み出して命令デコーダに与える命令フェッチ回路であって、メモリから読み出した前記基本命令コードまたは圧縮命令コードを保持する命令レジスタと、選択信号に従って前記命令レジスタの上位ビット群または下位ビット群を選択し、前記命令コードの下位ビット群として前記命令デコーダに与える第１のセレクタと、前記命令レジスタの上位ビット群を保持する命令バッファと、前記第１のセレクタで選択されて前記命令デコーダに与えられる下位ビット群の再利用フラグがセットされているときには前記命令バッファの内容を選択し、該再利用フラグがセットされていないときには前記命令レジスタの上位ビット群を選択して前記命令コードの上位ビット群として前記命令デコーダに与える第２のセレクタと、前記第１のセレクタで選択されて前記命令デコーダに与えられる下位ビット群の再利用フラグがセットされているときに、前記命令レジスタの上位ビット群と下位ビット群を交互に選択するための前記選択信号を生成する選択信号生成手段とを備えたことを特徴としている。
【００１０】
また、請求項２〜５，８〜１１の発明では、一度使用した演算コード等を保持しておく命令バッファ等を増加すること等により、プログラムサイズと命令フェッチ回数を削減するための工夫を行っている。また、請求項６，１２の発明では、一度使用した演算コード等を保持しておく命令バッファ等を追加するだけでなく、オペランド等の配置変更を行うことにより、更に、プログラムサイズと命令フェッチ回数を削減するための工夫を行っている。
【発明の効果】
【００１１】
本発明では、命令コードの一部に再利用フラグを設け、同じ演算コード等が連続する場合に、この再利用フラグをセットすることにより、その演算コード等を省略して２つの命令コードを１つの圧縮命令コードに置き代えるようにしている。これにより、一連のプログラムを構成する命令コード数を削減することが可能になる。また、命令フェッチ回路では、前の命令コードの演算コード等を保持する命令バッファを設け、次の命令コードの再利用フラグがセットされていれば、命令バッファの内容を再利用することにより、元の命令コードを再現することが可能になる。従って、メモリに格納しておくプログラムコードのサイズを小さくすることができると共に、このメモリから読み出す命令コードのフェッチ回数を削減することができるという効果がある。
【発明を実施するための最良の形態】
【００１２】
この発明の前記並びにその他の目的と新規な特徴は、次の好ましい実施例の説明を添付図面と照らし合わせて読むと、より完全に明らかになるであろう。但し、図面は、もっぱら解説のためのものであって、この発明の範囲を限定するものではない。
【実施例１】
【００１３】
図１は、本発明の実施例１を示す命令コード形式の説明図である。
図１（ａ）に示すように、この実施例１の命令コードは、基本形式１と圧縮形式２の基本命令コードで構成されている。
【００１４】
基本形式１は、一般的なＲＩＳＣ用の命令コードに準ずるもので、３２ビットの１ワードで１つの命令を構成している。３２ビットの内の上位１６ビットは、８ビットが演算コードＯＰＣＯＤＥに、残り８ビットがオペランドＯＰＲ１等に割り当てられている。また、下位１６ビットの内の最下位ビットが再利用フラグＲに割り当てられ、残りの１５ビットがオペランドＯＰＲ２等に割り当てられている。
【００１５】
再利用フラグＲは、その命令コードの上位１６ビットの内容として、その前の命令コードの上位１６ビットを再利用するか否か、即ち、前の命令コードの上位１６ビットと同じであるか否かを示すものである。再利用フラグＲが“０”のときは利用をしないことを示し、この再利用フラグＲが“１”のときは利用をすることを示している。基本形式１の場合、再利用フラグＲは“０”である。
【００１６】
一方、圧縮形式２は、上位ビット群の１６ビットと下位ビット群の１６ビットが、それぞれ最下位ビットの再利用フラグＲと、残り１５ビットのオペランドＯＰＲ２等に割り当てられている。圧縮形式２の場合、その前の命令コードの上位１６ビットを再利用するので、上位ビット群及び下位ビット群の再利用フラグＲは、共に“１”である。
【００１７】
図１（ｂ）〜（ｄ）は、図１（ａ）の基本命令コードによる命令コードの圧縮例を示しており、それぞれ左側には、ニーモニック・コードで表現した圧縮前のアセンブラレベルの命令コードを示し、右側には圧縮後の命令コードを示している。
【００１８】
図１（ｂ）の例１では、上位１６ビットが同じである命令ａｄｄが３個連続している。従って、２番目と３番目の命令ａｄｄでは、１番目の命令ａｄｄの上位１６ビットをそのまま利用することができるので、それらの再利用フラグＲを“１”に設定して、上位１６ビットを削除している。
【００１９】
これにより、圧縮後の１番目の命令コードは、１番目の命令ａｄｄに対応する命令コードで、再利用フラグＲを“０”に設定した３２ビットの基本形式１が使用される。圧縮後の２番目の命令コードは、圧縮前の２番目の命令コードの下位１６ビットに対応するものと、圧縮前の３番目の命令コードの下位１６ビットに対応するものを合わせた３２ビットの圧縮形式２が使用される。圧縮形式２における下位１６ビットは、圧縮前の２番目の命令コードの下位１６ビットであり、この圧縮形式２における上位１６ビットは、圧縮前の３番目の命令コードの下位１６ビットに対応するものである。この結果、３個の命令コードを２個に圧縮することができる。
【００２０】
図１（ｃ）の例２では、上位１６ビットが同じである命令ａｄｄが４個連続している。この場合、２番目〜４番目の命令ａｄｄで、１番目の命令ａｄｄの上位１６ビットをそのまま利用することができるのであるが、２命令単位で圧縮を行っているので、４番目の命令と対になる命令が存在しない。このため、２番目と３番目の命令ａｄｄは、例１と同様に、圧縮形式２の命令コードに圧縮することができるが、４番目の命令ａｄｄは、１番目の命令と同様に、基本形式１となる。この結果、４個の命令コードを３個に圧縮することができる。
【００２１】
図１（ｄ）の例３では、上位１６ビットが同じである命令ａｄｄが５個連続している。この場合、２番目〜５番目の命令で、１番目の命令ａｄｄの上位１６ビットをそのまま利用することができる。これにより、２番目と３番目の命令、及び４番目と５番目の命令を、それぞれ圧縮形式２の命令コードに圧縮することができる。この結果、５個の命令コードを３個に圧縮することができる。
【００２２】
以上、上位１６ビットが同じ命令が３個〜５個連続している場合の圧縮方法を説明したが、この圧縮方法は、一連の命令コードの内で上位ビット群（１６ビットに限定しない）が同一である命令コードが２Ｎ＋１（但し、Ｎは１以上の整数）個連続するときにも、同様に適用することができる。その場合、上位ビット群と同じビット数で構成される下位ビット群に再利用フラグＲを設け、連続する命令コードの内の２ｎ（但し、ｎは１以上でＮ以下の整数）番目の命令コードと２ｎ＋１番目の命令コードの下位ビット群の各再利用フラグＲを“１”にセットし、これらの２ｎ番目と２ｎ＋１番目の命令コードの下位ビット群を統合して１つの圧縮形式２に置き代えれば良い。なお、１番目の命令コードは、再利用フラグＲを“０”にセットした基本形式１とする。
【００２３】
図２は、図１の命令コードに対応する命令フェッチ回路の構成図である。
この命令フェッチ回路１０は、図１の圧縮方法で圧縮されてメモリ１に格納された命令コードを読み出し、圧縮形式２の命令コードを基本形式１の命令コードに戻して、命令デコーダ・演算回路２に与えるための回路である。
【００２４】
この命令フェッチ回路１０は、プログラムカウンタ１１に設定される読み出しアドレスに従って、メモリ１から命令コードを読み出すメモリ制御部１２を有している。このメモリ制御部１２は、命令デコーダ・演算回路２から次の命令読み出しを指示するタイミング信号ＮＸＴが与えられたときに、読み出し禁止信号ＩＮＨが与えられてなければ、プログラムカウンタ１１に設定された読み出しアドレスを読み出すものである。タイミング信号ＮＸＴが与えられたときに、読み出し禁止信号ＩＮＨが与えられていると、メモリ制御部１２の読み出し動作は行われない。
【００２５】
メモリ１から読み出された命令コードは、命令レジスタ１３に与えられている。命令レジスタ１３は、３２ビットの命令コードを格納するもので、格納された上位と下位の各１６ビットは、セレクタ１４の入力端子１，０にそれぞれ与えられるようになっている。セレクタ１４は、選択信号ＳＥＬが論理値“０”のときに入力端子０を選択し、選択信号ＳＥＬが論理値“１”のときには入力端子１を選択して、選択した入力端子の信号を出力するものである。
【００２６】
セレクタ１４の出力信号は、そのまま命令コードの下位１６ビット（ｂ１５〜ｂ０）として、命令デコーダ・演算回路２に与えられている。また、セレクタ１４から出力される最下位ビットｂ０は、再利用フラグＲとして、排他的論理和ゲート（以下、「ＥＸＯＲ」という）１５の一方の入力側に与えられている。ＥＸＯＲ１５の出力側からは、読み出し禁止信号ＩＮＨが出力され、この読み出し禁止信号ＩＮＨがメモリ制御部１２に与えられると共に、フリップフロップ（以下、「ＦＦ」という）１６のデータ端子Ｄに与えられている。
【００２７】
ＦＦ１６は、命令デコーダ・演算回路２からクロック端子Ｃに与えられるタイミング信号ＮＸＴの立ち上がりに従って読み出し禁止信号ＩＮＨを保持し、保持した内容を選択信号ＳＥＬとして出力するものである。選択信号ＳＥＬは、セレクタ１４に与えられると共に、ＥＸＯＲ１５の他方の入力側に与えられている。このＥＸＯＲ１５とＦＦ１６のループ回路により、再利用フラグＲが“１”のとき、タイミング信号ＮＸＴの立ち上がり毎に、選択信号ＳＥＬが交互に“０”，“１”に切り替わるトグル動作が行われるようになっている。
【００２８】
命令レジスタ１３に格納された上位の１６ビットは、更にセレクタ１７の入力端子０に与えられるようになっている。セレクタ１７は、再利用フラグＲが“０”のときに入力端子０を選択し、この再利用フラグＲが“１”のときには入力端子１を選択して、選択した入力端子の信号を出力するものである。セレクタ１７の出力信号は、命令バッファ１８に書き込まれると共に、セレクタ１９の入力端子０に与えられている。
【００２９】
命令バッファ１８の出力信号は、セレクタ１７の入力端子１に与えられると共に、セレクタ１９の入力端子１に与えられている。セレクタ１９は、再利用フラグＲが“０”のときに入力端子０を選択し、この再利用フラグＲが“１”のときには入力端子１を選択して、選択した入力端子の信号を出力するものである。セレクタ１９の出力信号は、命令コードの上位１６ビット（ｂ３１〜ｂ１６）として、命令デコーダ・演算回路２に与えられている。
【００３０】
図３は、図２の動作説明図であり、図１（ｂ）の例１によって圧縮された命令コードをメモリ１からフェッチして、命令デコーダ・演算回路２に与える動作を示している。以下、この図３を参照しつつ、図２の動作を説明する。
【００３１】
（１）  １サイクル目の動作
最初、図示しないリセット信号によって、命令レジスタ１３やＦＦ１６はリセットされており、選択信号ＳＥＬは“０”となっている。また、セレクタ１４から出力されるビットｂ０（再利用フラグＲ）も“０”であり、ＥＸＯＲ１５から出力される読み出し禁止信号ＩＮＨも“０”である。
【００３２】
ここで、命令デコーダ・演算回路２からタイミング信号ＮＸＴが与えられると、メモリ制御部１２によって、１番目の基本形式１の命令コードがメモリ１からフェッチされる。フェッチされた命令コードは、命令レジスタ１３に格納される。
【００３３】
このとき、選択信号ＳＥＬが“０”となっているので、セレクタ１４では、命令レジスタ１３の下位１６ビットが選択され、命令コードの下位ビットｂ１５〜ｂ０として命令デコーダ・演算回路２に出力される。また、セレクタ１４で選択された下位ビットの内の最下位ビットｂ０は、再利用フラグＲとしてＥＸＯＲ１５とセレクタ１７，１９に与えられる。ここで、再利用フラグＲは“０”であるので、ＥＸＯＲ１５から出力される読み出し禁止信号ＩＮＨは変化せず、“０”である。
【００３４】
セレクタ１７では、命令レジスタ１３の上位１６ビットが選択され、命令バッファ１８に書き込まれる。また、セレクタ１９では、セレクタ１７の出力信号が選択され、命令コードの上位ビットｂ３１〜ｂ１６として命令デコーダ・演算回路２に出力される。
【００３５】
これにより、命令レジスタ１３に格納された１番目の基本形式１の命令コードが、命令デコーダ・演算回路２に出力されることになる。命令デコーダ・演算回路２では、１番目の基本形式１の命令コードが解読されて実行される。実行終了後、命令デコーダ・演算回路２から次の命令コードを要求するためのタイミング信号ＮＸＴが出力される。
【００３６】
（２）  ２サイクル目の動作
読み出し禁止信号ＩＮＨが０”であるので、メモリ制御部１２はタイミング信号ＮＸＴに従って、２番目の圧縮形式２の命令コードをメモリ１からフェッチする。フェッチされた命令コードは、命令レジスタ１３に格納される。
【００３７】
このとき、選択信号ＳＥＬが“０”となっているので、セレクタ１４では、命令レジスタ１３の下位１６ビットが選択され、命令コードの下位ビットｂ１５〜ｂ０として命令デコーダ・演算回路２に出力される。また、セレクタ１４で選択された下位ビットの内の最下位ビットｂ０は、再利用フラグＲとしてＥＸＯＲ１５とセレクタ１７，１９に与えられる。
【００３８】
このとき、圧縮形式２の命令コードでは、再利用フラグＲが“１”となっているので、ＥＸＯＲ１５から出力される読み出し禁止信号ＩＮＨは、“１”となる。また、セレクタ１７では、命令バッファ１８の出力信号が選択され、命令バッファ１８に書き込まれる。更に、セレクタ１９では、命令バッファ１８の出力信号が選択される。
【００３９】
命令バッファ１８には、１サイクル目で読み出された１番目の基本形式１の命令コードの上位１６ビットが保持されており、この命令バッファ１８の内容が、命令コードの上位ビットｂ３１〜ｂ１６として命令デコーダ・演算回路２に出力される。
【００４０】
これにより、命令バッファ１８に保持された１番目の基本形式１の命令コードの上位１６ビットと、命令レジスタ１３に格納された圧縮形式２の命令コードの下位１６ビットが、基本形式の命令コードとして命令デコーダ・演算回路２に出力されることになる。命令デコーダ・演算回路２では、命令フェッチ回路１０から与えられた基本形式の命令コードが解読されて実行される。実行終了後、命令デコーダ・演算回路２から次の命令コードを要求するためのタイミング信号ＮＸＴが出力される。
【００４１】
（３）  ３サイクル目の動作
２サイクル目の圧縮形式２の命令コードの読み出しにより、読み出し禁止信号ＩＮＨが“１”となっているので、メモリ制御部１２はタイミング信号ＮＸＴが与えられてもメモリ１からのフェッチは行わない。従って、命令レジスタ１３の内容は変化しない。一方、タイミング信号ＮＸＴの立ち上がりのタイミングで、読み出し禁止信号ＩＮＨがＦＦ１６に保持され、選択信号ＳＥＬは“１”となる。
【００４２】
これにより、セレクタ１４では、命令レジスタ１３の上位１６ビットが選択され、命令コードの下位ビットｂ１５〜ｂ０として命令デコーダ・演算回路２に出力される。また、セレクタ１４で選択された上位ビットの内の最下位ビットｂ０は、再利用フラグＲとしてＥＸＯＲ１５とセレクタ１７，１９に与えられる。
【００４３】
このとき、圧縮形式２の命令コードでは、再利用フラグＲが“１”となっているので、ＥＸＯＲ１５から出力される読み出し禁止信号ＩＮＨは、“０”となる。また、セレクタ１７では、命令バッファ１８の出力信号が選択され、命令バッファ１８に書き込まれる。更に、セレクタ１９では、命令バッファ１８の出力信号が選択される。
【００４４】
命令バッファ１８には、１サイクル目で読み出された１番目の基本形式１の命令コードの上位１６ビットが保持されており、この命令バッファ１８の内容が、命令コードの上位ビットｂ３１〜ｂ１６として命令デコーダ・演算回路２に出力される。
【００４５】
これにより、命令バッファ１８に保持された１番目の基本形式１の命令コードの上位１６ビットと、命令レジスタ１３に格納された圧縮形式２の命令コードの上位１６ビットが、基本形式の命令コードとして命令デコーダ・演算回路２に出力されることになる。命令デコーダ・演算回路２では、命令フェッチ回路１０から与えられた基本形式の命令コードが解読されて実行される。実行終了後、命令デコーダ・演算回路２から次の命令コードを要求するためのタイミング信号ＮＸＴが出力される。
【００４６】
この時点では、読み出し禁止信号ＩＮＨは“０”となっているので、メモリ制御部１２によるメモリ１からの３回目の読み出し動作が行われ、フェッチされた命令コードが命令レジスタ１３に格納される。
【００４７】
ここで、３回目にフェッチされた命令コードが、図１（ｃ）の例２に示すように基本形式であれば上記（１）の動作が行われ、図１（ｄ）の例３に示すように圧縮形式であれば上記（２），（３）の動作が繰り返される。
【００４８】
以上のように、この実施例１の命令コード形式は、上位１６ビットが同じである命令コードが３個以上連続した場合に、２番目以降の連続する命令コードの下位１６ビットを２個単位にまとめて１つの圧縮形式に統合している。これにより、メモリ１に格納するプログラムコードが削減できると共に、このプログラムコードを読み出すためのフェッチ回数も削減することができるという利点がある。
【実施例２】
【００４９】
図４は、本発明の実施例２を示す命令コード形式の説明図であり、同図（ａ）は基本命令コードを、同図（ｂ）は圧縮例を示している。なお、この図４において、図１中の要素と共通の要素には共通の符号が付されている。
【００５０】
実施例１の命令コード形式は、上位１６ビットが同じである命令ａｄｄが３個以上連続する場合を対象としているが、図４（ｂ）の圧縮前の命令コードでは、上位１６ビットが同じである命令ａｄｄが３個存在するが、１番目の命令ａｄｄと、３番目及び４番目の連続する命令ａｄｄの間に、異なる命令ｌｄが存在している。このため、実施例１の命令コード形式を採用することはできない。この実施例２は、このような場合でも、３番目及び４番目の連続する命令ａｄｄの圧縮を可能にするものである。
【００５１】
図４（ａ）に示すように、この実施例２命令コードは、基本形式１Ａと圧縮形式２Ａの基本命令コードで構成されている。
【００５２】
基本形式１Ａは、３２ビットの１ワードで１つの命令を構成し、３２ビットの内の上位１６ビットは、８ビットが演算コードＯＰＣＯＤＥに、残り８ビットがオペランドＯＰＲ１等に割り当てられている。また、下位１６ビットの内の下位の２ビットが再利用フラグＲと更新フラグＵに割り当てられ、残りの１４ビットがオペランドＯＰＲ２等に割り当てられている。
【００５３】
再利用フラグＲは、実施例１の再利用フラグＲとほぼ同様の目的で使用するものである。即ち、その命令コードの上位１６ビットの内容として、それ以前に実行した命令コードの上位１６ビットを再利用するか否か、即ち、以前の命令コードの上位１６ビットと同じであるか否かを示すものである。再利用フラグＲが“０”のときは利用をしないことを示し、この再利用フラグＲが“１”のときは利用をすることを示している。基本形式１Ａの場合、再利用フラグＲは“０”である。
【００５４】
また、更新フラグＵは、その命令コードの上位１６ビットの内容を、後から実行する圧縮形式２Ａの命令コードの上位１６ビットとして利用するために、保存しておくか否かを示すものである。更新フラグＵが“１”のときは、保存しておく必要があることを指定し、この更新フラグＵが“０”のときは、保存しておく必要がないことを指定している。
【００５５】
一方、圧縮形式２Ａは、上位ビット群の１６ビットと下位ビット群の１６ビットが、それぞれ再利用フラグＲ及び更新フラグＵと、残り１４ビットのオペランドＯＰＲ２等に割り当てられている。圧縮形式２Ａの場合、それ以前の命令コードの上位１６ビットを再利用するので、上位ビット群及び下位ビット群の再利用フラグＲは、共に“１”である。また、更新フラグＵは“０”である。
【００５６】
図４（ａ）の基本命令コードによる命令コードの圧縮方法の一例は、図４（ｂ）に示されているように、１番目の命令ａｄｄのように、その命令コードの上位１６ビットの内容を後で再利用する予定がある場合には、保存しておくための更新フラグＵを“１”にセットする。一方、２番目の命令ｌｄのように、その命令コードの上位１６ビットの内容を後で再利用する予定がない場合には、保存する必要がないので更新フラグＵを“０”にセットする。なお、これらの命令コードの再利用フラグＲは、共に“０”である。
【００５７】
３番目と４番目の命令ａｄｄは、１番目の命令ａｄｄの命令コードの上位１６ビットの内容を再利用するので、再利用フラグＲは共に“１”である。そして、圧縮前の３番目の命令コードの下位１６ビットに対応するものと、圧縮前の４番目の命令コードの下位１６ビットに対応するものを合わせた３２ビットの圧縮形式２Ａが使用される。圧縮形式２Ａにおける下位１６ビットは、圧縮前の３番目の命令コードの下位１６ビットであり、この圧縮形式２Ａにおける上位１６ビットは、圧縮前の４番目の命令コードの下位１６ビットに対応するものである。この結果、４個の命令コードを３個に圧縮することができる。
【００５８】
図５は、図４の命令コードに対応する命令フェッチ回路の構成図であり、図２中の要素と共通の要素には共通の符号が付されている。
【００５９】
この命令フェッチ回路１０Ａは、図４の圧縮方法で圧縮されてメモリ１に格納された命令コードを読み出し、圧縮形式２Ａの命令コードを基本形式１Ａの命令コードに戻して、命令デコーダ・演算回路２に与えるための回路である。
【００６０】
この命令フェッチ回路１０Ａでは、図２の命令フェッチ回路１０における命令バッファ１８に代えて、セレクタ１４で選択された下位１６ビットの内の更新フラグＵ（ビットｂ１）によって、信号を保持するか否かが制御される命令バッファ１８Ａを用いたことである。即ち、更新フラグＵが“１”のとき、セレクタ１７の出力信号が命令バッファ１８Ａに保持され、この命令バッファ１８Ａの保持内容が更新される。また、更新フラグＵが“０”のときは、セレクタ１７の出力信号が命令バッファ１８Ａに保持されない。従って、命令バッファ１８Ａの保持内容は更新されない。その他の構成は、図２と同様である。
【００６１】
次に、この命令フェッチ回路１０Ａによる、図４（ｂ）の圧縮後の命令コードのフェッチ動作を説明する。
【００６２】
１サイクル目のフェッチで読み出された１番目の基本形式１Ａの命令ａｄｄは、命令レジスタ１３に格納される。この命令ａｄｄの再利用フラグＲは“０”であるので、命令レジスタ１３に格納された命令ａｄｄの下位１６ビットは、セレクタ１４で選択されて命令デコーダ・演算回路２に与えられる。また、命令レジスタ１３に格納された命令ａｄｄの上位１６ビットは、セレクタ１７，１９で選択されて命令デコーダ・演算回路２に与えられる。このとき、この命令ａｄｄの更新フラグＵは“１”であるので、命令レジスタ１３に格納された命令ａｄｄの上位１６ビットは、命令バッファ１８Ａに格納される。
【００６３】
２サイクル目のフェッチで読み出された２番目の基本形式１Ａの命令ｌｄは、命令レジスタ１３に格納される。この命令ｌｄの再利用フラグＲは“０”であるので、１番目の命令ａｄｄと同様に、命令デコーダ・演算回路２に与えられる。このとき、この命令ｌｄの更新フラグＵは“０”であるので、命令レジスタ１３の内容は更新されない。即ち、命令バッファ１８Ａには、１番目の命令ａｄｄの上位１６ビットが格納されている。
【００６４】
３サイクル目のフェッチで読み出された３番目の圧縮形式２Ａの命令コードは、命令レジスタ１３に格納される。この命令コードの再利用フラグＲは“１”であるので、読み出し禁止信号ＩＮＨが“１”となる。また、セレクタ１９によって命令バッファ１８Ａの出力信号が選択され、この命令バッファ１８Ａに格納された１番目の命令ａｄｄの上位１６ビットが、３番目の圧縮形式２Ａの命令コードの下位１６ビットと共に、命令デコーダ・演算回路２に与えられる。
【００６５】
４サイクル目のフェッチでは、読み出し禁止信号ＩＮＨが“１”となっているので、メモリ制御部１２によるメモリ１からの読み出し動作は行われない。代わりに、セレクタ１４によって、命令レジスタ１３の上位１６ビットが選択され、命令バッファ１８Ａに格納された１番目の命令ａｄｄの上位１６ビットと共に、命令デコーダ・演算回路２に与えられる。
【００６６】
以上のように、この実施例２の命令コード形式は、上位１６ビットが同じである命令コードが３個以上存在する場合に、１番目の命令コードの更新フラグＵをセットすることにより、その上位１６ビットを命令バッファ１８Ａに保持させるようにしておき、２番目以降の連続する命令コードの下位１６ビットを２個単位にまとめて１つの圧縮形式に統合している。これにより、連続する同一の命令コードの間に異なる命令コードが存在する場合でも、メモリ１に格納するプログラムコードとこのプログラムコードを読み出すためのフェッチ回数を削減することができるという利点がある。
【実施例３】
【００６７】
図６は、本発明の実施例３を示す命令コード形式の説明図であり、同図（ａ）は基本命令コードを、同図（ｂ）は圧縮前の命令コードの例を、同図（ｃ）は圧縮後の命令コードの例を示している。なお、この図６において、図１中の要素と共通の要素には共通の符号が付されている。
【００６８】
実施例１の命令コード形式は、上位１６ビットが同じである１種類の命令ａｄｄが３個以上連続する場合を対象としているが、図６（ｂ）の圧縮前の命令コードでは、上位１６ビットが同じである２種類の命令ｌｄと命令ａｄｄの２種類の命令が複数個存在するが、同じ種類の命令が連続していない。このため、実施例１の命令コード形式を採用することはできない。この実施例３は、このような場合でも、２回目以降の命令の圧縮を可能にするものである。
【００６９】
図６（ａ）に示すように、この実施例３の命令コードは、基本形式１Ｂと圧縮形式２Ｂの基本命令コードで構成されている。基本形式１Ｂは、３２ビットの１ワードで１つの命令を構成し、この３２ビットの内の上位１６ビットは、８ビットが演算コードＯＰＣＯＤＥに、残り８ビットがオペランドＯＰＲ１等に割り当てられている。また、下位１６ビットの内の下位の２ビットが再利用フラグＲとバッファ番号Ｂに割り当てられ、残りの１４ビットがオペランドＯＰＲ２等に割り当てられている。
【００７０】
再利用フラグＲは、実施例１及び実施例２の再利用フラグＲと同じものである。
また、バッファ番号Ｂは、その命令コードの上位１６ビットの内容を、後から実行する圧縮形式２Ａの命令コードの上位１６ビットとして利用するために、保存しておく命令バッファの番号を指定するものである。即ち、実施例１，２では、命令バッファを１つだけ設けていたが、この実施例３では、複数（この場合は２個）の命令バッファを設けることを前提としている。
【００７１】
一方、圧縮形式２Ｂは、上位ビット群の１６ビットと下位ビット群の１６ビットが、それぞれ下位の再利用フラグＲ及びバッファ番号Ｂと、残り１４ビットのオペランドＯＰＲ２等に割り当てられている。この圧縮形式２Ｂの場合、それ以前の命令コードの上位１６ビットを再利用するので、上位ビット群及び下位ビット群の再利用フラグＲは、共に“１”である。また、バッファ番号Ｂは、再利用する上位１６ビットの命令コードが保存されている命令バッファの番号（０、または１）を示している。
【００７２】
図６の命令圧縮方法では、図６（ｂ）の圧縮前の命令コードの内、２番目の命令ｌｄの上位１６ビットを１番目の命令バッファに格納し、３番目の命令ａｄｄの上位１６ビットを２番目の命令バッファに格納することを前提としている。これにより、２番目の命令ｌｄのバッファ番号Ｂは“０”に、３番目の命令ａｄｄのバッファ番号Ｂは“１”に、それぞれ設定される。
【００７３】
４番目の命令ｌｄでは、１番目の命令バッファに格納された２番目の命令ｌｄの上位１６ビットを再利用するために、上位１６ビットを削除すると共に、バッファ番号Ｂを“０”、再利用フラグＲを“１”にセットする。また、５番目の命令ａｄｄでは、２番目の命令バッファに格納された３番目の命令ａｄｄの上位１６ビットを再利用するために、上位１６ビットを削除すると共に、バッファ番号Ｂを“１”、再利用フラグＲを“１”にセットする。そして、４番目と５番目の下位１６ビットを統合して１つの圧縮形式２Ｂの命令コードを生成する。
【００７４】
同様に、６番目と７番目の命令コードを統合して１つの圧縮形式２Ｂの命令コードを生成する。この例の場合、８命令コードが６命令コードに圧縮される。
【００７５】
図７は、図６の命令コードに対応する命令フェッチ回路の構成図であり、図２中の要素と共通の要素には共通の符号が付されている。
【００７６】
この命令フェッチ回路１０Ｂは、図６の圧縮方法で圧縮されてメモリ１に格納された命令コードを読み出し、圧縮形式２Ｂの命令コードを基本形式１Ｂの命令コードに戻して、命令デコーダ・演算回路２に与えるための回路である。
【００７７】
この命令フェッチ回路１０Ｂでは、図２の命令フェッチ回路１０におけるセレクタ１７と命令バッファ１８に代えて、２組のセレクタ１７ａ，１７ｂ及び命令バッファ１８ａ，１８ｂを設けると共に、これらの命令バッファ１８ａ，１８ｂの出力信号を選択するセレクタ２０を設けている。
【００７８】
命令レジスタ１３の上位１６ビットｂ３１〜ｂ１６は、セレクタ１７ａの入力端子０と、セレクタ１７ｂの入力端子１に接続されている。セレクタ１７ａ，１７ｂの出力端子は、それぞれ命令バッファ１８ａ，１８ｂの入力側に接続されている。命令バッファ１８ａの出力側は、セレクタ２０の入力端子０に接続されると共に、セレクタ１７ａの入力端子１に接続されている。また、命令バッファ１８ｂの出力側は、セレクタ２０の入力端子１に接続されると共に、セレクタ１７ｂの入力端子０に接続されている。
【００７９】
これらのセレクタ１７ａ，１７ｂ，２０は、セレクタ１４で選択された下位１６ビットの内のバッファ番号Ｂの値によって制御され、このセレクタ２０から出力される信号が、セレクタ１９の入力端子１に与えられるようになっている。その他の構成は、図５と同様である。
【００８０】
次に、この命令フェッチ回路１０Ｂによる、図６（ｃ）の圧縮後の命令コードのフェッチ動作を説明する。
【００８１】
１サイクル目のフェッチで読み出された１番目の基本形式１Ｂの命令ｌｄは、命令レジスタ１３に格納される。この命令ｌｄの再利用フラグＲは“０”であるので、命令レジスタ１３に格納された命令ｌｄの下位１６ビットは、セレクタ１４で選択されて命令デコーダ・演算回路２に与えられる。また、命令レジスタ１３に格納された命令ｌｄの上位１６ビットは、セレクタ１９で選択されて命令デコーダ・演算回路２に与えられる。
【００８２】
一方、この命令ｌｄのバッファ番号Ｂは“０”であるので、命令レジスタ１３に格納された命令ｌｄの上位１６ビットは、セレクタ１７ａで選択されて命令バッファ１８ａに格納される。これにより、命令バッファ１８ａの保持内容は、１番目の命令ｌｄの上位１６ビットとなる。また、命令バッファ１８ｂの保持内容は、セレクタ１７ｂで選択されて再格納される。
【００８３】
２サイクル目のフェッチで読み出された２番目の命令ｌｄも、再利用フラグＲとバッファ番号Ｂが“０”であるので、１サイクル目と同様の動作が行われる。
【００８４】
３サイクル目のフェッチで読み出された３番目の命令ａｄｄは、再利用フラグＲが“０”となっているので、そのまま、命令デコーダ・演算回路２に与えられる。但し、バッファ番号Ｂが“１”となっているので、この命令ａｄｄの上位１６ビットは、セレクタ１７ｂで選択されて命令バッファ１８ｂに格納される。このとき、命令レジスタ１８ａの内容は更新されない。これにより、命令レジスタ１８ａ，１８ｂには、２番目と３番目の命令コードの上位１６ビットがそれぞれ格納された状態となる。
【００８５】
４サイクル目のフェッチで読み出された４番目の圧縮形式２Ｂの命令コードは、命令レジスタ１３に格納される。この命令コードの再利用フラグＲは“１”であるので、読み出し禁止信号ＩＮＨが“１”となる。また、セレクタ１９によってセレクタ２０の出力信号が選択される。一方、セレクタ２０には、“０”のバッファ番号Ｂが選択信号として与えられているので、命令バッファ１８ａに格納された２番目の命令ｌｄの上位１６ビットが、セレクタ２０，１９を介して、３番目の圧縮形式２Ｂの命令コードの下位１６ビットと共に、命令デコーダ・演算回路２に与えられる。
【００８６】
５サイクル目のフェッチでは、読み出し禁止信号ＩＮＨが“１”となっているので、メモリ制御部１２によるメモリ１からの読み出し動作は行われない。代わりに、セレクタ１４によって、命令レジスタ１３の上位１６ビットが選択され、“１”のバッファ番号Ｂで指定される命令バッファ１８ｂに格納された３番目の命令ａｄｄの上位１６ビットと共に、命令デコーダ・演算回路２に与えられる。このとき、ＥＸＯＲ１５とＦＦ１６によるトグル動作により、読み出し禁止信号ＩＮＨは“０”となる。
【００８７】
６サイクル目のフェッチでは、５番目の圧縮形式２Ｂの命令コードが、命令レジスタ１３に格納され、同様の動作が繰り返される。
【００８８】
以上のように、この実施例３の命令コード形式は、複数（本例の場合は２個）の命令バッファの存在に対応して、その命令バッファを指定するためのバッファ番号Ｂを有している。これにより、上位１６ビットが同じである命令コードが複数種類存在する場合に、各種類に対応するバッファ番号Ｂをセットし、２番目以降の連続する２つの命令コードの下位１６ビットを２個単位にまとめて１つの圧縮形式に統合することができる。これにより、複数種類の命令コードが存在する場合でも、メモリ１に格納するプログラムコードとこのプログラムコードを読み出すためのフェッチ回数を削減することができるという利点がある。
【実施例４】
【００８９】
図８は、本発明の実施例４を示す命令コード形式の説明図であり、同図（ａ）は基本命令コードを、同図（ｂ）は命令コードの圧縮方法の一例を示している。なお、この図８において、図４及び図６中の要素と共通の要素には共通の符号が付されている。
【００９０】
この実施例４の命令コードは、図８（ａ）に示すように、基本形式１Ｃと圧縮形式２Ｃの基本命令コードで構成されている。基本形式１Ｃは、図４及び図６の基本形式１Ａ，１Ｂを合わせたもので、３２ビットの１ワードで１つの命令を構成し、この３２ビットの内の上位１６ビットは、８ビットが演算コードＯＰＣＯＤＥに、残り８ビットがオペランドＯＰＲ１等に割り当てられている。また、下位１６ビットの内の下位の３ビットが再利用フラグＲとバッファ番号Ｂと更新フラグＵに割り当てられ、残りの１３ビットがオペランドＯＰＲ２等に割り当てられている。
【００９１】
再利用フラグＲは、実施例１〜３の再利用フラグＲと同じものであり、更新フラグＵは実施例２の更新フラグＵと同じものであり、バッファ番号Ｂは実施例３のバッファ番号Ｂと同じものである。
【００９２】
一方、圧縮形式２Ｃは、上位ビット群の１６ビットと下位ビット群の１６ビットが、それぞれ下位の再利用フラグＲ、バッファ番号Ｂ及び更新フラグＵと、残り１３ビットのオペランドＯＰＲ２等に割り当てられている。圧縮形式２Ｃの場合、それ以前の命令コードの上位１６ビットを再利用するので、上位ビット群及び下位ビット群の再利用フラグＲは、共に“１”である。バッファ番号Ｂは、再利用する上位１６ビットの命令コードが保存されている命令バッファの番号（０、または１）を示している。また、更新フラグＵは“０”である。
【００９３】
図９は、図８の命令コードに対応する命令フェッチ回路の構成図であり、図７中の要素と共通の要素には共通の符号が付されている。
【００９４】
この命令フェッチ回路１０Ｃは、図８の圧縮方法で圧縮されてメモリ１に格納された命令コードを読み出し、圧縮形式２Ｃの命令コードを基本形式１Ｃの命令コードに戻して、命令デコーダ・演算回路２に与えるための回路である。
【００９５】
この命令フェッチ回路１０Ｃでは、図７の命令フェッチ回路１０Ｂにおける命令バッファ１８ａ，１８ｂに代えて、セレクタ１４で選択された下位１６ビットの内の更新フラグＵ（ビットｂ２）によって、入力信号を保持するか否かが制御される命令バッファ２１ａ，２１ｂを用いている。即ち、更新フラグＵが“１”のとき、セレクタ１７ａ，１７ｂの出力信号が、それぞれ命令バッファ２１ａ，２１ｂに保持され、これらの命令バッファ２１ａ，２１ｂの保持内容が更新される。また、更新フラグＵが“０”のとき、セレクタ１７ａ，１７ｂの出力信号は、命令バッファ２１ａ，２１ｂに保持されず、これらの命令バッファ２１ａ，２１ｂの保持内容は更新されない。その他の構成は、図７と同様である。
【００９６】
この命令フェッチ回路１０Ｃでは、図５の命令フェッチ回路１０Ａと図７の命令フェッチ回路１０Ｂの両方の機能を有する動作が行われる。
【００９７】
即ち、メモリ１からフェッチされて命令レジスタ１３に格納された命令コードが基本形式１Ｃの場合、その命令コードはそのまま命令デコーダ・演算回路２に出力されると共に、更新フラグＵが“１”であれば、バッファ番号Ｂで指定される命令バッファ（２１ａまたは２１ｂ）に、その上位１６ビットが保持される。
【００９８】
一方、メモリ１からフェッチされて命令レジスタ１３に格納された命令コードが圧縮形式２Ｃの場合には、最初に圧縮形式２Ｃの下位１６ビットがセレクタ１４で選択され、そのバッファ番号Ｂで指定される命令バッファ（２１ａまたは２１ｂ）に保持されている上位１６ビットと共に、命令デコーダ・演算回路２に出力される。次に、圧縮形式２Ｃの上位１６ビットがセレクタ１４で選択され、そのバッファ番号Ｂで指定される命令バッファ（２１ａまたは２１ｂ）に保持されている上位１６ビットと共に、命令デコーダ・演算回路２に出力される。その後、メモリ１から、次の命令コードがフェッチされる。
【００９９】
以上のように、この実施例４の命令コード形式は、実施例２と実施例３を組み合わせた形式となっているので、実施例２と実施例３の両方の利点を同時に有している。
【実施例５】
【０１００】
図１０は、本発明の実施例５を示す命令コード形式の説明図であり、同図（ａ）は基本命令コードを、同図（ｂ）はフラグコードの一例を、同図（ｃ）は命令コードの圧縮方法の一例を、それぞれ示している。なお、この図１０において、図８中の要素と共通の要素には共通の符号が付されている。
【０１０１】
この実施例５の命令コードは、図１０（ａ）に示すように、基本形式１Ｄと圧縮形式２Ｄの基本命令コードで構成されている。基本形式１Ｄは、図８の基本形式１Ｃにおける再利用フラグＲ、バッファ番号Ｂ及び更新フラグＵに代えて、３ビットのフラグコードＦＣを設けたものである。圧縮形式２Ｄも同様に、図８の圧縮形式２Ｃにおける再利用フラグＲ、バッファ番号Ｂ及び更新フラグＵに代えて、３ビットのフラグコードＦＣを設けたものである。
【０１０２】
フラグコードＦＣは、図１０（ｂ）に示すように、再利用フラグＲ、バッファ番号Ｂ及び更新フラグＵの組み合わせをコード化したものである。このコード化により、例えば３ビットのフラグコードＦＣで、３種類（この場合、“０”，“１”，“２”）のバッファ番号Ｂを選択することが可能になる。
【０１０３】
図１１は、図１０の命令コードに対応する命令フェッチ回路の構成図であり、図９中の要素と共通の要素には共通の符号が付されている。
【０１０４】
この命令フェッチ回路１０Ｄは、図８の圧縮方法で圧縮されてメモリ１に格納された命令コードを読み出し、圧縮形式２Ｄの命令コードを基本形式１Ｄの命令コードに戻して、命令デコーダ・演算回路２に与えるための回路である。
【０１０５】
この命令フェッチ回路１０Ｄでは、セレクタ１４で選択された下位１６ビット中のフラグコードＦＣ（ｂ２〜ｂ０）をデコードして、再利用フラグＲ、バッファ番号Ｂ及び更新フラグＵを出力するデコーダ２２を設けている。更に、この命令フェッチ回路１０Ｄは、３種類のバッファ番号Ｂに対応させるために、図９中のセレクタ１７ａ，１７ｂ，２０及び命令バッファ２１ａ，２１ｂに代えて、３組のセレクタ２３ａ，２３ｂ，２３ｃ及び命令バッファ２１ａ，２１ｂ，２１ｃと、セレクタ２４を設けている。
【０１０６】
セレクタ２３ａは、バッファ番号Ｂで“０”が指定されたときに、命令レジスタ１３の上位１６ビットを選択し、このバッファ番号Ｂで“０”以外が指定されたときには、命令バッファ２１ａの出力信号を選択するものである。命令バッファ２１ａは、更新フラグＵが“１”のときに、セレクタ２３ａの出力信号を保持するものである。セレクタ２３ｂは、バッファ番号Ｂで“１”が指定されたときに、命令レジスタ１３の上位１６ビットを選択し、このバッファ番号Ｂで“１”以外が指定されたときには、命令バッファ２１ｂの出力信号を選択するものである。命令バッファ２１ｂは、更新フラグＵが“１”のときに、セレクタ２３ｂの出力信号を保持するものである。セレクタ２３ｃは、バッファ番号Ｂで“２”が指定されたときに、命令レジスタ１３の上位１６ビットを選択し、このバッファ番号Ｂで“２”以外が指定されたときには、命令バッファ２１ｃの出力信号を選択するものである。命令バッファ２１ｃは、更新フラグＵが“１”のときに、セレクタ２３ｃの出力信号を保持するものである。
【０１０７】
セレクタ２４は、バッファ番号Ｂの値に応じて、命令バッファ２１ａ〜２１ｃの出力信号を選択するものである。セレクタ２４の出力信号は、セレクタ１９の入力端子１に与えられるようになっている。その他の構成は、図９と同様である。
【０１０８】
この命令フェッチ回路１０Ｄの動作は、命令レジスタ１３に格納された命令コードのフラグコードＦＣが、デコーダ２２でデコードされて再利用フラグＲ、バッファ番号Ｂ及び更新フラグＵが出力されることと、３種類のバッファ番号Ｂに対応して３個の命令バッファ２１ａ〜２１ｃにそれぞれ命令コードの上位１６ビットが保持されることが相違するだけで、その他の動作は図９の命令フェッチ回路１０Ｃと同様である。
【０１０９】
以上のように、この実施例５の命令コード形式は、再利用フラグＲ、バッファ番号Ｂ及び更新フラグＵの組み合わせをコード化したフラグコードＦＣを設けているので、少ないビット数で、多数の命令バッファに対応することが可能になる。これにより、命令バッファを増やすことが可能になり、実施例４以上に命令コードの圧縮率を増加することができるという利点がある。
【実施例６】
【０１１０】
図１２は、本発明の実施例６を示す命令コード形式の説明図であり、同図（ａ）は基本命令コードを示し、同図（ｂ）はフラグコードの一例を示している。
【０１１１】
この実施例６の命令コードは、図１２（ａ）に示すように、基本形式１Ｅと圧縮形式２Ｅの基本命令コードで構成されている。基本形式１Ｅは、８ビットの演算コードＯＰＣ、それぞれ４ビットのオペランドＯＰ０〜ＯＰ４、及び４ビットのフラグコードＦＣからなる３２ビットの命令コードである。
【０１１２】
圧縮形式２Ｅは、上位１６ビットと下位１６ビット中にそれぞれ４ビットのフラグコードＦＣを設け、残りの１２ビットに演算コードＯＰＣやオペランドＯＰ０〜ＯＰ４を、後述するセット番号に応じて配置したものである。この図１２（ａ）には、２種類の圧縮形式２Ｅを例示している。
【０１１３】
フラグコードＦＣは、図１２（ｂ）に示すように、再利用フラグＲとセット番号Ｓと更新フラグＵの組み合わせをコード化したものである。再利用フラグＲと更新フラグＵは、実施例５と同じである。一方、セット番号Ｓは、演算コードＯＰＣとオペランドＯＰ０〜ＯＰ４からなる１６ビットの組み合わせの種類を指定するものである。本例では、セット番号０を演算コードＯＰＣとオペランドＯＰ０，ＯＰ１の組み合わせとし、セット番号１を演算コードＯＰＣとオペランドＯＰ０，ＯＰ２の組み合わせとし、セット番号２をオペランドＯＰ０，ＰＯ１，ＯＰ２，ＯＰ４の組み合わせとしている。
【０１１４】
図１３は、図１２の命令コードの適用例を示す説明図である。
この図１３の例では、２番目と３番目の命令ｌｄｐｉの演算コードＯＰＣとオペランドＯＰ０，ＯＰ２が、１番目の命令ｌｄｐｉと同一であるので、これらを削除する。また、６番目の命令ｍｕｌｂのオペランドＯＰ０，ＯＰ１，ＯＰ２，ＯＰ４が、４番目の命令ｍｕｌｔと同じであるので、これらを削除する。更に、７番目の命令ｓｔｐｉの演算コードＯＰＣとオペランドＯＰ０，ＯＰ１が、５番目の命令ｓｔｐｉと同一であるので、これらを削除する。
【０１１５】
これにより、２番目、３番目、６番目、７番目の命令コードが、それぞれ１６ビットとなるので、２番目と３番目を統合して圧縮形式２Ｅの命令コードを生成する。また、６番目と７番目を統合して圧縮形式２Ｅの命令コードを生成する。これにより、本例では７個の命令コードを５個に圧縮することができる。
【０１１６】
図１４は、図１２の命令コードに対応する命令フェッチ回路の構成図であり、図１１中の要素と共通の要素には共通の符号が付されている。
【０１１７】
この命令フェッチ回路１０Ｅは、図１２及び図１３の圧縮方法で圧縮されてメモリ１に格納された命令コードを読み出し、圧縮形式２Ｅの命令コードを基本形式１Ｅの命令コードに戻して、命令デコーダ・演算回路２に与えるための回路である。
【０１１８】
この命令フェッチ回路１０Ｅでは、図１１中のデコーダ２２に代えて、セレクタ１４で選択された１６ビット中のフラグコードＦＣをデコードして、再利用フラグＲ、セット番号Ｓ及び更新フラグＵを出力するデコーダ２２Ａを設けている。そして、デコードしたセット番号Ｓを、セレクタ２３ａ，２３ｂ，２３ｃの制御信号として与えるようにしている。
【０１１９】
また、図１１中のセレクタ２３ａ，２３ｂ，２３ｃには、命令レジスタ１３の上位１６ビットを共通に与えるようにしていたが、この命令フェッチ回路１０Ｅでは、この命令レジスタ１３の３２ビットの信号を、演算コードやオペランドに応じて部分コードＰａ〜Ｐｆに区分し、その順序をセット番号Ｓに応じて並べ替えてセレクタ２３ａ，２３ｂ，２３ｃに与えるようにしている。
【０１２０】
一方、命令バッファ２１ａ〜２１ｃの出力信号をセット番号Ｓに従って選択するセレクタ２５の入力側には、これらの命令バッファ２１ａ〜２１ｃの出力信号に加えて、セレクタ１４で選択された部分コードＰａ〜Ｐｆも与えられている。これにより、セレクタ２５からセット番号Ｓに従って復元された基本形式１Ｅの命令コードが出力されるようになっている。セレクタ２５の出力信号は、セレクタ２６の入力端子１に与えられている。セレクタ２６の入力端子０には、命令レジスタ１３に格納された基本形式１Ｅの命令コードがそのまま与えられ、再利用フラグＲが“０”のときは入力端子０が選択され、再利用フラグＲが“１”のときは入力端子１が選択されるようになっている。
【０１２１】
この命令フェッチ回路１０Ｅでは、命令レジスタ１３に格納された命令コードが部分コードＰａ〜Ｐｆに区分され、セット番号Ｓに応じて並べ替えられてセレクタ２３ａ〜２３ｃに与えられる。一方、命令レジスタ１３に格納された命令コードの内のフラグコードＦＣは、デコーダ２２Ａによってデコードされ、セット番号Ｓが生成されてセレクタ２３ａ〜２３ｃ，２５の制御信号として与えられる。これにより、セット番号Ｓに対応する組み合わせの部分コードＰａ〜Ｐｆが、セレクタ２５から出力される。
【０１２２】
以上のように、この実施例６の命令コード形式は、命令コードの上位１６ビットだけでなく、下位１６ビットの内容も命令バッファに保存して再利用するために、セット番号Ｓをコード化したフラグコードＦＣを設けているので、実施例５と同様の利点に加えて、更に再利用可能な命令コードを増加させることが可能になり、実施例５以上に命令コードの圧縮率を増加することができるという利点がある。
【０１２３】
なお、本発明は、上記実施例に限定されず、種々の変形が可能である。この変形例としては、例えば、次のようなものがある。
（ａ）  命令コードのビット数を３２ビットとして説明したが、ビット数は任意である。また、演算コードやオペランド、フラグ等に割り当てるビット数も任意である。
（ｂ）  命令バッファの数は１〜３に限定されない。命令バッファを更に増やすことにより、命令コードの圧縮率を増加させることが可能である。
【図面の簡単な説明】
【０１２４】
【図１】本発明の実施例１を示す命令コード形式の説明図である。
【図２】図１の命令コードに対応する命令フェッチ回路の構成図である。
【図３】図２の動作説明図である。
【図４】本発明の実施例２を示す命令コード形式の説明図である。
【図５】図４の命令コードに対応する命令フェッチ回路の構成図である。
【図６】本発明の実施例３を示す命令コード形式の説明図である。
【図７】図６の命令コードに対応する命令フェッチ回路の構成図である。
【図８】本発明の実施例４を示す命令コード形式の説明図である。
【図９】図８の命令コードに対応する命令フェッチ回路の構成図である。
【図１０】本発明の実施例５を示す命令コード形式の説明図である。
【図１１】図１０の命令コードに対応する命令フェッチ回路の構成図である。
【図１２】本発明の実施例６を示す命令コード形式の説明図である。
【図１３】図１２の命令コードの適用例を示す説明図である。
【図１４】図１２の命令コードに対応する命令フェッチ回路の構成図である。
【符号の説明】
【０１２５】
１    メモリ
２    命令デコーダ演算回路
１０    命令フェッチ回路
１１    プログラムカウンタ
１２    メモリ制御部
１３    命令レジスタ
１４，１７，１９，２０，２３〜２６    セレクタ
１５    ＥＸＯＲ
１６    ＦＦ
１８，２１    命令バッファ
２２    デコーダ
【図１】
2009026106.tif 000003
【図２】
2009026106.tif 000004
【図３】
2009026106.tif 000005
【図４】
2009026106.tif 000006
【図５】
2009026106.tif 000007
【図６】
2009026106.tif 000008
【図７】
2009026106.tif 000009
【図８】
2009026106.tif 000010
【図９】
2009026106.tif 000011
【図１０】
2009026106.tif 000012
【図１１】
2009026106.tif 000013
【図１２】
2009026106.tif 000014
【図１３】
2009026106.tif 000015
【図１４】
2009026106.tif 000016