(57)【要約】【課題】計算する際の計算桁数を計算命令により自在に設定できるともに、小規模な計算手段で効率よく、設定した計算桁数の計算を実行する。【解決手段】  計算命令で計算桁数を設定して多桁の十進計算を行う十進計算装置であって、予め定められた桁数単位の桁数よりも多い桁数の数値を複数の記憶領域に記憶可能な多桁記憶手段と、計算桁数と計算の種類とを設定している計算命令を記憶する計算命令記憶手段と、この計算命令記憶手段に記憶された計算命令で設定されている計算桁数のうち、桁数単位毎に順次、多桁記憶手段の複数の記憶領域に記憶されたそれぞれ対応する桁数単位分の数値を、計算命令記憶手段に記憶された計算命令で設定されている計算の種類に従った十進計算で計算し、この計算結果を多桁記憶手段の複数の記憶領域に桁数単位毎に順次書き込む十進計算手段と、を備えることを特徴とする十進計算装置である。【選択図】図９
2005149474.tif 000002
【特許請求の範囲】
【請求項１】
計算命令で計算桁数を設定して多桁の十進計算を行う十進計算装置であって、
予め定められた桁数単位の桁数よりも多い桁数の数値を複数の記憶領域に記憶可能な多桁記憶手段と、
計算桁数と計算の種類とを設定している計算命令を記憶する計算命令記憶手段と、
この計算命令記憶手段に記憶された計算命令で設定されている計算桁数のうち、前記桁数単位毎に順次、前記多桁記憶手段の複数の記憶領域に記憶されたそれぞれ対応する桁数単位分の数値を、前記計算命令記憶手段に記憶された計算命令で設定されている計算の種類に従った十進計算で計算し、この計算結果を前記多桁記憶手段の複数の記憶領域に前記桁数単位毎に順次書き込む十進計算を行う十進計算手段と、
を備えることを特徴とする十進計算装置。
【請求項２】
前記計算命令記憶手段は、前記計算命令の前記計算桁数を計算開始桁と計算終了桁として記憶し、
前記十進計算手段は、前記計算命令記憶手段に記憶された計算命令で設定されている前記計算開始桁から前記計算終了桁まで、前記桁数単位毎に順次、前記多桁記憶手段の複数の記憶領域に記憶されたそれぞれ対応する桁数単位分の数値を、前記計算命令記憶手段に記憶された計算命令で設定されている計算の種類に従った十進計算で計算し、この計算結果を前記多桁記憶手段の複数の記憶領域に前記桁数単位毎に順次書き込むことを特徴とする請求項１記載の十進計算装置。
【請求項３】
前記計算終了桁は、前記桁数単位を設定単位として設定されていることを特徴とする請求項２に記載の十進計算装置。
【請求項４】
前記多桁記憶手段の記憶領域から前記桁数単位分の数値を被演算子として、同時に複数読み出す読出手段と、
前記読出手段により読み出されて前記十進計算手段により計算された計算の結果を、前記読出手段による読出対象となった多桁記憶手段の記憶領域に、同時に複数書き込む書込手段と、
を更に備え、
前記多桁記憶手段は、前記読出手段による読み出しと前記書込手段による書き込みとを交互に受動する手段であり、
前記十進計算手段による計算の間、前記読出手段による前記多桁記憶手段からの読出しと、前記書込手段による多桁記憶手段への書き込みとが交互に行われることを特徴とする請求項１〜３の何れか一項に記載の十進計算装置。
【請求項５】
前記読出手段は、前記多桁記憶手段の記憶領域から前記桁数単位分の数値を２つをそれぞれ第１の被演算子及び第２に被演算子として同時に２つ読み出す手段であり、
前記読出手段により読み出された第２の被演算子を一時記憶する読出一時記憶手段を更に備え、
前記十進計算手段は、前記読出手段により読み出された第１の被演算子に対する第１の十進計算を行った後、前記読出一時記憶手段に記憶された第２の被演算子に対する第２の十進計算を行う手段であり、
前記第１の十進計算の計算結果を一時記憶する書込一時記憶手段を更に備え、
前記書込手段は、前記十進計算手段が次に読み出された被演算子の十進計算をしている間に、前記書込一時記憶手段に記憶されている第１の十進計算の計算結果と、直前の第２の十進計算の計算結果とを同時に多桁記憶手段の記憶領域に書き込む手段である、
ことを特徴とする請求項４に記載の十進計算装置。
【請求項６】
計算命令で計算桁数を設定して多桁の十進計算を行う電子機器接続型十進計算装置であって、
予め定められた桁数単位の桁数よりも多い桁数の数値を複数の記憶領域に記憶可能な多桁記憶手段と、
計算桁数と計算の種類とを設定している計算命令を記憶する計算命令記憶手段と、
他の電子機器に通信接続するための接続端子と、
この接続端子を介して前記他の電子機器と通信し、計算桁数と計算の種類とを受信する受信手段と、
前記受信された計算桁数のうち、前記桁数単位毎に順次、前記複数の多桁記憶手段の複数の記憶領域から読み出されたそれぞれ対応する桁数単位分の数値を、前記受信された計算の種類に従って十進計算し、この計算結果を前記多桁記憶手段の複数の記憶領域に前記桁数単位毎に順次書き込む十進計算を行う十進計算手段と、
を備えることを特徴とする電子機器接続型十進計算装置。
【請求項７】
前記受信手段は、更に計算開始桁を受信する手段であり、
前記十進計算手段は、前記受信された計算桁数のうち、前記受信された計算開始桁から桁数単位毎に順次、前記多桁記憶手段の複数の記憶領域から読み出されたそれぞれ対応する桁数単位分の数値を、前記受信された計算の種類に従って十進計算し、この計算結果を前記多桁記憶手段の複数の記憶領域に前記桁数単位毎に順次書き込む処理を、前記計算命令記憶手段に記憶された計算命令で設定されている計算終了桁まで繰り返し行う手段であり、
前記接続端子を介して前記他の電子機器と通信し、前記十進計算手段によって前記一の多桁記憶手段に格納された結果を送信する送信手段を更に備えることを特徴とする請求項６記載の電子機器接続型十進計算装置。
【請求項８】
データ値の各桁の値を所定桁数ごとにアドレス順に格納するデータ用レジスタと、
命令コード及びオペランド部を有して構成された命令をラッチするラッチ部と、
このラッチ部が所与の有効桁数に応じた演算開始桁のレジスタ番地が設定されたオペランド部を有する桁数可変型演算命令をラッチした場合に、オペランド部に設定されたレジスタ番地をカウントアップし演算対象番地として順次出力するカウンタと、
前記データ用レジスタ中の、前記カウンタから順次出力されるそれぞれの演算対象番地に格納されたデータ値を前記ラッチされた命令コードで順次演算していくことで、前記所与の有効桁数での演算結果として出力する演算器と、
を備えたことを特徴とする演算装置。
【請求項９】
データ値の各桁の値を所定桁数ごとにアドレス順に格納するデータ用レジスタと、
所与の有効桁数に応じた演算開始桁のレジスタ番地を変更可能に格納する可変アドレス用レジスタと、
少なくとも命令コードを有する命令をラッチするラッチ部と、
このラッチ部が桁数可変型演算命令をラッチした場合に、前記可変アドレス用レジスタに格納されているレジスタ番地をカウントアップし演算対象番地として順次出力するカウンタと、
前記データ用レジスタ中の、前記カウンタから順次出力されるそれぞれの演算対象番地に格納されたデータ値を、前記ラッチされた命令コードで順次演算していくことで前記所与の有効桁数での演算結果として出力する演算器と、
を備えたことを特徴とする演算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＰＵ（Central Processing Unit）等の演算装置に関する。
【背景技術】
【０００２】
ＣＰＵ等の演算装置を備えた演算システムは従来から広く普及している。普及の一因に、規格化がある。演算システムを構成する演算装置やメモリ等について様々な規格があるが、例えばバイナリ浮動小数点演算を定めた最も一般的な演算規格として、ＡＮＳＩ／ＩＥＥＥ７５４−１９８５標準（以下、単に「ＩＥＥＥ７５４」と称する。）があり、このＩＥＥＥ７５４では、バイナリ浮動小数点演算で扱う数値形式（精度）を、単精度（３２ビット）、倍精度（６４ビット）及び拡張倍精度（９６ビット）の３種類と定めている。現在普及している大部分の演算システムはこのＩＥＥＥ７５４に準拠しており、その演算システムを構成する演算装置やメモリも、勿論ＩＥＥＥ７５４に準拠した製品である。
【０００３】
図２８は、従来の演算システムの論理的な階層構造の一例を示す図である。同図によれば、従来の演算システムは、演算装置であるＣＰＵを最下位層として、下位層から順に、ＣＰＵを統括する基本ソフトウェアであるＯＳ（Operating System）、高級言語で記述された上位層のアプリケーションプログラムを機械語プログラムに変換するコンパイラ、表計算ソフトやワープロソフト等の市販アプリケーション、そしてユーザアプリケーションといった構造となっている。
【０００４】
ＩＥＥＥ７５４に準拠した演算装置の一例としては、ＩＥＥＥ７５４−１９８５標準（ＩＥＥＥ７５４）に適合した掛け算・累積演算を高速に行うデータ処理装置及び方法があるが（特許文献１参照）、ＩＥＥＥ７５４準拠の演算装置が広く普及している好例といえる。
【特許文献１】特開２０００−１０９５９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、規格化を推し進めた従来の演算システムは、例えばＩＥＥＥ７５４といった一定の精度（有効桁数）で演算する回路として組み上げられているため、次のような問題が発生していた。
【０００６】
（１）有効桁数の制約
従来の演算装置を具備した演算システムにおいて、演算の精度即ち有効桁数は、演算規格によって定められた精度（ＩＥＥＥ７５４では、３種類）に限られる。即ち、定められた有効桁数以外での演算を行うことができない。従って、必要とされるぴったりの精度で演算を行えない問題があった。
【０００７】
（２）２進演算による誤差
また、演算装置は２進演算を行うため、演算システム内部において数値データは２進数で表現される。このため、コンパイラで２進１０進変換を行う必要があり、これによる誤差の発生が避けられなかった。例えば、収束計算等において、繰り返し演算をする度に（１）の有効桁数の制約と相まって、誤差が拡大するといった不都合があった。このため、誤差を解消するために、１０進計算の精度よりも大きい精度で２進演算を行う必要があった。
【０００８】
（３）有効桁数の指定
そもそも、演算装置は演算規格で定められた精度で演算を行うように回路構成されている。そのため、機械語の命令コードは、演算装置の演算精度（有効桁数）で演算を行わせるように作成されるため、命令コード自体においても精度（有効桁数）は固定的であった。具体的には、例えばＣ言語等の高級言語において、変数を定義する際には必ず精度（例えば、double等）を特定する必要があり、定義された変数でもって演算がなされる。従って、演算途中（プログラムコードの中途）で、変数の有効桁数を任意に指定するといったプログラムを作成することは不可能であった。勿論、高級言語に限らず機械語のプログラムであっても同様である。命令コード自体において精度（有効桁数）が指定できないので、プログラムで対応する必要があり、プログラム作成が煩雑になった。
【０００９】
上記事情に鑑み、本発明の目的は、計算する際の計算桁数を計算命令により自在に設定できるともに、小規模な計算手段で効率よく、設定した計算桁数の計算を実行する十進計算装置、電子機器接続型十進計算装置及び演算装置を提供することである。
【課題を解決するための手段】
【００１０】
上記課題を解決するために、
請求項１に記載の発明は、
計算命令で計算桁数を設定して多桁の十進計算を行う十進計算装置であって、
予め定められた桁数単位の桁数よりも多い桁数の数値を複数の記憶領域に記憶可能な多桁記憶手段（例えば、図９のレジスタ部３６０）と、
計算桁数と計算の種類とを設定している計算命令を記憶する計算命令記憶手段（例えば、図９のプログラムＲＯＭ３１０）と、
この計算命令記憶手段に記憶された計算命令で設定されている計算桁数のうち、前記桁数単位毎に順次、前記多桁記憶手段の複数の記憶領域に記憶されたそれぞれ対応する桁数単位分の数値を、前記計算命令記憶手段に記憶された計算命令で設定されている計算の種類に従った十進計算で計算し、この計算結果を前記多桁記憶手段の複数の記憶領域に前記桁数単位毎に順次書き込む十進計算を行う十進計算手段（例えば、図９の演算器３７０）と、
を備えることを特徴とする十進計算装置である。
【００１１】
請求項２に記載の発明は、
前記計算命令記憶手段は、前記計算命令の前記計算桁数を計算開始桁と計算終了桁として記憶し（例えば、図９のレジスタＩ，レジスタＷ）、
前記十進計算手段は、前記計算命令記憶手段に記憶された計算命令で設定されている前記計算開始桁から前記計算終了桁まで、前記桁数単位毎に順次、前記多桁記憶手段の複数の記憶領域に記憶されたそれぞれ対応する桁数単位分の数値を、前記計算命令記憶手段に記憶された計算命令で設定されている計算の種類に従った十進計算で計算し、この計算結果を前記多桁記憶手段の複数の記憶領域に前記桁数単位毎に順次書き込む（例えば、図９の演算器３７０；図１３のステップＳＴ２〜ＳＴ１９）ことを特徴とする十進計算装置を構成としても良い。
【００１２】
また請求項３に記載の発明のように、請求項１に記載の十進計算装置であって、
前記計算終了桁は、前記桁数単位を設定単位として設定されていることを特徴とする十進計算装置を構成としても良い。
【００１３】
また請求項４に記載の発明のように、請求項１〜３の何れか一項に記載の十進計算装置であって、
前記多桁記憶手段の記憶領域から前記桁数単位分の数値を被演算子として、同時に複数読み出す読出手段（例えば、図２１のアドレスカウンタ２４０ａ）と、
前記読出手段により読み出されて前記十進計算手段により計算された計算の結果を、前記読出手段による読出対象となった多桁記憶手段の記憶領域に、同時に複数書き込む書込手段（例えば、図２１のアドレスカウンタ２４０ａ）と、
を更に備え、
前記多桁記憶手段は、前記読出手段による読み出しと前記書込手段による書き込みとを交互に受動する手段（例えば、図２１のＦレジスタ２６０ａ；図２２のＦレジスタの処理）であり、
前記十進計算手段による計算の間、前記読出手段による前記多桁記憶手段からの読出しと、前記書込手段による多桁記憶手段への書き込みとが交互に行われることを特徴とする十進計算装置を構成しても良い。
【００１４】
また請求項５に記載の発明のように、請求項４に記載の十進計算装置であって、
前記読出手段は、前記多桁記憶手段の記憶領域から前記桁数単位分の数値を２つをそれぞれ第１の被演算子及び第２に被演算子として同時に２つ読み出す手段（例えば、図２２の１クロック目の「X0,X1を読出」）であり、
前記読出手段により読み出された第２の被演算子を一時記憶する読出一時記憶手段（例えば、図２１のＲｅａｄＦ／Ｆ２７０ｃ）を更に備え、
前記十進計算手段は、前記読出手段により読み出された第１の被演算子に対する第１の十進計算を行った後、前記読出一時記憶手段に記憶された第２の被演算子に対する第２の十進計算を行う手段（例えば、図２１の加算回路２７０ｅ；図２２の加算回路の処理）であり、
前記第１の十進計算の計算結果を一時記憶する書込一時記憶手段（例えば、図２１のＷｒｉｔｅＦ／Ｆ２７０ｆ）を更に備え、
前記書込手段は、前記十進計算手段が次に読み出された被演算子の十進計算をしている間に、前記書込一時記憶手段に記憶されている第１の十進計算の計算結果と、直前の第２の十進計算の計算結果とを同時に多桁記憶手段の記憶領域に書き込む手段（例えば、図２２２の４クロック目の「X0,X1に書込」）である、
ことを特徴とする十進計算装置を構成としても良い。
【００１５】
また請求項６に記載の発明のように、請求項５に記載の十進計算装置であって、
計算命令で計算桁数を設定して多桁の十進計算を行う電子機器接続型十進計算装置（例えば、図２３のＵＳＢ演算装置４００）であって、
予め定められた桁数単位の桁数よりも多い桁数の数値を複数の記憶領域に記憶可能な多桁記憶手段（例えば、図２４のＳＲＡＭ４０３）と、
計算桁数と計算の種類とを設定している計算命令を記憶する計算命令記憶手段（例えば、図２３のフラッシュメモリ４０２）と、
他の電子機器に通信接続するための接続端子（例えば、図２３のＵＳＢ端子Ｕ１）と、
この接続端子を介して前記他の電子機器と通信し、計算桁数と計算の種類とを受信する受信手段（例えば、図２４の通信制御部４０５）と、
前記受信された計算桁数のうち、前記桁数単位毎に順次、前記複数の多桁記憶手段の複数の記憶領域から読み出されたそれぞれ対応する桁数単位分の数値を、前記受信された計算の種類に従って十進計算し、この計算結果を前記多桁記憶手段の複数の記憶領域に前記桁数単位毎に順次書き込む十進計算を行う十進計算手段（例えば、図２４のＣＰＵ４０１）と、
を備えることを特徴とする電子機器接続型十進計算装置である。
【００１６】
また、請求項７に記載の発明のように、請求項６に記載の十進計算装置であって、
前記受信手段は、更に計算開始桁を受信する手段であり（例えば、図２４の通信制御部４０５；図２５のステップＳＴ４１）、
前記十進計算手段は、前記受信された計算桁数のうち、前記受信された計算開始桁から桁数単位毎に順次、前記多桁記憶手段の複数の記憶領域から読み出されたそれぞれ対応する桁数単位分の数値を、前記受信された計算の種類に従って十進計算し、この計算結果を前記多桁記憶手段の複数の記憶領域に前記桁数単位毎に順次書き込む処理を、前記計算命令記憶手段に記憶された計算命令で設定されている計算終了桁まで繰り返し行う手段（例えば、図２４のＣＰＵ４０１；図２５のＳＴ５４〜ＳＴ５５）であり、
前記接続端子を介して前記他の電子機器と通信し、前記十進計算手段によって前記一の多桁記憶手段に格納された結果を送信する送信手段（例えば、図２４の通信制御部４０５；図２５のステップＳＴ４７））を更に備えることを特徴とする電子機器接続型十進計算装置を構成としても良い。
【００１７】
請求項８に記載の発明は、
データ値の各桁の値を所定桁数ごとにアドレス順に格納するデータ用レジスタ（例えば、図３のレジスタ部２６０）と、
命令コード（例えば、図３の命令部１０）及びオペランド部（例えば、図３のオペランド部２０）を有して構成された命令をラッチするラッチ部（例えば、図３のラッチ部２１４）と、
このラッチ部が所与の有効桁数に応じた演算開始桁のレジスタ番地（例えば、データＳｌ）が設定されたオペランド部を有する桁数可変型演算命令（例えば、連続ワード命令）をラッチした場合に、オペランド部に設定されたレジスタ番地をカウントアップし演算対象番地（例えば、セレクタ２３４を介してアドレス端子Ｓｌａｄに入力されるデータ）として順次出力するカウンタ（例えば、図３のアドレスカウンタ２４０）と、
前記データ用レジスタ中の、前記カウンタから順次出力されるそれぞれの演算対象番地に格納されたデータ値を前記ラッチされた命令コードで順次演算していくことで、前記所与の有効桁数での演算結果として出力する演算器（例えば、図３の演算器２７０）と、
を備えたことを特徴とする演算装置（例えば、図３の演算装置２００）である。
【００１８】
請求項９に記載の発明は、
データ値の各桁の値を所定桁数ごとにアドレス順に格納するデータ用レジスタ（例えば、図３のレジスタ部２６０）と、
所与の有効桁数に応じた演算開始桁のレジスタ番地を変更可能に格納する可変アドレス用レジスタ（例えば、図３の可変パラメータ記憶部２２０内のレジスタＶ）と、
少なくとも命令コードを有する命令をラッチするラッチ部（例えば、図３のラッチ部２１４）と、
このラッチ部が桁数可変型演算命令をラッチした場合に、前記可変アドレス用レジスタに格納されているレジスタ番地をカウントアップし演算対象番地として順次出力するカウンタ（例えば、図３のアドレスカウンタ２４０）と、
前記データ用レジスタ中の、前記カウンタから順次出力されるそれぞれの演算対象番地に格納されたデータ値を、前記ラッチされた命令コードで順次演算していくことで前記所与の有効桁数での演算結果として出力する演算器（例えば、図３の演算器２７０）と、
を備えたことを特徴とする演算装置（例えば、図３の演算装置２００）である。
【発明の効果】
【００１９】
請求項１に記載の発明によれば、予め定められた桁数単位の桁数よりも多い桁数の数値を記憶可能な多桁記憶手段の複数の記憶領域から桁数単位毎に順次読み出して十進計算できるので、多桁の数値の計算を、そのまま十進計算するのでなく、桁数単位毎の小規模な十進計算に分けて行える。また、多桁記憶手段の複数の記憶領域全体で計算するのではなく、計算命令記憶手段に記憶された計算命令で設定されている計算桁数分だけを桁数単位毎の小規模な十進計算に分けて行うので、ちょうど、計算命令で設定されている計算桁数まで、無駄なく効率よく計算を行う。更に、ユーザ作成のプログラム等により予め計算命令で計算桁数を設定して記憶しておけば、計算命令記憶手段に記憶された計算命令で設定されている計算桁数ちょうどの十進計算を行えるので、予め計算命令で計算桁数を設定しておくことにより、効率の良い十進計算を容易に行えるようになる。従って、多桁の計算を小規模な構成で、効率よく実行でき、更に、予め所望する計算桁数を設定した計算命令を記憶させておくことで、設定した計算桁数での効率のよい十進計算を容易に実行することができる。
【００２０】
請求項２記載の発明によれば、請求項１に記載の発明と同様の効果を奏するとともに、計算命令で設定されている計算開始桁から計算終了桁までを桁数単位毎に十進計算することができるので、各計算命令に応じた効率の良い十進計算を高精度に実行することができる。
【００２１】
請求項３記載の発明によれば、請求項２に記載の発明と同様の効果を奏するとともに、計算終了桁は、桁数単位を設定単位として設定されているため、簡易な回路構成を実現することができる。
【００２２】
請求項４に記載の発明によれば、請求項１〜３の何れか一向に記載の発明と同様の効果を奏するとともに、十進計算手段による計算の間、多桁記憶手段からの読み出しと書き込みを交互に連続して行うことができるため、十進計算手段による十進計算を連続して効率よく行うことができる。これにより、計算時間を短縮して、高速に演算を行うことができる。
【００２３】
請求項５に記載の発明によれば、請求項４に記載の発明と同様の効果を奏するとともに、十進計算手段による計算の間に次の桁数分の数値を被演算子として読み出し、読み出した被演算子を読出一時記憶手段に一時記憶させ、十進計算手段は、第１の被演算子に対する十進計算を行った後、読出し一時記憶手段に記憶された第２の被演算子に対する十進計算を行うため、被演算子の読出しに時間を要することなく、十進計算手段による十進計算を順次行うことができる。また、十進計算手段により計算された計算結果を書込一時記憶手段に一時記憶させ、次に読み出された被演算子の十進計算をしている間に、直前に十進計算手段により出力された２つの計算結果を同時に多桁記憶手段に格納することができる。これにより、処理の高速化を図ることができる。
【００２４】
請求項６記載の発明によれば、他の電子機器と接続させ、他の電子機器から受信した計算桁数に基づいて、多桁の計算を小規模な構成で、効率よく実行し、その計算結果を他の電子機器に送信することができる。
【００２５】
請求項７に記載の発明によれば、請求項６記載の発明の効果と同様の効果を奏するとともに、他の電子機器から受信した計算桁数及び計算開始桁に基づいて、桁数単位毎に小規模な十進計算をすることができるので、各計算命令に応じた効率の良い十進計算を高精度に実行して、その計算結果を他の電子機器に送信することができる。
【００２６】
請求項８に記載の発明によれば、桁数可変型命令をラッチした場合に、オペランド部に設定された、所与の有効桁数に応じた演算開始桁のレジスタ番地をカウントアップして順次演算対象番地とし、演算対象番地に格納されたデータ用レジスタ中のデータ値をラッチした命令コードで順次演算することで、所与の有効桁数の演算結果として出力する演算装置を実現できる。データ用レジスタでは、データ値の各桁の値が所定桁数毎にアドレス順に格納されており、演算開始桁のレジスタ番地から順次カウントアップされて演算対象番地となる。即ち、オペランド部に設定された演算開始桁から順に当該命令の演算がなされるので、所望の有効桁数に応じた演算開始桁をオペランド部に設定することで、有効桁数を自在に可変することのできる演算を行わせることができる。
【００２７】
請求項９に記載の発明によれば、桁数可変型命令をラッチした場合に、可変アドレス用レジスタに格納されている演算開始桁のレジスタ番地をカウントアップして順次演算対象番地とし、演算対象番地に格納されたデータ用レジスタ中のデータ値をラッチした命令コードで順次演算することで、所与の有効桁数の演算結果として出力する演算装置を実現できる。データ用レジスタでは、データ値の各桁の値が所定桁数毎にアドレス順に格納されており、演算開始桁のアドレス番地から順次カウントアップされて演算対象番地となる。即ち、可変アドレス用レジスタに格納されているレジスタ番地の演算開始桁から順に当該命令の演算がなされるので、所望の有効桁数に応じた演算開始桁のレジスタ番地の値を可変アドレス用レジスタに格納することで、有効桁数を自在に可変することのできる演算を行わせることができる。更に、可変アドレス用レジスタは演算開始桁のレジスタ番地を変更可能に格納するため、演算開始桁を命令のオペランド部に直接設定する必要がなく、演算途中の演算結果の値を可変アドレス用レジスタに格納するといったプログラミングが可能となる。
【発明を実施するための最良の形態】
【００２８】
［第１の実施の形態］
以下、図面を参照して本発明を実施するための第１の実施の形態を説明する。
【００２９】
図１は、本第１の実施の形態における演算装置の基本構造を示す概略図である。同図によれば、本実施の形態において、演算装置は、主に、演算プログラムを格納するプログラムＲＯＭ、演算プログラムを読み出して実行する演算制御回路、演算データを一時的に格納するためのレジスタ部から構成される。
【００３０】
そして、レジスタ部の演算桁数（有効桁数）は可変に構成されており、加減乗除の四則演算や平方根等の基本演算、対数関数や三角関数等の初等関数演算での演算桁数の可変を実現し、また、特殊関数や統計分布関数等の高等関数演算、漸化式等の演算での収束条件の可変を実現している。更に、演算制御回路では、１０進演算を行うことで、２進１０進変換による誤差の発生を防止している。
【００３１】
続いて、このような演算装置を備えた演算システムの具体例を説明する。
図２（ａ）は、本実施の形態における演算システムＳの概略構成図である。同図によれば、本実施の形態において、演算システムＳ１は、ＰＣ（Personal Computer）１００と、演算装置２００とを備えている。ＰＣ１００と演算装置２００とはＵＳＢ（Universal Serial Bus）ケーブル等の通信ケーブルＫで接続され、相互にデータ転送可能になっている。
【００３２】
ＰＣ１００は、ＣＰＵ（Central Processing Unit）やＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access memory）、キーボードやマウス等の入力装置、ディスプレイ等の表示装置、通信ケーブルＫを接続可能な接続端子を有する通信装置を備えて構成される公知の汎用コンピュータで実現され、本演算システムＳとユーザとの間のマンマシンインターフェースとして機能する。
【００３３】
即ち、ＰＣ１００は、ユーザによって任意に指定される演算桁数と、演算の種類（四則演算、初等関数、高等関数等）と、演算対象の初期データ値とに基づいて機械語プログラムを生成し、演算装置２００に転送する装置であり、演算自体は演算装置２００において実行される。また、演算装置２００による演算結果を表示装置に表示する。
【００３４】
演算装置２００は、ＰＣ１００から転送されてきた機械語プログラムに従った数値演算を実行する装置であり、特に、機械語プログラムを構成する各命令それぞれを、当該命令において指定された演算桁数で演算する。そして、演算結果をＰＣ１００に転送する。
【００３５】
ところで、演算装置２００で実行される数値演算は、演算桁数の指定の仕方によって、（１）直接アドレス方式と、（２）間接アドレス方式と、の２つの方式に分類される。
【００３６】
図２（ｂ）に示すように、直接アドレス方式は、演算桁数をオペランド部にて直接的に指定する命令方式のことである。演算装置２００は、命令のオペランド部で指定された演算桁数で該命令の数値演算を実行する。
【００３７】
一方、間接アドレス方式は、演算桁数を格納している格納先を指定（即ち、演算桁数を間接的に指定）する命令方式のことである。演算装置２００は、命令によって指定された格納先から演算桁数とする値を読み出し、読み出した演算桁数で該命令の数値演算を実行する。
【００３８】
図３は、演算装置２００の回路構成を示すブロック図であり、数値演算の実行に係る要部構成を示している。同図によれば、演算装置２００は、プログラムＲＯＭ２１０と、プログラムカウンタ２１２と、ラッチ部２１４と、命令デコーダ２１６と、可変パラメータ記憶部２２０と、セレクタ２３１、２３２、２３３、２３４と、アドレスカウンタ２４０と、レジスタ部２６０と、演算器２７０と、終了判定回路２５０とを備えて構成される。
【００３９】
プログラムＲＯＭ２１０は、例えば電気的に書き換え可能なメモリであるＥＥＰＲＯＭ（Electrical Erasable Programmable ROM）で構成され、ＰＣ１００から転送されてきた機械語プログラムをプログラム命令２１１として格納する。このプログラム命令２１１は、計算の種類と計算桁数とを設定している計算命令からなり、１以上の任意の計算命令を組み合わせて構成される。プログラムＲＯＭ２１０に格納されたプログラム命令２１１は、アドレスカウンタ２４０が示すアドレスの命令が１つづつ読み出されてラッチ部２１４にラッチされる。尚、プログラムＲＯＭ２１０は、電気的に書き換え可能な不揮発性のＲＡＭ等により構成されてもよい。ラッチ部２１４は、ＲＡＭ等の書き込み自在なメモリで構成され、プログラムＲＯＭから読み出された１つの命令を保持する。
【００４０】
ここで、１つの命令は、命令部１０及びオペランド部２０から構成される。命令部１０は、命令コードＯＰ及び３ビット（bit）の拡張命令コードＥＸＴを有する。また、オペランド部２０は、それぞれ６ビットの第１オペランド２１及び第２オペランド２２を有しており、第１オペランド２１は、２ビットのデータＦｕ及び４ビットのデータＦｌから成り、第２オペランド２２は、２ビットのデータＳｕ及び４ビットのデータＳｌから成る。尚、これらの各データの詳細については後述する。
【００４１】
命令デコーダ２１６は、ラッチ部２１４にラッチされた命令コードＯＰを解読（デコード）し、解読した命令を演算器２７０に実行させるための演算制御信号を演算器２７０に出力するといった、演算装置２００内の各種制御回路を実行させるための各種制御信号を出力する。
【００４２】
可変パラメータ記憶部２２０は、ＲＡＭ等で構成され、それぞれ４ビットデータを格納可能なレジスタＷ、Ｖを備えている。このレジスタＷ、Ｖは、間接アドレス方式の場合に演算桁数の格納先となるものであり、演算桁数となる値を変更可能に格納する。
【００４３】
セレクタ２３１には、ラッチ部２１４にラッチされたデータＦｌ及びレジスタＷに格納されているデータ（以下、「データｗ」と称する。）が入力されるとともに、拡張命令コードＥＸＴの３ビット目のデータ（以下、「データＥＸＴ［３］」と称する。）が選択制御信号として入力される。そして、セレクタ２３１は、選択制御信号即ちデータＥＸＴ［３］の値に従って、２つの入力データの何れか一方を選択して出力する。具体的には、データＥＸＴ［３］の値が「１」の場合にはデータｗを選択して出力し、「０」の場合にはデータＦｌを選択して出力する。
【００４４】
セレクタ２３２には、ラッチ部２１４にラッチされたデータＳｌ及びレジスタＶに格納されているデータ（以下、「データｖ」と称する。）が入力されるとともに、拡張命令コードＥＸＴの２ビット目のデータ（以下、「データＥＸＴ［２］」と称する。）が選択制御信号として入力される。そして、セレクタ２３２は、選択制御信号即ちデータＥＸＴ［２］の値に従って、２つの入力データの何れか一方を選択して出力する。具体的には、データＥＸＴ［２］の値が「１」の場合にはデータｖを選択して出力し、「０」の場合にはデータＳｌを選択して出力する。
【００４５】
アドレスカウンタ２４０は、４ビットのアップカウンタであり、セレクタ２３２の出力データが初期値としてセットされる。そして、内部クロックに同期してカウントアップし、現在のカウント値を出力する。
【００４６】
セレクタ２３３には、セレクタ２３１の出力データ及びアドレスカウンタ２４０の出力データ（カウント値）が入力されるとともに、拡張命令コードＥＸＴの１ビット目のデータ（以下、「データＥＸＴ［１］と称する。」が選択制御信号として入力される。そして、セレクタ２３３は、データＥＸＴ［１］の値に従って、２つの入力データの何れか一方を選択して出力する。具体的には、データＥＸＴ［１］の値が「１」の場合にはセレクタ２３１の出力データを選択して出力し、「０」の場合にはアドレスカウンタ２４０の出力データを選択して出力する。
【００４７】
セレクタ２３４には、セレクタ２３２の出力データ及びアドレスカウンタ２４０の出力データが入力されるとともに、データＥＸＴ［１］が選択制御信号として入力される。そして、セレクタ２３４は、データＥＸＴ［１］の値に従って、２つの入力データの何れか一方を選択して出力する。具体的には、データＥＸＴ［１］の値が「１」の場合にはセレクタ２３２の出力データを選択して出力し、「０」の場合にはアドレスカウンタ２４０の出力データを選択して出力する。
【００４８】
終了判定回路２５０は、一致回路２５２及びＯＲゲート２５４を有する。
一致回路２５２は、セレクタ２３１の出力データ及びアドレスカウンタ２４０の出力データが入力され、２つの入力データが一致する場合に一致信号「１」を出力し、一致しない場合には不一致信号「０」を出力する。ＯＲゲート２５４は、一致回路２５２の出力信号及びデータＥＸＴ［１］が入力され、２つの入力信号の論理和の信号を出力する。
【００４９】
従って、終了判定回路２５０は、アドレスカウンタ２４０の出力データとセレクタ２３１の出力データとが一致した場合、或いは、データＥＸＴ［１］の値が「１」である場合に命令終了信号「１」を出力し、これ以外の場合には命令継続信号「０」を出力する。
【００５０】
レジスタ部２６０は、ＲＡＭ等で構成され、ＢＣＤコード化された演算データの各桁の値を所定桁数毎にアドレス順に格納するデータ用レジスタである。また、レジスタ部２６０は、アドレス指定及びデータ出力をそれぞれ２ポート有する２ポート(Dual Port)方式のレジスタである。
【００５１】
第１ポート（Firstポート）では、アドレス端子Ｆｕａｄから入力される２ビットデータを上位アドレスとし、アドレス端子Ｆｌａｄから入力される４ビットデータを下位アドレスとする６ビットのアドレスＦａｄに格納されている１６ビットデータを、出力端子Ｆｏｕｔから出力する。アドレス端子Ｆｕａｄには、ラッチ部２１４にラッチされたデータＦｕが入力され、アドレス端子Ｆｌａｄには、セレクタ２３３の出力データが入力される。
【００５２】
第２ポート（Secondポート）では、アドレス端子Ｓｕａｄから入力される２ビットデータを上位アドレスとし、アドレス端子Ｓｌａｄから入力される４ビットデータを下位アドレスとする６ビットのアドレスＳａｄに格納されている１６ビットデータを、出力端子Ｓｏｕｔから出力する。アドレス端子Ｓｕａｄには、ラッチ部２１４にラッチされたデータＳｕが入力され、アドレス端子Ｓｌａｄには、セレクタ２３４の出力データが入力される。
【００５３】
また、レジスタ部２６０には、入力端子Ｆｉｎから１６ビットデータが入力され、入力データは、アドレスＦａｄに書き込まれる。
【００５４】
演算器２７０は、１６ビット演算が可能であり、終了判定回路２５０から命令終了信号「１」が出力されていない間（即ち、命令継続信号「０」が出力されている間）、命令デコーダ２１６から入力される演算制御信号に従った演算を行う。即ち、演算器２７０は、レジスタ部２６０の出力端子Ｆｏｕｔ、Ｓｏｕｔそれぞれから出力される１６ビットデータが入力され、２つの入力データに対する演算を行い、演算結果を１６ビットデータで出力する。演算器２７０の出力データ（演算結果）はレジスタ部２６０の入力端子Ｆｉｎに入力され、レジスタ部２６０に書き込まれる。
【００５５】
図４は、レジスタ部２６０の詳細構成を示す図である。同図によれば、レジスタ部２６０は、４本のレジスタＸ、Ｙ、Ｚ、Ａを備えており、各レジスタは、それぞれ１６ワード（Word）で構成されている。ここで、１ワードは１６ビットであり、演算データはＢＣＤコード化されて格納されているので、１ワードは１０進表示で４桁に相当する。また、各レジスタは浮動小数点型のデータを格納し、そのフォーマットは、上位１４ワード（第２〜第１５ワード）が仮数部、下位２ワード（第０〜第１ワード）が指数部（符号を含む）となっている。
【００５６】
レジスタ部２６０のアドレス指定は、２ビットの上位アドレスでレジスタを指定し、４ビットの下位アドレスでレジスタ内のワードを指定することでなされる。即ち、レジスタ部２６０のアドレス指定はワード単位で行われ、１ワード分のデータ即ち１６ビットデータが出力される。尚、上位アドレスＦｕａｄ、Ｓｕａｄの値とレジスタとは、図５のデータテーブルに示すように対応付けられている。また、下位アドレスＦｌａｄ、Ｓｌａｄは、それぞれ、その値がワードを示す。
【００５７】
具体的には、第１ポートでは、２ビットの上位アドレスＦｕａｄ［１：０］でレジスタを指定し、４ビットの下位アドレスＦｌａｄ［３：０］でレジスタ内のワードを指定して、１ワード即ち１６ビットのデータＦｏｕｔ［１５：０］を出力する。また、第２ポートでは、２ビットの上位アドレスＳｕａｄ［１：０］でレジスタを指定し、４ビットの下位アドレスＳｌａｄ［１５：０］でレジスタ内のワードを指定して、１ワード即ち１６ビットのデータＳｏｕｔ［１５：０］を出力する。
【００５８】
更に、データ入力は、１ワード即ち１６ビットのデータＦｉｎ［１５：０］が入力され、これは、アドレスＦａｄで指定されたワードに書き込まれる。
【００５９】
ところで、本演算システムＳで実行される命令は、１命令に対する演算器２７０の演算回数によって、（１）１ワード命令と、（２）連続ワード命令（桁数可変型演算命令）と、の２つの命令に分類される。
【００６０】
１ワード命令では、１命令について各ポートで１つのワードのみを指定し、演算器２７０は演算を１回のみ行う。従って、１ワード命令では、アドレスＦａｄで指定される１ワードの演算データが被演算数となり、アドレスＳａｄで指定される１ワードの演算データが演算数となる。
【００６１】
一方、連続ワード命令では、１命令について各ポートで連続する複数のワードを順に指定し、演算器２７０は、各ワードについての演算を順に行う。即ち、演算器２７０は、順に指定されるワードの演算データそれぞれに対する同一の演算を繰り返し行う。このとき、下位アドレスＦｌａｄ、Ｓｌａｄは、それぞれ、指定された開始ワードから終了ワードまでを順に指定する。即ち、開始ワードをｎ、終了ワードをｍとすると、上位アドレスＦｕａｄ、Ｓｕａｄで指定する各レジスタについて第ｎワードから第ｍワードまで連続する合計（ｍ−ｎ＋１）ワードが順に指定されて演算が行われ、演算結果が上位アドレスＦｕａｄで指定するレジスタの第ｎワードから第ｍワードに書き込まれる。即ち、１０進表現で（４×（ｍ−ｎ＋１））桁での数値演算が行われる。
【００６２】
従って、連続ワード命令では、アドレスＦｕａｄで指定されるレジスタの第ｎワードから第ｍワードまでの連続するワードの演算データが被演算数となり、アドレスＳｕａｄで指定されるレジスタの第ｎワードから第ｍワードまでの連続するワードの演算データが演算数となる。
【００６３】
開始ワード及び終了ワードは、命令のオペランド部２０に含まれるデータ或いは可変パラメータ記憶部２２０に記憶されているデータによって指定される。具体的には、開始ワードは、間接アドレス方式の場合にはデータｖで指定され、直接アドレス方式の場合にはデータＳｌで指定される。また、終了ワードは、間接アドレス方式の場合にはデータｗで指定され、直接アドレス方式の場合にはデータＦｌで指定される。
【００６４】
図６は、連続ワード命令における開始ワード及び終了ワードの指定例を示す図である。同図では、終了ワードを「１５」と固定し、開始ワードを可変した場合を示している。同図に示すように、開始ワードを、仮数部の最下位ワードである第２ワードから最上位ワードである第１５ワードまで変化させると、演算桁数は、１０進表現で５６桁、５２桁、４８桁、・・・、４桁と、１ワード即ち４桁刻みで可変する。つまり、連続ワード命令では、開始ワード及び終了ワードを適当に設定することで、所望の演算桁数での数値演算を実現することができる。
【００６５】
この連続ワード命令／１ワード命令の別、及び、上述した間接／直接アドレス方式の別は、命令に含まれる拡張命令コードＥＸＴで指定される。
【００６６】
拡張命令コードＥＸＴは、図７に示すように、３ビットで構成され、図中右から順に１ビット目、２ビット目、３ビット目である。そして、１ビット目（ＥＸＴ［１］）は連続／１ワード命令の別を示し、１ワード命令の場合には「１」が設定され、連続ワード命令の場合には「０」が設定される。
【００６７】
２ビット目（ＥＸＴ［２］）は、開始ワードの間接／直接アドレス方式の別を示し、間接アドレス方式の場合には「１」が設定され、直接アドレス方式の場合には「０」が設定される。但し、１ワード命令の場合には、１ワードの演算データについて１回のみの演算がなされるため、開始ワードのデータがそのまま被演算数となる。
【００６８】
また、３ビット目（ＥＸＴ［２］）は、終了ワードの間接／直接アドレス方式の別を示し、間接アドレス方式の場合には「１」が設定され、直接アドレス方式の場合には「０」が設定される。但し、１ワード命令の場合には、終了ワードのデータがそのまま演算数となる。
【００６９】
図８は、拡張命令コードＥＸＴが取り得る値それぞれについての命令の機能例を示す図である。尚、同図中、命令部のオペコード「ＡＤＤ」は“加算”を表す命令コードであり、「ＡＤＤ」に続く３ビットのデータは拡張命令コードＥＸＴを表している。また、オペランド部中の「＊」は“指定不要（任意のワード）”を表している。また、ニーモニック及び動作中の「ｗ」はレジスタＷに格納されているデータｗを表し、「ｖ」はレジスタＶに格納されているデータｖを表している。
【００７０】
拡張命令コードＥＸＴの各ビットの値は、パターン（Ａ）〜（Ｈ）の合計８パターンある。このパターン（Ａ）〜（Ｈ）毎の演算装置２００の具体的な動作例について、以下、順に説明する。
【００７１】
（Ａ）拡張命令コードＥＸＴ＝「０００」
この場合、命令は連続ワード命令であり、直接アドレス方式で実行される。例えば、命令「ＡＤＤ  ０００  Ｘ１５  Ｙ４」を実行する場合、演算装置２００は次のように動作する。
【００７２】
先ず、ラッチ部２１４には、Ｆｕ＝「００（Ｘ）」、Ｆｌ＝「１１１１（１５）」、Ｓｕ＝「０１（Ｙ）」、Ｓｌ＝「０１００（４）」、ＯＰ＝「ＡＤＤ」、ＥＸＴ＝「０００」がラッチされる。
【００７３】
そして、セレクタ２３１では、選択制御信号としてＥＸＴ［３］＝「０」が入力され、Ｆｌ＝「１１１１」が選択・出力される。また、セレクタ２３２では、選択制御信号としてＥＸＴ［２］＝「０」が入力され、Ｓｌ＝「０１００」が選択・出力される。次いで、アドレスカウンタ２４０には、セレクタ２３２の出力データ即ちＳｌ＝「０１００」がセットされる。続いて、セレクタ２３３、２３４では、ともに選択制御信号としてＥＸＴ［１］＝「０」が入力され、アドレスカウンタ２４０の出力データ即ちＳｌ＝「０１００」が選択・出力される。
【００７４】
従って、レジスタ部２６０のアドレス端子ＦｕａｄにはＦｕ＝「００」が入力され、アドレス端子Ｆｌａｄにはセレクタ２３３の出力データ即ち「０１００」が入力されて、レジスタＸの第４ワードに格納されている演算データが出力端子Ｆｏｕｔから出力される。また、アドレス端子ＳｕａｄにはＳｕ＝「０１」が入力され、アドレス端子Ｓｌａｄにはセレクタ２３３の出力データ即ち「０１００」が入力されて、レジスタＹの第４ワードに格納されている演算データが出力端子Ｓｏｕｔから出力される。
【００７５】
一方、命令デコーダ２１６からは加算を指示する演算制御信号が演算器２７０に対して出力され、演算器２７０では、レジスタ部２６０から出力された２つの演算データが加算される。そして、加算結果がレジスタ部２６０の入力端子Ｆｉｎに入力され、レジスタＸの第４ワードに書き込まれる（動作：Ｘ４＋Ｙ４→Ｘ４）。
【００７６】
また、終了判定回路２５０では、セレクタ２３１の出力データ（Ｓｕ＝「１１１１」）とアドレスカウンタ２４０の出力データ（Ｓｌ＝「０１００」）とが一致しないため、一致回路２５２から不一致信号「０」が出力されるととともに、ＥＸＴ［１］＝「０」であるため、命令継続信号「０」が出力される。
【００７７】
続いて、アドレスカウンタ２４０がカウントアップし、セレクタ２３３、２３４からは、ともに「０１０１（５）」が出力される。従って、レジスタ部２６０のアドレス端子Ｆｌａｄ、Ｓｌａｄにはともに「０１０１」が入力されて、レジスタＸの第５ワードに格納されている演算データが出力端子Ｆｏｕｔから出力され、レジスタＹの第５ワードに格納されている演算データが出力端子Ｓｏｕｔから出力される。そして、これらの出力データが演算器２７０にて加算され、加算結果がレジスタＸの第５ワードに書き込まれる（動作：Ｘ５＋Ｙ５→Ｘ５）。一方、終了判定回路２５０から、命令継続信号「０」が出力される。
【００７８】
その後も、演算器２７０が加算を行う毎にアドレスカウンタ２４０がカウントアップし、レジスタ部２６０のアドレス端子Ｆｌａｄ、Ｓｌａｄには、「０１１０（６）」、「０１１１（７）」、・・・が順に入力される。つまり、レジスタ部２６０の出力端子Ｆｏｕｔから、レジスタＸの第６ワードに格納されている演算データ、第７ワードに格納されている演算データ、・・・が順に出力されるとともに、出力端子Ｓｏｕｔから、レジスタＹの第６ワードに格納されている演算データ、第７ワードに格納されている演算データ、・・・が順に出力される。そして、これらの演算データが出力順に演算器２７０にて加算され、加算結果がＸレジスタの第６ワード、第７ワード、・・・と順に書き込まれる。
【００７９】
そして、アドレスカウンタ２４０の出力データ（カウント値）が「１１１１」になると、一致回路２５２から一致信号「１」が出力されて、終了判定回路２５０から命令終了信号「１」が出力される。すると、演算器２７０は演算を終了し、該命令の実行が終了する。
【００８０】
このように、命令「ＡＤＤ  ０００  Ｘ１５  Ｙ４」では、レジスタＸ、Ｙについて、第４ワードから第１５ワードまで１２ワード連続して加算が実行され、演算結果がレジスタＸの第４ワードから第１５ワードに順に書き込まれる（動作：Ｘ４〜１５＋Ｙ４〜１５→Ｘ４〜１５）。即ち、有効桁数が１０進表現で４８（＝４×１２ワード）桁の数値演算が実行される。
【００８１】
（Ｂ）拡張命令コードＥＸＴ＝「０１０」
この場合、命令は連続ワード命令であり、間接アドレス方式で実行される。例えば、命令「ＡＤＤ  ０１０  Ｘ１５  Ｙ＊」を実行する場合、演算装置２００は次のように動作する。
【００８２】
先ず、ラッチ部２１４には、Ｆｕ＝「００」、Ｆｌ＝「１１１１」、Ｓｕ＝「０１」、データＳｌ＝「＊」、ＯＰ＝「ＡＤＤ」、ＥＸＴ＝「０１０」がラッチされる。
【００８３】
そして、セレクタ２３１では、選択制御信号として「０」が入力され、Ｆｌ＝「１１１１」が選択・出力される。また、セレクタ２３２では、選択制御信号として「１」が入力され、データｖが選択・出力されて、アドレスカウンタ２４０にはデータｖがセットされる。次いで、セレクタ２３３、２３４では、ともに選択制御信号として「０」が入力され、データｖが選択・出力される。
【００８４】
従って、レジスタ部２６０のアドレス端子Ｆｕａｄには「００」が入力され、アドレス端子Ｆｌａｄにはデータｖが入力されて、レジスタＸの第ｖワードに格納されている演算データが出力端子Ｆｏｕｔから出力される。また、アドレス端子Ｓｕａｄには「０１」が入力され、アドレス端子Ｓｌａｄにはデータｖが入力されて、レジスタＹの第ｖワードに格納されている演算データが出力端子Ｓｏｕｔから出力される。そして、レジスタ部２６０から出力された２つの演算データが演算器２７０にて加算され、加算結果がレジスタＸの第ｖワードに書き込まれる（動作：Ｘｖ＋Ｙｖ→Ｘｖ）。
【００８５】
その後、終了判定回路２５０から命令終了信号「１」が出力されない間、アドレスカウンタ２４０が演算器２７０による演算毎にカウントアップして、レジスタ部２６０の出力端子Ｆｏｕｔから、レジスタＸの第（ｖ＋１）ワードに格納されている演算データ、第（ｖ＋２）ワードに格納されている演算データ、・・・が順に出力されるとともに、出力端子Ｓｏｕｔから、レジスタＹの第（ｖ＋１）ワードに格納されている演算データ、第（ｖ＋２）ワードに格納されている演算データ、・・・が順に出力される。そして、これらの演算データが出力順に演算器２７０にて加算され、演算結果がレジスタＸの第（ｖ＋１）ワード、第（ｖ＋２）ワード・・・に順に書き込まれる。
【００８６】
そして、アドレスカウンタ２４０の出力データが「１１１１」になると、一致回路２５２から一致信号「１」が出力され、終了判定回路２５０から命令終了信号「１」が出力されて、該命令の実行が終了する。
【００８７】
このように、命令「ＡＤＤ  ０１０  Ｘ１５  Ｙ＊」では、レジスタＸ、Ｙについて、第ｖワードから第１５ワードまで連続して加算が実行され、演算結果がレジスタＸの第ｖワードから第１５ワードまで順に書き込まれる（動作：Ｘｖ〜１５＋Ｙｖ〜１５→Ｘｖ〜１５）。
【００８８】
またこの場合、開始ワードはデータｖで指定される。データｖの値は変更可能であるので、所望の演算桁数に応じた値を格納することで、図６を参照して説明したように、任意の演算桁数での数値演算を演算装置２００に行わせることができる。
【００８９】
（Ｃ）拡張命令コードＥＸＴ＝「１００」
この場合、命令は連続ワード命令であり、間接アドレス方式で実行される。例えば、命令「ＡＤＤ  １００  Ｘ＊  Ｙ４」を実行する場合、演算装置２００は次のように動作する。
【００９０】
先ず、ラッチ部２１４には、Ｆｕ＝「００」、Ｆｌ＝「＊」、Ｓｕ＝「０１」、Ｓｌ＝「０１００」、ＯＰ「ＡＤＤ」、ＥＸＴ＝「１００」がラッチされる。
【００９１】
そして、セレクタ２３１では、選択制御信号として「１」が入力され、データｗが選択・出力される。また、セレクタ２３２では、選択制御信号として「０」が入力され、Ｓｌ＝「０１００」が選択・出力されて、アドレスカウンタ２４０にはＳｌ＝「０１００」がセットされる。次いで、セレクタ２３３、２３４では、ともに選択制御信号として「０」が入力され、「０１００」が選択・出力される。
【００９２】
従って、レジスタ部２６０のアドレス端子Ｆｕａｄには「００」が入力され、アドレス端子Ｆｌａｄには「０１００」が入力されて、レジスタＸの第４ワードに格納されている演算データが出力端子Ｆｏｕｔから出力される。また、アドレス端子Ｓｕａｄには「０１」が入力され、アドレス端子Ｓｌａｄには「０１００」が入力されて、レジスタＹの第４ワードに格納されている演算データが出力端子Ｓｏｕｔから出力される。そして、レジスタ部２６０から出力された２つの演算データが演算器２７０にて加算され、加算結果がレジスタＸの第４ワードに書き込まれる（動作：Ｘ４＋Ｙ４→Ｘ４）。
【００９３】
その後、終了判定回路２５０から命令終了信号「１」が出力されない間、演算器２７０はレジスタ部２６０から出力される演算データに対する演算（加算）を繰り返し実行し、アドレスカウンタ２４０は、演算器２７０による演算毎にカウントアップする。そして、アドレスカウンタ２４０の出力データがデータｗに一致すると、終了判定回路２５０から命令終了信号「１」が出力されて、該命令の実行が終了する。
【００９４】
このように、命令「ＡＤＤ  １００  Ｘ＊  Ｙ４」では、レジスタＸ、Ｙについて、第４ワードから第ｗワードまで連続して加算が実行され、演算結果がレジスタＸの第４ワードから第ｗワードに順に書き込まれる（動作：Ｘ４〜ｗ＋Ｙ４〜ｗ→Ｘ４〜ｗ）。
【００９５】
またこの場合、終了ワードはデータｗで指定される。データｗの値は変更可能であるので、所望の演算桁数に応じた値を格納することで、任意の演算桁数での数値演算を演算装置２００に行わせることができる。
【００９６】
（Ｄ）拡張命令コードＥＸＴ＝「１１０」
この場合、命令は連続ワード命令であり、間接アドレス方式で実行される。例えば、命令「ＡＤＤ  １１０  Ｘ＊  Ｙ＊」を実行する場合、演算装置２００は次のように動作する。
【００９７】
先ず、ラッチ部２１４には、Ｆｕ＝「００」、Ｆｌ＝「＊」、Ｓｕ＝「０１」、Ｓｌ＝「＊」、ＯＰ＝「ＡＤＤ」、ＥＸＴ＝「１１０」がラッチされる。
【００９８】
そして、セレクタ２３１では、選択制御信号として「１」が入力され、データｗが選択・出力される。また、セレクタ２３２では、選択制御信号として「１」が入力され、データｖが選択・出力されて、アドレスカウンタ２４０にはデータｖがセットされる。次いで、セレクタ２３３、２３４では、ともに選択制御信号として「０」が入力され、データｖが選択・出力される。
【００９９】
従って、レジスタ部２６０のアドレス端子Ｆｕａｄには「００」が入力され、アドレス端子Ｆｌａｄにはデータｖが入力されて、レジスタＸの第ｖワードに格納されている演算データが出力端子Ｆｏｕｔから出力される。また、アドレス端子Ｓｕａｄには「０１」が入力され、アドレス端子Ｓｌａｄにはデータｖが入力されて、レジスタＹの第ｖワードに格納されている演算データが出力端子Ｓｏｕｔから出力される。そして、レジスタ部２６０から出力された２つの演算データが演算器２７０にて加算され、加算結果がレジスタＸの第ｖワードに書き込まれる（動作：Ｘｖ＋Ｙｖ→Ｘｖ）。
【０１００】
その後、終了判定回路２５０から命令終了信号「１」が出力されない間、演算器２７０はレジスタ部２６０からの出力データに対する演算（加算）を繰り返し実行し、アドレスカウンタ２４０は、演算器２７０による演算毎にカウントアップする。そして、アドレスカウンタ２４０の出力データがデータｗに一致すると、終了判定回路２５０から命令終了信号「１」が出力されて、該命令の実行が終了する。
【０１０１】
このように、命令「ＡＤＤ  １１０  Ｘ＊  Ｙ＊」では、レジスタＸ、Ｙについて、第ｖワードから第ｗワードまで連続して加算が実行され、演算結果がレジスタＸの第ｖワードから第ｗワードに順に書き込まれる（動作：Ｘｖ〜ｗ＋Ｙｖ〜ｗ→Ｘｖ〜ｗ）。
【０１０２】
またこの場合、開始ワードはデータｖで指定されるとともに、終了ワードはデータｗで指定される。データｖ、ｗの値は変更可能であるので、所望の演算桁数に応じた値を格納することで、任意の演算桁数での数値演算を演算装置２００に行わせることができる。
【０１０３】
（Ｅ）拡張命令コードＥＸＴ＝「００１」
この場合、命令は１ワード命令であり、直接アドレス方式で実行される。例えば、命令「ＡＤＤ  ００１  Ｘ１５  Ｙ４」を実行する場合、演算装置２００は次のように動作する。
【０１０４】
先ず、ラッチ部２１４には、Ｆｕ＝「００」、Ｆｌ＝「１１１１」、Ｓ＝「０１」、Ｓｌ＝「０１００」、ＯＰ＝「ＡＤＤ」、ＥＸＴ＝「００１」がラッチされる。
【０１０５】
そして、セレクタ２３１では、選択制御信号として「０」が入力され、「１１１１」が選択・出力される。また、セレクタ２３２では、選択制御信号として「０」が入力され、「０１００」が選択・出力されて、アドレスカウンタ２４０には、Ｓｌ＝「０１００」がセットされる。
【０１０６】
次いで、セレクタ２３３では、選択制御信号として「１」が入力され、セレクタ２３１の出力データ即ちＦｌ＝「１１１１」が選択・出力される。また、セレクタ２３４では、選択制御信号として「１」が入力され、セレクタ２３２の出力データ即ちＳｌ＝「０１００」が選択・出力される。
【０１０７】
従って、レジスタ部２６０のアドレス端子Ｆｕａｄには「００」が入力され、アドレス端子Ｆｌａｄには「１１１１」が入力されて、レジスタＸの第１５ワードに格納されている演算データが出力端子Ｆｏｕｔから出力される。また、アドレス端子Ｓｕａｄには「０１」が入力され、アドレス端子Ｓｌａｄには「０１００」が入力されて、レジスタＹの第４ワードに格納されている演算データが出力端子Ｓｏｕｔから出力される。
【０１０８】
そして、レジスタ部２６０から出力された２つの演算データが演算器２７０にて加算され、加算結果がレジスタＸの第１５ワードに書き込まれる（動作：Ｘ１５＋Ｙ４→Ｘ１５）。
【０１０９】
一方、終了判定回路２５０では、セレクタ２３１の出力データ（Ｓｌ＝「１１１１」）と、アドレスカウンタ２４０の出力データ（「０１００」）とは一致しないため、一致回路２５２から不一致信号「０」が出力されるが、ＥＸＴ［１］＝「１」であるため、終了判定回路２５０から命令終了信号「１」が出力され、該命令の実行が終了する。
【０１１０】
このように、命令「ＡＤＤ  ００１  Ｘ１５  Ｙ４」では、レジスタＸの第１５ワードの値とレジスタＹの第４ワードの値とが加算され、レジスタＸの第１５ワードに書き込まれる（動作：Ｘ１５＋Ｙ４→Ｘ１５）。
【０１１１】
（Ｆ）拡張命令コードＥＸＴ＝「０１１」
この場合、命令は１ワード命令であり、間接アドレス方式で実行される。例えば、命令「ＡＤＤ  ０１１  Ｘ１５  Ｙ＊」を実行する場合、演算装置２００は次のように動作する。
【０１１２】
先ず、ラッチ部２１４には、Ｆｕ＝「００」、Ｆｌ＝「１１１１」、Ｓｕ＝「０１」、Ｓｌ＝「＊」、ＯＰ＝「ＡＤＤ」、ＥＸＴ＝「０１１」がラッチされる。
【０１１３】
そして、セレクタ２３１では、選択制御信号として「０」が入力され、Ｆｌ＝「１１１１」が選択・出力される。また、セレクタ２３２では、選択制御信号として「１」が入力され、データｖが選択・出力されて、アドレスカウンタ２４０にはデータｖがセットされる。
【０１１４】
次いで、セレクタ２３３では、選択制御信号として「１」が入力され、「１１１１」が選択・出力される。また、セレクタ２３４では、選択制御信号として「１」が入力され、データｖが選択・出力される。
【０１１５】
従って、レジスタ部２６０のアドレス端子Ｆｕａｄには「００」が入力され、アドレス端子Ｆｌａｄには「１１１１」が入力されて、レジスタＸの第１５ワードに格納されている演算データが出力端子Ｆｏｕｔから出力される。また、アドレス端子Ｓｕａｄには「０１」が入力され、アドレス端子Ｓｌａｄにはデータｖが入力されて、レジスタＹの第ｖワードに格納されている演算データが出力端子Ｓｏｕｔから出力される。
【０１１６】
そして、レジスタ部２６０から出力された２つの演算データが演算器２７０にて加算され、レジスタＸの第１５ワードに書き込まれる（動作：Ｘ１５＋Ｙｖ→Ｘ１５）。また、終了判定回路２５０から命令終了信号「１」が出力され、該命令の実行が終了する。
【０１１７】
このように、命令「ＡＤＤ  ０１１  Ｘ１５  Ｙ＊」では、レジスタＸの第１５ワードの値とレジスタＹの第ｖワードの値とが加算され、レジスタＸの第１５ワードに書き込まれる（動作：Ｘ１５＋Ｙｖ→Ｘ１５）。この場合、演算数はデータｖで指定される。
【０１１８】
（Ｇ）拡張命令コードＥＸＴ＝「１０１」
この場合、命令は１ワード命令であり、間接アドレス方式で実行される。例えば、命令「ＡＤＤ  １０１  Ｘ＊  Ｙ４」を実行する場合、演算装置２００は次のように動作する。
【０１１９】
先ず、ラッチ部２１４には、Ｆｕ＝「００」、Ｆｌ＝「＊」、Ｓｕ＝「０１」、Ｓｌ＝「０１００」、ＯＰ＝「ＡＤＤ」、ＥＸＴ＝「１０１」がラッチされる。
【０１２０】
そして、セレクタ２３１では、選択制御信号として「１」が入力され、データｗが選択・出力される。また、セレクタ２３２では、選択制御信号として「０」が入力され、Ｓｌ＝「０１００」が選択・出力されて、アドレスカウンタ２４０には「０１００」がセットされる。
【０１２１】
次いで、セレクタ２３３では、選択制御信号として「１」が入力され、データｗが選択・出力される。また、セレクタ２３４では、選択制御信号として「１」が入力され、「０１００」が選択・出力される。
【０１２２】
従って、レジスタ部２６０のアドレス端子Ｆｕａｄには「００」が入力され、アドレス端子Ｓｌａｄにはデータｗが入力されて、レジスタＸの第ｗワードに格納されている演算データが出力端子Ｓｏｕｔから出力される、また、アドレス端子Ｓｕａｄには「０１」が入力され、アドレス端子Ｓｌａｄには「０１００」が入力されて、レジスタＹの第４ワードに格納さえている演算データが出力端子Ｓｏｕｔから出力される。
【０１２３】
そして、レジスタ部２６０から出力された２つの演算データが演算器２７０にて加算され、レジスタＸの第ｗワードに書き込まれる（動作：Ｘｗ＋Ｙ４→Ｘｗ）。また、終了判定回路２５０から命令終了信号「１」が出力され、該命令の実行が終了する。
【０１２４】
このように、命令「ＡＤＤ  １０１  Ｘ＊  Ｙ４」では、レジスタＸの第ｗワードの値とレジスタＹの第４ワードの値とが加算され、レジスタＸの第ｗワードに書き込まれる（動作：Ｘｗ＋Ｙ４→Ｘｗ）。この場合、被演算数はデータｗで指定される。
【０１２５】
（Ｈ）拡張命令コードＥＸＴ＝「１１１」
この場合、命令は１ワード命令であり、間接アドレス方式で実行される。例えば、命令「ＡＤＤ  １１１  Ｘ＊  Ｙ＊」を実行する場合、演算装置２００は次のように動作する。
【０１２６】
先ず、ラッチ部２１４には、Ｆｕ＝「００」、Ｆｌ＝「＊」、Ｓｕ＝「０１」、Ｓｌ＝「＊」、ＯＰ＝「ＡＤＤ」、ＥＸＴ＝「１１１」がラッチされる。
【０１２７】
そして、セレクタ２３１では、選択制御信号として「１」が入力され、データｗが選択・出力される。また、セレクタ２３２では、選択制御信号として「１」が入力され、データｖが選択・出力されて、アドレスカウンタ２４０にはデータｖがセットされる。
【０１２８】
次いで、セレクタ２３３では、選択制御信号として「１」が入力され、データｗが選択・出力される。また、セレクタ２３４では、選択制御信号として「１」が入力され、データｖが選択・出力される。
【０１２９】
従って、レジスタ部２６０のアドレス端子Ｆｕｓｄには「００」が入力され、アドレス端子Ｆｌａｄにはデータｗが入力されて、レジスタＸの第ｗワードに格納されている演算データが出力端子Ｆｏｕｔから出力される。また、アドレス端子Ｓｕａｄには「０１」が入力され、アドレス端子Ｓｌａｄにはデータｖが入力されて、レジスタＹの第ｖワードに格納されている演算データが出力端子Ｓｏｕｔから出力される。
【０１３０】
そして、レジスタ部２６０から出力された２つの演算データが演算器２７０にて加算され、加算結果がレジスタＸの第ｗワードに書き込まれる（動作：Ｘｗ＋Ｙｖ→Ｘｗ）。また、終了判定回路２５０から命令終了信号「１」が出力され、該命令の実行が終了する。
【０１３１】
このように、命令「ＡＤＤ  ００１  Ｘｗ  Ｙｖ」では、レジスタＸの第ｗワードの値とレジスタＹの第ｖワードの値とが加算され、レジスタＸの第ｗワードに書き込まれる（動作：Ｘｗ＋Ｙｖ→Ｘｗ）。この場合、被演算数はデータｗで指定され、演算数はデータｖで指定される。
【０１３２】
［第１の実施の形態の効果］
以上のように、本第１の実施の形態における演算装置２００によれば、連続ワード命令の場合、１つの命令で開始ワード及び終了ワードを指定すると、指定された開始ワードから終了ワードまでの連続する複数ワードについての演算が演算器２７０によって行われる。従って、所望の演算桁数での演算を行うことができる。
【０１３３】
また、開始ワード及び終了ワードは、それぞれを命令中で直接的に指定することもできるし、可変パラメータ記憶部２２０のレジスタＷ、Ｖに格納されているデータｗ、ｖによって間接的に指定することもできる。従って、命令単位で演算桁数（有効桁数）を自在に指定できるため、プログラムの中途で演算桁数を変更したり、或いは指定するといったことが可能となる。また、演算結果をレジスタＷ、Ｖに格納するといったプログラムにより、プログラムの実行途中に演算桁数を可変することが可能となる。この結果、演算桁数に対する柔軟なプログラムが可能であり、高精度な演算を簡単に実現することができる。
【０１３４】
更に、レジスタ部２６０には、ＢＣＤコード化されたデータ値が格納されるので、従来のような２進１０進変換による誤差は発生しない。
【０１３５】
［第１の実施の形態の変形例］
尚、本発明の適用は、上述した実施の形態に限定されることなく、本発明の趣旨を逸脱しない範囲で適宜変更可能である。
【０１３６】
（１）可変する桁数の単位
上述した実施の形態では、１ワード（１６ビット）を単位とし、１０進表現で４桁刻みの桁数可変を行うこととしたが、これ以外のビット数、具体的には４×ｎ（ｎは自然数）ビットを単位にしても良い。例えば演算器２７０が３２ビットで演算するものであった場合には２ワードを単位として良い。尚、ｎの４倍としたのは、レジスタ部２６０にはＢＣＤコード化されたデータが格納されており、ＢＣＤコードでは、４ビットが１０進表現で１桁に相当するためである。この場合、１０進表現でｎ桁刻みの桁数可変が可能な演算装置を実現できる。また、上述した実施の形態において、演算結果のうちの不要な桁の値をマスクすることで、１桁単位の演算桁数の指定を可能としても良い。
【０１３７】
（２）指数部の演算桁数を可変
また、上述した実施の形態では、第２ワードから第１５ワードの何れかを開始ワード或いは終了ワードとし、仮数部の演算桁数を可変としたが、指数部の演算桁数を可変しても良いのは勿論である。
【０１３８】
（３）レジスタのワード数
また、レジスタ部２６０のワード数を１６として説明したが、これに限られないことは勿論である。また、仮数部を１４ワード、指数部を２ワードとしたが、この割合は適宜変更して良いのは勿論である。
【０１３９】
［第２の実施の形態］
次に、第２の実施の形態について説明する。
本第２の実施の形態における演算システムＳ２は、ＰＣ１００と演算装置３００とがＵＳＢケーブル等の通信ケーブルＫ２で接続されることにより、相互にデータ転送可能なように構成されている。尚、演算システムＳ２の構成は、上述した第１の実施の形態における演算システムＳ１と略同様であるため、第１の実施の形態と同一部分については、詳細説明を省略し、同一の構成要素は、同一の符号を付して説明する。以下、本第２の実施の形態に特徴的な部分を中心に詳細に説明する。
【０１４０】
本第２の実施の形態に特徴的な構成として、演算装置３００は、可変パラメータ部３２０に６ビットデータを収納可能なレジスタＩを有し、間接アドレス方式によりレジスタのアドレスを指定する場合に、桁単位でアドレスの指定が可能となっている。これにより、演算に用いる計算桁数（有効桁数）及び計算開始桁を１桁単位で自在に変更可能な演算装置を実現する。
【０１４１】
図９は、演算装置３００の回路構成を示すブロック図であり、数値演算の実行に係る要部構成を示している。同図によれば、演算装置３００は、プログラムＲＯＭ３１０と、プログラムカウンタ３１２と、ラッチ部３１４と、命令デコーダ３１６と、可変パラメータ記憶部３２０と、セレクタ３３１、３３２、３３３、３３４と、アドレスカウンタ３４０と、レジスタ部３６０と、演算器３７０と、終了判定回路３５０とを備えて構成される。
【０１４２】
プログラムＲＯＭ３１０は、プログラムＲＯＭ２１０と同様の構成であり、ＰＣ１００から転送されてきた機械語プログラムであるプログラム命令３１１を格納し、プログラムカウンタ３１２が示すアドレスのプログラム命令３１１を１つずつ読み出して、ラッチ部３１４に出力する。このプログラム命令３１１は、計算桁数と計算の種類とを設定している計算命令からなり、１以上の任意の計算命令を組み合わせて構成される。ラッチ部３１４は、ラッチ部２１４と同様に命令部４０と、オペランド部３０とから構成されるが、第２の実施の形態に特徴的な構成として、命令部４０は命令コードＯＰ及び４ビットの拡張命令コードＥＸＴを有している。
【０１４３】
図１０に、拡張命令コードＥＸＴのデータ構成例を示す。同図によれば、拡張命令コードＥＸＴは、４ビットで構成され、図中右から順に、１ビット目，２ビット目，３ビット目，４ビット目に対応するデータが格納される。具体的に、１ビット目のデータ（ＥＸＴ［１］）には、１ワード／連続命令の別を示すデータが格納され、１ワード命令の場合には「１」が設定され、連続ワード命令の場合には「０」が設定される。
【０１４４】
２ビット目及び３ビット目のデータ（ＥＸＴ［２］，ＥＸＴ［３］）には、開始ワードの間接アドレス方式（Ｖレジスタ指定）／間接アドレス方式（Ｉレジスタ指定）／直接アドレス方式の別を示すデータが格納される。具体的に、Ｖレジスタにより指定される間接アドレス方式の場合には「０１」が設定され、Ｉレジスタにより指定される間接アドレス方式の場合には「１０」が設定され、直接アドレス方式の場合には「００」が設定される。
【０１４５】
４ビット目のデータ（ＥＸＴ［４］）は、終了ワードの間接／直接アドレス方式の別を示すデータが格納され、間接アドレス方式の場合には「１」が設定され、直接アドレス方式の場合には「０」が設定される。
【０１４６】
可変パラメータ記憶部３２０は、ＲＡＭ等で構成され、それぞれ４ビットデータを格納可能なレジスタＷ，レジスタＶと、６ビットデータを格納可能なレジスタＩを有している。レジスタＷは、間接アドレス方式の場合に計算終了桁をワード単位、すなわち４桁単位で指定するものであり、４ビットでレジスタを構成する１５ワード中の任意のワードを指定する。また、レジスタＶは、間接アドレス方式の場合に計算開始桁をワード単位、すなわち４桁単位で指定するものであり、４ビットでレジスタを構成する１５ワード中の任意のワードを指定する。レジスタＩは、間接アドレス方式の場合に計算開始桁を１桁単位で指定するものであり、上位４ビットでレジスタを構成する１５ワード中の任意のワードを指定し、下位２ビットでその指定されたワード中の任意の桁を指定する。
【０１４７】
セレクタ３３１には、ラッチ部３１４にラッチされたデータＦｌ及びレジスタＷに格納されているデータｗが入力されるとともに、拡張命令コードＥＸＴの４ビット目のデータが選択制御信号として入力される。そして、セレクタ３３１は、選択制御信号、すなわちＥＸＴ［４］の値にしたがって、２つの入力データの何れか一方を選択して出力する。具体的には、データＥＸＴ［４］の値が「１」の場合には、データｗを選択して出力し、「０」の場合には、データＦｌを選択して出力する。
【０１４８】
セレクタ３３２には、ラッチ部３１４にラッチされたデータＳｌ、レジスタＶに格納されているデータｖ及びレジスタＩに格納されているデータ（以下、「データｉ」と称する。）が入力される。また、セレクタ３３２には、データＥＸＴ［２］，データＥＸＴ［３］が選択制御信号として入力される。
【０１４９】
そして、セレクタ３３２は、データＥＸＴ［２］，データＥＸＴ［３］の値にしたがって、３つの入力データの何れか１つを選択して出力する。具体的には、データＥＸＴ［２］，データＥＸＴ［３］の値が、「０１」の場合には、データｖを選択して出力し、「１０」の場合には、データｉを選択して出力し、「００」の場合には、データＳｌを選択して出力する。
【０１５０】
アドレスカウンタ３４０は、第１の実施の形態のアドレスカウンタ２４０と同様のアップカウンタであり、演算が行われる毎にカウントアップして、現在のカウント値を出力する。
【０１５１】
レジスタ部３６０は、レジスタ２６０と同様の構成であり、アドレス指定及びデータ出力をそれぞれ２ポート有する２ポート方式のレジスタである。第１ポート（Firstポート）では、アドレス端子Ｆｕａｄから入力される２ビットデータを上位アドレスとし、アドレス端子Ｆｌａｄから入力される４ビットデータを下位アドレスとする６ビットのアドレスＦａｄに格納されている１６ビットデータを出力端子Ｆｏｕｔから出力する。アドレス端子Ｆｕａｄには、ラッチ部３１４にラッチされたデータＦｕが入力され、アドレス端子Ｆｌａｄには、セレクタ３３３の出力データが入力される。
【０１５２】
第２ポート（Secondポート）では、アドレス端子Ｓｕａｄから入力される２ビットデータを上位アドレスとし、アドレス端子Ｓｌａｄから入力される４ビットデータ又は６ビットデータを下位アドレスとする６ビット又は８ビットのアドレスＳａｄに格納されている１６ビットデータを、出力端子Ｓｏｕｔから出力する。アドレス端子Ｓｕａｄには、ラッチ部３１４にラッチされたデータＳｕが入力され、アドレス端子Ｓｌａｄには、セレクタ３３４の出力データが入力される。
【０１５３】
つまり、レジスタ部３６０のアドレス指定は、２ビットの上位アドレスでレジスタを指定し、４ビットの下位アドレスでレジスタ内のワードを指定するか、６ビットの下位アドレスでレジスタ内のワード及び桁を指定することでなされる。そして、レジスタ部３６０のアドレス指定が、ワード単位又は桁単位で行われると、指定されたワード又は桁を計算開始ワード又は計算開始桁として１ワード分のデータ、すなわち１６ビットデータが出力される。
【０１５４】
図１１を参照して、レジスタＲｎのアドレス指定が桁単位で行われた場合のレジスタ部３６０のデータ出力方法について説明する。ここで、同図に示すように、レジスタＲｎは、上位５６桁（１４ワード）の仮数部と、下位８桁（２ワード）の指数部とからなり、終了桁である第１５ワードの最上位桁はブランク桁となっている。従って、仮数部の最大計算桁数は５５桁となっている。また、計算開始桁の設定は桁単位で行われ、計算終了桁の設定はワード単位（すなわち、桁数単位）で行われるものとする。更に、レジスタＲｎは、１ワードすなわち４桁を桁数単位として、データの出力を行う。以下、具体的に説明する。
【０１５５】
まず、同図２段目に示すように、計算桁数が５５桁に指定された場合、計算開始桁は仮数部の最下位である８桁目に設定され、計算終了桁は第１５ワードに設定される。そして、レジスタ部３６０は、計算開始桁に設定された８桁目から、桁数単位を４桁として、４桁分すなわち１ワード分（１６ビット）のデータを順次出力し、１３ワード分のデータを出力した後、終了ワードにおいては３桁分（１２ビット）のデータを演算器３７０に出力する。これにより、演算器３７０で処理される計算桁数は５５桁となる。
【０１５６】
また、同図３段目に示すように、計算桁数が５４桁に指定された場合、計算開始桁は９桁目に指定され、計算終了桁は第１５ワードに指定される。そして、レジスタ部３６０は、計算開始桁に設定された９桁目から、桁数単位を４桁として、４桁分すなわち１ワード分（１６ビット）のデータを出力し、１３ワード分のデータを順次出力した後、終了ワードにおいては２桁分（８ビット）のデータを演算器３７０に出力する。これにより、演算器３７０で処理される計算桁数は５４桁となる。
【０１５７】
更に、同図最下段に示すように、計算桁数が１桁に指定された場合、計算開始桁は６２桁目に設定され、計算終了桁は第１５ワードに指定される。そして、レジスタ部３６０は、計算開始桁に設定された６２桁目から１桁分のデータ（４ビット）のデータを出力する。この場合、演算器３７０で処理される計算桁数は１桁となる。
【０１５８】
以上のように、計算桁数が桁単位で指定された場合、プログラム命令３１１に設定された計算開始桁から、予め定められた桁数単位毎に、１ワード分すなわち４桁分のデータを順次出力し、最終ワードにおいて、残りの桁数分のデータを出力することにより、指定された計算桁数で高速に十進計算を行うことができる。
【０１５９】
次に、具体的な命令を与えたられた場合の演算装置３００の動作例について説明する。図１２は、拡張命令コードＥＸＴが取り得る値それぞれについての命令の機能例を示す図である。尚、同図中、命令部のＯＰコード「ＡＤＤ」は‘加算’を表す命令コードであり、「ＡＤＤ」に続く４ビットのデータは拡張命令コードＥＸＴを表している。また、ニーモニック及び動作中の「ｗ」は、レジスタＷに格納されているデータｗを表し、「ｖ」はレジスタＶに格納されているデータｖを表し、「ｉ」は、レジスタＩに格納されているデータｉを表している。
【０１６０】
拡張命令コードＥＸＴの各ビットの値から、命令の機能例はパターン（Ｉ）〜（Ｔ）の合計１２パターンある。ここで、本第２の実施の形態における拡張命令コードＥＸＴのＥＸＴ［２］，［３］と、上述した第１の実施の形態における拡張命令コードＥＸＴのＥＸＴ［２］との対応関係から、パターン（Ｉ）〜（Ｔ）には、上述したパターン（Ａ）〜（Ｈ）と重複するパターンが含まれる。そこで、重複するパターンについては対応関係を示し、詳細な動作説明を省略する。すなわち、パターン（Ａ）と（Ｉ）、パターン（Ｂ）と（Ｊ）、パターン（Ｃ）と（Ｌ）、パターン（Ｄ）と（Ｍ）、パターン（Ｅ）と（Ｏ）、パターン（Ｆ）と（Ｐ）、パターン（Ｇ）と（Ｒ）、パターン（Ｈ）と（Ｓ）は同義の機能例である。以下、第２の実施の形態に特徴的なパターン（Ｋ），（Ｎ），（Ｑ），（Ｔ）について説明する。
【０１６１】
（Ｋ）拡張命令コードＥＸＴ＝「０１００」
この場合、命令は連続ワード命令であり、間接アドレス方式で実行される。例えば、命令「ＡＤＤ  ０１００  Ｘ１５  Ｙ＊」を実行する場合、演算装置３００は次のように動作する。
【０１６２】
先ず、ラッチ部３１４には、Ｆｕ＝「００（Ｘ）」、Ｆｌ＝「１１１１（１５）」、Ｓｕ＝「０１（Ｙ）」、Ｓｌ＝「＊」、ＯＰ＝「ＡＤＤ」、ＥＸＴ＝「０１００」がラッチされる。すなわち、計算命令記憶手段であるプログラムＲＯＭ３１０から計算桁数と計算の種類とを設定している計算命令であるプログラム命令３１１が読み出される。
【０１６３】
そして、セレクタ３３１では、選択制御信号としてＥＸＴ［４］＝「０」が入力され、Ｆｌ＝「１１１１」が選択・出力される。また、セレクタ３３２では、選択制御信号としてＥＸＴ［２］＝「０」，ＥＸＴ［３］＝「１」が入力され、データｉが選択・出力されて、アドレスカウンタ３４０にはデータｉがセットされる。次いで、セレクタ３３３、３３４では、ともに選択制御信号としてＥＸＴ［１］＝「０」が入力される。
【０１６４】
従って、レジスタ部３６０のアドレス端子ＦｕａｄにはＦｕ＝「００」が入力され、アドレス端子Ｆｌａｄにはデータｉが入力され、レジスタＸのｉ〜（ｉ＋３）桁目に格納されている１ワード分の演算データが被演算子として出力端子Ｆｏｕｔから出力される。また、アドレス端子Ｓｕａｄには「０１」が入力され、アドレス端子Ｓｌａｄにはデータｉが入力され、レジスタＹのｉ〜（ｉ＋３）桁目に格納されている１ワード分の演算データが被演算子として出力端子Ｓｏｕｔから出力される。そして、レジスタ部３６０から出力された２つの演算データが演算器３７０にて加算され、加算結果がレジスタＸのｉ〜（ｉ＋３）桁目に書き込まれる（動作：Ｘｉ〜（ｉ＋３）＋Ｙｉ〜（ｉ＋３）→Ｘｉ〜（ｉ＋３））。
【０１６５】
その後、終了判定回路３５０から命令終了信号「１」が出力されない間、アドレスカウンタ３４０が演算器３７０による演算毎に１ずつカウントアップして、レジスタ部３６０の出力端子Ｆｏｕｔから、レジスタＸのｉ〜（ｉ＋３）桁目に格納されている演算データ、（ｉ＋４）〜（ｉ＋７）桁目に格納されている演算データ、・・・が順に出力されるとともに、出力端子Ｓｏｕｔから、レジスタＹのｉ〜（ｉ＋３）桁目に格納されている演算データ、（ｉ＋４）〜（ｉ＋７）桁目に格納されている演算データ、・・・が順に出力される。そして、これらの演算データが出力順に演算器３７０にて加算され、演算結果がレジスタＸのｉ〜（ｉ＋３）桁目、（ｉ＋４）〜（ｉ＋７）桁目・・・に順に書き込まれる。
【０１６６】
そして、アドレスカウンタ３４０の出力データが「１１１１」になると、一致回路３５２から一致信号「１」が出力され、終了判定回路３５０から命令終了信号「１」が出力されて、該命令の実行が終了する。
【０１６７】
このように、命令「ＡＤＤ  ０１００  Ｘ１５  Ｙ＊」では、レジスタＸ、Ｙについて、ｉ桁目から第１５ワードまで連続して加算が実行され、演算結果がレジスタＸのｉ桁目から第１５ワードまで順に書き込まれる（動作：Ｘｉ〜１５＋Ｙｉ〜１５→Ｘｉ〜１５）。
【０１６８】
この動作によって、計算命令記憶手段であるプログラムＲＯＭ３１０に記憶された計算命令であるプログラム命令３１１で設定されている計算桁数（例えば、「ｉ桁目〜１５ワード」）のうち、桁数単位毎（例えば、「４桁単位毎」）に順次、多桁記憶手段であるレジスタＸ，Ｙに記憶されたそれぞれに対応する桁数単位分の数値を、プログラム命令３１１で設定されている計算の種類（例えば、「ＡＤＤ」）に従った十進計算で計算し、この計算結果を多桁記憶手段であるレジスタＸ，Ｙに桁数単位毎に順次書き込む機能が実現される。
【０１６９】
またこの場合、計算開始桁はデータｉで指定される。データｉの値は変更可能であるので、所望の計算桁数に応じた値を格納することで、図１１を参照して説明したように、任意の計算桁数での数値演算を演算装置３００に行わせることができる。
【０１７０】
（Ｎ）拡張命令コードＥＸＴ＝「１１００」
この場合、命令は連続ワード命令であり、間接アドレス方式で実行される。例えば、命令「ＡＤＤ  １１００  Ｘ＊  Ｙ＊」を実行する場合、演算装置３００は次のように動作する。
【０１７１】
先ず、ラッチ部３１４には、Ｆｕ＝「００」、Ｆｌ＝「＊」、Ｓｕ＝「０１」、Ｓｌ＝「＊」、ＯＰ＝「ＡＤＤ」、ＥＸＴ＝「１１００」がラッチされる。すなわち、計算命令記憶手段であるプログラムＲＯＭ３１０から計算桁数と計算の種類とを設定している計算命令であるプログラム命令３１１が読み出される。
【０１７２】
そして、セレクタ３３１では、選択制御信号として「１」が入力され、データｗが選択・出力される。また、セレクタ３３２では、選択制御信号として「１０」が入力され、データｉが選択・出力されて、アドレスカウンタ３４０にはデータｉがセットされる。次いで、セレクタ３３３、３３４では、ともに選択制御信号として「０」が入力され、データｉが選択・出力される。
【０１７３】
従って、レジスタ部３６０のアドレス端子Ｆｕａｄには「００」が入力され、アドレス端子Ｆｌａｄにはデータｉが入力されて、レジスタＸのｉ〜（ｉ＋３）桁目に格納されている演算データが出力端子Ｆｏｕｔから出力される。また、アドレス端子Ｓｕａｄには「０１」が入力され、アドレス端子Ｓｌａｄにはデータｉが入力されて、レジスタＹのｉ〜（ｉ＋３）桁目に格納されている演算データが出力端子Ｓｏｕｔから出力される。そして、レジスタ部３６０から出力された２つの演算データが演算器３７０にて加算され、加算結果がレジスタＸのｉ〜（ｉ＋３）桁目に書き込まれる（動作：Ｘｉ〜（ｉ＋３）＋Ｙｉ〜（ｉ＋３）→Ｘｉ〜（ｉ＋３））。
【０１７４】
その後、終了判定回路３５０から命令終了信号「１」が出力されない間、演算器３７０はレジスタ部３６０からの出力データに対する演算（加算）を繰り返し実行し、アドレスカウンタ３４０は、演算器３７０による演算毎に１ずつカウントアップする。そして、アドレスカウンタ３４０の出力データの上位４ビットがデータｗに一致すると、終了判定回路３５０から命令終了信号「１」が出力されて、該命令の実行が終了する。
【０１７５】
このように、命令「ＡＤＤ  １１００  Ｘ＊  Ｙ＊」では、レジスタＸ、Ｙについて、ｉ桁目から第ｗワードまで連続して加算が実行され、演算結果がレジスタＸのｉ桁目から第ｗワードに順に書き込まれる（動作：Ｘｉ〜ｗ＋Ｙｉ〜ｗ→Ｘｉ〜ｗ）。
【０１７６】
この動作によって、計算命令記憶手段であるプログラムＲＯＭ３１０に記憶された計算命令であるプログラム命令３１１で設定されている計算桁数（例えば、「ｉ桁目〜ｗワード」）のうち、桁数単位毎（例えば、「４桁単位毎」）に順次、多桁記憶手段であるレジスタＸ，Ｙに記憶されたそれぞれに対応する桁数単位分の数値を、プログラム命令３１１で設定されている計算の種類（例えば、「ＡＤＤ」）に従った十進計算で計算し、この計算結果を多桁記憶手段であるレジスタＸ，Ｙに桁数単位毎に順次書き込む機能が実現される。
【０１７７】
またこの場合、計算開始桁はデータｉで指定されるとともに、計算終了桁はデータｗで指定される。データｉ、ｗの値は変更可能であるので、所望の計算桁数に応じた値を格納することで、任意の計算桁数での数値演算を演算装置３００に行わせることができる。
【０１７８】
（Ｑ）拡張命令コードＥＸＴ＝「０１０１」
この場合、命令は１ワード命令であり、間接アドレス方式で実行される。例えば、命令「ＡＤＤ  ０１１  Ｘ１５  Ｙ＊」を実行する場合、演算装置３００は次のように動作する。
【０１７９】
先ず、ラッチ部３１４には、Ｆｕ＝「００」、Ｆｌ＝「１１１１」、Ｓｕ＝「０１」、Ｓｌ＝「＊」、ＯＰ＝「ＡＤＤ」、ＥＸＴ＝「０１０１」がラッチされる。すなわち、計算命令記憶手段であるプログラムＲＯＭ３１０から計算桁数と計算の種類とを設定している計算命令であるプログラム命令３１１が読み出される。
【０１８０】
そして、セレクタ３３１では、選択制御信号として「０」が入力され、Ｆｌ＝「１１１１」が選択・出力される。また、セレクタ３３２では、選択制御信号として「１０」が入力され、データｉが選択・出力されて、アドレスカウンタ３４０にはデータｉがセットされる。
【０１８１】
次いで、セレクタ３３３では、選択制御信号として「１」が入力され、「１１１１」が選択・出力される。また、セレクタ３３４では、選択制御信号として「１」が入力され、データｉが選択・出力される。
【０１８２】
従って、レジスタ部３６０のアドレス端子Ｆｕａｄには「００」が入力され、アドレス端子Ｆｌａｄには「１１１１」が入力されて、レジスタＸの第１５ワードに格納されている演算データが出力端子Ｆｏｕｔから出力される。また、アドレス端子Ｓｕａｄには「０１」が入力され、アドレス端子Ｓｌａｄにはデータｉが入力されて、レジスタＹのｉ〜（ｉ＋３）桁目に格納されている演算データが出力端子Ｓｏｕｔから出力される。
【０１８３】
そして、レジスタ部３６０から出力された２つの演算データが演算器３７０にて加算され、レジスタＸの第１５ワードに書き込まれる（動作：Ｘ１５＋Ｙｉ〜（ｉ＋３）→Ｘ１５）。また、終了判定回路３５０から命令終了信号「１」が出力され、該命令の実行が終了する。
【０１８４】
このように、命令「ＡＤＤ  ０１０１  Ｘ１５  Ｙ＊」では、レジスタＸの第１５ワードの各桁の値とレジスタＹのｉ〜（ｉ＋３）桁目の値とが加算され、レジスタＸの第１５ワードに書き込まれる（動作：Ｘ１５＋Ｙｉ〜（ｉ＋３）→Ｘ１５）。
【０１８５】
この動作によって、計算命令記憶手段であるプログラムＲＯＭ３１０に記憶された計算命令であるプログラム命令３１１で設定されている計算桁数（例えば、「４桁」）のうち、桁数単位毎（例えば、「４桁単位毎」）に順次、多桁記憶手段であるレジスタＸ，Ｙに記憶されたそれぞれに対応する桁数単位分の数値を、プログラム命令３１１で設定されている計算の種類（例えば、「ＡＤＤ」）に従った十進計算で計算し、この計算結果を多桁記憶手段であるレジスタＸ，Ｙに桁数単位毎に順次書き込む機能が実現される。
【０１８６】
また、この場合、計算開始桁はデータｉで指定される。データｉの値は変更可能であるので、所望の計算開始桁に応じた値を格納することで、任意の数値を演算数として数値演算を演算装置３００に行わせることができる。
【０１８７】
（Ｔ）拡張命令コードＥＸＴ＝「１１０１」
この場合、命令は１ワード命令であり、間接アドレス方式で実行される。例えば、命令「ＡＤＤ  １１１  Ｘ＊  Ｙ＊」を実行する場合、演算装置３００は次のように動作する。
【０１８８】
先ず、ラッチ部３１４には、Ｆｕ＝「００」、Ｆｌ＝「＊」、Ｓｕ＝「０１」、Ｓｌ＝「＊」、ＯＰ＝「ＡＤＤ」、ＥＸＴ＝「１１０１」がラッチされる。すなわち、計算命令記憶手段であるプログラムＲＯＭ３１０から計算桁数と計算の種類とを設定している計算命令であるプログラム命令３１１が読み出される。
【０１８９】
そして、セレクタ３３１では、選択制御信号として「１」が入力され、データｗが選択・出力される。また、セレクタ３３２では、選択制御信号として「１０」が入力され、データｉが選択・出力されて、アドレスカウンタ３４０にはデータｉがセットされる。
【０１９０】
次いで、セレクタ３３３では、選択制御信号として「１」が入力され、データｗが選択・出力される。また、セレクタ３３４では、選択制御信号として「１」が入力され、データｉが選択・出力される。
【０１９１】
従って、レジスタ部３６０のアドレス端子Ｆｕｓｄには「００」が入力され、アドレス端子Ｆｌａｄにはデータｗが入力されて、レジスタＸの第ｗワードに格納されている演算データが出力端子Ｆｏｕｔから出力される。また、アドレス端子Ｓｕａｄには「０１」が入力され、アドレス端子Ｓｌａｄにはデータｉが入力されて、レジスタＹのｉ〜（ｉ＋３）桁目に格納されている演算データが出力端子Ｓｏｕｔから出力される。
【０１９２】
そして、レジスタ部３６０から出力された２つの演算データを被演算子として演算器３７０にて加算され、加算結果がレジスタＸの第ｗワードに書き込まれる（動作：Ｘｗ＋Ｙｉ〜（ｉ＋３）→Ｘｗ）。また、終了判定回路３５０から命令終了信号「１」が出力され、該命令の実行が終了する。
【０１９３】
このように、命令「ＡＤＤ  １１０１  Ｘｗ  Ｙｉ」では、レジスタＸの第ｗワードの値とレジスタＹのｉ〜（ｉ＋３）桁目の値とが加算され、レジスタＸの第ｗワードに書き込まれる（動作：Ｘｗ＋Ｙｉ〜（ｉ＋３）→Ｘｗ）。
【０１９４】
この動作によって、計算命令記憶手段であるプログラムＲＯＭ３１０に記憶された計算命令であるプログラム命令３１１で設定されている計算桁数（例えば、「４桁」）のうち、桁数単位毎（例えば、「４桁単位毎」）に順次、多桁記憶手段であるレジスタＸ，Ｙに記憶されたそれぞれに対応する桁数単位分の数値を、プログラム命令３１１で設定されている計算の種類（例えば、「ＡＤＤ」）に従った十進計算で計算し、この計算結果を多桁記憶手段であるレジスタＸ，Ｙに桁数単位毎に順次書き込む機能が実現される。
【０１９５】
また、この場合、計算終了桁はデータｗで指定され、計算開始桁はデータｉで指定される。データｗ、データｉの値は変更可能であるので、所望の計算終了桁、計算開始桁に応じた値を格納することで、任意の数値を被演算子とした数値演算を演算装置３００に行わせることができる。
【０１９６】
次に、上述したパターン（Ｎ）を一例として、レジスタＩ及びレジスタＷに数値が設定された場合に行われる動作例についてフローチャートを参照して説明する。図１３は、演算装置３００により実行される桁指定計算処理を示すフローチャートである。同図によれば、まず、プログラムＲＯＭ３１０のプログラムエリアからプログラムカウンタ３１２により指定された命令が読み出される（ステップＳＴ１）。次いで、命令中のＩレジスタの値ｉが読み出され（ステップＳＴ２）、レジスタＩにデータｉがセットされる（ステップＳＴ３）。また、命令中のＷレジスタの値ｗが読み出され（ステップＳＴ４）、レジスタＷにデータｗがセットされる（ステップＳＴ５）。
【０１９７】
次いで、ｗが最終ワード、すなわちｗ＝１５であるか否かが判別される（ステップＳＴ６）。ここで、ｗ＝１５である場合（ステップＳＴ６；ＹＥＳ）、ｗ×４＋２を計算することにより計算終了桁が算出される（ステップＳＴ７）。続いて、Ｘレジスタのｉ〜ｉ＋３桁目の演算データが読み出されるとともに（ステップＳＴ８）、Ｙレジスタのｉ〜ｉ＋３桁目の演算データが読み出される（ステップＳＴ９）。そして、演算器３７０において、命令に従った計算が行われ、計算結果がＸレジスタのｉ〜ｉ＋３桁目に格納される（ステップＳＴ１０）。
【０１９８】
続いて、ｉ＋４が計算終了桁より小さいか否かが判別され（ステップＳＴ１１）、ｉ＋４が計算終了桁より小さい場合（ステップＳＴ１１；ＹＥＳ）、終了判定回路３５０から命令終了信号「０」が出力されて、レジスタＩの値ｉにｉ＋４がセットされる（ステップＳＴ１２）。そして、ステップＳＴ８に移行して、上述した処理が繰り返して実行される。一方、ｉ＋４が計算終了桁より大きい場合（ステップＳＴ１１；ＮＯ）、終了判定回路３５０から命令終了信号「１」が出力されて、本桁指定計算処理が終了される。
【０１９９】
また、ステップＳＴ６において、ｗが最終ワードでない場合、すなわちｗ＝１５でない場合（ステップＳＴ６；ＮＯ）、ｗ×４＋３を計算することにより計算終了桁が算出される（ステップＳＴ１３）。続いて、Ｘレジスタのｉ〜ｉ＋３桁目の演算データが読み出されるとともに（ステップＳＴ１４）、Ｙレジスタのｉ〜ｉ＋３桁目の演算データが読み出される（ステップＳＴ１５）。そして、演算器３７０において、命令に従った計算が行われ、計算結果がＸレジスタのｉ〜ｉ＋３桁目に格納される（ステップＳＴ１６）。
【０２００】
続いて、ｉ＋４が計算終了桁より小さいか否かが判別され（ステップＳＴ１７）、ｉ＋４が計算終了桁より小さい場合（ステップＳＴ１７；ＹＥＳ）、終了判定回路３５０から命令終了信号「０」が出力されて、レジスタＩの値ｉにｉ＋４がセットされる（ステップＳＴ１８）。そして、ステップＳＴ１４に移行して、上述した処理が繰り返して実行される。一方、ｉ＋４が計算終了桁より大きい場合（ステップＳＴ１７；ＮＯ）、ｉ＋３が計算終了桁であるか否かが判別される（ステップＳＴ１９）。ここで、計算終了桁がｉ＋３である場合（ステップＳＴ１９；ＹＥＳ）、Ｘレジスタに格納された計算結果の演算データと計算終了桁が一致するため、終了判定回路３５０から命令終了信号「１」が出力されて、本桁指定計算処理が終了される。
【０２０１】
一方、計算終了桁がｉ＋３でない場合（ステップＳＴ１９；ＮＯ）、Ｘレジスタに格納された計算結果の演算データと計算終了桁が一致しないため、Ｘレジスタに格納されたｉ〜ｉ＋３桁目のデータのうち、ｉ＋１〜ｉ＋３桁目のデータがマスクされる（ステップＳＴ２０）。つまり、レジスタ部３６０は、指定されたｉ桁目から１ワード毎、すなわち４桁毎に演算データを出力するため、計算桁数が４の整数倍とならない場合、終了ワードの演算データに不必要なデータを含むこととなる。そこで、不必要なデータをマスクすることにより、所望する桁数の計算結果を得ることができる。そして、レジスタＸの不必要なデータがマスクされると（ステップＳＴ２０）、終了判定回路３５０から命令終了信号「１」が出力されて、本桁指定計算処理が終了される。
【０２０２】
次に、具体的な計算命令の種類、計算数値、計算桁数が設定された場合に演算装置３００に実行される計算方法について説明する。まず、計算命令の種類として「平方根」、計算数値として「３」、計算開始桁として「５６桁（ｉ＝５６）」、計算終了桁として「１５ワード（ｗ＝１５）」が設定された場合について図１４〜図１７を参照して説明する。
【０２０３】
図１４〜図１７中の左側の算術式は、筆算による平方根の計算方法を説明するための式であり、図１４〜図１７中の右側の計算手順は、演算装置３００により実行される平方根の計算方法を説明するための手順である。ここで、平方根を筆算で求める場合、下記式（１）に基づいて、各位の値を求めるものとする。尚、この方法は、一般的に知られているため、詳細な説明は省略する。
【数１】
2005149474.tif 000003
【０２０４】
図１４左側に示すように、上記式（１）から、数（１）は、「３」を計算数値とした場合、平方して３を超えない値「１」として得る。数（２）は、数（１）と同じ値「１」として得る。また、数（３）は、数（１）の平方値「１2」であり、これを計算数値「３」から減算した減算結果「２」を数（４）として得る。更に、数（２）に数（１）を加算した値「２」を数（５）として得て、次の計算に進む。
【０２０５】
上述した筆算による計算を演算装置３００で行う場合を説明する。図１４右側に示すように、演算開始時においては、レジスタＸ＝「３」，レジスタＹ＝「０」，レジスタＺ＝「０」，レジスタＡ＝「０」が設定されている。次いで、レジスタＡには「Ａ＋１→１」（数（１）に対応）が設定され、レジスタＹには「Ｙ＋１→１」（数（２）に対応）が設定され、レジスタＺには「Ｙ×１→１」（数（３）に対応）が設定される。続いて、レジスタＩにｉ（計算開始桁）＝６２，レジスタＷにｗ（計算終了）＝１５が設定され、演算が開始されると、レジスタＸの出力データとレジスタＺの出力データとが演算され、演算結果がレジスタＸに「３−１→２」（数（４）に対応）として設定される。更に、レジスタＹには「Ｙ＋１→２」（数（５）に対応）が設定される。
【０２０６】
次に、図１５左側に示すように、上記式（１）から、（２０＋ｘ）×ｘが２００以下となる最大のｘを求め、ｘ＝７から数（６）を「１．７」として得る。数（７）は、（２０＋ｘ）から「２７」として得る。また、「２７」と「７」とを乗算した値「１８９」を数（８）として得て、２００から数（８）を減算し、減算結果「１１」を数（９）として得る。更に、数（７）に「７」を加算した値「３７」を数（１０）として得て、次の計算に進む。
【０２０７】
上述した筆算による計算を演算装置３００で行う場合を説明する。図１５右側に示すように、レジスタＡには「Ａ＋０．７→１．７」（数（６）に対応）が設定され、レジスタＹには「Ｙ＋０．７→２．７」（数（７）に対応）が設定され、レジスタＺには「Ｙ×０．７→１．８９」（数（８）に対応）が設定される。続いて、レジスタＩにｉ（計算開始桁）＝６０，レジスタＷにｗ（計算終了ワード）＝１５が設定され、演算が開始されると、レジスタＸの出力データとレジスタＺの出力データとが演算され、演算結果がレジスタＸに「２．００−１．８９→０．１１」（数（９）に対応）として設定される。更に、レジスタＹには「Ｙ＋０．７→３．４」（数（１０）に対応）が設定される。
【０２０８】
次に、図１６左側に示すように、上記式（１）から、（３４０＋ｘ）×ｘが１１００以下となる最大のｘを求め、ｘ＝３から数（１１）を「１．７３」として得る。数（１２）は、（３４０＋ｘ）から「３４３」として得る。また、「３４３」と「３」とを乗算した値「１０２９」を数（１３）として得て、１１００から数（１３）を減算して、減算結果「７１」を数（１４）として得る。更に、数（１２）に「３」を加算した値「３４６」を数（５）として得て、次の計算に進む。
【０２０９】
上述した筆算による計算を演算装置３００で行う場合を説明する。図１６右側に示すように、レジスタＡには「Ａ＋０．０３→１．７３」（数（１１）に対応）が設定され、レジスタＹには「Ｙ＋０．０３→３．４３」（数（１２）に対応）が設定され、レジスタＺには「Ｙ×０．０３→０．１０２９」（数（１３）に対応）が設定される。続いて、レジスタＩにｉ（計算開始桁）＝５８，レジスタＷにｗ（計算終了ワード）＝１５が設定され、演算が開始されると、レジスタＸの出力データとレジスタＺの出力データとが演算され、演算結果がレジスタＸに「０．１１−０．１０２９→０．００７１」（数（１４）に対応）として設定される。更に、レジスタＹには「Ｙ＋０．０３→３．４６」（数（１５）に対応）が設定される。
【０２１０】
次に、図１７左側に示すように、上記式（１）から、（３４６０＋ｘ）×ｘが７１００以下となる最大のｘを求め、ｘ＝２から数（１６）を「１．７３２」として得る。数（１７）は、（３４６０＋ｘ）から「３４６２」として得る。また、「３４６２」と「２」とを乗算した値「６９２４」を数（１８）として得て、７１００から数（１８）を減算して、減算結果「１７６」を数（１９）として得る。更に、数（１７）に「２」を加算した値「３４６４」を数（２０）として得て、計算を終了する。
【０２１１】
上述した筆算による計算を演算装置３００で行う場合を説明する。図１７右側に示すように、レジスタＡには「Ａ＋０．００２→１．７３２」（数（１６）に対応）が設定され、レジスタＹには「Ｙ＋０．００２→３．４６２」（数（１７）に対応）が設定され、レジスタＺには「Ｙ×０．００２→０．００６９２４」（数（１８）に対応）が設定される。続いて、レジスタＩにｉ（計算開始桁）＝５６，レジスタＷにｗ（計算終了ワード）＝１５が設定され、演算が開始されると、レジスタＸの出力データと、レジスタＺの出力データが演算され、演算結果がレジスタＸに「０．００７１００−０．００６９２４→０．０００１７６」（数（１９）に対応）として設定される。更に、レジスタＹには「Ｙ＋０．００２→３．４６４」（数（２０）に対応）が設定される。
【０２１２】
以上のように、計算命令の種類「平方根」、計算数値「３」、計算開始桁「５６桁」、計算終了桁「１５ワード」が命令として与えられた場合、演算結果として「１．７３２」が得られる。
【０２１３】
次に、計算命令の種類として「立方根」、計算数値として「３」、計算開始桁として「５６桁（ｉ＝５６）」、計算終了桁として「１５ワード（ｗ＝１５）」が設定された場合の演算方法について図１８〜図２０を参照して説明する。尚、以下の説明において、演算装置３００のレジスタ部３７０は、５個のレジスタＸ，Ｙ，Ｚ，Ａ，Ｂを有し、各レジスタを適宜切り替えて使用する例として説明する。
【０２１４】
図１８〜図２０中の左側の算術式は、筆算による立方根の演算方法を説明するための式であり、図１８〜図２０中の右側の計算手順は、演算装置３００により実行される立方根の演算方法を説明するための手順である。ここで、立方根を筆算で求める場合、下記式（２）に基づいて、各位の値を求めるものとする。尚、この方法は、一般的に知られているため、詳細な説明は省略する。
【数２】
2005149474.tif 000004
【０２１５】
図１８左側に示すように、上記式（２）から、数（２１）は、「３」を計算数値とした場合、３乗して３を超えない値「１」として得る。また、数（２１）の立方値「１3」を数（２２）として得て、これを計算数値「３」からを減算した減算結果「２」を数（２３）として得てる。また、数（２４）は、数（２１）の平方値「１2」と「３」とを乗算した値「３」として得る。数（２５）は、数（２１）と「３」とを乗算した値「３」として得て、次の計算に進む。
【０２１６】
上述した筆算による計算を演算装置３００で行う場合を説明する。図１８右側に示すように、演算開始時においては、レジスタＸ＝「３」，レジスタＹ＝「０」，レジスタＺ＝「０」，レジスタＷ＝「０」，レジスタＡ＝「０」が設定されている。次いで、レジスタＡには「（Ａ＋１）→１」（数（２１）に対応）が設定され、レジスタＺには「１3→１」（数（２２）に対応）が設定される。続いて、レジスタＩにｉ（計算開始桁）＝６２，レジスタＷにｗ（計算終了ワード）＝１５が設定され、演算が開始されると、レジスタＸの出力データとレジスタＺの出力データとが演算され、演算結果がレジスタＸに「３−１→２」（数（２３）に対応）として設定される。更に、レジスタＢには「３×１×１→３」（数（２４）に対応）が設定され、レジスタＹには「３×１→３」（数（２５）に対応）が設定される。
【０２１７】
次に、図１９左側に示すように、上記式（２）から、３００×ｘと３０×ｘ2とｘ3とが２０００以下になる最大のｘを求め、ｘ＝４から数（２６）を「１４」として得る。数（２７）は、３００×４から「１２００」として得る。また、数（２８）は、３０×４2から「４８０」として得て、数（２９）は、４3から「６４」として得る。そして、２０００から数（２７）〜（２９）を減算して、減算結果「２５６」を数（３０）として得る。更に、「３」と数（２６）の平方値「１９６」とを乗算した値「５８８」を数（３１）として得て、「３」と数（２６）を乗算した値「４２」を数（３２）として得て、次の計算に進む。
【０２１８】
上述した筆算による計算を演算装置３００で行う場合を説明する。図１９右側に示すように、レジスタＡには「Ａ＋０．４→１．４」（数（２６）に対応）が設定され、レジスタＺには「３×０．４→１．２」（数（２７）に対応）が設定される。次いで、レジスタＩにｉ（計算開始桁）＝５９，レジスタＷにｗ（計算終了ワード）＝１５が設定され、演算が開始されると、レジスタＸの出力データと、レジスタＺの出力データとが演算され、演算結果がレジスタＸに「２．０００−１．２００→０．８００」として設定される。続いて、レジスタＺには「３×０．４2→０．４８」（数（２８）に対応）が設定され、レジスタＸの出力データと、レジスタＺの出力データとが演算され、演算結果がレジスタＸに「０．８００−０．４８０→０．３２０」として設定される。
【０２１９】
更に、レジスタＺには「０．４3→０．０６４」（数（２９）に対応）が設定され、レジスタＸの出力データと、レジスタＺの出力データとが演算され、演算結果がレジスタＸに「０．３２０−０．０６４→０．２５６」（数（３０）に対応）として設定される。また、レジスタＢには「３×１．４2→５．８８」（数（３１）に対応）が設定され、レジスタＹには「３×１．４→４．２」（数（３２）に対応）が設定される。
【０２２０】
次に、図２０左側に示すように、上記式（２）から、５８８００×ｘ3と、４２０×ｘ2と、４3とが２５６０００以下になる最大のｘを求め、ｘ＝４から数（３３）を「１４４」として得る。数（３４）は、５８８００×４から「２３５２００」として得る。また、数（３５）は、４２０×４2から「６７２０」として得て、数（３６）は、４3から「６４」として得る。そして、２５６０００から数（３４）〜（３６）を減算して、減算結果「１４０１６」を数（３７）として得る。更に、「３」と数（３３）の平方値「２０７３６」を乗算した値「６２２０８」を数（３８）とし、「３」と数（３３）を乗算した値「４３２」を数（３８）として得て、計算を終了する。
【０２２１】
上述した筆算による計算を演算装置３００で行う場合を説明する。図２０右側に示すように、レジスタＡには「Ａ＋０．０４→１．４４」（数（３３）に対応）が設定され、レジスタＺには「５．８８×０．０４→０．２３５２」（数（３４）に対応）が設定される。次いで、レジスタＩにｉ（計算開始桁）＝５６，レジスタＷにｗ（計算終了ワード）＝１５が設定され、演算が開始されると、レジスタＸの出力データと、レジスタＺの出力データとが演算され、演算結果がレジスタＸに「０．２５６００−０．２３５２００→０．０２０８００」として設定される。続いて、レジスタＺには「４．２×０．０４2→０．００６７２」（数（３５）に対応）が設定され、レジスタＸの出力データと、レジスタＺの出力データとが演算され、演算結果がレジスタＸに「０．０２０８００−０．００６７２０→０．０１４０８０」として設定される。
【０２２２】
更に、レジスタＺには「０．０４3→０．００００６４」（数（３６）に対応）が設定され、レジスタＸの出力データと、レジスタＺの出力データとが演算され、演算結果がレジスタＸに「０．０１４０８０３２０−０．００００６４→０．０１４０１６」（数（３７）に対応）として設定される。また、レジスタＢには「３×１．４４2→６．２２０８」（数（３８）に対応）が設定され、レジスタＹには「３×１．４４→４．３２」（数（３９）に対応）が設定される。
【０２２３】
以上のように、計算命令の種類「立方根」、計算数値「３」、計算開始桁「５６桁」、計算終了桁「１５ワード」が命令として与えられた場合、計算結果として「１．４４」が得られる。
【０２２４】
上述した通り、平方根や立方根の演算のように、多桁の計算を順次繰り返して実行することにより解が求められる演算においては、順次行われる多桁の計算は桁指定されて行われる１命令に対応している場合が多い。従って、このような１命令を演算装置３００で桁指定して多桁の計算を行うことができるので、平方根や立方根を演算するプログラムの作成が容易になる。また、上述した平方根や立方根の演算において、順次行われる多桁の計算は、演算装置３００における処理単位と一致しているため、プログラムで設定した桁数とぴったり一致させて計算処理を行うことができる。これにより、必要とされる精度で演算結果を得ることができる。
【０２２５】
［第２の実施の形態の効果］
本第２の実施の形態によれば、演算装置３００の可変パラメータ記憶部３２０に６ビットのレジスタＩを備え、レジスタＩに設定されるデータｉにより、計算開始桁を１桁単位で設定可能とする。すなわち、計算開始桁を１桁単位で設定可能にし、計算開始桁から計算終了桁まで、桁数単位毎の小規模な十進計算に分けて行うことができ、効率の良い計算を行うことができる。また、ユーザ作成のプログラム等により予め計算命令で計算開始桁及び計算終了桁を設定しておくことで、プログラムＲＯＭ３１０のプログラム命令３１１に設定されている計算桁数ちょうどの十進計算を行うことができ、効率の良い十進計算を容易に行うことができる。
【０２２６】
また、６ビットのレジスタＩにより計算開始桁の桁単位指定を可能としつつ、演算器３７０においては４桁毎に演算を行う構成であるため、第１の実施の形態の演算装置２００と略同様の回路構成により第２の実施の形態を実現することができる。つまり、計算桁数に応じたプログラムの変更等が殆ど無く、簡単な回路変更で桁単位指定を可能とすることができ、装置の低コスト化、小型化を実現することができる。
【０２２７】
［第２の実施の形態の変形例］
（１）計算桁数の単位
上述した第２の実施の形態では、１ワード（１６ビット）を単位とし、１０進表現４桁毎に演算を行うこととしたが、計算桁数の単位は４桁に限らない。また、指定された計算桁が４の倍数でない場合、計算終了ワードにおける不要データをマスクすることとしたが、計算開始桁を含む所定の第ｎワードから４桁毎に演算を開始し、その計算開始ワードにおける不要データをマスクする構成としてもよい。
（２）計算終了桁を可変
上述した第２の実施の形態では、計算終了桁はレジスタＷにより、ワード単位で指定されることとしたが、可変パラメータ記憶部３２０に、６ビットのレジスタを更に設け、このレジスタにより計算終了桁を桁単位で指定可能としてもよい。
（３）指数部の計算桁数を可変
また、上述した第２の実施の形態では、第２ワードから第１５ワードのいずれかを計算開始桁又は計算開始ワード或いは計算終了桁とし、仮数部の計算桁数を可変としたが、指数部の計算桁数を可変しても良いのは勿論である。
（４）レジスタのワード数
また、レジスタ部３６０のワード数を１６として説明したが、これに限られないことは勿論である。また、仮数部を１４ワード、指数部を２ワードとしたが、この割合は適宜変更可能であることも勿論である。
（５）レジスタの数
更に、本第２の実施の形態においては、レジスタ部３６０が有するレジスタの数を４又は５として説明を行ったが、レジスタの数はこれに限定されないことは勿論である。
【０２２８】
［第３の実施の形態］
次に、第３の実施の形態について説明する。
本第３の実施の形態における演算システムは、演算器における演算処理をパイプライン処理することにより、演算速度を向上させるものである。以下では、上述した第１の実施の形態における演算システムＳ１の演算装置２００にパイプライン処理を適用した場合について説明する。尚、第１の実施の形態と同一部分については、同一の符号を付して、図示及び詳細な説明を省略する。以下、本第３の実施の形態に特徴的な部分につき詳細に説明する。
【０２２９】
図２１は、演算器のパイプライン処理に係る要部の構成要素ブロックを示す図である。同図によれば、パイプライン処理に係る構成要素ブロックとして、演算器２７０，レジスタ部２６０，アドレスカウンタ２４０を備える。ここで、レジスタ部２６０は、アドレス指定及びデータ出力をそれぞれ２ポート有する２ポート方式のレジスタであるため、便宜的に第１ポートを有するレジスタをＦレジスタ２７０ａとし、第２ポートを有するレジスタをＳレジスタ２７０ｂとして図示するが、実際の回路においては、物理的に１つのメモリにより構成されるものであっても良い。また、アドレスカウンタ２４０は、レジスタ部２６０の２つのポートにアドレスを出力するものであり、第１ポートにアドレスを出力するアドレスカウンタ２４０ａと、第２ポートにアドレスを出力するアドレスカウンタ２４０ｂとを有して構成される。
【０２３０】
Ｆレジスタ２６０ａは、２ワード（３２ビット）によるアクセスが可能であり、アドレスカウンタ２４０ａにより指定されたアドレスから３２ビット分のデータを読み出して、演算器２７０に出力する。また、演算器２７０から入力される２ワード（３２ビット）のデータをアドレスカウンタ２４０ａにより指定されたアドレスに書き込む。つまり、Ｆレジスタ２６０ａは、３２ビットデータの読み出しと、３２ビットデータの書き込みを１クロック毎に交互に行う。
【０２３１】
Ｓレジスタ２６０ｂは、１ワード（１６ビット）のアクセスが可能であり、アドレスカウンタ２４０ｂにより指定されたアドレスから１６ビット分のデータを読み出して演算器２７０に出力する。
【０２３２】
演算器２７０は、乗算回路２７０ａ、ラッチ回路２７０ｂ、ＲｅａｄＦ／Ｆ２７０ｃ、セレクタ２７０ｄ、加算回路２７０ｅ、ＷｒｉｔｅＦ／Ｆ２７０ｆを備えて構成される。乗算回路２７０ａは、Ｓレジスタ２６０ｂから入力される１６ビットのデータと、ラッチ回路２７０ｂから入力される４ビットのデータとを乗算して、乗算結果を１６ビットのデータとして加算回路２７０ｅに出力する。ラッチ回路２７０ｂは、Ｆ／Ｆ（Flip Flop）により構成され、４ビットのデータを保持して乗算回路２７０ａに出力する。
【０２３３】
ＲｅａｄＦ／Ｆ２７０ｃは、Ｆレジスタ２６０ａから入力される１６ビットのデータを保持して、セレクタ２７０ｄに出力する。セレクタ２７０ｄは、Ｆレジスタ２６０ａから入力される１６ビットのデータと、ＲｅａｄＦ／Ｆ２７０ｃから入力される１６ビットのデータとを１クロック毎に交互に選択して加算回路２７０ｅに出力する。
【０２３４】
加算回路２７０ｅは、乗算回路２７０ａから入力される１６ビットのデータと、セレクタ２７０ｄから入力される１６ビットのデータとを被演算子として加算して、加算結果を１６ビットのデータとしてＷｒｉｔｅＦ／Ｆ２７０ｆ及びＦレジスタ２６０ａに出力する。また、加算回路２７０ｅは、加算結果の一部を４ビットのデータとしてラッチ回路２７０ｂに出力する。ＷｒｉｔｅＦ／Ｆ２７０ｆは、加算回路２７０ｅから出力される１６ビットのデータを保持してＦレジスタ２６０ａに出力する。
【０２３５】
次に、演算器２７０の動作について、図２２に示すタイミングチャートに基づいて説明する。図２２は、計算命令「Ｘ０〜５＋Ｙ０〜５」に基づいて行われる積和演算のタイミングチャートを示す図である。同図中、Ｆレジスタ２６０ａに入出力されるデータをＸ，Ｓレジスタ２６０ｂから出力されるデータをＹ，ラッチ回路２７０ｂから出力されるデータをＭとして以下説明する。
【０２３６】
まず、１クロック目で、Ｆレジスタ２６０ａからデータＸ０，Ｘ１が読み出され、データＸ０はセレクタ２７０ｄで選択されて、加算回路２７０ｅに出力される。データＸ１は、ＲｅａｄＦ／Ｆ２７０ｃに保持される。また、Ｓレジスタ２６０ｂからデータＹ０が読み出され、データＹ０は乗算回路２７０ａに出力される。
【０２３７】
次に、２クロック目で、乗算回路２７０ａと加算回路２７０ｅにより積和演算「Ｘ０＋Ｙ０×Ｍ」が行われる。また、ＲｅａｄＦ／Ｆ２７０ｃからデータＸ１がセレクタ２７０ｄに出力され、セレクタ２７０ｄでデータＸ１が選択され、加算回路２７０ｅに出力される。更に、Ｓレジスタ２６０ｂからデータＹ１が読み出され、データＹ１は乗算回路２７０ａに出力される。
【０２３８】
続いて、３クロック目で、乗算回路２７０ａと加算回路２７０ｅにより積和演算「Ｘ１＋Ｙ１×Ｍ」が行われる。また、先に演算された「Ｘ０＋Ｙ０×Ｍ」の演算結果は、ＷｒｉｔｅＦ／Ｆ２７０ｆに保持される。また、Ｆレジスタ２６０ａからデータＸ２，Ｘ３が読み出され、データＸ２はセレクタ２７０ｄで選択されて、加算回路２７０ｅに出力される。データＸ３は、ＲｅａｄＦ／Ｆ２７０ｃに保持される。更に、Ｓレジスタ２６０ｂからデータＹ２が読み出され、データＹ２は乗算回路２７０ａに出力される。
【０２３９】
そして、４クロック目で、ＷｒｉｔｅＦ／Ｆ２７０ｆで保持されている演算結果「Ｘ０＋Ｙ０×Ｍ」と、加算回路２７０ｅから出力される演算結果「Ｘ１＋Ｙ１×Ｍ」とがＦレジスタ２６０ａのＸ０，Ｘ１に書き込まれる。また、乗算回路２７０ａと加算回路２７０ｅにより積和演算「Ｘ２＋Ｙ２×Ｍ」が行われ、ＲｅａｄＦ／Ｆ２７０ｃからデータＸ３がセレクタ２７０ｄに出力され、セレクタ２７０ｄでデータＸ３が選択されて、加算回路２７０ｅに出力される。更に、Ｓレジスタ２６０ｂからデータＹ３が読み出され、データＹ３は乗算回路２７０ａに出力される。
【０２４０】
このように、計算命令「Ｘ０〜５＋Ｙ０〜５」に基づく積和演算は、１サイクルを４クロックで実行し、３クロック目以降、２クロックを次サイクルと重複させて順次処理を行うことにより、高速に演算処理を行うことができる。すなわち、上述した積和演算は、１サイクルで２つの演算（例えば、Ｘ０＋Ｙ０×Ｍ，Ｘ１＋Ｙ１×Ｍ）を実行するが、「Ｘ０〜５＋Ｙ０〜５」には６回分の演算が含まれるため、３サイクルを要し、総クロック数は３×４＝１２クロックとなる。しかし、パイプライン処理により、３サイクルを８クロックで実行することができ、４クロック分の演算時間を短縮することができる。
【０２４１】
［第３の実施の形態の効果］
以上のように、本第３の実施の形態によれば、３２ビットデータ（２ワード）のアクセスが可能なＦレジスタの入力段と出力段に、一時記憶手段としてＷｒｉｔｅＦ／Ｆ２７０ｆ，ＲｅａｄＦ／Ｆ２７０ｃを設け、一時記憶手段に書込データと読出データを１６ビット分ずつそれぞれ一時的に保持させる。そして、演算器２７０において１６ビットデータの計算を１クロック毎に行うと同時に、Ｆレジスタ２６０ａにおいて３２ビットデータの書き込み及び読み出しを１クロック毎に交互に行うことにより、パイプライン処理を実現する。これにより、演算装置の演算速度を高速化することができる。
【０２４２】
［第３の実施の形態の変形例］
尚、上述した計算命令「Ｘ０〜５＋Ｙ０〜５」は一例であり、計算開始ワード及び計算終了ワードは適宜変更可能である。例えば、計算命令「Ｘ０〜ｎ＋Ｙ０〜ｎ」とした場合、ｎが奇数値であれば、クロック数＝ｎ＋３で積和演算処理を行うことができる。また、本第３の実施の形態では、構成要素ブロックに乗算回路２７０ａと、加算回路２７０ｅとを備え、積和演算を行う場合を例として説明したが、演算処理は積和演算処理に限るものではなく、その他種々の演算処理に適用可能なことは勿論である。
【０２４３】
更に、第３の実施の形態は、上述した第１の実施の形態における演算装置２００においてパイプライン処理する場合を例として説明したが、上述した第２の実施の形態における演算装置３００においてパイプライン処理する構成であっても良い。この場合、計算開始桁を桁単位で指定して、パイプライン処理による演算を行うことができる。
【０２４４】
［第４の実施の形態］
次に、第４の実施の形態について説明する。
図２３は、本第４の実施の形態における演算システムＳ３の概略構成図である。同図によれば、演算システムＳ３は、ＰＣ１００と、ＵＳＢ演算装置４００とが、それぞれのＵＳＢ端子Ｕ２，Ｕ１を介して接続され、相互にデータ通信可能なように構成されている。
【０２４５】
ＰＣ１００は、キーボード等の入力装置から演算データの入力を行わせ、入力された演算データをＵＳＢ端子Ｕ２，Ｕ１を介して接続されたＵＳＢ演算装置４００に送信する。尚、第４の実施の形態において、演算データとは、演算の種類（例えば、四則演算、初等関数、高等関数）、演算対象の数値データ（被演算数、演算数）、有効桁数（計算桁数）を含むデータをいう。また、ＰＣ１００は、ＵＳＢ演算装置４００から演算結果を受信すると、モニタ等の表示装置に演算結果を表示させる。
【０２４６】
図２４は、第４の実施の形態におけるＵＳＢ演算装置４００の要部構成を示すブロック図である。同図によれば、ＵＳＢ演算装置４００は、ＣＰＵ４０１、フラッシュメモリ４０２、ＳＲＡＭ４０３、ＲＯＭ４０４、通信制御部４０５、共有メモリ４０６等を備えて構成されている。
【０２４７】
ＣＰＵ４０１は、ＦＰＧＡ（Field Programmable Gate Array）等により構成され、ＲＯＭ４０４に格納されるシステムプログラム、フラッシュメモリ４０２に格納される各種処理プログラムを読み出して、装置全体の制御や各種演算処理を行う。このＣＰＵ４０１は、上述した第１の実施の形態の図３に示す演算装置２００や第２の実施の形態の図９に示す演算装置３００に相当するものである。従って、このＣＰＵ４０１で、指定された計算開始桁又は計算開始ワードから計算終了ワードまでの演算処理を行うことにより、所望の計算桁数で各種演算を行うことができる。
【０２４８】
フラッシュメモリ４０２は、電気的に書き換え可能な不揮発性メモリにより構成され、各種演算プログラムを記憶したり、ＰＣ１００から転送されてきた演算プログラムを書き換え可能に記憶する。このフラッシュメモリ４０２に記憶されたプログラムは、例えば、上述した第１の実施の形態においてはプログラムＲＯＭ２１０上に展開される等して用いられるものである。
【０２４９】
ＳＲＡＭ４０３は、ＣＰＵ４０１の作業領域等として用いられる記憶部であり、フラッシュメモリ４０２やＲＯＭ４０４から読み出されたプログラム、ＣＰＵ４０１の演算結果等が格納される。このＳＲＡＭ４０３は、例えば、上述した第１の実施の形態の演算装置２００や第２の実施の形態の演算装置３００中のレジスタ部２６０，３６０に相当するものである。
【０２５０】
ＲＯＭ４０４は、装置本体の初期状態を設定するためのシステムプログラムや、ＵＳＢで接続された他機器との間でデータ通信を行うための通信制御処理プログラム等を記憶する。
【０２５１】
通信制御部４０５は、ＵＳＢ端子Ｕ１を備え、ＵＳＢ端子Ｕ１を介して接続された他機器との間で、ＵＳＢ規格に基づいたデータの通信を制御する。具体的に、通信制御部４０５は、ＰＣ１００からデータを受信すると、シリアル又はパラレル変換して共有メモリ４０６に書き込み、ＣＰＵ４０１により共有メモリ４０６に演算結果が書き込まれると、演算結果を読み出してＰＣ１００にデータを転送する通信制御処理を実行する。
【０２５２】
共有メモリ４０６は、電気的に書き換え可能なメモリにより構成され、ＰＣ１００から受信した演算データ（例えば、演算の種類、演算対象の数値データ、有効桁数）、ＣＰＵ４０１から出力された演算結果等を記憶する。
【０２５３】
次に、本第４の実施の形態における演算システムＳ３の動作について説明する。図２５（ａ）は、ＰＣ１００により実行される通信処理、図２５（ｂ）は、通信制御部４０５により実行される通信処理、図２５（ｃ）は、ＣＰＵ４０１により実行される通信処理を示すフローチャートである。
【０２５４】
まず、ＰＣ１００により実行される通信処理について説明する。図２５（ａ）に示すように、ユーザ操作に応じて、演算データが入力されると（ステップＳＴ３１）、ＰＣ１００は、ＵＳＢ端子Ｕ２を介して接続されたＵＳＢ演算装置４００に、入力された演算データを送信する（ステップＳＴ３２）。
【０２５５】
続いて、ＰＣ１００は、ＵＳＢ演算装置４００からの演算結果の受信を待機し（ステップＳＴ３３）、演算結果を受信すると（ステップＳＴ３４）、受信した演算結果を表示部（図示せず）に表示させて（ステップＳＴ３５）、本通信処理を終了する。
【０２５６】
次に、ＵＳＢ演算装置４００の通信制御部４０５により実行される通信処理について説明する。図２５（ｂ）に示すように、通信制御部４０５は、ＵＳＢ端子Ｕ１を介して接続されたＰＣ１００から演算データを受信すると（ステップＳＴ４１）、受信した演算データを共有メモリ４０６に書き込む（ステップＳＴ４２）。続いて、ＣＰＵ４０１へのリセット信号の出力を解除して、ＣＰＵ４０１を動作させる（ステップＳＴ４３）。
【０２５７】
そして、ＣＰＵ４０１から入力されるビジー信号を監視し（ステップＳＴ４４）、ビジー信号がオフになった場合（ステップＳＴ４４；オフ）、リセット信号を出力してＣＰＵ４０１の動作を停止させる（ステップＳＴ４５）。更に、共有メモリ４０６からＣＰＵ４０１により書き込まれた演算結果を読み出して（ステップＳＴ４６）、演算結果をＰＣ１００に送信し（ステップＳＴ４７）、本通信処理を終了する。
【０２５８】
次に、ＵＳＢ演算装置４００のＣＰＵ４０１により実行される通信処理について説明する。図２５（ｃ）に示すように、ＣＰＵ４０１は、通信制御部４０５からリセット信号の出力が解除されたか否かを判別し（ステップＳＴ５１）、リセット信号の出力が解除された場合（ステップＳＴ５１；ＹＥＳ）、ビジー信号をオンにして通信制御部４０５に出力する（ステップＳＴ５２）。続いて、共有メモリ４０６から演算データを読み出して（ステップＳＴ５３）、演算処理を実行する（ステップＳＴ５４）。
【０２５９】
演算処理について説明する。図２６は、ＣＰＵ４０１により実行される演算処理を示すフローチャートである。図２６に示すように、ＣＰＵ４０１は、演算データに含まれる演算の種類に対応する演算プログラムをＲＯＭから読み出す（ステップＳＴ６１）。そして、演算データに含まれる有効桁数に対応して演算プログラム中で計算命令の計算桁数と計算の種類を設定して、各計算命令を実行していき演算プログラムの計算を行う（ステップＳＴ６２）
【０２６０】
演算処理を終了すると、ＣＰＵ４０１は、演算結果を共有メモリ４０６に書き込み（ステップＳＴ５５）、ビジー信号をオフにして通信制御部４０５への出力を停止する（ステップＳＴ５６）。そして、ステップＳＴ５１に移行して上述した処理を繰り返して実行する。
【０２６１】
［第４の実施の形態の効果］
以上のように、第４の実施の形態によれば、ＵＳＢ演算装置４００と、ＰＣ１００とをそれぞれのＵＳＢ端子Ｕ１，Ｕ２を介して接続し、ＰＣ１００から演算データ（例えば、演算の種類、演算対象の数値データ、有効桁数）の入力を行わせ、ＵＳＢ演算装置４００で演算データに基づいて所望の計算桁数にて演算を行い、演算結果をＰＣ１００に送信する。そして、演算結果をＰＣ１００の表示部に表示することで、任意の計算桁数で十進計算を行う機能を有しないＰＣにおいても所望の計算桁数で十進数計算を高速に行うことができる。
【０２６２】
［第４の実施の形態の変形例］
本第４の実施の形態においては、ＵＳＢ規格によりデータ通信を行う場合を例として説明したが、通信方式はＵＳＢに限らず、ＳＣＳＩ（Small Computer System Interface）や、ＩｒＤＡ（Infrared Data Association）規格に準じた無線通信等であってもよい。また、ＵＳＢ端末装置４００と接続される電子機器は、ＰＣに限らず、ＰＤＡ、ノート型コンピュータ、携帯端末等であっても良い。
【０２６３】
また、演算データとして、演算の種類、演算対象の数値データ、有効桁数を含む場合を例として説明したが、演算データはこれに限定されない。例えば、演算データに、計算開始桁又は計算開始ワードと計算終了桁とを含み、これらに基づいて計算桁数を取得する構成であっても良い。
【０２６４】
或いは、図２７に示す演算システムＳ４のように構成されるとしてもよい。すなわち、ＰＣ２００は、演算データが入力されると、入力された演算データに基づいた演算プログラムを作成する。具体的には、プログラム中の各計算桁数が演算データに含まれる有効桁数に対応した桁数に設定する等して入力された演算の種類に応じた演算プログラムを作成する。そして、作成した演算プログラムをＵＳＢ演算装置５００に送信する。この場合、ＵＳＢ演算装置５００は、ＰＣ２００から受信した演算プログラムに従って、各計算命令を実行することにより十進計算を行う。この構成によれば、メモリ用両党の点で、ＵＳＢ演算装置５００より有利なＰＣ２００側で各種演算プログラムを作成することができるため、数多くの演算プログラムをＵＳＢ演算装置５００に実行させることができる。
【図面の簡単な説明】
【０２６５】
【図１】本実施の形態での演算装置の基本概略構成。
【図２】第１の実施の形態の演算システムの概略構成図。
【図３】第１の実施の形態の演算装置の要部回路構成図。
【図４】レジスタ部の構成図。
【図５】上位アドレスＦｕａｄ、Ｓｕａｄと指定されるレジスタとの対応関係。
【図６】第１の実施の形態の開始ワードの変更による演算桁数の可変を示す図。
【図７】第１の実施の形態の拡張命令コードＥＸＴの構成。
【図８】第１の実施の形態の拡張命令コードＥＸＴと演算装置の機能例との対応関係。
【図９】第２の実施の形態の演算装置の要部回路構成図
【図１０】第２の実施の形態の拡張命令コードＥＸＴの構成。
【図１１】第２の実施の形態の計算開始桁の変更による計算桁数の可変を示す図。
【図１２】第２の実施の形態の拡張命令コードＥＸＴと演算装置の機能例との対応関係。
【図１３】桁指定計算処理を示すフローチャート。
【図１４】第２の実施の形態の演算装置での平方根の演算処理を説明する図。
【図１５】第２の実施の形態の演算装置での平方根の演算処理を説明する図。
【図１６】第２の実施の形態の演算装置での平方根の演算処理を説明する図。
【図１７】第２の実施の形態の演算装置での平方根の演算処理を説明する図。
【図１８】第２の実施の形態の演算装置での立方根の演算処理を説明する図。
【図１９】第２の実施の形態の演算装置での立方根の演算処理を説明する図。
【図２０】第２の実施の形態の演算装置での立方根の演算処理を説明する図。
【図２１】第３の実施の形態の構成要素ブロック図。
【図２２】タイミングチャートを示す図。
【図２３】第４の実施の形態の演算システムの概略構成図。
【図２４】ＵＳＢ演算装置の要部構成を示すブロック図。
【図２５】（ａ）ＰＣにより実行される通信処理を示すフローチャート、（ｂ）通信制御部により実行される通信処理を示すフローチャート、（ｃ）ＣＰＵにより実行される通信処理を示すフローチャート。
【図２６】ＣＰＵにより実行される演算処理を示すフローチャート
【図２７】第４の実施の形態の変形例
【図２８】従来の演算システムの論理的な階層構造を示す図。
【符号の説明】
【０２６６】
１００、２００  ＰＣ
２００、３００  演算装置
２１０、３１０  プログラムＲＯＭ
２１２、３１２  プログラムカウンタ
２１４、３１４  ラッチ部
２１６、３１６  命令デコーダ
２２０、３２０  可変パラメータ記憶部
Ｗ、Ｖ、Ｉ  レジスタ
２３１、２３２、２３３、２３４  セレクタ
３３１、３３２、３３３、３３４  セレクタ
２４０、３４０  アドレスカウンタ
２５０、３５０  終了判定回路
２５２、３５２  一致回路
２５４、３５４  ＯＲゲート
２６０、３６０  レジスタ部
Ｘ、Ｙ、Ｚ、Ａ、Ｂ  レジスタ
２７０、３７０  演算器
４００、５００  ＵＳＢ演算装置
４０１  ＣＰＵ
４０２  フラッシュメモリ
４０３  ＳＲＡＭ
４０４  ＲＯＭ
４０５  通信制御部
４０６  共有メモリ
Ｋ１、Ｋ２  通信ケーブル
Ｕ１、Ｕ２  ＵＳＢ端子
【図１】
2005149474.tif 000005
【図２】
2005149474.tif 000006
【図３】
2005149474.tif 000007
【図４】
2005149474.tif 000008
【図５】
2005149474.tif 000009
【図６】
2005149474.tif 000010
【図７】
2005149474.tif 000011
【図８】
2005149474.tif 000012
【図９】
2005149474.tif 000013
【図１０】
2005149474.tif 000014
【図１１】
2005149474.tif 000015
【図１２】
2005149474.tif 000016
【図１３】
2005149474.tif 000017
【図１４】
2005149474.tif 000018
【図１５】
2005149474.tif 000019
【図１６】
2005149474.tif 000020
【図１７】
2005149474.tif 000021
【図１８】
2005149474.tif 000022
【図１９】
2005149474.tif 000023
【図２０】
2005149474.tif 000024
【図２１】
2005149474.tif 000025
【図２２】
2005149474.tif 000026
【図２３】
2005149474.tif 000027
【図２４】
2005149474.tif 000028
【図２５】
2005149474.tif 000029
【図２６】
2005149474.tif 000030
【図２７】
2005149474.tif 000031
【図２８】
2005149474.tif 000032