JPH10240528A - Risc計算機 - Google Patents

Risc計算機

Info

Publication number
JPH10240528A
JPH10240528A JP9037540A JP3754097A JPH10240528A JP H10240528 A JPH10240528 A JP H10240528A JP 9037540 A JP9037540 A JP 9037540A JP 3754097 A JP3754097 A JP 3754097A JP H10240528 A JPH10240528 A JP H10240528A
Authority
JP
Japan
Prior art keywords
data
word
operand
instruction
register
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP9037540A
Other languages
English (en)
Other versions
JP3735438B2 (ja
Inventor
Ikuo Uchibori
郁夫 内堀
Yoichiro Takeuchi
陽一郎 竹内
Shinichiro Suzuki
慎一郎 鈴木
Akitomo Yamada
晃智 山田
Ryuji Sakai
隆二 境
Makoto Watanabe
誠 渡邊
Tei Ishikawa
禎 石川
Kotaro Endo
浩太郎 遠藤
Nobuyuki Morimoto
展行 森本
Sumie Fukuda
純恵 福田
Kenichi Mizoguchi
研一 溝口
Kazuyuki Satou
量志 佐藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP03754097A priority Critical patent/JP3735438B2/ja
Publication of JPH10240528A publication Critical patent/JPH10240528A/ja
Application granted granted Critical
Publication of JP3735438B2 publication Critical patent/JP3735438B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

(57)【要約】 【課題】 5オペランド型命令を実行可能とする。 【解決手段】 命令に対する演算を実行する演算回路2
0−1、2−2、20−3、2−4を有し、各命令を並
列実行するVLIW方式を採用したRISC計算機にお
いて、前記複数の演算回路20−1、2−2、20−
3、2−4の演算回路20−1、20−3が、第3ソー
スオペランドを取り込む経路55−1、55−3と、第
2ディスティネーションオペランド出力用の経路56−
1、56−3とを備え、3つのソースオペランドに対し
て演算を行い、その結果を2つのディスティネーション
オペランドへ出力する5オペランド型命令を実行する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、各種処理を1命令
により実行可能であり、並列化に好適なRISC計算機
に関するものである。
【0002】
【従来の技術】RISC計算機は、命令セットを単純な
ものにして、実行の高速化を図った計算機である。RI
SC計算機においては、ほとんどの命令が、1マシンサ
イクルで実行終了するように、レジスタ間の単純な演算
を指示するもので構成されている。また、メモリのアク
セスをロード命令とストア命令のみで行うことにより、
CISCに比べてパイプラインの単純化が図られてい
る。
【0003】更に、RISC計算機としてはVLIW(V
ery Long Instruction Word)方式を採用し、命令レベル
の並列性を利用して高速処理が可能に構成されたものが
知られている。このVLIW方式は、長命令形式と呼ば
れる「長い命令語」の中に、通常のRISC命令を複数
個配置して命令レベルの並列実行を可能としてある。
【0004】
【発明が解決しようとする課題】しかしながら、従来の
RISC計算機においては、命令やレジスタの多くが、
32bit長、64bit長であるのに対し、ビット列
やバイト列やパック10進数などのデータは、夫々、1
bit、8bit、4bitが単位であるから、これら
のデータを扱う処理においては、32bit長や64b
it長のレジスタを効率的に利用することができない場
合があった。
【0005】また、VLIW方式を採用したものにあっ
ては、並列命令実行の妨げとなる要因として、分岐に
よる制御依存関係、機能ユニット数による制限、命
令間のデータ依存関係、が挙げられる。VLIW方式を
採用した従来のRISC計算機は、係る要因によって並
列度が向上せず、十分な性能が得られないという問題点
があった。
【0006】本発明は上記従来のRISC計算機の問題
点を解決せんとしてなされたもので、その目的は、レジ
スタ長より短い長さのデータ処理にあっても、当該レジ
スタをより効率的に利用することのできるRISC計算
機を提供することである。更に、レジスタ長にあったデ
ータを処理することで、ビット列やバイト列やパック1
0進数などを、同時に複数並列実行して処理の高速化を
図ることができるRISC計算機を提供することを目的
とする。また、他の目的は、VLIW方式を採用した場
合に、命令の並列度を上げ、VLIWの性能を最大限に
引き出し、高速処理が可能となるRISC計算機を提供
することである。
【0007】
【課題を解決するための手段】本発明の請求項1に記載
のRISC計算機は、1ワードデータ中の最上位ビット
から最下位ビット方向に検索した場合に、最初にセット
されているビットが、最下位ビットから数えて何ビット
目であるかを検出する手段を備える演算回路を具備する
ことを特徴とする。これによって、1ワードデータ中の
最上位ビットから最下位ビット方向に検索した場合に、
最初にセットされているビットが、最下位ビットから数
えて何ビット目であるかを検出でき、有効ビット長の検
出等に適用可能である。
【0008】本発明の請求項2に記載のRISC計算機
では、算出手段が、1ワードデータを同一ビット数から
なる複数のブロックに分けた場合の各ブロック夫々にセ
ットされたビットがあるか否かの検出を行う検出手段
と、この検出手段による検出結果に基づき、前記複数の
ブロック中の1ブロックの所定ビットのデータを選択す
る選択手段と、この選択手段により選択された結果に基
づき、1ワードデータ中の、最上位側から最初にセット
されているビットが、最下位ビットから数えて何ビット
目であるかの数値を作成する数値作成手段と、を具備す
ることを特徴とする。これにより、複数ブロック中にセ
ットされたビットがあるか否かに基づいて、所定ブロッ
クが選択され、この選択結果から1ワードデータ中の最
上位ビットから最下位ビット方向に検索した場合に、最
初にセットされているビットが、最下位ビットから数え
て何ビット目であるかが検出されることになる。
【0009】本発明の請求項3に記載のRISC計算機
では、算出手段が、1ワードデータを4ビットからなる
複数のブロックに分けた場合の各ブロック夫々にセット
されたビットがあるか否かの検出を行う第1の検出手段
と、上記各ブロックの上位3ビットの夫々がセットされ
ているか否かの関係を検出する第2検出手段と、上記第
1、第2の検出手段との検出結果に基づき、1ワードデ
ータ中の、最上位側から最初にセットされているビット
が、最下位ビットから数えて何ビット目であるかの数値
を作成する数値作成手段と、を具備することを特徴とす
る。これにより、複数ブロック中にセットされたビット
があるか否かの検出結果および、各ブロックの上位3ビ
ットの夫々がセットされているか否かの関係の検出結果
により、1ワードデータ中の最上位ビットから最下位ビ
ット方向に検索した場合に、最初にセットされているビ
ットが、最下位ビットから数えて何ビット目であるかが
検出されることになる。
【0010】本発明の請求項4に記載のRISC計算機
は、複数ワードのデータについて、ワード単位に当該ワ
ード内が全て0であるか否かに基づき、複数ワードの内
のセットされたビットが存在する最上位有効ワードを検
出する最上位有効ワード検出手段と、この最上位有効ワ
ード検出手段により検出された結果に対して請求項1乃
至3のいずれかに記載の演算回路を用いて、最初にセッ
トされているビットが、最下位ビットから数えて何ビッ
ト目であるかを算出し、更に、この結果を用いて当該ワ
ードの位置を示す数値を得るワード位置検出手段と、前
記有効最上位ワード検出手段により検出された最上位有
効ワードに係る1ワードデータに対して請求項1乃至3
のいずれかに記載の演算回路を用いて、1ワードデータ
中の最上位ビットから最下位ビット方向に検索した場合
に、最初にセットされているビットが、最下位ビットか
ら数えて何ビット目であるかを示す数値を得るビット位
置検出手段と、このビット位置検出手段及びワード位置
検出手段の検出結果に基づき、複数ワードからなるデー
タの有効ビット長データを得る有効ビット長取得手段と
を備えることを特徴とする。これにより、複数ワードか
らなるデータの有効ビット長データの計算を行うことが
できる。
【0011】本発明の請求項5に記載のRISC計算機
は、演算回路を複数有し、各命令を並列実行するVLI
W方式を採用することを特徴とする。これにより、位置
検出が、fsbit命令によりなされ、条件判定と分岐
命令とが使用されないので、並列性が向上し、高速化が
図られる。
【0012】本発明の請求項6に記載のRISC計算機
は、第1オペランドの1ワードのデータと第2オペラン
ドの1ワードのデータを4ビット単位に比較して、第2
オペランドの4ビットデータが第1オペランドの4ビッ
トデータより大きいか否か検出し、各4ビット単位の比
較結果をディスティネーションオペランドの下位側に格
納する比較手段を備える演算回路を具備することを特徴
とする。これにより、1ワードのデータを4ビットに分
割して各4ビット毎の大小比較をする演算が1命令によ
り実行される。つまり、4ビットのデータを大小比較を
複数同時に実行可能である。
【0013】本発明の請求項7に記載のRISC計算機
は、第1オペランドの1ワードのデータと第2オペラン
ドの1ワードのデータを4ビット単位に比較して、第2
オペランドの4ビットデータが第1オペランドの4ビッ
トデータと等しいか否か検出し、各4ビット単位の比較
結果をディスティネーションオペランドの下位側に格納
する比較手段を備える演算回路を具備することを特徴と
する。これにより、1ワードのデータを4ビットに分割
して各4ビット毎に等しいか否か比較する演算が1命令
により実行される。つまり、4ビットのデータの一致検
出を複数同時に実行可能である。
【0014】本発明の請求項8に記載のRISC計算機
は、複数ワードのパック10進数データについて、請求
項6に記載の、第1オペランドの1ワードのデータと第
2オペランドの1ワードのデータを4ビット単位に比較
して、第2オペランドの4ビットデータが第1オペラン
ドの4ビットデータより大きいか否か検出し、各4ビッ
ト単位の比較結果をディスティネーションオペランドの
下位側に格納するcmplt.p命令を実行する演算回
路を用いてワード単位に処理を行うワード単位処理手段
と、このワード単位処理手段による処理結果を前記複数
ワードのワードデータ順に並べる処理を行う2次処理処
理手段と、この2次処理手段による処理結果について、
請求項1乃至3のいずれかに記載の演算回路を用いて、
1ワードデータ中の最上位ビットから最下位ビット方向
に検索した場合に、最初にセットされているビットが、
最下位ビットから数えて何ビット目であるかを示す数値
を得る最先セットビット値検出手段と、この最先セット
ビット値検出手段の検出結果に基づきパック10進数の
有効桁数を得る有効桁数取得手段とを具備することを特
徴としている。これによって、パック10進数の有効桁
数を効率的に計算することができる。
【0015】本発明の請求項9に記載のRISC計算機
は、演算回路を複数有し、各命令を並列実行するVLI
W方式を採用すると共に、cmplt.p命令を1サイ
クルに1命令実行することを特徴とする。これによっ
て、条件判定及び分岐命令を使用することなく、fsb
it命令及びcmplt.p命令によりパック10進数
の有効桁数を得ることができ、並列性が向上し、高速化
が図られる。
【0016】本発明の請求項10に記載のRISC計算
機は、演算回路を複数有し、各命令を並列実行するVL
IW方式を採用すると共に、cmplt.p命令を1サ
イクルに複数命令実行することを特徴とする。これによ
り、cmplt.p命令が1サイクルに複数命令実行さ
れ、並列性の向上により処理サイクル数を減少させて高
速処理を可能とする。
【0017】本発明の請求項11に記載のRISC計算
機は、第1オペランドの1ワードのデータと第2オペラ
ンドの1ワードのデータを1バイト単位に比較して、第
2オペランドの1バイトデータが第1オペランドの1バ
イトデータより大きいか否か検出し、各1バイト単位の
比較結果をディスティネーションオペランドの下位側に
格納する比較手段を備える演算回路を具備することを特
徴とする。これにより、1ワードのデータを1バイトに
分割して各1バイト毎の大小比較をする演算が1命令に
より実行される。つまり、1バイトのデータの大小比較
を複数同時に実行可能である。
【0018】本発明の請求項12に記載のRISC計算
機は、第1オペランドの1ワードのデータと第2オペラ
ンドの1ワードのデータを1バイト単位に比較して、第
2オペランドの1バイトデータが第1オペランドの1バ
イトデータと等しいか否か検出し、各1バイト単位の比
較結果をディスティネーションオペランドの下位側に格
納する比較手段を備える演算回路を具備することを特徴
とする。これにより、1ワードのデータを1バイトに分
割して各1バイト毎に等しいか否か比較する演算が1命
令により実行される。つまり、1バイトのデータの一致
検出を複数同時に実行可能である。
【0019】本発明の請求項13に記載のRISC計算
機は、複数ワードのデータについて、請求項11に記載
の、第1オペランドの1ワードのデータと第2オペラン
ドの1ワードのデータを1バイト単位に比較して、第2
オペランドの1バイトデータが第1オペランドの1バイ
トデータより大きいか否か検出し、各1バイト単位の比
較結果をディスティネーションオペランドの下位側に格
納するcmplt.b命令を実行する演算回路を用いて
ワード単位に処理を行うワード単位処理手段と、このワ
ード単位処理手段による処理結果を前記複数ワードのワ
ードデータ順に並べる処理を行う2次処理処理手段と、
この2次処理手段による処理結果について、請求項1乃
至3のいずれかに記載の演算回路を用いて、1ワードデ
ータ中の最上位ビットから最下位ビット方向に検索した
場合に、最初にセットされているビットが、最下位ビッ
トから数えて何ビット目であるかを示す数値を得る最先
セットビット値検出手段と、この最先セットビット値検
出手段の検出結果に基づき有効バイト長を得る有効バイ
ト長取得手段とを具備することを特徴としている。これ
によって、複数ワードのデータの有効バイト長を効率的
に計算することができる。
【0020】本発明の請求項14に記載のRISC計算
機は、演算回路を複数有し、各命令を並列実行するVL
IW方式を採用すると共に、cmplt.b命令を1サ
イクルに1命令実行することを特徴とする。これによっ
て、条件判定及び分岐命令を使用することなく、fsb
it命令及びcmplt.b命令によりデータの有効バ
イト長を得ることができ、並列性が向上し、高速化が図
られる。
【0021】本発明の請求項15に記載のRISC計算
機は、演算回路を複数有し、各命令を並列実行するVL
IW方式を採用すると共に、cmplt.b命令を1サ
イクルに複数命令実行することを特徴とする。これによ
り、cmplt.b命令が1サイクルに複数命令実行さ
れ、並列性の向上により処理サイクル数を減少させて高
速処理を可能とする。
【0022】本発明の請求項16に記載のRISC計算
機は、ゾーン10進数の複数ワードからなる演算結果デ
ータについて、請求項12に記載の、第1オペランドの
1ワードのデータと第2オペランドの1ワードのデータ
を1バイト単位に比較して、第2オペランドの1バイト
データが第1オペランドの1バイトデータと等しいか否
か検出し、各1バイト単位の比較結果をディスティネー
ションオペランドの下位側に格納するcmpeq.b命
令を実行する演算回路を用いてワード単位に処理を行う
ワード単位処理手段と、このワード単位処理手段による
処理結果を前記複数ワードのワードデータ順に並べ、こ
の並べたデータに対して使用されているバイトと使用さ
れていないバイトとを識別する処理を行う2次処理処理
手段と、この2次処理手段による処理結果について、請
求項1乃至3のいずれかに記載の演算回路を用いて、1
ワードデータ中の最上位ビットから最下位ビット方向に
検索した場合に、最初にセットされているビットが、最
下位ビットから数えて何ビット目であるかを示す数値を
得る最先セットビット値検出手段と、この最先セットビ
ット値検出手段の検出結果と与えられる正規のバイト数
に基づきゾーン10進数のデータがオーバーフローか否
か検出するオーバーフロー検出手段と、を具備すること
を特徴とする。これによって、ゾーン10進数からなる
複数ワードのデータのオーバーフローを効率的に計算す
ることができる。
【0023】本発明の請求項17に記載のRISC計算
機は、演算回路を複数有し、各命令を並列実行するVL
IW方式を採用すると共に、cmpeq.b命令を1サ
イクルに1命令実行することを特徴とする。これによっ
て、条件判定及び分岐命令を使用することなく、fsb
it命令及びcmpeq.b命令により演算結果におい
て使用されているバイト長を得てオーバーフローを検出
することができ、並列性が向上し、高速化が図られる。
【0024】本発明の請求項18に記載のRISC計算
機は、演算回路を複数有し、各命令を並列実行するVL
IW方式を採用すると共に、cmpeq.b命令を1サ
イクルに複数命令実行することを特徴とする。これによ
り、cmpeq.b命令が1サイクルに複数命令実行さ
れ、並列性の向上により処理サイクル数を減少させて高
速処理を可能とする。
【0025】本発明の請求項19に記載のRISC計算
機は、命令に対する演算を実行する演算回路を複数有
し、各命令を並列実行するVLIW方式を採用したRI
SC計算機であって、前記複数の演算回路の所要の演算
回路が、第3ソースオペランドを取り込む経路と、第2
ディスティネーションオペランド出力用の経路とを備
え、3つのソースオペランドに対して演算を行い、その
結果を2つのディスティネーションオペランドへ出力す
る5オペランド型命令を実行する演算回路であることを
特徴とする。これによって、一時に3つのソースオペラ
ンドを与えることができ、第3ソースオペランドの待ち
合わせの必要がなく、また、一時に2つのディスティネ
ーションオペランドのライトバックが可能であり、第2
ディスティネーションオペランドのライトバック待ちが
不要となる。
【0026】本発明の請求項20に記載のRISC計算
機は、5オペランド型命令を実行する演算回路の第3ソ
ースオペランドを取り込む経路へソースオペランドを供
給するか、3オペランド型命令を実行する演算回路の第
1ソースオペランド取り込む経路へソースオペランドを
供給するか切り換えるソースオペランド切換スイッチ
と、前記5オペランド型命令を実行する演算回路の第2
ディスティネーションオペランド出力用の経路からのデ
ィスティネーションオペランドか、前記3オペランド型
命令を実行する演算回路の第1ディスティネーションオ
ペランド出力用の経路からのディスティネーションオペ
ランドかを選択するためのディスティネーションオペラ
ンド選択スイッチと、上記2つのスイッチを命令に基づ
き切り換えるデコ−ダとを具備することを特徴とする。
これにより、3オペランド型命令のみにより構成される
命令列に対しても、また、5オペランド型命令を含む命
令列に対しても、処理を行うことが可能である。
【0027】本発明の請求項21に記載のRISC計算
機は、4つの演算回路が備えられており、第1、第3の
演算回路が、5オペランド型命令を実行する演算回路で
構成され、第2、第4の演算回路が、3オペランド型命
令を実行する演算回路で構成されていることを特徴とす
る。これによって、第0、第1命令フィールド、第2、
第3命令フィールドに亘って、それぞれ2ワード長の5
オペランド型のRISC命令を配置して実行させること
ができる。
【0028】本発明の請求項22に記載のRISC計算
機は、RISC命令に拡張用コードがセットされている
場合に、デコ−ダは、5オペランド型命令を実行する演
算回路へ第3ソースオペランドを供給し、出力される第
2ディスティネーションオペランドを選択するように、
ソースオペランド切換スイッチとディスティネーション
オペランド選択スイッチとの切換制御を行うことを特徴
とする。これによって、RISC命令に拡張用コードが
セットされている場合に対応して、5オペランド型命令
を実行する形態となって処理が行われる。
【0029】本発明の請求項23に記載のRISC計算
機は、第1オペランドの1ワード長のデータと第2オペ
ランドの1ワード長のデータとを夫々4ビット幅のブロ
ックに区分し、第1オペランド各ブロックと第2オペラ
ンドの各ブロックとを先頭から順に組み合わせるシャッ
フル手段と、このシャッフル手段により組み合わされた
ブロック対における2ブロックの前後配置関係を、第3
オペランドの1ワード長のデータに基づき制御する対交
換手段と、を具備する演算回路を備えることを特徴とす
る。これによって、2つの1ワードに存在する4ビット
単位のデータを各ワードにまたがって交換して配置を制
御して並べ換え、所望の2ワードに変換することが可能
となる。
【0030】本発明の請求項24に記載のRISC計算
機は、第1オペランドの1ワード長のデータと第2オペ
ランドの1ワード長のデータとを夫々4ビット幅のブロ
ックに区分し、第1オペランドと第2オペランドのブロ
ックを一列に並べた状態で1ブロックおきに組み合わ
せ、奇数ブロックの組み合わせの並びの後に偶数ブロッ
クの組み合わせの並びを配置する逆シャッフル手段と、
この逆シャッフル手段により組み合わされたブロック対
における2ブロックの前後配置関係を、第3オペランド
の1ワード長のデータに基づき制御する対交換手段と、
を具備する演算回路を備えることを特徴とする。これに
よって、2つの1ワードに存在する4ビット単位のデー
タを4ビットの1ブロックおきに組み合わせて交換して
配置を制御して並べ換え、所望の2ワードに変換するこ
とが可能となる。
【0031】本発明の請求項25に記載のRISC計算
機は、複数ワードのパック10進数データについて、請
求項6に記載の、1ワードのデータを4ビット単位に不
正閾値データと比較して、各4ビット単位の比較結果を
ディスティネーションオペランドの下位側に格納するc
mplt.p命令を実行する演算回路を用いてワード単
位に処理を行う不正パック10進数検出手段と、前記複
数ワードのパック10進数データと0とを第1オペラン
ド及び第2オペランドとし、前記不正パック10進数検
出手段の結果を第3オペランドとして、請求項23に記
載のshx命令を実行する演算回路を用いてshx命令
による結果を得るデータ混合手段と、このデータ混合手
段による混合結果を第1オペランド及び第2オペランド
とし、0を第3オペランドとして、請求項24に記載の
ishx命令を実行する演算回路を用いて不正データを
抽出する不正データ抽出手段と、を具備しパック10進
数の不正データを除去することを特徴とする。これによ
って、パック10進数の不正データの除去を効率良く行
うことができる。
【0032】本発明の請求項26に記載のRISC計算
機は、1ワード単位に、不正パック10進数検出手段、
データ混合手段、不正データ抽出手段を用いて処理を行
い、複数ワード分の処理を繰り返すことを特徴とする。
これによって、複数ワードのパック10進数に対して
は、そのワード数に対応した繰り返し処理によりパック
10進数の不正データの除去を行うことができる。
【0033】本発明の請求項27に記載のRISC計算
機は、演算回路を複数有し、各命令を並列に実行するV
LIW方式を採用すると共に、cmplt.p命令を1
サイクルに複数命令実行することを特徴とする。これに
よって、cmplt.p命令が1サイクルに複数命令実
行され、並列性の向上により処理サイクル数を減少させ
て高速処理を可能とする。
【0034】本発明の請求項28に記載のRISC計算
機は、2つのジェネラルレジスタで指定された倍語デー
タを、ジェネラルレジスタまたは即値で指定された数だ
け左に論理シフトし、この結果空いた下位ビットに0を
挿入する倍語・左論理シフト手段を備える演算回路を具
備することを特徴とする。これにより、1命令で倍語単
位の左論理シフトを行うことができる。
【0035】本発明の請求項29に記載のRISC計算
機は、2つのジェネラルレジスタで指定された倍語デー
タを、ジェネラルレジスタまたは即値で指定された数だ
け右に論理シフトし、この結果空いた下位ビットに0を
挿入する倍語・右論理シフト手段を備える演算回路を具
備することを特徴とする。これにより、1命令で倍語単
位の右論理シフトを行うことができる。
【0036】本発明の請求項30に記載のRISC計算
機は、2つのジェネラルレジスタで指定された倍語デー
タを、ジェネラルレジスタまたは即値で指定された数だ
け右に算術シフトし、この結果空いた下位ビットに符号
ビットを挿入する倍語・右算術シフト手段を備える演算
回路を具備することを特徴とする。これにより、1命令
で倍語単位の右算術シフトを行うことができる。
【0037】本発明の請求項31に記載のRISC計算
機は、メモリに記憶されているパック10進数データを
レジスタへ転送するRISC計算機であって、上記パッ
ク10進数データが記憶されているメモリ上の最上位と
最下位のワード境界を検出すると共に、ワード境界と当
該パック10進数データの終端との差を検出するワード
境界・境界差検出手段と、このワード境界・境界差検出
手段により検出されたワード境界を単位として、前記パ
ック10進数が記憶されている範囲のワードをレジスタ
に読み出すワード単位読出手段と、上記レジスタに読み
出されたデータを、上記ワード境界・境界差検出手段に
より検出された差のデータに応じて、請求項28に記載
の倍語・左論理シフト手段を備え、sll.l命令を実
行する演算回路によりシフトするシフト手段とを具備す
ることを特徴とする。これによって、メモリ内のパック
10進数データをレジスタに転送する場合に、メモリ内
からワード単位に読み出してレジスタに適切にセットで
き、処理の効率化を図ることができる。
【0038】本発明の請求項32に記載のRISC計算
機は、ワード単位読出手段による読み出しの後に、シフ
ト手段によるシフトを行う動作を繰り返して、所要のパ
ック10進数をレジスタに転送することを特徴とする。
これにより、読み出しとシフト、更に読み出しとシフト
という繰り返しで、メモリ内のパック10進数データを
レジスタに適切に転送してセット可能である。
【0039】本発明の請求項33に記載のRISC計算
機は、演算回路を複数有し、各命令を並列実行するVL
IW方式を採用すると共に、ワード単位読出手段による
読み出しと、sll.l命令を1サイクルにて並列実行
することを特徴とする。これによって、各命令が並列実
行され、処理の高速化を図ることができる。
【0040】本発明の請求項34に記載のRISC計算
機は、2つのジェネラルレジスタで指定された固定小数
点1ワードデータを、第3のジェネラルレジスタで指定
されたキャリーと共に加算し、加算結果を第1のディス
ティネーションレジスタに格納し、加算結果のキャリー
を第2のディスティネーションレジスタに格納する加算
手段を備える演算回路を具備することを特徴とする。こ
れにより、固定小数点1ワードデータのキャリー付加算
を行うことができる。
【0041】本発明の請求項35に記載のRISC計算
機は、第1のジェネラルレジスタで指定された固定小数
点1ワードデータから第2のジェネラルレジスタで指定
された固定小数点1ワードデータを減算すると共に、第
3のジェネラルレジスタで指定されたキャリーの反転値
を減算し、減算結果を第1のディスティネーションレジ
スタに格納し、減算結果のキャリーの反転値を第2のデ
ィスティネーションレジスタに格納する減算手段を備え
る演算回路を具備することを特徴とする。これにより、
固定小数点1ワードデータのキャリー付減算を行うこと
ができる。
【0042】本発明の請求項36に記載のRISC計算
機は、2つのジェネラルレジスタで指定されたパック1
0進数1ワードデータを、第3のジェネラルレジスタで
指定されたキャリーと共に加算し、加算結果を第1のデ
ィスティネーションレジスタに格納し、加算結果のキャ
リーを第2のディスティネーションレジスタに格納する
加算手段を備える演算回路を具備することを特徴とす
る。これにより、パック10進数1ワードデータのキャ
リー付加算を行うことができる。
【0043】本発明の請求項37に記載のRISC計算
機は、第1のジェネラルレジスタで指定されたパック1
0進数1ワードデータから第2のジェネラルレジスタで
指定されたパック10進数1ワードデータを減算すると
共に、第3のジェネラルレジスタで指定されたキャリー
の反転値を減算し、減算結果が負数の場合には10の補
数として、減算結果を第1のディスティネーションレジ
スタに格納し、減算結果のキャリーの反転値を第2のデ
ィスティネーションレジスタに格納する減算手段を備え
る演算回路を具備することを特徴とする。これにより、
パック10進数1ワードデータのキャリー付減算を行う
ことができる。
【0044】本発明の請求項38に記載のRISC計算
機は、複数ワードのパック10進数からなる第1のデー
タと複数ワードのパック10進数からなる第2のデータ
のそれぞれの符号の一致不一致を検出する一致不一致手
段と、前記符号が一致していることが検出された場合
に、addc.p命令を実行する請求項36に記載の演
算回路を用いて前記第1のデータと第2のデータとをワ
ード単位に加算する加算手段と、前記符号が不一致であ
ることが検出された場合に、subc.p命令を実行す
る請求項37に記載の演算回路を用いて前記第1のデー
タと第2のデータとをワード単位に減算する減算手段と
を具備し、加減算の各段階で生じたキャリーを次段階に
て用いて複数ワードのパック10進数の加算を行うこと
を特徴とする。これによって、複数ワードのパック10
進数データの加算が1ワード単位に実行されることか
ら、複数ワードのパック10進数データの加算が高速処
理されることになる。
【0045】本発明の請求項39に記載のRISC計算
機は、複数ワードのパック10進数からなる第1のデー
タと複数ワードのパック10進数からなる第2のデータ
のそれぞれの符号の一致不一致を検出する一致不一致手
段と、前記符号が不一致であることが検出された場合
に、addc.p命令を実行する請求項36に記載の演
算回路を用いて前記第1のデータと第2のデータとをワ
ード単位に加算する加算手段と、前記符号が一致してい
ることが検出された場合に、subc.p命令を実行す
る請求項37に記載の演算回路を用いて前記第1のデー
タと第2のデータとをワード単位に減算する減算手段と
を具備し、加減算の各段階で生じたキャリーを次段階に
て用いて複数ワードのパック10進数の減算を行うこと
を特徴とする。これによって、複数ワードのパック10
進数データの減算が1ワード単位に実行されることか
ら、複数ワードのパック10進数データの減算が高速処
理されることになる。
【0046】本発明の請求項40に記載のRISC計算
機は、第1の1ワードデータの最下位4ビットから4ビ
ット間隔をおいて、パック10進数を取り出し、この複
数のパック10進数データと第2の1ワードデータの最
下位4ビットのパック10進数データとを掛け合わせ
て、2桁のパック10進数データを上記第1の1ワード
データに存在するパック10進数データと同個数得て、
ディスティネーションオペランドに出力する乗算手段を
備える演算回路を具備することを特徴とする。これによ
って、パック10進数を1桁おきに並べて被乗数を構成
し、これに1桁のパック10進数データを掛けて、2桁
単位のパック10進数による乗算結果を得ることが可能
である。
【0047】本発明の請求項41に記載のRISC計算
機は、1ワードのパック10進数からなる被乗数データ
と、パック10進数の0が1ワード集合されてなるデー
タとをshx命令を実行する請求項23に記載の演算回
路を用いて完全シャッフル処理する前処理手段と、この
前処理手段により完全シャッフル処理された結果の2桁
毎に対し、mul.p命令を実行する請求項40に記載
の演算回路を用いて乗数を構成する1桁のパック10進
数データを掛け合わせて2桁単位の結果を得る乗算手段
と、上記乗算手段により得られた結果に対しishx命
令を実行する請求項24に記載の演算回路を用いて逆完
全シャッフル処理して上位桁と下位桁に分離する桁分離
手段と、上記桁分離手段により分離された上位桁の結果
に対しsll.l命令を実行する請求項28に記載の演
算回路を用いて4ビットの左シフトを生じさせて、桁上
がりによる桁位置との一致を図る桁位置補正手段と、こ
の桁位置補正手段により補正された結果と、上記桁分離
手段により分離された下位桁の結果とをaddc.p命
令を実行する請求項36に記載の演算回路を用いて加算
すると共に、加算の結果生じたキャリーを前記桁位置補
正手段により上位ワードへシフトされた数値に加算し
て、パック10進数データの乗算結果を得る加算手段
と、を具備することを特徴とする。これによって、1ワ
ードのパック10進数からなる被乗数データと1桁のパ
ック10進数からなる乗数データとの乗算が行われ、結
果を得ることができる。
【0048】本発明の請求項42に記載のRISC計算
機は、複数ワードのパック10進数の被乗数と複数ワー
ドのパック10進数の乗数との乗算を行う場合には、乗
数の各桁のデータ毎に、被乗数の各ワードに対して、請
求項41に記載の各手段による演算を繰り返して結果を
得て、更に、乗数の桁数を進めて同様の演算を繰り返し
て行い、それぞれの結果に必要なシフトを生じさせて最
終結果とすることを特徴とする。これによって、複数ワ
ードのパック10進数の被乗数と複数ワードのパック1
0進数の乗数との乗算演算を行うことが可能である。
【0049】
【発明の実施の形態】以下添付図面を参照して、本発明
の実施例に係るRISC計算機を説明する。各図におい
て同一の構成要素には、同一の符号を付して重複する説
明を省略する。図1に本発明の実施の形態に係るRIS
C計算機の要部ブロック図が示されている。RISC計
算機は、オペランドデータがセットされるレジスタ及び
ディスティネーションレジスタが複数設けられているレ
ジスタファイル1と、このレジスタファイル1の所要の
レジスタのデータを用いてアンド(and)、オア(o
r)、イクスクルーシブオア(xor)、ノット(no
t)等の論理演算、更に、加算、減算等の従来からの算
術演算と、シフト、ローテートなどの処理を行う演算回
路2とを有し、演算回路2とレジスタファイル1との間
には、入力ポート3、出力ポート4とが設けられてい
る。
【0050】主メモリ5には、命令およびデータが記憶
されており、プログラムカウンタ(PC)6の指示アド
レスの命令が読み出され、デコ−ダ7に与えられる。デ
コ−ダ7は、命令をデコードし、結果を演算回路2へ与
えて所要の論理演算、算術演算やデータ処理を行わせ
る。主メモリ5内のデータは演算回路2を介してレジス
タファイル1へロードされ、逆に、レジスタファイル1
内のデータが主メモリ5へストアされる。プログラムカ
ウンタ6は、通常はインクリメンタ8により歩進され、
ジャンプ命令等の場合に、ジャンプ先アドレス等が演算
回路2から、または、加算器からセットされる。
【0051】本実施の形態の演算回路2は、1ワードデ
ータ中の最上位ビットから最下位ビット方向に検索した
場合に、最初にセットされているビットが、最下位ビッ
トから数えて何ビット目であるかを検出する手段を備え
る。別言すると、1ワードデータ中の最上位ビットから
最下位ビット方向に検索した場合に、最初にセットされ
ているビットが、最下位ビットから数えて何ビット目で
あるかを検出し、結果をディスティネーションオペラン
ドへ書き込む命令(以下、fsbit命令)を備える。
【0052】fsbit命令は、図2の101に示され
るように、括弧内に処理対象のデータが格納されている
ジェネラルレジスタ(%rs1)と、結果を書き込むデ
ィスティネーションレジスタ(%rd1)とを指定して
記述される。この101の表記の右には、ジェネラルレ
ジスタ(rs1)にfsbit命令の処理を施した結果
を、ディスティネーションレジスタ(rd1)に書き込
むことを示す表記102が対応付けられている。実際の
例を図2により説明すると、ジェネラルレジスタ(rs
1)に、図2に記載の通り32ビットのデータが格納さ
れているときには、先頭から4番目の「1」を検出し
て、このビットをLSBから数えてビット番号「28」
を得て、この28(=1c)をディスティネーションレ
ジスタ(rd1)に書き込む。また、検索の結果、セッ
トされているビットが見つからなかった場合(つまり、
指定データが全ビット「0」の場合)には、ディスティ
ネーションレジスタ(rd1)に「#fffffff
f」を書き込む。
【0053】図3には、上記fsbit命令を実現する
ため、図1の演算回路2に搭載される構成が示されてい
る。同図に示されるように、1ワード32ビットのデー
タを8ビット単位にブロック分けして、各ブロック夫々
にセットされたビットがあるか否かの検出をオアゲート
10−1〜10−4からなる検出手段11にて行う。そ
して、上記オアゲート10−1〜10−4の出力を4入
力オアゲート12へ導き、更にその反転信号をインバー
タ13により得て、ディスティネーションレジスタ(r
d1)に書き込むデータ中の上位27ビットのデータを
作成する。つまり、オアゲート10−1〜10−4の出
力の全てが「0」であれば、上記27ビットにはオール
「1」が書き込まれ、その他の場合には、オール「0」
が書き込まれる。また、8ビット単位にブロック分けし
た上位2ブロックに関するオアゲート10−1、10−
2の出力の論理和をオアゲート14により得てマルチプ
レクサ15へ選択信号s0として与える。また、8ビッ
ト単位にブロック分けした上位3ブロックに関し、その
ブロック内にセットされているビットがあるか否かに応
じた信号を、インバータとアンドゲート及びオアゲート
からなる論理回路16により得て、マルチプレクサ15
へ選択信号s1として与える。マルチプレクサ15に
は、上記各ブロックの夫々の上位7ビットが入力され、
上記の選択信号s0、s1によりいずれかの7ビットが
選択されて出力される。
【0054】上記選択信号s0、s1は、上記ブロック
を左から第3、2、1、0パートとし、これらのパート
を左からサーチしたとき、どのパートの論理和に初めて
否(「0」)が現れるのかを示す。つまり、(s0,s
1)が(1,1)のときは第3パート、(1,0)のと
きは第2パート、(0,1)のときは第1パートの論理
和に初めて否(「0」)が現れることを示す。なお、第
0パートの論理和に初めて否(「0」)が現れるとき及
び、全てのパートの論理和が「0」であるときに、(s
0,s1)=(0,0)となるが、インバータ13の出
力信号により区別可能である。上記選択信号s0、s1
により、どのパートの論理和に初めて否(「0」)が現
れるのかが示され、これに対応するブロックの上位7ビ
ットのデータがマルチプレクサ15において選択され
る。
【0055】上記で選択された7ビットのデータは、オ
アゲート、アンドゲート及びインバータにより構成され
る論理回路17に導かれて、最初に「1」が現れるのが
8ビット中のいずれの位置であるかを示す3ビットの数
値とされる。そして、この3ビットの数値と、選択信号
s0,s1は、イクスクルーシブオアゲート18−1〜
18−5に導かれて、インバータ13の出力との排他的
論理和が作成されて、オール「0」のときに対応した結
果がえられるようにされる。そして、選択信号s0,s
1は、第5ビット目及び第4ビット目を構成し、最初に
「1」が現れるのが4つのパート中のいずれの位置であ
るかを示す数値とされる。
【0056】図4には、上記fsbit命令を実現する
ため、図1の演算回路2に搭載される他の構成例が示さ
れている。同図に示されるように、1ワード32ビット
のデータを4ビット単位にブロック分けして、各ブロッ
ク夫々にセットされたビットがあるか否かの検出を複数
のオアゲートからなる第1の検出手段にて行う。そし
て、各ブロックの論理和演算結果を順次オアゲートによ
り加えて、最終的にその反転信号をインバータ13によ
り得て、ディスティネーションレジスタ(rd1)に書
き込むデータ中の上位27ビットのデータを作成する。
図3における論理回路16と同一の構成の回路によっ
て、各ブロックの上位3ビットの夫々がセットされてい
るか否かの関係を検出する第2の検出手段を構成する。
そして、上記検出結果に基づき、オアゲートとアンドゲ
ート及びインバータを用いて1ワードデータ中の、最上
位側から最初にセットされているビットが、最下位ビッ
トから数えて何ビット目であるかの数値を作成する数値
作成手段を構成する。イクスクルーシブオアゲート18
−1〜18−5は、インバータ13の出力との排他的論
理和を作成して、オール「0」のときに対応した結果が
得られるようにされている。
【0057】以上の通り、本実施の形態によって、1ワ
ードデータ中の最上位ビットから最下位ビット方向に検
索した場合に、最初にセットされているビットが、最下
位ビットから数えて何ビット目であるかの数値が、1命
令によって得られる。
【0058】上記の演算回路2を備えたRISC計算機
は、複数ワードからなるデータの有効ビット長を計算す
るRISC計算機として機能する。従来のRISC計算
機においては、例えば、図5に示すように、4ワード
(1ワード=32ビット)からなるデータの有効ビット
長を計算する場合には、図6に示すフローチャートのプ
ログラムにより処理を行っていた。つまり、レジスタr
0に、4ワード長を示す128をセットし、レジスタr
1に最上位ワードの読み出しアドレスEAをセットする
(S1)。次に、レジスタr0の値(ここでは、12
8)が0より大であるか否かを検出し(S2)、ここで
は、T(真)へ分岐する。次に、レジスタr1のアドレ
スにより指示された1ワードの内容をレジスタr2へセ
ットし(S3)、このレジスタr2の内容である最初の
1ワードが、オール0であるか否かを検出する(S
4)。この例では、最初の1ワードはオール0であるか
ら、T(真)へ分岐する。次に、レジスタr0の内容で
ある128から1ワードに対応する32を引いた数96
をレジスタr0へセットするとともに、レジスタr1の
内容であるEAに4を加えて、第2番目の1ワードを指
定するアドレスとしてレジスタr1へセットする(S
5)。
【0059】これにより、ステップS2〜S4へと進む
と、第2番目の1ワードが図5に示されるように、オー
ル0ではないので、F(偽)へ分岐し、レジスタr3へ
16をセットし(S6)、このレジスタr3の内容が1
以上であるか否かを検出する(S7)。ここでは、T
(真)へ分岐して、レジスタr2の内容をレジスタr3
の内容である16右シフトしてレジスタr4にセットす
る(S8)。この結果、第2番目の1ワード中の上位1
6ビットが下位16ビットに残され、上位16ビットに
0が埋められたデータがレジスタr4にセットされる。
次に、このr4のデータがオール0であるか否か検出さ
れる(S9)。この例では、図5から明らかなようにオ
ール0ではなく、F(偽)へ分岐し、レジスタr4のデ
ータをレジスタr2へセットして(S10)、上記レジ
スタr3の内容である16を1右シフト(つまり、1/
2)することにより、8へ変換する(S12)。
【0060】更に、ステップS6からS12の処理を3
回繰り返すと、レジスタr3の内容は1となると共に、
レジスタr4の内容はオール0となる。この結果、ステ
ップS9においてT(真)へ分岐し、レジスタr0の内
容である96からレジスタr3の内容である1を引いて
95を得てレジスタr0にセットする(S11)。そし
て、次のステップS12におけるレジスタ3の内容の1
右シフトにより、レジスタr3の内容は0となり、再び
戻るステップS7においてF(偽)へ分岐して、エンド
となる。即ち、レジスタr0にセットされている95が
有効ビット長ということになる。
【0061】図7には、上記図6のフローチャートに対
応するニーモニック表記の命令コード列が示されてい
る。この様な従来のRISC計算機による処理では、1
ワード内がオール0か否かの処理においては、1ワード
単位で行われているものの、図6、図7の破線枠内に示
される処理では、16ビット、8ビット、4ビット、2
ビット、1ビットと処理単位を小さくして検出を行う繰
り返し処理が必要であり、最終的な検出までの処理回数
が多くなるという問題点がある。更に、図6、図7の破
線枠内に示される処理は、制御依存関係が強く、16ビ
ット、8ビット、4ビット、2ビット、1ビットと処理
単位が小さくなるにも拘らず、並列実行できない問題が
ある。
【0062】本実施の形態に係るfsbit命令を実行
するRISC計算機により上記問題点が解決される。つ
まり、図8に示されるように、最上位有効ワード検出手
段31、ワード位置検出手段32、ビット位置検出手段
33、有効ビット長取得手段34を具備する。上記最上
位有効ワード検出手段31は、複数ワードのデータにつ
いて、ワード単位に当該ワード内が全て0であるか否か
に基づき、複数ワードの内のセットされたビットが存在
する最上位有効ワードを検出する。ワード位置検出手段
32は、上記最上位有効ワード検出手段31により検出
された結果に対して図1に記載のfsbit命令を実行
可能な演算回路2を用いて、最初にセットされているビ
ットが、最下位ビットから数えて何ビット目であるかを
算出し、更に、この結果を用いて当該ワードの位置を示
す数値を得る。更に、ビット位置検出手段33は、上記
有効最上位ワード検出手段31により検出された最上位
有効ワードに係る1ワードデータに対して図1に記載の
fsbit命令を実行可能な演算回路2を用いて、1ワ
ードデータ中の最上位ビットから最下位ビット方向に検
索した場合に、最初にセットされているビットが、最下
位ビットから数えて何ビット目であるかを示す数値を得
る。そして、有効ビット長取得手段34は、上記ビット
位置検出手段33及びワード位置検出手段32の検出結
果に基づき、複数ワードからなるデータの有効ビット長
データを得る。
【0063】具体的には、図3または図4に記載の構成
を有する演算回路2を備える本発明のRISC計算機
は、図9に示されるフローチャートの処理を行う。ここ
で処理される複数ワードのデータは図5に示されたデー
タである。まず、レジスタr1に最上位ワードの読み出
しアドレスEAに3ワードのバイト数(12バイト)に
対応する12を加えて最下位の1ワードの読み出しアド
レスとしてセットし、どのワードまでオール0となって
いないかを検出した回数を置数するためのレジスタr2
に1をセットし、初めてセットされたデータが現れた位
置を置数するためのレジスタr0を初期化して0をセッ
トする(S21)。次に、レジスタr1のアドレスによ
り指示された1ワードの内容をレジスタr3へセットし
(S22)、このレジスタr3の内容である最下位の1
ワードが、オール0でないか否かを検出する(S2
3)。この図5の例では、オール0ではないので、T
(真)へ分岐してレジスタr0の内容である0とレジス
タr2の内容である1との論理和(オア)を作成して、
その結果である1をレジスタr0へセットすると共に、
レジスタr3の内容である最下位の1ワードの内容をレ
ジスタr4へセットする(S24)。更に、レジスタr
2の内容である1を1左シフトして2倍の2とし、これ
をレジスタr2へセットすると共に、レジスタr1の内
容である(EA+12)から1ワードのバイト数に相当
する4を引いて(EA+8)として、これをレジスタr
1へセットする(S25)。そしてレジスタr2の内容
が8以下であることを検出する(S26)。ここでは、
2であるからT(真)へ分岐し、ステップS22へ戻っ
て、アドレス(EA+8)により読み出される最下位か
ら2番目の1ワードについて上記と同様の処理を行う。
このようなループ処理を3回繰り返すと、レジスタr0
の内容は最下位ワードから3つ目を示す111となり、
レジスタr4の内容は最上位から2番目の1ワードとな
り、3回の繰り返しによりレジスタr2の値は1000
(=8)となる。このため、次のループ処理でにおける
ステップS23では、最上位の1ワードがオール0であ
るか否かが判別され、図5から明らかなようにオール0
であるためにF(偽)へ分岐し、ステップ25の処理の
結果、レジスタr2の内容は10000(=16)とな
り、次のステップS26においてF(偽)へ分岐する。
ここまでの処理において、レジスタr0には、何ワード
までにデータがセットされているかを示すデータ(ここ
では、r0=111)がセットされ、レジスタr4には
最上位側から最初にセットされているデータが存在する
1ワードが(ここでは、第2番目の1ワード)がセット
されている。
【0064】次に、レジスタr0が0であるか否かを判
別する(S27)。この図5の例では、レジスタr0の
内容は111となっているためにF(偽)へ分岐し、ス
テップS28において、fsbit命令を用いて、レジ
スタr0内の111について処理を行い、結果である
「2」をレジスタr0へセットし、これを5左シフトし
32倍して64を得てレジスタr0へセットする(S2
9)。つまり、第2バイトまでセットされたデータがあ
ることに対応して、1ワードが32ビットであるから、
これの2倍の64ビットまでセットされたデータがある
というデータが得られ、レジスタr0に「64」がセッ
トされている。次に、fsbit命令を用いて、レジス
タr4にセットされている図5のデータにおける最上位
から2番目の1ワードについて処理を行い、30を得て
レジスタr1へセットする(S30)。つまり、最先の
セットされた1ワード内では、ビット番号30に、最初
にセットされたデータ(つまり、1)が現れることが示
される。そして、次にレジスタr0の内容の64とレジ
スタr1の内容の30と1とを加えて95を得て、これ
をレジスタr0にセットして有効ビット長とする(S3
1)。ここで、1を加えるのは、ステップS30におい
て、fsbit命令を用いるため、ビット位置と検出結
果のビットの番号とに1のずれが生じるためである。
【0065】図10に、上記図9のフローチャートに対
応するニーモニック表記の命令コード列が示されてい
る。このように、本実施の形態においては、1ワード内
における処理及び有効ビットの数値を作成する処理に
て、ループによる繰り返し処理ではなく、fsbit命
令を用いて処理が可能であり、その分処理の簡素化と高
速化が図られる。
【0066】本発明の次の実施の形態に係るRISC計
算機は、VLIW方式を採用しており、その要部は図1
1に示されるようである。つまり、図1の演算回路2と
等しい構成を有する演算回路2−1〜2−4が並列処理
を行う。デコ−ダ21は、各演算回路2−1〜2−4に
命令のデコード結果を与えて夫々に所定の演算を行わせ
る。演算処理すべきオペランドデータはレジスタ22か
ら入力ポート23を介して各演算回路2−1〜2−4に
取り出され、演算処理結果は各演算回路2−1〜2−4
から出力ポート24を介してレジスタファイル22へ戻
される。
【0067】この様な構成のRISC計算機により、図
10に示される命令コード列の処理を並列実行させる場
合には、図12に示される命令コード列の処理を行わせ
ることになる。この図12の命令コード列においては
(以降の説明でもそうであるが)、セミコロン「;」の
前に記載されている0〜3の記号は、それぞれ演算回路
2−1〜2−4において実行される命令であることを示
し、0〜3の記号が抜けている場合には該当する演算回
路(2−1〜2−4の1つ)がその前の命令の実行のた
めに用いられていることを示す。また、括弧[ ]内の
tは真への分岐先を、fは偽の分岐先を示し、mov命
令の前に付された[0t]〜[3t]は、tstne命
令等のテスト命令が真となるときのそれぞれ@0〜@3
に対応する処理であることを示し、add命令の前に付
された[0f]はtstbz命令等のテスト命令が偽と
なるときに対応する処理であることを示す。この表記
は、以下の実施の形態においても同様な意味に用いてい
る。
【0068】この様に、本発明の実施例に係るRISC
計算機によれば、演算回路2−1〜2−4がfsbit
命令を実行可能であり、セットされているビット位置の
検出を条件判定と分岐命令で行う必要がないので、有効
ビット長計算機として動作させたときに、並列性の向上
を図ることができ、高速な処理が可能である。
【0069】従来のRISC計算機は、前述の通り、レ
ジスタ長は64ビットや32ビットであり、これらをビ
ット単位に操作する命令として、and、or、xo
r、notなどの論理演算やシフト、ローテートなどを
用いて処理を行っている。そして、これらの命令を用い
れば、4ビット単位の処理を32ビット長や64ビット
長のワード単位での処理として同時複数実行できる。し
かし、比較処理に関しては、比較の後に分岐命令が配置
されているのが通例である等の理由で、4ビットのデー
タを複数同時に大小比較、または、一致検出することは
困難であった。
【0070】本実施の形態に係るRISC計算機は、図
1の構成を有する。そして演算回路2は、第1オペラン
ドの1ワードのデータと第2オペランドの1ワードのデ
ータを4ビット単位に比較して、第2オペランドの4ビ
ットデータが第1オペランドの4ビットデータより大き
いか否か検出し、各4ビット単位の比較結果をディステ
ィネーションオペランドの下位側に格納する比較手段を
備える。また、演算回路2は、1ワードのデータを4ビ
ット単位に比較して、第2オペランドの4ビットデータ
が第1オペランドの4ビットデータと等しいか否か検出
し、各4ビット単位の比較結果をディスティネーション
オペランドの下位側に格納する比較手段を備える。
【0071】別言すると、第1オペランドの1ワードの
データと第2オペランドの1ワードのデータを4ビット
単位に比較して、第2オペランドの4ビットデータが第
1オペランドの4ビットデータより大きいか否か検出
し、各4ビット単位の比較結果をディスティネーション
オペランドの下位側に格納する命令(以下、cmpl
t.p命令)を備える。また、第1オペランドの1ワー
ドのデータと第2オペランドの1ワードのデータを4ビ
ット単位に比較して、第2オペランドの4ビットデータ
が第1オペランドの4ビットデータと等しいか否か検出
し、各4ビット単位の比較結果をディスティネーション
オペランドの下位側に格納する命令(以下、cmpe
q.p命令)を備える。
【0072】cmplt.p命令は、図13の103に
示されるように、括弧内に処理対象のデータが格納され
ている2つのジェネラルレジスタ(%rs1)、(%r
s2)と、結果を書き込むディスティネーションレジス
タ(%rd1)とを指定して記述される。この103の
表記の右には、ジェネラルレジスタ(%rs2)のデー
タがジェネラルレジスタ(%rs1)のデータより大で
あることを条件に、ディスティネーションレジスタ(%
rd1)に1を書き込むことを示す表記104が対応付
けられている。また、図13における105の表記は、
ディスティネーションレジスタ(%rd1)のビット位
置と、比較結果及び比較対象のビット位置との関係を示
すものである。例えば、表記105の第1行目は、ジェ
ネラルレジスタ(%rs2)の位置28から31までの
4ビットのデータがジェネラルレジスタ(%rs1)の
位置28から31までの4ビットのデータより大である
ことを条件に、ディスティネーションレジスタ(%rd
1)の位置31に1を書き込むことを示す。この条件が
成り立たないときには、ディスティネーションレジスタ
(%rd1)には、0がセットされる。
【0073】また、cmpeq.p命令は、図14の1
06に示されるように、括弧内に処理対象のデータが格
納されている2つのジェネラルレジスタ(%rs1)、
(%rs2)と、結果を書き込むディスティネーション
レジスタ(%rd1)とを指定して記述される。この1
06の表記の右には、ジェネラルレジスタ(%rs1)
のデータとジェネラルレジスタ(%rs2)のデータと
が等しいことを条件に、ディスティネーションレジスタ
(%rd1)に1を書き込むことを示す表記107が対
応付けられている。また、図14における108の表記
は、ディスティネーションレジスタ(%rd1)のビッ
ト位置と、比較結果及び比較対象のビット位置との関係
を示すものである。例えば、表記108の第1行目は、
ジェネラルレジスタ(%rs1)の位置28から31ま
での4ビットのデータがジェネラルレジスタ(%rs
2)の位置28から31までの4ビットのデータと等し
いことを条件に、ディスティネーションレジスタ(%r
d1)の位置31に1を書き込むことを示す。この条件
が成り立たないときには、ディスティネーションレジス
タ(%rd1)には、0がセットされる。
【0074】なお、上記cmplt.p命令、cmpe
q.p命令を実現するために、4ビット比較器を8個備
えさせて、演算回路2を構成する。4ビット比較器の内
部構成は、例えば、SN7485等の論理回路に準じた
構成とする。以上の通りの本発明の実施の形態によっ
て、1ワードのデータを4ビットに分割して各4ビット
毎に等しいか否か比較する演算、または、1ワードのデ
ータを4ビットに分割して各4ビット毎の大小比較をす
る演算が1命令により実行される。
【0075】上記演算回路2を備えたRISC計算機
は、複数ワードのパック10進数データについて有効桁
数を計算するRISC計算機として機能する。従来のR
ISC計算機においては、例えば、図15に示されるよ
うに、4ワードからなるパック10進数の有効桁数を計
算する場合には、図17に示すフローチャートのプログ
ラムにより処理を行っていた。なお、図15に示される
数字は、1つ1つがパック10進数を示す(従って、本
来は4ビットの2進データ)が、ここでは、簡略化して
示している。さて、有効桁数を計算する処理において
は、レジスタr0に4ワードに対するパック10進数の
桁数である32をセットし、レジスタr1に4ワードの
データの最上位の1ワードの読み出しアドレスをセット
する(S33)。次に、レジスタr0の内容が0より大
であるか否かを検出する(S34)。ここでは、レジス
タr0の内容は32であるから、T(真)へ分岐して、
レジスタr1により示されるアドレスに対応する最上位
の1ワードのデータをレジスタr2にセットし(S3
5)、このレジスタr2にセットされたデータがオール
0であるか否か検出する(S36)。図15から明らか
なように、この例では最上位の1ワードはオール0であ
るから、T(真)へ分岐して、レジスタr0の内容であ
る32から8(1ワード内のパック10進数の桁数)を
引いてレジスタr0にセットすると共に、レジスタr1
の内容であるEAに4を加えて最上位から2番目のワー
ドの読み出しアドレスを得て、これをレジスタr1へセ
ットし(S37)、ステップS34からS37を繰り返
す。つまり、このステップS34からS37の繰り返し
によって、1ワード内のパック10進数がオール0では
ない1ワードを最上位側から検出する。
【0076】この例では、最上位から第3番目の1ワー
ドに初めて0以外のパック10進数が現れるので、その
とき、ステップS36においてF(偽)へ分岐する。こ
のとき、レジスタr0の内容は16となっている。ま
た、レジスタr2には、最上位から第3番目の1ワード
のデータ(パック10進数で、00035021)がセ
ットされている。そして、レジスタr3に1ワード(3
2ビット)の半分である16(ビット)をシフト量とし
てセットすると共に、このシフト量16(ビット)に対
応するパック10進数の桁数である4をレジスタr5に
セットし(S38)、次に、レジスタr3の内容が4以
上であるか否かを検出する(S39)。ここでは、レジ
スタr3の内容は16であるので、T(真)へ分岐し、
レジスタr2の内容である最上位から第3番目の1ワー
ドのデータをレジスタr3にセットされている16右シ
フトし、レジスタr4へセットする(S40)。
【0077】この結果、最上位から第3番目の1ワード
に初めて現れる0以外のパック10進数である「3」が
1ワード内の最下位の4ビットを構成するようになり、
それより上位のパック10進数は0となる。次に、レジ
スタr4の内容が0か否か検出され(S41)、ここで
は、上述の通り0ではないので、F(偽)へ分岐して、
レジスタr4の上記内容をレジスタr2へセットし(S
42)、更に、レジスタr3の内容を1右シフトしてセ
ットされていた数値16を半分の8へ変更してレジスタ
r3へセットすると共に、レジスタr5の内容である4
も1右シフトしてその半分の2へ変更してこの2をレジ
スタr5へセットして(S44)、ステップS39へ戻
る。そして、ステップS39ではT(真)へ分岐し、ス
テップS40において、レジスタr2の内容をレジスタ
r3の内容である8右シフトするとオール0となり、ス
テップS41においてTへ分岐し、レジスタr0の内容
である16からレジスタr5の内容である2を引き14
を得てレジスタr0へセットして(S43)、更に、レ
ジスタr3の内容を1右シフトしてセットされていた数
値8を半分の4へ変更してレジスタr3へセットすると
共に、レジスタr5の内容である2も1右シフトしてそ
の半分の1へ変更してこの1をレジスタr5へセットし
て(S44)、ステップS39へ戻る。
【0078】そして、ステップS39では、レジスタr
3の内容がまだ4であるからT(真)へ分岐し、ステッ
プS40において、レジスタr2の内容(パック10進
数である「3」が1ワード内の最下位の4ビットを構成
するデータ)をレジスタr3の内容である4右シフトす
るとオール0となり、ステップS41においてTへ分岐
し、レジスタr0の内容である14からレジスタr5の
内容である1を引き13を得てレジスタr0へセットし
て(S43)、更に、レジスタr3の内容を1右シフト
してセットされていた数値4を半分の2へ変更してレジ
スタr3へセットすると共に、レジスタr5の内容であ
る1も1右シフトして0へ変更してこの0をレジスタr
5へセットして(S44)、ステップS39へ戻る。こ
の結果、ステップS39ではレジスタr3の内容が2で
あるからF(偽)へ分岐して終了となる。つまり、レジ
スタr0にセットされている13がパック10進数の有
効桁数である。
【0079】図18には、上記図17のフローチャート
に対応するニーモニック表記の命令コード列が示されて
いる。この様な従来のRISC計算機による処理では、
当初の1ワード内のパック10進数がオール0か否かの
処理においては、1ワード単位で行われているものの、
図17、図18の破線枠内に示される処理では、16ビ
ット、8ビット、4ビットと処理単位を小さくして検出
を行う繰り返し処理が必要であり、最終的な検出までの
処理回数が多くなるという問題点がある。更に、図1
7、図18の破線枠内に示される処理は、制御依存関係
が強く、16ビット、8ビット、4ビットと処理単位が
小さくなるにも拘らず、並列実行できない問題がある。
【0080】本実施の形態に係るfsbit命令及びc
mplt.p命令を実行するRISC計算機により上記
問題点が解決される。つまり、本実施の形態に係るRI
SC計算機は図16に示されるように、ワード単位処理
手段41、2次処理処理手段42、最先セットビット値
検出手段43、有効桁数取得手段44を具備する。ワー
ド単位処理手段41は、複数ワードのパック10進数デ
ータについて、第1オペランドの1ワードのデータと第
2オペランドの1ワードのデータを4ビット単位に比較
して、第2オペランドの4ビットデータが第1オペラン
ドの4ビットデータより大きいか否か検出し、各4ビッ
ト単位の比較結果をディスティネーションオペランドの
下位側に格納するcmplt.p命令を実行する図1の
演算回路2を用いてワード単位に処理を行う。2次処理
処理手段42は、上記ワード単位処理手段41による処
理結果を上記複数ワードのワードデータ順に並べる処理
を行う。また、最先セットビット値検出手段43は、上
記2次処理手段42による処理結果について、fsbi
t命令を実行可能な演算回路2を用いて、1ワードデー
タ中の最上位ビットから最下位ビット方向に検索した場
合に、最初にセットされているビットが、最下位ビット
から数えて何ビット目であるかを示す数値を得る。更
に、有効桁数取得手段44は、この最先セットビット値
検出手段43の検出結果に基づきパック10進数の有効
桁数を得る。
【0081】以上のように、fsbit命令及びcmp
lt.p命令を実行可能な演算回路2を備える本発明の
RISC計算機は、図19に示されるフローチャートの
処理を行う。ここで処理されるデータは図15に示され
ているパック10進数のデータである。まず、レジスタ
r1に最上位ワードの読み出しアドレスEAに12を加
えて最下位の1ワードの読み出しアドレスとしてセット
する(S45)。次に、レジスタr1のアドレスにより
指示された1ワードの内容をレジスタr2へセットし
(S46)、このレジスタr2の内容である最下位の1
ワードに対して、cmplt.p命令を用いて0と比較
し、結果をレジスタr0へセットすると共に、レジスタ
r1の内容から4を引いて最下位から2番目の1ワード
の読み出しアドレスを得てこれをレジスタr1へセット
する(S47)。これによって、レジスタr0の下位8
ビットには、上記最下位の1ワードのパック10進数の
それぞれに対応して、パック10進数が0でなければ1
がセットされ、パック10進数が0であれば0がセット
される。
【0082】次に、レジスタr1のアドレスにより指示
された1ワードの内容をレジスタr2へセットし(S4
8)、このレジスタr2の内容である最下位から2番目
の1ワードに対して、cmplt.p命令を用いて0と
比較し、結果をレジスタr2へセットする(S49)。
これによって、レジスタr2の下位8ビットには、上記
最下位から2番目の1ワードのパック10進数のそれぞ
れに対応して、パック10進数が0でなければ1がセッ
トされ、パック10進数が0であれば0がセットされ
る。更に、このレジスタr2の内容を8左シフトして最
下位から2番目のワードについての結果位置に位置付け
(S50)、レジスタr0とr2との内容の論理和を作
成して、処理結果を上記2ワードのワードデータ順に並
べ、これをレジスタr0へセットし、また、レジスタr
1の内容から4を引いて最上位から2番目の1ワードの
読み出しアドレスを得てこれをレジスタr1へセットす
る(S51)。以下ステップS52からステップS59
までにおいて、残りの2ワードについてcmplt.p
命令を用いてパック10進数の数値毎に0か否かのデー
タを得て、シフト及び論理和を用いて図15の4ワード
のワードデータ順に並べ、これをレジスタr0へセット
する(S59)。以上により、図15から明らかなよう
にレジスタr0内のデータは、最上位から18個の0が
続き、その次は1で、以下、パック10進数が0でない
限りにおいて1となる。
【0083】次に、レジスタr0の内容が0であるか否
かを判別する(S60)。この例(図15)では、上記
のように、レジスタr0の内容が0ではないから、F
(偽)へ分岐してfsbit命令を用いてレジスタr0
の内容について処理を行い、これをレジスタr0へセッ
トする(S61)。このとき、図15から判るように、
13ビット目が最先頭位置であるから、fsbit命令
の性格から、上記13から1を引いた12がレジスタr
0にセットされる。次に、レジスタr0の内容である1
2に1を加えてパック10進数の有効桁数13が得られ
る(S62)。
【0084】図20に、上記図19のフローチャートに
対応するニーモニック表記の命令コード列が示されてい
る。このように、本実施の形態においては、ワード単位
の処理についてはcmplt.p命令を用いて、更に、
1ワード内における処理及び有効桁数を作成する処理に
おいてはfsbit命令を用いて、ループによる繰り返
し処理をなくし、その分処理の簡素化と高速化が図られ
る。
【0085】本発明の他の実施の形態に係るRISC計
算機は、VLIW方式を採用しており、その要部は図1
1に示されるようである。つまり、図1の演算回路2と
等しい構成を有する演算回路2−1〜2−4が並列処理
を行う。演算回路2−1〜2−4は、cmplt.p命
令、fsbit命令を実行可能である。この様な構成の
RISC計算機により、図20に示される命令コード列
の処理を並列実行させる場合には、図21に示される命
令コード列の処理を行わせることになる。この例では、
第3番目の演算回路(例えば、2−3)が、cmpl
t.p命令を1サイクルに1命令実行して4回繰り返
す。このようにして、本発明の実施例に係るRISC計
算機によれば、演算回路2−1〜2−4がfsbit命
令及びcmplt.p命令を実行可能であり、0でない
パック10進数がセットされている位置の検出、その処
理結果に対し、セットされているビット位置の検出を条
件判定と分岐命令で行う必要がないので、有効桁数計算
機として動作させたときに、並列性の向上を図ることが
でき、高速な処理が可能である。
【0086】上記構成のRISC計算機により、図20
に示される命令コード列の処理を並列実行させる場合の
別の命令コード列を図22に示す。上記図21の例で
は、第3番目の演算回路(例えば、2−3)が、cmp
lt.p命令を1サイクルに1命令実行して4回繰り返
すようにしたが、この図22の例では、cmplt.p
命令を1サイクルに複数命令実行する。つまり、それぞ
れ演算回路2−1〜2−4が、第2サイクルにおいて並
列的にcmplt.p命令を実行している。これによ
り、図21の構成では、10サイクル必要であったのに
対し、本実施例では7サイクルで済むようになってお
り、処理の高速化が図られている。
【0087】従来のRISC計算機は、前述の通り、レ
ジスタ長は64ビットや32ビットであり、これらをビ
ット単位に操作する命令として、and、or、xo
r、notなどの論理演算やシフト、ローテートなどを
用いて処理を行っている。そして、これらの命令を用い
れば、1バイト単位の処理を32ビット長や64ビット
長のワード単位での処理として同時複数実行できる。し
かし、比較処理に関しては、比較の後に分岐命令が配置
されているのが通例である等の理由で、1バイトのデー
タを複数同時に大小比較、または、一致検出することは
困難であった。
【0088】本実施の形態に係るRISC計算機は、図
1の構成を有する。そして演算回路2は、第1オペラン
ドの1ワードのデータと第2オペランドの1ワードのデ
ータを1バイト単位に比較して、第2オペランドの1バ
イトデータが第1オペランドの1バイトデータより大き
いか否か検出し、各1バイト単位の比較結果をディステ
ィネーションオペランドの下位側に格納する比較手段を
備える。また、演算回路2は、第1オペランドの1ワー
ドのデータと第2オペランドの1ワードのデータを1バ
イト単位に比較して、第2オペランドの1バイトデータ
が第1オペランドの1バイトデータと等しいか否か検出
し、各1バイト単位の比較結果をディスティネーション
オペランドの下位側に格納する比較手段を備える。
【0089】別言すると、第1オペランドの1ワードの
データと第2オペランドの1ワードのデータを1バイト
単位に比較して、第2オペランドの1バイトデータが第
1オペランドの1バイトデータより大きいか否か検出
し、各1バイト単位の比較結果をディスティネーション
オペランドの下位側に格納する命令(以下、cmpl
t.b命令)を備える。また、第1オペランドの1ワー
ドのデータと第2オペランドの1ワードのデータを1バ
イト単位に比較して、第2オペランドの1バイトデータ
が第1オペランドの1バイトデータと等しいか否か検出
し、各1バイト単位の比較結果をディスティネーション
オペランドの下位側に格納する命令(以下、cmpe
q.b命令)を備える。
【0090】cmplt.b命令は、図23の110に
示されるように、括弧内に処理対象のデータが格納され
ている2つのジェネラルレジスタ(%rs1)、(%r
s2)と、結果を書き込むディスティネーションレジス
タ(%rd1)とを指定して記述される。この110の
表記の右には、ジェネラルレジスタ(%rs2)のデー
タがジェネラルレジスタ(%rs1)のデータより大で
あることを条件に、ディスティネーションレジスタ(%
rd1)に1を書き込むことを示す表記111が対応付
けられている。また、図23における112の表記は、
ディスティネーションレジスタ(%rd1)のビット位
置と、比較結果及び比較対象のビット位置との関係を示
すものである。例えば、表記112の第1行目は、ジェ
ネラルレジスタ(%rs2)の位置24から31までの
1バイトのデータがジェネラルレジスタ(%rs1)の
位置24から31までの1バイトのデータより大である
ことを条件に、ディスティネーションレジスタ(%rd
1)の位置31に1を書き込むことを示す。この条件が
成り立たないときには、ディスティネーションレジスタ
(%rd1)には、0がセットされる。
【0091】また、cmpeq.b命令は、図24の1
13に示されるように、括弧内に処理対象のデータが格
納されている2つのジェネラルレジスタ(%rs1)、
(%rs2)と、結果を書き込むディスティネーション
レジスタ(%rd1)とを指定して記述される。この1
13の表記の右には、ジェネラルレジスタ(%rs1)
のデータとジェネラルレジスタ(%rs2)のデータと
が等しいことを条件に、ディスティネーションレジスタ
(%rd1)に1を書き込むことを示す表記114が対
応付けられている。また、図24における115の表記
は、ディスティネーションレジスタ(%rd1)のビッ
ト位置と、比較結果及び比較対象のビット位置との関係
を示すものである。例えば、表記115の第1行目は、
ジェネラルレジスタ(%rs1)の位置24から31ま
での1バイトのデータがジェネラルレジスタ(%rs
2)の位置24から31までの1バイトのデータと等し
いことを条件に、ディスティネーションレジスタ(%r
d1)の位置31に1を書き込むことを示す。この条件
が成り立たないときには、ディスティネーションレジス
タ(%rd1)には、0がセットされる。
【0092】なお、上記cmplt.b命令、cmpe
q.b命令を実現するために、1バイト(8ビット)比
較器を4個備えさせて、演算回路2を構成する。1バイ
ト比較器の内部構成は、例えば、SN7485等の論理
回路に準じた構成とする。以上の通りの本発明の実施の
形態によって、1ワードのデータを1バイトに分割して
各1バイト毎に等しいか否か比較する演算、または、1
ワードのデータを1バイトに分割して各1バイト毎の大
小比較をする演算が1命令により実行されることにな
る。
【0093】上記演算回路2を備えたRISC計算機
は、複数ワードのデータについて有効バイト長を計算す
るRISC計算機として機能する。従来のRISC計算
機においては、例えば、図25(a)に示されるよう
に、4ワードからなるデータの有効バイト長を計算する
場合には、図27に示すフローチャートのプログラムに
より処理を行っていた。なお、図25(a)に示される
数字は、1つ1つが4ビット分に対応する数を示し、2
つの数値により1バイトが構成されているものである。
さて、有効バイト長を計算する処理においては、レジス
タr0に、4ワードに対応するバイト数16をセット
し、レジスタr1に4ワードのデータの最上位の1ワー
ドの読み出しアドレスEAをセットする(S65)。次
に、レジスタr0の内容が0より大であるか否かを検出
する(S66)。ここでは、レジスタr0の内容は16
であるから、T(真)へ分岐して、レジスタr1により
示されるアドレスに対応する最上位の1ワードのデータ
をレジスタr2にセットし(S67)、このレジスタr
2にセットされたデータがオール0であるか否か検出す
る(S68)。図25(a)から明らかなように、この
例では最上位の1ワードはオール0であるから、T
(真)へ分岐して、レジスタr0の内容である16から
4(1ワード内に含まれるバイト数)を引いて12を得
て、これをレジスタr0にセットすると共に、レジスタ
r1の内容であるEAに4を加えて最上位から2番目の
ワードの読み出しアドレスを得て、これをレジスタr1
へセットし(S69)、ステップS66からS69を繰
り返す。つまり、このステップS66からS69の繰り
返しによって、1ワード内がオール0ではない1ワード
を最上位側から検出する。
【0094】この例では、最上位から第3番目の1ワー
ドに初めて0以外の数3が現れるので、そのとき、ステ
ップS68においてF(偽)へ分岐する。このとき、レ
ジスタr0の内容は8となっている。また、レジスタr
2には、最上位から第3番目の1ワードのデータ(00
035021)がセットされている。そして、レジスタ
r3に1ワード(32ビット)の半分である16(ビッ
ト)をシフト量としてセットすると共に、このシフト量
16(ビット)に対応するバイト数である2をレジスタ
r5にセットし(S70)、次に、レジスタr3の内容
が8以上であるか否かを検出する(S71)。ここで
は、レジスタr3の内容は16であるので、T(真)へ
分岐し、レジスタr2の内容である最上位から第3番目
の1ワードのデータをレジスタr3にセットされている
数だけ、つまり16右シフトし、レジスタr4へセット
する(S72)。
【0095】この結果、最上位から第3番目の1ワード
に初めて現れる0以外の数である「3」が1ワード内の
最下位の4ビットを構成するようになり、それより上位
の数は0となる。次に、レジスタr4の内容が0か否か
検出され(S73)、ここでは、上述の通り0ではない
ので、F(偽)へ分岐して、レジスタr4の上記内容を
レジスタr2へセットし(S74)、更に、レジスタr
3の内容を1右シフトしてセットされていた数値16を
半分の8へ変更してレジスタr3へセットすると共に、
レジスタr5の内容である2も1右シフトしてその半分
の1へ変更してこの1をレジスタr5へセットして(S
76)、ステップS71へ戻る。そして、ステップS7
1ではT(真)へ分岐し、ステップS72において、レ
ジスタr2の内容をレジスタr3の内容である8だけ右
シフトするとオール0となり、ステップS73において
T(真)へ分岐し、レジスタr0の内容である8からレ
ジスタr5の内容である1を引き7を得てレジスタr0
へセットする(S75)。更に、レジスタr3の内容を
1右シフトしてセットされていた数値8を半分の4へ変
更してレジスタr3へセットすると共に、レジスタr5
の内容である1も1右シフトして0へ変更してこの1を
レジスタr5へセットして(S76)、ステップS71
へ戻る。
【0096】この結果、ステップS71ではレジスタr
3の内容が4であるからF(偽)へ分岐して終了とな
る。つまり、レジスタr0にセットされている7が図2
5(a)に示される当該4ワードの有効バイト長であ
る。
【0097】図28には、上記図27のフローチャート
に対応するニーモニック表記の命令コード列が示されて
いる。この様な従来のRISC計算機による処理では、
当初の1ワード内がオール0か否かの処理においては、
1ワード単位で行われているものの、図27、図28の
破線枠内に示される処理では、16ビット、8ビットと
処理単位を小さくして検出を行う繰り返し処理が必要で
あり、最終的な検出までの処理回数が多くなるという問
題点がある。更に、図27、図28の破線枠内に示され
る処理は、制御依存関係が強く、16ビット、8ビット
と処理単位が小さくなるにも拘らず、並列実行できない
問題がある。
【0098】本実施の形態に係るfsbit命令及びc
mplt.b命令を実行するRISC計算機により上記
問題点が解決される。つまり、本実施の形態に係るRI
SC計算機は図26に示されるように、ワード単位処理
手段45、2次処理処理手段46、最先セットビット値
検出手段47、有効バイト長取得手段48を具備する。
ワード単位処理手段45は、複数ワードのデータについ
て、第1オペランドの1ワードのデータと第2オペラン
ドの1ワードのデータを1バイト単位に比較して、第2
オペランドの1バイトデータが第1オペランドの1バイ
トデータより大きいか否か検出し、各1バイト単位の比
較結果をディスティネーションオペランドの下位側に格
納するcmplt.b命令を実行可能な図1の演算回路
2を用いてワード単位に処理を行う。2次処理処理手段
46は、上記ワード単位処理手段45による処理結果を
上記複数ワードのワードデータ順に並べる処理を行う。
また、最先セットビット値検出手段47は、上記2次処
理手段46による処理結果について、fsbit命令を
実行可能な演算回路2を用いて、1ワードデータ中の最
上位ビットから最下位ビット方向に検索した場合に、最
初にセットされているビットが、最下位ビットから数え
て何ビット目であるかを示す数値を得る。更に、有効バ
イト長取得手段48は、上記の最先セットビット値検出
手段48の検出結果に基づき有効バイト長を得る。
【0099】以上のように、fsbit命令及びcmp
lt.b命令を実行可能な演算回路2を備える本発明の
RISC計算機は、図29に示されるフローチャートの
処理を行う。ここで処理されるデータは図25(a)に
示されている4ワードのデータである。まず、レジスタ
r1に最上位ワードの読み出しアドレスEAに12を加
えて最下位の1ワードの読み出しアドレスとしてセット
する(S81)。次に、レジスタr1のアドレスにより
指示された1ワードの内容をレジスタr2へセットし
(S82)、このレジスタr2の内容である最下位の1
ワードに対して、cmplt.b命令を用いて0と比較
し、結果をレジスタr0へセットすると共に、レジスタ
r1の内容から4を引いて最下位から2番目の1ワード
の読み出しアドレスを得てこれをレジスタr1へセット
する(S83)。これによって、レジスタr0の下位4
ビットには、上記最下位の1ワードの各バイトのそれぞ
れに対応して、そのバイトの数値が0でなければ1がセ
ットされ、そのバイトの数値が0であれば0がセットさ
れる。
【0100】次に、レジスタr1のアドレスにより指示
された1ワードの内容をレジスタr2へセットし(S8
4)、このレジスタr2の内容である最下位から2番目
の1ワードに対して、cmplt.b命令を用いて0と
比較し、結果をレジスタr2へセットする(S85)。
これによって、レジスタr2の下位4ビットには、上記
最下位から2番目の1ワードの各バイトのそれぞれに対
応して、そのバイトの数値が0でなければ1がセットさ
れ、そのバイトの数値が0であれば0がセットされる。
更に、このレジスタr2の内容を4左シフトして最下位
から2番目のワードについての結果位置に位置付け(S
86)、レジスタr0とr2との内容の論理和を作成し
て、処理結果を上記2ワードのワードデータ順に並べ、
これをレジスタr0へセットし、また、レジスタr1の
内容から4を引いて最上位から2番目の1ワードの読み
出しアドレスを得てこれをレジスタr1へセットする
(S87)。以下ステップS88からステップS95ま
でにおいて、残りの2ワードについてcmplt.b命
令を用いて各バイト毎に0か否かのデータを得て、シフ
ト及び論理和を用いて図25の4ワードのワードデータ
順に並べ、これをレジスタr0へセットする(S9
5)。以上により、図25(b)に示すステップS95
までの処理結果から明らかなようにレジスタr0内上位
17ビットは未使用のため、0がセットされており、第
16ビット目からは第8ビット目までは、原データの各
バイトの数値が0(00)であるため、0がセットさ
れ、以降は、数値(03、50,21、……)の各バイ
トの数値に応じて1または0がセットされる。
【0101】次に、レジスタr0の内容が0であるか否
かを判別する(S96)。この例(図25では、上記の
ように、レジスタr0の内容が0ではないから、F
(偽)へ分岐してfsbit命令を用いてレジスタr0
の内容について処理を行い、これをレジスタr0へセッ
トする(S97)。このとき、図25から分るように、
7ビット目が最先頭位置であるから、fsbit命令の
性格から、上記7から1を引いた6がレジスタr0にセ
ットされる。次に、レジスタr0の内容である6に1を
加えて図25の4ワードのデータの有効バイト長7が得
られることになる(S98)。
【0102】図30に、上記図29のフローチャートに
対応するニーモニック表記の命令コード列が示されてい
る。このように、本実施の形態においては、ワード単位
の処理についてはcmplt.b命令を用いて、更に、
1ワード内における処理及び有効バイト長を作成する処
理においてはfsbit命令を用いて、ループによる繰
り返し処理をなくし、その分処理の簡素化と高速化が図
られる。
【0103】本発明の他の実施の形態に係るRISC計
算機は、VLIW方式を採用しており、その要部は図1
1に示されるようである。つまり、図1の演算回路2と
等しい構成を有する演算回路2−1〜2−4が並列処理
を行う。演算回路2−1〜2−4は、cmplt.b命
令、fsbit命令を実行可能である。この様な構成の
RISC計算機により、図30に示される命令コード列
の処理を並列実行させる場合には、図31に示される命
令コード列の処理を行わせることになる。この例では、
第3番目の演算回路(例えば、2−3)が、cmpl
t.b命令を1サイクルに1命令実行して4回繰り返
す。このようにして、本発明の実施例に係るRISC計
算機によれば、演算回路2−1〜2−4がfsbit命
令及びcmplt.b命令を実行可能であり、0でない
1バイトデータがセットされている位置の検出、その処
理結果に対し、セットされているビット位置の検出を条
件判定と分岐命令で行う必要がないので、有効バイト長
計算機として動作させたときに、並列性の向上を図るこ
とができ、高速な処理が可能である。
【0104】上記構成のRISC計算機により、図30
に示される命令コード列の処理を並列実行させる場合の
別の命令コード列を図32に示す。上記図31の例で
は、第3番目の演算回路(例えば、2−3)が、cmp
lt.b命令を1サイクルに1命令実行して4回繰り返
すようにしたが、この図32の例では、cmplt.b
命令を1サイクルに複数命令実行する。つまり、それぞ
れ演算回路2−1〜2−4が、第2サイクルにおいて並
列的にcmplt.b命令を実行している。これによ
り、図31の構成では、10サイクル必要であったのに
対し、本実施例では7サイクルで済むようになってお
り、処理の高速化が図られている。
【0105】上記演算回路2を備えたRISC計算機
は、ゾーン10進数からなる複数ワードの演算結果デー
タについてオーバーフローを検出するRISC計算機と
して機能する。ゾーン10進数は、例えば、図33に示
されるように、1バイトを単位に数値を表す形式であ
り、1バイトの上位4ビットに所定のゾーンビット(こ
こでは、「0011」)をセットし、1バイトの下位4
ビットに数値をセットして構成する。なお、最下位バイ
トでは、上位4ビットに符号(正または負)のビットが
セットされる。係るゾーン10進数のデータを用いた演
算結果にオーバーフローが生じたか否かの検出は、従
来、バイト単位に比較と分岐とを繰り返す処理により行
っていた。例えば、演算結果の最下位バイトから使用未
使用を比較により検出して、その結果に応じて分岐して
上位方向のバイトについて同様の処理を繰り返す。従っ
て、基本的には、有効バイト長計算の場合の従来例と同
様な処理が必要であり、16ビット、8ビットと処理単
位を小さくして検出を行う繰り返し処理が必要であり、
最終的な検出までの処理回数が多くなるという問題点が
ある。更に、上記の比較と分岐による処理は、制御依存
関係が強く、16ビット、8ビットと処理単位が小さく
なるにも拘らず、並列実行できない問題がある。
【0106】本実施の形態に係るfsbit命令及びc
mpeq.b命令を実行するRISC計算機により上記
問題点が解決される。つまり、本実施の形態に係るRI
SC計算機は図34に示されるように、ワード単位処理
手段50、2次処理処理手段51、最先セットビット値
検出手段52、オーバーフロー検出手段53を具備す
る。ワード単位処理手段50は、ゾーン10進数の複数
ワードからなる演算結果データについて、第1オペラン
ドの1ワードのデータと第2オペランドの1ワードのデ
ータを1バイト単位に比較して、第2オペランドの1バ
イトデータが前記第1オペランドの1バイトデータと等
しいか否か検出し、各1バイト単位の比較結果をディス
ティネーションオペランドの下位側に格納するcmpe
q.b命令を実行可能な図1の演算回路2を用いてワー
ド単位に処理を行う。2次処理処理手段51は、上記の
ワード単位処理手段50による処理結果を上記複数ワー
ドのワードデータ順に並べ、この並べたデータに対して
使用されているバイトと使用されていないバイトとを識
別する処理を行う。最先セットビット値検出手段52
は、上記の2次処理手段51による処理結果について、
fsbit命令を実行可能な図1の演算回路2を用い
て、1ワードデータ中の最上位ビットから最下位ビット
方向に検索した場合に、最初にセットされているビット
が、最下位ビットから数えて何ビット目であるかを示す
数値を得る。更に、オーバーフロー検出手段53は、上
記の最先セットビット値検出手段52の検出結果と与え
られる正規のバイト数に基づき演算結果であるゾーン1
0進数のデータがオーバーフローか否か検出する。
【0107】以上のように、fsbit命令及びcmp
eq.b命令を実行可能な演算回路2を備える本発明の
RISC計算機は、図35に示されるフローチャートの
処理を行う。ここで処理されるデータは図36、図37
に示されている4ワード(1ワードが4バイトにより構
成される。)のデータである。この4ワードのデータは
ゾーン10進数による演算結果のデータであり、最上位
ワードがHIGH、次の1ワードがMIDH、第3番目
の1ワードがMIDL、最下位ワードがLOWにより示
されている。この演算結果データは、図37に記載の通
り、前処理において1桁分を表す8ビットのうちの上位
4ビット(ゾーンビット及び符号ビット)が0(オール
0)とされている。その結果、図37に示される4ワー
ド16桁(各桁は1ワードのデータ)が得られる。具体
的には、最上位ワードHIGHが「0000」、次の1
ワードMIDHが「0757」、第3番目の1ワードM
IDLが「3014」、最下位ワードLOWが「670
6」である。
【0108】まず、レジスタw0に最上位ワード(HI
GH)の読み出しアドレスEAに12を加えて最下位の
1ワード(LOW)の読み出しアドレスとしてセットす
る(S101)。次に、レジスタw0のアドレスにより
指示された1ワードの内容をレジスタw2へセットし
(S102)、このレジスタw2の内容である最下位の
1ワードに対して、cmpeq.b命令を用いて0と比
較し、結果をレジスタw3へセットすると共に、レジス
タw0の内容から4を引いて最下位から2番目の1ワー
ド(MIDL)の読み出しアドレスを得てこれをレジス
タw0へセットする(S103)。以上の処理によっ
て、レジスタw3の下位4ビットには、上記最下位の1
ワード(MIDL)の各バイトのそれぞれに対応して、
そのバイトの数値が0であれば1がセットされ、そのバ
イトの数値が1であれば0がセットされる。従って、最
上位ワードに対応して下位4ビットに「0010」がセ
ットされたデータがレジスタw3にセットされることに
なる。
【0109】次に、レジスタw0のアドレスにより指示
された1ワードの内容をレジスタw2へセットし(S1
04)、このレジスタw2の内容である最下位から2番
目の1ワード(MIDL)に対して、cmpeq.b命
令を用いて0と比較し、結果をレジスタw2へセットす
る(S105)。これによって、レジスタw2の下位4
ビットには、上記最下位から2番目の1ワードの各バイ
トのそれぞれに対応して、そのバイトの数値が0であれ
ば1がセットされ、そのバイトの数値が1であれば0が
セットされる。従って、図37の例の数値に対しては、
下位4ビットに「0100」がセットされたデータがレ
ジスタw2にセットされる。更に、このレジスタw2の
内容を4左シフトして最下位から2番目のワードについ
ての結果位置に位置付け(S106)、レジスタw3と
w2との内容の論理和を作成して、処理結果を上記2ワ
ードのワードデータ順に並べ、これをレジスタw3へセ
ットし、また、レジスタw0の内容から4を引いて最上
位から2番目の1ワードの読み出しアドレスを得てこれ
をレジスタw0へセットする(S107)。
【0110】以下ステップS108からステップS11
5までにおいて、残りの2ワードについてcmpeq.
b命令を用いて各バイト毎に0か否かのデータを得て、
シフト及び論理和を用いて図37の4ワードのワードデ
ータ順に並べ、これをレジスタw3へセットする(S1
15)。以上により、ステップS115までの処理結果
は図37に示されるw12〜w9の下位4ビットのデー
タが並べられてレジスタw3へセットされることにな
る。次に、このレジスタw3のデータと16ビットのオ
ール1との排他的論理和を作成し、つまり、レジスタw
3のデータを反転し、これをレジスタw8にセットする
(S116)。
【0111】次に、レジスタw0の内容が0であるか否
かを判別する(S117)。この例(図37)では、上
記の記載から明らかなように、レジスタw8の内容が0
ではないから、F(偽)へ分岐してfsbit命令を用
いてレジスタw8の内容について処理を行い、これをレ
ジスタw1へセットする(S118)。このとき、図3
7から判るように、最下位から11ビット目が、セット
されたデータ(つまり、1)が出現する最先頭ビット位
置であるから、fsbit命令の性格から、上記11
(ビット目)から1を引いた10がレジスタw1にセッ
トされる。次において、レジスタw1の内容である10
に1を加えて、この結果である11がレジスタw3にセ
ットされ、図37の4ワードのデータの使用されている
バイト長11が得られることになる(S119)。
【0112】更に、このレジスタw3の内容である11
とユーザから与えられたサイズ(size)とが比較さ
れ(S120)、レジスタw3のデータがサイズより大
きければT(真)となってオーバーフローへ進み(S1
21)、レジスタw3のデータがサイズより大きくなけ
ればF(偽)へ分岐しオーバーフローではないことにな
る(122)。斯して、ゾーン10進数の演算結果につ
いてのオーバーフロー検出が行われる。
【0113】上記から明らかなように、本実施の形態に
おいては、ワード単位の処理についてはcmpeq.b
命令を用いて、更に、1ワード内における処理及び使用
されたバイト長を検出する処理においてはfsbit命
令を用いて、ループによる繰り返し処理をなくし、その
分オーバーフロー検出処理の簡素化と高速化が図られ
る。
【0114】本発明の他の実施の形態に係るRISC計
算機は、VLIW方式を採用しており、その要部は図1
1に示されるようである。つまり、図1の演算回路2と
等しい構成を有する演算回路2−1〜2−4が並列処理
を行う。演算回路2−1〜2−4は、cmpeq.b命
令、fsbit命令を実行可能である。この様な構成の
RISC計算機により、図35のフローチャートに示さ
れるゾーン10進数の演算結果データのオーバーフロー
処理を並列実行させる場合には、図38に示されるフロ
ーチャートによる処理を行う。
【0115】即ち、まず図37に示した16桁の4桁ず
つにcmpeq.b命令を用いて、それぞれ0と比較す
る(S125)。勿論、図35においても説明したよう
に、この処理の前に、前処理において1桁分を表す8ビ
ットのうちの上位4ビット(ゾーンビット及び符号ビッ
ト)が0(オール0)とされる。そして、上記16桁の
4桁ずつにcmpeq.b命令を用いて、それぞれ0と
比較した結果は、対象の数値が0であれば1に、また、
1であれば0となるから、図37のレジスタw12、w
11、w10、w9に示すような数値となる。つまり、
各レジスタw12〜w9の下4ビットに、それぞれ、
「1111」、「1000」、「0100」、「001
0」がセットされ、これより上位ビットに0がセットさ
れる。次に、各レジスタw12〜w9にセットされたデ
ータそれぞれが、最上位ビットから第5ビット目まで0
であり、下位4ビットがオール1であるかを検出する
(S126)。そして、レジスタw12についてT
(真)であれば判断4のtureへ分岐し、F(偽)であれ
ば判断4のfaulへ分岐する。また、レジスタw11につ
いてT(真)であれば判断5のtureへ分岐し、F(偽)
であれば判断5のfaulへ分岐し、また、レジスタw10
についてT(真)であれば判断6のtureへ分岐し、F
(偽)であれば判断6のfaulへ分岐し、更に、レジスタ
w9についてT(真)であれば判断7のtureへ分岐し、
F(偽)であれば判断7のfaulへ分岐する。
【0116】判断4からfaulへ分岐した場合において
は、レジスタw12内の右から4ビット(下位4ビッ
ト)について、1を0に、0を1に変換してレジスタw
8にセットすると共に、レジスタw2に対し、下位12
ビットまでが使用中であることに対応して13(fsb
itを使用することに対応して、12に1を加えて13
とする)をセットする(S127)。また、判断5から
faulへ分岐した場合においては、レジスタw11内の右
から4ビット(下位4ビット)について、1を0に、0
を1に変換してレジスタw8にセットすると共に、レジ
スタw2に対し、下位8ビットまでが使用中であること
に対応して9(fsbitを使用することに対応して、
8に1を加えて9とする)をセットする(S128)。
【0117】更に、判断6からfaulへ分岐した場合にお
いては、レジスタw10内の右から4ビット(下位4ビ
ット)について、1を0に、0を1に変換してレジスタ
w8にセットすると共に、レジスタw2に対し、下位4
ビットまでが使用中であることに対応して5(fsbi
tを使用することに対応して、4に1を加えて5とす
る)をセットする(S129)。また、判断7からfaul
へ分岐した場合においては、レジスタw9内の右から4
ビット(下位4ビット)について、1を0に、0を1に
変換してレジスタw8にセットすると共に、レジスタw
2に対し、最下位ビットより上位が使用中であることに
対応して1(fsbitを使用することに対応して、0
に1を加えて1とする)をセットする(S130)。
【0118】以上のようにして、レジスタw8にセット
されたデータに対しfsbit命令を用いてレジスタw
8内のデータについて、右から何ビット使用しているか
を求め、レジスタw1にセットする(S131)。図3
7の例では、w12の下位4ビットがオール1であり、
w11の下位4ビットが「1000」であるから、判断
5においてfaulへ分岐し、レジスタw8に下位4ビット
が「0111」のデータがセットされる。そして、この
データに対しfsbit命令が適用され、レジスタw1
には最下位から3ビット目までが使用されていることを
示す「2」がセットされる。そして、次にレジスタw1
とレジスタw2とのデータが加えられ、レジスタw3に
セットされる(S132)。この結果、図37の例で
は、w1=2、w2=9であるからレジスタw3には、
「11」がセットされる。この「11」がゾーン10進
数の演算結果のデータ(16バイト)において使用され
たバイト数を示す。そして、次にユーザ指示のバイト数
との比較処理へと進む。
【0119】上記図38に示したフローチャートの処理
は、図39に示される命令コード列に対応する。この場
合、先の有効バイト長計算のときと同様に、第3番目の
演算回路(例えば、2−3)が、cmpeq.b命令を
1サイクルに1命令実行して4回繰り返すようにしても
ステップS125(図39)の処理が可能である。これ
に対し、cmpeq.b命令を1サイクルに複数命令実
行するとより高速化できる。つまり、それぞれ演算回路
2−1〜2−4が、第1サイクルにおいて並列的にcm
peq.b命令を実行する。このようにした命令コード
列を図40に示す。図40の構成では、14サイクル、
分岐数2で処理が終了するようになっており、処理の高
速化が図られている。なお、図39のステップS133
において、レジスタw3のデータがユーザから与えられ
た(予めセットされた)サイズ(size)より大かを
検出しているが、その結果の分岐は、図40の第13ク
ラスタに示される。つまり、S133が成立であるとき
には[8t]へ分岐し、レジスタvalに1をセットし
てオーバーフロー発生を示し、S133が不成立のとき
には[8f]へ分岐し、エンドとなる。
【0120】既に説明してきた各実施の形態において用
いられている演算回路2は、1ワード長の命令フォーマ
ットに、2つのソースオペランドと1つのディスティネ
ーションオペランドを分離して指定できる3オペランド
型のRISC命令を実行するように構成されている。係
る構成の演算回路2に3つのソースオペランドと2つの
ディスティネーションオペランドを指定する命令、つま
り、5オペランド型命令を実行させようとすると、演算
回路2は2つのソースオペランドを入力し、1つのディ
スティネーションオペランドを出力するだけの物理的構
成しか有していないため、次のような障害が生じる。
【0121】まず、第1から第3の3つのソースオペラ
ンドを一時に取り込むことができないため、第3ソース
オペランドの待ち合わせが必要となる。同様に、第1及
び第2ディスティネーションオペランドを一時にライト
バックすることができないため、第2ディスティネーシ
ョンオペランドのライトバック待ち等により、パイプラ
インハザードが生じる(フェッチ、デコード、実行、ラ
イトバックのパイプライン処理に空きができる)。この
ため、性能低下が生じることになる。
【0122】本発明の実施の形態では、上記問題点を解
決べく、図11の構成のVLIW方式を採用したRIS
C計算機を、図41に示すように変更する。即ち、演算
回路2−1、2−3に代えて、演算回路20−1、20
−3を用いる。演算回路20−1、20−3は、第3ソ
ースオペランドを取り込む経路55−1、55−3と、
第2ディスティネーションオペランド出力用の経路56
−1、56−3とを備え、3つのソースオペランドに対
して演算を行い、その結果を2つのディスティネーショ
ンオペランドへ出力する5オペランド型命令を実行する
演算回路である。また、図41のVLIW方式RISC
計算機においては、5オペランド型命令を実行する演算
回路20−1、20−3の第3ソースオペランドを取り
込む経路55−1、55−3へソースオペランドを供給
するか、3オペランド型命令型命令を実行する演算回路
2−2、2−4の第1ソースオペランド取り込む経路へ
ソースオペランドを供給するか切り換えるソースオペラ
ンド切換スイッチSW1、SW3と、上記5オペランド
型命令を実行する演算回路20−1、20−3の第2デ
ィスティネーションオペランド出力用の経路56−1、
56−3からのディスティネーションオペランドか、上
記3オペランド型命令を実行する演算回路2−2、2−
4の第1ディスティネーションオペランド出力用の経路
からのディスティネーションオペランドかを選択するた
めのディスティネーションオペランド選択スイッチSW
2、SW4とが設けられている。
【0123】また、デコ−ダ21Aは、各演算回路2−
2、2−4、20−1、20−3に命令のデコード結果
を与えて所要の演算を行わせると共に、上記スイッチS
W1〜SW4を切り換える。なお、当然のことではある
が、演算回路20−1、20−3は、3オペランド型命
令も実行する。
【0124】このように構成されたVLIW方式を採用
したRISC計算機では、例えば、図42に示されるよ
うな命令が命令フィールドにセットされると、演算回路
20−1が5オペランド型命令を実行する。つまり、命
令フィールド0には3オペランド型命令0がセットさ
れ、命令フィールド1には命令0を拡張して5オペラン
ド型とするオペランド拡張命令がセットされ、命令フィ
ールド2には3オペランド型命令2がセットされ、命令
フィールド3には3オペランド型命令3がセットされ
る。
【0125】図43には、3オペランド型命令のフォー
マットが示されている。3オペランド型命令は、先頭に
オペコード1がセットされ、以下、条件実行制御情報、
ディスティネーションレジスタ番号1、オペコード2、
ソースレジスタ番号1、ソースレジスタ番号2がセット
されている。一方、図44には、オペランド拡張命令の
フォーマットが示されている。このオペランド拡張命令
には、先頭に所定のビットパターンからなる5オペラン
ド型拡張コードがセットされ、次いで、5ビットの0
(ヌルデータ)、ディスティネーションレジスタ番号
2、4ビットの0(ヌルデータ)、ソースレジスタ番号
3、6ビットの1(ヌルデータまたはオペランド拡張命
令の終了コード)がセットされている。
【0126】図42の例では、デコ−ダ21Aが、命令
フィールド1にオペランド拡張命令があることを、5オ
ペランド型拡張コードに基づき検出し、ソースオペラン
ド切換スイッチSW1、ディスティネーションオペラン
ド選択スイッチSW2を図41の実線に示すように切り
換える。一方、ソースオペランド切換スイッチSW3、
ディスティネーションオペランド選択スイッチSW4
は、図41の実線に示される通りに演算回路20−3、
2−4が3オペランド型命令を実行可能なように切り換
えられている。そして、演算回路2−2は、斜線を施し
て示すように、演算を実行することはない。
【0127】このように本実施の形態によれば、従来の
レジスタファイル1、入出力ポート23、24の構成を
変更することなく、5オペランド型命令を実行するVL
IW方式のRISC計算機を構成できる。そして、レジ
スタファイル1から入力ポート23を介して一時に3ソ
ースオペランドが与えられる構成であるので、待ちが生
じない。また、レジスタファイル1へ出力ポート24を
介して一時に2ディスティネーションオペランドをライ
トバックできる構成であるので、待ちが生じない。ま
た、ソースオペランド切換スイッチSW1、SW3、デ
ィスティネーションオペランド選択スイッチSW2、S
W4の切り換えをデコードステージで行えるため、待ち
が生じない。以上により、速度を犠牲にすることなく、
RISC型命令であるにも拘らず5オペランド型命令を
実行することが可能である。
【0128】なお、上記の例では、第1番目の演算回路
20−1が5オペランド型命令を実行する例を示した
が、第3番目の演算回路20−3も5オペランド型命令
を実行可能であり、この第3番目の演算回路20−3に
5オペランド型命令を実行させる場合には、命令フィー
ルド3にオペランド拡張命令を配置すればよい。また、
4つの命令フィールド0〜3全てに3オペランド型命令
を配置した場合には、4つの演算回路20−1、2−
2、20−3、2−4全てが、3オペランド型命令を実
行する。
【0129】上記図41の演算回路20−1、20−3
は、第1オペランドの1ワード長のデータと第2オペラ
ンドの1ワード長のデータとを夫々4ビット幅のブロッ
クに区分し、第1オペランドの各ブロックと第2オペラ
ンドの各ブロックとを先頭から順に組み合わせるシャッ
フル手段と、このシャッフル手段により組み合わされた
ブロック対における2ブロックの前後配置関係を、第3
オペランドの1ワード長のデータに基づき制御する対交
換手段と、を具備する。また、上記演算回路20−1、
20−3は、第1オペランドの1ワード長のデータと第
2オペランドの1ワード長のデータとを夫々4ビット幅
のブロックに区分し、第1オペランドと第2オペランド
のブロックを一列に並べた状態で1ブロックおきに組み
合わせ、奇数ブロックの組み合わせの並びの後に偶数ブ
ロックの組み合わせの並びを配置する逆シャッフル手段
と、この逆シャッフル手段により組み合わされたブロッ
ク対における2ブロックの前後配置関係を、第3オペラ
ンドの1ワード長のデータに基づき制御する対交換手段
とを具備する。
【0130】別言すると、上記演算回路20−1、20
−3は、第1オペランドの1ワード長のデータと第2オ
ペランドの1ワード長のデータとを夫々4ビット幅のブ
ロックに区分し、第1オペランドの各ブロックと第2オ
ペランドの各ブロックとを先頭から順に組み合わせるシ
ャッフルと、このシャッフルにより組み合わされたブロ
ック対における2ブロックの前後配置関係を、第3オペ
ランドの1ワード長のデータに基づき制御する対交換を
行うことからなる命令(以下、shx命令)を実行す
る。また、第1オペランドの1ワード長のデータと第2
オペランドの1ワード長のデータとを夫々4ビット幅の
ブロックに区分し、第1オペランドと第2オペランドの
ブロックを一列に並べた状態で1ブロックおきに組み合
わせ、奇数ブロックの組み合わせの並びの後に偶数ブロ
ックの組み合わせの並びを配置する逆シャッフルと、こ
の逆シャッフルにより組み合わされたブロック対におけ
る2ブロックの前後配置関係を、第3オペランドの1ワ
ード長のデータに基づき制御する対交換を行うことから
なる命令(以下、ishx命令)を実行する。
【0131】shx命令は、図45の115に示される
ように、括弧内にシャッフル処理対象のデータが格納さ
れている2つのジェネラルレジスタ(%rs3)、(%
rs1)と、シャッフル処理された4ビットの対のデー
タの前後関係を指示するビットが格納されているジェネ
ラルレジスタ(%rs2)と、結果を書き込む2つのデ
ィスティネーションレジスタ(%rd2)、(%rd
1)とを指定して記述される。この115の表記の右に
は、2つのジェネラルレジスタ(%rs3)、(%rs
1)で指定された2ワードのデータを4ビット単位で完
全シャッフルを行った後、117で示されるジェネラル
レジスタ(%rs2)の下位8ビットで指定された対交
換を行い、これをディスティネーションレジスタ(%r
d2)、(%rd1)に書き込むことを示す表記116
が対応付けられている。
【0132】上記において、完全シャッフルとは、図4
7に示されているように、1ワードの各4ビットのデー
タa0〜a7と、1ワードの各4ビットのデータb0〜
b7とを、交互に並べること、つまり、a0,b0,a
1,b1,・・・b6,a7,b7と並べることであ
る。そして、(a0,b0)、(a1,b1)・・・
(a7,b7)が夫々対となっている。この各対の2つ
のデータの交換をex0,ex1,・・・ex7で示
す。この対交換ex0,ex1,・・・ex7における
前後配置を117に示されるように、レジスタrs2の
ビット24〜31により夫々指定する。
【0133】この動作は、図46に示されるように、例
えば、レジスタrs3の4ビットデータa0とレジスタ
rs1の4ビットデータb0とが、1対とされる。この
1対は、レジスタrs2のビット24が0のときには、
下左欄に示されるようにa0,b0の順に並べられ、レ
ジスタrs2のビット24が1のときには、下右欄に示
されるようにb0,a0の順に並べられる。
【0134】図48には、上記shx命令に対応する演
算回路20−1、20−3の要部構成を示す。図に示さ
れているように、レジスタrs3の4ビットデータa0
とレジスタrs2の4ビットデータb0とは、例えば、
それぞれ結線(ワイヤー)56、55によってゲート5
7−1〜57−4に導かれる。各ゲート57−1〜57
−4は、例えば、それぞれ4個のアンドゲートから構成
される。ゲート57−1、57−4はレジスタrs2か
らのビット24の信号がLレベル(0)で与えられる
と、4ビットデータa0、b0を通過させ、Hレベル
(1)で与えられると、不通過とする。また、ゲート5
7−2、57−3はレジスタrs2からのビット24の
信号がHレベル(1)で与えられると、4ビットデータ
a0、b0を通過させ、Lレベル(0)で与えられる
と、不通過とする。
【0135】一方、ishx命令は、図49の118に
示されるように、括弧内に逆シャッフル処理対象のデー
タが格納されている2つのジェネラルレジスタ(%rs
3)、(%rs1)と、逆シャッフル処理された4ビッ
トの対のデータの前後関係を指示するビットが格納され
ているジェネラルレジスタ(%rs2)と、結果を書き
込む2つのディスティネーションレジスタ(%rd
2)、(%rd1)とを指定して記述される。この11
9の表記の右には、2つのジェネラルレジスタ(%rs
3)、(%rs1)で指定された2ワードのデータを4
ビット単位で逆完全シャッフルを行った後、120で示
されるジェネラルレジスタ(%rs2)の下位8ビット
で指定された対交換を行い、これをディスティネーショ
ンレジスタ(%rd2)、(%rd1)に書き込むこと
を示す表記119が対応付けられている。
【0136】上記において、逆完全シャッフルとは、図
47に示されているように、1ワードの各4ビットのデ
ータa0,b0,a1,b1,・・・,b3と、1ワー
ドの各4ビットのデータa4,b4,a5,・・・,b
7とを、1ブロックおきに組み合わせ、奇数ブロックの
組み合わせの並びの後に偶数ブロックの組み合わせの並
びを配置する交互に並べることである。つまり、完全シ
ャッフルを行った結果を、逆完全シャッフルを行うと、
元に戻る。そして、奇数ブロックでは、(a0,a
1)、(a2,a3)・・・(a6,a7)が夫々対と
なり、偶数ブロックでは、(b0,b1)、(b2,b
3)、・・・(b6,b7)が夫々対となっている。こ
の対の交換をex0,ex1,・・・ex7で示す。こ
の対交換ex0,ex1,・・・ex7における前後配
置を120に示されるように、レジスタrs2のビット
24〜31により夫々指定する。
【0137】この動作は、図50に示されるように、例
えば、レジスタrs3の4ビットデータa0,a1が、
1対とされる。この1対は、レジスタrs2のビット2
4が0のときには、下左欄に示されるようにa0,a1
の順に並べられ、レジスタrs2のビット24が1のと
きには、下右欄に示されるようにa1,a0の順に並べ
られる。
【0138】このishx命令は、図48に示される構
成により実現される。逆完全シャッフルは、結線(ワイ
ヤー)56、55によって実行される。以上のような、
shx命令及びishx命令を実行する演算回路20−
1、20−3によって、2つの1ワードに存在する4ビ
ット単位のデータを交互混合し、または、その逆に混合
し、所望するように配置された2ワードのデータを得る
ことができる。
【0139】上記演算回路20−1、20−3を備えた
RISC計算機は、パック10進数の不正データの除去
を行う。従来のRISC計算機においてパック10進数
の不正データの除去処理は、4ビット単位にエラーチェ
ックを行い、チェック結果に応じてエラールーチンへ分
岐することに行われていた。4ビット単位の繰り返し処
理のため、かなり多くの時間を要していた。また、エラ
ーチェック毎に分岐するために、エラーがない場合でも
並列化することができず、並列化が困難であり、VLI
W方式による処理はできないという問題があった。
【0140】この問題点は、本発明の実施の形態に係
る、cmplt.p命令、shx命令、ishx命令を
実行する演算回路20−1(20−3)を具備するRI
SC計算機により解決される。つまり、本発明の実施の
形態に係るRISC計算機は、図51に示されるよう
に、不正パック10進数検出手段57、データ混合手段
58、不正データ抽出手段59を有する。不正パック1
0進数検出手段57は、複数ワードのパック10進数デ
ータについて、1ワードのデータを4ビット単位に不正
閾値データと比較して、各4ビット単位の比較結果をデ
ィスティネーションオペランドの下位側に格納するcm
plt.p命令を実行する演算回路2または20−1
(20−3)を用いてワード単位に処理を行う。データ
混合手段58は、上記複数ワードのパック10進数デー
タと0とを第1オペランド及び第2オペランドとし、上
記不正パック10進数検出手段57の結果を第3オペラ
ンドとして、shx命令を実行する演算回路20−1
(20−3)を用いてshx命令による結果を得る。不
正データ抽出手段59は、上記データ混合手段58によ
る混合結果を第1オペランド及び第2オペランドとし、
0を第3オペランドとして、ishx命令を実行する演
算回路20−1(20−3)を用いて不正データを抽出
する。不正データがないときには、0が出力される。
【0141】図41に示されるような演算回路20(2
0−1、20−3)を備え、演算回路20(20−1、
20−3)がcmplt.p命令を実行し、演算回路2
0(20−1、20−3)がshx命令及びishx命
令を実行するRISC計算機は、図52に示されるフロ
ーチャートの処理によりパック10進数の不正データを
除去する。すなわち、パック10進数データが図51に
示されるように、4ワードから構成され、1ワードが3
2ビットであるとする。すると、1ワード毎に処理を行
い、これを4回繰り返す。
【0142】まず、最初の1ワード(例えば、図51の
最上位1ワードhighを取り出し、4ビット毎にcm
plt.p命令を用いて(0x99999999)と比
較する(S135)。つまり、4ビット毎に比較を行う
から、図53に示されるように、レジスタrs1内の比
較対象の8桁のデータと、レジスタrs2内の8桁の9
とが比較され、9より大きいとき(つまり、0xa、0
xb、0xc、0xd、0xe、0xfの不正データで
あるとき)には1が、また、9以下であるときには0
が、レジスタrd1の下位8ビットにセットされる。図
52の例では、8桁のデータが「14636a45」で
あり、第6桁目のaが不正データであるから、レジスタ
rd1の内容がX=00・・・00000100とな
る。
【0143】次に、上記パック10進数の最上位ワード
に対し、shx命令を用いて8桁の0と完全シャッフル
をとり、このとき、上記で得たレジスタrd1の下位8
ビットに基づき、対の2データの前後配置関係を決定す
る(S136)。つまり、図54に示されるように、レ
ジスタrs1のデータ(図53のレジスタrs1のデー
タと同一)とレジスタrs2の8桁の0とが交互に配置
されるよう対にし、対とされた原データ(レジスタrs
1のデータの4ビット毎)と0との前後配置関係をレジ
スタrs2の下位8ビット(図53のレジスタrd1の
下位8ビット)に基づき決定する。図52の例では、8
桁のデータが「14636a45」であり、先のレジス
タrd1のデータがX=00・・・00000100で
あるから、図52のステップS136内に示されるよう
に、X=1である最下位から3つ目に対応する対(a,
0)に関し、その前後順が(0,a)に逆転されて配置
され、その他の対は0が後に配置される。
【0144】次に、上記shx命令の結果得られた16
桁の数値列をishx命令を用いて8桁ずつの2データ
に分ける(S137)。つまり、図55に示されるよう
に、レジスタrs3、rs1のデータ(shx命令によ
り得られた16桁のデータ)に対して、1桁おきに8桁
のデータを取り出してレジスタrd2にセットし、残り
の8桁をレジスタrd1にセットする。これは、第3オ
ペランドにはレジスタrs2(図55)に示されている
ように、下位8ビットに0がセットされているためであ
る。図52の例では、ステップS136において、X=
1である最下位から3つ目に対応する対(a,0)に関
し、その前後順が(0,a)に逆転されて配置されたた
め、レジスタrd2には元のaの位置に0がセットさ
れ、レジスタrd1の下位から桁目に不正データである
aがセットされる。不正データでなければ、原データが
レジスタrd2に戻り、レジスタrd1に0がセットさ
れる。つまり、1ワード内に存在した不正データaがレ
ジスタrd1に抽出され、除去されて出力される。
【0145】以上の処理を4回繰り返したときのフロー
チャートに対するニーモニック表記の命令コード列を図
56に示す。この命令コード列では、最初にレジスタQ
に9(0x99999999)をセットし、以降、枠に
て囲って示すように、最上位の1ワードhighの処
理、次の1ワードmidhの処理、更に次1ワードmi
dlの処理、最後に最下位の1ワードlowの処理を行
うことが示されている。このような処理は、図41の演
算回路20−1(または、20−3)のみを用いて、繰
り返し処理により実行可能である。このようにしても、
分岐が無いために処理が高速化され、従来に比べて効率
良く、パック10進数の不正データを除去できる。
【0146】上記図41の構成のRISC計算機によ
り、図56に示される命令コード列の処理を並列実行さ
せる場合の命令コード列を図57に示す。上記図56の
例では1つの演算回路(例えば、20−1)が、cmp
lt.p命令を1サイクルに1命令実行して4回繰り返
すようにしたが、この図57の例では、cmplt.p
命令を1サイクルに複数命令実行する。つまり、それぞ
れ演算回路20−1、2−2、20−3、2−4が、第
2サイクルにおいて並列的にcmplt.p命令を実行
している。これにより、図56の構成では、13サイク
ル必要であったのに対し、本実施例では6サイクルで済
むようになっており、処理の高速化が図られている。
【0147】上記図41の演算回路20−1、20−3
は、2つのジェネラルレジスタで指定された倍語データ
を、ジェネラルレジスタまたは即値で指定された数だけ
左に論理シフトし、この結果空いた下位ビットに0を挿
入する倍語・左論理シフト手段を備える。また、演算回
路20−1、20−3は、2つのジェネラルレジスタで
指定された倍語データを、ジェネラルレジスタまたは即
値で指定された数だけ右に論理シフトし、この結果空い
た下位ビットに0を挿入する倍語・右論理シフト手段を
備える。更に、演算回路20−1、20−3は、2つの
ジェネラルレジスタで指定された倍語データを、ジェネ
ラルレジスタまたは即値で指定された数だけ右に算術シ
フトし、この結果空いた下位ビットに符号ビットを挿入
する倍語・右算術シフト手段を備える。
【0148】別言すれば、上記演算回路20−1、20
−3は、2つのジェネラルレジスタで指定された倍語デ
ータを、ジェネラルレジスタまたは即値で指定された数
だけ左に論理シフトし、この結果空いた下位ビットに0
を挿入する倍語・左論理シフトに係る命令、即ち、sl
l.l命令を実行する。また、演算回路20−1、20
−3は、2つのジェネラルレジスタで指定された倍語デ
ータを、ジェネラルレジスタまたは即値で指定された数
だけ右に論理シフトし、この結果空いた下位ビットに0
を挿入する倍語・右論理シフトに係る命令、即ち、sr
l.l命令を実行する。更に、演算回路20−1、20
−3は、2つのジェネラルレジスタで指定された倍語デ
ータを、ジェネラルレジスタまたは即値で指定された数
だけ右に算術シフトし、この結果空いた下位ビットに符
号ビットを挿入する倍語・右算術シフトに係る命令、即
ち、sra.l命令を実行する。
【0149】sll.l命令は、図58の121に示さ
れるように、左論理シフトの対象が格納されている2つ
のレジスタ(%rs3)、(%rs1)と、シフトする
ビット数が格納されたジェネラルレジスタ(%rs2)
と、結果を書き込む2つのディスティネーションレジス
タ(%rd2)、(%rd1)とを指定して記述され
る。または、図58の122に示されるように、左論理
シフトの対象が格納されている2つのレジスタ(%rs
3)、(%rs1)と、シフトするビット数の即値(例
えば、6)を示す(%i6)と、結果を書き込む2つの
ディスティネーションレジスタ(%rd2)、(%rd
1)とを指定して記述することも可能である。
【0150】上記表記121の右には、2つのジェネラ
ルレジスタ(rs3)、(rs1)で指定された2ワー
ドのデータを、ジェネラルレジスタ(rs2)で指定さ
れるビット数だけ左シフトし、これをディスティネーシ
ョンレジスタ(rd2)、(rd1)に書き込むことを
示す表記が対応付けられている。また、表記122の右
には、2つのジェネラルレジスタ(rs3)、(rs
1)で指定された2ワードのデータを、即値(例えば、
i6)の数6だけ左シフトし、これをディスティネーシ
ョンレジスタ(rd2)、(rd1)に書き込むことを
示す表記が対応付けられている。なお、シフトの結果、
空きとなった下位ビットには、シフトしたビット数に応
じて0が挿入され、また、上位側においてシフトアウト
されたシフトビット数に対応するビットは失われる。
【0151】srl.l命令は、図59の123に示さ
れるように、右論理シフトの対象が格納されている2つ
のレジスタ(%rs3)、(%rs1)と、シフトする
ビット数が格納されたジェネラルレジスタ(%rs2)
と、結果を書き込む2つのディスティネーションレジス
タ(%rd2)、(%rd1)とを指定して記述され
る。または、図59の124に示されるように、右論理
シフトの対象が格納されている2つのレジスタ(%rs
3)、(%rs1)と、シフトするビット数の即値(例
えば、6)を示す(%i6)と、結果を書き込む2つの
ディスティネーションレジスタ(%rd2)、(%rd
1)とを指定して記述することも可能である。
【0152】上記表記123の右には、2つのジェネラ
ルレジスタ(rs3)、(rs1)で指定された2ワー
ドのデータを、ジェネラルレジスタ(rs2)で指定さ
れるビット数だけ右シフトし、これをディスティネーシ
ョンレジスタ(rd2)、(rd1)に書き込むことを
示す表記が対応付けられている。また、表記124の右
には、2つのジェネラルレジスタ(rs3)、(rs
1)で指定された2ワードのデータを、即値(例えば、
i6)の数6だけ右シフトし、これをディスティネーシ
ョンレジスタ(rd2)、(rd1)に書き込むことを
示す表記が対応付けられている。なお、シフトの結果、
空きとなった上位ビットには、シフトしたビット数に応
じて0が挿入され、また、下位においてシフトアウトさ
れたシフトビット数に対応するビットは失われる。
【0153】sra.l命令は、図60の125に示さ
れるように、右論理シフトの対象が格納されている2つ
のレジスタ(%rs3)、(%rs1)と、シフトする
ビット数が格納されたジェネラルレジスタ(%rs2)
と、結果を書き込む2つのディスティネーションレジス
タ(%rd2)、(%rd1)とを指定して記述され
る。または、図60の126に示されるように、右論理
シフトの対象が格納されている2つのレジスタ(%rs
3)、(%rs1)と、シフトするビット数の即値(例
えば、6)を示す(%i6)と、結果を書き込む2つの
ディスティネーションレジスタ(%rd2)、(%rd
1)とを指定して記述することも可能である。
【0154】上記表記125の右には、2つのジェネラ
ルレジスタ(rs3)、(rs1)で指定された2ワー
ドのデータを、ジェネラルレジスタ(rs2)で指定さ
れるビット数だけ右シフトし、これをディスティネーシ
ョンレジスタ(rd2)、(rd1)に書き込むことを
示す表記が対応付けられている。また、表記126の右
には、2つのジェネラルレジスタ(rs3)、(rs
1)で指定された2ワードのデータを、即値(例えば、
i6)の数6だけ右シフトし、これをディスティネーシ
ョンレジスタ(rd2)、(rd1)に書き込むことを
示す表記が対応付けられている。なお、シフトの結果、
空きとなった上位ビットには、シフトしたビット数に応
じて符号ビットsが挿入され、また、下位においてシフ
トアウトされたシフトビット数に対応するビットは失わ
れる。
【0155】以上のsll.l命令、srl.l命令、
sra.l命令を実行するために、演算回路20−1、
20−3は、従来有している1ワード長に対する論理シ
フト、算術シフトのハードウェアを倍語に応じて拡張し
たハードウェア、例えば、SN74198を2段接続し
た構成等を有する。これにより、本実施の形態に係るR
ISC計算機は、1命令によって倍語の左論理シフト、
右論理シフト、右算術シフトを行うことができる。
【0156】上記演算回路20−1、20−3を備えた
RISC計算機は、パック10進数データをメモリから
レジスタへワード単位に適切に転送する。従来のRIS
C計算機において、メモリからパック10進数データを
レジスタへ転送する場合には、1バイト単位でロードを
行っていた。この手法によると、1ワードの転送を行う
ためには、数サイクルの処理が必要となり非効率的であ
る。また、VLIW方式を採用したRISC計算機にお
いても、ロード命令は通常1サイクルに1つ発行できる
だけであるから、ロード命令が多いと並列化が妨げられ
るという問題点が生じる。
【0157】この問題点は、本発明の実施の形態に係
る、sll.l命令を実行する演算回路20−1(20
−3)を具備するRISC計算機により解決される。つ
まり、本発明の実施の形態に係るRISC計算機は、図
61に示されるように、ワード境界・境界差検出手段6
1、ワード単位読出手段62、シフト手段63を有す
る。ワード境界・境界差検出手段61は、パック10進
数データが記憶されているメモリ5上の最上位と最下位
のワード境界を検出すると共に、ワード境界と当該パッ
ク10進数データの終端との差を検出する。つまり、パ
ック10進数データは、メモリ5のワード境界とは一致
しない位置から、この例では11バイト記憶されている
ので、メモリ5のワード境界を検出して、このワード境
界から次のワード境界までのワード単位(パック10進
数データ以外を含んで1ワードとなることもある)で読
み出し可能とする。また、パック10進数データの終端
とワード境界(この終端以前のもの)との差(この例で
は、1バイト)を検出する。ワード単位読出手段62
は、上記ワード境界・境界差検出手段61により検出さ
れたワード境界を単位として、上記パック10進数が記
憶されている範囲のワードをレジスタ1−1〜1−4に
読み出す。つまり、メモリ5のワード単位のデータがレ
ジスタ1−1〜1−4にセットされる。シフト手段63
は、上記レジスタ1−0〜1−3に読み出されたデータ
を、上記ワード境界・境界差検出手段61により検出さ
れた差のデータに応じて、sll.l命令を実行する演
算回路20−1(20−3)によりシフトする。つま
り、境界差は1バイトであるから、sll.l命令によ
って1バイトシフトを行い、終端がレジスタ1−3の終
端に合致させられてレジスタ1−1〜1−3にパック1
0進数データが格納される。なお、上記により、読み出
すべきパック10進数データ以外のデータがレジスタ1
−1に残ることもあるが、このデータは削除する。
【0158】上記RISC計算機による処理をニーモニ
ック表記による命令コード列として示すと、図62のよ
うになる。この命令コード列では、sはメモリ5から読
み出すべきパック10進数データのサイズ(長さ)、つ
まり「引数サイズ」であり、pは上記パック10進数デ
ータの先頭アドレス、つまり「引数アドレス」であり、
実際の例では、図63のS141に示されるようになっ
ている。上記図62の命令コード列による処理は、図6
3〜図68のフローチャートに対応しているので、これ
らを対応付けながら処理を説明する。なお、図63〜図
68のフローチャートは連続している。
【0159】図62の命令コード列のブロックB1は、
パック10進数データが記憶されているメモリ5上の最
上位と最下位のワード境界を検出すると共に、ワード境
界と当該パック10進数データの終端との差を検出する
処理である。これを詳述すると、最初のadd命令は、
図63のステップS141に対応しており、引数アドレ
スpと引数サイズsを加えてパック10進数データの終
端アドレスQを求める。次のand命令は、ステップS
142に対応しており、上記終端アドレスQと3(3バ
イトに対応する値)との論理積を求めて、終端アドレス
Qの下位2ビットが1ワードの内の何バイト目を指して
いるか検出し、パック10進数データの終端とワード境
界との差Hを求める。ここでは、図63に明らかなよう
に、Hは1(バイト)となる。次のsub命令は、ステ
ップ143に対応しており、終端アドレスQから上記差
Hを引き、ワード境界とQとを一致させる。次のand
命令は、ステップ144に対応しており、上記先頭アド
レスpと3(3バイトに対応する値)との論理積を求め
て、先頭アドレスpの下位2ビットが1ワードの内の何
バイト目を指しているか検出し、パック10進数データ
の先頭とワード境界との差Iを求める。ここでは、差I
は2(バイト)として求まる。
【0160】次のsub命令は、図64のステップS1
45に対応しており、先頭アドレスpから上記差Iを引
き、ワード境界とpとを一致させる。次に記載のsll
命令は、ステップS146に対応しており、パック10
進数データの終端とワード境界との差Hを3左シフトし
て8倍し、ビット単位の値に変換する。この結果、Hは
8(ビット)となる。
【0161】図62の命令コード列のブロックB2、B
3は、パック10進数データが存在するメモリ5におけ
る最下位の1ワードのロード処理である。まず、最初の
tsteq命令は、図64のステップS147に対応し
ており、上記ステップS142において求めた差Hが0
であるか否か検出し、Hが0であれば判断0のture
へ分岐し、Hが0でなければ判断0のfaulへ分岐す
る。そして、次にmov命令によりレジスタw0に0を
セットして初期化する。この初期化処理は、図63〜図
68においては、図63の脚注に示すように、省略して
ある。
【0162】そして、ブロックB3のld命令によっ
て、アドレスQにより最下位の1ワードをメモリ5から
読み出し、レジスタw0へロードする。これは、図64
のステップS148に対応しており、パック10進数デ
ータの最下位部分を含む1ワードW0(ワード境界から
1ワードのデータ)が読み出されてロードされることを
示している。
【0163】次の命令コード列のブロックB4、B5
は、パック10進数データのメモリ5における最下位の
次の1ワードのロード処理である。その最初のsub命
令は、図65のステップS149に対応しており、アド
レスQから4(バイト数に対応)を引いて次の1ワード
を読み出すためのアドレスQ1を得る。次のtstlt
u命令は、図65のステップS150に対応しており、
上記で求めたアドレスQ1が、パック10進数データの
先頭アドレスが含まれるメモリ5上の1ワードエリアの
ワード境界アドレスpを越えた(Q1>p)か否かを検
出し、Q1>pであれば「判断1」のtureへ分岐
し、Q1>pでなければ「判断1」のfaulへ分岐す
る。そして、次にmov命令によりレジスタw1に0を
セットして初期化する。この初期化処理は、図63〜図
68においては、図63の脚注に示すように、省略して
ある。更に、ブロックB5のld命令によって、アドレ
スQ1により最下位の次の1ワードをメモリ5から読み
出し、レジスタw1へロードする。これは、図65のス
テップS151に対応しており、パック10進数データ
の最下位部分を含む1ワードW0(ワード境界から1ワ
ードのデータ)の次の1ワードW1が読み出されてロー
ドされることを示している。
【0164】次の命令コード列のブロックB6は、上記
で読み出してあるレジスタw0、w1内のデータW0、
W1を、上記で求めた差H(8ビット)だけ左シフトし
て、レジスタlowにセットする処理を示し、図65の
S152に対応している。上記ブロックB6の処理の結
果、ステップS152に示されるように、レジスタlo
wには、斜線により示される4バイトのデータ(パック
10進数データの終端から4バイトのデータ)がセット
されることになる。
【0165】次の命令コード列のブロックB7、B8
は、パック10進数データが存在するメモリ5における
最下位から2番目の1ワードのロード処理である。その
最初のsub命令は、図66のステップS153に対応
しており、アドレスQから8(バイト数に対応)を引い
て次の1ワード(最下位から2番目の1ワード)を読み
出すためのアドレスQ2を得る。次のtstltu命令
は、図66のステップS154に対応しており、上記で
求めたアドレスQ2がパック10進数の先頭アドレスが
含まれるメモリ5上のワードエリアのワード境界アドレ
スpを越えた(Q2>p)か否かを検出し、Q2>pで
あれば「判断2」のtureへ分岐し、Q2>pでなけ
れば「判断2」のfaulへ分岐する。そして、次にm
ov命令によりレジスタw2に0をセットして初期化す
る。この初期化処理は、図63〜図68においては、図
63の脚注に示すように、省略してある。更に、ブロッ
クB8のld命令によって、アドレスQ2により最下位
から2番目の1ワードをメモリ5から読み出し、レジス
タw2へロードする。これは、図66のステップS15
5に対応しており、パック10進数データの最下位部分
を含む1ワードW0(ワード境界から1ワードのデー
タ)から2番目の1ワードW2が読み出されてロードさ
れることを示している。
【0166】次の命令コード列のブロックB9は、上記
で読み出してあるレジスタw1、w2内のデータW1、
W2を、上記で求めた差H(8ビット)だけ左シフトし
て、レジスタmidlにセットする処理を示し、図66
のS156に対応している。上記ブロックB8の処理の
結果、ステップS156に示されるように、レジスタm
idlには、斜線により示される4バイトのデータ(パ
ック10進数データの終端から2ワード目のデータ、つ
まり、データW1の最上位1バイトとデータW2の下位
3バイトのデータ)がセットされることになる。
【0167】次の命令コード列のブロックB10、B1
1は、パック10進数データが存在するメモリ5におけ
る最下位から3番目の1ワードのロード処理である。そ
の最初のsub命令は、図67のステップS157に対
応しており、アドレスQから12(バイト数に対応)を
引いて次の1ワード(最下位から3番目の1ワード)を
読み出すためのアドレスQ3を得る。次のtstltu
命令は、図67のステップS158に対応しており、上
記で求めたアドレスQ3がパック10進数の先頭アドレ
スが含まれるメモリ5上のワードエリアのワード境界ア
ドレスpを越えた(Q3>p)か否かを検出し、Q3>
pであれば「判断3」のtureへ分岐し、Q3>pで
なければ「判断3」のfaulへ分岐する。そして、次
にmov命令によりレジスタw3に0をセットして初期
化する。この初期化処理は、図63〜図68において
は、図63の脚注に示すように、省略してある。更に、
ブロックB11のld命令によって、アドレスQ3によ
り最下位から3番目の1ワードをメモリ5から読み出
し、レジスタw3へロードする。これは、図67のステ
ップS159に対応しており、パック10進数データの
最下位部分を含む1ワードW0(ワード境界から1ワー
ドのデータ)から3番目の1ワードW3が読み出されて
ロードされることを示している。
【0168】次の命令コード列のブロックB12は、上
記で読み出してあるレジスタw2、w3内のデータW
2、W3を、上記で求めた差H(8ビット)だけ左シフ
トして、レジスタmidhにセットする処理を示し、図
67のS160に対応している。上記ブロックB12の
処理の結果、ステップS160に示されるように、レジ
スタmidhには、斜線により示される4バイトのデー
タ(パック10進数データの終端から3ワード目のデー
タ、つまり、データW2の最上位1バイトとデータW3
の下位3バイトのデータ)がセットされることになる。
【0169】次の命令コード列のブロックB13、B1
4は、パック10進数データが存在するメモリ5におけ
る最上位の1ワードのロード処理である。その最初のs
ub命令は、図68のステップS161に対応してお
り、アドレスQから16(バイト数に対応)を引いて次
の1ワード(最上位の1ワード)を読み出すためのアド
レスQ4を得る。次のtstltu命令は、図68のス
テップS162に対応しており、上記で求めたアドレス
Q4がパック10進数の先頭アドレスが含まれるメモリ
5上のワードエリアのワード境界アドレスpを越えた
(Q4>p)か否かを検出し、Q4>pであれば「判断
4」のtureへ分岐し、Q4>pでなければ「判断
4」のfaulへ分岐する。そして、次にmov命令に
よりレジスタw4に0をセットして初期化する。この初
期化処理は、図63〜図68においては、図63の脚注
に示すように、省略してある。更に、ブロックB14の
ld命令によって、アドレスQ4により最上位の1ワー
ドをメモリ5から読み出し、レジスタw4へロードす
る。これは、図68のステップS163に対応してお
り、最上位の1ワードW4が読み出されてロードされる
ことを示している。
【0170】次の命令コード列のブロックB15は、上
記で読み出してあるレジスタw3、w4内のデータW
3、W4を、上記で求めた差H(8ビット)だけ左シフ
トして、レジスタhighにセットする処理を示し、図
68のS164に対応している。上記ブロックB15の
処理の結果、ステップS164に示されるように、レジ
スタhighには、斜線により示される4バイトのデー
タ(パック10進数データの終端から4ワード目のデー
タ、つまり、データW3の最上位1バイトとデータW4
の下位3バイトのデータ)がセットされることになる。
【0171】以上で図62の命令コード列により記載さ
れている処理はENDとなるが、図63のステップS1
41と図68のステップS165との比較から明らかな
ように、レジスタhighには、先頭から1バイトの余
分なデータがセットされている。そこで、後処理におい
ては、引数サイズsが何ワードと何バイトに対応するか
に基づき、レジスタlowからhighまでの内のどの
範囲を有効とするか求め、上記何バイトの分以外のバイ
ト、この例ではsが11(バイト)であるから、2ワー
ドと3バイトとなり、レジスタhighの上位1バイト
の削除(0との入れ換え)を行う。この入れ換えは、例
えば、上位1バイトが0、下位3バイトが1のデータ
と、レジスタhighのデータのandをとることによ
り可能である。
【0172】このようにして、メモリ5のワード境界に
係わりなく記憶されているパック10進数のデータをレ
ジスタにロードする場合に、ワード単位の読み出しを用
いることができ、バイト単位に読み出しを行う場合に比
べて遥かにロード命令の実行回数を減少させ、処理の高
速化を図ることができる。このような処理は、図41の
演算回路20−1(または、20−3)のみを用いて、
繰り返し処理により実行可能である。つまり、図62の
処理は、34ステップ、分岐数5で実現されることにな
る。
【0173】上記図41の構成のRISC計算機によ
り、図62に示される命令コード列の処理を並列実行さ
せる場合の命令コード列を図69に示す。上記図62の
例では1つの演算回路(例えば、20−1)が、各命令
を繰り返し実行するようにしたが、この図69の例で
は、演算回路20−1、2−2、20−3、2−4が、
各サイクルにおいて図示のld命令によるワード単位の
読み出しと、sll.l命令等の複数命令を並列的に実
行している。これにより、図62の構成では、34サイ
クル必要であったのに対し、本実施例では10サイク
ル、分岐数0で済むようになっており、処理の高速化が
図られている。
【0174】上記図41の演算回路20−1、20−3
は、2つのジェネラルレジスタで指定された固定小数点
1ワードデータを、第3のジェネラルレジスタで指定さ
れたキャリーと共に加算し、加算結果を第1のディステ
ィネーションレジスタに格納し、加算結果のキャリーを
第2のディスティネーションレジスタに格納する加算手
段を備えている。また、演算回路20−1、20−3
は、第1のジェネラルレジスタで指定された固定小数点
1ワードデータから第2のジェネラルレジスタで指定さ
れた固定小数点1ワードデータを減算すると共に、第3
のジェネラルレジスタで指定されたキャリーの反転値を
減算し、減算結果を第1のディスティネーションレジス
タに格納し、減算結果のキャリーの反転値を第2のディ
スティネーションレジスタに格納する減算手段を備えて
いる。更に、演算回路20−1、20−3は、2つのジ
ェネラルレジスタで指定されたパック10進数1ワード
データを、第3のジェネラルレジスタで指定されたキャ
リーと共に加算し、加算結果を第1のディスティネーシ
ョンレジスタに格納し、加算結果のキャリーを第2のデ
ィスティネーションレジスタに格納する加算手段を備え
ている。また、演算回路20−1、20−3は、第1の
ジェネラルレジスタで指定されたパック10進数1ワー
ドデータから第2のジェネラルレジスタで指定されたパ
ック10進数1ワードデータを減算すると共に、第3の
ジェネラルレジスタで指定されたキャリーの反転値を減
算し、減算結果が負数の場合には10の補数として、減
算結果を第1のディスティネーションレジスタに格納
し、減算結果のキャリーの反転値を第2のディスティネ
ーションレジスタに格納する減算手段を備えている。
【0175】別言すれば、上記演算回路20−1、20
−3は、2つのジェネラルレジスタで指定された固定小
数点1ワードデータを、第3のジェネラルレジスタで指
定されたキャリーと共に加算し、加算結果を第1のディ
スティネーションレジスタに格納し、加算結果のキャリ
ーを第2のディスティネーションレジスタに格納するa
ddc命令を実行する。また、上記演算回路20−1、
20−3は、第1のジェネラルレジスタで指定された固
定小数点1ワードデータから第2のジェネラルレジスタ
で指定された固定小数点1ワードデータを減算すると共
に、第3のジェネラルレジスタで指定されたキャリーの
反転値を減算し、減算結果を第1のディスティネーショ
ンレジスタに格納し、減算結果のキャリーの反転値を第
2のディスティネーションレジスタに格納するsubc
命令を実行する。更に、上記演算回路20−1、20−
3は、2つのジェネラルレジスタで指定されたパック1
0進数1ワードデータを、第3のジェネラルレジスタで
指定されたキャリーと共に加算し、加算結果を第1のデ
ィスティネーションレジスタに格納し、加算結果のキャ
リーを第2のディスティネーションレジスタに格納する
addc.p命令を実行する。また、上記演算回路20
−1、20−3は、第1のジェネラルレジスタで指定さ
れたパック10進数1ワードデータから第2のジェネラ
ルレジスタで指定されたパック10進数1ワードデータ
を減算すると共に、第3のジェネラルレジスタで指定さ
れたキャリーの反転値を減算し、減算結果が負数の場合
には10の補数として、減算結果を第1のディスティネ
ーションレジスタに格納し、減算結果のキャリーの反転
値を第2のディスティネーションレジスタに格納するs
ubc.p命令を実行する。
【0176】addc命令は、図70の128に示され
るように、加算する対象が格納されている2つのレジス
タ(%rs1)、(%rs2)と、加算すべきキャリー
が格納されているレジスタ(%rs3)と、結果を書き
込むディスティネーションレジスタ(%rd1)と、加
算結果のキャリーを書き込むディスティネーションレジ
スタ(%rd2)とを指定して記述される。但し、加算
対象であるキャリーは、ジェネラルレジスタrs3の最
下位ビットであるビット31に格納されており、ビット
0〜30は無視される。また、加算結果であるキャリー
は、ディスティネーションレジスタrd2の最下位ビッ
トであるビット31に格納され、ビット0〜30は使用
されない。上記記述128の右には、コロンを挟んで、
addc命令の内容が数式と記号で疑似的に表現されて
いる。
【0177】subc命令は、図71の129に示され
るように、引かれる対象が格納されている第1のレジス
タ(%rs1)、引く数値が格納されている第2のレジ
スタ(%rs2)と、引くべきキャリーが格納されてい
るレジスタ(%rs3)と、結果を書き込むディスティ
ネーションレジスタ(%rd1)と、減算結果のキャリ
ーの反転値を書き込むディスティネーションレジスタ
(%rd2)とを指定して記述される。但し、引くべき
キャリーは、ジェネラルレジスタrs3の最下位ビット
であるビット31に格納されており、ビット0〜30は
使用されない。また、減算結果に係るキャリーは、ディ
スティネーションレジスタrd2の最下位ビットである
ビット31に格納され、ビット0〜30は使用されな
い。上記記述129の右には、コロンを挟んで、sub
c命令の内容が数式と記号で疑似的に表現されている。
【0178】上記addc命令に対応して、演算回路2
0−1、20−3には、図74に示されるような加算手
段が備えられている。つまり、32個のフルアダー60
−1〜60−32から構成され、a31〜a0 にはレジス
タrs1のデータが、b31〜b0 にはレジスタrs2の
データが、CA にはレジスタrs3のデータ(ビット3
1)が、それぞれセットされる。また、d31〜d0 には
レジスタrd1へ書き込むべきデータが出力され、CB
にはレジスタrd2のビット31に書き込まれるデータ
が出力される。各フルアダーにおける桁上がりは、上位
のフルアダーのキャリー入力端子に与えられる。また、
上記subc命令に対応して、演算回路20−1、20
−3に備えられる減算手段は、上記図74の構成におい
て、フルアダーを全減算器で置き換えた構成を有する。
【0179】更に、addc.p命令は、図72の13
0に示されるように、加算する対象が格納されている2
つのレジスタ(%rs1)、(%rs2)と、加算すべ
きキャリーが格納されているレジスタ(%rs3)と、
結果を書き込むディスティネーションレジスタ(%rd
1)と、加算結果のキャリーを書き込むディスティネー
ションレジスタ(%rd2)とを指定して記述される。
加算はパック10進数毎、つまり、4ビット毎に行わ
れ、4ビット毎の結果がディスティネーションレジスタ
(%rd1)に書き込まれる。但し、加算対象であるキ
ャリーは、ジェネラルレジスタrs3の最下位ビットで
あるビット31に格納されており、ビット0〜30は無
視される。また、加算結果であるキャリーは、ディステ
ィネーションレジスタrd2の最下位ビットであるビッ
ト31に格納され、ビット0〜30は使用されない。上
記記述130の右には、コロンを挟んで、addc.p
命令の内容が数式と記号で疑似的に表現されている。
【0180】subc.p命令は、図73の131に示
されるように、引かれる対象が格納されている第1のレ
ジスタ(%rs1)、引く数値が格納されている第2の
レジスタ(%rs2)と、引くべきキャリーが格納され
ているレジスタ(%rs3)と、結果を書き込むディス
ティネーションレジスタ(%rd1)と、減算結果のキ
ャリーの反転値を書き込むディスティネーションレジス
タ(%rd2)とを指定して記述される。減算はパック
10進数毎、つまり、4ビット毎に行われ、4ビット毎
の結果がディスティネーションレジスタ(%rd1)に
書き込まれる。但し、引くべきキャリーは、ジェネラル
レジスタrs3の最下位ビットであるビット31に格納
されており、ビット0〜30は使用されない。また、減
算結果に係るキャリーは、ディスティネーションレジス
タrd2の最下位ビットであるビット31に格納され、
ビット0〜30は使用されない。上記記述131の右に
は、コロンを挟んで、subc.p命令の内容が数式と
記号で疑似的に表現されている。
【0181】上記addc.p命令に対応して、演算回
路20−1、20−3には、図75に示されるような加
算手段が備えられている。つまり、それぞれパック10
進数を加算する8個のパック10進数加算器61−1〜
61−8と、このパック10進数加算器61−1〜61
−8の出力について、必要に応じてキャリーと当該桁の
結果とに別けて出力する補正・キャリー出力回路62−
1〜61−8とから構成される。パック10進数加算器
61−1〜61−8には、入力端子A7 〜A0、B7
0 が備えられており、それぞれ4ビットのパック10
進数データが入力される。但し、入力端子A7 〜A0
7 〜B0 へ入力されるデータがパック10進数の不正
データ(16進のA〜F)であっても加算を行うので、
係る場合の演算結果は保証されず、不正データが出力さ
れることがあり得る。また、補正・キャリー出力回路6
2−1〜61−8は、加算の結果が16進のA〜Fのと
きに、キャリーを出力すると共に結果からキャリー分を
引くを補正して出力とする。また、結果が負数のときに
は、これを10の補数に変換して出力する。A31〜A0
にはレジスタrs1のデータが、B31〜B0 にはレジス
タrs2のデータが、CA にはレジスタrs3のデータ
(ビット31)が、それぞれセットされる。また、D31
〜D0 にはレジスタrd1へ書き込むべきデータが出力
され、CB にはレジスタrd2のビット31に書き込ま
れるデータが出力される。各補正・キャリー出力回路6
2−1〜61−7における桁上がりは、上位の補正・キ
ャリー出力回路のキャリー入力端子に与えられる。ま
た、上記subc.p命令に対応して、演算回路20−
1、20−3に備えられる減算手段は、上記図75の構
成において、パック10進数加算器61−1〜61−8
をそれぞれパック10進数減算器で置き換えた構成を有
する。
【0182】上記演算回路20−1、20−3を備えた
RISC計算機は、複数ワードのパック10進数データ
について加算、減算を行うRISC計算機として機能す
る。従来のRISC計算機においては、例えば、図83
に示されるような4ワードからなるパック10進数デー
タの加算、減算を実行する場合には、図76〜図78に
示されるフローチャートのプログラムにより1バイトず
つ処理を行っていた。また、上記図76〜図78の処理
は、図79〜図81に示されるC言語による記述に対応
しているので、それぞれに同一符号を付して説明する。
【0183】図79のブロックB161内には、各レジ
スタ等の定義が記述されている。そして、ブロックB1
62内では、前処理においてデータ1とデータ2との符
号ビット(最下位の4ビット)を削除すると共に、レジ
スタi、jにデータ1、データ2の大きさ(長さ)から
1を引いたデータをセットし、処理の残バイト数を検出
可能とし、また、未だキャリーが無いことをレジスタca
rry に0をセットして示す。図83のデータ1、2につ
いては大きさが16バイトであるから、i=15、j=
15となる。
【0184】次に、データ1とデータ2との符号が一致
しているか否かを検出する(S165)。一致すると、
レジスタiの値が1より大であるか否かを検出してデー
タ1に計算すべきバイトが残っているか否かを調べる
(S166)。ここでは、i=15よりyesへ分岐
し、データ1の最下位バイト(EA1[15])と0xf0との論理
積により最下位バイトの上位4ビットを取り出し、4右
シフトして最下位4ビットの位置に移動し、これをレジ
スタEA1hにセットすると共に、データ1の最下位バイト
(EA1[15])と0x0fとの論理積により最下位バイトの下位
4ビットを取り出し、これをレジスタEA1lにセットする
(S167)。ステップS168は、ステップ166で
noへ分岐した場合の処理であり、データ1に計算すべ
きデータがない場合であるから、レジスタEA1h、レジス
タEA1lにそれぞれ0をセットする。ステップS169〜
S171の処理は、データ2についての処理であり、デ
ータ1についての処理であるステップS166〜S16
8と同様な処理が行われる。
【0185】次に、下位1桁の加算を行い(S17
2)、結果にキャリーが生じたか否かをレジスタclが1
0を越えていないかを検出することにより調べる(S1
73)。キャリーがなければ、上位1桁の加算を行い
(S174)、キャリーがあると下位1桁の加算結果か
ら10を引くと共に、上位1桁の加算に桁上がりの1を
加えて上位1桁の加算結果を得る(S175)。更に、
上位1桁の加算結果にキャリーが生じたか否かをレジス
タchが10を越えていないかを検出することにより調べ
る(S176)。ここで、キャリーがなければ、レジス
タcarry に0をセットする(S177)、一方、キャリ
ーがあると上位1桁の加算結果から10を引くと共に、
上位1桁の加算結果に桁上がりがあったことをレジスタ
carry に1をセットして示す(S178)。次に、レジ
スタchのデータを4左シフトし、レジスタclのデータと
論理和を作成することにより上位1桁と下位1桁とを1
バイトにし(S179)、次の1バイトの処理へ移るた
め、レジスタi、jから更に1をそれぞれ引き、レジス
タi、jの内容が0より大か否かに応じてステップS1
66からの処理を繰り返すか、ステップS195の後処
理へ進むかを決定する(S180)。ここで、図83の
データ1、データ2については、16バイトゆえに16
回の繰り返し処理が行われる。これにより、1ワード3
2ビットで4ワード分のパック10進数データの絶対値
の加算が行われる。
【0186】一方、ステップS165において、データ
1とデータ2の符号が不一致が検出された場合には、そ
れぞれの絶対値を調べて、大きい方のデータをレジスタ
EA1にセットする(S181)。つまり、レジスタi、
jの値を基に、これが等しいときには、データ1、2の
最上位バイトから取り出しそれらが等しい場合には、レ
ジスタk の値を0からインクリメントして順次比較を行
い、データ2の或る1バイトがデータ1の対応する1バ
イトより大きい場合には、work=EA1,EA1=EA2,EA2=work
のレジスタ操作によりデータ1とデータ2の入れ換えを
行う。また、レジスタi、jの値を基に、データ2のデ
ータ大きさjがデータ1の大きさiより大であるときに
は、上記と同様のレジスタ操作により、データ1とデー
タ2の入れ換えを行う。なお、データ1の方が大である
と、入れ換えは行われない。
【0187】次に、データ1の最下位バイト(EA1[15])
と0xf0との論理積により最下位バイトの上位4ビットを
取り出し、4右シフトして最下位4ビットの位置に移動
し、これをレジスタEA1hにセットすると共に、データ1
の最下位バイト(EA1[15])と0x0fとの論理積により最下
位バイトの下位4ビットを取り出し、これをレジスタEA
1lにセットする(S182)。そして、レジスタjの値
が1より大であるか否かを検出してデータ2に計算すべ
きバイトが残っているか否かを調べる(S183)。こ
こでは、j=15よりyesへ分岐し、データ2の最下
位バイト(EA2[15])と0xf0との論理積により最下位バイ
トの上位4ビットを取り出し、4右シフトして最下位4
ビットの位置に移動し、これをレジスタEA2hにセットす
ると共に、データ1の最下位バイト(EA2[15])と0x0fと
の論理積により最下位バイトの下位4ビットを取り出
し、これをレジスタEA2lにセットする(S184)。ス
テップS185は、ステップ183でnoへ分岐した場
合の処理であり、データ2に計算すべきデータがない場
合であるから、レジスタEA2h、レジスタEA2lにそれぞれ
0をセットする。
【0188】次に、下位1桁の減算を行い(S18
6)、結果にキャリーが生じたか否かをレジスタclが0
より大かを検出することにより調べる(S187)。キ
ャリーがなければ、上位1桁の減算を行い(S18
8)、キャリーがあると下位1桁の減算結果に10を加
えると共に、上位1桁の減算において桁下がりの1を引
いて上位1桁の減算結果を得る(S189)。更に、上
位1桁の減算結果にキャリーが生じたか否かをレジスタ
chが0より大かを検出することにより調べる(S19
0)。ここで、キャリーがなければ、レジスタcarry に
0をセットする(S191)、一方、キャリーがあると
上位1桁の減算結果に10を加える共に、上位1桁の減
算結果に桁下がりがあったことをレジスタcarry に1を
セットして示す(S192)。次に、レジスタchのデー
タを4左シフトし、レジスタclのデータと論理和を作成
することにより上位1桁と下位1桁とを1バイトにし
(S193)、次の1バイトの処理へ移るため、レジス
タi、jから更に1をそれぞれ引き、レジスタiの内容
が0より大か否かに応じてステップS182からの処理
を繰り返すか、ステップS195の後処理へ進むかを決
定する(S194)。ここで、図83のデータ1、デー
タ2については、16バイトゆえに16回の繰り返し処
理が行われる。これにより、1ワード32ビットで4ワ
ード分のパック10進数データの絶対値の減算が行われ
る。
【0189】上記の絶対値の演算結果を得て、後処理に
ついで符号処理を行うことにより、加算が実行される。
なお、パック10進数の減算の場合には、データ1とデ
ータ2の符号が一致のときに絶対値の減算を行い、符号
が不一致のときに絶対値の加算を行う。このように、従
来のRISC計算機による複数ワードのパック10進数
データの加算または減算は、バイト単位に処理が繰り返
されていたので、最終的な演算結果が得られるまでに処
理回数が多くなるという問題点がある。また、RISC
計算機では、レジスタ長が32ビット、64ビット等で
あり、8ビットずつ処理するのでは、レジスタに空きが
生じ効率が悪く、また、並列処理の場合にも効率が上が
らないという問題点があった。
【0190】本発明に係るaddc.p命令及びsub
c.p命令を実行する演算回路20−1(20−3)を
有するRISC計算機により上記問題点が解決される。
つまり、本発明の実施の形態に係るRISC計算機は、
図82に示されるように、一致不一致検出手段65、加
算手段66、減算手段67を有する。一致不一致検出手
段65は、複数ワードのパック10進数からなる第1の
データと複数ワードのパック10進数からなる第2のデ
ータのそれぞれの符号の一致不一致を検出する。パック
10進数データの加算を行う場合には、上記検出の結
果、符号が一致していることが検出された場合(実線の
矢印により示される。)に、また、パック10進数デー
タの減算を行う場合には、上記検出の結果、符号が不一
致であることが検出された場合(破線の矢印により示さ
れる。)に、それぞれ、加算手段66は、addc.p
命令を実行する演算回路20−1(20−3)を用いて
上記第1のデータと第2のデータとをワード単位に加算
する。このとき、加算の各段階で生じたキャリーを次段
階の加算にて用いて複数ワードのパック10進数の加算
を行う。つまり、図82のワード1とワード2との加減
算の場合には、LOW1とLOW2、MIDL1とMI
DL2、MIDH1とMIDH2、HIGH1とHIG
H2のそれぞれの1ワード毎のキャリーを含む加算が行
われるだけで、結果を得ることができる。パック10進
数データの加算を行う場合には、上記検出の結果、符号
が不一致であることが検出された場合(実線の矢印によ
り示される。)に、また、パック10進数データの減算
を行う場合には、上記検出の結果、符号が一致している
ことが検出された場合(実線の矢印により示される。)
に、それぞれ、減算手段67は、subc.p命令を実
行する演算回路20−1(20−3)を用いて上記第1
のデータと第2のデータとをワード単位に減算する。こ
のとき、減算の各段階で生じたキャリーを次段階の減算
にて用いて複数ワードのパック10進数の減算を行う。
つまり、図82のワード1とワード2との減算の場合に
は、LOW1とLOW2、MIDL1とMIDL2、M
IDH1とMIDH2、HIGH1とHIGH2のそれ
ぞれの1ワード毎のキャリーを含む減算が行われるだけ
で、結果を得ることができる。上記のパック10進数の
加減算の結果に対しては、符号処理により適切な符号が
与えられる。
【0191】図41に示されるような演算回路20(2
0−1、20−3)を備え、演算回路20(20−1、
20−3)がaddc.p命令及びsub.p命令を実
行するRISC計算機は、図84に示されるフローチャ
ートの処理により、図83に示される4ワードのパック
10進数データ1、2の減算を行う。すなわち、パック
10進数データが図83に示されるように、4ワードか
ら構成され、1ワードが32ビットであるとする。する
と、1ワード毎に減算処理を行い、これを4回繰り返
す。この処理は、図85に示されるニーモニック表記と
対応しているので、フローチャートと共に参照して説明
を行う。
【0192】まず、前処理において、データ1とデータ
2の符号部を削除しておく(S201)。つまり、図8
3に示されるように、符号部は最下位ワードの下位4ビ
ットにあるから、これを削除(0との置き換え)を行っ
ておく。次に、データ1の符号をレジスタw11にセッ
トし(S202)、データ2の符号をレジスタw12に
セットする(S203)。つまり、図85に示されるよ
うに、レジスタLOW1にセットされた最下位ワードと
下位4ビットのみが1の0xfとの論理積を作成してレ
ジスタw11にセットし、レジスタLOW2にセットさ
れた最下位ワードと下位4ビットのみが1の0xfとの
論理積を作成してレジスタw12にセットする。次のm
ov命令は、図84では、注にあるように、レジスタca
rry に0をセットすることに対応している。
【0193】次に、レジスタw11とレジスタw12と
の内容が一致するかを検出して、データ1とデータ2の
符号が同一ないかを調べる(S204)。ここで、同一
でなければ、判断4のtureへ分岐し加算処理とな
る。つまり、addc.p命令によりレジスタLOW
1、LOW2にそれぞれセットされた最下位のワードと
レジスタcarry の内容を加えてレジスタLOW1に結果
を、キャリーをレジスタcarry にセットする(S20
5)。更に、addc.p命令によりレジスタMIDL
1、MIDL2にそれぞれセットされた最下位から2番
目のワードとレジスタcarry の内容を加えてレジスタM
IDL1に結果を、キャリーをレジスタcarryにセット
する(S206)。更に、addc.p命令によりレジ
スタMIDH1、MIDH2にそれぞれセットされた最
下位から3番目のワードとレジスタcarry の内容を加え
てレジスタMIDH1に結果を、キャリーをレジスタca
rry にセットする(S207)。次に、addc.p命
令によりレジスタHIGH1、HIGH2にそれぞれセ
ットされた最上位のワードとレジスタcarry の内容を加
えてレジスタHIGH1に結果を、キャリーをレジスタ
carry にセットする(S208)。そして、符号処理
(S209)へと進む。
【0194】一方、符号が一致すると、判断4のfau
lへ分岐し、減算処理となる。つまり、subc.p命
令によりレジスタLOW1にセットされた最下位のワー
ドからレジスタLOW2にセットされた最下位のワード
とレジスタcarry の内容を引いてレジスタLOW1に結
果を、キャリーをレジスタcarry にセットする(S21
0)。更に、レジスタMIDL1にセットされた最下位
から2番目のワードからレジスタMIDL2にセットさ
れた最下位から2番目のワードとレジスタcarry の内容
を引いてレジスタMIDL1に結果を、キャリーをレジ
スタcarry にセットする(S211)。更に、レジスタ
MIDH1にセットされた最下位から3番目のワードか
らレジスタMIDH2にセットされた最下位から3番目
のワードとレジスタcarry の内容を引いてレジスタMI
DH1に結果を、キャリーをレジスタcarry にセットす
る(S212)。そして、レジスタHIGH1にセット
された最上位のワードからレジスタHIGH2にセット
された最上位のワードとレジスタcarry の内容を引いて
レジスタHIGH1に結果を、キャリーをレジスタcarr
y にセットする(S213)。そして、符号処理(S2
09)へと進む。
【0195】以上のようにして、4ワードからなるパッ
ク10進数データの減算が、図85の命令列のまま実装
した場合には、1つの演算回路20−1(または、20
−3)において、15ステップ、分岐数1で実行され
る。つまり、1ワード単位で減算が行われる結果、バイ
ト単位で処理を行っていた従来に比べて、遥かに処理ス
テップが少なくなると共に、レジスタに1ワードのデー
タが格納され、効率良く利用処理される。
【0196】上記図41の構成のRISC計算機によ
り、図85に示される命令コード列の処理を並列実行さ
せる場合の命令コード列を図86に示す。上記図85の
例では1つの演算回路(例えば、20−1)が、add
c.p命令またはsubc.p命令を1サイクルに1命
令実行して4ワード分の4回繰り返すようにしたが、こ
の図86の例では、addc.p命令またはsubc.
p命令を1サイクルに複数命令実行する。つまり、演算
回路20−1でaddc.p命令を実行し、並列的に演
算回路20−3でsubc.p命令を実行している。こ
れにより、図85の構成では、15サイクル必要であっ
たのに対し、本実施例では7サイクル、分岐数0で済む
ようになっており、処理の高速化が図られている。
【0197】なお、上記図84〜図86に示す処理で
は、パック10進数データの減算を例に挙げたが、同様
にパック10進数データの加算の処理もaddc.p命
令またはsubc.p命令を用いて実行することができ
る。つまり、ステップS204の分岐(図85、図86
も同様)において、tureとfaulを反転させるこ
とにより、パック10進数データの加算処理を実行する
ことができる。
【0198】上記演算回路20−1、20−2、20−
3、20−4を備えたRISC計算機は、パック10進
数データについて乗算を行うRISC計算機として機能
する。従来のRISC計算機においては、例えば、図8
7の最上位行に示されるような1ワード(4バイト)か
らなるパック10進数データの乗算を実行する場合に
は、図87〜図91に示されるフローチャートのプログ
ラムにより1バイトずつ処理を行っていた。また、上記
図87〜図91の処理は、図92〜図93に示されるC
言語による記述に対応しているので、それぞれに同一符
号を付して説明する。
【0199】図92のブロックB171内には、各レジ
スタ等の定義が記述されている。そして、ブロックB1
72内では、前処理においてデータ1とデータ2との符
号ビット(最下位の4ビット)の取り出しを行うと共
に、レジスタi、jにデータ1、データ2の大きさ(長
さ)をセットし、処理の残バイト数を検出可能とし、ま
た、未だキャリーが無いことをレジスタcarry に0をセ
ットして示す。図92のデータ1、2については大きさ
(長さ)が4バイトであるから、i=4、j=4とな
る。
【0200】次に、i、jについて、大小関係及び所与
の桁数内で正常であるかを検出する(S210)。ここ
で、NOとなるとERRのオーバーフロー処理(S23
7)へと進む。正常であれば、レジスタEA1sig 、E
A2sig にデータ1、2の符号を保存する(S21
1)。更に、データ1、2の符号を削除して(S21
2)、データ1のバイト数iの範囲内でkを変化させb
uf[k]=0を生成する(S213)。次に、iに対
応するデータ1の1バイトの上位桁をEA1Hにセット
し、下位桁をEA1Lにセットする(S214)。そし
て、jが0より大であるか否かに基づいてデータ2に計
算するデータがあるかを検出する(S215)。計算す
べきデータがあれば、jに対応するデータ2の1バイト
の上位桁をEA2Hにセットし、下位桁をEA2Lにセ
ットする(S216)。また、計算すべきデータがなけ
れば、EA2H、EA2Lに0をセットする(S21
7)。
【0201】次に、buf[k]にセットされている中
間結果の上位桁をbufHへセットすると共に、下位桁
をbufLへセットする(S218)。当初は、このb
uf[k]の値は0である。次に、レジスタcarry を調
べて、その値を10で割った商である桁上がり分のキャ
リーを上記bufHに加え、10で割った剰余を上記b
ufLへ加えて、下位桁からのキャリーを中間結果に反
映させる(S219)。そして、データ1の下位桁とデ
ータ2の下位桁の掛け算にbufLのデータを加えて、
xLにセットする(S220)。この下位桁の乗算結果
であるxLが10を越えていないか否か検出して、下位
桁の乗算にキャリーが生じたか否かを検出する(S22
1)。ここで、キャリーがなければ、xLにセットされ
ている結果をレジスタyLへ移し、データ1の下位桁と
データ2の上位桁との掛け算を行い、データ1の上位桁
とデータ2の下位桁との掛け算を行い、これら2つの掛
け算結果にbufHにセットされているキャリーを加え
てxHにセットする(S222)。一方、キャリーが生
じていると、xLにセットされている結果を10で割っ
た剰余をレジスタyLへセットし、データ1の下位桁と
データ2の上位桁との掛け算を行い、データ1の上位桁
とデータ2の下位桁との掛け算を行い、これら2つの掛
け算結果にbufHにセットされているキャリー並びに
xLの内容を10で割った商を加えてxHにセットする
(S223)。
【0202】次に、上記xHの値が10を越えていない
か否かに基づき、上記で行った2桁目と1桁目の乗算結
果にキャリーが発生したのかを検出する(S224)。
そして、キャリーが発生していなければ、xHにセット
されている結果をyHに移し、データ1のとデータ2の
上位桁同志を掛けて結果をcarry にセットする(S22
5)。一方、キャリーが生じていると、xHにセットさ
れている結果を10で割った剰余をレジスタyHへセッ
トし、データ1のとデータ2の上位桁同志を掛けて、こ
の結果にxHにセットされている結果を10で割った商
を加えてcarryにセットする(S226)。次に、yH
の結果とyLの結果とを1バイトに並べてbuf[k]
にセットして中間結果を得る(S227)。
【0203】次に、kをディクリメントしたときkが0
よりも小となり、かつ、carry があるか、つまり、中間
結果をセットする対象のbuf[k]が無いにも拘らず
最上位の桁上げがcarry に格納されていることによるオ
ーバーフローを検出し(S228)、Yとなると、ER
Rへ分岐しオーバーフロー処理が行われる(S23
7)。上記ステップS228においてNへ分岐すると、
jをディクリメントしたとき0以上、または、carry が
あるか、つまり、データ2に計算すべきデータが残され
ているとき、または、データ2に計算すべきデータが残
されていないが、最上位の桁上げがcarry に格納されて
いることによるオーバーフローを検出し(S229)、
YとなるとステップS215へ戻って処理を継続し、N
となると、jにデータ2の長さをセットし、iをディク
リメントしてkへセットし、データ1の次の1バイトと
データ2の乗算の準備を行い(S230)、上記iが0
以上かを検出してデータ1に計算すべきバイトが残って
いるかを検出して(S231)、YとなるとステップS
214へ戻って処理を継続し、Nとなると最上位の桁上
げがcarry に格納されていることによるオーバーフロー
を検出し(S232)、YとなるとERRへ分岐しオー
バーフロー処理が行われる(S237)。また、Nとな
ると、各buf[k](k<i)にセットされた結果を
順次EA1に戻して最終結果を得る(S233)。
【0204】次に、データ1とデータ2の符号は同一か
どうかを調べ(S234)、同一であれば、0c(11
00)をEA1の最下位桁に符号としてセットし(S2
35)、同一でなければ、0d(1101)をEA1の
最下位桁に符号としてセットする(S236)。
【0205】上記のように従来のRISC計算機による
パック10進数データの乗算は、バイト単位に処理を行
い桁上がりを上位に順送りし、これを繰り返していたの
で、演算結果が得られるまでに処理回数が多くなるとい
う問題点があった。また、RISC計算機では、レジス
タ長が32ビット、64ビット等であり、8ビットずつ
処理するのでは、レジスタに空きが生じ効率が悪く、ま
た、並列処理の場合にも効率が上がらないという問題点
があった。
【0206】上記に対し、本発明の実施の形態に係るR
ISC計算機は、第1の1ワードデータの最下位4ビッ
トから4ビット間隔をおいて、パック10進数を取り出
し、この複数のパック10進数データと第2の1ワード
データの最下位4ビットのパック10進数データとを掛
け合わせて、2桁のパック10進数データを上記第1の
1ワードデータに存在するパック10進数データと同個
数得て、ディスティネーションオペランドに出力する乗
算手段を備える演算回路を具備する。
【0207】別言すれば、上記演算回路20−1、20
−2、20−3、20−4は、上記乗算手段を用いて、
第1の1ワードデータの最下位4ビットから4ビット間
隔をおいて、パック10進数を取り出し、この複数のパ
ック10進数データと第2の1ワードデータの最下位4
ビットのパック10進数データとを掛け合わせて、2桁
のパック10進数データを上記第1の1ワードデータに
存在するパック10進数データと同個数得て、ディステ
ィネーションオペランドに出力するmul.p命令を実
行する。
【0208】mul.p命令は、図94の135に示さ
れるように、乗算する対象が格納されている2つのレジ
スタ(%rs1)、(%rs2)と、結果を書き込むデ
ィスティネーションレジスタ(%rd1)とを指定して
記述される。この例では、1ワードは32ビットである
から、レジスタrs1のビット0〜3、ビット8〜1
1、ビット16〜19、ビット24〜27は無視して、
4ビット間隔をおいてレジスタrs1のビット4〜7、
ビット12〜15、ビット20〜23、ビット28〜3
1に配置された4つの10進数データを被乗数とし、レ
ジスタrs2のビット0〜27を無視して、最下位のビ
ット28〜31に配置された1桁の10進数データを乗
数として上記被乗数に掛ける。掛け算の結果は、レジス
タrd1に1バイト単位で図94に示すようにセットす
る。
【0209】上記mul.p命令に対応して、演算回路
20−1〜20−4には、図95に示されるような乗算
手段が備えられている。つまり、レジスタrs1のビッ
ト4〜7、ビット12〜15、ビット20〜23、ビッ
ト28〜31に配置された4つの10進数データ以外を
マスクするマスク回路71、レジスタrs2のビット0
〜27をマスクするマスク回路72、マスク回路71か
ら出力されるレジスタrs1のビット4〜7の10進数
データとマスク回路72から出力されるレジスタrs2
のビット28〜31の10進数データとの掛け算を行う
パック10進数乗算器73−1、レジスタrs1のビッ
ト12〜15の10進数データとマスク回路72から出
力されるレジスタrs2のビット28〜31の10進数
データとの掛け算を行うパック10進数乗算器73−
2、レジスタrs1のビット20〜23の10進数デー
タとマスク回路72から出力されるレジスタrs2のビ
ット28〜31の10進数データとの掛け算を行うパッ
ク10進数乗算器73−3、レジスタrs1のビット2
8〜31の10進数データとマスク回路72から出力さ
れるレジスタrs2のビット28〜31の10進数デー
タとの掛け算を行うパック10進数乗算器73−4を備
える。各パック10進数乗算器73−1〜4は、2つの
入力の掛け算を行い、図94のレジスタrd1に示され
る8ビット単位のパック10進数データを出力する。但
し、各パック10進数乗算器73−1〜4の入力端子へ
入力されるデータがパック10進数の不正データ(16
進のA〜F)であっても乗算を行うので、係る場合の演
算結果は保証されず、不正データが出力されることがあ
り得る。
【0210】そして、本発明に係るmul.p命令を実
行する演算回路20−1〜20−4、shx命令、is
hx命令、sll.l命令、add.c命令を実行する
演算回路20−1(20−3)を有する本発明の実施の
形態に係るRISC計算機により上記従来のRISC計
算機でパック10進数の乗算を行う場合の問題点を解決
する。つまり、本発明の実施の形態に係るRISC計算
機は、図96に示されるように、前処理手段81、乗算
手段82、桁分離手段83、桁補正手段84、加算手段
85を具備する。前処理手段81は、1ワードのパック
10進数からなる被乗数データと、パック10進数の0
が1ワード集合されてなるデータとをshx命令を実行
する演算回路20−1(20−3)を用いて完全シャッ
フル処理する。乗算手段82は、前処理手段81により
完全シャッフル処理された結果の2桁毎に対し、mu
l.p命令を実行する演算回路20−2(20−4)を
用いて乗数を構成する1桁のパック10進数データを掛
け合わせて2桁単位の結果を得る。桁分離手段83は、
上記乗算手段82により得られた結果に対しishx命
令を実行する演算回路20−1(20−3)を用いて逆
完全シャッフル処理して上位桁と下位桁に分離する。桁
補正手段84は、上記桁分離手段83により分離された
上位桁の結果にsll.l命令を実行する演算回路20
−1(20−3)を用いて4ビットの左シフトを生じさ
せて、桁上がりによる桁位置との一致を図る。加算手段
85は、桁位置補正手段84により補正された結果と、
上記桁分離手段84により分離された下位桁の結果とを
addc.p命令を実行する演算回路20−1(20−
3)を用いて加算すると共に、加算の結果生じたキャリ
ーを上記桁位置補正手段84により上位ワードへシフト
された数値に加算して、パック10進数データの乗算結
果を得る。
【0211】つまり、上記各手段による処理によって、
図96の最上位に記載の1ワードの被乗数「89567
890」に対し、1ワードの乗数「00000007」
を掛ける演算を行うと、同図96の最下位に記載の2ワ
ード分の結果「00000006」、「2697523
0」を、つまり、連続数字では、「62697523
0」を得ることができる。
【0212】上記本発明の実施の形態に係るRISC計
算機によりパック10進数の乗算を実行する場合の処理
を図97から図104を参照して順を追って説明する。
図97には、図96の最上位に記載の1ワードの被乗数
「89567890」がレジスタr1に記憶され、1ワ
ードの乗数「00000007」がレジスタr2に記憶
され、これらの乗算(%r1×%r2)を行うことが示
されている。この場合、レジスタr1、r2に記憶され
るパック10進数データは、前処理において符号が除去
されている。
【0213】前処理手段81は、図98に示されるsh
x命令を実行する。つまり、演算回路20−1(20−
3)により、1ワードの0のパック10進数データ(%
zero)と上記レジスタr1の1ワードの被乗数「895
67890」との完全シャッフル処理を行う。この場
合、第3オペランドには%zeroがセットされている結
果、対交換は行われない。そして、完全シャッフル処理
の結果は、図98に示すように、レジスタw1、w2に
記憶される。
【0214】次に、乗算手段82は、図99に示される
mul.p命令を実行する。例えば、演算回路20−2
(20−4)により、上記完全シャッフル処理されレジ
スタw1にセットされたパック10進数データ「080
90506」と、レジスタr2の乗数「0000000
7」との間でmul.p命令による処理を行う。具体的
には、「08090506」の内の「8」、「9」、
「5」、「6」と乗数「7」との乗算を行い、結果であ
る「56」、「63」、「35」、「42」を並べてレ
ジスタw1にセットする。従って、レジスタw1の偶数
桁はキャリーとなっている。
【0215】更に、乗算手段82は、図100に示され
るmul.p命令を実行する。例えば、演算回路20−
2(20−4)により、上記完全シャッフル処理されレ
ジスタw2にセットされたパック10進数データ「07
080900」と、レジスタr2の乗数「000000
07」との間でmul.p命令による処理を行う。具体
的には、「07080900」の内の「7」、「8」、
「9」、「0」と乗数「7」との乗算を行い、結果であ
る「49」、「56」、「63」、「00」を並べてレ
ジスタw2にセットする。従って、レジスタw2の偶数
桁はキャリーとなっている。
【0216】次に、桁分離手段83は、図101に示さ
れるishx命令を実行する。つまり、演算回路20−
1(20−3)により、レジスタw1にセットされた1
ワードのパック10進数データ「56633542」と
レジスタw2にセットされた1ワードのパック10進数
データ「49566300」との完全逆シャッフル処理
を行う。この場合、第3オペランドには%zeroがセット
されている結果、対交換は行われない。そして、完全シ
ャッフル処理の結果は、図101に示すように、レジス
タw1、w2に記憶される。この結果、レジスタw1に
は掛け算の結果の2桁の内の桁上がり分(2桁目)のデ
ータが記憶され、レジスタw2には掛け算の結果の2桁
の内の1桁目のデータが記憶され、桁分離が行われる。
【0217】次に、桁補正手段84は、図102に示さ
れるsll.l命令を実行する。つまり、演算回路20
−1(20−3)により、%zero及びレジスタw2にセ
ットされた倍語のデータを第3オペランドの4ビット分
左シフトする。この結果、レジスタw3の最下位には、
掛け算の2桁目が1ワード分セットされたレジスタw1
の最上位の「5」がシフトされて現れ、レジスタw3の
データは「00000005」となる。また、レジスタ
w1には桁上がりに係る7個分のデータが1桁ずつ左シ
フトされて記憶され、レジスタw1のデータは「634
45600」となる。この結果、レジスタw3、w1に
は、桁上がりの結果に応じた桁へのデータの配置転換、
つまり、桁補正がなされる。
【0218】次に、加算手段85は、図103に示され
るaddc.p命令を実行する。つまり、演算回路20
−1(20−3)により、レジスタw1にセットされて
いる桁補正された結果の下位1ワードのデータと、レジ
スタw2にセットされている掛け算結果の1桁目の1ワ
ードのデータとが加算されて、結果がレジスタw2にセ
ットされ、キャリーがレジスタw4の1桁目にセットさ
れる。斯して、レジスタw2のデータは、図97のデー
タの掛け算結果の内、下位1ワードのデータでとなり、
レジスタw4のデータは順次送りの桁上がりの数値とな
る。
【0219】次に、加算手段85は、図104に示され
るaddc.p命令を実行する。つまり、演算回路20
−1(20−3)により、レジスタw3にセットされて
いる桁補正された結果の上位1ワードのデータと、レジ
スタw4に記憶された順次送りの桁上がりの数値のデー
タとが加算されて、結果がレジスタw3にセットされ
る。レジスタw4にはこのときのキャリーである0がセ
ットされる。以上により、レジスタw3とレジスタw2
とのデータを並べた倍語のデータが、図97の2つのデ
ータの乗算結果となる。
【0220】前述の図41の構成のRISC計算機によ
り、図97〜図104に示される処理をVLIW方式に
より並列実行させる場合の命令コード列を図105に示
す。この例では、1つの演算回路(例えば、20−1)
が、shx命令、ishx命令、sll.l命令、ad
dc.p命令を実行し、また、他の1つの演算回路(例
えば、20−3)がmul.p命令を実行し、8桁×1
桁のパック10進数演算結果を7ステップで得ることが
できる。従来例との対比では、従来が2桁×2桁の乗算
に13ステップ必要であったので、上記の本発明の処理
が遥かに高速であることが判る。そして、キャリーの伝
播手法は、本発明では8桁分のキャリーを一度に求める
ことができ、従来の1桁毎に計算して順次に加える手法
より高速化を図ることができる。
【0221】図106には、上記のパック10進数デー
タの乗算を行うRISC計算機が、32桁までのパック
10進数データを被乗数とする場合の処理のフローチャ
ートが示されている。この処理を説明すると、被乗数と
乗数とをレジスタへロードし(S241)、書くフラグ
類等の初期化を行う(S242)。次に、符号の決定及
び除去を行い(S243)、被乗数と乗数との有効桁数
を求める(S244)。以上の処理は、本発明と従来例
とも変わらず、図92においては、B171〜S212
までに相当している。
【0222】そして、実際の乗算に入り、乗数の下位桁
から有効桁数までの各桁のパック10進数データの繰り
返であるか確認する(S245)。つまり、被乗数の最
下位8桁(本実施の形態では1ワード)と上記乗数の下
位桁のパック10進数データを上述の図97から図10
4までの処理により乗算して、被乗数が8桁以下のとき
には、ステップS250へ進み乗数の次の桁を準備し、
ステップS245へ進んで有効桁数までの各桁のパック
10進数データを繰り返しを確認して、乗数の全ての桁
について乗算を終了すると、乗算結果をメモリへストア
する(S251)。また、被乗数が9桁以上16桁以下
の場合には、ステップS247へ進み、被乗数の次の8
桁について上記と同様に乗算を行う。また、被乗数が1
7桁以上24桁以下の場合には、ステップS248へ進
み、被乗数の次の8桁について上記と同様に乗算を行
う。更に、被乗数が25桁以上32桁以下の場合には、
ステップS249へ進み、被乗数の次の8桁について上
記と同様に乗算を行う。そして、最終結果はメモリへス
トアする(S251)。このように、図97〜図104
に示した処理、つまり、乗数8桁と被乗数1桁の乗算を
繰り返し、これらの結果を並べて最終結果を得ることに
より、1桁(1バイト)毎に乗算を行っていた場合に比
べて高速な乗算を実行することができる。
【0223】
【発明の効果】以上説明したように本発明の請求項1に
記載のRISC計算機によれば、1ワードデータ中の最
上位ビットから最下位ビット方向に検索した場合に、最
初にセットされているビットが、最下位ビットから数え
て何ビット目であるかを検出でき、有効ビット長の検出
等に適用可能であり、係る処理を1命令で高速に実行で
きる効果がある。
【0224】以上説明したように本発明の請求項2に記
載のRISC計算機によれば、複数ブロック中にセット
されたビットがあるか否かに基づいて、所定ブロックが
選択され、この選択結果から1ワードデータ中の最上位
ビットから最下位ビット方向に検索した場合に、最初に
セットされているビットが、最下位ビットから数えて何
ビット目であるかが検出され、有効ビット長の検出等の
高速化を図ることができる効果がある。
【0225】以上説明したように本発明の請求項3に記
載のRISC計算機によれば、複数ブロック中にセット
されたビットがあるか否かの検出結果および、各ブロッ
クの上位3ビットの夫々がセットされているか否かの関
係の検出結果により、1ワードデータ中の最上位ビット
から最下位ビット方向に検索した場合に、最初にセット
されているビットが、最下位ビットから数えて何ビット
目であるかが検出され有効ビット長の検出等の高速化を
図ることができる効果がある。
【0226】以上説明したように本発明の請求項4に記
載のRISC計算機によれば、fsbit命令を実行し
て、複数ワードからなるデータの有効ビット長データの
計算を行うことができ、セットされているビット位置の
検出を条件判定と分岐命令で行う必要がないので、高速
な処理が可能である。
【0227】以上説明したように本発明の請求項5に記
載のRISC計算機によれば、演算回路を複数有し、各
命令を並列実行するVLIW方式を採用するので、位置
検出が、fsbit命令によりなされ、条件判定と分岐
命令とが使用されない上に、並列処理がなされ、高速化
が図られる。
【0228】以上説明したように、本発明の請求項6に
記載のRISC計算機によれば、1ワードのデータを4
ビットに分割して各4ビット毎の大小比較をする演算が
1命令により実行されるので、4ビットのデータを大小
比較を複数同時に実行可能であり、処理の高速化を図る
ことができる。
【0229】以上説明したように、本発明の請求項7に
記載のRISC計算機によれば、1ワードのデータを4
ビットに分割して各4ビット毎に等しいか否か比較する
演算が1命令により実行されるので、4ビットのデータ
の一致検出を複数同時に実行可能であり、処理の高速化
を図ることができる。
【0230】以上説明したように本発明の請求項8に記
載のRISC計算機によれば、条件判定及び分岐命令を
使用することなく、fsbit命令及びcmplt.p
命令によりパック10進数の有効桁数を得るので、パッ
ク10進数の有効桁数を効率的に計算することができ
る。
【0231】以上説明したように本発明の請求項9に記
載のRISC計算機によれば、条件判定及び分岐命令を
使用することなく、fsbit命令及びcmplt.p
命令によりパック10進数の有効桁数を得ると共に各命
令を並列実行するVLIW方式を採用しているので、並
列性が向上し、高速化が図られる。
【0232】以上説明したように本発明の請求項10に
記載のRISC計算機によれば、cmplt.p命令を
1サイクルに複数命令実行するので、並列性の向上によ
り処理サイクル数を減少させて高速処理を可能となる効
果がある。
【0233】以上説明したように、本発明の請求項11
に記載のRISC計算機によれば、1ワードのデータを
1バイトに分割して各1バイト毎の大小比較をする演算
が1命令により実行され、1バイトのデータの大小比較
を複数同時に実行可能であることから、処理な高速に行
われる効果がある。
【0234】以上説明したように、本発明の請求項12
に記載のRISC計算機によれば、1ワードのデータを
1バイトに分割して各1バイト毎に等しいか否か比較す
る演算が1命令により実行され、1バイトのデータの一
致検出を複数同時に実行可能であることから、処理な高
速に行われる効果がある。
【0235】以上説明したように本発明の請求項13に
記載のRISC計算機によれば、条件判定及び分岐命令
を使用することなく、fsbit命令及びcmplt.
b命令によりデータの有効バイト長を得るので、複数ワ
ードのデータの有効バイト長を効率的に計算することが
できる。
【0236】以上説明したように本発明の請求項14に
記載のRISC計算機によれば、条件判定及び分岐命令
を使用することなく、fsbit命令及びcmplt.
b命令を用いることによりデータの有効バイト長を得る
ことができ、VLIW方式により並列性が向上し、高速
化が図られる効果がある。
【0237】以上説明したように本発明の請求項15に
記載のRISC計算機によれば、cmplt.b命令が
1サイクルに複数命令実行され、並列性の向上により処
理サイクル数が減少し高速処理がなされる効果がある。
【0238】以上説明したように請求項16に記載の本
発明に係るRISC計算機によれば、条件判定及び分岐
命令を使用することなく、ゾーン10進数からなる複数
ワードのデータのオーバーフローを効率的に計算するこ
とができる。
【0239】以上説明したように請求項17に記載の本
発明に係るRISC計算機によれば、条件判定及び分岐
命令を使用することなく、fsbit命令及びcmpe
q.b命令により演算結果において使用されているバイ
ト長を得てオーバーフローを検出するようにしているの
で、並列性の向上、高速化を図ることができる。
【0240】以上説明したように請求項18に記載の本
発明に係るRISC計算機によれば、cmpeq.b命
令が1サイクルに複数命令実行されるので、並列性の向
上により処理サイクル数を減少させて高速処理が可能と
なる効果がある。
【0241】以上説明したように本発明の請求項19に
記載のRISC計算機によれば、一時に3つのソースオ
ペランドを与えることができ、第3ソースオペランドの
待ち合わせの必要がなく、また、一時に2つのディステ
ィネーションオペランドのライトバックが可能であり、
第2ディスティネーションオペランドのライトバック待
ちが不要となる効果がある。
【0242】以上説明したように本発明の請求項20に
記載のRISC計算機によれば、3オペランド型命令の
みにより構成される命令列に対しても、また、5オペラ
ンド型命令を含む命令列に対しても、処理を行うことが
可能である。
【0243】以上説明したように本発明の請求項21に
記載のRISC計算機によれば、第0、第1命令フィー
ルド、第2、第3命令フィールドに亘って、それぞれ2
ワード長の5オペランド型のRISC命令を配置して実
行させることができるようになる。
【0244】以上説明したように本発明の請求項22に
記載のRISC計算機によれば、デコ−ダがスイッチ切
り換えによりソースオペランド及びディスティネーショ
ンオペランドを選択するので、RISC命令に拡張用コ
ードがセットされている場合に対応して、5オペランド
型命令を実行する形態となって処理が行われ、必要なと
きに5オペランド型命令が実行される。
【0245】以上説明したように請求項23に記載の本
発明に係るRISC計算器によれば、2つの1ワードに
存在する4ビット単位のデータを各ワードにまたがって
交換して配置を制御して並べ換え、所望の2ワードに変
換することが可能となる。
【0246】以上説明したように請求項24に記載の本
発明に係るRISC計算器によれば、2つの1ワードに
存在する4ビット単位のデータを4ビットの1ブロック
おきに組み合わせて交換して配置を制御して並べ換え、
所望の2ワードに変換することが可能となる。
【0247】以上説明したように本発明の請求項25に
記載のRISC計算機によれば、RISC計算機の1ワ
ード単位に処理を行うようにしているので、パック10
進数の不正データの除去を効率良く行うことができる。
【0248】以上説明したように本発明の請求項26に
記載のRISC計算機によれば、複数ワードのパック1
0進数に対しては、そのワード数に対応した繰り返し処
理によりパック10進数の不正データの除去を行うこと
ができ、4ビット単位にエラーチェックを行っていた従
来に比べて高速化が図られる効果がある。
【0249】以上説明したように本発明の請求項27に
記載のRISC計算機によれば、cmplt.p命令が
1サイクルに複数命令実行されるので、並列性の向上に
より処理サイクル数が減少して高速処理がなされること
になる。
【0250】以上説明したように本発明の請求項28に
記載のRISC計算機によれば、2つのジェネラルレジ
スタで指定された倍語データを、シフトさせて倍語で2
つのディスティネーションオペランドに出力するので、
1命令で倍語単位の左論理シフトを行うことができる。
【0251】以上説明したように本発明の請求項29に
記載のRISC計算機によれば、2つのジェネラルレジ
スタで指定された倍語データを、シフトさせて倍語で2
つのディスティネーションオペランドに出力するので、
1命令で倍語単位の右論理シフトを行うことができる。
【0252】以上説明したように本発明の請求項30に
記載のRISC計算機によれば、2つのジェネラルレジ
スタで指定された倍語データを、右に算術シフトして倍
語で2つのディスティネーションオペランドに出力する
ので、1命令で倍語単位の右算術シフトを行うことがで
きる。
【0253】以上説明したように本発明の請求項31に
記載のRISC計算機によれば、メモリ内のパック10
進数データをレジスタに転送する場合に、メモリ内から
ワード単位に読み出してレジスタに適切にセットでき、
処理の効率化を図ることができる。
【0254】以上説明したように本発明の請求項32に
記載のRISC計算機によれば、1ワード単位の読み出
しとシフト、更に1ワード単位の読み出しとシフトとい
う繰り返しで、メモリ内のパック10進数データをレジ
スタに適切に転送してセット可能であり、バイト単位で
転送を行う従来に比べて高速、高効率で転送できる効果
がある。
【0255】以上説明したように本発明の請求項33に
記載のRISC計算機によれば、各命令が並列実行され
るので、更に処理の高速化を図ることができるという効
果がある。
【0256】以上説明したように本発明の請求項34に
記載のRISC計算機によれば、2つのジェネラルレジ
スタで指定された固定小数点1ワードデータを、第3の
ジェネラルレジスタで指定されたキャリーと共に加算
し、加算結果を第1のディスティネーションレジスタに
格納し、加算結果のキャリーを第2のディスティネーシ
ョンレジスタに格納するようにしたので、固定小数点1
ワードデータのキャリー付加算を行うことができる。
【0257】以上説明したように本発明の請求項35に
記載のRISC計算機によれば、第1のジェネラルレジ
スタで指定された固定小数点1ワードデータから第2の
ジェネラルレジスタで指定された固定小数点1ワードデ
ータを減算すると共に、第3のジェネラルレジスタで指
定されたキャリーの反転値を減算し、減算結果を第1の
ディスティネーションレジスタに格納し、減算結果のキ
ャリーの反転値を第2のディスティネーションレジスタ
に格納するようにしたので、固定小数点1ワードデータ
のキャリー付減算を行うことができる。
【0258】以上説明したように本発明の請求項36に
記載のRISC計算機によれば、2つのジェネラルレジ
スタで指定されたパック10進数1ワードデータを、第
3のジェネラルレジスタで指定されたキャリーと共に加
算し、加算結果を第1のディスティネーションレジスタ
に格納し、加算結果のキャリーを第2のディスティネー
ションレジスタに格納するようにしたので、パック10
進数1ワードデータのキャリー付加算を行うことができ
る。
【0259】以上説明したように本発明の請求項37に
記載のRISC計算機によれば、第1のジェネラルレジ
スタで指定されたパック10進数1ワードデータから第
2のジェネラルレジスタで指定されたパック10進数1
ワードデータを減算すると共に、第3のジェネラルレジ
スタで指定されたキャリーの反転値を減算し、減算結果
が負数の場合には10の補数として、減算結果を第1の
ディスティネーションレジスタに格納し、減算結果のキ
ャリーの反転値を第2のディスティネーションレジスタ
に格納するので、パック10進数1ワードデータのキャ
リー付減算を行うことができる。
【0260】以上説明したように本発明の請求項38に
記載のRISC計算機によれば、複数ワードのパック1
0進数データの加算が1ワード単位に実行され、複数ワ
ードのパック10進数データの加算が高速処理されると
いう効果がある。
【0261】以上説明したように本発明の請求項39に
記載のRISC計算機によれば、複数ワードのパック1
0進数データの減算が1ワード単位に実行され、複数ワ
ードのパック10進数データの減算が高速処理されると
いう効果がある。
【0262】以上説明したように、本発明の請求項40
に記載のRISC計算機によれば、パック10進数を1
桁おきに並べて被乗数を構成し、これに1桁のパック1
0進数データを掛けて、2桁単位のパック10進数によ
る乗算結果を得ることが可能であり、パック10進数デ
ータの1桁×1桁の乗算を、複数同時に実行可能であ
り、係る乗算の高速化を図ることが可能である。
【0263】以上説明したように、本発明の請求項41
に記載のRISC計算機によれば、桁上がり対応の処理
を順次行うことなく、1ワードのパック10進数からな
る被乗数データと1桁のパック10進数からなる乗数デ
ータとの乗算を行い、結果を得ることができ、処理の高
速化を図ることができる。
【0264】以上説明したように、本発明の請求項42
に記載のRISC計算機によれば、複数ワードのパック
10進数の被乗数と複数ワードのパック10進数の乗数
との乗算演算を請求項41の手法を用いて行うことが可
能であり、複数桁同志の乗算を高速処理することができ
る。
【図面の簡単な説明】
【図1】本発明の実施の形態に係るRISC計算機の要
部ブロック図。
【図2】本発明の実施の形態に係るRISC計算機によ
るfsbit命令の実行処理を説明するための図。
【図3】本発明の実施の形態に係るRISC計算機のf
sbit命令を実現するために、演算回路に搭載される
要部構成図。
【図4】本発明の実施の形態に係るRISC計算機のf
sbit命令を実現するために、演算回路に搭載される
要部構成の他の例を示す図。
【図5】有効ビット長の計算処理に用いられる4ワード
長データの例を示す図。
【図6】従来のRISC計算機における4ワード長デー
タの有効ビット長の計算処理を示すフローチャート。
【図7】図6のフローチャートに対応するニーモニック
表記のプログラムを示す図。
【図8】有効ビット長の計算処理を行う本発明の実施の
形態に係るRISC計算機のブロック図。
【図9】本発明の実施の形態に係るRISC計算機によ
る有効ビット長の計算処理を示すフローチャート。
【図10】図9のフローチャートに対応するニーモニッ
ク表記のプログラムを示す図。
【図11】VLIW方式を採用した本発明の実施の形態
に係るRISC計算機の要部構成図。
【図12】図10に示される命令コード列の処理を並列
実行させる場合の、ニーモニック表記のプログラムを示
す図。
【図13】本発明の実施の形態に係るRISC計算機で
実行されるcmplt.p命令の処理を説明するための
図。
【図14】本発明の実施の形態に係るRISC計算機で
実行されるcmpeq.p命令の処理を説明するための
図。
【図15】4ワードからなるパック10進数の例を示す
図。
【図16】パック10進数の有効桁数の計算を行う本実
施の形態に係るRISC計算機のブロック図。
【図17】従来のパック10進数の有効桁数の計算処理
を示すフローチャート。
【図18】図17のフローチャートに対応するニーモニ
ック表記を示す図。
【図19】本発明の実施の形態に係るRISC計算機に
よるパック10進数の有効桁数の計算処理を示すフロー
チャート。
【図20】図19のフローチャートに対応するニーモニ
ック表記を示す図。
【図21】図20に示す処理をVLIW方式により並列
処理する場合のニーモニック表記を示す図。
【図22】図20に示す処理をVLIW方式により並列
処理する場合のニーモニック表記の他の例を示す図。
【図23】本発明の実施の形態に係るRISC計算機に
よるcmplt.b命令の実行処理を説明するための
図。
【図24】本発明の実施の形態に係るRISC計算機に
よるcmpeq.b命令の実行処理を説明するための
図。
【図25】4ワードからなる有効バイト長計算用のデー
タ列の例と、本発明の実施の形態による処理過程とを示
す図。
【図26】有効バイト長計算を行う本実施の形態に係る
RISC計算機のブロック図。
【図27】従来の有効バイト長計算処理を示すフローチ
ャート。
【図28】図27のフローチャートに対応するニーモニ
ック表記を示す図。
【図29】本発明の実施の形態に係るRISC計算機に
よる有効バイト長の計算処理を示すフローチャート。
【図30】図29のフローチャートに対応するニーモニ
ック表記を示す図。
【図31】図30に示す処理をVLIW方式により並列
処理する場合のニーモニック表記を示す図。
【図32】図30に示す処理をVLIW方式により並列
処理する場合のニーモニック表記の他の例を示す図。
【図33】ゾーン10進数の例を示す図。
【図34】ゾーン10進数データのオーバーフローを検
出する本実施の形態に係るRISC計算機の構成図。
【図35】ゾーン10進数データのオーバーフローを検
出する本実施の形態に係るRISC計算機の動作を説明
するためのフローチャート。
【図36】ゾーン10進数データのオーバーフローを検
出する本実施の形態に係るRISC計算機の動作を説明
するための図。
【図37】ゾーン10進数データのオーバーフローを検
出する本実施の形態に係るRISC計算機の動作を説明
するための図。
【図38】ゾーン10進数データのオーバーフローを検
出する本実施の形態に係るVLIW方式を採用したRI
SC計算機の動作を説明するためのフローチャート。
【図39】図38に対応するコード列を示す図。
【図40】図38に対応する他の構成によるコード列を
示す図。
【図41】5オペランド型のRISC命令を実行可能な
本発明の実施の形態に係るRISC計算機の構成図。
【図42】5オペランド型のRISC命令を含む4命令
からなる命令フィールドの図。
【図43】3オペランド型命令のフォーマットを示す
図。
【図44】オペランド拡張命令のフォーマットを示す
図。
【図45】本発明の実施の形態に係るRISC計算機に
よるshx命令の実行処理を説明するための図。
【図46】本発明の実施の形態に係るRISC計算機に
よるshx命令の対交換の実行処理を説明するための
図。
【図47】完全シャッフル及び逆完全シャッフル動作を
説明するための図。
【図48】本発明の実施の形態に係るRISC計算機の
shx命令を実現するために、演算回路に搭載される要
部構成図。
【図49】本発明の実施の形態に係るRISC計算機に
よるishx命令の実行処理を説明するための図。
【図50】本発明の実施の形態に係るRISC計算機に
よるishx命令の対交換の実行処理を説明するための
図。
【図51】パック10進数データの不正データを除去す
る本実施の形態に係るRISC計算機の構成図。
【図52】パック10進数データの不正データを除去す
る本実施の形態に係るRISC計算機の動作を説明する
ためのフローチャート。
【図53】パック10進数データの不正データを除去す
る本実施の形態に係るRISC計算機の不正パック10
進数検出手段による比較動作を説明するための図。
【図54】パック10進数データの不正データを除去す
る本実施の形態に係るRISC計算機のデータ混合手段
によるシャッフル動作を説明するための図。
【図55】パック10進数データの不正データを除去す
る本実施の形態に係るRISC計算機の不正データ抽出
手段による逆シャッフル動作を説明するための図。
【図56】図52のフローチャートに対応するコード列
を示す図。
【図57】図56のコード列を並列実行させた場合の命
令コード列を示す図。
【図58】本発明の実施の形態に係るRISC計算機に
よるsll.l命令の実行処理を説明するための図。
【図59】本発明の実施の形態に係るRISC計算機に
よるsrl.l命令の実行処理を説明するための図。
【図60】本発明の実施の形態に係るRISC計算機に
よるsra.l命令の実行処理を説明するための図。
【図61】メモリからレジスタへの転送を行う本発明の
実施の形態に係るRISC計算機の構成図。
【図62】本発明の実施の形態に係るRISC計算機に
よりメモリからレジスタへの転送を行う場合の処理の命
令コード列を示す図。
【図63】本発明の実施の形態に係るRISC計算機に
よりメモリからレジスタへの転送を行う場合の処理のフ
ローチャート。
【図64】本発明の実施の形態に係るRISC計算機に
よりメモリからレジスタへの転送を行う場合の処理のフ
ローチャート。
【図65】本発明の実施の形態に係るRISC計算機に
よりメモリからレジスタへの転送を行う場合の処理のフ
ローチャート。
【図66】本発明の実施の形態に係るRISC計算機に
よりメモリからレジスタへの転送を行う場合の処理のフ
ローチャート。
【図67】本発明の実施の形態に係るRISC計算機に
よりメモリからレジスタへの転送を行う場合の処理のフ
ローチャート。
【図68】本発明の実施の形態に係るRISC計算機に
よりメモリからレジスタへの転送を行う場合の処理のフ
ローチャート。
【図69】図62のコード列を並列実行する場合のコー
ド列を示す図。
【図70】本発明の実施の形態に係るRISC計算機に
よるaddc命令の実行処理を説明するための図。
【図71】本発明の実施の形態に係るRISC計算機に
よるsubc命令の実行処理を説明するための図。
【図72】本発明の実施の形態に係るRISC計算機に
よるaddc.p命令の実行処理を説明するための図。
【図73】本発明の実施の形態に係るRISC計算機に
よるsubc.p命令の実行処理を説明するための図。
【図74】本発明の実施の形態に係るRISC計算機の
addc命令を実現するために、演算回路に搭載される
要部構成図。
【図75】本発明の実施の形態に係るRISC計算機の
addc.p命令を実現するために、演算回路に搭載さ
れる要部構成図。
【図76】従来のRISC計算機による加算及び減算の
処理を説明するためのフローチャート。
【図77】従来のRISC計算機による加算及び減算の
処理を説明するためのフローチャート。
【図78】従来のRISC計算機による加算及び減算の
処理を説明するためのフローチャート。
【図79】図76〜図78の従来のRISC計算機によ
る加算及び減算の処理をC言語により表記した図。
【図80】図76〜図78の従来のRISC計算機によ
る加算及び減算の処理をC言語により表記した図。
【図81】図76〜図78の従来のRISC計算機によ
る加算及び減算の処理をC言語により表記した図。
【図82】複数ワードからなるパック10進数データの
加減算を行う本発明の実施の形態に係るRISC計算機
の構成図。
【図83】本発明の実施の形態に係るRISC計算機に
より加減算される複数ワードからなるパック10進数デ
ータの例を示す図。
【図84】本発明の実施の形態に係るRISC計算機に
よる複数ワードからなるパック10進数データの加減算
処理を説明するためのフローチャート。
【図85】本発明の実施の形態に係るRISC計算機に
より複数ワードからなるパック10進数データの加減算
を行う場合の処理の命令コード列を示す図。
【図86】図85のコード列を並列実行する場合のコー
ド列を示す図。
【図87】従来例のRISC計算機によるパック10進
数データの乗算処理を示すフローチャート。
【図88】従来例のRISC計算機によるパック10進
数データの乗算処理を示すフローチャート。
【図89】従来例のRISC計算機によるパック10進
数データの乗算処理を示すフローチャート。
【図90】従来例のRISC計算機によるパック10進
数データの乗算処理を示すフローチャート。
【図91】従来例のRISC計算機によるパック10進
数データの乗算処理を示すフローチャート。
【図92】従来例のRISC計算機によるパック10進
数データの乗算処理を示すC言語による表記を示す図。
【図93】従来例のRISC計算機によるパック10進
数データの乗算処理を示すC言語による表記を示す図。
【図94】mul.p命令の処理を説明するための図。
【図95】mul.p命令を実行するために本発明の実
施の形態に係るRISC計算機に搭載される乗算手段の
構成図。
【図96】パック10進数データの乗算を行う本発明の
実施の形態に係るRISC計算機の構成図。
【図97】本発明の実施の形態に係るRISC計算機に
よるパック10進数データの乗算処理を説明するための
図。
【図98】本発明の実施の形態に係るRISC計算機に
よるパック10進数データの乗算処理を説明するための
図。
【図99】本発明の実施の形態に係るRISC計算機に
よるパック10進数データの乗算処理を説明するための
図。
【図100】本発明の実施の形態に係るRISC計算機
によるパック10進数データの乗算処理を説明するため
の図。
【図101】本発明の実施の形態に係るRISC計算機
によるパック10進数データの乗算処理を説明するため
の図。
【図102】本発明の実施の形態に係るRISC計算機
によるパック10進数データの乗算処理を説明するため
の図。
【図103】本発明の実施の形態に係るRISC計算機
によるパック10進数データの乗算処理を説明するため
の図。
【図104】本発明の実施の形態に係るRISC計算機
によるパック10進数データの乗算処理を説明するため
の図。
【図105】本発明の実施の形態に係るRISC計算機
により、乗算処理をVLIW方式により並列実行させる
場合の命令コード列の図。
【図106】本発明の実施の形態に係るRISC計算機
により、複数桁同志のパック10進数データの乗算処理
を説明するためのフローチャート。
【符号の説明】
1、22 レジスタファイル 2、2−1〜2
−4 演算回路 3、23 入力ポート 4、24 出力
ポート 5 主メモリ 6 プログラム
カウンタ 7、21、21A デコ−ダ 20−1、20
−3 演算回路 31 最上位有効ワード検出手段 32 ワード位
置検出手段 33 ビット位置検出手段 34 有効ビッ
ト長取得手段 41 ワード単位処理手段 42 2次処理
手段 43 最先ビット値検出手段 44 有効桁取
得手段 45 ワード単位処理手段 46 2次処理
手段 47 最先セットビット値検出手段 48 有効バイ
ト長取得手段 50 ワード単位処理手段 51 2次処理
手段 52 最先ビットセット値検出手段 53 オーバー
フロー検出手段 57 不正パック10進数検出手段 58 データ混
合手段 59 不正データ抽出手段 61 ワード境
界・境界差検出手段 62 ワード単位読出手段 63 シフト手
段 65 一致不一致検出手段 66 加算手段 67 減算手段 81 前処理手
段 82 乗算手段 83 桁分離手
段 84 桁補正手段 85 加算手段
───────────────────────────────────────────────────── フロントページの続き (72)発明者 山田 晃智 東京都府中市東芝町1番地 株式会社東芝 府中工場内 (72)発明者 境 隆二 東京都府中市東芝町1番地 株式会社東芝 府中工場内 (72)発明者 渡邊 誠 東京都府中市東芝町1番地 株式会社東芝 府中工場内 (72)発明者 石川 禎 東京都府中市東芝町1番地 株式会社東芝 府中工場内 (72)発明者 遠藤 浩太郎 東京都府中市東芝町1番地 株式会社東芝 府中工場内 (72)発明者 森本 展行 東京都府中市東芝町1番地 株式会社東芝 府中工場内 (72)発明者 福田 純恵 東京都府中市東芝町1番地 株式会社東芝 府中工場内 (72)発明者 溝口 研一 東京都府中市東芝町1番地 株式会社東芝 府中工場内 (72)発明者 佐藤 量志 東京都府中市東芝町1番地 株式会社東芝 府中工場内

Claims (42)

    【特許請求の範囲】
  1. 【請求項1】 1ワードデータ中の最上位ビットから最
    下位ビット方向に検索した場合に、最初にセットされて
    いるビットが、最下位ビットから数えて何ビット目であ
    るかを算出する算出手段を備える演算回路を具備するこ
    とを特徴とするRISC計算機。
  2. 【請求項2】 算出手段は、 1ワードデータを同一ビット数からなる複数のブロック
    に分けた場合の各ブロック夫々にセットされたビットが
    あるか否かの検出を行う検出手段と、 この検出手段による検出結果に基づき、前記複数のブロ
    ック中の1ブロックの所定ビットのデータを選択する選
    択手段と、 この選択手段により選択された結果に基づき、1ワード
    データ中の、最上位側から最初にセットされているビッ
    トが、最下位ビットから数えて何ビット目であるかの数
    値を作成する数値作成手段と、 を具備することを特徴とする請求項1記載のRISC計
    算機。
  3. 【請求項3】 算出手段は、 1ワードデータを4ビットからなる複数のブロックに分
    けた場合の各ブロック夫々にセットされたビットがある
    か否かの検出を行う第1の検出手段と、 上記各ブロックの上位3ビットの夫々がセットされてい
    るか否かの関係を検出する第2検出手段と、 上記第1、第2の検出手段との検出結果に基づき、1ワ
    ードデータ中の、最上位側から最初にセットされている
    ビットが、最下位ビットから数えて何ビット目であるか
    の数値を作成する数値作成手段と、 を具備することを特徴とする請求項1記載のRISC計
    算機。
  4. 【請求項4】 複数ワードのデータについて、ワード単
    位に当該ワード内が全て0であるか否かに基づき、複数
    ワードの内のセットされたビットが存在する最上位有効
    ワードを検出する最上位有効ワード検出手段と、 この最上位有効ワード検出手段により検出された結果に
    対して請求項1乃至3のいずれかに記載の演算回路を用
    いて、最初にセットされているビットが、最下位ビット
    から数えて何ビット目であるかを算出し、更に、この結
    果を用いて当該ワードの位置を示す数値を得るワード位
    置検出手段と、 前記有効最上位ワード検出手段により検出された最上位
    有効ワードに係る1ワードデータに対して請求項1乃至
    3のいずれかに記載の演算回路を用いて、1ワードデー
    タ中の最上位ビットから最下位ビット方向に検索した場
    合に、最初にセットされているビットが、最下位ビット
    から数えて何ビット目であるかを示す数値を得るビット
    位置検出手段と、 このビット位置検出手段及びワード位置検出手段の検出
    結果に基づき、複数ワードからなるデータの有効ビット
    長データを得る有効ビット長取得手段とを、 備えることを特徴とするRISC計算機。
  5. 【請求項5】 演算回路を複数有し、各命令を並列実行
    するVLIW方式を採用することを特徴とする請求項4
    記載のRISC計算機。
  6. 【請求項6】 第1オペランドの1ワードのデータと第
    2オペランドの1ワードのデータを4ビット単位に比較
    して、第2オペランドの4ビットデータが第1オペラン
    ドの4ビットデータより大きいか否か検出し、各4ビッ
    ト単位の比較結果をディスティネーションオペランドの
    下位側に格納する比較手段を備える演算回路を具備する
    RISC計算機。
  7. 【請求項7】 第1オペランドの1ワードのデータと第
    2オペランドの1ワードのデータを4ビット単位に比較
    して、第2オペランドの4ビットデータが第1オペラン
    ドの4ビットデータと等しいか否か検出し、各4ビット
    単位の比較結果をディスティネーションオペランドの下
    位側に格納する比較手段を備える演算回路を具備するR
    ISC計算機。
  8. 【請求項8】 複数ワードのパック10進数データにつ
    いて、請求項6に記載の、第1オペランドの1ワードの
    データと第2オペランドの1ワードのデータを4ビット
    単位に比較して、第2オペランドの4ビットデータが第
    1オペランドの4ビットデータより大きいか否か検出
    し、各4ビット単位の比較結果をディスティネーション
    オペランドの下位側に格納するcmplt.p命令を実
    行する演算回路を用いてワード単位に処理を行うワード
    単位処理手段と、 このワード単位処理手段による処理結果を前記複数ワー
    ドのワードデータ順に並べる処理を行う2次処理処理手
    段と、 この2次処理手段による処理結果について、請求項1乃
    至3のいずれかに記載の演算回路を用いて、1ワードデ
    ータ中の最上位ビットから最下位ビット方向に検索した
    場合に、最初にセットされているビットが、最下位ビッ
    トから数えて何ビット目であるかを示す数値を得る最先
    セットビット値検出手段と、 この最先セットビット値検出手段の検出結果に基づきパ
    ック10進数の有効桁数を得る有効桁数取得手段と、 を具備することを特徴とするRISC計算機。
  9. 【請求項9】 演算回路を複数有し、各命令を並列実行
    するVLIW方式を採用すると共に、cmplt.p命
    令を1サイクルに1命令実行することを特徴とする請求
    項8記載のRISC計算機。
  10. 【請求項10】 演算回路を複数有し、各命令を並列実
    行するVLIW方式を採用すると共に、cmplt.p
    命令を1サイクルに複数命令実行することを特徴とする
    請求項8記載のRISC計算機。
  11. 【請求項11】 第1オペランドの1ワードのデータと
    第2オペランドの1ワードのデータを1バイト単位に比
    較して、第2オペランドの1バイトデータが第1オペラ
    ンドの1バイトデータより大きいか否か検出し、各1バ
    イト単位の比較結果をディスティネーションオペランド
    の下位側に格納する比較手段を備える演算回路を具備す
    るRISC計算機。
  12. 【請求項12】 第1オペランドの1ワードのデータと
    第2オペランドの1ワードのデータを1バイト単位に比
    較して、第2オペランドの1バイトデータが第1オペラ
    ンドの1バイトデータと等しいか否か検出し、各1バイ
    ト単位の比較結果をディスティネーションオペランドの
    下位側に格納する比較手段を備える演算回路を具備する
    RISC計算機。
  13. 【請求項13】 複数ワードのデータについて、請求項
    11に記載の、第1オペランドの1ワードのデータと第
    2オペランドの1ワードのデータを1バイト単位に比較
    して、第2オペランドの1バイトデータが第1オペラン
    ドの1バイトデータより大きいか否か検出し、各1バイ
    ト単位の比較結果をディスティネーションオペランドの
    下位側に格納するcmplt.b命令を実行する演算回
    路を用いてワード単位に処理を行うワード単位処理手段
    と、 このワード単位処理手段による処理結果を前記複数ワー
    ドのワードデータ順に並べる処理を行う2次処理処理手
    段と、 この2次処理手段による処理結果について、請求項1乃
    至3のいずれかに記載の演算回路を用いて、1ワードデ
    ータ中の最上位ビットから最下位ビット方向に検索した
    場合に、最初にセットされているビットが、最下位ビッ
    トから数えて何ビット目であるかを示す数値を得る最先
    セットビット値検出手段と、 この最先セットビット値検出手段の検出結果に基づき有
    効バイト長を得る有効バイト長取得手段と、を具備する
    ことを特徴とするRISC計算機。
  14. 【請求項14】 演算回路を複数有し、各命令を並列実
    行するVLIW方式を採用すると共に、cmplt.b
    命令を1サイクルに1命令実行することを特徴とする請
    求項13に記載のRISC計算機。
  15. 【請求項15】 演算回路を複数有し、各命令を並列実
    行するVLIW方式を採用すると共に、cmplt.b
    命令を1サイクルに複数命令実行することを特徴とする
    請求項13に記載のRISC計算機。
  16. 【請求項16】 ゾーン10進数の複数ワードからなる
    演算結果データについて、請求項12に記載の、第1オ
    ペランドの1ワードのデータと第2オペランドの1ワー
    ドのデータを1バイト単位に比較して、前記第2オペラ
    ンドの1バイトデータが第1オペランドの1バイトデー
    タと等しいか否か検出し、各1バイト単位の比較結果を
    ディスティネーションオペランドの下位側に格納するc
    mpeq.b命令を実行する演算回路を用いてワード単
    位に処理を行うワード単位処理手段と、 このワード単位処理手段による処理結果を前記複数ワー
    ドのワードデータ順に並べ、この並べたデータに対して
    使用されているバイトと使用されていないバイトとを識
    別する処理を行う2次処理処理手段と、 この2次処理手段による処理結果について、請求項1乃
    至3のいずれかに記載の演算回路を用いて、1ワードデ
    ータ中の最上位ビットから最下位ビット方向に検索した
    場合に、最初にセットされているビットが、最下位ビッ
    トから数えて何ビット目であるかを示す数値を得る最先
    セットビット値検出手段と、 この最先セットビット値検出手段の検出結果と与えられ
    る正規のバイト数に基づきゾーン10進数のデータがオ
    ーバーフローか否か検出するオーバーフロー検出手段
    と、 を具備することを特徴とするRISC計算機。
  17. 【請求項17】 演算回路を複数有し、各命令を並列実
    行するVLIW方式を採用すると共に、cmpeq.b
    命令を1サイクルに1命令実行することを特徴とする請
    求項16に記載のRISC計算機。
  18. 【請求項18】 演算回路を複数有し、各命令を並列実
    行するVLIW方式を採用すると共に、cmpeq.b
    命令を1サイクルに複数命令実行することを特徴とする
    請求項16に記載のRISC計算機。
  19. 【請求項19】 命令に対する演算を実行する演算回路
    を複数有し、各命令を並列実行するVLIW方式を採用
    したRISC計算機において、 前記複数の演算回路の所要の演算回路が、第3ソースオ
    ペランドを取り込む経路と、第2ディスティネーション
    オペランド出力用の経路とを備え、3つのソースオペラ
    ンドに対して演算を行い、その結果を2つのディスティ
    ネーションオペランドへ出力する5オペランド型命令を
    実行する演算回路であることを特徴とするRISC計算
    機。
  20. 【請求項20】 5オペランド型命令を実行する演算回
    路の第3ソースオペランドを取り込む経路へソースオペ
    ランドを供給するか、3オペランド型命令を実行する演
    算回路の第1ソースオペランド取り込む経路へソースオ
    ペランドを供給するか切り換えるソースオペランド切換
    スイッチと、 前記5オペランド型命令を実行する演算回路の第2ディ
    スティネーションオペランド出力用の経路からのディス
    ティネーションオペランドか、前記3オペランド型命令
    を実行する演算回路の第1ディスティネーションオペラ
    ンド出力用の経路からのディスティネーションオペラン
    ドかを選択するためのディスティネーションオペランド
    選択スイッチと、 上記2つのスイッチを命令に基づき切り換えるデコ−ダ
    とを具備することを特徴とする請求項19に記載のRI
    SC計算機。
  21. 【請求項21】 4つの演算回路が備えられており、第
    1、第3の演算回路が、5オペランド型命令を実行する
    演算回路で構成され、第2、第4の演算回路が、3オペ
    ランド型命令を実行する演算回路で構成されていること
    を特徴とする請求項19または20に記載のRISC計
    算機。
  22. 【請求項22】RISC命令に拡張用コードがセットさ
    れている場合に、デコ−ダは、5オペランド型命令を実
    行する演算回路へ第3ソースオペランドを供給し、出力
    される第2ディスティネーションオペランドを選択する
    ように、ソースオペランド切換スイッチとディスティネ
    ーションオペランド選択スイッチとの切換制御を行うこ
    とを特徴とする請求項19乃至請求項21のいずれか1
    項に記載のRISC計算機。
  23. 【請求項23】 第1オペランドの1ワード長のデータ
    と第2オペランドの1ワード長のデータとを夫々4ビッ
    ト幅のブロックに区分し、第1オペランドの各ブロック
    と第2オペランドの各ブロックとを先頭から順に組み合
    わせるシャッフル手段と、 このシャッフル手段により組み合わされたブロック対に
    おける2ブロックの前後配置関係を、第3オペランドの
    1ワード長のデータに基づき制御する対交換手段と、 を具備する演算回路を備えることを特徴とするRISC
    計算機。
  24. 【請求項24】 第1オペランドの1ワード長のデータ
    と第2オペランドの1ワード長のデータとを夫々4ビッ
    ト幅のブロックに区分し、第1オペランドと第2オペラ
    ンドのブロックを一列に並べた状態で1ブロックおきに
    組み合わせ、奇数ブロックの組み合わせの並びの後に偶
    数ブロックの組み合わせの並びを配置する逆シャッフル
    手段と、 この逆シャッフル手段により組み合わされたブロック対
    における2ブロックの前後配置関係を、第3オペランド
    の1ワード長のデータに基づき制御する対交換手段と、 を具備する演算回路を備えることを特徴とするRISC
    計算機。
  25. 【請求項25】 複数ワードのパック10進数データに
    ついて、請求項6に記載の、1ワードのデータを4ビッ
    ト単位に不正閾値データと比較して、各4ビット単位の
    比較結果をディスティネーションオペランドの下位側に
    格納するcmplt.p命令を実行する演算回路を用い
    てワード単位に処理を行う不正パック10進数検出手段
    と、 前記複数ワードのパック10進数データと0とを第1オ
    ペランド及び第2オペランドとし、前記不正パック10
    進数検出手段の結果を第3オペランドとして、請求項2
    3に記載のshx命令を実行する演算回路を用いてsh
    x命令による結果を得るデータ混合手段と、 このデータ混合手段による混合結果を第1オペランド及
    び第2オペランドとし、0を第3オペランドとして、請
    求項24に記載のishx命令を実行する演算回路を用
    いて不正データを抽出する不正データ抽出手段と、 を具備しパック10進数の不正データを除去することを
    特徴とするRISC計算機。
  26. 【請求項26】 1ワード単位に、不正パック10進数
    検出手段、データ混合手段、不正データ抽出手段を用い
    て処理を行い、複数ワード分の処理を繰り返すことを特
    徴とする請求項25に記載のRISC計算機。
  27. 【請求項27】 演算回路を複数有し、各命令を並列に
    実行するVLIW方式を採用すると共に、cmplt.
    p命令を1サイクルに複数命令実行することを特徴とす
    る請求項25に記載のRISC計算機。
  28. 【請求項28】 2つのジェネラルレジスタで指定され
    た倍語データを、ジェネラルレジスタまたは即値で指定
    された数だけ左に論理シフトし、この結果空いた下位ビ
    ットに0を挿入する倍語・左論理シフト手段を備える演
    算回路を具備することを特徴とするRISC計算機。
  29. 【請求項29】 2つのジェネラルレジスタで指定され
    た倍語データを、ジェネラルレジスタまたは即値で指定
    された数だけ右に論理シフトし、この結果空いた下位ビ
    ットに0を挿入する倍語・右論理シフト手段を備える演
    算回路を具備することを特徴とするRISC計算機。
  30. 【請求項30】 2つのジェネラルレジスタで指定され
    た倍語データを、ジェネラルレジスタまたは即値で指定
    された数だけ右に算術シフトし、この結果空いた下位ビ
    ットに符号ビットを挿入する倍語・右算術シフト手段を
    備える演算回路を具備することを特徴とするRISC計
    算機。
  31. 【請求項31】 メモリに記憶されているパック10進
    数データをレジスタへ転送するRISC計算機であっ
    て、 上記パック10進数データが記憶されているメモリ上の
    最上位と最下位のワード境界を検出すると共に、ワード
    境界と当該パック10進数データの終端との差を検出す
    るワード境界・境界差検出手段と、 このワード境界・境界差検出手段により検出されたワー
    ド境界を単位として、前記パック10進数が記憶されて
    いる範囲のワードをレジスタに読み出すワード単位読出
    手段と、 上記レジスタに読み出されたデータを、上記ワード境界
    ・境界差検出手段により検出された差のデータに応じ
    て、請求項28に記載の倍語・左論理シフト手段を備
    え、sll.l命令を実行する演算回路によりシフトす
    るシフト手段と、 を具備することを特徴とするRISC計算機。
  32. 【請求項32】 ワード単位読出手段による読み出しの
    後に、シフト手段によるシフトを行う動作を繰り返し
    て、所要のパック10進数をレジスタに転送することを
    特徴とする請求項31に記載のRISC計算機。
  33. 【請求項33】 演算回路を複数有し、各命令を並列実
    行するVLIW方式を採用すると共に、ワード単位読出
    手段による読み出しと、sll.l命令を1サイクルに
    て並列実行することを特徴とする請求項31に記載のR
    ISC計算機。
  34. 【請求項34】 2つのジェネラルレジスタで指定され
    た固定小数点1ワードデータを、第3のジェネラルレジ
    スタで指定されたキャリーと共に加算し、加算結果を第
    1のディスティネーションレジスタに格納し、加算結果
    のキャリーを第2のディスティネーションレジスタに格
    納する加算手段を備える演算回路を具備することを特徴
    とするRISC計算機。
  35. 【請求項35】 第1のジェネラルレジスタで指定され
    た固定小数点1ワードデータから第2のジェネラルレジ
    スタで指定された固定小数点1ワードデータを減算する
    と共に、第3のジェネラルレジスタで指定されたキャリ
    ーの反転値を減算し、減算結果を第1のディスティネー
    ションレジスタに格納し、減算結果のキャリーの反転値
    を第2のディスティネーションレジスタに格納する減算
    手段を備える演算回路を具備することを特徴とするRI
    SC計算機。
  36. 【請求項36】 2つのジェネラルレジスタで指定され
    たパック10進数1ワードデータを、第3のジェネラル
    レジスタで指定されたキャリーと共に加算し、加算結果
    を第1のディスティネーションレジスタに格納し、加算
    結果のキャリーを第2のディスティネーションレジスタ
    に格納する加算手段を備える演算回路を具備することを
    特徴とするRISC計算機。
  37. 【請求項37】 第1のジェネラルレジスタで指定され
    たパック10進数1ワードデータから第2のジェネラル
    レジスタで指定されたパック10進数1ワードデータを
    減算すると共に、第3のジェネラルレジスタで指定され
    たキャリーの反転値を減算し、減算結果が負数の場合に
    は10の補数として、減算結果を第1のディスティネー
    ションレジスタに格納し、減算結果のキャリーの反転値
    を第2のディスティネーションレジスタに格納する減算
    手段を備える演算回路を具備することを特徴とするRI
    SC計算機。
  38. 【請求項38】 複数ワードのパック10進数からなる
    第1のデータと複数ワードのパック10進数からなる第
    2のデータのそれぞれの符号の一致不一致を検出する一
    致不一致手段と、 前記符号が一致していることが検出された場合に、ad
    dc.p命令を実行する請求項36に記載の演算回路を
    用いて前記第1のデータと第2のデータとをワード単位
    に加算する加算手段と、 前記符号が不一致であることが検出された場合に、su
    bc.p命令を実行する請求項37に記載の演算回路を
    用いて前記第1のデータと第2のデータとをワード単位
    に減算する減算手段とを具備し、 加減算の各段階で生じたキャリーを次段階にて用いて複
    数ワードのパック10進数の加算を行うことを特徴とす
    るRISC計算機。
  39. 【請求項39】 複数ワードのパック10進数からなる
    第1のデータと複数ワードのパック10進数からなる第
    2のデータのそれぞれの符号の一致不一致を検出する一
    致不一致手段と、 前記符号が不一致であることが検出された場合に、ad
    dc.p命令を実行する請求項36に記載の演算回路を
    用いて前記第1のデータと第2のデータとをワード単位
    に加算する加算手段と、 前記符号が一致していることが検出された場合に、su
    bc.p命令を実行する請求項37に記載の演算回路を
    用いて前記第1のデータと第2のデータとをワード単位
    に減算する減算手段とを具備し、 加減算の各段階で生じたキャリーを次段階にて用いて複
    数ワードのパック10進数の減算を行うことを特徴とす
    るRISC計算機。
  40. 【請求項40】 第1の1ワードデータの最下位4ビッ
    トから4ビット間隔をおいて、パック10進数を取り出
    し、この複数のパック10進数データと第2の1ワード
    データの最下位4ビットのパック10進数データとを掛
    け合わせて、2桁のパック10進数データを上記第1の
    1ワードデータに存在するパック10進数データと同個
    数得て、ディスティネーションオペランドに出力する乗
    算手段を備える演算回路を具備することを特徴とするR
    ISC計算機。
  41. 【請求項41】 1ワードのパック10進数からなる被
    乗数データと、パック10進数の0が1ワード集合され
    てなるデータとを、shx命令を実行する請求項23に
    記載の演算回路を用いて完全シャッフル処理する前処理
    手段と、 この前処理手段により完全シャッフル処理された結果の
    2桁毎に対し、mul.p命令を実行する請求項40に
    記載の演算回路を用いて乗数を構成する1桁のパック1
    0進数データを掛け合わせて2桁単位の結果を得る乗算
    手段と、 上記乗算手段により得られた結果に対し、ishx命令
    を実行する請求項24に記載の演算回路を用いて逆完全
    シャッフル処理して上位桁と下位桁に分離する桁分離手
    段と、 上記桁分離手段により分離された上位桁の結果に対し、
    sll.l命令を実行する請求項28に記載の演算回路
    を用いて4ビットの左シフトを生じさせて、桁上がりに
    よる桁位置との一致を図る桁位置補正手段と、 この桁位置補正手段により補正された結果と、上記桁分
    離手段により分離された下位桁の結果とをaddc.p
    命令を実行する請求項36に記載の演算回路を用いて加
    算すると共に、加算の結果生じたキャリーを前記桁位置
    補正手段により上位ワードへシフトされた数値に加算し
    て、パック10進数データの乗算結果を得る加算手段
    と、 を具備することを特徴とするRISC計算機。
  42. 【請求項42】 複数ワードのパック10進数の被乗数
    と複数ワードのパック10進数の乗数との乗算を行う場
    合には、乗数の各桁のデータ毎に、被乗数の各ワードに
    対して、請求項41に記載の各手段による演算を繰り返
    して結果を得て、更に、乗数の桁数を進めて同様の演算
    を繰り返して行い、 それぞれの結果に必要なシフトを生じさせて最終結果と
    することを特徴とするRISC計算機。
JP03754097A 1997-02-21 1997-02-21 Risc計算機 Expired - Fee Related JP3735438B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP03754097A JP3735438B2 (ja) 1997-02-21 1997-02-21 Risc計算機

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP03754097A JP3735438B2 (ja) 1997-02-21 1997-02-21 Risc計算機

Publications (2)

Publication Number Publication Date
JPH10240528A true JPH10240528A (ja) 1998-09-11
JP3735438B2 JP3735438B2 (ja) 2006-01-18

Family

ID=12500364

Family Applications (1)

Application Number Title Priority Date Filing Date
JP03754097A Expired - Fee Related JP3735438B2 (ja) 1997-02-21 1997-02-21 Risc計算機

Country Status (1)

Country Link
JP (1) JP3735438B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010152919A (ja) * 2001-12-20 2010-07-08 Intel Corp プロセッサに関するロード/移動及び複製命令
JP2014179076A (ja) * 2013-03-14 2014-09-25 Intel Corp 複数データ要素対複数データ要素比較プロセッサ、方法、システム、および命令
JP2017539013A (ja) * 2014-12-23 2017-12-28 インテル・コーポレーション 競合検出を実行するための方法および装置

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010152919A (ja) * 2001-12-20 2010-07-08 Intel Corp プロセッサに関するロード/移動及び複製命令
US8650382B2 (en) 2001-12-20 2014-02-11 Intel Corporation Load/move and duplicate instructions for a processor
JP2014089730A (ja) * 2001-12-20 2014-05-15 Intel Corp プロセッサに関するロード/移動及び複製命令
US9043583B2 (en) 2001-12-20 2015-05-26 Intel Corporation Load/move and duplicate instructions for a processor
JP2014179076A (ja) * 2013-03-14 2014-09-25 Intel Corp 複数データ要素対複数データ要素比較プロセッサ、方法、システム、および命令
JP2017539013A (ja) * 2014-12-23 2017-12-28 インテル・コーポレーション 競合検出を実行するための方法および装置

Also Published As

Publication number Publication date
JP3735438B2 (ja) 2006-01-18

Similar Documents

Publication Publication Date Title
US6078941A (en) Computational structure having multiple stages wherein each stage includes a pair of adders and a multiplexing circuit capable of operating in parallel
US5991785A (en) Determining an extremum value and its index in an array using a dual-accumulation processor
US5583804A (en) Data processing using multiply-accumulate instructions
JP3729881B2 (ja) 並列加算および平均演算を行うための回路およびその方法
KR100267103B1 (ko) 벡터 처리기용 실행 장치 데이터 패스
US20090249039A1 (en) Providing Extended Precision in SIMD Vector Arithmetic Operations
EP0755015B1 (en) Combining data values
US20070033381A1 (en) Conditional execution with multiple destination stores
US20030005365A1 (en) Conditional execution per lane
JPH0850575A (ja) プログラマブルプロセッサ、前記プログラマブルプロセッサを用いてデジタル信号処理を行なうための方法およびその改良
KR100859044B1 (ko) 복수 레지스터 지정이 가능한 simd 연산방식
CN100437547C (zh) 具有级联simd结构的数字信号处理器及其信号处理方法
CN114930311B (zh) Fpga重复单元之间的级联通信
US6754689B2 (en) Method and apparatus for performing subtraction in redundant form arithmetic
WO2017081434A1 (en) Redundant representation of numeric value using overlap bits
EP1131699B1 (en) A data processing system and method for performing an arithmetic operation on a plurality of signed data values
US5546551A (en) Method and circuitry for saving and restoring status information in a pipelined computer
JP3735438B2 (ja) Risc計算機
US7260711B2 (en) Single instruction multiple data processing allowing the combination of portions of two data words with a single pack instruction
JP2003241960A (ja) プロセッサ、該プロセッサにおける演算命令処理方法及び演算制御方法
JP3579087B2 (ja) 演算器およびマイクロプロセッサ
US6643673B1 (en) Method and apparatus for arithmetic shifting
JP3950920B2 (ja) 積和演算器及びデータ処理装置
Casañas Roque Dragonfang: an embedded, general purpose, RISC-V based vector extension for the lagarto hun processor
JPH0329068A (ja) 並列データ処理方式

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040220

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050712

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050719

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050920

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20051018

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20051024

LAPS Cancellation because of no payment of annual fees