(57)【特許請求の範囲】
【請求項１】
１ワードデータ中の最上位ビットから最下位ビット方向に検索した場合に、最初にセットされているビットが、最下位ビットから数えて何ビット目であるかを算出する算出手段を備える演算回路を具備し、
前記算出手段は、
１ワードデータを同一ビット数からなる複数のブロックに分けた場合の各ブロック夫々にセットされたビットがあるか否かの検出を行う検出手段と、
この検出手段による検出結果に基づき、前記複数のブロック中の１ブロックの全ビットより少ない所定ビットのデータを選択する選択手段と、
この選択手段により選択された結果に基づき、１ワードデータ中の、最上位側から最初にセットされているビットが、最下位ビットから数えて何ビット目であるかの数値を作成する数値作成手段と、
を具備することを特徴とするＲＩＳＣ計算機。
【請求項２】
複数ワードのデータについて、ワード単位に当該ワード内が全て０であるか否かに基づき、複数ワードの内のセットされたビットが存在する最上位有効ワードを検出する最上位有効ワード検出手段と、
この最上位有効ワード検出手段により検出された結果に対して請求項１に記載の演算回路を用いて、最初にセットされているビットが、最下位ビットから数えて何ビット目であるかを算出し、更に、この結果を用いて当該ワードの位置を示す数値を得るワード位置検出手段と、
前記有効最上位ワード検出手段により検出された最上位有効ワードに係る１ワードデータに対して請求項１に記載の演算回路を用いて、１ワードデータ中の最上位ビットから最下位ビット方向に検索した場合に、最初にセットされているビットが、最下位ビットから数えて何ビット目であるかを示す数値を得るビット位置検出手段と、
このビット位置検出手段及びワード位置検出手段の検出結果に基づき、複数ワードからなるデータの有効ビット長データを得る有効ビット長取得手段とを、
備えることを特徴とするＲＩＳＣ計算機。
【請求項３】
演算回路を複数有し、各命令を並列実行するＶＬＩＷ方式を採用することを特徴とする請求項２記載のＲＩＳＣ計算機。
【請求項４】
第１オペランドの１ワードのデータと第２オペランドの１ワードのデータを４ビット単位に比較して、第２オペランドの４ビットデータが第１オペランドの４ビットデータより大きいか否か検出し、各４ビット単位の比較結果である各１ビットをディスティネーションオペランドの下位側に格納する比較手段を備える演算回路を具備するＲＩＳＣ計算機。
【請求項５】
第１オペランドの１ワードのデータと第２オペランドの１ワードのデータを４ビット単位に比較して、第２オペランドの４ビットデータが第１オペランドの４ビットデータと等しいか否か検出し、各４ビット単位の比較結果である各１ビットをディスティネーションオペランドの下位側に格納する比較手段を備える演算回路を具備するＲＩＳＣ計算機。
【請求項６】
複数ワードのパック１０進数データについて、請求項４に記載の、第１オペランドの１ワードのデータと第２オペランドの１ワードのデータを４ビット単位に比較して、第２オペランドの４ビットデータが第１オペランドの４ビットデータより大きいか否か検出し、各４ビット単位の比較結果をディスティネーションオペランドの下位側に格納するｃｍｐｌｔ．ｐ命令を実行する演算回路を用いてワード単位に処理を行うワード単位処理手段と、
このワード単位処理手段による処理結果を前記複数ワードのワードデータ順に並べる処理を行う２次処理手段と、
この２次処理手段による処理結果について、請求項１に記載の演算回路を用いて、１ワードデータ中の最上位ビットから最下位ビット方向に検索した場合に、最初にセットされているビットが、最下位ビットから数えて何ビット目であるかを示す数値を得る最先セットビット値検出手段と、
この最先セットビット値検出手段の検出結果に基づきパック１０進数の有効桁数を得る有効桁数取得手段と、
を具備することを特徴とするＲＩＳＣ計算機。
【請求項７】
演算回路を複数有し、各命令を並列実行するＶＬＩＷ方式を採用すると共に、ｃｍｐｌｔ．ｐ命令を１サイクルに１命令実行することを特徴とする請求項６に記載のＲＩＳＣ計算機。
【請求項８】
演算回路を複数有し、各命令を並列実行するＶＬＩＷ方式を採用すると共に、ｃｍｐｌｔ．ｐ命令を１サイクルに複数命令実行することを特徴とする請求項６記載のＲＩＳＣ計算機。
【請求項９】
第１オペランドの１ワードのデータと第２オペランドの１ワードのデータを１バイト単位に比較して、第２オペランドの１バイトデータが第１オペランドの１バイトデータより大きいか否か検出し、各１バイト単位の比較結果である各１ビットをディスティネーションオペランドの下位側に格納する比較手段を備える演算回路を具備するＲＩＳＣ計算機。
【請求項１０】
第１オペランドの１ワードのデータと第２オペランドの１ワードのデータを１バイト単位に比較して、第２オペランドの１バイトデータが第１オペランドの１バイトデータと等しいか否か検出し、各１バイト単位の比較結果である各１ビットをディスティネーションオペランドの下位側に格納する比較手段を備える演算回路を具備するＲＩＳＣ計算機。
【請求項１１】
複数ワードのデータについて、請求項９に記載の、第１オペランドの１ワードのデータと第２オペランドの１ワードのデータを１バイト単位に比較して、第２オペランドの１バイトデータが第１オペランドの１バイトデータより大きいか否か検出し、各１バイト単位の比較結果をディスティネーションオペランドの下位側に格納するｃｍｐｌｔ．ｂ命令を実行する演算回路を用いてワード単位に処理を行うワード単位処理手段と、
このワード単位処理手段による処理結果を前記複数ワードのワードデータ順に並べる処理を行う２次処理手段と、
この２次処理手段による処理結果について、請求項１に記載の演算回路を用いて、１ワードデータ中の最上位ビットから最下位ビット方向に検索した場合に、最初にセットされているビットが、最下位ビットから数えて何ビット目であるかを示す数値を得る最先セットビット値検出手段と、
この最先セットビット値検出手段の検出結果に基づき有効バイト長を得る有効バイト長取得手段と、
を具備することを特徴とするＲＩＳＣ計算機。
【請求項１２】
演算回路を複数有し、各命令を並列実行するＶＬＩＷ方式を採用すると共に、ｃｍｐｌｔ．ｂ命令を１サイクルに１命令実行することを特徴とする請求項１１に記載のＲＩＳＣ計算機。
【請求項１３】
演算回路を複数有し、各命令を並列実行するＶＬＩＷ方式を採用すると共に、ｃｍｐｌｔ．ｂ命令を１サイクルに複数命令実行することを特徴とする請求項１１に記載のＲＩＳＣ計算機。
【請求項１４】
ゾーン１０進数の複数ワードからなる演算結果データについて、請求項１０に記載の、第１オペランドの１ワードのデータと第２オペランドの１ワードのデータを１バイト単位に比較して、前記第２オペランドの１バイトデータが第１オペランドの１バイトデータと等しいか否か検出し、各１バイト単位の比較結果をディスティネーションオペランドの下位側に格納するｃｍｐｅｑ．ｂ命令を実行する演算回路を用いてワード単位に処理を行うワード単位処理手段と、
このワード単位処理手段による処理結果を前記複数ワードのワードデータ順に並べ、この並べたデータに対して使用されているバイトと使用されていないバイトとを識別する処理を行う２次処理手段と、
この２次処理手段による処理結果について、請求項１に記載の演算回路を用いて、１ワードデータ中の最上位ビットから最下位ビット方向に検索した場合に、最初にセットされているビットが、最下位ビットから数えて何ビット目であるかを示す数値を得る最先セットビット値検出手段と、
この最先セットビット値検出手段の検出結果と与えられる正規のバイト数に基づきゾーン１０進数のデータがオーバーフローか否か検出するオーバーフロー検出手段と、
を具備することを特徴とするＲＩＳＣ計算機。
【請求項１５】
演算回路を複数有し、各命令を並列実行するＶＬＩＷ方式を採用すると共に、ｃｍｐｅｑ．ｂ命令を１サイクルに１命令実行することを特徴とする請求項１４に記載のＲＩＳＣ計算機。
【請求項１６】
演算回路を複数有し、各命令を並列実行するＶＬＩＷ方式を採用すると共に、ｃｍｐｅｑ．ｂ命令を１サイクルに複数命令実行することを特徴とする請求項１４に記載のＲＩＳＣ計算機。
【請求項１７】
命令に対する演算を実行する演算回路を複数有し、各命令を並列実行するＶＬＩＷ方式を採用したＲＩＳＣ計算機において、
前記複数の演算回路の所要の演算回路が、第３ソースオペランドを取り込む経路と、第２ディスティネーションオペランド出力用の経路とを備え、３つのソースオペランドに対して演算を行い、その結果を２つのディスティネーションオペランドへ出力する５オペランド型命令を実行する演算回路であり、
前記複数の演算回路の残りの演算回路が、第２ソースオペランドを取り込む経路と、第１ディスティネーションオペランド出力用の経路とを備え、２つのソースオペランドに対して演算を行い、その結果を１つのディスティネーションオペランドへ出力する３オペランド型命令を実行する演算回路であることを特徴とするＲＩＳＣ計算機。
【請求項１８】
５オペランド型命令を実行する演算回路の第３ソースオペランドを取り込む経路へソースオペランドを供給するか、３オペランド型命令を実行する演算回路の第１ソースオペランドを取り込む経路へソースオペランドを供給するか切り換えるソースオペランド切換スイッチと、
前記５オペランド型命令を実行する演算回路の第２ディスティネーションオペランド出力用の経路からのディスティネーションオペランドか、前記３オペランド型命令を実行する演算回路の第１ディスティネーションオペランド出力用の経路からのディスティネーションオペランドかを選択するためのディスティネーションオペランド選択スイッチと、
上記２つのスイッチを命令に基づき切り換えるデコ−ダとを具備することを特徴とする請求項１７に記載のＲＩＳＣ計算機。
【請求項１９】
４つの演算回路が備えられており、第１、第３の演算回路が、５オペランド型命令を実行する演算回路で構成され、第２、第４の演算回路が、３オペランド型命令を実行する演算回路で構成されていることを特徴とする請求項１７または１８に記載のＲＩＳＣ計算機。
【請求項２０】
ＲＩＳＣ命令に拡張用コードがセットされている場合に、デコ−ダは、５オペランド型命令を実行する演算回路へ第３ソースオペランドを供給し、出力される第２ディスティネーションオペランドを選択するように、ソースオペランド切換スイッチとディスティネーションオペランド選択スイッチとの切換制御を行うことを特徴とする請求項１７乃至請求項１９のいずれか１項に記載のＲＩＳＣ計算機。
【請求項２１】
第１オペランドの１ワード長のデータと第２オペランドの１ワード長のデータとを夫々４ビット幅のブロックに区分し、第１オペランドの各ブロックと第２オペランドの各ブロックとを先頭から順に組み合わせるシャッフル手段と、
このシャッフル手段により組み合わされたブロック対における２ブロックの前後配置関係を、第３オペランドの１ワード長のデータに基づき制御する対交換手段と、
を具備する演算回路を備えることを特徴とするＲＩＳＣ計算機。
【請求項２２】
第１オペランドの１ワード長のデータと第２オペランドの１ワード長のデータとを夫々４ビット幅のブロックに区分し、第１オペランドと第２オペランドのブロックを一列に並べた状態で１ブロックおきに組み合わせ、奇数ブロックの組み合わせの並びの後に偶数ブロックの組み合わせの並びを配置する逆シャッフル手段と、
この逆シャッフル手段により組み合わされたブロック対における２ブロックの前後配置関係を、第３オペランドの１ワード長のデータに基づき制御する対交換手段と、
を具備する演算回路を備えることを特徴とするＲＩＳＣ計算機。
【請求項２３】
複数ワードのパック１０進数データについて、請求項４に記載の、１ワードのデータを４ビット単位に不正閾値データと比較して、各４ビット単位の比較結果をディスティネーションオペランドの下位側に格納するｃｍｐｌｔ．ｐ命令を実行する演算回路を用いてワード単位に処理を行う不正パック１０進数検出手段と、
前記複数ワードのパック１０進数データと０とを第１オペランド及び第２オペランドとし、前記不正パック１０進数検出手段の結果を第３オペランドとして、請求項２１に記載のｓｈｘ命令を実行する演算回路を用いてｓｈｘ命令による結果を得るデータ混合手段と、
このデータ混合手段による混合結果を第１オペランド及び第２オペランドとし、０を第３オペランドとして、請求項２２に記載のｉｓｈｘ命令を実行する演算回路を用いて不正データを抽出する不正データ抽出手段と、
を具備しパック１０進数の不正データを除去することを特徴とするＲＩＳＣ計算機。
【請求項２４】
１ワード単位に、不正パック１０進数検出手段、データ混合手段、不正データ抽出手段を用いて処理を行い、複数ワード分の処理を繰り返すことを特徴とする請求項２３に記載のＲＩＳＣ計算機。
【請求項２５】
演算回路を複数有し、各命令を並列に実行するＶＬＩＷ方式を採用すると共に、ｃｍｐｌｔ．ｐ命令を１サイクルに複数命令実行することを特徴とする請求項２３に記載のＲＩＳＣ計算機。
【請求項２６】
２つのジェネラルレジスタで指定された倍語データを１本に連なった如くの２つのレジスタに配置した状態で、ジェネラルレジスタまたは即値で指定された数だけ左に論理シフトし、この結果前記連なった如くの２つのレジスタにおいて空いた下位ビットに０を挿入する倍語・左論理シフト手段を備える演算回路を具備することを特徴とするＲＩＳＣ計算機。
【請求項２７】
２つのジェネラルレジスタで指定された倍語データを１本に連なった如くの２つのレジスタに配置した状態で、ジェネラルレジスタまたは即値で指定された数だけ右に論理シフトし、この結果前記連なった如くの２つのレジスタにおいて空いた上位ビットに０を挿入する倍語・右論理シフト手段を備える演算回路を具備することを特徴とするＲＩＳＣ計算機。
【請求項２８】
２つのジェネラルレジスタで指定された倍語データを１本に連なった如くの２つのレジスタに配置した状態で、ジェネラルレジスタまたは即値で指定された数だけ右に算術シフトし、この結果前記連なった如くの２つのレジスタにおいて空いた上位ビットに符号ビットを挿入する倍語・右算術シフト手段を備える演算回路を具備することを特徴とするＲＩＳＣ計算機。
【請求項２９】
メモリに記憶されているパック１０進数データをレジスタへ転送するＲＩＳＣ計算機であって、
上記パック１０進数データが記憶されているメモリ上の最上位と最下位のワード境界を検出すると共に、ワード境界と当該パック１０進数データの終端との差を検出するワード境界・境界差検出手段と、
このワード境界・境界差検出手段により検出されたワード境界を単位として、前記パック１０進数が記憶されている範囲のワードをレジスタに読み出すワード単位読出手段と、
上記レジスタに読み出されたデータを、上記ワード境界・境界差検出手段により検出された差のデータに応じて、請求項２６に記載の倍語・左論理シフト手段を備え、ｓｌｌ．ｌ命令を実行する演算回路によりシフトするシフト手段と、
を具備することを特徴とするＲＩＳＣ計算機。
【請求項３０】
ワード単位読出手段による読み出しの後に、シフト手段によるシフトを行う動作を繰り返して、所要のパック１０進数をレジスタに転送することを特徴とする請求項２９に記載のＲＩＳＣ計算機。
【請求項３１】
演算回路を複数有し、各命令を並列実行するＶＬＩＷ方式を採用すると共に、ワード単位読出手段による読み出しと、ｓｌｌ．ｌ命令を１サイクルにて並列実行することを特徴とする請求項２９に記載のＲＩＳＣ計算機。
【請求項３２】
命令に対する演算を実行する演算回路を複数有し、各命令を並列実行するＶＬＩＷ方式を採用したＲＩＳＣ計算機において、
前記複数の演算回路の所要の演算回路が、第３ソースオペランドを取り込む経路と、第２ディスティネーションオペランド出力用の経路とを備え、３つのソースオペランドに対して演算を行い、その結果を２つのディスティネーションオペランドへ出力する５オペランド型命令を実行する演算回路であり、
前記複数の演算回路の残りの演算回路が、第２ソースオペランドを取り込む経路と、第１ディスティネーションオペランド出力用の経路とを備え、２つのソースオペランドに対して演算を行い、その結果を１つのディスティネーションオペランドへ出力する３オペランド型命令を実行する演算回路であり、
前記５オペランド型命令を実行する演算回路が、
２つのジェネラルレジスタで指定された固定小数点１ワードデータを、第３のジェネラルレジスタで指定されたキャリーと共に加算し、加算結果を第１のディスティネーションレジスタに格納し、加算結果のキャリーを第２のディスティネーションレジスタに格納する加算手段を備えることを特徴とするＲＩＳＣ計算機。
【請求項３３】
命令に対する演算を実行する演算回路を複数有し、各命令を並列実行するＶＬＩＷ方式を採用したＲＩＳＣ計算機において、
前記複数の演算回路の所要の演算回路が、第３ソースオペランドを取り込む経路と、第２ディスティネーションオペランド出力用の経路とを備え、３つのソースオペランドに対して演算を行い、その結果を２つのディスティネーションオペランドへ出力する５オペランド型命令を実行する演算回路であり、
前記複数の演算回路の残りの演算回路が、第２ソースオペランドを取り込む経路と、第１ディスティネーションオペランド出力用の経路とを備え、２つのソースオペランドに対して演算を行い、その結果を１つのディスティネーションオペランドへ出力する３オペランド型命令を実行する演算回路であり、
前記５オペランド型命令を実行する演算回路が、
第１のジェネラルレジスタで指定された固定小数点１ワードデータから第２のジェネラルレジスタで指定された固定小数点１ワードデータを減算すると共に、第３のジェネラルレジスタで指定されたキャリーの反転値を減算し、減算結果を第１のディスティネーションレジスタに格納し、減算結果のキャリーの反転値を第２のディスティネーションレジスタに格納する減算手段を備えることを特徴とするＲＩＳＣ計算機。
【請求項３４】
命令に対する演算を実行する演算回路を複数有し、各命令を並列実行するＶＬＩＷ方式を採用したＲＩＳＣ計算機において、
前記複数の演算回路の所要の演算回路が、第３ソースオペランドを取り込む経路と、第２ディスティネーションオペランド出力用の経路とを備え、３つのソースオペランドに対して演算を行い、その結果を２つのディスティネーションオペランドへ出力する５オペランド型命令を実行する演算回路であり、
前記複数の演算回路の残りの演算回路が、第２ソースオペランドを取り込む経路と、第１ディスティネーションオペランド出力用の経路とを備え、２つのソースオペランドに対して演算を行い、その結果を１つのディスティネーションオペランドへ出力する３オペランド型命令を実行する演算回路であり、
前記５オペランド型命令を実行する演算回路が、
２つのジェネラルレジスタで指定されたパック１０進数１ワードデータを、第３のジェネラルレジスタで指定されたキャリーと共に加算し、加算結果を第１のディスティネーションレジスタに格納し、加算結果のキャリーを第２のディスティネーションレジスタに格納する加算手段を備えることを特徴とするＲＩＳＣ計算機。
【請求項３５】
命令に対する演算を実行する演算回路を複数有し、各命令を並列実行するＶＬＩＷ方式を採用したＲＩＳＣ計算機において、
前記複数の演算回路の所要の演算回路が、第３ソースオペランドを取り込む経路と、第２ディスティネーションオペランド出力用の経路とを備え、３つのソースオペランドに対して演算を行い、その結果を２つのディスティネーションオペランドへ出力する５オペランド型命令を実行する演算回路であり、
前記複数の演算回路の残りの演算回路が、第２ソースオペランドを取り込む経路と、第１ディスティネーションオペランド出力用の経路とを備え、２つのソースオペランドに対して演算を行い、その結果を１つのディスティネーションオペランドへ出力する３オペランド型命令を実行する演算回路であり、
前記５オペランド型命令を実行する演算回路が、
第１のジェネラルレジスタで指定されたパック１０進数１ワードデータから第２のジェネラルレジスタで指定されたパック１０進数１ワードデータを減算すると共に、第３のジェネラルレジスタで指定されたキャリーの反転値を減算し、減算結果が負数の場合には１０の補数として、減算結果を第１のディスティネーションレジスタに格納し、減算結果のキャリーの反転値を第２のディスティネーションレジスタに格納する減算手段を備えることを特徴とするＲＩＳＣ計算機。
【請求項３６】
複数ワードのパック１０進数からなる第１のデータと複数ワードのパック１０進数からなる第２のデータのそれぞれの符号の一致不一致を検出する一致不一致手段と、
前記符号が一致していることが検出された場合に、ａｄｄｃ．ｐ命令を実行する請求項３４に記載の演算回路を用いて前記第１のデータと第２のデータとをワード単位に加算する加算手段と、
前記符号が不一致であることが検出された場合に、ｓｕｂｃ．ｐ命令を実行する請求項３５に記載の演算回路を用いて前記第１のデータと第２のデータとをワード単位に減算する減算手段とを具備し、
加減算の各段階で生じたキャリーを次段階にて用いて複数ワードのパック１０進数の加算を行うことを特徴とするＲＩＳＣ計算機。
【請求項３７】
複数ワードのパック１０進数からなる第１のデータと複数ワードのパック１０進数からなる第２のデータのそれぞれの符号の一致不一致を検出する一致不一致手段と、
前記符号が不一致であることが検出された場合に、ａｄｄｃ．ｐ命令を実行する請求項３４に記載の演算回路を用いて前記第１のデータと第２のデータとをワード単位に加算する加算手段と、
前記符号が一致していることが検出された場合に、ｓｕｂｃ．ｐ命令を実行する請求項３５に記載の演算回路を用いて前記第１のデータと第２のデータとをワード単位に減算する減算手段とを具備し、
加減算の各段階で生じたキャリーを次段階にて用いて複数ワードのパック１０進数の減算を行うことを特徴とするＲＩＳＣ計算機。
【請求項３８】
第１の１ワードデータの最下位４ビットから４ビット間隔をおいて、パック１０進数を取り出し、この複数のパック１０進数データと第２の１ワードデータの最下位４ビットのパック１０進数データとを掛け合わせて、２桁のパック１０進数データを上記第１の１ワードデータに存在するパック１０進数データと同個数得て、ディスティネーションオペランドに出力する乗算手段を備える演算回路を具備することを特徴とするＲＩＳＣ計算機。
【請求項３９】
１ワードのパック１０進数からなる被乗数データと、パック１０進数の０が１ワード集合されてなるデータとを、ｓｈｘ命令を実行する請求項２１に記載の演算回路を用いて完全シャッフル処理する前処理手段と、
この前処理手段により完全シャッフル処理された結果の２桁毎に対し、ｍｕｌ．ｐ命令を実行する請求項３８に記載の演算回路を用いて乗数を構成する１桁のパック１０進数データを掛け合わせて２桁単位の結果を得る乗算手段と、
上記乗算手段により得られた結果に対し、ｉｓｈｘ命令を実行する請求項２２に記載の演算回路を用いて逆完全シャッフル処理して上位桁と下位桁に分離する桁分離手段と、
上記桁分離手段により分離された上位桁の結果に対し、ｓｌｌ．ｌ命令を実行する請求項２６に記載の演算回路を用いて４ビットの左シフトを生じさせて、桁上がりによる桁位置との一致を図る桁位置補正手段と、
この桁位置補正手段により補正された結果と、上記桁分離手段により分離された下位桁の結果とをａｄｄｃ．ｐ命令を実行する請求項３４に記載の演算回路を用いて加算すると共に、加算の結果生じたキャリーを前記桁位置補正手段により上位ワードへシフトされた数値に加算して、パック１０進数データの乗算結果を得る加算手段と、
を具備することを特徴とするＲＩＳＣ計算機。
【請求項４０】
複数ワードのパック１０進数の被乗数と複数ワードのパック１０進数の乗数との乗算を行う場合には、乗数の各桁のデータ毎に、被乗数の各ワードに対して、請求項３９に記載の各手段による演算を繰り返して結果を得て、更に、乗数の桁数を進めて同様の演算を繰り返して行い、
それぞれの結果に必要なシフトを生じさせて最終結果とすることを特徴とするＲＩＳＣ計算機。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、各種処理を１命令により実行可能であり、並列化に好適なＲＩＳＣ計算機に関するものである。
【０００２】
【従来の技術】
ＲＩＳＣ計算機は、命令セットを単純なものにして、実行の高速化を図った計算機である。ＲＩＳＣ計算機においては、ほとんどの命令が、１マシンサイクルで実行終了するように、レジスタ間の単純な演算を指示するもので構成されている。また、メモリのアクセスをロード命令とストア命令のみで行うことにより、ＣＩＳＣに比べてパイプラインの単純化が図られている。
【０００３】
更に、ＲＩＳＣ計算機としてはＶＬＩＷ(Very Long Instruction Word)方式を採用し、命令レベルの並列性を利用して高速処理が可能に構成されたものが知られている。このＶＬＩＷ方式は、長命令形式と呼ばれる「長い命令語」の中に、通常のＲＩＳＣ命令を複数個配置して命令レベルの並列実行を可能としてある。
【０００４】
【発明が解決しようとする課題】
しかしながら、従来のＲＩＳＣ計算機においては、命令やレジスタの多くが、３２ｂｉｔ長、６４ｂｉｔ長であるのに対し、ビット列やバイト列やパック１０進数などのデータは、夫々、１ｂｉｔ、８ｂｉｔ、４ｂｉｔが単位であるから、これらのデータを扱う処理においては、３２ｂｉｔ長や６４ｂｉｔ長のレジスタを効率的に利用することができない場合があった。
【０００５】
また、ＶＬＩＷ方式を採用したものにあっては、並列命令実行の妨げとなる要因として、▲１▼分岐による制御依存関係、▲２▼機能ユニット数による制限、▲３▼命令間のデータ依存関係、が挙げられる。ＶＬＩＷ方式を採用した従来のＲＩＳＣ計算機は、係る要因によって並列度が向上せず、十分な性能が得られないという問題点があった。
【０００６】
本発明は上記従来のＲＩＳＣ計算機の問題点を解決せんとしてなされたもので、その目的は、レジスタ長より短い長さのデータ処理にあっても、当該レジスタをより効率的に利用することのできるＲＩＳＣ計算機を提供することである。更に、レジスタ長にあったデータを処理することで、ビット列やバイト列やパック１０進数などを、同時に複数並列実行して処理の高速化を図ることができるＲＩＳＣ計算機を提供することを目的とする。また、他の目的は、ＶＬＩＷ方式を採用した場合に、命令の並列度を上げ、ＶＬＩＷの性能を最大限に引き出し、高速処理が可能となるＲＩＳＣ計算機を提供することである。
【０００７】
【課題を解決するための手段】
本発明の請求項１に記載のＲＩＳＣ計算機は、１ワードデータ中の最上位ビットから最下位ビット方向に検索した場合に、最初にセットされているビットが、最下位ビットから数えて何ビット目であるかを検出する手段を備える演算回路を具備し、前記算出手段は、１ワードデータを同一ビット数からなる複数のブロックに分けた場合の各ブロック夫々にセットされたビットがあるか否かの検出を行う検出手段と、この検出手段による検出結果に基づき、前記複数のブロック中の１ブロックの全ビットより少ない所定ビットのデータを選択する選択手段と、この選択手段により選択された結果に基づき、１ワードデータ中の、最上位側から最初にセットされているビットが、最下位ビットから数えて何ビット目であるかの数値を作成する数値作成手段と、を具備することを特徴とする。これによって、１ワードデータ中の最上位ビットから最下位ビット方向に検索した場合に、最初にセットされているビットが、最下位ビットから数えて何ビット目であるかを検出でき、有効ビット長の検出等に適用可能である。
【００１０】
本発明の請求項２に記載のＲＩＳＣ計算機は、複数ワードのデータについて、ワード単位に当該ワード内が全て０であるか否かに基づき、複数ワードの内のセットされたビットが存在する最上位有効ワードを検出する最上位有効ワード検出手段と、この最上位有効ワード検出手段により検出された結果に対して請求項１に記載の演算回路を用いて、最初にセットされているビットが、最下位ビットから数えて何ビット目であるかを算出し、更に、この結果を用いて当該ワードの位置を示す数値を得るワード位置検出手段と、前記有効最上位ワード検出手段により検出された最上位有効ワードに係る１ワードデータに対して請求項１に記載の演算回路を用いて、１ワードデータ中の最上位ビットから最下位ビット方向に検索した場合に、最初にセットされているビットが、最下位ビットから数えて何ビット目であるかを示す数値を得るビット位置検出手段と、このビット位置検出手段及びワード位置検出手段の検出結果に基づき、複数ワードからなるデータの有効ビット長データを得る有効ビット長取得手段とを備えることを特徴とする。これにより、複数ワードからなるデータの有効ビット長データの計算を行うことができる。
【００１１】
本発明の請求項３に記載のＲＩＳＣ計算機は、演算回路を複数有し、各命令を並列実行するＶＬＩＷ方式を採用することを特徴とする。これにより、位置検出が、ｆｓｂｉｔ命令によりなされ、条件判定と分岐命令とが使用されないので、並列性が向上し、高速化が図られる。
【００１２】
本発明の請求項４に記載のＲＩＳＣ計算機は、第１オペランドの１ワードのデータと第２オペランドの１ワードのデータを４ビット単位に比較して、第２オペランドの４ビットデータが第１オペランドの４ビットデータより大きいか否か検出し、各４ビット単位の比較結果である各１ビットをディスティネーションオペランドの下位側に格納する比較手段を備える演算回路を具備することを特徴とする。これにより、１ワードのデータを４ビットに分割して各４ビット毎の大小比較をする演算が１命令により実行される。つまり、４ビットのデータを大小比較を複数同時に実行可能である。
【００１３】
本発明の請求項５に記載のＲＩＳＣ計算機は、第１オペランドの１ワードのデータと第２オペランドの１ワードのデータを４ビット単位に比較して、第２オペランドの４ビットデータが第１オペランドの４ビットデータと等しいか否か検出し、各４ビット単位の比較結果である各１ビットをディスティネーションオペランドの下位側に格納する比較手段を備える演算回路を具備することを特徴とする。これにより、１ワードのデータを４ビットに分割して各４ビット毎に等しいか否か比較する演算が１命令により実行される。つまり、４ビットのデータの一致検出を複数同時に実行可能である。
【００１４】
本発明の請求項６に記載のＲＩＳＣ計算機は、複数ワードのパック１０進数データについて、請求項４に記載の、第１オペランドの１ワードのデータと第２オペランドの１ワードのデータを４ビット単位に比較して、第２オペランドの４ビットデータが第１オペランドの４ビットデータより大きいか否か検出し、各４ビット単位の比較結果をディスティネーションオペランドの下位側に格納するｃｍｐｌｔ．ｐ命令を実行する演算回路を用いてワード単位に処理を行うワード単位処理手段と、このワード単位処理手段による処理結果を前記複数ワードのワードデータ順に並べる処理を行う２次処理処理手段と、この２次処理手段による処理結果について、請求項１に記載の演算回路を用いて、１ワードデータ中の最上位ビットから最下位ビット方向に検索した場合に、最初にセットされているビットが、最下位ビットから数えて何ビット目であるかを示す数値を得る最先セットビット値検出手段と、この最先セットビット値検出手段の検出結果に基づきパック１０進数の有効桁数を得る有効桁数取得手段とを具備することを特徴としている。これによって、パック１０進数の有効桁数を効率的に計算することができる。
【００１５】
本発明の請求項７に記載のＲＩＳＣ計算機は、演算回路を複数有し、各命令を並列実行するＶＬＩＷ方式を採用すると共に、ｃｍｐｌｔ．ｐ命令を１サイクルに１命令実行することを特徴とする。これによって、条件判定及び分岐命令を使用することなく、ｆｓｂｉｔ命令及びｃｍｐｌｔ．ｐ命令によりパック１０進数の有効桁数を得ることができ、並列性が向上し、高速化が図られる。
【００１６】
本発明の請求項８に記載のＲＩＳＣ計算機は、演算回路を複数有し、各命令を並列実行するＶＬＩＷ方式を採用すると共に、ｃｍｐｌｔ．ｐ命令を１サイクルに複数命令実行することを特徴とする。これにより、ｃｍｐｌｔ．ｐ命令が１サイクルに複数命令実行され、並列性の向上により処理サイクル数を減少させて高速処理を可能とする。
【００１７】
本発明の請求項９に記載のＲＩＳＣ計算機は、第１オペランドの１ワードのデータと第２オペランドの１ワードのデータを１バイト単位に比較して、第２オペランドの１バイトデータが第１オペランドの１バイトデータより大きいか否か検出し、各１バイト単位の比較結果である各１ビットをディスティネーションオペランドの下位側に格納する比較手段を備える演算回路を具備することを特徴とする。これにより、１ワードのデータを１バイトに分割して各１バイト毎の大小比較をする演算が１命令により実行される。つまり、１バイトのデータの大小比較を複数同時に実行可能である。
【００１８】
本発明の請求項１０に記載のＲＩＳＣ計算機は、第１オペランドの１ワードのデータと第２オペランドの１ワードのデータを１バイト単位に比較して、第２オペランドの１バイトデータが第１オペランドの１バイトデータと等しいか否か検出し、各１バイト単位の比較結果である各１ビットをディスティネーションオペランドの下位側に格納する比較手段を備える演算回路を具備することを特徴とする。これにより、１ワードのデータを１バイトに分割して各１バイト毎に等しいか否か比較する演算が１命令により実行される。つまり、１バイトのデータの一致検出を複数同時に実行可能である。
【００１９】
本発明の請求項１１に記載のＲＩＳＣ計算機は、複数ワードのデータについて、請求項９に記載の、第１オペランドの１ワードのデータと第２オペランドの１ワードのデータを１バイト単位に比較して、第２オペランドの１バイトデータが第１オペランドの１バイトデータより大きいか否か検出し、各１バイト単位の比較結果をディスティネーションオペランドの下位側に格納するｃｍｐｌｔ．ｂ命令を実行する演算回路を用いてワード単位に処理を行うワード単位処理手段と、このワード単位処理手段による処理結果を前記複数ワードのワードデータ順に並べる処理を行う２次処理処理手段と、この２次処理手段による処理結果について、請求項１に記載の演算回路を用いて、１ワードデータ中の最上位ビットから最下位ビット方向に検索した場合に、最初にセットされているビットが、最下位ビットから数えて何ビット目であるかを示す数値を得る最先セットビット値検出手段と、この最先セットビット値検出手段の検出結果に基づき有効バイト長を得る有効バイト長取得手段とを具備することを特徴としている。これによって、複数ワードのデータの有効バイト長を効率的に計算することができる。
【００２０】
本発明の請求項１２に記載のＲＩＳＣ計算機は、演算回路を複数有し、各命令を並列実行するＶＬＩＷ方式を採用すると共に、ｃｍｐｌｔ．ｂ命令を１サイクルに１命令実行することを特徴とする。これによって、条件判定及び分岐命令を使用することなく、ｆｓｂｉｔ命令及びｃｍｐｌｔ．ｂ命令によりデータの有効バイト長を得ることができ、並列性が向上し、高速化が図られる。
【００２１】
本発明の請求項１３に記載のＲＩＳＣ計算機は、演算回路を複数有し、各命令を並列実行するＶＬＩＷ方式を採用すると共に、ｃｍｐｌｔ．ｂ命令を１サイクルに複数命令実行することを特徴とする。これにより、ｃｍｐｌｔ．ｂ命令が１サイクルに複数命令実行され、並列性の向上により処理サイクル数を減少させて高速処理を可能とする。
【００２２】
本発明の請求項１４に記載のＲＩＳＣ計算機は、ゾーン１０進数の複数ワードからなる演算結果データについて、請求項１０に記載の、第１オペランドの１ワードのデータと第２オペランドの１ワードのデータを１バイト単位に比較して、第２オペランドの１バイトデータが第１オペランドの１バイトデータと等しいか否か検出し、各１バイト単位の比較結果をディスティネーションオペランドの下位側に格納するｃｍｐｅｑ．ｂ命令を実行する演算回路を用いてワード単位に処理を行うワード単位処理手段と、このワード単位処理手段による処理結果を前記複数ワードのワードデータ順に並べ、この並べたデータに対して使用されているバイトと使用されていないバイトとを識別する処理を行う２次処理処理手段と、この２次処理手段による処理結果について、請求項１に記載の演算回路を用いて、１ワードデータ中の最上位ビットから最下位ビット方向に検索した場合に、最初にセットされているビットが、最下位ビットから数えて何ビット目であるかを示す数値を得る最先セットビット値検出手段と、この最先セットビット値検出手段の検出結果と与えられる正規のバイト数に基づきゾーン１０進数のデータがオーバーフローか否か検出するオーバーフロー検出手段と、を具備することを特徴とする。これによって、ゾーン１０進数からなる複数ワードのデータのオーバーフローを効率的に計算することができる。
【００２３】
本発明の請求項１５に記載のＲＩＳＣ計算機は、演算回路を複数有し、各命令を並列実行するＶＬＩＷ方式を採用すると共に、ｃｍｐｅｑ．ｂ命令を１サイクルに１命令実行することを特徴とする。これによって、条件判定及び分岐命令を使用することなく、ｆｓｂｉｔ命令及びｃｍｐｅｑ．ｂ命令により演算結果において使用されているバイト長を得てオーバーフローを検出することができ、並列性が向上し、高速化が図られる。
【００２４】
本発明の請求項１６に記載のＲＩＳＣ計算機は、演算回路を複数有し、各命令を並列実行するＶＬＩＷ方式を採用すると共に、ｃｍｐｅｑ．ｂ命令を１サイクルに複数命令実行することを特徴とする。これにより、ｃｍｐｅｑ．ｂ命令が１サイクルに複数命令実行され、並列性の向上により処理サイクル数を減少させて高速処理を可能とする。
【００２５】
本発明の請求項１７に記載のＲＩＳＣ計算機は、命令に対する演算を実行する演算回路を複数有し、各命令を並列実行するＶＬＩＷ方式を採用したＲＩＳＣ計算機であって、前記複数の演算回路の所要の演算回路が、第３ソースオペランドを取り込む経路と、第２ディスティネーションオペランド出力用の経路とを備え、３つのソースオペランドに対して演算を行い、その結果を２つのディスティネーションオペランドへ出力する５オペランド型命令を実行する演算回路であり、前記複数の演算回路の残りの演算回路が、第２ソースオペランドを取り込む経路と、第１ディスティネーションオペランド出力用の経路とを備え、２つのソースオペランドに対して演算を行い、その結果を１つのディスティネーションオペランドへ出力する３オペランド型命令を実行する演算回路であることを特徴とする。これによって、一時に３つのソースオペランドを与えることができ、第３ソースオペランドの待ち合わせの必要がなく、また、一時に２つのディスティネーションオペランドのライトバックが可能であり、第２ディスティネーションオペランドのライトバック待ちが不要となる。
【００２６】
本発明の請求項１８に記載のＲＩＳＣ計算機は、５オペランド型命令を実行する演算回路の第３ソースオペランドを取り込む経路へソースオペランドを供給するか、３オペランド型命令を実行する演算回路の第１ソースオペランドを取り込む経路へソースオペランドを供給するか切り換えるソースオペランド切換スイッチと、前記５オペランド型命令を実行する演算回路の第２ディスティネーションオペランド出力用の経路からのディスティネーションオペランドか、前記３オペランド型命令を実行する演算回路の第１ディスティネーションオペランド出力用の経路からのディスティネーションオペランドかを選択するためのディスティネーションオペランド選択スイッチと、上記２つのスイッチを命令に基づき切り換えるデコ−ダとを具備することを特徴とする。これにより、３オペランド型命令のみにより構成される命令列に対しても、また、５オペランド型命令を含む命令列に対しても、処理を行うことが可能である。
【００２７】
本発明の請求項１９に記載のＲＩＳＣ計算機は、４つの演算回路が備えられており、第１、第３の演算回路が、５オペランド型命令を実行する演算回路で構成され、第２、第４の演算回路が、３オペランド型命令を実行する演算回路で構成されていることを特徴とする。これによって、第０、第１命令フィールド、第２、第３命令フィールドに亘って、それぞれ２ワード長の５オペランド型のＲＩＳＣ命令を配置して実行させることができる。
【００２８】
本発明の請求項２０に記載のＲＩＳＣ計算機は、ＲＩＳＣ命令に拡張用コードがセットされている場合に、デコ−ダは、５オペランド型命令を実行する演算回路へ第３ソースオペランドを供給し、出力される第２ディスティネーションオペランドを選択するように、ソースオペランド切換スイッチとディスティネーションオペランド選択スイッチとの切換制御を行うことを特徴とする。これによって、ＲＩＳＣ命令に拡張用コードがセットされている場合に対応して、５オペランド型命令を実行する形態となって処理が行われる。
【００２９】
本発明の請求項２１に記載のＲＩＳＣ計算機は、第１オペランドの１ワード長のデータと第２オペランドの１ワード長のデータとを夫々４ビット幅のブロックに区分し、第１オペランド各ブロックと第２オペランドの各ブロックとを先頭から順に組み合わせるシャッフル手段と、このシャッフル手段により組み合わされたブロック対における２ブロックの前後配置関係を、第３オペランドの１ワード長のデータに基づき制御する対交換手段と、を具備する演算回路を備えることを特徴とする。これによって、２つの１ワードに存在する４ビット単位のデータを各ワードにまたがって交換して配置を制御して並べ換え、所望の２ワードに変換することが可能となる。
【００３０】
本発明の請求項２２に記載のＲＩＳＣ計算機は、第１オペランドの１ワード長のデータと第２オペランドの１ワード長のデータとを夫々４ビット幅のブロックに区分し、第１オペランドと第２オペランドのブロックを一列に並べた状態で１ブロックおきに組み合わせ、奇数ブロックの組み合わせの並びの後に偶数ブロックの組み合わせの並びを配置する逆シャッフル手段と、この逆シャッフル手段により組み合わされたブロック対における２ブロックの前後配置関係を、第３オペランドの１ワード長のデータに基づき制御する対交換手段と、を具備する演算回路を備えることを特徴とする。これによって、２つの１ワードに存在する４ビット単位のデータを４ビットの１ブロックおきに組み合わせて交換して配置を制御して並べ換え、所望の２ワードに変換することが可能となる。
【００３１】
本発明の請求項２３に記載のＲＩＳＣ計算機は、複数ワードのパック１０進数データについて、請求項４に記載の、１ワードのデータを４ビット単位に不正閾値データと比較して、各４ビット単位の比較結果をディスティネーションオペランドの下位側に格納するｃｍｐｌｔ．ｐ命令を実行する演算回路を用いてワード単位に処理を行う不正パック１０進数検出手段と、前記複数ワードのパック１０進数データと０とを第１オペランド及び第２オペランドとし、前記不正パック１０進数検出手段の結果を第３オペランドとして、請求項２１に記載のｓｈｘ命令を実行する演算回路を用いてｓｈｘ命令による結果を得るデータ混合手段と、このデータ混合手段による混合結果を第１オペランド及び第２オペランドとし、０を第３オペランドとして、請求項２２に記載のｉｓｈｘ命令を実行する演算回路を用いて不正データを抽出する不正データ抽出手段と、を具備しパック１０進数の不正データを除去することを特徴とする。これによって、パック１０進数の不正データの除去を効率良く行うことができる。
【００３２】
本発明の請求項２４に記載のＲＩＳＣ計算機は、１ワード単位に、不正パック１０進数検出手段、データ混合手段、不正データ抽出手段を用いて処理を行い、複数ワード分の処理を繰り返すことを特徴とする。これによって、複数ワードのパック１０進数に対しては、そのワード数に対応した繰り返し処理によりパック１０進数の不正データの除去を行うことができる。
【００３３】
本発明の請求項２５に記載のＲＩＳＣ計算機は、演算回路を複数有し、各命令を並列に実行するＶＬＩＷ方式を採用すると共に、ｃｍｐｌｔ．ｐ命令を１サイクルに複数命令実行することを特徴とする。これによって、ｃｍｐｌｔ．ｐ命令が１サイクルに複数命令実行され、並列性の向上により処理サイクル数を減少させて高速処理を可能とする。
【００３４】
本発明の請求項２６に記載のＲＩＳＣ計算機は、２つのジェネラルレジスタで指定された倍語データを１本に連なった如くの２つのレジスタに配置した状態で、ジェネラルレジスタまたは即値で指定された数だけ左に論理シフトし、この結果前記連なった如くの２つのレジスタにおいて空いた下位ビットに０を挿入する倍語・左論理シフト手段を備える演算回路を具備することを特徴とする。これにより、１命令で倍語単位の左論理シフトを行うことができる。
【００３５】
本発明の請求項２７に記載のＲＩＳＣ計算機は、２つのジェネラルレジスタで指定された倍語データを１本に連なった如くの２つのレジスタに配置した状態で、ジェネラルレジスタまたは即値で指定された数だけ右に論理シフトし、この結果前記連なった如くの２つのレジスタにおいて空いた上位ビットに０を挿入する倍語・右論理シフト手段を備える演算回路を具備することを特徴とする。これにより、１命令で倍語単位の右論理シフトを行うことができる。
【００３６】
本発明の請求項２８に記載のＲＩＳＣ計算機は、２つのジェネラルレジスタで指定された倍語データを１本に連なった如くのレジスタに配置した状態で、ジェネラルレジスタまたは即値で指定された数だけ右に算術シフトし、この結果前記連なった如くの２つのレジスタにおいて空いた上位ビットに符号ビットを挿入する倍語・右算術シフト手段を備える演算回路を具備することを特徴とする。これにより、１命令で倍語単位の右算術シフトを行うことができる。
【００３７】
本発明の請求項２９に記載のＲＩＳＣ計算機は、メモリに記憶されているパック１０進数データをレジスタへ転送するＲＩＳＣ計算機であって、上記パック１０進数データが記憶されているメモリ上の最上位と最下位のワード境界を検出すると共に、ワード境界と当該パック１０進数データの終端との差を検出するワード境界・境界差検出手段と、このワード境界・境界差検出手段により検出されたワード境界を単位として、前記パック１０進数が記憶されている範囲のワードをレジスタに読み出すワード単位読出手段と、上記レジスタに読み出されたデータを、上記ワード境界・境界差検出手段により検出された差のデータに応じて、請求項２６に記載の倍語・左論理シフト手段を備え、ｓｌｌ．ｌ命令を実行する演算回路によりシフトするシフト手段とを具備することを特徴とする。これによって、メモリ内のパック１０進数データをレジスタに転送する場合に、メモリ内からワード単位に読み出してレジスタに適切にセットでき、処理の効率化を図ることができる。
【００３８】
本発明の請求項３０に記載のＲＩＳＣ計算機は、ワード単位読出手段による読み出しの後に、シフト手段によるシフトを行う動作を繰り返して、所要のパック１０進数をレジスタに転送することを特徴とする。これにより、読み出しとシフト、更に読み出しとシフトという繰り返しで、メモリ内のパック１０進数データをレジスタに適切に転送してセット可能である。
【００３９】
本発明の請求項３１に記載のＲＩＳＣ計算機は、演算回路を複数有し、各命令を並列実行するＶＬＩＷ方式を採用すると共に、ワード単位読出手段による読み出しと、ｓｌｌ．ｌ命令を１サイクルにて並列実行することを特徴とする。これによって、各命令が並列実行され、処理の高速化を図ることができる。
【００４０】
本発明の請求項３２に記載のＲＩＳＣ計算機は、命令に対する演算を実行する演算回路を複数有し、各命令を並列実行するＶＬＩＷ方式を採用したＲＩＳＣ計算機において、前記複数の演算回路の所要の演算回路が、第３ソースオペランドを取り込む経路と、第２ディスティネーションオペランド出力用の経路とを備え、３つのソースオペランドに対して演算を行い、その結果を２つのディスティネーションオペランドへ出力する５オペランド型命令を実行する演算回路であり、前記複数の演算回路の残りの演算回路が、第２ソースオペランドを取り込む経路と、第１ディスティネーションオペランド出力用の経路とを備え、２つのソースオペランドに対して演算を行い、その結果を１つのディスティネーションオペランドへ出力する３オペランド型命令を実行する演算回路であり、前記５オペランド型命令を実行する演算回路が、２つのジェネラルレジスタで指定された固定小数点１ワードデータを、第３のジェネラルレジスタで指定されたキャリーと共に加算し、加算結果を第１のディスティネーションレジスタに格納し、加算結果のキャリーを第２のディスティネーションレジスタに格納する加算手段を備えることを特徴とする。これにより、固定小数点１ワードデータのキャリー付加算を行うことができる。
【００４１】
本発明の請求項３３に記載のＲＩＳＣ計算機は、命令に対する演算を実行する演算回路を複数有し、各命令を並列実行するＶＬＩＷ方式を採用したＲＩＳＣ計算機において、前記複数の演算回路の所要の演算回路が、第３ソースオペランドを取り込む経路と、第２ディスティネーションオペランド出力用の経路とを備え、３つのソースオペランドに対して演算を行い、その結果を２つのディスティネーションオペランドへ出力する５オペランド型命令を実行する演算回路であり、前記複数の演算回路の残りの演算回路が、第２ソースオペランドを取り込む経路と、第１ディスティネーションオペランド出力用の経路とを備え、２つのソースオペランドに対して演算を行い、その結果を１つのディスティネーションオペランドへ出力する３オペランド型命令を実行する演算回路であり、前記５オペランド型命令を実行する演算回路が、第１のジェネラルレジスタで指定された固定小数点１ワードデータから第２のジェネラルレジスタで指定された固定小数点１ワードデータを減算すると共に、第３のジェネラルレジスタで指定されたキャリーの反転値を減算し、減算結果を第１のディスティネーションレジスタに格納し、減算結果のキャリーの反転値を第２のディスティネーションレジスタに格納する減算手段を備えることを特徴とする。これにより、固定小数点１ワードデータのキャリー付減算を行うことができる。
【００４２】
本発明の請求項３４に記載のＲＩＳＣ計算機は、命令に対する演算を実行する演算回路を複数有し、各命令を並列実行するＶＬＩＷ方式を採用したＲＩＳＣ計算機において、前記複数の演算回路の所要の演算回路が、第３ソースオペランドを取り込む経路と、第２ディスティネーションオペランド出力用の経路とを備え、３つのソースオペランドに対して演算を行い、その結果を２つのディスティネーションオペランドへ出力する５オペランド型命令を実行する演算回路であり、前記複数の演算回路の残りの演算回路が、第２ソースオペランドを取り込む経路と、第１ディスティネーションオペランド出力用の経路とを備え、２つのソースオペランドに対して演算を行い、その結果を１つのディスティネーションオペランドへ出力する３オペランド型命令を実行する演算回路であり、前記５オペランド型命令を実行する演算回路が、２つのジェネラルレジスタで指定されたパック１０進数１ワードデータを、第３のジェネラルレジスタで指定されたキャリーと共に加算し、加算結果を第１のディスティネーションレジスタに格納し、加算結果のキャリーを第２のディスティネーションレジスタに格納する加算手段を備えることを特徴とする。これにより、パック１０進数１ワードデータのキャリー付加算を行うことができる。
【００４３】
本発明の請求項３５に記載のＲＩＳＣ計算機は、命令に対する演算を実行する演算回路を複数有し、各命令を並列実行するＶＬＩＷ方式を採用したＲＩＳＣ計算機において、前記複数の演算回路の所要の演算回路が、第３ソースオペランドを取り込む経路と、第２ディスティネーションオペランド出力用の経路とを備え、３つのソースオペランドに対して演算を行い、その結果を２つのディスティネーションオペランドへ出力する５オペランド型命令を実行する演算回路であり、前記複数の演算回路の残りの演算回路が、第２ソースオペランドを取り込む経路と、第１ディスティネーションオペランド出力用の経路とを備え、２つのソースオペランドに対して演算を行い、その結果を１つのディスティネーションオペランドへ出力する３オペランド型命令を実行する演算回路であり、前記５オペランド型命令を実行する演算回路が、第１のジェネラルレジスタで指定されたパック１０進数１ワードデータから第２のジェネラルレジスタで指定されたパック１０進数１ワードデータを減算すると共に、第３のジェネラルレジスタで指定されたキャリーの反転値を減算し、減算結果が負数の場合には１０の補数として、減算結果を第１のディスティネーションレジスタに格納し、減算結果のキャリーの反転値を第２のディスティネーションレジスタに格納する減算手段を備えることを特徴とする。これにより、パック１０進数１ワードデータのキャリー付減算を行うことができる。
【００４４】
本発明の請求項３６に記載のＲＩＳＣ計算機は、複数ワードのパック１０進数からなる第１のデータと複数ワードのパック１０進数からなる第２のデータのそれぞれの符号の一致不一致を検出する一致不一致手段と、前記符号が一致していることが検出された場合に、ａｄｄｃ．ｐ命令を実行する請求項３４に記載の演算回路を用いて前記第１のデータと第２のデータとをワード単位に加算する加算手段と、前記符号が不一致であることが検出された場合に、ｓｕｂｃ．ｐ命令を実行する請求項３５に記載の演算回路を用いて前記第１のデータと第２のデータとをワード単位に減算する減算手段とを具備し、加減算の各段階で生じたキャリーを次段階にて用いて複数ワードのパック１０進数の加算を行うことを特徴とする。これによって、複数ワードのパック１０進数データの加算が１ワード単位に実行されることから、複数ワードのパック１０進数データの加算が高速処理されることになる。
【００４５】
本発明の請求項３７に記載のＲＩＳＣ計算機は、複数ワードのパック１０進数からなる第１のデータと複数ワードのパック１０進数からなる第２のデータのそれぞれの符号の一致不一致を検出する一致不一致手段と、前記符号が不一致であることが検出された場合に、ａｄｄｃ．ｐ命令を実行する請求項３４に記載の演算回路を用いて前記第１のデータと第２のデータとをワード単位に加算する加算手段と、前記符号が一致していることが検出された場合に、ｓｕｂｃ．ｐ命令を実行する請求項３５に記載の演算回路を用いて前記第１のデータと第２のデータとをワード単位に減算する減算手段とを具備し、加減算の各段階で生じたキャリーを次段階にて用いて複数ワードのパック１０進数の減算を行うことを特徴とする。これによって、複数ワードのパック１０進数データの減算が１ワード単位に実行されることから、複数ワードのパック１０進数データの減算が高速処理されることになる。
【００４６】
本発明の請求項３８に記載のＲＩＳＣ計算機は、第１の１ワードデータの最下位４ビットから４ビット間隔をおいて、パック１０進数を取り出し、この複数のパック１０進数データと第２の１ワードデータの最下位４ビットのパック１０進数データとを掛け合わせて、２桁のパック１０進数データを上記第１の１ワードデータに存在するパック１０進数データと同個数得て、ディスティネーションオペランドに出力する乗算手段を備える演算回路を具備することを特徴とする。これによって、パック１０進数を１桁おきに並べて被乗数を構成し、これに１桁のパック１０進数データを掛けて、２桁単位のパック１０進数による乗算結果を得ることが可能である。
【００４７】
本発明の請求項３９に記載のＲＩＳＣ計算機は、１ワードのパック１０進数からなる被乗数データと、パック１０進数の０が１ワード集合されてなるデータとをｓｈｘ命令を実行する請求項２１に記載の演算回路を用いて完全シャッフル処理する前処理手段と、この前処理手段により完全シャッフル処理された結果の２桁毎に対し、ｍｕｌ．ｐ命令を実行する請求項３８に記載の演算回路を用いて乗数を構成する１桁のパック１０進数データを掛け合わせて２桁単位の結果を得る乗算手段と、上記乗算手段により得られた結果に対しｉｓｈｘ命令を実行する請求項２２に記載の演算回路を用いて逆完全シャッフル処理して上位桁と下位桁に分離する桁分離手段と、上記桁分離手段により分離された上位桁の結果に対しｓｌｌ．ｌ命令を実行する請求項２６に記載の演算回路を用いて４ビットの左シフトを生じさせて、桁上がりによる桁位置との一致を図る桁位置補正手段と、この桁位置補正手段により補正された結果と、上記桁分離手段により分離された下位桁の結果とをａｄｄｃ．ｐ命令を実行する請求項３４に記載の演算回路を用いて加算すると共に、加算の結果生じたキャリーを前記桁位置補正手段により上位ワードへシフトされた数値に加算して、パック１０進数データの乗算結果を得る加算手段と、を具備することを特徴とする。これによって、１ワードのパック１０進数からなる被乗数データと１桁のパック１０進数からなる乗数データとの乗算が行われ、結果を得ることができる。
【００４８】
本発明の請求項４０に記載のＲＩＳＣ計算機は、複数ワードのパック１０進数の被乗数と複数ワードのパック１０進数の乗数との乗算を行う場合には、乗数の各桁のデータ毎に、被乗数の各ワードに対して、請求項３９に記載の各手段による演算を繰り返して結果を得て、更に、乗数の桁数を進めて同様の演算を繰り返して行い、それぞれの結果に必要なシフトを生じさせて最終結果とすることを特徴とする。これによって、複数ワードのパック１０進数の被乗数と複数ワードのパック１０進数の乗数との乗算演算を行うことが可能である。
【００４９】
【発明の実施の形態】
以下添付図面を参照して、本発明の実施例に係るＲＩＳＣ計算機を説明する。各図において同一の構成要素には、同一の符号を付して重複する説明を省略する。図１に本発明の実施の形態に係るＲＩＳＣ計算機の要部ブロック図が示されている。ＲＩＳＣ計算機は、オペランドデータがセットされるレジスタ及びディスティネーションレジスタが複数設けられているレジスタファイル１と、このレジスタファイル１の所要のレジスタのデータを用いてアンド（ａｎｄ）、オア（ｏｒ）、イクスクルーシブオア（ｘｏｒ）、ノット（ｎｏｔ）等の論理演算、更に、加算、減算等の従来からの算術演算と、シフト、ローテートなどの処理を行う演算回路２とを有し、演算回路２とレジスタファイル１との間には、入力ポート３、出力ポート４とが設けられている。
【００５０】
主メモリ５には、命令およびデータが記憶されており、プログラムカウンタ（ＰＣ）６の指示アドレスの命令が読み出され、デコ−ダ７に与えられる。デコ−ダ７は、命令をデコードし、結果を演算回路２へ与えて所要の論理演算、算術演算やデータ処理を行わせる。主メモリ５内のデータは演算回路２を介してレジスタファイル１へロードされ、逆に、レジスタファイル１内のデータが主メモリ５へストアされる。プログラムカウンタ６は、通常はインクリメンタ８により歩進され、ジャンプ命令等の場合に、ジャンプ先アドレス等が演算回路２から、または、加算器からセットされる。
【００５１】
本実施の形態の演算回路２は、１ワードデータ中の最上位ビットから最下位ビット方向に検索した場合に、最初にセットされているビットが、最下位ビットから数えて何ビット目であるかを検出する手段を備える。別言すると、１ワードデータ中の最上位ビットから最下位ビット方向に検索した場合に、最初にセットされているビットが、最下位ビットから数えて何ビット目であるかを検出し、結果をディスティネーションオペランドへ書き込む命令（以下、ｆｓｂｉｔ命令）を備える。
【００５２】
ｆｓｂｉｔ命令は、図２の１０１に示されるように、括弧内に処理対象のデータが格納されているジェネラルレジスタ（％ｒｓ１）と、結果を書き込むディスティネーションレジスタ（％ｒｄ１）とを指定して記述される。この１０１の表記の右には、ジェネラルレジスタ（ｒｓ１）にｆｓｂｉｔ命令の処理を施した結果を、ディスティネーションレジスタ（ｒｄ１）に書き込むことを示す表記１０２が対応付けられている。実際の例を図２により説明すると、ジェネラルレジスタ（ｒｓ１）に、図２に記載の通り３２ビットのデータが格納されているときには、先頭から４番目の「１」を検出して、このビットをＬＳＢから数えてビット番号「２８」を得て、この２８（＝１ｃ）をディスティネーションレジスタ（ｒｄ１）に書き込む。また、検索の結果、セットされているビットが見つからなかった場合（つまり、指定データが全ビット「０」の場合）には、ディスティネーションレジスタ（ｒｄ１）に「＃ｆｆｆｆｆｆｆｆ」を書き込む。
【００５３】
図３には、上記ｆｓｂｉｔ命令を実現するため、図１の演算回路２に搭載される構成が示されている。同図に示されるように、１ワード３２ビットのデータを８ビット単位にブロック分けして、各ブロック夫々にセットされたビットがあるか否かの検出をオアゲート１０−１〜１０−４からなる検出手段１１にて行う。そして、上記オアゲート１０−１〜１０−４の出力を４入力オアゲート１２へ導き、更にその反転信号をインバータ１３により得て、ディスティネーションレジスタ（ｒｄ１）に書き込むデータ中の上位２７ビットのデータを作成する。つまり、オアゲート１０−１〜１０−４の出力の全てが「０」であれば、上記２７ビットにはオール「１」が書き込まれ、その他の場合には、オール「０」が書き込まれる。また、８ビット単位にブロック分けした上位２ブロックに関するオアゲート１０−１、１０−２の出力の論理和をオアゲート１４により得てマルチプレクサ１５へ選択信号ｓ０として与える。また、８ビット単位にブロック分けした上位３ブロックに関し、そのブロック内にセットされているビットがあるか否かに応じた信号を、インバータとアンドゲート及びオアゲートからなる論理回路１６により得て、マルチプレクサ１５へ選択信号ｓ１として与える。マルチプレクサ１５には、上記各ブロックの夫々の上位７ビットが入力され、上記の選択信号ｓ０、ｓ１によりいずれかの７ビットが選択されて出力される。
【００５４】
上記選択信号ｓ０、ｓ１は、上記ブロックを左から第３、２、１、０パートとし、これらのパートを左からサーチしたとき、どのパートの論理和に初めて否（「０」）が現れるのかを示す。つまり、（ｓ０，ｓ１）が（１，１）のときは第３パート、（１，０）のときは第２パート、（０，１）のときは第１パートの論理和に初めて否（「０」）が現れることを示す。なお、第０パートの論理和に初めて否（「０」）が現れるとき及び、全てのパートの論理和が「０」であるときに、（ｓ０，ｓ１）＝（０，０）となるが、インバータ１３の出力信号により区別可能である。上記選択信号ｓ０、ｓ１により、どのパートの論理和に初めて否（「０」）が現れるのかが示され、これに対応するブロックの上位７ビットのデータがマルチプレクサ１５において選択される。
【００５５】
上記で選択された７ビットのデータは、オアゲート、アンドゲート及びインバータにより構成される論理回路１７に導かれて、最初に「１」が現れるのが８ビット中のいずれの位置であるかを示す３ビットの数値とされる。そして、この３ビットの数値と、選択信号ｓ０，ｓ１は、イクスクルーシブオアゲート１８−１〜１８−５に導かれて、インバータ１３の出力との排他的論理和が作成されて、オール「０」のときに対応した結果がえられるようにされる。そして、選択信号ｓ０，ｓ１は、第５ビット目及び第４ビット目を構成し、最初に「１」が現れるのが４つのパート中のいずれの位置であるかを示す数値とされる。
【００５６】
図４には、上記ｆｓｂｉｔ命令を実現するため、図１の演算回路２に搭載される他の構成例が示されている。同図に示されるように、１ワード３２ビットのデータを４ビット単位にブロック分けして、各ブロック夫々にセットされたビットがあるか否かの検出を複数のオアゲートからなる第１の検出手段にて行う。そして、各ブロックの論理和演算結果を順次オアゲートにより加えて、最終的にその反転信号をインバータ１３により得て、ディスティネーションレジスタ（ｒｄ１）に書き込むデータ中の上位２７ビットのデータを作成する。図３における論理回路１６と同一の構成の回路によって、各ブロックの上位３ビットの第１ビットがセットされているか否か、または、各ブロックの上位３ビットの第２ビットと第３ビットが（０，１）の組み合わせになっているかを検出する第２の検出手段を構成する。そして、上記検出結果に基づき、図３に示される如く結線されたオアゲートとアンドゲート及びインバータを用いて１ワードデータ中の、最上位側から最初にセットされているビットが、最下位ビットから数えて何ビット目であるかの数値を作成する数値作成手段を構成する。イクスクルーシブオアゲート１８−１〜１８−５は、インバータ１３の出力との排他的論理和を作成して、オール「０」のときに対応した結果が得られるようにされている。
【００５７】
以上の通り、本実施の形態によって、１ワードデータ中の最上位ビットから最下位ビット方向に検索した場合に、最初にセットされているビットが、最下位ビットから数えて何ビット目であるかの数値が、１命令によって得られる。
【００５８】
上記の演算回路２を備えたＲＩＳＣ計算機は、複数ワードからなるデータの有効ビット長を計算するＲＩＳＣ計算機として機能する。従来のＲＩＳＣ計算機においては、例えば、図５に示すように、４ワード（１ワード＝３２ビット）からなるデータの有効ビット長を計算する場合には、図６に示すフローチャートのプログラムにより処理を行っていた。つまり、レジスタｒ０に、４ワード長を示す１２８をセットし、レジスタｒ１に最上位ワードの読み出しアドレスＥＡをセットする（Ｓ１）。次に、レジスタｒ０の値（ここでは、１２８）が０より大であるか否かを検出し（Ｓ２）、ここでは、Ｔ（真）へ分岐する。次に、レジスタｒ１のアドレスにより指示された１ワードの内容をレジスタｒ２へセットし（Ｓ３）、このレジスタｒ２の内容である最初の１ワードが、オール０であるか否かを検出する（Ｓ４）。この例では、最初の１ワードはオール０であるから、Ｔ（真）へ分岐する。次に、レジスタｒ０の内容である１２８から１ワードに対応する３２を引いた数９６をレジスタｒ０へセットするとともに、レジスタｒ１の内容であるＥＡに４を加えて、第２番目の１ワードを指定するアドレスとしてレジスタｒ１へセットする（Ｓ５）。
【００５９】
これにより、ステップＳ２〜Ｓ４へと進むと、第２番目の１ワードが図５に示されるように、オール０ではないので、Ｆ（偽）へ分岐し、レジスタｒ３へ１６をセットし（Ｓ６）、このレジスタｒ３の内容が１以上であるか否かを検出する（Ｓ７）。ここでは、Ｔ（真）へ分岐して、レジスタｒ２の内容をレジスタｒ３の内容である１６右シフトしてレジスタｒ４にセットする（Ｓ８）。この結果、第２番目の１ワード中の上位１６ビットが下位１６ビットに残され、上位１６ビットに０が埋められたデータがレジスタｒ４にセットされる。次に、このｒ４のデータがオール０であるか否か検出される（Ｓ９）。この例では、図５から明らかなようにオール０ではなく、Ｆ（偽）へ分岐し、レジスタｒ４のデータをレジスタｒ２へセットして（Ｓ１０）、上記レジスタｒ３の内容である１６を１右シフト（つまり、１／２）することにより、８へ変換する（Ｓ１２）。
【００６０】
更に、ステップＳ６からＳ１２の処理を３回繰り返すと、レジスタｒ３の内容は１となると共に、レジスタｒ４の内容はオール０となる。この結果、ステップＳ９においてＴ（真）へ分岐し、レジスタｒ０の内容である９６からレジスタｒ３の内容である１を引いて９５を得てレジスタｒ０にセットする（Ｓ１１）。そして、次のステップＳ１２におけるレジスタ３の内容の１右シフトにより、レジスタｒ３の内容は０となり、再び戻るステップＳ７においてＦ（偽）へ分岐して、エンドとなる。即ち、レジスタｒ０にセットされている９５が有効ビット長ということになる。
【００６１】
図７には、上記図６のフローチャートに対応するニーモニック表記の命令コード列が示されている。この様な従来のＲＩＳＣ計算機による処理では、１ワード内がオール０か否かの処理においては、１ワード単位で行われているものの、図６、図７の破線枠内に示される処理では、１６ビット、８ビット、４ビット、２ビット、１ビットと処理単位を小さくして検出を行う繰り返し処理が必要であり、最終的な検出までの処理回数が多くなるという問題点がある。更に、図６、図７の破線枠内に示される処理は、制御依存関係が強く、１６ビット、８ビット、４ビット、２ビット、１ビットと処理単位が小さくなるにも拘らず、並列実行できない問題がある。
【００６２】
本実施の形態に係るｆｓｂｉｔ命令を実行するＲＩＳＣ計算機により上記問題点が解決される。つまり、図８に示されるように、最上位有効ワード検出手段３１、ワード位置検出手段３２、ビット位置検出手段３３、有効ビット長取得手段３４を具備する。上記最上位有効ワード検出手段３１は、複数ワードのデータについて、ワード単位に当該ワード内が全て０であるか否かに基づき、複数ワードの内のセットされたビットが存在する最上位有効ワードを検出する。ワード位置検出手段３２は、上記最上位有効ワード検出手段３１により検出された結果に対して図１に記載のｆｓｂｉｔ命令を実行可能な演算回路２を用いて、最初にセットされているビットが、最下位ビットから数えて何ビット目であるかを算出し、更に、この結果を用いて当該ワードの位置を示す数値を得る。更に、ビット位置検出手段３３は、上記有効最上位ワード検出手段３１により検出された最上位有効ワードに係る１ワードデータに対して図１に記載のｆｓｂｉｔ命令を実行可能な演算回路２を用いて、１ワードデータ中の最上位ビットから最下位ビット方向に検索した場合に、最初にセットされているビットが、最下位ビットから数えて何ビット目であるかを示す数値を得る。そして、有効ビット長取得手段３４は、上記ビット位置検出手段３３及びワード位置検出手段３２の検出結果に基づき、複数ワードからなるデータの有効ビット長データを得る。
【００６３】
具体的には、図３または図４に記載の構成を有する演算回路２を備える本発明のＲＩＳＣ計算機は、図９に示されるフローチャートの処理を行う。ここで処理される複数ワードのデータは図５に示されたデータである。まず、レジスタｒ１に最上位ワードの読み出しアドレスＥＡに３ワードのバイト数（１２バイト）に対応する１２を加えて最下位の１ワードの読み出しアドレスとしてセットし、どのワードまでオール０となっていないかを検出した回数を置数するためのレジスタｒ２に１をセットし、初めてセットされたデータが現れた位置を置数するためのレジスタｒ０を初期化して０をセットする（Ｓ２１）。次に、レジスタｒ１のアドレスにより指示された１ワードの内容をレジスタｒ３へセットし（Ｓ２２）、このレジスタｒ３の内容である最下位の１ワードが、オール０でないか否かを検出する（Ｓ２３）。この図５の例では、オール０ではないので、Ｔ（真）へ分岐してレジスタｒ０の内容である０とレジスタｒ２の内容である１との論理和（オア）を作成して、その結果である１をレジスタｒ０へセットすると共に、レジスタｒ３の内容である最下位の１ワードの内容をレジスタｒ４へセットする（Ｓ２４）。更に、レジスタｒ２の内容である１を１左シフトして２倍の２とし、これをレジスタｒ２へセットすると共に、レジスタｒ１の内容である（ＥＡ＋１２）から１ワードのバイト数に相当する４を引いて（ＥＡ＋８）として、これをレジスタｒ１へセットする（Ｓ２５）。そしてレジスタｒ２の内容が８以下であることを検出する（Ｓ２６）。ここでは、２であるからＴ（真）へ分岐し、ステップＳ２２へ戻って、アドレス（ＥＡ＋８）により読み出される最下位から２番目の１ワードについて上記と同様の処理を行う。このようなループ処理を３回繰り返すと、レジスタｒ０の内容は最下位ワードから３つ目を示す１１１となり、レジスタｒ４の内容は最上位から２番目の１ワードとなり、３回の繰り返しによりレジスタｒ２の値は１０００（＝８）となる。このため、次のループ処理でにおけるステップＳ２３では、最上位の１ワードがオール０であるか否かが判別され、図５から明らかなようにオール０であるためにＦ（偽）へ分岐し、ステップ２５の処理の結果、レジスタｒ２の内容は１００００（＝１６）となり、次のステップＳ２６においてＦ（偽）へ分岐する。ここまでの処理において、レジスタｒ０には、何ワードまでにデータがセットされているかを示すデータ（ここでは、ｒ０＝１１１）がセットされ、レジスタｒ４には最上位側から最初にセットされているデータが存在する１ワードが（ここでは、第２番目の１ワード）がセットされている。
【００６４】
次に、レジスタｒ０が０であるか否かを判別する（Ｓ２７）。この図５の例では、レジスタｒ０の内容は１１１となっているためにＦ（偽）へ分岐し、ステップＳ２８において、ｆｓｂｉｔ命令を用いて、レジスタｒ０内の１１１について処理を行い、結果である「２」をレジスタｒ０へセットし、これを５左シフトし３２倍して６４を得てレジスタｒ０へセットする（Ｓ２９）。つまり、第２バイトまでセットされたデータがあることに対応して、１ワードが３２ビットであるから、これの２倍の６４ビットまでセットされたデータがあるというデータが得られ、レジスタｒ０に「６４」がセットされている。次に、ｆｓｂｉｔ命令を用いて、レジスタｒ４にセットされている図５のデータにおける最上位から２番目の１ワードについて処理を行い、３０を得てレジスタｒ１へセットする（Ｓ３０）。つまり、最先のセットされた１ワード内では、ビット番号３０に、最初にセットされたデータ（つまり、１）が現れることが示される。そして、次にレジスタｒ０の内容の６４とレジスタｒ１の内容の３０と１とを加えて９５を得て、これをレジスタｒ０にセットして有効ビット長とする（Ｓ３１）。ここで、１を加えるのは、ステップＳ３０において、ｆｓｂｉｔ命令を用いるため、ビット位置と検出結果のビットの番号とに１のずれが生じるためである。
【００６５】
図１０に、上記図９のフローチャートに対応するニーモニック表記の命令コード列が示されている。このように、本実施の形態においては、１ワード内における処理及び有効ビットの数値を作成する処理にて、ループによる繰り返し処理ではなく、ｆｓｂｉｔ命令を用いて処理が可能であり、その分処理の簡素化と高速化が図られる。
【００６６】
本発明の次の実施の形態に係るＲＩＳＣ計算機は、ＶＬＩＷ方式を採用しており、その要部は図１１に示されるようである。つまり、図１の演算回路２と等しい構成を有する演算回路２−１〜２−４が並列処理を行う。デコ−ダ２１は、各演算回路２−１〜２−４に命令のデコード結果を与えて夫々に所定の演算を行わせる。演算処理すべきオペランドデータはレジスタ２２から入力ポート２３を介して各演算回路２−１〜２−４に取り出され、演算処理結果は各演算回路２−１〜２−４から出力ポート２４を介してレジスタファイル２２へ戻される。
【００６７】
この様な構成のＲＩＳＣ計算機により、図１０に示される命令コード列の処理を並列実行させる場合には、図１２に示される命令コード列の処理を行わせることになる。この図１２の命令コード列においては（以降の説明でもそうであるが）、セミコロン「；」の前に記載されている０〜３の記号は、それぞれ演算回路２−１〜２−４において実行される命令であることを示し、０〜３の記号が抜けている場合には該当する演算回路（２−１〜２−４の１つ）がその前の命令の実行のために用いられていることを示す。また、括弧［  ］内のｔは真への分岐先を、ｆは偽の分岐先を示し、ｍｏｖ命令の前に付された［０ｔ］〜［３ｔ］は、ｔｓｔｎｅ命令等のテスト命令が真となるときのそれぞれ＠０〜＠３に対応する処理であることを示し、ａｄｄ命令の前に付された［０ｆ］はｔｓｔｂｚ命令等のテスト命令が偽となるときに対応する処理であることを示す。この表記は、以下の実施の形態においても同様な意味に用いている。
【００６８】
この様に、本発明の実施例に係るＲＩＳＣ計算機によれば、演算回路２−１〜２−４がｆｓｂｉｔ命令を実行可能であり、セットされているビット位置の検出を条件判定と分岐命令で行う必要がないので、有効ビット長計算機として動作させたときに、並列性の向上を図ることができ、高速な処理が可能である。
【００６９】
従来のＲＩＳＣ計算機は、前述の通り、レジスタ長は６４ビットや３２ビットであり、これらをビット単位に操作する命令として、ａｎｄ、ｏｒ、ｘｏｒ、ｎｏｔなどの論理演算やシフト、ローテートなどを用いて処理を行っている。そして、これらの命令を用いれば、４ビット単位の処理を３２ビット長や６４ビット長のワード単位での処理として同時複数実行できる。しかし、比較処理に関しては、比較の後に分岐命令が配置されているのが通例である等の理由で、４ビットのデータを複数同時に大小比較、または、一致検出することは困難であった。
【００７０】
本実施の形態に係るＲＩＳＣ計算機は、図１の構成を有する。そして演算回路２は、第１オペランドの１ワードのデータと第２オペランドの１ワードのデータを４ビット単位に比較して、第２オペランドの４ビットデータが第１オペランドの４ビットデータより大きいか否か検出し、各４ビット単位の比較結果をディスティネーションオペランドの下位側に格納する比較手段を備える。また、演算回路２は、１ワードのデータを４ビット単位に比較して、第２オペランドの４ビットデータが第１オペランドの４ビットデータと等しいか否か検出し、各４ビット単位の比較結果をディスティネーションオペランドの下位側に格納する比較手段を備える。
【００７１】
別言すると、第１オペランドの１ワードのデータと第２オペランドの１ワードのデータを４ビット単位に比較して、第２オペランドの４ビットデータが第１オペランドの４ビットデータより大きいか否か検出し、各４ビット単位の比較結果をディスティネーションオペランドの下位側に格納する命令（以下、ｃｍｐｌｔ．ｐ命令）を備える。また、第１オペランドの１ワードのデータと第２オペランドの１ワードのデータを４ビット単位に比較して、第２オペランドの４ビットデータが第１オペランドの４ビットデータと等しいか否か検出し、各４ビット単位の比較結果をディスティネーションオペランドの下位側に格納する命令（以下、ｃｍｐｅｑ．ｐ命令）を備える。
【００７２】
ｃｍｐｌｔ．ｐ命令は、図１３の１０３に示されるように、括弧内に処理対象のデータが格納されている２つのジェネラルレジスタ（％ｒｓ１）、（％ｒｓ２）と、結果を書き込むディスティネーションレジスタ（％ｒｄ１）とを指定して記述される。この１０３の表記の右には、ジェネラルレジスタ（％ｒｓ２）のデータがジェネラルレジスタ（％ｒｓ１）のデータより大であることを条件に、ディスティネーションレジスタ（％ｒｄ１）に１を書き込むことを示す表記１０４が対応付けられている。また、図１３における１０５の表記は、ディスティネーションレジスタ（％ｒｄ１）のビット位置と、比較結果及び比較対象のビット位置との関係を示すものである。例えば、表記１０５の第１行目は、ジェネラルレジスタ（％ｒｓ２）の位置２８から３１までの４ビットのデータがジェネラルレジスタ（％ｒｓ１）の位置２８から３１までの４ビットのデータより大であることを条件に、ディスティネーションレジスタ（％ｒｄ１）の位置３１に１を書き込むことを示す。この条件が成り立たないときには、ディスティネーションレジスタ（％ｒｄ１）には、０がセットされる。
【００７３】
また、ｃｍｐｅｑ．ｐ命令は、図１４の１０６に示されるように、括弧内に処理対象のデータが格納されている２つのジェネラルレジスタ（％ｒｓ１）、（％ｒｓ２）と、結果を書き込むディスティネーションレジスタ（％ｒｄ１）とを指定して記述される。この１０６の表記の右には、ジェネラルレジスタ（％ｒｓ１）のデータとジェネラルレジスタ（％ｒｓ２）のデータとが等しいことを条件に、ディスティネーションレジスタ（％ｒｄ１）に１を書き込むことを示す表記１０７が対応付けられている。また、図１４における１０８の表記は、ディスティネーションレジスタ（％ｒｄ１）のビット位置と、比較結果及び比較対象のビット位置との関係を示すものである。例えば、表記１０８の第１行目は、ジェネラルレジスタ（％ｒｓ１）の位置２８から３１までの４ビットのデータがジェネラルレジスタ（％ｒｓ２）の位置２８から３１までの４ビットのデータと等しいことを条件に、ディスティネーションレジスタ（％ｒｄ１）の位置３１に１を書き込むことを示す。この条件が成り立たないときには、ディスティネーションレジスタ（％ｒｄ１）には、０がセットされる。
【００７４】
なお、上記ｃｍｐｌｔ．ｐ命令、ｃｍｐｅｑ．ｐ命令を実現するために、４ビット比較器を８個備えさせて、演算回路２を構成する。４ビット比較器の内部構成は、例えば、ＳＮ７４８５等の論理回路に準じた構成とする。以上の通りの本発明の実施の形態によって、１ワードのデータを４ビットに分割して各４ビット毎に等しいか否か比較する演算、または、１ワードのデータを４ビットに分割して各４ビット毎の大小比較をする演算が１命令により実行される。
【００７５】
上記演算回路２を備えたＲＩＳＣ計算機は、複数ワードのパック１０進数データについて有効桁数を計算するＲＩＳＣ計算機として機能する。従来のＲＩＳＣ計算機においては、例えば、図１５に示されるように、４ワードからなるパック１０進数の有効桁数を計算する場合には、図１７に示すフローチャートのプログラムにより処理を行っていた。なお、図１５に示される数字は、１つ１つがパック１０進数を示す（従って、本来は４ビットの２進データ）が、ここでは、簡略化して示している。さて、有効桁数を計算する処理においては、レジスタｒ０に４ワードに対するパック１０進数の桁数である３２をセットし、レジスタｒ１に４ワードのデータの最上位の１ワードの読み出しアドレスをセットする（Ｓ３３）。次に、レジスタｒ０の内容が０より大であるか否かを検出する（Ｓ３４）。ここでは、レジスタｒ０の内容は３２であるから、Ｔ（真）へ分岐して、レジスタｒ１により示されるアドレスに対応する最上位の１ワードのデータをレジスタｒ２にセットし（Ｓ３５）、このレジスタｒ２にセットされたデータがオール０であるか否か検出する（Ｓ３６）。図１５から明らかなように、この例では最上位の１ワードはオール０であるから、Ｔ（真）へ分岐して、レジスタｒ０の内容である３２から８（１ワード内のパック１０進数の桁数）を引いてレジスタｒ０にセットすると共に、レジスタｒ１の内容であるＥＡに４を加えて最上位から２番目のワードの読み出しアドレスを得て、これをレジスタｒ１へセットし（Ｓ３７）、ステップＳ３４からＳ３７を繰り返す。つまり、このステップＳ３４からＳ３７の繰り返しによって、１ワード内のパック１０進数がオール０ではない１ワードを最上位側から検出する。
【００７６】
この例では、最上位から第３番目の１ワードに初めて０以外のパック１０進数が現れるので、そのとき、ステップＳ３６においてＦ（偽）へ分岐する。このとき、レジスタｒ０の内容は１６となっている。また、レジスタｒ２には、最上位から第３番目の１ワードのデータ（パック１０進数で、０００３５０２１）がセットされている。そして、レジスタｒ３に１ワード（３２ビット）の半分である１６（ビット）をシフト量としてセットすると共に、このシフト量１６（ビット）に対応するパック１０進数の桁数である４をレジスタｒ５にセットし（Ｓ３８）、次に、レジスタｒ３の内容が４以上であるか否かを検出する（Ｓ３９）。ここでは、レジスタｒ３の内容は１６であるので、Ｔ（真）へ分岐し、レジスタｒ２の内容である最上位から第３番目の１ワードのデータをレジスタｒ３にセットされている１６右シフトし、レジスタｒ４へセットする（Ｓ４０）。
【００７７】
この結果、最上位から第３番目の１ワードに初めて現れる０以外のパック１０進数である「３」が１ワード内の最下位の４ビットを構成するようになり、それより上位のパック１０進数は０となる。次に、レジスタｒ４の内容が０か否か検出され（Ｓ４１）、ここでは、上述の通り０ではないので、Ｆ（偽）へ分岐して、レジスタｒ４の上記内容をレジスタｒ２へセットし（Ｓ４２）、更に、レジスタｒ３の内容を１右シフトしてセットされていた数値１６を半分の８へ変更してレジスタｒ３へセットすると共に、レジスタｒ５の内容である４も１右シフトしてその半分の２へ変更してこの２をレジスタｒ５へセットして（Ｓ４４）、ステップＳ３９へ戻る。そして、ステップＳ３９ではＴ（真）へ分岐し、ステップＳ４０において、レジスタｒ２の内容をレジスタｒ３の内容である８右シフトするとオール０となり、ステップＳ４１においてＴへ分岐し、レジスタｒ０の内容である１６からレジスタｒ５の内容である２を引き１４を得てレジスタｒ０へセットして（Ｓ４３）、更に、レジスタｒ３の内容を１右シフトしてセットされていた数値８を半分の４へ変更してレジスタｒ３へセットすると共に、レジスタｒ５の内容である２も１右シフトしてその半分の１へ変更してこの１をレジスタｒ５へセットして（Ｓ４４）、ステップＳ３９へ戻る。
【００７８】
そして、ステップＳ３９では、レジスタｒ３の内容がまだ４であるからＴ（真）へ分岐し、ステップＳ４０において、レジスタｒ２の内容（パック１０進数である「３」が１ワード内の最下位の４ビットを構成するデータ）をレジスタｒ３の内容である４右シフトするとオール０となり、ステップＳ４１においてＴへ分岐し、レジスタｒ０の内容である１４からレジスタｒ５の内容である１を引き１３を得てレジスタｒ０へセットして（Ｓ４３）、更に、レジスタｒ３の内容を１右シフトしてセットされていた数値４を半分の２へ変更してレジスタｒ３へセットすると共に、レジスタｒ５の内容である１も１右シフトして０へ変更してこの０をレジスタｒ５へセットして（Ｓ４４）、ステップＳ３９へ戻る。この結果、ステップＳ３９ではレジスタｒ３の内容が２であるからＦ（偽）へ分岐して終了となる。つまり、レジスタｒ０にセットされている１３がパック１０進数の有効桁数である。
【００７９】
図１８には、上記図１７のフローチャートに対応するニーモニック表記の命令コード列が示されている。この様な従来のＲＩＳＣ計算機による処理では、当初の１ワード内のパック１０進数がオール０か否かの処理においては、１ワード単位で行われているものの、図１７、図１８の破線枠内に示される処理では、１６ビット、８ビット、４ビットと処理単位を小さくして検出を行う繰り返し処理が必要であり、最終的な検出までの処理回数が多くなるという問題点がある。更に、図１７、図１８の破線枠内に示される処理は、制御依存関係が強く、１６ビット、８ビット、４ビットと処理単位が小さくなるにも拘らず、並列実行できない問題がある。
【００８０】
本実施の形態に係るｆｓｂｉｔ命令及びｃｍｐｌｔ．ｐ命令を実行するＲＩＳＣ計算機により上記問題点が解決される。つまり、本実施の形態に係るＲＩＳＣ計算機は図１６に示されるように、ワード単位処理手段４１、２次処理処理手段４２、最先セットビット値検出手段４３、有効桁数取得手段４４を具備する。ワード単位処理手段４１は、複数ワードのパック１０進数データについて、第１オペランドの１ワードのデータと第２オペランドの１ワードのデータを４ビット単位に比較して、第２オペランドの４ビットデータが第１オペランドの４ビットデータより大きいか否か検出し、各４ビット単位の比較結果をディスティネーションオペランドの下位側に格納するｃｍｐｌｔ．ｐ命令を実行する図１の演算回路２を用いてワード単位に処理を行う。２次処理処理手段４２は、上記ワード単位処理手段４１による処理結果を上記複数ワードのワードデータ順に並べる処理を行う。また、最先セットビット値検出手段４３は、上記２次処理手段４２による処理結果について、ｆｓｂｉｔ命令を実行可能な演算回路２を用いて、１ワードデータ中の最上位ビットから最下位ビット方向に検索した場合に、最初にセットされているビットが、最下位ビットから数えて何ビット目であるかを示す数値を得る。更に、有効桁数取得手段４４は、この最先セットビット値検出手段４３の検出結果に基づきパック１０進数の有効桁数を得る。
【００８１】
以上のように、ｆｓｂｉｔ命令及びｃｍｐｌｔ．ｐ命令を実行可能な演算回路２を備える本発明のＲＩＳＣ計算機は、図１９に示されるフローチャートの処理を行う。ここで処理されるデータは図１５に示されているパック１０進数のデータである。まず、レジスタｒ１に最上位ワードの読み出しアドレスＥＡに１２を加えて最下位の１ワードの読み出しアドレスとしてセットする（Ｓ４５）。次に、レジスタｒ１のアドレスにより指示された１ワードの内容をレジスタｒ２へセットし（Ｓ４６）、このレジスタｒ２の内容である最下位の１ワードに対して、ｃｍｐｌｔ．ｐ命令を用いて０と比較し、結果をレジスタｒ０へセットすると共に、レジスタｒ１の内容から４を引いて最下位から２番目の１ワードの読み出しアドレスを得てこれをレジスタｒ１へセットする（Ｓ４７）。これによって、レジスタｒ０の下位８ビットには、上記最下位の１ワードのパック１０進数のそれぞれに対応して、パック１０進数が０でなければ１がセットされ、パック１０進数が０であれば０がセットされる。
【００８２】
次に、レジスタｒ１のアドレスにより指示された１ワードの内容をレジスタｒ２へセットし（Ｓ４８）、このレジスタｒ２の内容である最下位から２番目の１ワードに対して、ｃｍｐｌｔ．ｐ命令を用いて０と比較し、結果をレジスタｒ２へセットする（Ｓ４９）。これによって、レジスタｒ２の下位８ビットには、上記最下位から２番目の１ワードのパック１０進数のそれぞれに対応して、パック１０進数が０でなければ１がセットされ、パック１０進数が０であれば０がセットされる。更に、このレジスタｒ２の内容を８左シフトして最下位から２番目のワードについての結果位置に位置付け（Ｓ５０）、レジスタｒ０とｒ２との内容の論理和を作成して、処理結果を上記２ワードのワードデータ順に並べ、これをレジスタｒ０へセットし、また、レジスタｒ１の内容から４を引いて最上位から２番目の１ワードの読み出しアドレスを得てこれをレジスタｒ１へセットする（Ｓ５１）。以下ステップＳ５２からステップＳ５９までにおいて、残りの２ワードについてｃｍｐｌｔ．ｐ命令を用いてパック１０進数の数値毎に０か否かのデータを得て、シフト及び論理和を用いて図１５の４ワードのワードデータ順に並べ、これをレジスタｒ０へセットする（Ｓ５９）。以上により、図１５から明らかなようにレジスタｒ０内のデータは、最上位から１８個の０が続き、その次は１で、以下、パック１０進数が０でない限りにおいて１となる。
【００８３】
次に、レジスタｒ０の内容が０であるか否かを判別する（Ｓ６０）。この例（図１５）では、上記のように、レジスタｒ０の内容が０ではないから、Ｆ（偽）へ分岐してｆｓｂｉｔ命令を用いてレジスタｒ０の内容について処理を行い、これをレジスタｒ０へセットする（Ｓ６１）。このとき、図１５から判るように、１３ビット目が最先頭位置であるから、ｆｓｂｉｔ命令の性格から、上記１３から１を引いた１２がレジスタｒ０にセットされる。次に、レジスタｒ０の内容である１２に１を加えてパック１０進数の有効桁数１３が得られる（Ｓ６２）。
【００８４】
図２０に、上記図１９のフローチャートに対応するニーモニック表記の命令コード列が示されている。このように、本実施の形態においては、ワード単位の処理についてはｃｍｐｌｔ．ｐ命令を用いて、更に、１ワード内における処理及び有効桁数を作成する処理においてはｆｓｂｉｔ命令を用いて、ループによる繰り返し処理をなくし、その分処理の簡素化と高速化が図られる。
【００８５】
本発明の他の実施の形態に係るＲＩＳＣ計算機は、ＶＬＩＷ方式を採用しており、その要部は図１１に示されるようである。つまり、図１の演算回路２と等しい構成を有する演算回路２−１〜２−４が並列処理を行う。演算回路２−１〜２−４は、ｃｍｐｌｔ．ｐ命令、ｆｓｂｉｔ命令を実行可能である。この様な構成のＲＩＳＣ計算機により、図２０に示される命令コード列の処理を並列実行させる場合には、図２１に示される命令コード列の処理を行わせることになる。この例では、第３番目の演算回路（例えば、２−３）が、ｃｍｐｌｔ．ｐ命令を１サイクルに１命令実行して４回繰り返す。このようにして、本発明の実施例に係るＲＩＳＣ計算機によれば、演算回路２−１〜２−４がｆｓｂｉｔ命令及びｃｍｐｌｔ．ｐ命令を実行可能であり、０でないパック１０進数がセットされている位置の検出、その処理結果に対し、セットされているビット位置の検出を条件判定と分岐命令で行う必要がないので、有効桁数計算機として動作させたときに、並列性の向上を図ることができ、高速な処理が可能である。
【００８６】
上記構成のＲＩＳＣ計算機により、図２０に示される命令コード列の処理を並列実行させる場合の別の命令コード列を図２２に示す。上記図２１の例では、第３番目の演算回路（例えば、２−３）が、ｃｍｐｌｔ．ｐ命令を１サイクルに１命令実行して４回繰り返すようにしたが、この図２２の例では、ｃｍｐｌｔ．ｐ命令を１サイクルに複数命令実行する。つまり、それぞれ演算回路２−１〜２−４が、第２サイクルにおいて並列的にｃｍｐｌｔ．ｐ命令を実行している。これにより、図２１の構成では、１０サイクル必要であったのに対し、本実施例では７サイクルで済むようになっており、処理の高速化が図られている。
【００８７】
従来のＲＩＳＣ計算機は、前述の通り、レジスタ長は６４ビットや３２ビットであり、これらをビット単位に操作する命令として、ａｎｄ、ｏｒ、ｘｏｒ、ｎｏｔなどの論理演算やシフト、ローテートなどを用いて処理を行っている。そして、これらの命令を用いれば、１バイト単位の処理を３２ビット長や６４ビット長のワード単位での処理として同時複数実行できる。しかし、比較処理に関しては、比較の後に分岐命令が配置されているのが通例である等の理由で、１バイトのデータを複数同時に大小比較、または、一致検出することは困難であった。
【００８８】
本実施の形態に係るＲＩＳＣ計算機は、図１の構成を有する。そして演算回路２は、第１オペランドの１ワードのデータと第２オペランドの１ワードのデータを１バイト単位に比較して、第２オペランドの１バイトデータが第１オペランドの１バイトデータより大きいか否か検出し、各１バイト単位の比較結果をディスティネーションオペランドの下位側に格納する比較手段を備える。また、演算回路２は、第１オペランドの１ワードのデータと第２オペランドの１ワードのデータを１バイト単位に比較して、第２オペランドの１バイトデータが第１オペランドの１バイトデータと等しいか否か検出し、各１バイト単位の比較結果をディスティネーションオペランドの下位側に格納する比較手段を備える。
【００８９】
別言すると、第１オペランドの１ワードのデータと第２オペランドの１ワードのデータを１バイト単位に比較して、第２オペランドの１バイトデータが第１オペランドの１バイトデータより大きいか否か検出し、各１バイト単位の比較結果をディスティネーションオペランドの下位側に格納する命令（以下、ｃｍｐｌｔ．ｂ命令）を備える。また、第１オペランドの１ワードのデータと第２オペランドの１ワードのデータを１バイト単位に比較して、第２オペランドの１バイトデータが第１オペランドの１バイトデータと等しいか否か検出し、各１バイト単位の比較結果をディスティネーションオペランドの下位側に格納する命令（以下、ｃｍｐｅｑ．ｂ命令）を備える。
【００９０】
ｃｍｐｌｔ．ｂ命令は、図２３の１１０に示されるように、括弧内に処理対象のデータが格納されている２つのジェネラルレジスタ（％ｒｓ１）、（％ｒｓ２）と、結果を書き込むディスティネーションレジスタ（％ｒｄ１）とを指定して記述される。この１１０の表記の右には、ジェネラルレジスタ（％ｒｓ２）のデータがジェネラルレジスタ（％ｒｓ１）のデータより大であることを条件に、ディスティネーションレジスタ（％ｒｄ１）に１を書き込むことを示す表記１１１が対応付けられている。また、図２３における１１２の表記は、ディスティネーションレジスタ（％ｒｄ１）のビット位置と、比較結果及び比較対象のビット位置との関係を示すものである。例えば、表記１１２の第１行目は、ジェネラルレジスタ（％ｒｓ２）の位置２４から３１までの１バイトのデータがジェネラルレジスタ（％ｒｓ１）の位置２４から３１までの１バイトのデータより大であることを条件に、ディスティネーションレジスタ（％ｒｄ１）の位置３１に１を書き込むことを示す。この条件が成り立たないときには、ディスティネーションレジスタ（％ｒｄ１）には、０がセットされる。
【００９１】
また、ｃｍｐｅｑ．ｂ命令は、図２４の１１３に示されるように、括弧内に処理対象のデータが格納されている２つのジェネラルレジスタ（％ｒｓ１）、（％ｒｓ２）と、結果を書き込むディスティネーションレジスタ（％ｒｄ１）とを指定して記述される。この１１３の表記の右には、ジェネラルレジスタ（％ｒｓ１）のデータとジェネラルレジスタ（％ｒｓ２）のデータとが等しいことを条件に、ディスティネーションレジスタ（％ｒｄ１）に１を書き込むことを示す表記１１４が対応付けられている。また、図２４における１１５の表記は、ディスティネーションレジスタ（％ｒｄ１）のビット位置と、比較結果及び比較対象のビット位置との関係を示すものである。例えば、表記１１５の第１行目は、ジェネラルレジスタ（％ｒｓ１）の位置２４から３１までの１バイトのデータがジェネラルレジスタ（％ｒｓ２）の位置２４から３１までの１バイトのデータと等しいことを条件に、ディスティネーションレジスタ（％ｒｄ１）の位置３１に１を書き込むことを示す。この条件が成り立たないときには、ディスティネーションレジスタ（％ｒｄ１）には、０がセットされる。
【００９２】
なお、上記ｃｍｐｌｔ．ｂ命令、ｃｍｐｅｑ．ｂ命令を実現するために、１バイト（８ビット）比較器を４個備えさせて、演算回路２を構成する。１バイト比較器の内部構成は、例えば、ＳＮ７４８５等の論理回路に準じた構成とする。以上の通りの本発明の実施の形態によって、１ワードのデータを１バイトに分割して各１バイト毎に等しいか否か比較する演算、または、１ワードのデータを１バイトに分割して各１バイト毎の大小比較をする演算が１命令により実行されることになる。
【００９３】
上記演算回路２を備えたＲＩＳＣ計算機は、複数ワードのデータについて有効バイト長を計算するＲＩＳＣ計算機として機能する。従来のＲＩＳＣ計算機においては、例えば、図２５（ａ）に示されるように、４ワードからなるデータの有効バイト長を計算する場合には、図２７に示すフローチャートのプログラムにより処理を行っていた。なお、図２５（ａ）に示される数字は、１つ１つが４ビット分に対応する数を示し、２つの数値により１バイトが構成されているものである。さて、有効バイト長を計算する処理においては、レジスタｒ０に、４ワードに対応するバイト数１６をセットし、レジスタｒ１に４ワードのデータの最上位の１ワードの読み出しアドレスＥＡをセットする（Ｓ６５）。次に、レジスタｒ０の内容が０より大であるか否かを検出する（Ｓ６６）。ここでは、レジスタｒ０の内容は１６であるから、Ｔ（真）へ分岐して、レジスタｒ１により示されるアドレスに対応する最上位の１ワードのデータをレジスタｒ２にセットし（Ｓ６７）、このレジスタｒ２にセットされたデータがオール０であるか否か検出する（Ｓ６８）。図２５（ａ）から明らかなように、この例では最上位の１ワードはオール０であるから、Ｔ（真）へ分岐して、レジスタｒ０の内容である１６から４（１ワード内に含まれるバイト数）を引いて１２を得て、これをレジスタｒ０にセットすると共に、レジスタｒ１の内容であるＥＡに４を加えて最上位から２番目のワードの読み出しアドレスを得て、これをレジスタｒ１へセットし（Ｓ６９）、ステップＳ６６からＳ６９を繰り返す。つまり、このステップＳ６６からＳ６９の繰り返しによって、１ワード内がオール０ではない１ワードを最上位側から検出する。
【００９４】
この例では、最上位から第３番目の１ワードに初めて０以外の数３が現れるので、そのとき、ステップＳ６８においてＦ（偽）へ分岐する。このとき、レジスタｒ０の内容は８となっている。また、レジスタｒ２には、最上位から第３番目の１ワードのデータ（０００３５０２１）がセットされている。そして、レジスタｒ３に１ワード（３２ビット）の半分である１６（ビット）をシフト量としてセットすると共に、このシフト量１６（ビット）に対応するバイト数である２をレジスタｒ５にセットし（Ｓ７０）、次に、レジスタｒ３の内容が８以上であるか否かを検出する（Ｓ７１）。ここでは、レジスタｒ３の内容は１６であるので、Ｔ（真）へ分岐し、レジスタｒ２の内容である最上位から第３番目の１ワードのデータをレジスタｒ３にセットされている数だけ、つまり１６右シフトし、レジスタｒ４へセットする（Ｓ７２）。
【００９５】
この結果、最上位から第３番目の１ワードに初めて現れる０以外の数である「３」が１ワード内の最下位の４ビットを構成するようになり、それより上位の数は０となる。次に、レジスタｒ４の内容が０か否か検出され（Ｓ７３）、ここでは、上述の通り０ではないので、Ｆ（偽）へ分岐して、レジスタｒ４の上記内容をレジスタｒ２へセットし（Ｓ７４）、更に、レジスタｒ３の内容を１右シフトしてセットされていた数値１６を半分の８へ変更してレジスタｒ３へセットすると共に、レジスタｒ５の内容である２も１右シフトしてその半分の１へ変更してこの１をレジスタｒ５へセットして（Ｓ７６）、ステップＳ７１へ戻る。そして、ステップＳ７１ではＴ（真）へ分岐し、ステップＳ７２において、レジスタｒ２の内容をレジスタｒ３の内容である８だけ右シフトするとオール０となり、ステップＳ７３においてＴ（真）へ分岐し、レジスタｒ０の内容である８からレジスタｒ５の内容である１を引き７を得てレジスタｒ０へセットする（Ｓ７５）。更に、レジスタｒ３の内容を１右シフトしてセットされていた数値８を半分の４へ変更してレジスタｒ３へセットすると共に、レジスタｒ５の内容である１も１右シフトして０へ変更してこの１をレジスタｒ５へセットして（Ｓ７６）、ステップＳ７１へ戻る。
【００９６】
この結果、ステップＳ７１ではレジスタｒ３の内容が４であるからＦ（偽）へ分岐して終了となる。つまり、レジスタｒ０にセットされている７が図２５（ａ）に示される当該４ワードの有効バイト長である。
【００９７】
図２８には、上記図２７のフローチャートに対応するニーモニック表記の命令コード列が示されている。この様な従来のＲＩＳＣ計算機による処理では、当初の１ワード内がオール０か否かの処理においては、１ワード単位で行われているものの、図２７、図２８の破線枠内に示される処理では、１６ビット、８ビットと処理単位を小さくして検出を行う繰り返し処理が必要であり、最終的な検出までの処理回数が多くなるという問題点がある。更に、図２７、図２８の破線枠内に示される処理は、制御依存関係が強く、１６ビット、８ビットと処理単位が小さくなるにも拘らず、並列実行できない問題がある。
【００９８】
本実施の形態に係るｆｓｂｉｔ命令及びｃｍｐｌｔ．ｂ命令を実行するＲＩＳＣ計算機により上記問題点が解決される。つまり、本実施の形態に係るＲＩＳＣ計算機は図２６に示されるように、ワード単位処理手段４５、２次処理処理手段４６、最先セットビット値検出手段４７、有効バイト長取得手段４８を具備する。ワード単位処理手段４５は、複数ワードのデータについて、第１オペランドの１ワードのデータと第２オペランドの１ワードのデータを１バイト単位に比較して、第２オペランドの１バイトデータが第１オペランドの１バイトデータより大きいか否か検出し、各１バイト単位の比較結果をディスティネーションオペランドの下位側に格納するｃｍｐｌｔ．ｂ命令を実行可能な図１の演算回路２を用いてワード単位に処理を行う。２次処理処理手段４６は、上記ワード単位処理手段４５による処理結果を上記複数ワードのワードデータ順に並べる処理を行う。また、最先セットビット値検出手段４７は、上記２次処理手段４６による処理結果について、ｆｓｂｉｔ命令を実行可能な演算回路２を用いて、１ワードデータ中の最上位ビットから最下位ビット方向に検索した場合に、最初にセットされているビットが、最下位ビットから数えて何ビット目であるかを示す数値を得る。更に、有効バイト長取得手段４８は、上記の最先セットビット値検出手段４８の検出結果に基づき有効バイト長を得る。
【００９９】
以上のように、ｆｓｂｉｔ命令及びｃｍｐｌｔ．ｂ命令を実行可能な演算回路２を備える本発明のＲＩＳＣ計算機は、図２９に示されるフローチャートの処理を行う。ここで処理されるデータは図２５（ａ）に示されている４ワードのデータである。まず、レジスタｒ１に最上位ワードの読み出しアドレスＥＡに１２を加えて最下位の１ワードの読み出しアドレスとしてセットする（Ｓ８１）。次に、レジスタｒ１のアドレスにより指示された１ワードの内容をレジスタｒ２へセットし（Ｓ８２）、このレジスタｒ２の内容である最下位の１ワードに対して、ｃｍｐｌｔ．ｂ命令を用いて０と比較し、結果をレジスタｒ０へセットすると共に、レジスタｒ１の内容から４を引いて最下位から２番目の１ワードの読み出しアドレスを得てこれをレジスタｒ１へセットする（Ｓ８３）。これによって、レジスタｒ０の下位４ビットには、上記最下位の１ワードの各バイトのそれぞれに対応して、そのバイトの数値が０でなければ１がセットされ、そのバイトの数値が０であれば０がセットされる。
【０１００】
次に、レジスタｒ１のアドレスにより指示された１ワードの内容をレジスタｒ２へセットし（Ｓ８４）、このレジスタｒ２の内容である最下位から２番目の１ワードに対して、ｃｍｐｌｔ．ｂ命令を用いて０と比較し、結果をレジスタｒ２へセットする（Ｓ８５）。これによって、レジスタｒ２の下位４ビットには、上記最下位から２番目の１ワードの各バイトのそれぞれに対応して、そのバイトの数値が０でなければ１がセットされ、そのバイトの数値が０であれば０がセットされる。更に、このレジスタｒ２の内容を４左シフトして最下位から２番目のワードについての結果位置に位置付け（Ｓ８６）、レジスタｒ０とｒ２との内容の論理和を作成して、処理結果を上記２ワードのワードデータ順に並べ、これをレジスタｒ０へセットし、また、レジスタｒ１の内容から４を引いて最上位から２番目の１ワードの読み出しアドレスを得てこれをレジスタｒ１へセットする（Ｓ８７）。以下ステップＳ８８からステップＳ９５までにおいて、残りの２ワードについてｃｍｐｌｔ．ｂ命令を用いて各バイト毎に０か否かのデータを得て、シフト及び論理和を用いて図２５の４ワードのワードデータ順に並べ、これをレジスタｒ０へセットする（Ｓ９５）。以上により、図２５（ｂ）に示すステップＳ９５までの処理結果から明らかなようにレジスタｒ０内上位１７ビットは未使用のため、０がセットされており、第１６ビット目からは第８ビット目までは、原データの各バイトの数値が０（００）であるため、０がセットされ、以降は、数値（０３、５０，２１、……）の各バイトの数値に応じて１または０がセットされる。
【０１０１】
次に、レジスタｒ０の内容が０であるか否かを判別する（Ｓ９６）。この例（図２５では、上記のように、レジスタｒ０の内容が０ではないから、Ｆ（偽）へ分岐してｆｓｂｉｔ命令を用いてレジスタｒ０の内容について処理を行い、これをレジスタｒ０へセットする（Ｓ９７）。このとき、図２５から分るように、７ビット目が最先頭位置であるから、ｆｓｂｉｔ命令の性格から、上記７から１を引いた６がレジスタｒ０にセットされる。次に、レジスタｒ０の内容である６に１を加えて図２５の４ワードのデータの有効バイト長７が得られることになる（Ｓ９８）。
【０１０２】
図３０に、上記図２９のフローチャートに対応するニーモニック表記の命令コード列が示されている。このように、本実施の形態においては、ワード単位の処理についてはｃｍｐｌｔ．ｂ命令を用いて、更に、１ワード内における処理及び有効バイト長を作成する処理においてはｆｓｂｉｔ命令を用いて、ループによる繰り返し処理をなくし、その分処理の簡素化と高速化が図られる。
【０１０３】
本発明の他の実施の形態に係るＲＩＳＣ計算機は、ＶＬＩＷ方式を採用しており、その要部は図１１に示されるようである。つまり、図１の演算回路２と等しい構成を有する演算回路２−１〜２−４が並列処理を行う。演算回路２−１〜２−４は、ｃｍｐｌｔ．ｂ命令、ｆｓｂｉｔ命令を実行可能である。この様な構成のＲＩＳＣ計算機により、図３０に示される命令コード列の処理を並列実行させる場合には、図３１に示される命令コード列の処理を行わせることになる。この例では、第３番目の演算回路（例えば、２−３）が、ｃｍｐｌｔ．ｂ命令を１サイクルに１命令実行して４回繰り返す。このようにして、本発明の実施例に係るＲＩＳＣ計算機によれば、演算回路２−１〜２−４がｆｓｂｉｔ命令及びｃｍｐｌｔ．ｂ命令を実行可能であり、０でない１バイトデータがセットされている位置の検出、その処理結果に対し、セットされているビット位置の検出を条件判定と分岐命令で行う必要がないので、有効バイト長計算機として動作させたときに、並列性の向上を図ることができ、高速な処理が可能である。
【０１０４】
上記構成のＲＩＳＣ計算機により、図３０に示される命令コード列の処理を並列実行させる場合の別の命令コード列を図３２に示す。上記図３１の例では、第３番目の演算回路（例えば、２−３）が、ｃｍｐｌｔ．ｂ命令を１サイクルに１命令実行して４回繰り返すようにしたが、この図３２の例では、ｃｍｐｌｔ．ｂ命令を１サイクルに複数命令実行する。つまり、それぞれ演算回路２−１〜２−４が、第２サイクルにおいて並列的にｃｍｐｌｔ．ｂ命令を実行している。これにより、図３１の構成では、１０サイクル必要であったのに対し、本実施例では７サイクルで済むようになっており、処理の高速化が図られている。
【０１０５】
上記演算回路２を備えたＲＩＳＣ計算機は、ゾーン１０進数からなる複数ワードの演算結果データについてオーバーフローを検出するＲＩＳＣ計算機として機能する。ゾーン１０進数は、例えば、図３３に示されるように、１バイトを単位に数値を表す形式であり、１バイトの上位４ビットに所定のゾーンビット（ここでは、「００１１」）をセットし、１バイトの下位４ビットに数値をセットして構成する。なお、最下位バイトでは、上位４ビットに符号（正または負）のビットがセットされる。係るゾーン１０進数のデータを用いた演算結果にオーバーフローが生じたか否かの検出は、従来、バイト単位に比較と分岐とを繰り返す処理により行っていた。例えば、演算結果の最下位バイトから使用未使用を比較により検出して、その結果に応じて分岐して上位方向のバイトについて同様の処理を繰り返す。従って、基本的には、有効バイト長計算の場合の従来例と同様な処理が必要であり、１６ビット、８ビットと処理単位を小さくして検出を行う繰り返し処理が必要であり、最終的な検出までの処理回数が多くなるという問題点がある。更に、上記の比較と分岐による処理は、制御依存関係が強く、１６ビット、８ビットと処理単位が小さくなるにも拘らず、並列実行できない問題がある。
【０１０６】
本実施の形態に係るｆｓｂｉｔ命令及びｃｍｐｅｑ．ｂ命令を実行するＲＩＳＣ計算機により上記問題点が解決される。つまり、本実施の形態に係るＲＩＳＣ計算機は図３４に示されるように、ワード単位処理手段５０、２次処理処理手段５１、最先セットビット値検出手段５２、オーバーフロー検出手段５３を具備する。ワード単位処理手段５０は、ゾーン１０進数の複数ワードからなる演算結果データについて、第１オペランドの１ワードのデータと第２オペランドの１ワードのデータを１バイト単位に比較して、第２オペランドの１バイトデータが前記第１オペランドの１バイトデータと等しいか否か検出し、各１バイト単位の比較結果をディスティネーションオペランドの下位側に格納するｃｍｐｅｑ．ｂ命令を実行可能な図１の演算回路２を用いてワード単位に処理を行う。２次処理処理手段５１は、上記のワード単位処理手段５０による処理結果を上記複数ワードのワードデータ順に並べ、この並べたデータに対して使用されているバイトと使用されていないバイトとを識別する処理を行う。最先セットビット値検出手段５２は、上記の２次処理手段５１による処理結果について、ｆｓｂｉｔ命令を実行可能な図１の演算回路２を用いて、１ワードデータ中の最上位ビットから最下位ビット方向に検索した場合に、最初にセットされているビットが、最下位ビットから数えて何ビット目であるかを示す数値を得る。更に、オーバーフロー検出手段５３は、上記の最先セットビット値検出手段５２の検出結果と与えられる正規のバイト数に基づき演算結果であるゾーン１０進数のデータがオーバーフローか否か検出する。
【０１０７】
以上のように、ｆｓｂｉｔ命令及びｃｍｐｅｑ．ｂ命令を実行可能な演算回路２を備える本発明のＲＩＳＣ計算機は、図３５に示されるフローチャートの処理を行う。ここで処理されるデータは図３６、図３７に示されている４ワード（１ワードが４バイトにより構成される。）のデータである。この４ワードのデータはゾーン１０進数による演算結果のデータであり、最上位ワードがＨＩＧＨ、次の１ワードがＭＩＤＨ、第３番目の１ワードがＭＩＤＬ、最下位ワードがＬＯＷにより示されている。この演算結果データは、図３７に記載の通り、前処理において１桁分を表す８ビットのうちの上位４ビット（ゾーンビット及び符号ビット）が０（オール０）とされている。その結果、図３７に示される４ワード１６桁（各桁は１ワードのデータ）が得られる。具体的には、最上位ワードＨＩＧＨが「００００」、次の１ワードＭＩＤＨが「０７５７」、第３番目の１ワードＭＩＤＬが「３０１４」、最下位ワードＬＯＷが「６７０６」である。
【０１０８】
まず、レジスタｗ０に最上位ワード（ＨＩＧＨ）の読み出しアドレスＥＡに１２を加えて最下位の１ワード（ＬＯＷ）の読み出しアドレスとしてセットする（Ｓ１０１）。次に、レジスタｗ０のアドレスにより指示された１ワードの内容をレジスタｗ２へセットし（Ｓ１０２）、このレジスタｗ２の内容である最下位の１ワードに対して、ｃｍｐｅｑ．ｂ命令を用いて０と比較し、結果をレジスタｗ３へセットすると共に、レジスタｗ０の内容から４を引いて最下位から２番目の１ワード（ＭＩＤＬ）の読み出しアドレスを得てこれをレジスタｗ０へセットする（Ｓ１０３）。以上の処理によって、レジスタｗ３の下位４ビットには、上記最下位の１ワード（ＭＩＤＬ）の各バイトのそれぞれに対応して、そのバイトの数値が０であれば１がセットされ、そのバイトの数値が１であれば０がセットされる。従って、最上位ワードに対応して下位４ビットに「００１０」がセットされたデータがレジスタｗ３にセットされることになる。
【０１０９】
次に、レジスタｗ０のアドレスにより指示された１ワードの内容をレジスタｗ２へセットし（Ｓ１０４）、このレジスタｗ２の内容である最下位から２番目の１ワード（ＭＩＤＬ）に対して、ｃｍｐｅｑ．ｂ命令を用いて０と比較し、結果をレジスタｗ２へセットする（Ｓ１０５）。これによって、レジスタｗ２の下位４ビットには、上記最下位から２番目の１ワードの各バイトのそれぞれに対応して、そのバイトの数値が０であれば１がセットされ、そのバイトの数値が１であれば０がセットされる。従って、図３７の例の数値に対しては、下位４ビットに「０１００」がセットされたデータがレジスタｗ２にセットされる。更に、このレジスタｗ２の内容を４左シフトして最下位から２番目のワードについての結果位置に位置付け（Ｓ１０６）、レジスタｗ３とｗ２との内容の論理和を作成して、処理結果を上記２ワードのワードデータ順に並べ、これをレジスタｗ３へセットし、また、レジスタｗ０の内容から４を引いて最上位から２番目の１ワードの読み出しアドレスを得てこれをレジスタｗ０へセットする（Ｓ１０７）。
【０１１０】
以下ステップＳ１０８からステップＳ１１５までにおいて、残りの２ワードについてｃｍｐｅｑ．ｂ命令を用いて各バイト毎に０か否かのデータを得て、シフト及び論理和を用いて図３７の４ワードのワードデータ順に並べ、これをレジスタｗ３へセットする（Ｓ１１５）。以上により、ステップＳ１１５までの処理結果は図３７に示されるｗ１２〜ｗ９の下位４ビットのデータが並べられてレジスタｗ３へセットされることになる。次に、このレジスタｗ３のデータと１６ビットのオール１との排他的論理和を作成し、つまり、レジスタｗ３のデータを反転し、これをレジスタｗ８にセットする（Ｓ１１６）。
【０１１１】
次に、レジスタｗ０の内容が０であるか否かを判別する（Ｓ１１７）。この例（図３７）では、上記の記載から明らかなように、レジスタｗ８の内容が０ではないから、Ｆ（偽）へ分岐してｆｓｂｉｔ命令を用いてレジスタｗ８の内容について処理を行い、これをレジスタｗ１へセットする（Ｓ１１８）。このとき、図３７から判るように、最下位から１１ビット目が、セットされたデータ（つまり、１）が出現する最先頭ビット位置であるから、ｆｓｂｉｔ命令の性格から、上記１１（ビット目）から１を引いた１０がレジスタｗ１にセットされる。次において、レジスタｗ１の内容である１０に１を加えて、この結果である１１がレジスタｗ３にセットされ、図３７の４ワードのデータの使用されているバイト長１１が得られることになる（Ｓ１１９）。
【０１１２】
更に、このレジスタｗ３の内容である１１とユーザから与えられたサイズ（ｓｉｚｅ）とが比較され（Ｓ１２０）、レジスタｗ３のデータがサイズより大きければＴ（真）となってオーバーフローへ進み（Ｓ１２１）、レジスタｗ３のデータがサイズより大きくなければＦ（偽）へ分岐しオーバーフローではないことになる（１２２）。斯して、ゾーン１０進数の演算結果についてのオーバーフロー検出が行われる。
【０１１３】
上記から明らかなように、本実施の形態においては、ワード単位の処理についてはｃｍｐｅｑ．ｂ命令を用いて、更に、１ワード内における処理及び使用されたバイト長を検出する処理においてはｆｓｂｉｔ命令を用いて、ループによる繰り返し処理をなくし、その分オーバーフロー検出処理の簡素化と高速化が図られる。
【０１１４】
本発明の他の実施の形態に係るＲＩＳＣ計算機は、ＶＬＩＷ方式を採用しており、その要部は図１１に示されるようである。つまり、図１の演算回路２と等しい構成を有する演算回路２−１〜２−４が並列処理を行う。演算回路２−１〜２−４は、ｃｍｐｅｑ．ｂ命令、ｆｓｂｉｔ命令を実行可能である。この様な構成のＲＩＳＣ計算機により、図３５のフローチャートに示されるゾーン１０進数の演算結果データのオーバーフロー処理を並列実行させる場合には、図３８に示されるフローチャートによる処理を行う。
【０１１５】
即ち、まず図３７に示した１６桁の４桁ずつにｃｍｐｅｑ．ｂ命令を用いて、それぞれ０と比較する（Ｓ１２５）。勿論、図３５においても説明したように、この処理の前に、前処理において１桁分を表す８ビットのうちの上位４ビット（ゾーンビット及び符号ビット）が０（オール０）とされる。そして、上記１６桁の４桁ずつにｃｍｐｅｑ．ｂ命令を用いて、それぞれ０と比較した結果は、対象の数値が０であれば１に、また、１であれば０となるから、図３７のレジスタｗ１２、ｗ１１、ｗ１０、ｗ９に示すような数値となる。つまり、各レジスタｗ１２〜ｗ９の下４ビットに、それぞれ、「１１１１」、「１０００」、「０１００」、「００１０」がセットされ、これより上位ビットに０がセットされる。次に、各レジスタｗ１２〜ｗ９にセットされたデータそれぞれが、最上位ビットから第５ビット目まで０であり、下位４ビットがオール１であるかを検出する（Ｓ１２６）。そして、レジスタｗ１２についてＴ（真）であれば判断４のtureへ分岐し、Ｆ（偽）であれば判断４のfaulへ分岐する。また、レジスタｗ１１についてＴ（真）であれば判断５のtureへ分岐し、Ｆ（偽）であれば判断５のfaulへ分岐し、また、レジスタｗ１０についてＴ（真）であれば判断６のtureへ分岐し、Ｆ（偽）であれば判断６のfaulへ分岐し、更に、レジスタｗ９についてＴ（真）であれば判断７のtureへ分岐し、Ｆ（偽）であれば判断７のfaulへ分岐する。
【０１１６】
判断４からfaulへ分岐した場合においては、レジスタｗ１２内の右から４ビット（下位４ビット）について、１を０に、０を１に変換してレジスタｗ８にセットすると共に、レジスタｗ２に対し、下位１２ビットまでが使用中であることに対応して１３（ｆｓｂｉｔを使用することに対応して、１２に１を加えて１３とする）をセットする（Ｓ１２７）。また、判断５からfaulへ分岐した場合においては、レジスタｗ１１内の右から４ビット（下位４ビット）について、１を０に、０を１に変換してレジスタｗ８にセットすると共に、レジスタｗ２に対し、下位８ビットまでが使用中であることに対応して９（ｆｓｂｉｔを使用することに対応して、８に１を加えて９とする）をセットする（Ｓ１２８）。
【０１１７】
更に、判断６からfaulへ分岐した場合においては、レジスタｗ１０内の右から４ビット（下位４ビット）について、１を０に、０を１に変換してレジスタｗ８にセットすると共に、レジスタｗ２に対し、下位４ビットまでが使用中であることに対応して５（ｆｓｂｉｔを使用することに対応して、４に１を加えて５とする）をセットする（Ｓ１２９）。また、判断７からfaulへ分岐した場合においては、レジスタｗ９内の右から４ビット（下位４ビット）について、１を０に、０を１に変換してレジスタｗ８にセットすると共に、レジスタｗ２に対し、最下位ビットより上位が使用中であることに対応して１（ｆｓｂｉｔを使用することに対応して、０に１を加えて１とする）をセットする（Ｓ１３０）。
【０１１８】
以上のようにして、レジスタｗ８にセットされたデータに対しｆｓｂｉｔ命令を用いてレジスタｗ８内のデータについて、右から何ビット使用しているかを求め、レジスタｗ１にセットする（Ｓ１３１）。図３７の例では、ｗ１２の下位４ビットがオール１であり、ｗ１１の下位４ビットが「１０００」であるから、判断５においてfaulへ分岐し、レジスタｗ８に下位４ビットが「０１１１」のデータがセットされる。そして、このデータに対しｆｓｂｉｔ命令が適用され、レジスタｗ１には最下位から３ビット目までが使用されていることを示す「２」がセットされる。そして、次にレジスタｗ１とレジスタｗ２とのデータが加えられ、レジスタｗ３にセットされる（Ｓ１３２）。この結果、図３７の例では、ｗ１＝２、ｗ２＝９であるからレジスタｗ３には、「１１」がセットされる。この「１１」がゾーン１０進数の演算結果のデータ（１６バイト）において使用されたバイト数を示す。そして、次にユーザ指示のバイト数との比較処理へと進む。
【０１１９】
上記図３８に示したフローチャートの処理は、図３９に示される命令コード列に対応する。この場合、先の有効バイト長計算のときと同様に、第３番目の演算回路（例えば、２−３）が、ｃｍｐｅｑ．ｂ命令を１サイクルに１命令実行して４回繰り返すようにしてもステップＳ１２５（図３９）の処理が可能である。これに対し、ｃｍｐｅｑ．ｂ命令を１サイクルに複数命令実行するとより高速化できる。つまり、それぞれ演算回路２−１〜２−４が、第１サイクルにおいて並列的にｃｍｐｅｑ．ｂ命令を実行する。このようにした命令コード列を図４０に示す。図４０の構成では、１４サイクル、分岐数２で処理が終了するようになっており、処理の高速化が図られている。なお、図３９のステップＳ１３３において、レジスタｗ３のデータがユーザから与えられた（予めセットされた）サイズ（ｓｉｚｅ）より大かを検出しているが、その結果の分岐は、図４０の第１３クラスタに示される。つまり、Ｓ１３３が成立であるときには［８ｔ］へ分岐し、レジスタｖａｌに１をセットしてオーバーフロー発生を示し、Ｓ１３３が不成立のときには［８ｆ］へ分岐し、エンドとなる。
【０１２０】
既に説明してきた各実施の形態において用いられている演算回路２は、１ワード長の命令フォーマットに、２つのソースオペランドと１つのディスティネーションオペランドを分離して指定できる３オペランド型のＲＩＳＣ命令を実行するように構成されている。係る構成の演算回路２に３つのソースオペランドと２つのディスティネーションオペランドを指定する命令、つまり、５オペランド型命令を実行させようとすると、演算回路２は２つのソースオペランドを入力し、１つのディスティネーションオペランドを出力するだけの物理的構成しか有していないため、次のような障害が生じる。
【０１２１】
まず、第１から第３の３つのソースオペランドを一時に取り込むことができないため、第３ソースオペランドの待ち合わせが必要となる。同様に、第１及び第２ディスティネーションオペランドを一時にライトバックすることができないため、第２ディスティネーションオペランドのライトバック待ち等により、パイプラインハザードが生じる（フェッチ、デコード、実行、ライトバックのパイプライン処理に空きができる）。このため、性能低下が生じることになる。
【０１２２】
本発明の実施の形態では、上記問題点を解決べく、図１１の構成のＶＬＩＷ方式を採用したＲＩＳＣ計算機を、図４１に示すように変更する。即ち、演算回路２−１、２−３に代えて、演算回路２０−１、２０−３を用いる。演算回路２０−１、２０−３は、第３ソースオペランドを取り込む経路５５−１、５５−３と、第２ディスティネーションオペランド出力用の経路５６−１、５６−３とを備え、３つのソースオペランドに対して演算を行い、その結果を２つのディスティネーションオペランドへ出力する５オペランド型命令を実行する演算回路である。また、図４１のＶＬＩＷ方式ＲＩＳＣ計算機においては、５オペランド型命令を実行する演算回路２０−１、２０−３の第３ソースオペランドを取り込む経路５５−１、５５−３へソースオペランドを供給するか、３オペランド型命令型命令を実行する演算回路２−２、２−４の第１ソースオペランド取り込む経路へソースオペランドを供給するか切り換えるソースオペランド切換スイッチＳＷ１、ＳＷ３と、上記５オペランド型命令を実行する演算回路２０−１、２０−３の第２ディスティネーションオペランド出力用の経路５６−１、５６−３からのディスティネーションオペランドか、上記３オペランド型命令を実行する演算回路２−２、２−４の第１ディスティネーションオペランド出力用の経路からのディスティネーションオペランドかを選択するためのディスティネーションオペランド選択スイッチＳＷ２、ＳＷ４とが設けられている。
【０１２３】
また、デコ−ダ２１Ａは、各演算回路２−２、２−４、２０−１、２０−３に命令のデコード結果を与えて所要の演算を行わせると共に、上記スイッチＳＷ１〜ＳＷ４を切り換える。なお、当然のことではあるが、演算回路２０−１、２０−３は、３オペランド型命令も実行する。
【０１２４】
このように構成されたＶＬＩＷ方式を採用したＲＩＳＣ計算機では、例えば、図４２に示されるような命令が命令フィールドにセットされると、演算回路２０−１が５オペランド型命令を実行する。つまり、命令フィールド０には３オペランド型命令０がセットされ、命令フィールド１には命令０を拡張して５オペランド型とするオペランド拡張命令がセットされ、命令フィールド２には３オペランド型命令２がセットされ、命令フィールド３には３オペランド型命令３がセットされる。
【０１２５】
図４３には、３オペランド型命令のフォーマットが示されている。３オペランド型命令は、先頭にオペコード１がセットされ、以下、条件実行制御情報、ディスティネーションレジスタ番号１、オペコード２、ソースレジスタ番号１、ソースレジスタ番号２がセットされている。一方、図４４には、オペランド拡張命令のフォーマットが示されている。このオペランド拡張命令には、先頭に所定のビットパターンからなる５オペランド型拡張コードがセットされ、次いで、５ビットの０（ヌルデータ）、ディスティネーションレジスタ番号２、４ビットの０（ヌルデータ）、ソースレジスタ番号３、６ビットの１（ヌルデータまたはオペランド拡張命令の終了コード）がセットされている。
【０１２６】
図４２の例では、デコ−ダ２１Ａが、命令フィールド１にオペランド拡張命令があることを、５オペランド型拡張コードに基づき検出し、ソースオペランド切換スイッチＳＷ１、ディスティネーションオペランド選択スイッチＳＷ２を図４１の実線に示すように切り換える。一方、ソースオペランド切換スイッチＳＷ３、ディスティネーションオペランド選択スイッチＳＷ４は、図４１の実線に示される通りに演算回路２０−３、２−４が３オペランド型命令を実行可能なように切り換えられている。そして、演算回路２−２は、斜線を施して示すように、演算を実行することはない。
【０１２７】
このように本実施の形態によれば、従来のレジスタファイル１、入出力ポート２３、２４の構成を変更することなく、５オペランド型命令を実行するＶＬＩＷ方式のＲＩＳＣ計算機を構成できる。そして、レジスタファイル１から入力ポート２３を介して一時に３ソースオペランドが与えられる構成であるので、待ちが生じない。また、レジスタファイル１へ出力ポート２４を介して一時に２ディスティネーションオペランドをライトバックできる構成であるので、待ちが生じない。また、ソースオペランド切換スイッチＳＷ１、ＳＷ３、ディスティネーションオペランド選択スイッチＳＷ２、ＳＷ４の切り換えをデコードステージで行えるため、待ちが生じない。以上により、速度を犠牲にすることなく、ＲＩＳＣ型命令であるにも拘らず５オペランド型命令を実行することが可能である。
【０１２８】
なお、上記の例では、第１番目の演算回路２０−１が５オペランド型命令を実行する例を示したが、第３番目の演算回路２０−３も５オペランド型命令を実行可能であり、この第３番目の演算回路２０−３に５オペランド型命令を実行させる場合には、命令フィールド３にオペランド拡張命令を配置すればよい。また、４つの命令フィールド０〜３全てに３オペランド型命令を配置した場合には、４つの演算回路２０−１、２−２、２０−３、２−４全てが、３オペランド型命令を実行する。
【０１２９】
上記図４１の演算回路２０−１、２０−３は、第１オペランドの１ワード長のデータと第２オペランドの１ワード長のデータとを夫々４ビット幅のブロックに区分し、第１オペランドの各ブロックと第２オペランドの各ブロックとを先頭から順に組み合わせるシャッフル手段と、このシャッフル手段により組み合わされたブロック対における２ブロックの前後配置関係を、第３オペランドの１ワード長のデータに基づき制御する対交換手段と、を具備する。また、上記演算回路２０−１、２０−３は、第１オペランドの１ワード長のデータと第２オペランドの１ワード長のデータとを夫々４ビット幅のブロックに区分し、第１オペランドと第２オペランドのブロックを一列に並べた状態で１ブロックおきに組み合わせ、奇数ブロックの組み合わせの並びの後に偶数ブロックの組み合わせの並びを配置する逆シャッフル手段と、この逆シャッフル手段により組み合わされたブロック対における２ブロックの前後配置関係を、第３オペランドの１ワード長のデータに基づき制御する対交換手段とを具備する。
【０１３０】
別言すると、上記演算回路２０−１、２０−３は、第１オペランドの１ワード長のデータと第２オペランドの１ワード長のデータとを夫々４ビット幅のブロックに区分し、第１オペランドの各ブロックと第２オペランドの各ブロックとを先頭から順に組み合わせるシャッフルと、このシャッフルにより組み合わされたブロック対における２ブロックの前後配置関係を、第３オペランドの１ワード長のデータに基づき制御する対交換を行うことからなる命令（以下、ｓｈｘ命令）を実行する。また、第１オペランドの１ワード長のデータと第２オペランドの１ワード長のデータとを夫々４ビット幅のブロックに区分し、第１オペランドと第２オペランドのブロックを一列に並べた状態で１ブロックおきに組み合わせ、奇数ブロックの組み合わせの並びの後に偶数ブロックの組み合わせの並びを配置する逆シャッフルと、この逆シャッフルにより組み合わされたブロック対における２ブロックの前後配置関係を、第３オペランドの１ワード長のデータに基づき制御する対交換を行うことからなる命令（以下、ｉｓｈｘ命令）を実行する。
【０１３１】
ｓｈｘ命令は、図４５の１１５に示されるように、括弧内にシャッフル処理対象のデータが格納されている２つのジェネラルレジスタ（％ｒｓ３）、（％ｒｓ１）と、シャッフル処理された４ビットの対のデータの前後関係を指示するビットが格納されているジェネラルレジスタ（％ｒｓ２）と、結果を書き込む２つのディスティネーションレジスタ（％ｒｄ２）、（％ｒｄ１）とを指定して記述される。この１１５の表記の右には、２つのジェネラルレジスタ（％ｒｓ３）、（％ｒｓ１）で指定された２ワードのデータを４ビット単位で完全シャッフルを行った後、１１７で示されるジェネラルレジスタ（％ｒｓ２）の下位８ビットで指定された対交換を行い、これをディスティネーションレジスタ（％ｒｄ２）、（％ｒｄ１）に書き込むことを示す表記１１６が対応付けられている。
【０１３２】
上記において、完全シャッフルとは、図４７に示されているように、１ワードの各４ビットのデータａ０〜ａ７と、１ワードの各４ビットのデータｂ０〜ｂ７とを、交互に並べること、つまり、ａ０，ｂ０，ａ１，ｂ１，・・・ｂ６，ａ７，ｂ７と並べることである。そして、（ａ０，ｂ０）、（ａ１，ｂ１）・・・（ａ７，ｂ７）が夫々対となっている。この各対の２つのデータの交換をｅｘ０，ｅｘ１，・・・ｅｘ７で示す。この対交換ｅｘ０，ｅｘ１，・・・ｅｘ７における前後配置を１１７に示されるように、レジスタｒｓ２のビット２４〜３１により夫々指定する。
【０１３３】
この動作は、図４６に示されるように、例えば、レジスタｒｓ３の４ビットデータａ０とレジスタｒｓ１の４ビットデータｂ０とが、１対とされる。この１対は、レジスタｒｓ２のビット２４が０のときには、下左欄に示されるようにａ０，ｂ０の順に並べられ、レジスタｒｓ２のビット２４が１のときには、下右欄に示されるようにｂ０，ａ０の順に並べられる。
【０１３４】
図４８には、上記ｓｈｘ命令に対応する演算回路２０−１、２０−３の要部構成を示す。図に示されているように、レジスタｒｓ３の４ビットデータａ０とレジスタｒｓ２の４ビットデータｂ０とは、例えば、それぞれ結線（ワイヤー）５６、５５によってゲート５７−１〜５７−４に導かれる。各ゲート５７−１〜５７−４は、例えば、それぞれ４個のアンドゲートから構成される。ゲート５７−１、５７−４はレジスタｒｓ２からのビット２４の信号がＬレベル（０）で与えられると、４ビットデータａ０、ｂ０を通過させ、Ｈレベル（１）で与えられると、不通過とする。また、ゲート５７−２、５７−３はレジスタｒｓ２からのビット２４の信号がＨレベル（１）で与えられると、４ビットデータａ０、ｂ０を通過させ、Ｌレベル（０）で与えられると、不通過とする。
【０１３５】
一方、ｉｓｈｘ命令は、図４９の１１８に示されるように、括弧内に逆シャッフル処理対象のデータが格納されている２つのジェネラルレジスタ（％ｒｓ３）、（％ｒｓ１）と、逆シャッフル処理された４ビットの対のデータの前後関係を指示するビットが格納されているジェネラルレジスタ（％ｒｓ２）と、結果を書き込む２つのディスティネーションレジスタ（％ｒｄ２）、（％ｒｄ１）とを指定して記述される。この１１９の表記の右には、２つのジェネラルレジスタ（％ｒｓ３）、（％ｒｓ１）で指定された２ワードのデータを４ビット単位で逆完全シャッフルを行った後、１２０で示されるジェネラルレジスタ（％ｒｓ２）の下位８ビットで指定された対交換を行い、これをディスティネーションレジスタ（％ｒｄ２）、（％ｒｄ１）に書き込むことを示す表記１１９が対応付けられている。
【０１３６】
上記において、逆完全シャッフルとは、図４７に示されているように、１ワードの各４ビットのデータａ０，ｂ０，ａ１，ｂ１，・・・，ｂ３と、１ワードの各４ビットのデータａ４，ｂ４，ａ５，・・・，ｂ７とを、１ブロックおきに組み合わせ、奇数ブロックの組み合わせの並びの後に偶数ブロックの組み合わせの並びを配置する交互に並べることである。つまり、完全シャッフルを行った結果を、逆完全シャッフルを行うと、元に戻る。そして、奇数ブロックでは、（ａ０，ａ１）、（ａ２，ａ３）・・・（ａ６，ａ７）が夫々対となり、偶数ブロックでは、（ｂ０，ｂ１）、（ｂ２，ｂ３）、・・・（ｂ６，ｂ７）が夫々対となっている。この対の交換をｅｘ０，ｅｘ１，・・・ｅｘ７で示す。この対交換ｅｘ０，ｅｘ１，・・・ｅｘ７における前後配置を１２０に示されるように、レジスタｒｓ２のビット２４〜３１により夫々指定する。
【０１３７】
この動作は、図５０に示されるように、例えば、レジスタｒｓ３の４ビットデータａ０，ａ１が、１対とされる。この１対は、レジスタｒｓ２のビット２４が０のときには、下左欄に示されるようにａ０，ａ１の順に並べられ、レジスタｒｓ２のビット２４が１のときには、下右欄に示されるようにａ１，ａ０の順に並べられる。
【０１３８】
このｉｓｈｘ命令は、図４８に示される構成により実現される。逆完全シャッフルは、結線（ワイヤー）５６、５５によって実行される。以上のような、ｓｈｘ命令及びｉｓｈｘ命令を実行する演算回路２０−１、２０−３によって、２つの１ワードに存在する４ビット単位のデータを交互混合し、または、その逆に混合し、所望するように配置された２ワードのデータを得ることができる。
【０１３９】
上記演算回路２０−１、２０−３を備えたＲＩＳＣ計算機は、パック１０進数の不正データの除去を行う。従来のＲＩＳＣ計算機においてパック１０進数の不正データの除去処理は、４ビット単位にエラーチェックを行い、チェック結果に応じてエラールーチンへ分岐することに行われていた。４ビット単位の繰り返し処理のため、かなり多くの時間を要していた。また、エラーチェック毎に分岐するために、エラーがない場合でも並列化することができず、並列化が困難であり、ＶＬＩＷ方式による処理はできないという問題があった。
【０１４０】
この問題点は、本発明の実施の形態に係る、ｃｍｐｌｔ．ｐ命令、ｓｈｘ命令、ｉｓｈｘ命令を実行する演算回路２０−１（２０−３）を具備するＲＩＳＣ計算機により解決される。つまり、本発明の実施の形態に係るＲＩＳＣ計算機は、図５１に示されるように、不正パック１０進数検出手段５７、データ混合手段５８、不正データ抽出手段５９を有する。不正パック１０進数検出手段５７は、複数ワードのパック１０進数データについて、１ワードのデータを４ビット単位に不正閾値データと比較して、各４ビット単位の比較結果をディスティネーションオペランドの下位側に格納するｃｍｐｌｔ．ｐ命令を実行する演算回路２または２０−１（２０−３）を用いてワード単位に処理を行う。データ混合手段５８は、上記複数ワードのパック１０進数データと０とを第１オペランド及び第２オペランドとし、上記不正パック１０進数検出手段５７の結果を第３オペランドとして、ｓｈｘ命令を実行する演算回路２０−１（２０−３）を用いてｓｈｘ命令による結果を得る。不正データ抽出手段５９は、上記データ混合手段５８による混合結果を第１オペランド及び第２オペランドとし、０を第３オペランドとして、ｉｓｈｘ命令を実行する演算回路２０−１（２０−３）を用いて不正データを抽出する。不正データがないときには、０が出力される。
【０１４１】
図４１に示されるような演算回路２０（２０−１、２０−３）を備え、演算回路２０（２０−１、２０−３）がｃｍｐｌｔ．ｐ命令を実行し、演算回路２０（２０−１、２０−３）がｓｈｘ命令及びｉｓｈｘ命令を実行するＲＩＳＣ計算機は、図５２に示されるフローチャートの処理によりパック１０進数の不正データを除去する。すなわち、パック１０進数データが図５１に示されるように、４ワードから構成され、１ワードが３２ビットであるとする。すると、１ワード毎に処理を行い、これを４回繰り返す。
【０１４２】
まず、最初の１ワード（例えば、図５１の最上位１ワードｈｉｇｈを取り出し、４ビット毎にｃｍｐｌｔ．ｐ命令を用いて（０ｘ９９９９９９９９）と比較する（Ｓ１３５）。つまり、４ビット毎に比較を行うから、図５３に示されるように、レジスタｒｓ１内の比較対象の８桁のデータと、レジスタｒｓ２内の８桁の９とが比較され、９より大きいとき（つまり、０ｘａ、０ｘｂ、０ｘｃ、０ｘｄ、０ｘｅ、０ｘｆの不正データであるとき）には１が、また、９以下であるときには０が、レジスタｒｄ１の下位８ビットにセットされる。図５２の例では、８桁のデータが「１４６３６ａ４５」であり、第６桁目のａが不正データであるから、レジスタｒｄ１の内容がＸ＝００・・・０００００１００となる。
【０１４３】
次に、上記パック１０進数の最上位ワードに対し、ｓｈｘ命令を用いて８桁の０と完全シャッフルをとり、このとき、上記で得たレジスタｒｄ１の下位８ビットに基づき、対の２データの前後配置関係を決定する（Ｓ１３６）。つまり、図５４に示されるように、レジスタｒｓ１のデータ（図５３のレジスタｒｓ１のデータと同一）とレジスタｒｓ２の８桁の０とが交互に配置されるよう対にし、対とされた原データ（レジスタｒｓ１のデータの４ビット毎）と０との前後配置関係をレジスタｒｓ２の下位８ビット（図５３のレジスタｒｄ１の下位８ビット）に基づき決定する。図５２の例では、８桁のデータが「１４６３６ａ４５」であり、先のレジスタｒｄ１のデータがＸ＝００・・・０００００１００であるから、図５２のステップＳ１３６内に示されるように、Ｘ＝１である最下位から３つ目に対応する対（ａ，０）に関し、その前後順が（０，ａ）に逆転されて配置され、その他の対は０が後に配置される。
【０１４４】
次に、上記ｓｈｘ命令の結果得られた１６桁の数値列をｉｓｈｘ命令を用いて８桁ずつの２データに分ける（Ｓ１３７）。つまり、図５５に示されるように、レジスタｒｓ３、ｒｓ１のデータ（ｓｈｘ命令により得られた１６桁のデータ）に対して、１桁おきに８桁のデータを取り出してレジスタｒｄ２にセットし、残りの８桁をレジスタｒｄ１にセットする。これは、第３オペランドにはレジスタｒｓ２（図５５）に示されているように、下位８ビットに０がセットされているためである。図５２の例では、ステップＳ１３６において、Ｘ＝１である最下位から３つ目に対応する対（ａ，０）に関し、その前後順が（０，ａ）に逆転されて配置されたため、レジスタｒｄ２には元のａの位置に０がセットされ、レジスタｒｄ１の下位から桁目に不正データであるａがセットされる。不正データでなければ、原データがレジスタｒｄ２に戻り、レジスタｒｄ１に０がセットされる。つまり、１ワード内に存在した不正データａがレジスタｒｄ１に抽出され、除去されて出力される。
【０１４５】
以上の処理を４回繰り返したときのフローチャートに対するニーモニック表記の命令コード列を図５６に示す。この命令コード列では、最初にレジスタＱに９（０ｘ９９９９９９９９）をセットし、以降、枠にて囲って示すように、最上位の１ワードｈｉｇｈの処理、次の１ワードｍｉｄｈの処理、更に次１ワードｍｉｄｌの処理、最後に最下位の１ワードｌｏｗの処理を行うことが示されている。このような処理は、図４１の演算回路２０−１（または、２０−３）のみを用いて、繰り返し処理により実行可能である。このようにしても、分岐が無いために処理が高速化され、従来に比べて効率良く、パック１０進数の不正データを除去できる。
【０１４６】
上記図４１の構成のＲＩＳＣ計算機により、図５６に示される命令コード列の処理を並列実行させる場合の命令コード列を図５７に示す。上記図５６の例では１つの演算回路（例えば、２０−１）が、ｃｍｐｌｔ．ｐ命令を１サイクルに１命令実行して４回繰り返すようにしたが、この図５７の例では、ｃｍｐｌｔ．ｐ命令を１サイクルに複数命令実行する。つまり、それぞれ演算回路２０−１、２−２、２０−３、２−４が、第２サイクルにおいて並列的にｃｍｐｌｔ．ｐ命令を実行している。これにより、図５６の構成では、１３サイクル必要であったのに対し、本実施例では６サイクルで済むようになっており、処理の高速化が図られている。
【０１４７】
上記図４１の演算回路２０−１、２０−３は、２つのジェネラルレジスタで指定された倍語データを、ジェネラルレジスタまたは即値で指定された数だけ左に論理シフトし、この結果空いた下位ビットに０を挿入する倍語・左論理シフト手段を備える。また、演算回路２０−１、２０−３は、２つのジェネラルレジスタで指定された倍語データを、ジェネラルレジスタまたは即値で指定された数だけ右に論理シフトし、この結果空いた上位ビットに０を挿入する倍語・右論理シフト手段を備える。更に、演算回路２０−１、２０−３は、２つのジェネラルレジスタで指定された倍語データを、ジェネラルレジスタまたは即値で指定された数だけ右に算術シフトし、この結果空いた上位ビットに符号ビットを挿入する倍語・右算術シフト手段を備える。
【０１４８】
別言すれば、上記演算回路２０−１、２０−３は、２つのジェネラルレジスタで指定された倍語データを、ジェネラルレジスタまたは即値で指定された数だけ左に論理シフトし、この結果空いた下位ビットに０を挿入する倍語・左論理シフトに係る命令、即ち、ｓｌｌ．ｌ命令を実行する。また、演算回路２０−１、２０−３は、２つのジェネラルレジスタで指定された倍語データを、ジェネラルレジスタまたは即値で指定された数だけ右に論理シフトし、この結果空いた上位ビットに０を挿入する倍語・右論理シフトに係る命令、即ち、ｓｒｌ．ｌ命令を実行する。更に、演算回路２０−１、２０−３は、２つのジェネラルレジスタで指定された倍語データを、ジェネラルレジスタまたは即値で指定された数だけ右に算術シフトし、この結果空いた上位ビットに符号ビットを挿入する倍語・右算術シフトに係る命令、即ち、ｓｒａ．ｌ命令を実行する。
【０１４９】
ｓｌｌ．ｌ命令は、図５８の１２１に示されるように、左論理シフトの対象が格納されている２つのレジスタ（％ｒｓ３）、（％ｒｓ１）と、シフトするビット数が格納されたジェネラルレジスタ（％ｒｓ２）と、結果を書き込む２つのディスティネーションレジスタ（％ｒｄ２）、（％ｒｄ１）とを指定して記述される。または、図５８の１２２に示されるように、左論理シフトの対象が格納されている２つのレジスタ（％ｒｓ３）、（％ｒｓ１）と、シフトするビット数の即値（例えば、６）を示す（％ｉ６）と、結果を書き込む２つのディスティネーションレジスタ（％ｒｄ２）、（％ｒｄ１）とを指定して記述することも可能である。
【０１５０】
上記表記１２１の右には、２つのジェネラルレジスタ（ｒｓ３）、（ｒｓ１）で指定された２ワードのデータを、ジェネラルレジスタ（ｒｓ２）で指定されるビット数だけ左シフトし、これをディスティネーションレジスタ（ｒｄ２）、（ｒｄ１）に書き込むことを示す表記が対応付けられている。また、表記１２２の右には、２つのジェネラルレジスタ（ｒｓ３）、（ｒｓ１）で指定された２ワードのデータを、即値（例えば、ｉ６）の数６だけ左シフトし、これをディスティネーションレジスタ（ｒｄ２）、（ｒｄ１）に書き込むことを示す表記が対応付けられている。なお、シフトの結果、空きとなった下位ビットには、シフトしたビット数に応じて０が挿入され、また、上位側においてシフトアウトされたシフトビット数に対応するビットは失われる。
【０１５１】
ｓｒｌ．ｌ命令は、図５９の１２３に示されるように、右論理シフトの対象が格納されている２つのレジスタ（％ｒｓ３）、（％ｒｓ１）と、シフトするビット数が格納されたジェネラルレジスタ（％ｒｓ２）と、結果を書き込む２つのディスティネーションレジスタ（％ｒｄ２）、（％ｒｄ１）とを指定して記述される。または、図５９の１２４に示されるように、右論理シフトの対象が格納されている２つのレジスタ（％ｒｓ３）、（％ｒｓ１）と、シフトするビット数の即値（例えば、６）を示す（％ｉ６）と、結果を書き込む２つのディスティネーションレジスタ（％ｒｄ２）、（％ｒｄ１）とを指定して記述することも可能である。
【０１５２】
上記表記１２３の右には、２つのジェネラルレジスタ（ｒｓ３）、（ｒｓ１）で指定された２ワードのデータを、ジェネラルレジスタ（ｒｓ２）で指定されるビット数だけ右シフトし、これをディスティネーションレジスタ（ｒｄ２）、（ｒｄ１）に書き込むことを示す表記が対応付けられている。また、表記１２４の右には、２つのジェネラルレジスタ（ｒｓ３）、（ｒｓ１）で指定された２ワードのデータを、即値（例えば、ｉ６）の数６だけ右シフトし、これをディスティネーションレジスタ（ｒｄ２）、（ｒｄ１）に書き込むことを示す表記が対応付けられている。なお、シフトの結果、空きとなった上位ビットには、シフトしたビット数に応じて０が挿入され、また、下位においてシフトアウトされたシフトビット数に対応するビットは失われる。
【０１５３】
ｓｒａ．ｌ命令は、図６０の１２５に示されるように、右論理シフトの対象が格納されている２つのレジスタ（％ｒｓ３）、（％ｒｓ１）と、シフトするビット数が格納されたジェネラルレジスタ（％ｒｓ２）と、結果を書き込む２つのディスティネーションレジスタ（％ｒｄ２）、（％ｒｄ１）とを指定して記述される。または、図６０の１２６に示されるように、右論理シフトの対象が格納されている２つのレジスタ（％ｒｓ３）、（％ｒｓ１）と、シフトするビット数の即値（例えば、６）を示す（％ｉ６）と、結果を書き込む２つのディスティネーションレジスタ（％ｒｄ２）、（％ｒｄ１）とを指定して記述することも可能である。
【０１５４】
上記表記１２５の右には、２つのジェネラルレジスタ（ｒｓ３）、（ｒｓ１）で指定された２ワードのデータを、ジェネラルレジスタ（ｒｓ２）で指定されるビット数だけ右シフトし、これをディスティネーションレジスタ（ｒｄ２）、（ｒｄ１）に書き込むことを示す表記が対応付けられている。また、表記１２６の右には、２つのジェネラルレジスタ（ｒｓ３）、（ｒｓ１）で指定された２ワードのデータを、即値（例えば、ｉ６）の数６だけ右シフトし、これをディスティネーションレジスタ（ｒｄ２）、（ｒｄ１）に書き込むことを示す表記が対応付けられている。なお、シフトの結果、空きとなった上位ビットには、シフトしたビット数に応じて符号ビットｓが挿入され、また、下位においてシフトアウトされたシフトビット数に対応するビットは失われる。
【０１５５】
以上のｓｌｌ．ｌ命令、ｓｒｌ．ｌ命令、ｓｒａ．ｌ命令を実行するために、演算回路２０−１、２０−３は、従来有している１ワード長に対する論理シフト、算術シフトのハードウェアを倍語に応じて拡張したハードウェア、例えば、ＳＮ７４１９８を２段接続した構成等を有する。これにより、本実施の形態に係るＲＩＳＣ計算機は、１命令によって倍語の左論理シフト、右論理シフト、右算術シフトを行うことができる。
【０１５６】
上記演算回路２０−１、２０−３を備えたＲＩＳＣ計算機は、パック１０進数データをメモリからレジスタへワード単位に適切に転送する。従来のＲＩＳＣ計算機において、メモリからパック１０進数データをレジスタへ転送する場合には、１バイト単位でロードを行っていた。この手法によると、１ワードの転送を行うためには、数サイクルの処理が必要となり非効率的である。また、ＶＬＩＷ方式を採用したＲＩＳＣ計算機においても、ロード命令は通常１サイクルに１つ発行できるだけであるから、ロード命令が多いと並列化が妨げられるという問題点が生じる。
【０１５７】
この問題点は、本発明の実施の形態に係る、ｓｌｌ．ｌ命令を実行する演算回路２０−１（２０−３）を具備するＲＩＳＣ計算機により解決される。つまり、本発明の実施の形態に係るＲＩＳＣ計算機は、図６１に示されるように、ワード境界・境界差検出手段６１、ワード単位読出手段６２、シフト手段６３を有する。ワード境界・境界差検出手段６１は、パック１０進数データが記憶されているメモリ５上の最上位と最下位のワード境界を検出すると共に、ワード境界と当該パック１０進数データの終端との差を検出する。つまり、パック１０進数データは、メモリ５のワード境界とは一致しない位置から、この例では１１バイト記憶されているので、メモリ５のワード境界を検出して、このワード境界から次のワード境界までのワード単位（パック１０進数データ以外を含んで１ワードとなることもある）で読み出し可能とする。また、パック１０進数データの終端とワード境界（この終端以前のもの）との差（この例では、１バイト）を検出する。ワード単位読出手段６２は、上記ワード境界・境界差検出手段６１により検出されたワード境界を単位として、上記パック１０進数が記憶されている範囲のワードをレジスタ１−１〜１−４に読み出す。つまり、メモリ５のワード単位のデータがレジスタ１−１〜１−４にセットされる。シフト手段６３は、上記レジスタ１−０〜１−３に読み出されたデータを、上記ワード境界・境界差検出手段６１により検出された差のデータに応じて、ｓｌｌ．ｌ命令を実行する演算回路２０−１（２０−３）によりシフトする。つまり、境界差は１バイトであるから、ｓｌｌ．ｌ命令によって１バイトシフトを行い、終端がレジスタ１−３の終端に合致させられてレジスタ１−１〜１−３にパック１０進数データが格納される。なお、上記により、読み出すべきパック１０進数データ以外のデータがレジスタ１−１に残ることもあるが、このデータは削除する。
【０１５８】
上記ＲＩＳＣ計算機による処理をニーモニック表記による命令コード列として示すと、図６２のようになる。この命令コード列では、ｓはメモリ５から読み出すべきパック１０進数データのサイズ（長さ）、つまり「引数サイズ」であり、ｐは上記パック１０進数データの先頭アドレス、つまり「引数アドレス」であり、実際の例では、図６３のＳ１４１に示されるようになっている。上記図６２の命令コード列による処理は、図６３〜図６８のフローチャートに対応しているので、これらを対応付けながら処理を説明する。なお、図６３〜図６８のフローチャートは連続している。
【０１５９】
図６２の命令コード列のブロックＢ１は、パック１０進数データが記憶されているメモリ５上の最上位と最下位のワード境界を検出すると共に、ワード境界と当該パック１０進数データの終端との差を検出する処理である。これを詳述すると、最初のａｄｄ命令は、図６３のステップＳ１４１に対応しており、引数アドレスｐと引数サイズｓを加えてパック１０進数データの終端アドレスＱを求める。次のａｎｄ命令は、ステップＳ１４２に対応しており、上記終端アドレスＱと３（３バイトに対応する値）との論理積を求めて、終端アドレスＱの下位２ビットが１ワードの内の何バイト目を指しているか検出し、パック１０進数データの終端とワード境界との差Ｈを求める。ここでは、図６３に明らかなように、Ｈは１（バイト）となる。次のｓｕｂ命令は、ステップ１４３に対応しており、終端アドレスＱから上記差Ｈを引き、ワード境界とＱとを一致させる。次のａｎｄ命令は、ステップ１４４に対応しており、上記先頭アドレスｐと３（３バイトに対応する値）との論理積を求めて、先頭アドレスｐの下位２ビットが１ワードの内の何バイト目を指しているか検出し、パック１０進数データの先頭とワード境界との差Ｉを求める。ここでは、差Ｉは２（バイト）として求まる。
【０１６０】
次のｓｕｂ命令は、図６４のステップＳ１４５に対応しており、先頭アドレスｐから上記差Ｉを引き、ワード境界とｐとを一致させる。次に記載のｓｌｌ命令は、ステップＳ１４６に対応しており、パック１０進数データの終端とワード境界との差Ｈを３左シフトして８倍し、ビット単位の値に変換する。この結果、Ｈは８（ビット）となる。
【０１６１】
図６２の命令コード列のブロックＢ２、Ｂ３は、パック１０進数データが存在するメモリ５における最下位の１ワードのロード処理である。まず、最初のｔｓｔｅｑ命令は、図６４のステップＳ１４７に対応しており、上記ステップＳ１４２において求めた差Ｈが０であるか否か検出し、Ｈが０であれば判断０のｔｕｒｅへ分岐し、Ｈが０でなければ判断０のｆａｕｌへ分岐する。そして、次にｍｏｖ命令によりレジスタｗ０に０をセットして初期化する。この初期化処理は、図６３〜図６８においては、図６３の脚注に示すように、省略してある。
【０１６２】
そして、ブロックＢ３のｌｄ命令によって、アドレスＱにより最下位の１ワードをメモリ５から読み出し、レジスタｗ０へロードする。これは、図６４のステップＳ１４８に対応しており、パック１０進数データの最下位部分を含む１ワードＷ０（ワード境界から１ワードのデータ）が読み出されてロードされることを示している。
【０１６３】
次の命令コード列のブロックＢ４、Ｂ５は、パック１０進数データのメモリ５における最下位の次の１ワードのロード処理である。その最初のｓｕｂ命令は、図６５のステップＳ１４９に対応しており、アドレスＱから４（バイト数に対応）を引いて次の１ワードを読み出すためのアドレスＱ１を得る。次のｔｓｔｌｔｕ命令は、図６５のステップＳ１５０に対応しており、上記で求めたアドレスＱ１が、パック１０進数データの先頭アドレスが含まれるメモリ５上の１ワードエリアのワード境界アドレスｐを越えた（Ｑ１＞ｐ）か否かを検出し、Ｑ１＞ｐであれば「判断１」のｔｕｒｅへ分岐し、Ｑ１＞ｐでなければ「判断１」のｆａｕｌへ分岐する。そして、次にｍｏｖ命令によりレジスタｗ１に０をセットして初期化する。この初期化処理は、図６３〜図６８においては、図６３の脚注に示すように、省略してある。更に、ブロックＢ５のｌｄ命令によって、アドレスＱ１により最下位の次の１ワードをメモリ５から読み出し、レジスタｗ１へロードする。これは、図６５のステップＳ１５１に対応しており、パック１０進数データの最下位部分を含む１ワードＷ０（ワード境界から１ワードのデータ）の次の１ワードＷ１が読み出されてロードされることを示している。
【０１６４】
次の命令コード列のブロックＢ６は、上記で読み出してあるレジスタｗ０、ｗ１内のデータＷ０、Ｗ１を、上記で求めた差Ｈ（８ビット）だけ左シフトして、レジスタｌｏｗにセットする処理を示し、図６５のＳ１５２に対応している。上記ブロックＢ６の処理の結果、ステップＳ１５２に示されるように、レジスタｌｏｗには、斜線により示される４バイトのデータ（パック１０進数データの終端から４バイトのデータ）がセットされることになる。
【０１６５】
次の命令コード列のブロックＢ７、Ｂ８は、パック１０進数データが存在するメモリ５における最下位から２番目の１ワードのロード処理である。その最初のｓｕｂ命令は、図６６のステップＳ１５３に対応しており、アドレスＱから８（バイト数に対応）を引いて次の１ワード（最下位から２番目の１ワード）を読み出すためのアドレスＱ２を得る。次のｔｓｔｌｔｕ命令は、図６６のステップＳ１５４に対応しており、上記で求めたアドレスＱ２がパック１０進数の先頭アドレスが含まれるメモリ５上のワードエリアのワード境界アドレスｐを越えた（Ｑ２＞ｐ）か否かを検出し、Ｑ２＞ｐであれば「判断２」のｔｕｒｅへ分岐し、Ｑ２＞ｐでなければ「判断２」のｆａｕｌへ分岐する。そして、次にｍｏｖ命令によりレジスタｗ２に０をセットして初期化する。この初期化処理は、図６３〜図６８においては、図６３の脚注に示すように、省略してある。更に、ブロックＢ８のｌｄ命令によって、アドレスＱ２により最下位から２番目の１ワードをメモリ５から読み出し、レジスタｗ２へロードする。これは、図６６のステップＳ１５５に対応しており、パック１０進数データの最下位部分を含む１ワードＷ０（ワード境界から１ワードのデータ）から２番目の１ワードＷ２が読み出されてロードされることを示している。
【０１６６】
次の命令コード列のブロックＢ９は、上記で読み出してあるレジスタｗ１、ｗ２内のデータＷ１、Ｗ２を、上記で求めた差Ｈ（８ビット）だけ左シフトして、レジスタｍｉｄｌにセットする処理を示し、図６６のＳ１５６に対応している。上記ブロックＢ８の処理の結果、ステップＳ１５６に示されるように、レジスタｍｉｄｌには、斜線により示される４バイトのデータ（パック１０進数データの終端から２ワード目のデータ、つまり、データＷ１の最上位１バイトとデータＷ２の下位３バイトのデータ）がセットされることになる。
【０１６７】
次の命令コード列のブロックＢ１０、Ｂ１１は、パック１０進数データが存在するメモリ５における最下位から３番目の１ワードのロード処理である。その最初のｓｕｂ命令は、図６７のステップＳ１５７に対応しており、アドレスＱから１２（バイト数に対応）を引いて次の１ワード（最下位から３番目の１ワード）を読み出すためのアドレスＱ３を得る。次のｔｓｔｌｔｕ命令は、図６７のステップＳ１５８に対応しており、上記で求めたアドレスＱ３がパック１０進数の先頭アドレスが含まれるメモリ５上のワードエリアのワード境界アドレスｐを越えた（Ｑ３＞ｐ）か否かを検出し、Ｑ３＞ｐであれば「判断３」のｔｕｒｅへ分岐し、Ｑ３＞ｐでなければ「判断３」のｆａｕｌへ分岐する。そして、次にｍｏｖ命令によりレジスタｗ３に０をセットして初期化する。この初期化処理は、図６３〜図６８においては、図６３の脚注に示すように、省略してある。更に、ブロックＢ１１のｌｄ命令によって、アドレスＱ３により最下位から３番目の１ワードをメモリ５から読み出し、レジスタｗ３へロードする。これは、図６７のステップＳ１５９に対応しており、パック１０進数データの最下位部分を含む１ワードＷ０（ワード境界から１ワードのデータ）から３番目の１ワードＷ３が読み出されてロードされることを示している。
【０１６８】
次の命令コード列のブロックＢ１２は、上記で読み出してあるレジスタｗ２、ｗ３内のデータＷ２、Ｗ３を、上記で求めた差Ｈ（８ビット）だけ左シフトして、レジスタｍｉｄｈにセットする処理を示し、図６７のＳ１６０に対応している。上記ブロックＢ１２の処理の結果、ステップＳ１６０に示されるように、レジスタｍｉｄｈには、斜線により示される４バイトのデータ（パック１０進数データの終端から３ワード目のデータ、つまり、データＷ２の最上位１バイトとデータＷ３の下位３バイトのデータ）がセットされることになる。
【０１６９】
次の命令コード列のブロックＢ１３、Ｂ１４は、パック１０進数データが存在するメモリ５における最上位の１ワードのロード処理である。その最初のｓｕｂ命令は、図６８のステップＳ１６１に対応しており、アドレスＱから１６（バイト数に対応）を引いて次の１ワード（最上位の１ワード）を読み出すためのアドレスＱ４を得る。次のｔｓｔｌｔｕ命令は、図６８のステップＳ１６２に対応しており、上記で求めたアドレスＱ４がパック１０進数の先頭アドレスが含まれるメモリ５上のワードエリアのワード境界アドレスｐを越えた（Ｑ４＞ｐ）か否かを検出し、Ｑ４＞ｐであれば「判断４」のｔｕｒｅへ分岐し、Ｑ４＞ｐでなければ「判断４」のｆａｕｌへ分岐する。そして、次にｍｏｖ命令によりレジスタｗ４に０をセットして初期化する。この初期化処理は、図６３〜図６８においては、図６３の脚注に示すように、省略してある。更に、ブロックＢ１４のｌｄ命令によって、アドレスＱ４により最上位の１ワードをメモリ５から読み出し、レジスタｗ４へロードする。これは、図６８のステップＳ１６３に対応しており、最上位の１ワードＷ４が読み出されてロードされることを示している。
【０１７０】
次の命令コード列のブロックＢ１５は、上記で読み出してあるレジスタｗ３、ｗ４内のデータＷ３、Ｗ４を、上記で求めた差Ｈ（８ビット）だけ左シフトして、レジスタｈｉｇｈにセットする処理を示し、図６８のＳ１６４に対応している。上記ブロックＢ１５の処理の結果、ステップＳ１６４に示されるように、レジスタｈｉｇｈには、斜線により示される４バイトのデータ（パック１０進数データの終端から４ワード目のデータ、つまり、データＷ３の最上位１バイトとデータＷ４の下位３バイトのデータ）がセットされることになる。
【０１７１】
以上で図６２の命令コード列により記載されている処理はＥＮＤとなるが、図６３のステップＳ１４１と図６８のステップＳ１６５との比較から明らかなように、レジスタｈｉｇｈには、先頭から１バイトの余分なデータがセットされている。そこで、後処理においては、引数サイズｓが何ワードと何バイトに対応するかに基づき、レジスタｌｏｗからｈｉｇｈまでの内のどの範囲を有効とするか求め、上記何バイトの分以外のバイト、この例ではｓが１１（バイト）であるから、２ワードと３バイトとなり、レジスタｈｉｇｈの上位１バイトの削除（０との入れ換え）を行う。この入れ換えは、例えば、上位１バイトが０、下位３バイトが１のデータと、レジスタｈｉｇｈのデータのａｎｄをとることにより可能である。
【０１７２】
このようにして、メモリ５のワード境界に係わりなく記憶されているパック１０進数のデータをレジスタにロードする場合に、ワード単位の読み出しを用いることができ、バイト単位に読み出しを行う場合に比べて遥かにロード命令の実行回数を減少させ、処理の高速化を図ることができる。このような処理は、図４１の演算回路２０−１（または、２０−３）のみを用いて、繰り返し処理により実行可能である。つまり、図６２の処理は、３４ステップ、分岐数５で実現されることになる。
【０１７３】
上記図４１の構成のＲＩＳＣ計算機により、図６２に示される命令コード列の処理を並列実行させる場合の命令コード列を図６９に示す。上記図６２の例では１つの演算回路（例えば、２０−１）が、各命令を繰り返し実行するようにしたが、この図６９の例では、演算回路２０−１、２−２、２０−３、２−４が、各サイクルにおいて図示のｌｄ命令によるワード単位の読み出しと、ｓｌｌ．ｌ命令等の複数命令を並列的に実行している。これにより、図６２の構成では、３４サイクル必要であったのに対し、本実施例では１０サイクル、分岐数０で済むようになっており、処理の高速化が図られている。
【０１７４】
上記図４１の演算回路２０−１、２０−３は、２つのジェネラルレジスタで指定された固定小数点１ワードデータを、第３のジェネラルレジスタで指定されたキャリーと共に加算し、加算結果を第１のディスティネーションレジスタに格納し、加算結果のキャリーを第２のディスティネーションレジスタに格納する加算手段を備えている。また、演算回路２０−１、２０−３は、第１のジェネラルレジスタで指定された固定小数点１ワードデータから第２のジェネラルレジスタで指定された固定小数点１ワードデータを減算すると共に、第３のジェネラルレジスタで指定されたキャリーの反転値を減算し、減算結果を第１のディスティネーションレジスタに格納し、減算結果のキャリーの反転値を第２のディスティネーションレジスタに格納する減算手段を備えている。更に、演算回路２０−１、２０−３は、２つのジェネラルレジスタで指定されたパック１０進数１ワードデータを、第３のジェネラルレジスタで指定されたキャリーと共に加算し、加算結果を第１のディスティネーションレジスタに格納し、加算結果のキャリーを第２のディスティネーションレジスタに格納する加算手段を備えている。また、演算回路２０−１、２０−３は、第１のジェネラルレジスタで指定されたパック１０進数１ワードデータから第２のジェネラルレジスタで指定されたパック１０進数１ワードデータを減算すると共に、第３のジェネラルレジスタで指定されたキャリーの反転値を減算し、減算結果が負数の場合には１０の補数として、減算結果を第１のディスティネーションレジスタに格納し、減算結果のキャリーの反転値を第２のディスティネーションレジスタに格納する減算手段を備えている。
【０１７５】
別言すれば、上記演算回路２０−１、２０−３は、２つのジェネラルレジスタで指定された固定小数点１ワードデータを、第３のジェネラルレジスタで指定されたキャリーと共に加算し、加算結果を第１のディスティネーションレジスタに格納し、加算結果のキャリーを第２のディスティネーションレジスタに格納するａｄｄｃ命令を実行する。また、上記演算回路２０−１、２０−３は、第１のジェネラルレジスタで指定された固定小数点１ワードデータから第２のジェネラルレジスタで指定された固定小数点１ワードデータを減算すると共に、第３のジェネラルレジスタで指定されたキャリーの反転値を減算し、減算結果を第１のディスティネーションレジスタに格納し、減算結果のキャリーの反転値を第２のディスティネーションレジスタに格納するｓｕｂｃ命令を実行する。更に、上記演算回路２０−１、２０−３は、２つのジェネラルレジスタで指定されたパック１０進数１ワードデータを、第３のジェネラルレジスタで指定されたキャリーと共に加算し、加算結果を第１のディスティネーションレジスタに格納し、加算結果のキャリーを第２のディスティネーションレジスタに格納するａｄｄｃ．ｐ命令を実行する。また、上記演算回路２０−１、２０−３は、第１のジェネラルレジスタで指定されたパック１０進数１ワードデータから第２のジェネラルレジスタで指定されたパック１０進数１ワードデータを減算すると共に、第３のジェネラルレジスタで指定されたキャリーの反転値を減算し、減算結果が負数の場合には１０の補数として、減算結果を第１のディスティネーションレジスタに格納し、減算結果のキャリーの反転値を第２のディスティネーションレジスタに格納するｓｕｂｃ．ｐ命令を実行する。
【０１７６】
ａｄｄｃ命令は、図７０の１２８に示されるように、加算する対象が格納されている２つのレジスタ（％ｒｓ１）、（％ｒｓ２）と、加算すべきキャリーが格納されているレジスタ（％ｒｓ３）と、結果を書き込むディスティネーションレジスタ（％ｒｄ１）と、加算結果のキャリーを書き込むディスティネーションレジスタ（％ｒｄ２）とを指定して記述される。但し、加算対象であるキャリーは、ジェネラルレジスタｒｓ３の最下位ビットであるビット３１に格納されており、ビット０〜３０は無視される。また、加算結果であるキャリーは、ディスティネーションレジスタｒｄ２の最下位ビットであるビット３１に格納され、ビット０〜３０は使用されない。上記記述１２８の右には、コロンを挟んで、ａｄｄｃ命令の内容が数式と記号で疑似的に表現されている。
【０１７７】
ｓｕｂｃ命令は、図７１の１２９に示されるように、引かれる対象が格納されている第１のレジスタ（％ｒｓ１）、引く数値が格納されている第２のレジスタ（％ｒｓ２）と、引くべきキャリーが格納されているレジスタ（％ｒｓ３）と、結果を書き込むディスティネーションレジスタ（％ｒｄ１）と、減算結果のキャリーの反転値を書き込むディスティネーションレジスタ（％ｒｄ２）とを指定して記述される。但し、引くべきキャリーは、ジェネラルレジスタｒｓ３の最下位ビットであるビット３１に格納されており、ビット０〜３０は使用されない。また、減算結果に係るキャリーは、ディスティネーションレジスタｒｄ２の最下位ビットであるビット３１に格納され、ビット０〜３０は使用されない。上記記述１２９の右には、コロンを挟んで、ｓｕｂｃ命令の内容が数式と記号で疑似的に表現されている。
【０１７８】
上記ａｄｄｃ命令に対応して、演算回路２０−１、２０−３には、図７４に示されるような加算手段が備えられている。つまり、３２個のフルアダー６０−１〜６０−３２から構成され、ａ31〜ａ0 にはレジスタｒｓ１のデータが、ｂ31〜ｂ0 にはレジスタｒｓ２のデータが、ＣA にはレジスタｒｓ３のデータ（ビット３１）が、それぞれセットされる。また、ｄ31〜ｄ0 にはレジスタｒｄ１へ書き込むべきデータが出力され、ＣB にはレジスタｒｄ２のビット３１に書き込まれるデータが出力される。各フルアダーにおける桁上がりは、上位のフルアダーのキャリー入力端子に与えられる。また、上記ｓｕｂｃ命令に対応して、演算回路２０−１、２０−３に備えられる減算手段は、上記図７４の構成において、フルアダーを全減算器で置き換えた構成を有する。
【０１７９】
更に、ａｄｄｃ．ｐ命令は、図７２の１３０に示されるように、加算する対象が格納されている２つのレジスタ（％ｒｓ１）、（％ｒｓ２）と、加算すべきキャリーが格納されているレジスタ（％ｒｓ３）と、結果を書き込むディスティネーションレジスタ（％ｒｄ１）と、加算結果のキャリーを書き込むディスティネーションレジスタ（％ｒｄ２）とを指定して記述される。加算はパック１０進数毎、つまり、４ビット毎に行われ、４ビット毎の結果がディスティネーションレジスタ（％ｒｄ１）に書き込まれる。但し、加算対象であるキャリーは、ジェネラルレジスタｒｓ３の最下位ビットであるビット３１に格納されており、ビット０〜３０は無視される。また、加算結果であるキャリーは、ディスティネーションレジスタｒｄ２の最下位ビットであるビット３１に格納され、ビット０〜３０は使用されない。上記記述１３０の右には、コロンを挟んで、ａｄｄｃ．ｐ命令の内容が数式と記号で疑似的に表現されている。
【０１８０】
ｓｕｂｃ．ｐ命令は、図７３の１３１に示されるように、引かれる対象が格納されている第１のレジスタ（％ｒｓ１）、引く数値が格納されている第２のレジスタ（％ｒｓ２）と、引くべきキャリーが格納されているレジスタ（％ｒｓ３）と、結果を書き込むディスティネーションレジスタ（％ｒｄ１）と、減算結果のキャリーの反転値を書き込むディスティネーションレジスタ（％ｒｄ２）とを指定して記述される。減算はパック１０進数毎、つまり、４ビット毎に行われ、４ビット毎の結果がディスティネーションレジスタ（％ｒｄ１）に書き込まれる。但し、引くべきキャリーは、ジェネラルレジスタｒｓ３の最下位ビットであるビット３１に格納されており、ビット０〜３０は使用されない。また、減算結果に係るキャリーは、ディスティネーションレジスタｒｄ２の最下位ビットであるビット３１に格納され、ビット０〜３０は使用されない。上記記述１３１の右には、コロンを挟んで、ｓｕｂｃ．ｐ命令の内容が数式と記号で疑似的に表現されている。
【０１８１】
上記ａｄｄｃ．ｐ命令に対応して、演算回路２０−１、２０−３には、図７５に示されるような加算手段が備えられている。つまり、それぞれパック１０進数を加算する８個のパック１０進数加算器６１−１〜６１−８と、このパック１０進数加算器６１−１〜６１−８の出力について、必要に応じてキャリーと当該桁の結果とに別けて出力する補正・キャリー出力回路６２−１〜６１−８とから構成される。パック１０進数加算器６１−１〜６１−８には、入力端子Ａ7 〜Ａ0 、Ｂ7 〜Ｂ0 が備えられており、それぞれ４ビットのパック１０進数データが入力される。但し、入力端子Ａ7 〜Ａ0 、Ｂ7 〜Ｂ0 へ入力されるデータがパック１０進数の不正データ（１６進のＡ〜Ｆ）であっても加算を行うので、係る場合の演算結果は保証されず、不正データが出力されることがあり得る。また、補正・キャリー出力回路６２−１〜６１−８は、加算の結果が１６進のＡ〜Ｆのときに、キャリーを出力すると共に結果からキャリー分を引くを補正して出力とする。また、結果が負数のときには、これを１０の補数に変換して出力する。Ａ31〜Ａ0 にはレジスタｒｓ１のデータが、Ｂ31〜Ｂ0 にはレジスタｒｓ２のデータが、ＣA にはレジスタｒｓ３のデータ（ビット３１）が、それぞれセットされる。また、Ｄ31〜Ｄ0 にはレジスタｒｄ１へ書き込むべきデータが出力され、ＣB にはレジスタｒｄ２のビット３１に書き込まれるデータが出力される。各補正・キャリー出力回路６２−１〜６１−７における桁上がりは、上位の補正・キャリー出力回路のキャリー入力端子に与えられる。また、上記ｓｕｂｃ．ｐ命令に対応して、演算回路２０−１、２０−３に備えられる減算手段は、上記図７５の構成において、パック１０進数加算器６１−１〜６１−８をそれぞれパック１０進数減算器で置き換えた構成を有する。
【０１８２】
上記演算回路２０−１、２０−３を備えたＲＩＳＣ計算機は、複数ワードのパック１０進数データについて加算、減算を行うＲＩＳＣ計算機として機能する。従来のＲＩＳＣ計算機においては、例えば、図８３に示されるような４ワードからなるパック１０進数データの加算、減算を実行する場合には、図７６〜図７８に示されるフローチャートのプログラムにより１バイトずつ処理を行っていた。また、上記図７６〜図７８の処理は、図７９〜図８１に示されるＣ言語による記述に対応しているので、それぞれに同一符号を付して説明する。
【０１８３】
図７９のブロックＢ１６１内には、各レジスタ等の定義が記述されている。そして、ブロックＢ１６２内では、前処理においてデータ１とデータ２との符号ビット（最下位の４ビット）を削除すると共に、レジスタｉ、ｊにデータ１、データ２の大きさ（長さ）から１を引いたデータをセットし、処理の残バイト数を検出可能とし、また、未だキャリーが無いことをレジスタcarry に０をセットして示す。図８３のデータ１、２については大きさが１６バイトであるから、ｉ＝１５、ｊ＝１５となる。
【０１８４】
次に、データ１とデータ２との符号が一致しているか否かを検出する（Ｓ１６５）。一致すると、レジスタｉの値が１より大であるか否かを検出してデータ１に計算すべきバイトが残っているか否かを調べる（Ｓ１６６）。ここでは、ｉ＝１５よりｙｅｓへ分岐し、データ１の最下位バイト（EA1[15])と0xf0との論理積により最下位バイトの上位４ビットを取り出し、４右シフトして最下位４ビットの位置に移動し、これをレジスタEA1hにセットすると共に、データ１の最下位バイト（EA1[15])と0x0fとの論理積により最下位バイトの下位４ビットを取り出し、これをレジスタEA1lにセットする（Ｓ１６７）。ステップＳ１６８は、ステップ１６６でｎｏへ分岐した場合の処理であり、データ１に計算すべきデータがない場合であるから、レジスタEA1h、レジスタEA1lにそれぞれ０をセットする。ステップＳ１６９〜Ｓ１７１の処理は、データ２についての処理であり、データ１についての処理であるステップＳ１６６〜Ｓ１６８と同様な処理が行われる。
【０１８５】
次に、下位１桁の加算を行い（Ｓ１７２）、結果にキャリーが生じたか否かをレジスタclが１０を越えていないかを検出することにより調べる（Ｓ１７３）。キャリーがなければ、上位１桁の加算を行い（Ｓ１７４）、キャリーがあると下位１桁の加算結果から１０を引くと共に、上位１桁の加算に桁上がりの１を加えて上位１桁の加算結果を得る（Ｓ１７５）。更に、上位１桁の加算結果にキャリーが生じたか否かをレジスタchが１０を越えていないかを検出することにより調べる（Ｓ１７６）。ここで、キャリーがなければ、レジスタcarry に０をセットする（Ｓ１７７）、一方、キャリーがあると上位１桁の加算結果から１０を引くと共に、上位１桁の加算結果に桁上がりがあったことをレジスタcarry に１をセットして示す（Ｓ１７８）。次に、レジスタchのデータを４左シフトし、レジスタclのデータと論理和を作成することにより上位１桁と下位１桁とを１バイトにし（Ｓ１７９）、次の１バイトの処理へ移るため、レジスタｉ、ｊから更に１をそれぞれ引き、レジスタｉ、ｊの内容が０より大か否かに応じてステップＳ１６６からの処理を繰り返すか、ステップＳ１９５の後処理へ進むかを決定する（Ｓ１８０）。ここで、図８３のデータ１、データ２については、１６バイトゆえに１６回の繰り返し処理が行われる。これにより、１ワード３２ビットで４ワード分のパック１０進数データの絶対値の加算が行われる。
【０１８６】
一方、ステップＳ１６５において、データ１とデータ２の符号が不一致が検出された場合には、それぞれの絶対値を調べて、大きい方のデータをレジスタEA1 にセットする（Ｓ１８１）。つまり、レジスタｉ、ｊの値を基に、これが等しいときには、データ１、２の最上位バイトから取り出しそれらが等しい場合には、レジスタk の値を０からインクリメントして順次比較を行い、データ２の或る１バイトがデータ１の対応する１バイトより大きい場合には、work=EA1,EA1=EA2,EA2=work のレジスタ操作によりデータ１とデータ２の入れ換えを行う。また、レジスタｉ、ｊの値を基に、データ２のデータ大きさｊがデータ１の大きさｉより大であるときには、上記と同様のレジスタ操作により、データ１とデータ２の入れ換えを行う。なお、データ１の方が大であると、入れ換えは行われない。
【０１８７】
次に、データ１の最下位バイト（EA1[15])と0xf0との論理積により最下位バイトの上位４ビットを取り出し、４右シフトして最下位４ビットの位置に移動し、これをレジスタEA1hにセットすると共に、データ１の最下位バイト（EA1[15])と0x0fとの論理積により最下位バイトの下位４ビットを取り出し、これをレジスタEA1lにセットする（Ｓ１８２）。そして、レジスタｊの値が１より大であるか否かを検出してデータ２に計算すべきバイトが残っているか否かを調べる（Ｓ１８３）。ここでは、ｊ＝１５よりｙｅｓへ分岐し、データ２の最下位バイト（EA2[15])と0xf0との論理積により最下位バイトの上位４ビットを取り出し、４右シフトして最下位４ビットの位置に移動し、これをレジスタEA2hにセットすると共に、データ１の最下位バイト（EA2[15])と0x0fとの論理積により最下位バイトの下位４ビットを取り出し、これをレジスタEA2lにセットする（Ｓ１８４）。ステップＳ１８５は、ステップ１８３でｎｏへ分岐した場合の処理であり、データ２に計算すべきデータがない場合であるから、レジスタEA2h、レジスタEA2lにそれぞれ０をセットする。
【０１８８】
次に、下位１桁の減算を行い（Ｓ１８６）、結果にキャリーが生じたか否かをレジスタclが０より大かを検出することにより調べる（Ｓ１８７）。キャリーがなければ、上位１桁の減算を行い（Ｓ１８８）、キャリーがあると下位１桁の減算結果に１０を加えると共に、上位１桁の減算において桁下がりの１を引いて上位１桁の減算結果を得る（Ｓ１８９）。更に、上位１桁の減算結果にキャリーが生じたか否かをレジスタchが０より大かを検出することにより調べる（Ｓ１９０）。ここで、キャリーがなければ、レジスタcarry に０をセットする（Ｓ１９１）、一方、キャリーがあると上位１桁の減算結果に１０を加える共に、上位１桁の減算結果に桁下がりがあったことをレジスタcarry に１をセットして示す（Ｓ１９２）。次に、レジスタchのデータを４左シフトし、レジスタclのデータと論理和を作成することにより上位１桁と下位１桁とを１バイトにし（Ｓ１９３）、次の１バイトの処理へ移るため、レジスタｉ、ｊから更に１をそれぞれ引き、レジスタｉの内容が０より大か否かに応じてステップＳ１８２からの処理を繰り返すか、ステップＳ１９５の後処理へ進むかを決定する（Ｓ１９４）。ここで、図８３のデータ１、データ２については、１６バイトゆえに１６回の繰り返し処理が行われる。これにより、１ワード３２ビットで４ワード分のパック１０進数データの絶対値の減算が行われる。
【０１８９】
上記の絶対値の演算結果を得て、後処理についで符号処理を行うことにより、加算が実行される。なお、パック１０進数の減算の場合には、データ１とデータ２の符号が一致のときに絶対値の減算を行い、符号が不一致のときに絶対値の加算を行う。このように、従来のＲＩＳＣ計算機による複数ワードのパック１０進数データの加算または減算は、バイト単位に処理が繰り返されていたので、最終的な演算結果が得られるまでに処理回数が多くなるという問題点がある。また、ＲＩＳＣ計算機では、レジスタ長が３２ビット、６４ビット等であり、８ビットずつ処理するのでは、レジスタに空きが生じ効率が悪く、また、並列処理の場合にも効率が上がらないという問題点があった。
【０１９０】
本発明に係るａｄｄｃ．ｐ命令及びｓｕｂｃ．ｐ命令を実行する演算回路２０−１（２０−３）を有するＲＩＳＣ計算機により上記問題点が解決される。つまり、本発明の実施の形態に係るＲＩＳＣ計算機は、図８２に示されるように、一致不一致検出手段６５、加算手段６６、減算手段６７を有する。一致不一致検出手段６５は、複数ワードのパック１０進数からなる第１のデータと複数ワードのパック１０進数からなる第２のデータのそれぞれの符号の一致不一致を検出する。パック１０進数データの加算を行う場合には、上記検出の結果、符号が一致していることが検出された場合（実線の矢印により示される。）に、また、パック１０進数データの減算を行う場合には、上記検出の結果、符号が不一致であることが検出された場合（破線の矢印により示される。）に、それぞれ、加算手段６６は、ａｄｄｃ．ｐ命令を実行する演算回路２０−１（２０−３）を用いて上記第１のデータと第２のデータとをワード単位に加算する。このとき、加算の各段階で生じたキャリーを次段階の加算にて用いて複数ワードのパック１０進数の加算を行う。つまり、図８２のワード１とワード２との加減算の場合には、ＬＯＷ１とＬＯＷ２、ＭＩＤＬ１とＭＩＤＬ２、ＭＩＤＨ１とＭＩＤＨ２、ＨＩＧＨ１とＨＩＧＨ２のそれぞれの１ワード毎のキャリーを含む加算が行われるだけで、結果を得ることができる。パック１０進数データの加算を行う場合には、上記検出の結果、符号が不一致であることが検出された場合（実線の矢印により示される。）に、また、パック１０進数データの減算を行う場合には、上記検出の結果、符号が一致していることが検出された場合（実線の矢印により示される。）に、それぞれ、減算手段６７は、ｓｕｂｃ．ｐ命令を実行する演算回路２０−１（２０−３）を用いて上記第１のデータと第２のデータとをワード単位に減算する。このとき、減算の各段階で生じたキャリーを次段階の減算にて用いて複数ワードのパック１０進数の減算を行う。つまり、図８２のワード１とワード２との減算の場合には、ＬＯＷ１とＬＯＷ２、ＭＩＤＬ１とＭＩＤＬ２、ＭＩＤＨ１とＭＩＤＨ２、ＨＩＧＨ１とＨＩＧＨ２のそれぞれの１ワード毎のキャリーを含む減算が行われるだけで、結果を得ることができる。上記のパック１０進数の加減算の結果に対しては、符号処理により適切な符号が与えられる。
【０１９１】
図４１に示されるような演算回路２０（２０−１、２０−３）を備え、演算回路２０（２０−１、２０−３）がａｄｄｃ．ｐ命令及びｓｕｂ．ｐ命令を実行するＲＩＳＣ計算機は、図８４に示されるフローチャートの処理により、図８３に示される４ワードのパック１０進数データ１、２の減算を行う。すなわち、パック１０進数データが図８３に示されるように、４ワードから構成され、１ワードが３２ビットであるとする。すると、１ワード毎に減算処理を行い、これを４回繰り返す。この処理は、図８５に示されるニーモニック表記と対応しているので、フローチャートと共に参照して説明を行う。
【０１９２】
まず、前処理において、データ１とデータ２の符号部を削除しておく（Ｓ２０１）。つまり、図８３に示されるように、符号部は最下位ワードの下位４ビットにあるから、これを削除（０との置き換え）を行っておく。次に、データ１の符号をレジスタｗ１１にセットし（Ｓ２０２）、データ２の符号をレジスタｗ１２にセットする（Ｓ２０３）。つまり、図８５に示されるように、レジスタＬＯＷ１にセットされた最下位ワードと下位４ビットのみが１の０ｘｆとの論理積を作成してレジスタｗ１１にセットし、レジスタＬＯＷ２にセットされた最下位ワードと下位４ビットのみが１の０ｘｆとの論理積を作成してレジスタｗ１２にセットする。次のｍｏｖ命令は、図８４では、注にあるように、レジスタcarry に０をセットすることに対応している。
【０１９３】
次に、レジスタｗ１１とレジスタｗ１２との内容が一致するかを検出して、データ１とデータ２の符号が同一ないかを調べる（Ｓ２０４）。ここで、同一でなければ、判断４のｔｕｒｅへ分岐し加算処理となる。つまり、ａｄｄｃ．ｐ命令によりレジスタＬＯＷ１、ＬＯＷ２にそれぞれセットされた最下位のワードとレジスタcarry の内容を加えてレジスタＬＯＷ１に結果を、キャリーをレジスタcarry にセットする（Ｓ２０５）。更に、ａｄｄｃ．ｐ命令によりレジスタＭＩＤＬ１、ＭＩＤＬ２にそれぞれセットされた最下位から２番目のワードとレジスタcarry の内容を加えてレジスタＭＩＤＬ１に結果を、キャリーをレジスタcarry にセットする（Ｓ２０６）。更に、ａｄｄｃ．ｐ命令によりレジスタＭＩＤＨ１、ＭＩＤＨ２にそれぞれセットされた最下位から３番目のワードとレジスタcarry の内容を加えてレジスタＭＩＤＨ１に結果を、キャリーをレジスタcarry にセットする（Ｓ２０７）。次に、ａｄｄｃ．ｐ命令によりレジスタＨＩＧＨ１、ＨＩＧＨ２にそれぞれセットされた最上位のワードとレジスタcarry の内容を加えてレジスタＨＩＧＨ１に結果を、キャリーをレジスタcarry にセットする（Ｓ２０８）。そして、符号処理（Ｓ２０９）へと進む。
【０１９４】
一方、符号が一致すると、判断４のｆａｕｌへ分岐し、減算処理となる。つまり、ｓｕｂｃ．ｐ命令によりレジスタＬＯＷ１にセットされた最下位のワードからレジスタＬＯＷ２にセットされた最下位のワードとレジスタcarry の内容を引いてレジスタＬＯＷ１に結果を、キャリーをレジスタcarry にセットする（Ｓ２１０）。更に、レジスタＭＩＤＬ１にセットされた最下位から２番目のワードからレジスタＭＩＤＬ２にセットされた最下位から２番目のワードとレジスタcarry の内容を引いてレジスタＭＩＤＬ１に結果を、キャリーをレジスタcarry にセットする（Ｓ２１１）。更に、レジスタＭＩＤＨ１にセットされた最下位から３番目のワードからレジスタＭＩＤＨ２にセットされた最下位から３番目のワードとレジスタcarry の内容を引いてレジスタＭＩＤＨ１に結果を、キャリーをレジスタcarry にセットする（Ｓ２１２）。そして、レジスタＨＩＧＨ１にセットされた最上位のワードからレジスタＨＩＧＨ２にセットされた最上位のワードとレジスタcarry の内容を引いてレジスタＨＩＧＨ１に結果を、キャリーをレジスタcarry にセットする（Ｓ２１３）。そして、符号処理（Ｓ２０９）へと進む。
【０１９５】
以上のようにして、４ワードからなるパック１０進数データの減算が、図８５の命令列のまま実装した場合には、１つの演算回路２０−１（または、２０−３）において、１５ステップ、分岐数１で実行される。つまり、１ワード単位で減算が行われる結果、バイト単位で処理を行っていた従来に比べて、遥かに処理ステップが少なくなると共に、レジスタに１ワードのデータが格納され、効率良く利用処理される。
【０１９６】
上記図４１の構成のＲＩＳＣ計算機により、図８５に示される命令コード列の処理を並列実行させる場合の命令コード列を図８６に示す。上記図８５の例では１つの演算回路（例えば、２０−１）が、ａｄｄｃ．ｐ命令またはｓｕｂｃ．ｐ命令を１サイクルに１命令実行して４ワード分の４回繰り返すようにしたが、この図８６の例では、ａｄｄｃ．ｐ命令またはｓｕｂｃ．ｐ命令を１サイクルに複数命令実行する。つまり、演算回路２０−１でａｄｄｃ．ｐ命令を実行し、並列的に演算回路２０−３でｓｕｂｃ．ｐ命令を実行している。これにより、図８５の構成では、１５サイクル必要であったのに対し、本実施例では７サイクル、分岐数０で済むようになっており、処理の高速化が図られている。
【０１９７】
なお、上記図８４〜図８６に示す処理では、パック１０進数データの減算を例に挙げたが、同様にパック１０進数データの加算の処理もａｄｄｃ．ｐ命令またはｓｕｂｃ．ｐ命令を用いて実行することができる。つまり、ステップＳ２０４の分岐（図８５、図８６も同様）において、ｔｕｒｅとｆａｕｌを反転させることにより、パック１０進数データの加算処理を実行することができる。
【０１９８】
上記演算回路２０−１、２０−２、２０−３、２０−４を備えたＲＩＳＣ計算機は、パック１０進数データについて乗算を行うＲＩＳＣ計算機として機能する。従来のＲＩＳＣ計算機においては、例えば、図８７の最上位行に示されるような１ワード（４バイト）からなるパック１０進数データの乗算を実行する場合には、図８７〜図９１に示されるフローチャートのプログラムにより１バイトずつ処理を行っていた。また、上記図８７〜図９１の処理は、図９２〜図９３に示されるＣ言語による記述に対応しているので、それぞれに同一符号を付して説明する。
【０１９９】
図９２のブロックＢ１７１内には、各レジスタ等の定義が記述されている。そして、ブロックＢ１７２内では、前処理においてデータ１とデータ２との符号ビット（最下位の４ビット）の取り出しを行うと共に、レジスタｉ、ｊにデータ１、データ２の大きさ（長さ）をセットし、処理の残バイト数を検出可能とし、また、未だキャリーが無いことをレジスタcarry に０をセットして示す。図９２のデータ１、２については大きさ（長さ）が４バイトであるから、ｉ＝４、ｊ＝４となる。
【０２００】
次に、ｉ、ｊについて、大小関係及び所与の桁数内で正常であるかを検出する（Ｓ２１０）。ここで、ＮＯとなるとＥＲＲのオーバーフロー処理（Ｓ２３７）へと進む。正常であれば、レジスタＥＡ１sig 、ＥＡ２sig にデータ１、２の符号を保存する（Ｓ２１１）。更に、データ１、２の符号を削除して（Ｓ２１２）、データ１のバイト数ｉの範囲内でｋを変化させｂｕｆ［ｋ］＝０を生成する（Ｓ２１３）。次に、ｉに対応するデータ１の１バイトの上位桁をＥＡ１Ｈにセットし、下位桁をＥＡ１Ｌにセットする（Ｓ２１４）。そして、ｊが０より大であるか否かに基づいてデータ２に計算するデータがあるかを検出する（Ｓ２１５）。計算すべきデータがあれば、ｊに対応するデータ２の１バイトの上位桁をＥＡ２Ｈにセットし、下位桁をＥＡ２Ｌにセットする（Ｓ２１６）。また、計算すべきデータがなければ、ＥＡ２Ｈ、ＥＡ２Ｌに０をセットする（Ｓ２１７）。
【０２０１】
次に、ｂｕｆ［ｋ］にセットされている中間結果の上位桁をｂｕｆＨへセットすると共に、下位桁をｂｕｆＬへセットする（Ｓ２１８）。当初は、このｂｕｆ［ｋ］の値は０である。次に、レジスタcarry を調べて、その値を１０で割った商である桁上がり分のキャリーを上記ｂｕｆＨに加え、１０で割った剰余を上記ｂｕｆＬへ加えて、下位桁からのキャリーを中間結果に反映させる（Ｓ２１９）。そして、データ１の下位桁とデータ２の下位桁の掛け算にｂｕｆＬのデータを加えて、ｘＬにセットする（Ｓ２２０）。この下位桁の乗算結果であるｘＬが１０を越えていないか否か検出して、下位桁の乗算にキャリーが生じたか否かを検出する（Ｓ２２１）。ここで、キャリーがなければ、ｘＬにセットされている結果をレジスタｙＬへ移し、データ１の下位桁とデータ２の上位桁との掛け算を行い、データ１の上位桁とデータ２の下位桁との掛け算を行い、これら２つの掛け算結果にｂｕｆＨにセットされているキャリーを加えてｘＨにセットする（Ｓ２２２）。一方、キャリーが生じていると、ｘＬにセットされている結果を１０で割った剰余をレジスタｙＬへセットし、データ１の下位桁とデータ２の上位桁との掛け算を行い、データ１の上位桁とデータ２の下位桁との掛け算を行い、これら２つの掛け算結果にｂｕｆＨにセットされているキャリー並びにｘＬの内容を１０で割った商を加えてｘＨにセットする（Ｓ２２３）。
【０２０２】
次に、上記ｘＨの値が１０を越えていないか否かに基づき、上記で行った２桁目と１桁目の乗算結果にキャリーが発生したのかを検出する（Ｓ２２４）。そして、キャリーが発生していなければ、ｘＨにセットされている結果をｙＨに移し、データ１のとデータ２の上位桁同志を掛けて結果をcarry にセットする（Ｓ２２５）。一方、キャリーが生じていると、ｘＨにセットされている結果を１０で割った剰余をレジスタｙＨへセットし、データ１のとデータ２の上位桁同志を掛けて、この結果にｘＨにセットされている結果を１０で割った商を加えてcarry にセットする（Ｓ２２６）。次に、ｙＨの結果とｙＬの結果とを１バイトに並べてｂｕｆ［ｋ］にセットして中間結果を得る（Ｓ２２７）。
【０２０３】
次に、ｋをディクリメントしたときｋが０よりも小となり、かつ、carry があるか、つまり、中間結果をセットする対象のｂｕｆ［ｋ］が無いにも拘らず最上位の桁上げがcarry に格納されていることによるオーバーフローを検出し（Ｓ２２８）、Ｙとなると、ＥＲＲへ分岐しオーバーフロー処理が行われる（Ｓ２３７）。上記ステップＳ２２８においてＮへ分岐すると、ｊをディクリメントしたとき０以上、または、carry があるか、つまり、データ２に計算すべきデータが残されているとき、または、データ２に計算すべきデータが残されていないが、最上位の桁上げがcarry に格納されていることによるオーバーフローを検出し（Ｓ２２９）、ＹとなるとステップＳ２１５へ戻って処理を継続し、Ｎとなると、ｊにデータ２の長さをセットし、ｉをディクリメントしてｋへセットし、データ１の次の１バイトとデータ２の乗算の準備を行い（Ｓ２３０）、上記ｉが０以上かを検出してデータ１に計算すべきバイトが残っているかを検出して（Ｓ２３１）、ＹとなるとステップＳ２１４へ戻って処理を継続し、Ｎとなると最上位の桁上げがcarry に格納されていることによるオーバーフローを検出し（Ｓ２３２）、ＹとなるとＥＲＲへ分岐しオーバーフロー処理が行われる（Ｓ２３７）。また、Ｎとなると、各ｂｕｆ［ｋ］（ｋ＜ｉ）にセットされた結果を順次ＥＡ１に戻して最終結果を得る（Ｓ２３３）。
【０２０４】
次に、データ１とデータ２の符号は同一かどうかを調べ（Ｓ２３４）、同一であれば、０ｃ（１１００）をＥＡ１の最下位桁に符号としてセットし（Ｓ２３５）、同一でなければ、０ｄ（１１０１）をＥＡ１の最下位桁に符号としてセットする（Ｓ２３６）。
【０２０５】
上記のように従来のＲＩＳＣ計算機によるパック１０進数データの乗算は、バイト単位に処理を行い桁上がりを上位に順送りし、これを繰り返していたので、演算結果が得られるまでに処理回数が多くなるという問題点があった。また、ＲＩＳＣ計算機では、レジスタ長が３２ビット、６４ビット等であり、８ビットずつ処理するのでは、レジスタに空きが生じ効率が悪く、また、並列処理の場合にも効率が上がらないという問題点があった。
【０２０６】
上記に対し、本発明の実施の形態に係るＲＩＳＣ計算機は、第１の１ワードデータの最下位４ビットから４ビット間隔をおいて、パック１０進数を取り出し、この複数のパック１０進数データと第２の１ワードデータの最下位４ビットのパック１０進数データとを掛け合わせて、２桁のパック１０進数データを上記第１の１ワードデータに存在するパック１０進数データと同個数得て、ディスティネーションオペランドに出力する乗算手段を備える演算回路を具備する。
【０２０７】
別言すれば、上記演算回路２０−１、２０−２、２０−３、２０−４は、上記乗算手段を用いて、第１の１ワードデータの最下位４ビットから４ビット間隔をおいて、パック１０進数を取り出し、この複数のパック１０進数データと第２の１ワードデータの最下位４ビットのパック１０進数データとを掛け合わせて、２桁のパック１０進数データを上記第１の１ワードデータに存在するパック１０進数データと同個数得て、ディスティネーションオペランドに出力するｍｕｌ．ｐ命令を実行する。
【０２０８】
ｍｕｌ．ｐ命令は、図９４の１３５に示されるように、乗算する対象が格納されている２つのレジスタ（％ｒｓ１）、（％ｒｓ２）と、結果を書き込むディスティネーションレジスタ（％ｒｄ１）とを指定して記述される。この例では、１ワードは３２ビットであるから、レジスタｒｓ１のビット０〜３、ビット８〜１１、ビット１６〜１９、ビット２４〜２７は無視して、４ビット間隔をおいてレジスタｒｓ１のビット４〜７、ビット１２〜１５、ビット２０〜２３、ビット２８〜３１に配置された４つの１０進数データを被乗数とし、レジスタｒｓ２のビット０〜２７を無視して、最下位のビット２８〜３１に配置された１桁の１０進数データを乗数として上記被乗数に掛ける。掛け算の結果は、レジスタｒｄ１に１バイト単位で図９４に示すようにセットする。
【０２０９】
上記ｍｕｌ．ｐ命令に対応して、演算回路２０−１〜２０−４には、図９５に示されるような乗算手段が備えられている。つまり、レジスタｒｓ１のビット４〜７、ビット１２〜１５、ビット２０〜２３、ビット２８〜３１に配置された４つの１０進数データ以外をマスクするマスク回路７１、レジスタｒｓ２のビット０〜２７をマスクするマスク回路７２、マスク回路７１から出力されるレジスタｒｓ１のビット４〜７の１０進数データとマスク回路７２から出力されるレジスタｒｓ２のビット２８〜３１の１０進数データとの掛け算を行うパック１０進数乗算器７３−１、レジスタｒｓ１のビット１２〜１５の１０進数データとマスク回路７２から出力されるレジスタｒｓ２のビット２８〜３１の１０進数データとの掛け算を行うパック１０進数乗算器７３−２、レジスタｒｓ１のビット２０〜２３の１０進数データとマスク回路７２から出力されるレジスタｒｓ２のビット２８〜３１の１０進数データとの掛け算を行うパック１０進数乗算器７３−３、レジスタｒｓ１のビット２８〜３１の１０進数データとマスク回路７２から出力されるレジスタｒｓ２のビット２８〜３１の１０進数データとの掛け算を行うパック１０進数乗算器７３−４を備える。各パック１０進数乗算器７３−１〜４は、２つの入力の掛け算を行い、図９４のレジスタｒｄ１に示される８ビット単位のパック１０進数データを出力する。但し、各パック１０進数乗算器７３−１〜４の入力端子へ入力されるデータがパック１０進数の不正データ（１６進のＡ〜Ｆ）であっても乗算を行うので、係る場合の演算結果は保証されず、不正データが出力されることがあり得る。
【０２１０】
そして、本発明に係るｍｕｌ．ｐ命令を実行する演算回路２０−１〜２０−４、ｓｈｘ命令、ｉｓｈｘ命令、ｓｌｌ．ｌ命令、ａｄｄ．ｃ命令を実行する演算回路２０−１（２０−３）を有する本発明の実施の形態に係るＲＩＳＣ計算機により上記従来のＲＩＳＣ計算機でパック１０進数の乗算を行う場合の問題点を解決する。つまり、本発明の実施の形態に係るＲＩＳＣ計算機は、図９６に示されるように、前処理手段８１、乗算手段８２、桁分離手段８３、桁補正手段８４、加算手段８５を具備する。前処理手段８１は、１ワードのパック１０進数からなる被乗数データと、パック１０進数の０が１ワード集合されてなるデータとをｓｈｘ命令を実行する演算回路２０−１（２０−３）を用いて完全シャッフル処理する。乗算手段８２は、前処理手段８１により完全シャッフル処理された結果の２桁毎に対し、ｍｕｌ．ｐ命令を実行する演算回路２０−２（２０−４）を用いて乗数を構成する１桁のパック１０進数データを掛け合わせて２桁単位の結果を得る。桁分離手段８３は、上記乗算手段８２により得られた結果に対しｉｓｈｘ命令を実行する演算回路２０−１（２０−３）を用いて逆完全シャッフル処理して上位桁と下位桁に分離する。桁補正手段８４は、上記桁分離手段８３により分離された上位桁の結果にｓｌｌ．ｌ命令を実行する演算回路２０−１（２０−３）を用いて４ビットの左シフトを生じさせて、桁上がりによる桁位置との一致を図る。加算手段８５は、桁位置補正手段８４により補正された結果と、上記桁分離手段８４により分離された下位桁の結果とをａｄｄｃ．ｐ命令を実行する演算回路２０−１（２０−３）を用いて加算すると共に、加算の結果生じたキャリーを上記桁位置補正手段８４により上位ワードへシフトされた数値に加算して、パック１０進数データの乗算結果を得る。
【０２１１】
つまり、上記各手段による処理によって、図９６の最上位に記載の１ワードの被乗数「８９５６７８９０」に対し、１ワードの乗数「０００００００７」を掛ける演算を行うと、同図９６の最下位に記載の２ワード分の結果「０００００００６」、「２６９７５２３０」を、つまり、連続数字では、「６２６９７５２３０」を得ることができる。
【０２１２】
上記本発明の実施の形態に係るＲＩＳＣ計算機によりパック１０進数の乗算を実行する場合の処理を図９７から図１０４を参照して順を追って説明する。図９７には、図９６の最上位に記載の１ワードの被乗数「８９５６７８９０」がレジスタｒ１に記憶され、１ワードの乗数「０００００００７」がレジスタｒ２に記憶され、これらの乗算（％ｒ１×％ｒ２）を行うことが示されている。この場合、レジスタｒ１、ｒ２に記憶されるパック１０進数データは、前処理において符号が除去されている。
【０２１３】
前処理手段８１は、図９８に示されるｓｈｘ命令を実行する。つまり、演算回路２０−１（２０−３）により、１ワードの０のパック１０進数データ（％zero）と上記レジスタｒ１の１ワードの被乗数「８９５６７８９０」との完全シャッフル処理を行う。この場合、第３オペランドには％zeroがセットされている結果、対交換は行われない。そして、完全シャッフル処理の結果は、図９８に示すように、レジスタｗ１、ｗ２に記憶される。
【０２１４】
次に、乗算手段８２は、図９９に示されるｍｕｌ．ｐ命令を実行する。例えば、演算回路２０−２（２０−４）により、上記完全シャッフル処理されレジスタｗ１にセットされたパック１０進数データ「０８０９０５０６」と、レジスタｒ２の乗数「０００００００７」との間でｍｕｌ．ｐ命令による処理を行う。具体的には、「０８０９０５０６」の内の「８」、「９」、「５」、「６」と乗数「７」との乗算を行い、結果である「５６」、「６３」、「３５」、「４２」を並べてレジスタｗ１にセットする。従って、レジスタｗ１の偶数桁はキャリーとなっている。
【０２１５】
更に、乗算手段８２は、図１００に示されるｍｕｌ．ｐ命令を実行する。例えば、演算回路２０−２（２０−４）により、上記完全シャッフル処理されレジスタｗ２にセットされたパック１０進数データ「０７０８０９００」と、レジスタｒ２の乗数「０００００００７」との間でｍｕｌ．ｐ命令による処理を行う。具体的には、「０７０８０９００」の内の「７」、「８」、「９」、「０」と乗数「７」との乗算を行い、結果である「４９」、「５６」、「６３」、「００」を並べてレジスタｗ２にセットする。従って、レジスタｗ２の偶数桁はキャリーとなっている。
【０２１６】
次に、桁分離手段８３は、図１０１に示されるｉｓｈｘ命令を実行する。つまり、演算回路２０−１（２０−３）により、レジスタｗ１にセットされた１ワードのパック１０進数データ「５６６３３５４２」とレジスタｗ２にセットされた１ワードのパック１０進数データ「４９５６６３００」との完全逆シャッフル処理を行う。この場合、第３オペランドには％zeroがセットされている結果、対交換は行われない。そして、完全シャッフル処理の結果は、図１０１に示すように、レジスタｗ１、ｗ２に記憶される。この結果、レジスタｗ１には掛け算の結果の２桁の内の桁上がり分（２桁目）のデータが記憶され、レジスタｗ２には掛け算の結果の２桁の内の１桁目のデータが記憶され、桁分離が行われる。
【０２１７】
次に、桁補正手段８４は、図１０２に示されるｓｌｌ．ｌ命令を実行する。つまり、演算回路２０−１（２０−３）により、％zero及びレジスタｗ２にセットされた倍語のデータを第３オペランドの４ビット分左シフトする。この結果、レジスタｗ３の最下位には、掛け算の２桁目が１ワード分セットされたレジスタｗ１の最上位の「５」がシフトされて現れ、レジスタｗ３のデータは「０００００００５」となる。また、レジスタｗ１には桁上がりに係る７個分のデータが１桁ずつ左シフトされて記憶され、レジスタｗ１のデータは「６３４４５６００」となる。この結果、レジスタｗ３、ｗ１には、桁上がりの結果に応じた桁へのデータの配置転換、つまり、桁補正がなされる。
【０２１８】
次に、加算手段８５は、図１０３に示されるａｄｄｃ．ｐ命令を実行する。つまり、演算回路２０−１（２０−３）により、レジスタｗ１にセットされている桁補正された結果の下位１ワードのデータと、レジスタｗ２にセットされている掛け算結果の１桁目の１ワードのデータとが加算されて、結果がレジスタｗ２にセットされ、キャリーがレジスタｗ４の１桁目にセットされる。斯して、レジスタｗ２のデータは、図９７のデータの掛け算結果の内、下位１ワードのデータでとなり、レジスタｗ４のデータは順次送りの桁上がりの数値となる。
【０２１９】
次に、加算手段８５は、図１０４に示されるａｄｄｃ．ｐ命令を実行する。つまり、演算回路２０−１（２０−３）により、レジスタｗ３にセットされている桁補正された結果の上位１ワードのデータと、レジスタｗ４に記憶された順次送りの桁上がりの数値のデータとが加算されて、結果がレジスタｗ３にセットされる。レジスタｗ４にはこのときのキャリーである０がセットされる。以上により、レジスタｗ３とレジスタｗ２とのデータを並べた倍語のデータが、図９７の２つのデータの乗算結果となる。
【０２２０】
前述の図４１の構成のＲＩＳＣ計算機により、図９７〜図１０４に示される処理をＶＬＩＷ方式により並列実行させる場合の命令コード列を図１０５に示す。この例では、１つの演算回路（例えば、２０−１）が、ｓｈｘ命令、ｉｓｈｘ命令、ｓｌｌ．ｌ命令、ａｄｄｃ．ｐ命令を実行し、また、他の１つの演算回路（例えば、２０−３）がｍｕｌ．ｐ命令を実行し、８桁×１桁のパック１０進数演算結果を７ステップで得ることができる。従来例との対比では、従来が２桁×２桁の乗算に１３ステップ必要であったので、上記の本発明の処理が遥かに高速であることが判る。そして、キャリーの伝播手法は、本発明では８桁分のキャリーを一度に求めることができ、従来の１桁毎に計算して順次に加える手法より高速化を図ることができる。
【０２２１】
図１０６には、上記のパック１０進数データの乗算を行うＲＩＳＣ計算機が、３２桁までのパック１０進数データを被乗数とする場合の処理のフローチャートが示されている。この処理を説明すると、被乗数と乗数とをレジスタへロードし（Ｓ２４１）、書くフラグ類等の初期化を行う（Ｓ２４２）。次に、符号の決定及び除去を行い（Ｓ２４３）、被乗数と乗数との有効桁数を求める（Ｓ２４４）。以上の処理は、本発明と従来例とも変わらず、図９２においては、Ｂ１７１〜Ｓ２１２までに相当している。
【０２２２】
そして、実際の乗算に入り、乗数の下位桁から有効桁数までの各桁のパック１０進数データの繰り返であるか確認する（Ｓ２４５）。つまり、被乗数の最下位８桁（本実施の形態では１ワード）と上記乗数の下位桁のパック１０進数データを上述の図９７から図１０４までの処理により乗算して、被乗数が８桁以下のときには、ステップＳ２５０へ進み乗数の次の桁を準備し、ステップＳ２４５へ進んで有効桁数までの各桁のパック１０進数データを繰り返しを確認して、乗数の全ての桁について乗算を終了すると、乗算結果をメモリへストアする（Ｓ２５１）。また、被乗数が９桁以上１６桁以下の場合には、ステップＳ２４７へ進み、被乗数の次の８桁について上記と同様に乗算を行う。また、被乗数が１７桁以上２４桁以下の場合には、ステップＳ２４８へ進み、被乗数の次の８桁について上記と同様に乗算を行う。更に、被乗数が２５桁以上３２桁以下の場合には、ステップＳ２４９へ進み、被乗数の次の８桁について上記と同様に乗算を行う。そして、最終結果はメモリへストアする（Ｓ２５１）。このように、図９７〜図１０４に示した処理、つまり、乗数８桁と被乗数１桁の乗算を繰り返し、これらの結果を並べて最終結果を得ることにより、１桁（１バイト）毎に乗算を行っていた場合に比べて高速な乗算を実行することができる。
【０２２４】
【発明の効果】
以上説明したように本発明の請求項１に記載のＲＩＳＣ計算機によれば、複数ブロック中にセットされたビットがあるか否かに基づいて、所定ブロックが選択され、この選択結果から１ワードデータ中の最上位ビットから最下位ビット方向に検索した場合に、最初にセットされているビットが、最下位ビットから数えて何ビット目であるかが検出され、有効ビット長の検出等の高速化を図ることができる効果がある。
【０２２６】
以上説明したように本発明の請求項２に記載のＲＩＳＣ計算機によれば、ｆｓｂｉｔ命令を実行して、複数ワードからなるデータの有効ビット長データの計算を行うことができ、セットされているビット位置の検出を条件判定と分岐命令で行う必要がないので、高速な処理が可能である。
【０２２７】
以上説明したように本発明の請求項３に記載のＲＩＳＣ計算機によれば、演算回路を複数有し、各命令を並列実行するＶＬＩＷ方式を採用するので、位置検出が、ｆｓｂｉｔ命令によりなされ、条件判定と分岐命令とが使用されない上に、並列処理がなされ、高速化が図られる。
【０２２８】
以上説明したように、本発明の請求項４に記載のＲＩＳＣ計算機によれば、１ワードのデータを４ビットに分割して各４ビット毎の大小比較をする演算が１命令により実行されるので、４ビットのデータを大小比較を複数同時に実行可能であり、処理の高速化を図ることができる。
【０２２９】
以上説明したように、本発明の請求項５に記載のＲＩＳＣ計算機によれば、１ワードのデータを４ビットに分割して各４ビット毎に等しいか否か比較する演算が１命令により実行されるので、４ビットのデータの一致検出を複数同時に実行可能であり、処理の高速化を図ることができる。
【０２３０】
以上説明したように本発明の請求項６に記載のＲＩＳＣ計算機によれば、条件判定及び分岐命令を使用することなく、ｆｓｂｉｔ命令及びｃｍｐｌｔ．ｐ命令によりパック１０進数の有効桁数を得るので、パック１０進数の有効桁数を効率的に計算することができる。
【０２３１】
以上説明したように本発明の請求項７に記載のＲＩＳＣ計算機によれば、条件判定及び分岐命令を使用することなく、ｆｓｂｉｔ命令及びｃｍｐｌｔ．ｐ命令によりパック１０進数の有効桁数を得ると共に各命令を並列実行するＶＬＩＷ方式を採用しているので、並列性が向上し、高速化が図られる。
【０２３２】
以上説明したように本発明の請求項８に記載のＲＩＳＣ計算機によれば、ｃｍｐｌｔ．ｐ命令を１サイクルに複数命令実行するので、並列性の向上により処理サイクル数を減少させて高速処理を可能となる効果がある。
【０２３３】
以上説明したように、本発明の請求項９に記載のＲＩＳＣ計算機によれば、１ワードのデータを１バイトに分割して各１バイト毎の大小比較をする演算が１命令により実行され、１バイトのデータの大小比較を複数同時に実行可能であることから、処理な高速に行われる効果がある。
【０２３４】
以上説明したように、本発明の請求項１０に記載のＲＩＳＣ計算機によれば、１ワードのデータを１バイトに分割して各１バイト毎に等しいか否か比較する演算が１命令により実行され、１バイトのデータの一致検出を複数同時に実行可能であることから、処理な高速に行われる効果がある。
【０２３５】
以上説明したように本発明の請求項１１に記載のＲＩＳＣ計算機によれば、条件判定及び分岐命令を使用することなく、ｆｓｂｉｔ命令及びｃｍｐｌｔ．ｂ命令によりデータの有効バイト長を得るので、複数ワードのデータの有効バイト長を効率的に計算することができる。
【０２３６】
以上説明したように本発明の請求項１２に記載のＲＩＳＣ計算機によれば、条件判定及び分岐命令を使用することなく、ｆｓｂｉｔ命令及びｃｍｐｌｔ．ｂ命令を用いることによりデータの有効バイト長を得ることができ、ＶＬＩＷ方式により並列性が向上し、高速化が図られる効果がある。
【０２３７】
以上説明したように本発明の請求項１３に記載のＲＩＳＣ計算機によれば、ｃｍｐｌｔ．ｂ命令が１サイクルに複数命令実行され、並列性の向上により処理サイクル数が減少し高速処理がなされる効果がある。
【０２３８】
以上説明したように請求項１４に記載の本発明に係るＲＩＳＣ計算機によれば、条件判定及び分岐命令を使用することなく、ゾーン１０進数からなる複数ワードのデータのオーバーフローを効率的に計算することができる。
【０２３９】
以上説明したように請求項１５に記載の本発明に係るＲＩＳＣ計算機によれば、条件判定及び分岐命令を使用することなく、ｆｓｂｉｔ命令及びｃｍｐｅｑ．ｂ命令により演算結果において使用されているバイト長を得てオーバーフローを検出するようにしているので、並列性の向上、高速化を図ることができる。
【０２４０】
以上説明したように請求項１６に記載の本発明に係るＲＩＳＣ計算機によれば、ｃｍｐｅｑ．ｂ命令が１サイクルに複数命令実行されるので、並列性の向上により処理サイクル数を減少させて高速処理が可能となる効果がある。
【０２４１】
以上説明したように本発明の請求項１７に記載のＲＩＳＣ計算機によれば、一時に３つのソースオペランドを与えることができ、第３ソースオペランドの待ち合わせの必要がなく、また、一時に２つのディスティネーションオペランドのライトバックが可能であり、第２ディスティネーションオペランドのライトバック待ちが不要となる効果がある。
【０２４２】
以上説明したように本発明の請求項１８に記載のＲＩＳＣ計算機によれば、３オペランド型命令のみにより構成される命令列に対しても、また、５オペランド型命令を含む命令列に対しても、処理を行うことが可能である。
【０２４３】
以上説明したように本発明の請求項１９に記載のＲＩＳＣ計算機によれば、第０、第１命令フィールド、第２、第３命令フィールドに亘って、それぞれ２ワード長の５オペランド型のＲＩＳＣ命令を配置して実行させることができるようになる。
【０２４４】
以上説明したように本発明の請求項２０に記載のＲＩＳＣ計算機によれば、デコ−ダがスイッチ切り換えによりソースオペランド及びディスティネーションオペランドを選択するので、ＲＩＳＣ命令に拡張用コードがセットされている場合に対応して、５オペランド型命令を実行する形態となって処理が行われ、必要なときに５オペランド型命令が実行される。
【０２４５】
以上説明したように請求項２１に記載の本発明に係るＲＩＳＣ計算器によれば、２つの１ワードに存在する４ビット単位のデータを各ワードにまたがって交換して配置を制御して並べ換え、所望の２ワードに変換することが可能となる。
【０２４６】
以上説明したように請求項２２に記載の本発明に係るＲＩＳＣ計算器によれば、２つの１ワードに存在する４ビット単位のデータを４ビットの１ブロックおきに組み合わせて交換して配置を制御して並べ換え、所望の２ワードに変換することが可能となる。
【０２４７】
以上説明したように本発明の請求項２３に記載のＲＩＳＣ計算機によれば、ＲＩＳＣ計算機の１ワード単位に処理を行うようにしているので、パック１０進数の不正データの除去を効率良く行うことができる。
【０２４８】
以上説明したように本発明の請求項２４に記載のＲＩＳＣ計算機によれば、複数ワードのパック１０進数に対しては、そのワード数に対応した繰り返し処理によりパック１０進数の不正データの除去を行うことができ、４ビット単位にエラーチェックを行っていた従来に比べて高速化が図られる効果がある。
【０２４９】
以上説明したように本発明の請求項２５に記載のＲＩＳＣ計算機によれば、ｃｍｐｌｔ．ｐ命令が１サイクルに複数命令実行されるので、並列性の向上により処理サイクル数が減少して高速処理がなされることになる。
【０２５０】
以上説明したように本発明の請求項２６に記載のＲＩＳＣ計算機によれば、２つのジェネラルレジスタで指定された倍語データを、シフトさせて倍語で２つのディスティネーションオペランドに出力するので、１命令で倍語単位の左論理シフトを行うことができる。
【０２５１】
以上説明したように本発明の請求項２７に記載のＲＩＳＣ計算機によれば、２つのジェネラルレジスタで指定された倍語データを、シフトさせて倍語で２つのディスティネーションオペランドに出力するので、１命令で倍語単位の右論理シフトを行うことができる。
【０２５２】
以上説明したように本発明の請求項２８に記載のＲＩＳＣ計算機によれば、２つのジェネラルレジスタで指定された倍語データを、右に算術シフトして倍語で２つのディスティネーションオペランドに出力するので、１命令で倍語単位の右算術シフトを行うことができる。
【０２５３】
以上説明したように本発明の請求項２９に記載のＲＩＳＣ計算機によれば、メモリ内のパック１０進数データをレジスタに転送する場合に、メモリ内からワード単位に読み出してレジスタに適切にセットでき、処理の効率化を図ることができる。
【０２５４】
以上説明したように本発明の請求項３０に記載のＲＩＳＣ計算機によれば、１ワード単位の読み出しとシフト、更に１ワード単位の読み出しとシフトという繰り返しで、メモリ内のパック１０進数データをレジスタに適切に転送してセット可能であり、バイト単位で転送を行う従来に比べて高速、高効率で転送できる効果がある。
【０２５５】
以上説明したように本発明の請求項３１に記載のＲＩＳＣ計算機によれば、各命令が並列実行されるので、更に処理の高速化を図ることができるという効果がある。
【０２５６】
以上説明したように本発明の請求項３２に記載のＲＩＳＣ計算機によれば、２つのジェネラルレジスタで指定された固定小数点１ワードデータを、第３のジェネラルレジスタで指定されたキャリーと共に加算し、加算結果を第１のディスティネーションレジスタに格納し、加算結果のキャリーを第２のディスティネーションレジスタに格納するようにしたので、固定小数点１ワードデータのキャリー付加算を行うことができる。
【０２５７】
以上説明したように本発明の請求項３３に記載のＲＩＳＣ計算機によれば、第１のジェネラルレジスタで指定された固定小数点１ワードデータから第２のジェネラルレジスタで指定された固定小数点１ワードデータを減算すると共に、第３のジェネラルレジスタで指定されたキャリーの反転値を減算し、減算結果を第１のディスティネーションレジスタに格納し、減算結果のキャリーの反転値を第２のディスティネーションレジスタに格納するようにしたので、固定小数点１ワードデータのキャリー付減算を行うことができる。
【０２５８】
以上説明したように本発明の請求項３４に記載のＲＩＳＣ計算機によれば、２つのジェネラルレジスタで指定されたパック１０進数１ワードデータを、第３のジェネラルレジスタで指定されたキャリーと共に加算し、加算結果を第１のディスティネーションレジスタに格納し、加算結果のキャリーを第２のディスティネーションレジスタに格納するようにしたので、パック１０進数１ワードデータのキャリー付加算を行うことができる。
【０２５９】
以上説明したように本発明の請求項３５に記載のＲＩＳＣ計算機によれば、第１のジェネラルレジスタで指定されたパック１０進数１ワードデータから第２のジェネラルレジスタで指定されたパック１０進数１ワードデータを減算すると共に、第３のジェネラルレジスタで指定されたキャリーの反転値を減算し、減算結果が負数の場合には１０の補数として、減算結果を第１のディスティネーションレジスタに格納し、減算結果のキャリーの反転値を第２のディスティネーションレジスタに格納するので、パック１０進数１ワードデータのキャリー付減算を行うことができる。
【０２６０】
以上説明したように本発明の請求項３６に記載のＲＩＳＣ計算機によれば、複数ワードのパック１０進数データの加算が１ワード単位に実行され、複数ワードのパック１０進数データの加算が高速処理されるという効果がある。
【０２６１】
以上説明したように本発明の請求項３７に記載のＲＩＳＣ計算機によれば、複数ワードのパック１０進数データの減算が１ワード単位に実行され、複数ワードのパック１０進数データの減算が高速処理されるという効果がある。
【０２６２】
以上説明したように、本発明の請求項３８に記載のＲＩＳＣ計算機によれば、パック１０進数を１桁おきに並べて被乗数を構成し、これに１桁のパック１０進数データを掛けて、２桁単位のパック１０進数による乗算結果を得ることが可能であり、パック１０進数データの１桁×１桁の乗算を、複数同時に実行可能であり、係る乗算の高速化を図ることが可能である。
【０２６３】
以上説明したように、本発明の請求項３９に記載のＲＩＳＣ計算機によれば、桁上がり対応の処理を順次行うことなく、１ワードのパック１０進数からなる被乗数データと１桁のパック１０進数からなる乗数データとの乗算を行い、結果を得ることができ、処理の高速化を図ることができる。
【０２６４】
以上説明したように、本発明の請求項４０に記載のＲＩＳＣ計算機によれば、複数ワードのパック１０進数の被乗数と複数ワードのパック１０進数の乗数との乗算演算を請求項３９の手法を用いて行うことが可能であり、複数桁同志の乗算を高速処理することができる。
【図面の簡単な説明】
【図１】本発明の実施の形態に係るＲＩＳＣ計算機の要部ブロック図。
【図２】本発明の実施の形態に係るＲＩＳＣ計算機によるｆｓｂｉｔ命令の実行処理を説明するための図。
【図３】本発明の実施の形態に係るＲＩＳＣ計算機のｆｓｂｉｔ命令を実現するために、演算回路に搭載される要部構成図。
【図４】本発明の実施の形態に係るＲＩＳＣ計算機のｆｓｂｉｔ命令を実現するために、演算回路に搭載される要部構成の他の例を示す図。
【図５】有効ビット長の計算処理に用いられる４ワード長データの例を示す図。
【図６】従来のＲＩＳＣ計算機における４ワード長データの有効ビット長の計算処理を示すフローチャート。
【図７】図６のフローチャートに対応するニーモニック表記のプログラムを示す図。
【図８】有効ビット長の計算処理を行う本発明の実施の形態に係るＲＩＳＣ計算機のブロック図。
【図９】本発明の実施の形態に係るＲＩＳＣ計算機による有効ビット長の計算処理を示すフローチャート。
【図１０】図９のフローチャートに対応するニーモニック表記のプログラムを示す図。
【図１１】ＶＬＩＷ方式を採用した本発明の実施の形態に係るＲＩＳＣ計算機の要部構成図。
【図１２】図１０に示される命令コード列の処理を並列実行させる場合の、ニーモニック表記のプログラムを示す図。
【図１３】本発明の実施の形態に係るＲＩＳＣ計算機で実行されるｃｍｐｌｔ．ｐ命令の処理を説明するための図。
【図１４】本発明の実施の形態に係るＲＩＳＣ計算機で実行されるｃｍｐｅｑ．ｐ命令の処理を説明するための図。
【図１５】４ワードからなるパック１０進数の例を示す図。
【図１６】パック１０進数の有効桁数の計算を行う本実施の形態に係るＲＩＳＣ計算機のブロック図。
【図１７】従来のパック１０進数の有効桁数の計算処理を示すフローチャート。
【図１８】図１７のフローチャートに対応するニーモニック表記を示す図。
【図１９】本発明の実施の形態に係るＲＩＳＣ計算機によるパック１０進数の有効桁数の計算処理を示すフローチャート。
【図２０】図１９のフローチャートに対応するニーモニック表記を示す図。
【図２１】図２０に示す処理をＶＬＩＷ方式により並列処理する場合のニーモニック表記を示す図。
【図２２】図２０に示す処理をＶＬＩＷ方式により並列処理する場合のニーモニック表記の他の例を示す図。
【図２３】本発明の実施の形態に係るＲＩＳＣ計算機によるｃｍｐｌｔ．ｂ命令の実行処理を説明するための図。
【図２４】本発明の実施の形態に係るＲＩＳＣ計算機によるｃｍｐｅｑ．ｂ命令の実行処理を説明するための図。
【図２５】４ワードからなる有効バイト長計算用のデータ列の例と、本発明の実施の形態による処理過程とを示す図。
【図２６】有効バイト長計算を行う本実施の形態に係るＲＩＳＣ計算機のブロック図。
【図２７】従来の有効バイト長計算処理を示すフローチャート。
【図２８】図２７のフローチャートに対応するニーモニック表記を示す図。
【図２９】本発明の実施の形態に係るＲＩＳＣ計算機による有効バイト長の計算処理を示すフローチャート。
【図３０】図２９のフローチャートに対応するニーモニック表記を示す図。
【図３１】図３０に示す処理をＶＬＩＷ方式により並列処理する場合のニーモニック表記を示す図。
【図３２】図３０に示す処理をＶＬＩＷ方式により並列処理する場合のニーモニック表記の他の例を示す図。
【図３３】ゾーン１０進数の例を示す図。
【図３４】ゾーン１０進数データのオーバーフローを検出する本実施の形態に係るＲＩＳＣ計算機の構成図。
【図３５】ゾーン１０進数データのオーバーフローを検出する本実施の形態に係るＲＩＳＣ計算機の動作を説明するためのフローチャート。
【図３６】ゾーン１０進数データのオーバーフローを検出する本実施の形態に係るＲＩＳＣ計算機の動作を説明するための図。
【図３７】ゾーン１０進数データのオーバーフローを検出する本実施の形態に係るＲＩＳＣ計算機の動作を説明するための図。
【図３８】ゾーン１０進数データのオーバーフローを検出する本実施の形態に係るＶＬＩＷ方式を採用したＲＩＳＣ計算機の動作を説明するためのフローチャート。
【図３９】図３８に対応するコード列を示す図。
【図４０】図３８に対応する他の構成によるコード列を示す図。
【図４１】５オペランド型のＲＩＳＣ命令を実行可能な本発明の実施の形態に係るＲＩＳＣ計算機の構成図。
【図４２】５オペランド型のＲＩＳＣ命令を含む４命令からなる命令フィールドの図。
【図４３】３オペランド型命令のフォーマットを示す図。
【図４４】オペランド拡張命令のフォーマットを示す図。
【図４５】本発明の実施の形態に係るＲＩＳＣ計算機によるｓｈｘ命令の実行処理を説明するための図。
【図４６】本発明の実施の形態に係るＲＩＳＣ計算機によるｓｈｘ命令の対交換の実行処理を説明するための図。
【図４７】完全シャッフル及び逆完全シャッフル動作を説明するための図。
【図４８】本発明の実施の形態に係るＲＩＳＣ計算機のｓｈｘ命令を実現するために、演算回路に搭載される要部構成図。
【図４９】本発明の実施の形態に係るＲＩＳＣ計算機によるｉｓｈｘ命令の実行処理を説明するための図。
【図５０】本発明の実施の形態に係るＲＩＳＣ計算機によるｉｓｈｘ命令の対交換の実行処理を説明するための図。
【図５１】パック１０進数データの不正データを除去する本実施の形態に係るＲＩＳＣ計算機の構成図。
【図５２】パック１０進数データの不正データを除去する本実施の形態に係るＲＩＳＣ計算機の動作を説明するためのフローチャート。
【図５３】パック１０進数データの不正データを除去する本実施の形態に係るＲＩＳＣ計算機の不正パック１０進数検出手段による比較動作を説明するための図。
【図５４】パック１０進数データの不正データを除去する本実施の形態に係るＲＩＳＣ計算機のデータ混合手段によるシャッフル動作を説明するための図。
【図５５】パック１０進数データの不正データを除去する本実施の形態に係るＲＩＳＣ計算機の不正データ抽出手段による逆シャッフル動作を説明するための図。
【図５６】図５２のフローチャートに対応するコード列を示す図。
【図５７】図５６のコード列を並列実行させた場合の命令コード列を示す図。
【図５８】本発明の実施の形態に係るＲＩＳＣ計算機によるｓｌｌ．ｌ命令の実行処理を説明するための図。
【図５９】本発明の実施の形態に係るＲＩＳＣ計算機によるｓｒｌ．ｌ命令の実行処理を説明するための図。
【図６０】本発明の実施の形態に係るＲＩＳＣ計算機によるｓｒａ．ｌ命令の実行処理を説明するための図。
【図６１】メモリからレジスタへの転送を行う本発明の実施の形態に係るＲＩＳＣ計算機の構成図。
【図６２】本発明の実施の形態に係るＲＩＳＣ計算機によりメモリからレジスタへの転送を行う場合の処理の命令コード列を示す図。
【図６３】本発明の実施の形態に係るＲＩＳＣ計算機によりメモリからレジスタへの転送を行う場合の処理のフローチャート。
【図６４】本発明の実施の形態に係るＲＩＳＣ計算機によりメモリからレジスタへの転送を行う場合の処理のフローチャート。
【図６５】本発明の実施の形態に係るＲＩＳＣ計算機によりメモリからレジスタへの転送を行う場合の処理のフローチャート。
【図６６】本発明の実施の形態に係るＲＩＳＣ計算機によりメモリからレジスタへの転送を行う場合の処理のフローチャート。
【図６７】本発明の実施の形態に係るＲＩＳＣ計算機によりメモリからレジスタへの転送を行う場合の処理のフローチャート。
【図６８】本発明の実施の形態に係るＲＩＳＣ計算機によりメモリからレジスタへの転送を行う場合の処理のフローチャート。
【図６９】図６２のコード列を並列実行する場合のコード列を示す図。
【図７０】本発明の実施の形態に係るＲＩＳＣ計算機によるａｄｄｃ命令の実行処理を説明するための図。
【図７１】本発明の実施の形態に係るＲＩＳＣ計算機によるｓｕｂｃ命令の実行処理を説明するための図。
【図７２】本発明の実施の形態に係るＲＩＳＣ計算機によるａｄｄｃ．ｐ命令の実行処理を説明するための図。
【図７３】本発明の実施の形態に係るＲＩＳＣ計算機によるｓｕｂｃ．ｐ命令の実行処理を説明するための図。
【図７４】本発明の実施の形態に係るＲＩＳＣ計算機のａｄｄｃ命令を実現するために、演算回路に搭載される要部構成図。
【図７５】本発明の実施の形態に係るＲＩＳＣ計算機のａｄｄｃ．ｐ命令を実現するために、演算回路に搭載される要部構成図。
【図７６】従来のＲＩＳＣ計算機による加算及び減算の処理を説明するためのフローチャート。
【図７７】従来のＲＩＳＣ計算機による加算及び減算の処理を説明するためのフローチャート。
【図７８】従来のＲＩＳＣ計算機による加算及び減算の処理を説明するためのフローチャート。
【図７９】図７６〜図７８の従来のＲＩＳＣ計算機による加算及び減算の処理をＣ言語により表記した図。
【図８０】図７６〜図７８の従来のＲＩＳＣ計算機による加算及び減算の処理をＣ言語により表記した図。
【図８１】図７６〜図７８の従来のＲＩＳＣ計算機による加算及び減算の処理をＣ言語により表記した図。
【図８２】複数ワードからなるパック１０進数データの加減算を行う本発明の実施の形態に係るＲＩＳＣ計算機の構成図。
【図８３】本発明の実施の形態に係るＲＩＳＣ計算機により加減算される複数ワードからなるパック１０進数データの例を示す図。
【図８４】本発明の実施の形態に係るＲＩＳＣ計算機による複数ワードからなるパック１０進数データの加減算処理を説明するためのフローチャート。
【図８５】本発明の実施の形態に係るＲＩＳＣ計算機により複数ワードからなるパック１０進数データの加減算を行う場合の処理の命令コード列を示す図。
【図８６】図８５のコード列を並列実行する場合のコード列を示す図。
【図８７】従来例のＲＩＳＣ計算機によるパック１０進数データの乗算処理を示すフローチャート。
【図８８】従来例のＲＩＳＣ計算機によるパック１０進数データの乗算処理を示すフローチャート。
【図８９】従来例のＲＩＳＣ計算機によるパック１０進数データの乗算処理を示すフローチャート。
【図９０】従来例のＲＩＳＣ計算機によるパック１０進数データの乗算処理を示すフローチャート。
【図９１】従来例のＲＩＳＣ計算機によるパック１０進数データの乗算処理を示すフローチャート。
【図９２】従来例のＲＩＳＣ計算機によるパック１０進数データの乗算処理を示すＣ言語による表記を示す図。
【図９３】従来例のＲＩＳＣ計算機によるパック１０進数データの乗算処理を示すＣ言語による表記を示す図。
【図９４】ｍｕｌ．ｐ命令の処理を説明するための図。
【図９５】ｍｕｌ．ｐ命令を実行するために本発明の実施の形態に係るＲＩＳＣ計算機に搭載される乗算手段の構成図。
【図９６】パック１０進数データの乗算を行う本発明の実施の形態に係るＲＩＳＣ計算機の構成図。
【図９７】本発明の実施の形態に係るＲＩＳＣ計算機によるパック１０進数データの乗算処理を説明するための図。
【図９８】本発明の実施の形態に係るＲＩＳＣ計算機によるパック１０進数データの乗算処理を説明するための図。
【図９９】本発明の実施の形態に係るＲＩＳＣ計算機によるパック１０進数データの乗算処理を説明するための図。
【図１００】本発明の実施の形態に係るＲＩＳＣ計算機によるパック１０進数データの乗算処理を説明するための図。
【図１０１】本発明の実施の形態に係るＲＩＳＣ計算機によるパック１０進数データの乗算処理を説明するための図。
【図１０２】本発明の実施の形態に係るＲＩＳＣ計算機によるパック１０進数データの乗算処理を説明するための図。
【図１０３】本発明の実施の形態に係るＲＩＳＣ計算機によるパック１０進数データの乗算処理を説明するための図。
【図１０４】本発明の実施の形態に係るＲＩＳＣ計算機によるパック１０進数データの乗算処理を説明するための図。
【図１０５】本発明の実施の形態に係るＲＩＳＣ計算機により、乗算処理をＶＬＩＷ方式により並列実行させる場合の命令コード列の図。
【図１０６】本発明の実施の形態に係るＲＩＳＣ計算機により、複数桁同志のパック１０進数データの乗算処理を説明するためのフローチャート。
【符号の説明】
１、２２  レジスタファイル          ２、２−１〜２−４  演算回路
３、２３  入力ポート                ４、２４  出力ポート
５  主メモリ                        ６  プログラムカウンタ
７、２１、２１Ａ  デコ−ダ          ２０−１、２０−３  演算回路
３１  最上位有効ワード検出手段      ３２  ワード位置検出手段
３３  ビット位置検出手段            ３４  有効ビット長取得手段
４１  ワード単位処理手段            ４２  ２次処理手段
４３  最先ビット値検出手段          ４４  有効桁取得手段
４５  ワード単位処理手段            ４６  ２次処理手段
４７  最先セットビット値検出手段    ４８  有効バイト長取得手段
５０  ワード単位処理手段            ５１  ２次処理手段
５２  最先ビットセット値検出手段    ５３  オーバーフロー検出手段
５７  不正パック１０進数検出手段    ５８  データ混合手段
５９  不正データ抽出手段            ６１  ワード境界・境界差検出手段
６２  ワード単位読出手段            ６３  シフト手段
６５  一致不一致検出手段            ６６  加算手段
６７  減算手段                      ８１  前処理手段
８２  乗算手段                      ８３  桁分離手段
８４  桁補正手段                    ８５  加算手段
【図１】
0003735438.tif 000002
【図２】
0003735438.tif 000003
【図３】
0003735438.tif 000004
【図４】
0003735438.tif 000005
【図５】
0003735438.tif 000006
【図６】
0003735438.tif 000007
【図７】
0003735438.tif 000008
【図８】
0003735438.tif 000009
【図９】
0003735438.tif 000010
【図１０】
0003735438.tif 000011
【図１１】
0003735438.tif 000012
【図１２】
0003735438.tif 000013
【図１３】
0003735438.tif 000014
【図１４】
0003735438.tif 000015
【図１５】
0003735438.tif 000016
【図１６】
0003735438.tif 000017
【図１７】
0003735438.tif 000018
【図１８】
0003735438.tif 000019
【図１９】
0003735438.tif 000020
【図２０】
0003735438.tif 000021
【図２１】
0003735438.tif 000022
【図２２】
0003735438.tif 000023
【図２３】
0003735438.tif 000024
【図２４】
0003735438.tif 000025
【図２５】
0003735438.tif 000026
【図２６】
0003735438.tif 000027
【図２７】
0003735438.tif 000028
【図２８】
0003735438.tif 000029
【図２９】
0003735438.tif 000030
【図３０】
0003735438.tif 000031
【図３１】
0003735438.tif 000032
【図３２】
0003735438.tif 000033
【図３３】
0003735438.tif 000034
【図３４】
0003735438.tif 000035
【図３５】
0003735438.tif 000036
【図３６】
0003735438.tif 000037
【図３７】
0003735438.tif 000038
【図３８】
0003735438.tif 000039
【図３９】
0003735438.tif 000040
【図４０】
0003735438.tif 000041
【図４１】
0003735438.tif 000042
【図４２】
0003735438.tif 000043
【図４３】
0003735438.tif 000044
【図４４】
0003735438.tif 000045
【図４５】
0003735438.tif 000046
【図４６】
0003735438.tif 000047
【図４７】
0003735438.tif 000048
【図４８】
0003735438.tif 000049
【図４９】
0003735438.tif 000050
【図５０】
0003735438.tif 000051
【図５１】
0003735438.tif 000052
【図５２】
0003735438.tif 000053
【図５３】
0003735438.tif 000054
【図５４】
0003735438.tif 000055
【図５５】
0003735438.tif 000056
【図５６】
0003735438.tif 000057
【図５７】
0003735438.tif 000058
【図５８】
0003735438.tif 000059
【図５９】
0003735438.tif 000060
【図６０】
0003735438.tif 000061
【図６１】
0003735438.tif 000062
【図６２】
0003735438.tif 000063
【図６３】
0003735438.tif 000064
【図６４】
0003735438.tif 000065
【図６５】
0003735438.tif 000066
【図６６】
0003735438.tif 000067
【図６７】
0003735438.tif 000068
【図６８】
0003735438.tif 000069
【図６９】
0003735438.tif 000070
【図７０】
0003735438.tif 000071
【図７１】
0003735438.tif 000072
【図７２】
0003735438.tif 000073
【図７３】
0003735438.tif 000074
【図７４】
0003735438.tif 000075
【図７５】
0003735438.tif 000076
【図７６】
0003735438.tif 000077
【図７７】
0003735438.tif 000078
【図７８】
0003735438.tif 000079
【図７９】
0003735438.tif 000080
【図８０】
0003735438.tif 000081
【図８１】
0003735438.tif 000082
【図８２】
0003735438.tif 000083
【図８３】
0003735438.tif 000084
【図８４】
0003735438.tif 000085
【図８５】
0003735438.tif 000086
【図８６】
0003735438.tif 000087
【図８７】
0003735438.tif 000088
【図８８】
0003735438.tif 000089
【図８９】
0003735438.tif 000090
【図９０】
0003735438.tif 000091
【図９１】
0003735438.tif 000092
【図９２】
0003735438.tif 000093
【図９３】
0003735438.tif 000094
【図９４】
0003735438.tif 000095
【図９５】
0003735438.tif 000096
【図９６】
0003735438.tif 000097
【図９７】
0003735438.tif 000098
【図９８】
0003735438.tif 000099
【図９９】
0003735438.tif 000100
【図１００】
0003735438.tif 000101
【図１０１】
0003735438.tif 000102
【図１０２】
0003735438.tif 000103
【図１０３】
0003735438.tif 000104
【図１０４】
0003735438.tif 000105
【図１０５】
0003735438.tif 000106
【図１０６】
0003735438.tif 000107