(57)【特許請求の範囲】
【請求項１】
Ｎビットデータ処理レジスタの専用レジスタ・バンクと、
Ｎビットデータ処理レジスタの一般レジスタ・バンクと、
前記専用レジスタ・バンクおよび一般レジスタ・バンクに接続され、前記専用および一般レジスタ・バンクの１つを選択し、そしてその選択されたレジスタ・バンクからの、Ｎビットのデータとともに２Ｎビットの追加オペランドを形成する、選択されたＮビットの結果を出力するためのセレクタと、
第１オペランドおよび第２オペランドに関する乗算の演算を実行し、そして２Ｎビットの乗算結果を出力するための乗算器と、
前記乗算器、セレクタおよび一般レジスタ・バンクに接続され、前記２Ｎビットの乗算結果および前記２Ｎビットの追加オペランドに関するアキュムレート演算を実行し、そして２Ｎビットのアキュムレート結果を出力するためのアキュムレータと
を備えることを特徴とするデータ処理装置。
【請求項２】
前記Ｎビットのデータは前記一般レジスタ・バンクで保持されることを特徴とする請求項１記載のデータ処理装置。
【請求項３】
前記セレクタは、クラス信号をさらに受信し、そのクラス信号に応じて、前記専用および一般レジスタ・バンクの１つを選択することを特徴とする請求項１記載のデータ処理装置。
【請求項４】
前記クラス信号はクラス１の命令またはクラス２の命令を示すために使用され、前記クラス１の命令はＮ＊Ｎ＋２Ｎ→２Ｎの第１の計算を実行するためのものであり、前記クラス２の命令はＮ＊Ｎ＋Ｎ→Ｎの第２の計算を実行するためのものであることを特徴とする請求項３記載のデータ処理装置。
【請求項５】
前記アキュムレータに接続され、前記２Ｎビットのアキュムレート結果を受信し、そしてオーバーフローの場合が起きたかを確認するための検出装置をさらに備えることを特徴とする請求項４記載のデータ処理装置。
【請求項６】
前記セレクタからの出力されたＮビットの結果および前記一般レジスタ・バンクで保持されたＮビットのデータは、前記２Ｎビットの追加オペランドの第１のＮビットの部分および第２のＮビットの部分と結合して形成され、
前記アキュムレート結果は第３のＮビットの部分および第４のＮビットの部分を含み、
前記クラス信号が前記クラス２の命令であるとき、前記検出装置は、前記２Ｎビットの追加オペランドの第１のＮビットの部分と前記アキュムレート結果の第３のＮビットの部分とを比較して、オーバーフローの場合が起きたかを決定する
ことを特徴とする請求項５記載のデータ処理装置。
【請求項７】
前記アキュムレータに接続され、前記２Ｎビットのアキュムレート結果を受信し、そしてオーバーフローの場合が起きたかを確認するための検出装置をさらに備えることを特徴とする請求項１記載のデータ処理装置。
【請求項８】
前記セレクタからの出力されたＮビットの結果および前記Ｎビットのデータは、前記２Ｎビットの追加オペランドの第１のＮビットの部分および第２のＮビットの部分と結合して形成され、
前記アキュムレート結果は第３のＮビットの部分および第４のＮビットの部分を含み、
前記クラス信号が前記クラス２の命令であるとき、前記検出装置は、前記２Ｎビットの追加オペランドの第１のＮビットの部分と前記アキュムレート結果の第３のＮビットの部分とを比較して、オーバーフローの場合が起きたかを決定する
ことを特徴とする請求項７記載のデータ処理装置。
【請求項９】
Ｎビットデータ処理レジスタの専用レジスタ・バンク、Ｎビットデータ処理レジスタの一般レジスタ・バンク、セレクタ、乗算器およびアキュムレータを持つ装置を使用するデータ処理方法であって、
前記専用および一般レジスタ・バンクの１つを選択し、そしてその選択されたレジスタ・バンクからの、Ｎビットのデータとともに２Ｎビットの追加オペランドを形成する、Ｎビットの結果を出力し、
第１オペランドおよび第２オペランドに関する乗算の演算を実行し、そして２Ｎビットの乗算結果を出力し、
前記２Ｎビットの乗算結果および前記２Ｎビットの追加オペランドに関するアキュムレート演算を実行し、そして２Ｎビットのアキュムレート結果を出力する
ことを特徴とするデータ処理方法。
【請求項１０】
前記Ｎビットのデータは前記一般レジスタ・バンクで保持されることを特徴とする請求項９記載のデータ処理方法。
【請求項１１】
前記専用および一般レジスタ・バンクの１つを選択し、そしてその選択されたレジスタ・バンクからのＮビットの結果を出力するステップは、前記セレクタで受信されたクラス信号によって決定されるクラス信号を受信するステップをさらに含むことを特徴とする請求項１０記載のデータ処理方法。
【請求項１２】
前記クラス信号はクラス１の命令またはクラス２の命令を示すために使用され、前記クラス１の命令はＮ＊Ｎ＋２Ｎ→２Ｎの第１の計算を実行するためのものであり、前記クラス２の命令はＮ＊Ｎ＋Ｎ→Ｎの第２の計算を実行するためのものであることを特徴とする請求項１１記載のデータ処理方法。
【請求項１３】
前記２Ｎビットのアキュムレート結果を受信し、そしてオーバーフローの場合が起きたかを確認するステップをさらに含むことを特徴とする請求項１２記載のデータ処理方法。
【請求項１４】
前記セレクタからの出力されたＮビットの結果および前記一般レジスタ・バンクで保持されたＮビットのデータは、前記２Ｎビットの追加オペランドの第１のＮビットの部分および第２のＮビットの部分と結合して形成され、
前記アキュムレート結果は第３のＮビットの部分および第４のＮビットの部分を含み、
前記クラス信号が前記クラス２の命令であるとき、前記２Ｎビットの追加オペランドの第１のＮビットの部分と前記アキュムレート結果の第３のＮビットの部分とを比較して、オーバーフローの場合が起きたかを決定する
ことを特徴とする請求項１３記載のデータ処理方法。
【請求項１５】
前記２Ｎビットのアキュムレート結果を受信し、そしてオーバーフローの場合が起きたかを確認するステップをさらに含むことを特徴とする請求項９記載のデータ処理方法。
【請求項１６】
前記セレクタからの出力されたＮビットの結果および前記Ｎビットのデータは、前記２Ｎビットの追加オペランドの第１のＮビットの部分および第２のＮビットの部分と結合して形成され、
前記アキュムレート結果は第３のＮビットの部分および第４のＮビットの部分を含み、
前記クラス信号が前記クラス２の命令であるとき、前記２Ｎビットの追加オペランドの第１のＮビットの部分と前記アキュムレート結果の第３のＮビットの部分とを比較して、オーバーフローの場合が起きたかを決定する
ことを特徴とする請求項１５記載のデータ処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データ処理システムの装置および方法に関連し、特に、乗算アキュムレート命令(multiply-accumulate instructions)を使用し、オーバーフローの場合を容易に検出することができ、簡単な計算で実行時間を節約することができるデータ処理装置およびその方法に関するものである。
【０００２】
【従来の技術】
データ処理の分野において、各種データ・レジスタに格納されたオペランドに関するある演算（オペレーション）を実行することができる必要がある。そのような演算の１つは、１つのＮビットのオペランドに第２のＮビットのオペランドを乗算して、その結果に第３のＮビットのオペランドを加算することである。別の同様の演算は、１つのＮビットのオペランドに第２のＮビットのオペランドを乗算して、その結果に２Ｎビットを加算することである。
【０００３】
図２は、米国特許第５，５８３，８０４号の“DATA PROCESSING USING MULTIPLY-ACCUMULATE INSTRUCTIONS”におけるデータ処理システム用の従来の乗算アキュムレータ・ユニットを示すブロック図である。このシステムは、Ｎ＊Ｎ＋２Ｎ→２Ｎの形で、クラス１の乗算アキュムレート命令を実行することができ、そしてＮ＊Ｎ＋Ｎ→Ｎの形で、クラス２の乗算アキュムレート命令を実行することができる。
【０００４】
上記乗算アキュムレータ・ユニットは、第１のデータ・レジスタ１０、第２のデータ・レジスタ２０、Ｎ＊Ｎの乗算器３０、Ｎ＋Ｎのアキュムレータ４０、そして２Ｎ＋２Ｎのアキュムレータ５０を備えている。乗算器３０は、Ｎ＊Ｎを計算してＮまたは２Ｎの結果を得るものである。Ｎ＋Ｎのアキュムレータ４０は、Ｎ＋Ｎを計算してＮの結果を得るものである。２Ｎ＋２Ｎのアキュムレータ５０は、２Ｎ＋２Ｎを計算して２Ｎの結果を得るものである。
【０００５】
【発明が解決しようとする課題】
しかしながら、Ｎ＊Ｎ＋Ｎ→Ｎのクラス命令に関する演算を実行する際、最終のＮの結果がＮビットのサイズの結果で表され得るものよりも大きくなることがある。この状態が起きるとき、オーバーフローの状態がその演算で発生したことをユーザに知らせることは重要である。図２の乗算アキュムレータ・ユニットの欠点は、そのユニットがそのオーバーフローの状態を示す能力を持たないことである。この臨界情報を可能な限り効果的な方法でユーザに与えることは、本発明が開発された１つの理由である。
【０００６】
本発明の目的は、単一のアキュムレータを備え、オーバーフロー状態を検出することができ、乗算アキュムレート命令を実行することができるデータ処理装置およびその方法を提供することである。これにより、システム構成が簡単化されると同時に有用なオーバーフロー情報が与えられる。データ処理装置およびその方法は、オーバーフローの場合を簡単に検出することができ、そして簡単な計算で実行時間を節約することができる。
【０００７】
【課題を解決するための手段】
請求項１記載の発明のデータ処理装置は、Ｎビットデータ処理レジスタの専用レジスタ・バンクと、Ｎビットデータ処理レジスタの一般レジスタ・バンクと、前記専用レジスタ・バンクおよび一般レジスタ・バンクに接続され、前記専用および一般レジスタ・バンクの１つを選択し、そしてその選択されたレジスタ・バンクからの、Ｎビットのデータとともに２Ｎビットの追加オペランドを形成する、選択されたＮビットの結果を出力するためのセレクタと、第１オペランドおよび第２オペランドに関する乗算の演算を実行し、そして２Ｎビットの乗算結果を出力するための乗算器と、前記乗算器、セレクタおよび一般レジスタ・バンクに接続され、前記２Ｎビットの乗算結果および前記２Ｎビットの追加オペランドに関するアキュムレート演算を実行し、そして２Ｎビットのアキュムレート結果を出力するためのアキュムレータとを備えることを特徴とする。
【０００８】
請求項２記載の発明は、請求項１記載のデータ処理装置において、前記Ｎビットのデータは前記一般レジスタ・バンクで保持されることを特徴とする。
【０００９】
請求項３記載の発明は、請求項１記載のデータ処理装置において、前記セレクタは、クラス信号をさらに受信し、そのクラス信号に応じて、前記専用および一般レジスタ・バンクの１つを選択することを特徴とする。
【００１０】
請求項４記載の発明は、請求項３記載のデータ処理装置において、前記クラス信号はクラス１の命令またはクラス２の命令を示すために使用され、前記クラス１の命令はＮ＊Ｎ＋２Ｎ→２Ｎの第１の計算を実行するためのものであり、前記クラス２の命令はＮ＊Ｎ＋Ｎ→Ｎの第２の計算を実行するためのものであることを特徴とする。
【００１１】
請求項５記載の発明は、請求項４記載のデータ処理装置において、前記アキュムレータに接続され、前記２Ｎビットのアキュムレート結果を受信し、そしてオーバーフローの場合が起きたかを確認するための検出装置をさらに備えることを特徴とする。
【００１２】
請求項６記載の発明は、請求項５記載のデータ処理装置において、前記セレクタからの出力されたＮビットの結果および前記一般レジスタ・バンクで保持されたＮビットのデータは、前記２Ｎビットの追加オペランドの第１のＮビットの部分および第２のＮビットの部分と結合して形成され、前記アキュムレート結果は第３のＮビットの部分および第４のＮビットの部分を含み、前記クラス信号が前記クラス２の命令であるとき、前記検出装置は、前記２Ｎビットの追加オペランドの第１のＮビットの部分と前記アキュムレート結果の第３のＮビットの部分とを比較して、オーバーフローの場合が起きたかを決定することを特徴とする。
【００１３】
請求項７記載の発明は、請求項１記載のデータ処理装置において、前記アキュムレータに接続され、前記２Ｎビットのアキュムレート結果を受信し、そしてオーバーフローの場合が起きたかを確認するための検出装置をさらに備えることを特徴とする。
【００１４】
請求項８記載の発明は、請求項７記載のデータ処理装置において、前記セレクタからの出力されたＮビットの結果および前記Ｎビットのデータは、前記２Ｎビットの追加オペランドの第１のＮビットの部分および第２のＮビットの部分と結合して形成され、前記アキュムレート結果は第３のＮビットの部分および第４のＮビットの部分を含み、前記クラス信号が前記クラス２の命令であるとき、前記検出装置は、前記２Ｎビットの追加オペランドの第１のＮビットの部分と前記アキュムレート結果の第３のＮビットの部分とを比較して、オーバーフローの場合が起きたかを決定することを特徴とする。
【００１５】
請求項９記載の発明は、Ｎビットデータ処理レジスタの専用レジスタ・バンク、Ｎビットデータ処理レジスタの一般レジスタ・バンク、セレクタ、乗算器およびアキュムレータを持つ装置を使用するデータ処理方法であって、前記専用および一般レジスタ・バンクの１つを選択し、そしてその選択されたレジスタ・バンクからの、Ｎビットのデータとともに２Ｎビットの追加オペランドを形成する、Ｎビットの結果を出力し、第１オペランドおよび第２オペランドに関する乗算の演算を実行し、そして２Ｎビットの乗算結果を出力し、前記２Ｎビットの乗算結果および前記２Ｎビットの追加オペランドに関するアキュムレート演算を実行し、そして２Ｎビットのアキュムレート結果を出力することを特徴とする。
【００１６】
請求項１０記載の発明は、請求項９記載のデータ処理方法において、前記Ｎビットのデータは前記一般レジスタ・バンクで保持されることを特徴とする。
【００１７】
請求項１１記載の発明は、請求項１０記載のデータ処理方法において、前記専用および一般レジスタ・バンクの１つを選択し、そしてその選択されたレジスタ・バンクからのＮビットの結果を出力するステップは、前記セレクタで受信されたクラス信号によって決定されるクラス信号を受信するステップをさらに含むことを特徴とする。
【００１８】
請求項１２記載の発明は、請求項１１記載のデータ処理方法において、前記クラス信号はクラス１の命令またはクラス２の命令を示すために使用され、前記クラス１の命令はＮ＊Ｎ＋２Ｎ→２Ｎの第１の計算を実行するためのものであり、前記クラス２の命令はＮ＊Ｎ＋Ｎ→Ｎの第２の計算を実行するためのものであることを特徴とする。
【００１９】
請求項１３記載の発明は、請求項１２記載のデータ処理方法において、前記２Ｎビットのアキュムレート結果を受信し、そしてオーバーフローの場合が起きたかを確認するステップをさらに含むことを特徴とする。
【００２０】
請求項１４記載の発明は、請求項１３記載のデータ処理方法において、前記セレクタからの出力されたＮビットの結果および前記一般レジスタ・バンクで保持されたＮビットのデータは、前記２Ｎビットの追加オペランドの第１のＮビットの部分および第２のＮビットの部分と結合して形成され、前記アキュムレート結果は第３のＮビットの部分および第４のＮビットの部分を含み、前記クラス信号が前記クラス２の命令であるとき、前記２Ｎビットの追加オペランドの第１のＮビットの部分と前記アキュムレート結果の第３のＮビットの部分とを比較して、オーバーフローの場合が起きたかを決定することを特徴とする。
【００２１】
請求項１５記載の発明は、請求項９記載のデータ処理方法において、前記２Ｎビットのアキュムレート結果を受信し、そしてオーバーフローの場合が起きたかを確認するステップをさらに含むことを特徴とする。
【００２２】
請求項１６記載の発明は、請求項１５記載のデータ処理方法において、前記セレクタからの出力されたＮビットの結果および前記Ｎビットのデータは、前記２Ｎビットの追加オペランドの第１のＮビットの部分および第２のＮビットの部分と結合して形成され、前記アキュムレート結果は第３のＮビットの部分および第４のＮビットの部分を含み、前記クラス信号が前記クラス２の命令であるとき、前記２Ｎビットの追加オペランドの第１のＮビットの部分と前記アキュムレート結果の第３のＮビットの部分とを比較して、オーバーフローの場合が起きたかを決定することを特徴とする。
【００２３】
ここで、上記および他の効果を得るため、そして本発明の目的を達成するため、本発明は、Ｎビットデータ処理レジスタの第１レジスタ・バンク、Ｎビットデータ処理レジスタの第２レジスタ・バンク、セレクタ、乗算器およびアキュムレータを備えるデータ処理装置を提供する。セレクタは、第１レジスタ・バンクおよび第２レジスタ・バンクに接続され、第１および第２レジスタ・バンクの１つを選択し、そしてその選択されたレジスタ・バンクからのＮビットの結果を出力するために使用される。出力されたＮビットの結果、および第２レジスタ・バンクで保持されたＮビットのデータは、２Ｎビットの追加オペランドを形成する。乗算器は、第１オペランドおよび第２オペランドに関する乗算の演算を実行し、そして２Ｎビットの乗算結果を出力するために使用される。アキュムレータは、乗算器、セレクタおよび第２レジスタ・バンクに接続され、２Ｎビットの乗算結果および２Ｎビットの追加オペランドに関するアキュムレート演算を実行し、そして２Ｎビットのアキュムレート結果を出力するために使用される。
【００２４】
上記データ処理装置において、セレクタは、さらにクラス信号を受信するために使用され、そのクラス信号に応じて、第１および第２レジスタ・バンクの１つを選択する。
【００２５】
上述のデータ処理装置のクラス信号は、クラス１の命令またはクラス２の命令を示すために使用される。
【００２６】
上記データ処理装置は、アキュムレータに接続され、２Ｎビットのアキュムレート結果を受信し、そしてオーバーフローの場合が起きたかを確認するための検出装置をさらに備えている。
【００２７】
上記データ処理装置において、セレクタからの出力されたＮビットのデータおよび第２レジスタ・バンクで保持されるＮビットのデータは、２Ｎビットの追加オペランドの第１のＮビット部分および第２のＮビット部分と結合して形成され、アキュムレート結果は、第３のＮビットの部分および第４のＮビットの部分を含み、クラス信号がクラス２の命令であるとき、検出装置は、２Ｎビットの追加オペランドの第１のＮビットの部分とアキュムレート結果の第３のＮビットの部分とを比較して、オーバーフローの場合が起きたかを決定する。
【００２８】
上記および他の効果を得るため、そして本発明の目的を達成するため、本発明は、Ｎビットデータ処理レジスタの第１レジスタ・バンク、Ｎビットデータ処理レジスタの第２レジスタ・バンク、セレクタ、乗算器およびアキュムレータを持つ装置を使用するデータ処理方法を提供し、この方法は、第１および第２レジスタ・バンクの１つを選択し、そして選択されたレジスタ・バンクからのＮビットの結果を出力し（出力したＮビットの結果および第２レジスタ・バンクで保持されたＮビットのデータは、２Ｎビットの追加オペランドを形成する）、第１オペランドおよび第２オペランドに関する乗算の演算を実行し、そして２Ｎビットの乗算結果を出力し、２Ｎビットの乗算結果および２Ｎビットの追加オペランドに関するアキュムレート演算を実行し、そして２Ｎビットのアキュムレート結果を出力する。
【００２９】
上述のデータ処理方法において、第１および第２レジスタ・バンクの１つを選択し、そして選択されたレジスタ・バンクからのＮビットの結果を出力するステップは、セレクタで受信されたクラス信号によって決定されるクラス信号を受信するステップをさらに含む。
【００３０】
そのクラス信号は、クラス１の命令またはクラス２の命令を示すために使用される。
【００３１】
上述のデータ処理方法は、２Ｎビットのアキュムレート結果を受信し、そしてオーバーフローの場合が起きたかを確認するステップをさらに含む。
【００３２】
上述のデータ処理方法において、セレクタからの出力されたＮビットのデータおよび第２レジスタ・バンクで保持されたＮビットのデータは、２Ｎビットの追加オペランドの第１のＮビットの部分および第２のＮビットの部分と結合して形成され、アキュムレート結果は第３のＮビットの部分および第４のＮビットの部分を含み、クラス信号がクラス２の命令であるとき、２Ｎビットの追加オペランドの第１のＮビットの部分とアキュムレート結果の第３のＮビットの部分とを比較して、オーバーフローの場合が起きたかを決定する。
【００３３】
【発明の実施の形態】
図１は本発明の一実施形態に係るデータ処理装置用の乗算アキュムレータ・ユニットを示すブロック図である。この図１に示す乗算アキュムレータ・ユニット２００は、セレクタ１６０、乗算器１３０およびアキュムレータ１５０を含む。データは、専用レジスタ・バンク１１０および一般レジスタ・バンク１２０から供給される。乗算器１３０はアキュムレータ１５０に接続されている。専用レジスタ・バンク１１０および一般レジスタ・バンク１２０は、セレクタ１６０に接続されている。セレクタ１６０はアキュムレータ１５０に接続されている。また、一般レジスタ・バンク１２０はアキュムレータ１５０に直接接続されている。乗算アキュムレータ・ユニット２００は、アキュムレータ１５０に接続された検出装置１７０をさらに含んでいる。
【００３４】
乗算器１３０は、２つのＮビットのオペランドを乗算して、２Ｎビットの乗算結果１３４を得るためのものである。例えば、Ｎ＊Ｎで２Ｎの結果が得られる。図１に示すように、Ｅで示された第１のＮビットのオペランドおよびＦで示された第２のＮビットのオペランドは、乗算器１３０に入力される。２Ｎビットの乗算結果１３４は乗算器１３０によって生成される。乗算器１３０からの乗算結果１３４は、２Ｎビットのアキュムレータ１５０に送られて追加オペランドによって加算される。また、追加オペランドは、第１のＮビットの部分および第２のＮビットの部分を含む２Ｎビットである。本実施形態では、わずか１つのアキュムレータがより望ましい計算をするのに使用される。例えば、既述の従来例では、Ｎ＊Ｎ＋Ｎ→ＮおよびＮ＊Ｎ＋２Ｎ→２Ｎのような２つの計算が望まれるとすると、それら所望の計算をするために少なくとも２つのアキュムレータが必要である。本実施形態の構成では、その２つの計算にはアキュムレータが１つだけ必要である。図１に示されている回路はその特徴を備えている。
【００３５】
本実施形態では、クラス信号１００は、２つの異なるクラス命令の１つを示すためにセレクタ１６０に供給される。クラス信号１００はどのクラス命令が演算されるべきであるかを示す。例えば、Ｎ＊Ｎ＋２Ｎ→２Ｎのようなクラス１の命令またはＮ＊Ｎ＋Ｎ→Ｎのようなクラス２の命令を示す。クラス信号は、乗算アキュムレータ・ユニット２００に供給される命令を復号することによってセットされる。クラス１の命令はより多くの実行時間を必要とし、より高精度な結果が生成される。クラス２の命令は、クラス１の命令よりも少ない実行時間で済む。
【００３６】
命令のクラスがクラス１のとき、すなわち所望の計算がＮ＊Ｎ＋２Ｎ→２Ｎであるなら、クラス信号１００は、セレクタ１６０に、一般レジスタ・バンク１２０からのデータをアキュムレータ１５０に供給させる。つまり、２Ｎビットの追加信号１５２は（Ｎ，Ｎ）を含む。追加信号１５２の第１のＮビットの部分はＣによって、追加信号１５２の第２のＮビットの部分はＤによって示してある。第１のＮビットの部分Ｃは一般レジスタ・バンク１２０によって供給される。また、第２のＮビットの部分Ｄは、図１に示すように、一般レジスタ・バンク１２０から供給される。
【００３７】
命令のクラスがクラス２のとき、すなわちＮ＊Ｎ＋Ｎ→Ｎ、クラス信号１００は、セレクタ１６０に、専用レジスタ・バンク１１０からのデータをアキュムレータ１５０に供給させる。つまり、専用レジスタ・バンク１１０は追加オペランド１５２の第１のＮビットの部分Ｃを供給する。専用レジスタ・バンク１１０はユーザによりソフトウエア制御下でアクセス可能である。第２のＮビットの部分Ｄは一般レジスタ・バンク１２０から供給される。Ｎ＊Ｎ＋Ｎ→Ｎの計算が加算されるべきＮビットのデータおよび生成されるべきＮビットのアキュムレート結果を必要とするとしても、本発明の実施形態の乗算アキュムレータ・ユニット２００では、２Ｎビットの１５２は、アキュムレータ１５０によって加算され、そして２Ｎビットのアキュムレート結果が生成される。本実施形態の構成はいくつかの利点を持つ。例えば、オーバーフローの場合はこのような設計で簡単に検出される。その詳細は後述する。もう一つの利点はいくつかの計算を簡単にして実行時間を節約することである。例えば、
【００３８】
【数１】
0003541005.tif 000002
【００３９】
のような計算が望まれる場合における本実施形態と既述の従来例との比較を下記に示す。
【００４０】
従来技術では、プログラム言語は、
0003541005.tif 000003
である。ここで、"MLA" はＮ＊Ｎ＋Ｎ＝Ｎ用の命令であり、"MLA" 命令実行後の結果は３２ビット長である。
【００４１】
本実施形態では、プログラム言語は、
0003541005.tif 000004
である。ここで、"MLA" はＮ＊Ｎ＋Ｎ＝Ｎ用の命令であり、本実施形態のプログラムでの"MLA" 命令実行後の結果は６４ビット長である。
【００４２】
本発明の実施形態において、サム(summation) の結果は６４ビットであり、既述の従来技術は３２ビットである。その従来技術で６４ビットの結果が要求される場合、Ｎ＊Ｎ＋２Ｎ→２Ｎの計算が必要であり、それは本実施形態の実行時間よりも多くの実行時間を必要とする。つまり、本実施形態では、従来技術と同一条件に対して簡単化された計算が使用されるのである。
【００４３】
アキュムレート実行後、アキュムレータ１５０はアキュムレート結果１５４を発生する。アキュムレート結果１５４は、２Ｎビットであり、第１のＮビットの部分Ｈおよび第２のＮビットの部分Ｉを含む。アキュムレート結果１５４は、乗算アキュムレータ・ユニット２００の出力結果になるのである。また、アキュムレート結果１５４は、検出結果１７２によって示されるオーバーフローの場合を検出するために検出装置１７０に出力される。
【００４４】
命令のクラスがクラス２の場合、すなわちＮ＊Ｎ＋Ｎ→Ｎの計算が望まれる場合において、検出装置１７０は、アキュムレート結果１５４の第１のＮビットの部分Ｈを、専用レジスタ・バンク１１０によって供給される追加オペランド１５２の第１のＮビットの部分Ｃと比較する。もしアキュムレート結果１５４の第１のＮビットの部分Ｈが追加オペランド１５２の第１のＮビットの部分Ｃと同じでなければ、それは計算でオーバーフローの場合が発生したことを意味する。
【００４５】
明確のため、乗算器１３０に入力される２つのＮビットのオペランドをそれぞれＥおよびＦで示してある。Ｎ＊Ｎ＋Ｎ→Ｎ命令の計算は、本実施形態によってＥ＊Ｆ＋ＣＤ→ＨＩとして実行される。この場合において、ＣがＨと等しくないことはオーバーフローが起こったことを意味する。また、Ｎ＊Ｎ＋２Ｎ→２Ｎ命令の計算は、本実施形態の同一構成によってＥ＊Ｆ＋ＣＤ→ＨＩとして実行される。
【００４６】
Ｎ＊Ｎ＋２Ｎ→２Ｎクラス命令に対しては、アキュムレータは、ＣＤをＥ＊Ｆ乗算の演算結果に加算して、アキュムレート結果ＨＩを得る。アキュムレータは１つの型の計算２Ｎ＋２Ｎ→２Ｎを実行するだけであるということである。Ｎ＊Ｎ＋Ｎ→Ｎクラス命令に対しては、アキュムレータは、ＣＤをＥ＊Ｆ乗算の演算結果に加算して、ＨＩの結果を得る。この場合、Ｃは専用レジスタ・バンク１１０によって供給される。もし追加演算後にＨがＣと同じでなければ、そのときオーバーフローがあったのである。
【００４７】
このオーバーフロー指示は、ユーザに有用な情報を早くしかも便利な方法で提供するのに対して、図２の乗算アキュムレータ・ユニットはオーバーフロー指示を与えないのである。これが本実施形態のもう一つの利点である。
【００４８】
【発明の効果】
以上のことから明らかなように、本発明によれば、乗算アキュムレート命令を実行することができ、オーバーフロー状態を検出することができる。
【図面の簡単な説明】
【図１】本発明の一実施形態に係るデータ処理装置用の乗算アキュムレータ・ユニットを示すブロック図である。
【図２】データ処理システム用の従来の乗算アキュムレータ・ユニットを示すブロック図である。
【符号の説明】
２００  乗算アキュムレータ・ユニット
１１０  専用レジスタ・バンク
１２０  一般レジスタ・バンク
１３０  乗算器
１５０  アキュムレータ
１６０  セレクタ
１７０  検出装置
【図１】
0003541005.tif 000005
【図２】
0003541005.tif 000006