(57)【特許請求の範囲】
【請求項１】
データ処理システムにおいて乗算／累算処理を実行する方法であって、
前記データ処理システムのステータス・レジスタ内のモード・ビットをアサートするステップであって、前記モード・ビットは、前記データ処理システムのＮビット動作モードに入るためアサートされ、且つ前記モード・ビットは、Ｍビット動作モードに入るためニゲートされ、ここでＮ及びＭは整数であり、ＮはＭより小さい、前記アサートするステップと、
前記モード・ビットがアサートされたとき、第１のＮビット・オペランドを第１のＭビット・レジスタに与えるステップと、
前記モード・ビットがアサートされたとき、第２のＮビット・オペランドを第２のＭビット・レジスタに与えるステップと、
前記第１のＮビット・オペランドに前記第２のＮビット・オペランドを乗算して、２Ｎビットの積を得るステップと、
前記２Ｎビットの積を中間結果レジスタに記憶するステップと、
第３のオペランドを記憶するアキュムレータ・レジスタであって、少なくともも２Ｍビットの記憶容量を有する前記アキュムレータ・レジスタを設けるステップと、
前記アキュムレータ・レジスタ内の前記第３のオペランドをシフトして、前記第３のオペランドを前記２Ｎビットの積と整列させるステップと、
前記２Ｎビットの積を前記第３のオペランドに加算して、結果を得、且つ当該結果を記憶するステップと
を備える方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、一般的にデータ処理に関し、更に特定すれば、２４ビットおよび１６ビット算術演算(arithmetic)の双方を実行するための装置および方法に関するものである。
【０００２】
【従来の技術】
デジタル信号処理とは、規則的な間隔でサンプリングされデジタル化されたリアルタイム信号の算術演算処理のことである。信号のフィルタ処理、混合および比較のようなデジタル信号処理には、デジタル信号プロセッサ（ＤＳＰ）が用いられている。データ処理システムの中には、デジタル信号処理の内ルーチン・タスク(chores)を扱うために、ＤＳＰがホストプロセッサと共に含まれているものもある。ホスト・プロセッサは、例えば、マイクロコンピュータまたはマイクロプロセッサとすることができる。
【０００３】
ＤＳＰ内の基本動作は、乗算／蓄積（ＭＡＣ）動作である。２つの二進数を乗算し、その結果を第３二進数に加えるまたは蓄積する回路は、デジタル信号処理では一般的に用いられているものである。フーリエ変換、有限インパルス応答（ＦＩＲ）フィルタ、無限インパルス応答（ＩＩＲ）フィルタなどを実行するためのアルゴリズムのようなデジタル信号処理アルゴリズムでは、ハードウエアを用いてＭＡＣ命令を実行できる能力を有すると有用である。
【０００４】
【発明が解決しようとする課題】
用途によっては、他の用途よりも算術演算動作において、より高い精度またはより高い正確さを要求するものがある。例えば、高忠実度音響(high fidelity sound)は、精度を高めるために、音声伝送に必要とされるよりも多くのビット数が必要となる。逆に、より高い精度を与える能力があることには無関係に、特定のビット数を要求し、より多くのビットを用いて精度を高めることが許されていない用途もある。例えば、ヨーロッパのＧＳＭ標準のようなセルラ通信における標準では、ある入力ビット・ストリームで正確なビット精度の出力が得られなければならない。ＧＳＭ標準は、正確に１６ビットの精度を要求しており、これ以上のビット精度は許可しない。しかしながら、今日のデジタル信号処理用のマルチメディアにおける用途では、高い音質を必要とし、しかもセルラ通信環境におけるＧＳＭ標準に適合する能力も必要とする場合が多い。
【０００５】
【課題を解決するための手段】
したがって、一形態では、データ処理システムにおいて算術演算を実行するための方法が提供される。この方法は、Ｍビット記憶装置にＮビットのオペランドを供給する段階を含む。Ｎビット・オペランドは、Ｍビット記憶部において所定の第１整列位置(alignment)を有する。更に、所定の第１整列位置におけるＮビット・オペランド上で算術演算処理を行い、所定の第１整列位置に結果を得る段階と、所定の第１整列位置を有する結果を２Ｍビット記憶部に記憶する段階と、結果をシフトしてこの結果を所定の第２整列位置に位置合わせし、この結果を２Ｍビット記憶部に再度記憶し、２Ｍビット記憶部内の未使用ビットをニゲートする段階を含む。
【０００６】
別の実施例では、データ処理システムにおいて算術演算処理を実行する装置が提供される。この装置は、第１Ｍビット・レジスタ、第１実行部、２Ｍビット・レジスタ、シフト回路、制御回路、およびステータス・レジスタを含む。第１Ｍビット・レジスタは第１Ｎビット・オペランドを記憶する。ここでＭおよびＮは整数であり、ＮはＭよりも小さい。第１実行部は第１Ｍビット・レジスタに結合されており、第１Ｎビット・オペランド上で算術演算処理を実行して結果を得る。２Ｍビット・レジスタは、第１実行部に結合され、結果を記憶する。シフト回路は２Ｍビット・レジスタおよび実行部に結合されており、結果をシフトする。制御回路はシフト回路に結合されており、制御ビットに応答してシフト動作を制御する。ステータス・レジスタは制御回路に結合され、制御ビットを記憶する。
【０００７】
これらおよびその他の特徴および利点は、添付図面に関連して記載された以下の詳細な説明からより明確に理解されよう。
【０００８】
【実施例】
概して言えば、本発明は、同一ハードウエアを用いて、２４ビット算術演算および２４ビット論理演算、ならびに１６ビット算術演算および１６ビット論理演算を実行する能力を有するデータＡＬＵを提供する。ユーザには見えずに行われるシフト動作がオペランド上で実行され、１６ビット算術演算および１６ビット論理演算が可能となる。１つの命令セット全体を、２４ビット・モードまたは１６ビット精度モード(exact mode)で実行することができる。両方のモードで、同一命令及びハードウエアが用いられる。モード間の移行は、ステータス・レジスタ内のステータス・ビットを変更することによって行われる。１６ビット精度動作モードは、データＡＬＵ５４のほぼ全動作を、２４ビット・モードで実行可能にする。例えば、１６ビット・モードでは、データＡＬＵ５４は、丸め(rounding)、倍精度乗算(double precision multiply)、移動およびシフトを行う。加えて、全てのビット・フィールド処理は１６ビット・モードで行うことができる。２４ビット算術演算は、通常２４ビット・モードで実行される。
【０００９】
尚、信号、ステータス・ビット、または同様の装置(apparatus)をその論理真または論理虚の状態にすることを意味する場合、「アサート(assert)」および「ニゲート(negate)」という用語を、それぞれ用いることにする。論理正状態がデジタル論理レベル１の場合、論理虚状態はデジタル論理レベル０となる。また、論理正状態がデジタル論理レベル０の場合、論理虚状態はデジタル論理レベル１となる。また、データ、アドレス、制御、またはステータスのような１つ以上の種々の情報を転送するために用いられる複数の信号を意味する場合に、「バス」という用語を用いることにする。
【００１０】
図１ないし図４を参照することにより、本発明をより詳細に説明する。図１ないし図４に示す各ブロックは回路を表わす。図１は、本発明によるデータ処理システム２０を、ブロック図形状で示す。図１に示す実施例では、データ処理システム２０はデジタル信号プロセッサ（ＤＳＰ）であり、単一の集積回路上に配置されている。他の実施例では、データ処理システム２０は、例えば、マイクロコンピュータまたはマイクロプロセッサとすることもできる。データ処理システム２０は、タイマ２２、ホスト・インターフェース２４、改良型直列同期インターフェース（ＥＳＳＩ）２６、直列非同期インターフェース（ＳＣＩ）２８、プログラムＲＡＭ（ランダム・アクセス・メモリ）および命令キャッシュ３０、Ｘメモリ３２、Ｙメモリ３４、アドレス発生器／直接メモリ・アクセス（ＤＭＡ）コントローラ３６、外部アドレス・バス・スイッチ３８、内部データ・バス・スイッチ４０、ＤＲＡＭ（ダイナミック・ランダム・アクセス・メモリ）およびＳＲＡＭ（スタティック・ランダム・アクセス・メモリ）バス・インターフェースおよび命令キャッシュ制御部４２、外部データ・バス・スイッチ４４、プログラム制御部（ＰＣＵ）４６、ならびにデータ算術論理演算部（ＡＬＵ）５４を含む。プログラム制御部４６は、プログラム割り込みコントローラ４８、プログラム・デコード・コントローラ５０、およびプログラム・アドレス発生器５２を含む。
【００１１】
「YAB」と表記されたアドレス・バス５６、「XAB」と表記されたアドレス・バス５７、「PAB」と表記されたプログラム・アドレス・バス５８、「DAB」と表記されたアドレス・バス５９が、アドレス発生器／ＤＭＡコントローラ３６と外部アドレス・バス・スイッチ３８との間に結合されている。「DDB」と表記されたデータ・バス６０が、ホスト・インターフェース２４と外部データ・バス・スイッチ４４との間に結合されている。「YDB」と表記されたデータ・バス６１、「XDB」と表記されたデータ・バス６２、「PDB」と表記されたプログラム・データ・バス６３、および「GDB」と表記されたプログラム・データ・バス６４が、内部プログラム・データ・バス６４と外部データ・バス・スイッチ４４との間に結合されている。
【００１２】
タイマ２２は、内部または外部タイミングを用いることができる３個のタイマを含み、データ処理システム２０に割り込みをかけたり、あるいは外部装置に通知することができる。加えて、タイマ２２は、指定された回数の事象が生じた後にＤＭＡ転送を通知するために用いることもできる。３個のタイマの各々は、単一の双方向ピン即ち端子に結合されている。加えて、タイマ２２の各タイマは、バス５７、バス５９、プログラム割り込みコントローラ４８、およびバス６０に結合されている。
【００１３】
ホスト・インターフェース２４は、データ処理システム２０と、マイクロコンピュータ、マイクロプロセッサ、またはＤＭＡコントローラのような他の装置との間の通信のために、双方向インターフェースを提供する。また、ホスト・インターフェース２４は、バス６０を介して外部データ・バス・スイッチ４４に双方向結合され、更にバス５７，５９を介して、グローバル・データ・バス６４、プログラム割り込みコントローラ４８、アドレス発生器／ＤＭＡコントローラ３６、および外部アドレス・バス・スイッチ３８に双方向結合されている。加えて、ホスト・インターフェース２４は、双方向データ転送、アドレス・レジスタの選択、およびホスト・プロセッサからの制御通信のために、５０本の外部ピン即ち端子に双方向結合されている。
【００１４】
改良型直列同期インターフェース（ＥＳＳＩ）２６は、１２本の双方向外部ピンに結合され、例えば、１つ以上の業界標準コデック、ＤＳＰ（デジタル信号プロセッサ）、またはマイクロプロセッサを含む外部直列装置との直列通信を提供する。ＥＳＳＩ２６は、バス５７、バス５９、およびバス６０に結合された端子も有する。
【００１５】
直列通信インターフェース（ＳＣＩ）２８は、２本の双方向外部ピンに結合され、外部装置との直列通信を提供する。ＳＣＩ２８は、バス５７、バス５９、およびバス６０に結合された端子も有する。
【００１６】
図１に示すデータ処理システムの実施例は、プログラムおよび命令キャッシュ３０、Ｘメモリ３３、およびＹメモリ３４という３カ所のメモリ空間を有する。他の実施例では、メモリ空間の数は、これより多くても少なくてもよい。プログラムＲＡＭおよび命令キャッシュ３０は、アドレス・バス５８とデータ・バス６３とに結合されている。Ｘメモリ３２は、アドレス・バス５７、アドレス・バス５９、データ・バス６０、およびデータ・バス６２に結合されている。Ｙメモリ３４は、アドレス・バス５６、アドレス・バス５９、データ・バス６０、およびデータ・バス６１に結合されている。
【００１７】
アドレス発生器／ＤＭＡコントローラ３６は、アドレス・バス５６，５７，５８，５９に結合されている。アドレス発生器／ＤＭＡコントローラ３６は、タイマ２２、ホスト・インターフェース２４、ＥＳＳＩ２６、ＳＣＩ２８、プログラムＲＡＭおよび命令キャッシュ３０、Ｘメモリ３２、Ｙメモリ３４、外部アドレス・バス・スイッチ３８、ならびにＤＲＡＭおよびＳＲＡＭバス・インターフェースおよび命令キャッシュ制御部４２に、メモリ・アドレスを供給する。好適実施例では、ＤＭＡコントローラは、６個のチャネルを有する。
【００１８】
ＤＲＡＭおよびＳＲＡＭバス・インターフェースおよび命令キャッシュ制御部４２は、プログラム・アドレス・バス５８と、１４本の双方向外部ピンとに結合されている。ＤＲＡＭおよびＳＲＡＭバス・インターフェースおよび命令キャッシュ制御部４２の命令キャッシュは、外部メイン・メモリ（図示せず）とプログラム制御部４６との間で、バッファ・メモリとして機能する。命令キャッシュは、頻繁に用いられるプログラム命令を記憶するものである。プログラムによって要求される命令ワードをキャッシュ内で得られるようにしておけば、メモリ位置にアクセスするのに要する時間が不要となるので、結果的に性能の向上を図ることができる。
【００１９】
内部データ・バス・スイッチ４０は、データ・バス６０、データ・バス６１、データ・バス６２、プログラム・データ・バス６３、およびグローバル・データ・バス６４に結合されている。外部データ・バス・スイッチ４４は、データ・バス６０、データバス６１、データ・バス６２、プログラム・データ・バス６３、およびグローバル・データ・バス６４を介して内部データ・バス・スイッチ４０に結合されている。加えて、外部データ・バス・スイッチ４４は、タイマ２２、ホスト・インターフェース２４、ＥＳＳＩ２６、およびＳＣＩ２８に、データ・バス６０を介して結合されている。内部データ・バス・スイッチ４０は、バス間の転送のために用いられる。内部データ・バス・スイッチ４０によって、いずれか２本のバスを共に接続することができる。外部アドレス・バス・スイッチ３８と外部データ・バス・スイッチ４４は、外部バス（図示せず）を、いずれかの内部アドレス・バスおよびいずれかの内部データ・バスにそれぞれ結合する。
【００２０】
プログラム制御部４６では、プログラム割り込みコントローラ３８は割り込み要求間の仲裁を行い、タイマ２２、ホスト・インターフェース２４、ＥＳＳＩ２６、およびＳＣＩ２８に結合されている。また、プログラム割り込みコントローラ４８は、グローバル・データ・バス６４およびプログラム・デコード・コントローラ５０に、双方向結合されている。プログラム・デコード・コントローラ５０は、各２４ビット命令をデコードするものであり、プログラム割り込みコントローラ４８とプログラム・アドレス発生器５２とに双方向結合されている。プログラム・アドレス発生器５２は、プログラム・アドレスの発生、システム・スタック、およびループ制御に必要な全ハードウエアを含む。加えて、プログラム・アドレス発生器５２は、プログラム・アドレス・バス５８とプログラム・データ・バス６３とに結合されている。
【００２１】
データ算術論理演算部（ＡＬＵ）５４は、プログラム・データ・バス６３、データ・バス６１、およびデータ・バス６２に結合されている。データＡＬＵ５４は、データ・オペランド上の算術および論理演算処理の全てを行う。データＡＬＵ５４はレジスタを含み、これらはバス６１，６２を通じて、読み出しおよび書き込みが可能である。データＡＬＵ５４は、バス６３とバス６０とにも結合されている。
【００２２】
クロック発生回路（図示せず）は、図１に示すブロック全てにクロック信号を供給する。図１には示していないが、データ処理システムには検査回路も含まれている。
【００２３】
図２は、図１のデータ処理システム２０のデータ算術論理演算部（ＡＬＵ）５４をブロック図形状で示す。データＡＬＵ５４は、データ処理システム２０のために算術および論理演算処理を行う。データＡＬＵ５４は、レジスタ・ファイル７０、乗算器７６、パイプライン・レジスタ７８，９０，９６、アキュムレータおよび丸め部８０、アキュムレータ・レジスタ部８２、シフタ／リミッタ(shifter/limiter)８６、マルチプレクサ８８、制御回路８９、バレル・シフタおよびビット・フィールド部９２、ならびにアキュムレータ・シフタ９４を含む。レジスタ・ファイル７０は、レジスタ７１〜７４を含む。アキュムレータ・レジスタ部８２は、アキュムレータ・レジスタ８３およびアキュムレータ・レジスタ８４を含む。
【００２４】
レジスタ・ファイル７０は、データ・バス６１，６２に結合され、Ｘメモリ３２、Ｙメモリ３４または外部メモリ位置（図示せず）からデータ・オペランドを受信する。レジスタ７１〜７４の各レジスタは、２４ビット・オペランドを記憶できるリード／ライト・レジスタである。レジスタ７１〜７４はデータ・バス６１，６２とデータＡＬＵ５４との間で入力バッファ・レジスタとして機能する。レジスタ・ファイル７０の出力端子は、マルチプレクサ８８の入力端子と、乗算器７６の入力端子とに結合されている。乗算器７６は実行部の１つであり、変更ブース乗算器(modified Booth's multiplier)、ワラス・ツリー（(Wallace Tree)等のような従来のアレイ乗算器で構成されている。乗算器７６は、分数として表わされるオペランド上で乗算動作を行う。乗算／蓄積動作では、乗算動作の中間結果がパイプライン・レジスタ７８に供給され、この中間結果をアキュムレータおよび丸め部８に供給する前に、パイプライン・レジスタ７８に一時的に記憶される。アキュムレータおよび丸め部８０は、データＡＬＵ５４内の実行部としても機能する。
【００２５】
データＡＬＵ５４は、パイプライン構成となっており、各ＭＡＣ動作は２クロック・サイクルで実行される。最初のクロック・サイクルでは、乗算器７６によって乗算が実行され、中間結果がパイプライン・レジスタ７８に記憶される。２回目のクロック・サイクルでは、アキュムレータの内容が中間結果に加算されるか、あるいは中間結果から減算される。各クロック・サイクル毎に新たな命令を開始することができる。命令の中で丸めが指定されれば、これが実行される。丸めは、収束丸め(convergent rounding)（最も近い偶数に丸める）、または２の補数の丸めのいずれかである。丸めの種類は、プログラム制御部４６のステータス・レジスタ内の丸めビットによって指定される。プログラム制御部４６は図１に示されている。アキュムレータ・レジスタ内の丸められるビットは、ステータス・レジスタ内のスケーリング・モード・ビット(scaling mode bit)によって指定される。パイプライン・レジスタ７８は、乗算器７６の出力端子に結合され、乗算動作からの中間結果を受ける。パイプライン・レジスタ７８の出力端子は、アキュムレータおよび丸め部８０の入力端子に、中間結果を供給する。中間結果は、アキュムレータ・レジスタ８３または８４の一方のオペランドに加算される。パイプライン・レジスタ９６の入力端子は、アキュムレータ・レジスタ部８２の出力端子に結合されており、出力端子はアキュムレータおよび丸め部８０の入力端子に結合され、アキュムレータ・レジスタ８３または８４の一方からのデータを、アキュムレータおよび丸め部８０に転送する。最終結果は、典型的に、同一レジスタ、即ち、アキュムレータ・レジスタ８３または８４に戻され記憶される。しかしながら、最終結果をレジスタ・ファイル７０のレジスタに戻して書き込んでもよい。
【００２６】
アキュムレータ・レジスタ８３，８４は、各々３つの連結レジスタ(concatenated register)で構成されており、合計５６ビットを生成する。アキュムレータ・レジスタ８３では、「A0」と表記された２４ビット汎用リード／ライト・レジスタが、乗算結果の下位２４ビット(LSP)を記憶する。A0は、アキュムレータ・レジスタ８３のビット０〜２３を含む。「A1」と表記された２４ビット・リード／ライト・レジスタは、乗算結果の上位２４ビット(MSP)を記憶する。A1は、アキュムレータ・レジスタ８３のビット２４〜４７を含む。「A2」と表記された８ビット・リード／ライト・レジスタは、符号拡張(EXT)およびオーバーフロー・レジスタである。A2は、アキュムレータ・レジスタ８３のビット４８〜５６を含む。アキュムレータ・レジスタ８４では、「B0」と表記された２４ビット汎用リード／ライト・レジスタが２４ビットのLSPを記憶する。B0はアキュムレータ・レジスタ８４のビット０〜２３を含む。「B1」と表記された２４ビット・リード／ライト・レジスタは、２４ビットのMSPを記憶する。B1はアキュムレータ・レジスタ８４のビット２３〜４７を含む。「B2」と表記された８ビット・リード／ライト・レジスタは、符号拡張およびオーバーフロー・レジスタとして機能する。B2はアキュムレータ・レジスタ８４のビット４８ないし５６を含む。アキュムレータ・レジスタ部８２およびレジスタ・ファイル７０は、データ処理システム２０のためのプログラミング・モデルの中にある。
【００２７】
アキュムレータ・レジスタ部８２の出力端子は、シフタ／リミッタ８６の入力端子に結合され、アキュムレータ・レジスタ部８２からの５６ビットのデータをシフタ／リミッタ８６に転送する。シフタ／リミッタ８６は、従来の非同期並列シフタ／リミッタ２つで構成されている。一方のシフタ／リミッタはデータ・バス６１に結合され、他方のシフタ／リミッタはデータ・バス６２に結合されている。リミッタはオーバーフローによるエラーを最少に抑えるために用いられる。制限が行われるのは、拡張レジスタA2，B2が使用中で、アキュムレータ・レジスタ８３または８４の内容を、データ・バス６１またはデータ・バス６２を通じて伝送しようとする場合である。リミッタは、制限されたデータ値を最大値(maximum magnitude)と交換する。拡張レジスタA2，B2が用いられていないとき、リミッタは動作不能状態にある。２つのデータ・リミッタを組み合わせて、ロング・ワード・オペランド(long-word operand)のための単一４８ビット・データ・リミッタを形成することもできる。シフタ／リミッタ８６内のデータ・シフタは、データを１ビット左へ（スケール・アップ）、または１ビット右へ（スケール・ダウン）シフトすることができ、更にシフトせずにデータを通過させることもできる（スケーリングせず）。シフタは、プログラム・コードを変更することなく、固定小数点データの動的スケーリングを可能にする。例えば、これによって、高速フーリエ変換のようなブロック浮動小数点アルゴリズム(block floating-point algorithm)を、データ処理システム２０内に実装可能となる。
【００２８】
アキュムレータ・シフタ９４の入力端子はアキュムレータ・レジスタ部８２の出力端子に結合され、出力端子はアキュムレータおよび丸め部８０に結合されている。アキュムレータ・シフタ９４は、非同期並列シフタであり、アキュムレータ・レジスタ部８２の情報をシフトするためのものである。また、アキュムレータ・シフタ９４は、シフトされた情報を、アキュムレータおよび丸め部８０に戻す。制御回路８９は、アキュムレータ・シフタ９４、シフタ／リミッタ８６、ならびにバレル・シフタおよびビット・フィールド部９２に結合されている。制御回路８９は、バス６３を介してプログラム制御部４６から受信した命令に応答して、データＡＬＵ５４のための制御機能を実行する。例えば、制御回路８９は、データＡＬＵ５４が１６ビット精度モードにあるときに実行されるＭＡＣ命令に必要なシフト動作を決定する。
【００２９】
マルチプレクサ８８は、その入力端子がバス６３およびレジスタ・ファイル７０に結合されている。マルチプレクサ８８の出力端子は、パイプライン・レジスタ９０の入力端子に結合されている。パイプライン・レジスタ９０の出力端子は、バレル・シフタおよびビット・フィールド部９２に結合されている。バレル・シフタおよびビット・フィールド部９２は、アキュムレータ・レジスタ部８２の入力端子に結合されている。バレル・シフタおよびビット・フィールド部９２は、５６ビット並列双方向シフタを含み、マルチビット左シフト、マルチビット右シフト、１ビット回転（左または右）、ビット・フィールド併合(bit field merge)、挿入および抽出、カウント・リーディング・ビット(count leading bits)の正規化、ならびにＡＮＤ、ＯＲ、排他的ＯＲ、およびＮＯＴのような論理演算処理を実行する。バレル・シフタおよびビット・フィールド部９２は、これらの処理全てを、２４ビットおよび１６ビット精度動作モードで実行することができる。１６ビット精度モードでは、ビット・フィールド処理が、１６ビット・データのための適切なビット位置において実行される。
【００３０】
データＡＬＵ５４は、２４ビットおよび１６ビット精度算術演算のための完全な解決策を与える。１つの命令セット全体が、２４ビットモードでも、１６ビット精度モードでも実行することができ、多倍精度算術演算も含む。双方のモードで、同一命令およびハードウエアが用いられる。これらのモード間の移行は、ステータス・レジスタ内の１ビットを変更することによって行われる。１６ビット精度動作モードでは、２４ビット・モードで実行できるデータＡＬＵ５４のほぼ全動作の実行が可能である。例えば、１６ビット精度モードでは、データＡＬＵ５４は、丸め、倍精度乗算、移動およびシフトを実行する。加えて、全てのビット・フィールド処理が、１６ビット精度モードで実行可能である。
【００３１】
１６ビット精度モードの間に移動を実行すると、データは、２４ビットまたは４８ビットとして、バス６１，６２，６３を通じて読み書きされる。１６ビットの移動は生じない。バス６１およびバス６２からアキュムレータ・レジスタ部８２の１つにデータを移動する場合、バス６１からの下位１６ビットがアキュムレータ・レジスタ部８２の選択されたアキュムレータ・レジスタのビット３２〜４７に配置され、当該アキュムレータ・レジスタのビット２４〜４１には０がロードされる。バス６２からの下位１６ビットがビット８〜２３に配置され、０がビット０〜７にロードされる。ビット４８〜５６には符号拡張がロードされる。
【００３２】
バス６１またはバス６２からレジスタ７１〜７４の１つにデータを移動する場合、バス上の下位１６ビットを、目的レジスタの上位１６ビットにロードする。当該レジスタの下位８ビットには０をロードする。バス６１またはバス６２から、レジスタ７１〜７４の内２つのレジスタを連結することによって形成されるレジスタのような、４８ビット・レジスタにデータを移動する場合、バス６２の下位１６ビットがレジスタ７２または７４の上位１６ビットにロードされ、バス６１の下位１６ビットがレジスタ７１または７３の上位１６ビットにロードされる。
【００３３】
乗算器７６、アキュムレータおよび丸め部８０、ならびにバレル・シフタおよびビット・フィールド部９２のような実行部に入力されるデータでは、まずデータの整列を行い、実行部の中で所定の位置に合わせて配列し、１６ビット精度モードがデータ処理システム２０のユーザにわかるようにする(transparent)。１６ビット算術演算処理を実行する場合、分数算術演算を用いれば整列が容易となる。種々の多重化およびシフト回路を用いて、１７ビット精度モードのに必要な整列を行う。算術演算処理の丸めは、２４ビット・モードではA0/B0で行われるが、１６ビット精度モードでは、代わりにアキュムレータ部分A1/B1のビット１５上で行われる。したがって、データＡＬＵ５４のシフト／制限動作やスケーリングは、この影響を受ける。データＡＬＵ５４を用いて１６ビット精度ＭＡＣ命令を実行するために必要なステップを、一例として図３に示す。
【００３４】
図２および図３の双方を参照する。１６ビット第１オペランドを、レジスタ・ファイル７０の内のレジスタの１つ、例えば、「X0」と表記されたレジスタ７１に供給する。第１オペランドは、Ｘメモリ３２またはＹメモリ３４（図１）から供給することができる。１６ビット第２オペランドを、レジスタ・ファイル７０の内の他のレジスタ、例えば、「Y0」と表記されたレジスタ７３に供給する。第１および第２オペランドは、２４ビット・レジスタ７１，７３の上位１６ビットに記憶される。レジスタ７１，７３の下位８ビットはニゲートされる。即ち、図示の実施例では、論理０が書き込まれる。１６ビット第１オペランドおよび１６ビット第２オペランドを乗算器７６において乗算し、３２ビットの積を得る。この３２ビットの積は、中間結果レジスタの上位３２ビットに記憶される。データＡＬＵ５４では、パイプライン・レジスタ７８が中間結果レジスタとして機能する。３２ビットの積は、アキュムレータ・レジスタ８３または８４の一方に記憶されている第３オペランドに加算される。加算の前に、アキュムレータ・シフタ９４において第３オペランドをシフトし、３２ビットの積のフォーマットと整列即ち一致させ、アキュムレータおよび丸め部８０に供給する。加算の結果は同一アキュムレータ・レジスタ８３または８４に戻され書き込まれる。
【００３５】
ＦＩＲフィルタを実施するためのアルゴリズムにおけるように、データＡＬＵがＭＡＣ命令を実行しているとき、乗算命令の結果は、蓄積命令のオペランドとして用いられる。ＭＡＣ命令は、所定回繰り返し実行される。従来技術では、ＭＡＣ命令の各繰り返し実行のために、最終結果はアキュムレータ・レジスタ部８２に戻されて書き込まれるか、あるいはレジスタ・ファイル７０の中のレジスタの１つに書き込まれる。各繰り返しの後、蓄積動作の結果は、同一アキュムレータ・レジスタに戻され書き込まれる。アキュムレータとアキュムレータ・レジスタとの間のバスは比較的長く、比較的大きな容量性負荷がかかっている場合がある。したがって、各繰り返し動作の後にアキュムレータ・レジスタに戻して書き込むと、大量の電力を消費することになり得る。
【００３６】
データＡＬＵ５４における電力消費を低減するために、アキュムレータ・レジスタ部８２の同一アキュムレータ・レジスタへの不要な書き戻しを行わないようにする。制御回路８９は、データＡＬＵ５４に供給される一連の命令を監視し、連続する命令が同一結果に対して同一目的地を有する場合を全て検出する。同一レジスタが連続する命令の目的地となっている場合はいつでも、結果はパイプライン・レジスタ７８にのみ書き込まれ、連続する命令の中で指定されている目的レジスタには書き込まない。このようにして、長く負荷が大きいアキュムレータ・レジスタへのバスの代わりに、短くしかも負荷が軽いパイプライン・レジスタ７８へのバスを駆動することにより、大幅な電力消費低減を達成する。
【００３７】
図４は、図１のプログラム制御部４６のステータス・レジスタ９５をブロック図形状で示す。ステータス・レジスタ９５は、従来のリード／ライト２４ビット・レジスタである。「SA」と表記されたステータス・ビット９７は、データＡＬＵ５４が２４ビット算術演算と１６ビット精度算術演算のどちらを実行するかを制御する。制御ビット９７がアサートされると、１６ビット精度動作モードに入る。データ処理システム２０のリセットの間に、ステータス・ビット９７はクリアされる。
【００３８】
以上、本発明を好適実施例との関連において説明してきたが、本発明は様々な方法で変更可能であり、先に具体的に開示し説明した実施例以外にも多くの実施例が想定可能であることは、当業者には明白であろう。例えば、図示の実施例では、１６ビット精度モードおよび２４ビット・モードは同一ハードウエアで実行されるものとして開示された。他の実施例では、オペランド内のビット数が異なるものもあり、同一ハードウエアで対応可能なモードの数が異なる場合もある。また、図示の実施例では、特定のレジスタが特定数のビットおよび特定のビット構成を有していた。他の実施例では、異なるサイズのレジスタ、異なる数のレジスタ、または異なる数のレジスタ・ビット・フィールドを用いる場合もある。したがって、本発明の真の精神および範囲に該当する本発明の変更物は全て、特許請求の範囲に含まれることを意図するものである。
【図面の簡単な説明】
【図１】本発明によるデータ処理システムを示すブロック図。
【図２】図１のデータ処理システムのデータ算術論理演算部を示すブロック図。
【図３】本発明の実施例による、種々のレジスタにおける１６ビット乗算／蓄積オペランドおよびデータ整列を示す図。
【図４】図１のプログラム制御部のステータス・レジスタを示すブロック図。
【符号の説明】
２０  データ処理システム
２２  タイマ
２４  ホスト・インターフェース
２６  改良直列同期インターフェース
２８  直列非同期インターフェース
３０  プログラムＲＡＭおよび命令キャッシュ
３２，３４  データ・メモリ
３６  アドレス発生器／直接メモリ・アクセス・コントローラ
３８  外部アドレス・バス・スイッチ
４０  内部データ・バス・スイッチ
４２  ＤＲＡＭおよびＳＲＡＭバス・インターフェース／命令キャッシュ制御部
４４  外部データ・バス・スイッチ
４６  プログラム制御部
４８  プログラム割り込みコントローラ
５０  プログラム・デコード・コントローラ
５２  ログラム・アドレス発生器
５４  データ算術演算部
５６，５７  アドレス・バス
５８  プログラム・アドレス・バス
５９  アドレス・バス
６１，６２  データ・バス
６３，６４  プログラム・データ・バス
７０  レジスタ・ファイル
７６  乗算器
７８，９０，９６  パイプライン・レジスタ
８０  アキュムレータおよび丸め部
８２  アキュムレータ・レジスタ部
８６  シフタ／リミッタ
８８  マルチプレクサ
８９  制御回路
９２  バレル・シフタおよびビット・フィールド部
９４  アキュムレータ・シフタ
【図１】
0003759647.tif 000002
【図２】
0003759647.tif 000003
【図３】
0003759647.tif 000004
【図４】
0003759647.tif 000005