(57)【要約】  マイクロプロセッサにおける積和演算を実行するための装置であって、前記装置は、加算器及び乗算器及びデータの処理を実行するためのマルチプリアにて演算されたデータを受信するためのオペランド入力レジスタと、マイクロプロセッサへ送信するための結果出力ポートと、結果を格納するためのマルチフレクサと、前記装置へアキュムレータ内部の値を格納するためのアキュムレータキャッシュと、および前記装置の処理を制御するための制御回路と、からなる。
2008542893.tif 000002
【特許請求の範囲】
【請求項１】
マイクロプロセッサにおける積和演算を実行するための装置であって、
前記装置へアキュムレータ内部の値を格納するためのアキュムレータキャッシュと、
前記装置の処理を制御するための制御回路と、
を有することを特徴とする装置。
【請求項２】
請求項１に記載の装置であって、
前記制御回路は、
処理が前記アキュムレータキャッシュを必要とするかを判定し、
命令が直ぐに出力されるかを判定し、
前記命令が読み取り障害または書き込み障害によるものか否かを判定し、
読み取り障害または書き込み障害によるものでないという判定に応答して前記命令が、積和命令であるか否かを判定し、
前記アキュムレータキャッシュは有効であるか否かを判定し、
前記アキュムレータキャッシュが有効であるという判定に応答して前記命令を出力するように構成されることを特徴とする装置。
【請求項３】
請求項２に記載の装置であって、
前記制御回路は、非演算（ｎｏ  ｏｐｅｒａｔｉｏｎ）信号を出力するとともに、前記命令が障害を引き起こしたという判定に応答して１つのサイクルに前記命令を保持するように構成されることを特徴とする装置。
【請求項４】
請求項２に記載の装置であって、
前記制御回路は、前記命令が積和命令ではないという判定に応答して非演算信号を出力するように構成されることを特徴とする装置。
【請求項５】
請求項２に記載の装置であって、
前記制御回路は、前記命令を保持するとともに、ロードされた命令を出力するように構成されることを特徴とする装置。
【請求項６】
請求項２に記載の装置であって、
前記制御回路は、アキュムレータキャッシュからメモリへのライトバックかどうかを判定することによって、およびライトバックが保留されたという決定に応答して前記アキュムレータキャッシュ内の保留されたレジスタのメモリへのライトバックを実行することによって非演算プロセスが実行するように構成されることを特徴とする装置。
【請求項７】
請求項２に記載の装置であって、
前記制御回路は、前回の処理からの値が前記キャッシュ内に格納されたか否かを判定することよって及び前記値を無効にすることによって処理を実行するように構成されることを特徴とする装置。
【請求項８】
請求項２に記載の装置であって、
前記制御回路は、入力を受信し、アドレスを受信し、前記アドレスで前記アキュムレータキャッシュにて前記値を書き込むことによって前記アキュムレータキャッシュのアドレスをロードし、
キャッシュが書き込みを保留した信号をクリアし、
前記アキュムレータが有効にした値を指し示す信号をセットするように構成されることを特徴とする装置。
【請求項９】
請求項２に記載の装置であって、
前記制御回路は、前記アキュムレータキャッシュ内の正しいアドレスへ前記命令の結果を書き込むようにさらに構成されることを特徴とする装置。
【請求項１０】
請求項９に記載の装置であって、
前記制御回路は、前記結果が１ワード以上か否かを判定し、
前記結果が１ワード以上であるという判定に応答して出力へ前記結果の桁が低い方の部分を書き込み、
かつ保留したライトバックの信号をセットするように構成されることを特徴とする装置。
【請求項１１】
マイクロプロセッサにおける積和演算処理を実行する方法であって、
アキュムレータキャッシュにおいて命令がエントリを必要とするかを判定する段階と、
命令が直ぐに出力されるかを判定する段階と、
前記命令が読み取りの障害か、または書き込みの障害かを判定する段階と、
前記命令が積和であるかを判定する段階と
前記命令が読み取りの障害、または書き込みの障害により引き起こされたものでないという判定に応答した命令と、
前記アキュムレータキャッシュは有効であるか否かを判定する段階と
前記アキュムレータキャッシュが有効であるという判定に応答して前記命令を出力する段階と、を有することを特徴とする方法。
【請求項１２】
請求項１１の方法であって、
非演算信号を出力する段階と、前記命令が障害により発生したという判定に応答して前記命令を１つのサイクルに保持する段階とをさらに有することを特徴とする方法。
【請求項１３】
請求項１１の方法であって、
前記命令が積和命令ではないという判定に応答して非演算信号を出力する段階をさらに有することを特徴とする方法。
【請求項１４】
請求項１１の方法であって、
アキュムレータキャッシュが有効ではないという判定に応答して前記命令を保持する段階と、
ロードしている命令を出力する段階と、を有することをさらに特徴とする方法。
【請求項１５】
請求項１１の方法であって、
非演算信号に応答して非演算を実行する段階をさらに有することを特徴とする方法。
【請求項１６】
請求項１５の方法であって、
前記非演算を実行するステップは、さらに、
アキュムレータキャッシュからメモリへのライトバックであるか否かを判定する段階と、
ライトバックが保留されているという判定に応答して前記アキュムレータキャッシュにて保留されているレジスタのメモリへのライトバックを実行する段階と、をさらに有することを特徴とする方法。
【請求項１７】
請求項１１の方法であって、
前回の処理からの値が前記キャッシュにて格納されたか否かを判定する段階と、
前記値を無効にする段階と、をさらに有することを特徴とする方法。
【請求項１８】
請求項１１の方法であって、
入力を受信する段階と、
アドレスを受信する段階と、
前記アドレスで前記アキュムレータキャッシュにて前記値を書き込む段階と、
前記保留している信号のキャッシュの書き込みをクリアする段階と、
前記アドレスで前記値を有効であると指し示した信号をセットする段階と、をさらに有することを特徴とする方法。
【請求項１９】
請求項１１の方法であって、さらに、
前記アキュムレータキャッシュにて正しいアドレスへ前記命令の結果を書き込む段階と、を有することを特徴とする方法。
【請求項２０】
請求項１９の方法であって、
前記結果が１ワード以上であるか否かを判定する段階と、
前記結果が１ワード以上であるという判定に応答して前記結果の桁の低い部分を出力へ書き込み、かつ保留している信号へライトバックを設定する段階と、をさらに有することを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロプロセッサに関する。より詳細には、本発明は効率の良い積和の演算を実行するための装置及び方法に関する。本願は、２００５年６月１日に出願された同時米国係属出願11/142,920の優先権を主張するものであって、この引用によって本明細書に組み込まれる。
【背景技術】
【０００２】
マイクロプロセッサにデジタル信号処理（ＤＳＰ）を実行させることが一般的になってきている。ＤＳＰにおける非常に一般的な演算は、積和（ＭＡＣ）の演算である。ＭＡＣ演算は、ＸとＹの２つのオペランドを乗算し、その積にもう一つ別のオペランド、つまりアキュムレータＡを加算するものである。
【０００３】
多くの場合において、前記アキュムレータＡは、ＡをオーバーフローさせないようにするためにＸとＹの桁幅よりも広い。同じアキュムレータが全体のＤＳＰアルゴリズムにおいて再利用されるので、より多くの基準位置情報が前記アキュムレータＡに生じる。
【０００４】
できる限り効率の良いＭＡＣ演算を行うことは、ＤＳＰ実行にとって不可欠である。なぜならば、演算は内部閉回路において頻繁に使用されているからである。結果をオーバーフローさせないようにするためにアキュムレータの桁幅を十分広くさせておくことは、とても好都合なことでもある。これは、演算の正確性を増加させることになる。多くの場合、最終的な結果は、単一レジスタにおいて丸められ、かつ表されるので桁幅の広いアキュムレータは、計算途中の中間値としてのみ必要とされる。
【０００５】
現在のマイクロプロセッサーアーキテクチャーは、レジスタファイルにオペランドを有することが好まれる。共通の考え方は、オペランドＸと、オペランドＹと、オペランドＡとを、レジスタファイルの３つ別々のレジスタに有するというものである。それゆえ、３つのワードサイズのオペランドＸ、Ｙ、及びＡを読み取るということは、３つのレジスタファイルの読み取り処理を必要とすることになる。
【０００６】
多くの場合さらなる正確性が必要とされる。なぜならば、レジスタファイルに２つかそれ以上の連結されたレジスタに属するオペランドＡを必要とするからである。その結果、１回の処理毎に４つかそれ以上のレジスタファイルの読み取り処理が実行される必要がある。これはシリコン領域に関する４つかそれ以上の非常に高価な読み取りポートを必要とすることになる。あるいは、前記処理は、連続的にレジスタファイルを読み出す読み取り処理によって実行され、その結果パフォーマンスが低下する可能性がある。
【０００７】
前記処理の結果は、レジスファイルへライトバックされる必要がある。なぜならば、オペランドＡが２つかそれ以上で連結されたレジスタからなる場合、前記レジスファイルが２つかそれ以上の書き込みポートを必要とするからである。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明は、積和演算ユニット（ｍｕｌｔｉｐｌｙ  ａｃｃｕｍｕｌａｔｅ  ｕｎｉｔ）の内部にてローカルキャッシュの中に頻繁に再利用されたレジスタを保持しておくことによって、積和器（ＭＡＣ）の演算を実行するときに、不可欠であるレジスタファイルへの読み取り処理及び書き込み処理の同時処理を制限することを提供する。本発明は、シリコン領域を節約し、かつ速度低下を最小限にとどめて消費電力を削減する。
【０００９】
ある専用のアキュムレータキャッシュは、ＭＡＣユニットの中で実行さる。このキャッシュは、一時的に１つかそれ以上のレジスタへレジスタファイルをレジスタに保持して置くことができ、しかもアキュムレータに使用されている最大桁数及び所望のキャッシュの大きさに依存している。
【００１０】
本発明は、キャッシュレジスタにてデータ障害が発生するか否かをＭＡＣ装置に自動的に検出することを可能にして、監視するキャッシュを提供する。検出された障害は、アキュムレータキャッシュの無効もしくは、自動的な更新を必要とする。このような場合、前記システムは演算が正しい場所の変数を使用することを確実にする必要がある。データ障害の一例は、あるレジスタがアキュムレータキャッシュ内で一時的なものであるうちにマイクロプロセッサの他の部分がレジスタファイルにあるこのレジスタへ書き込もうとする場合である。
【００１１】
アキュムレータキャッシュは、アキュムレータキャッシュ内に存在しないアキュムレータレジスタを使用するというＭＡＣ命令が出力された時、制御回路によって積極的にロードされる。このような場合、ＭＡＣ命令が出力される前に、アキュムレータキャッシュがロードされる。ＭＡＣ命令が出力された場合、制御回路は、アキュムレータキャッシュが更新されるべきかどうかを判定する。キャッシュが更新される必要がある場合、制御回路は通常ＭＡＣ命令の実行へひとつの命令サイクルを加えることになるとともに、キャッシュの中へソースレジスタをコピーするためにこのサイクルを使用する。例えば内部ループにおいて、次のＭＡＣ命令が出力された場合は、制御回路は多くの場合次のような決定を行う。それは、キャッシュを更新する必要がなく、その結果ひとつの命令サイクルを記録するという決定である。
【００１２】
専用のアキュムレータレジスタがＭＡＣ装置にアキュムレータの値を内部的に保持しておくことを許可するとともに、さらに、結果を都合の良い時にレジスタファイルへライトバックされることを許可する場合には、レジスタファイルのへの書き込み処理の量を減らすことになり、結果として消費電力を著しく減らすことになる。
【００１３】
前記ＭＡＣユニットの精度をさらに良くするには、通常前記ＭＡＣユニットは単一のレジスタよりも桁幅の広いアキュムレータを具備することになる。一般的な構成は積和処理の結果が３２ビットであることを可能とし、かつＭＡＣでのアキュムレータ処理の結果が４０ビットであることを可能としている。前記結果レジスタが単一レジスタよりも桁幅が広ければ、おそらくプロセッサパイプラインの使用していないサイクルを活用することにより、前記結果はレジスタファイルへと次々にライトバックされることになる。
【課題を解決するための手段】
【００１４】
本発明は、効果的な積和演算処理を実行するための装置及び方法に関する。以下は、本発明の実施形態の具体例の説明である。必要に応じて、異なる図に記された要素は本明細書を通して同じ参照番号を付与することとする。
【発明を実施するための最良の形態】
【００１５】
図１は、マイクロプロセッサ１００の一部を図示している。マイクロプロセッサ１００は、本発明の一般的な実施形態に従いＭＡＣ命令を実行するための処理を行う。当業者は、本発明の理解のために本質ではないいくつかの要素が簡潔のため省略されていることを認識する。
【００１６】
マイクロプロセッサ１００は、パイプライン実装である。パイプラインは、次の５つのパイプライン段階に分けられる。つまり、フェッチ命令（ＩＦ）、デコード命令（ＩＤ）、実行命令（ＩＥ）、メモリロード／ストア（ＭＥＭ）、ライトバック（ＷＢ）、である。パイプライン実装は、パイプラインレジスタの論理演算結果を一時的に格納することによって、マイクロプロセッサ１００のクロック周波数の増加に寄与する。このようにして、１つのクロックサイクル内に実行される演算のための論理パスが短くなる。
【００１７】
プログラムカウンタ１０５はマイクロプロセッサ１００によって実行される次の命令のアドレスへポインタを格納する。プログラムカウンタ１０５は、前記ポインタを命令メモリ１１０及び加算器１１５へと送信する。命令メモリ１１０は、前記ポインタによって与えられたアドレスにある命令を取り出す。加算器１１５は、前記ポインタの値を次命令のアドレスへインクリメントする。
【００１８】
前記命令メモリ１１０は、実行のために前記ポインタの前記アドレスからパイプラインレジスタ１２５の中へ前記ＩＦ及び前記ＩＤの間に前記命令を書き込む。パイプラインレジスタ１２５における前記命令は、コントローラ／デコーダ１３０により読み取られる。コントローラ／デコーダ１３０は、前記命令を実行し、かつ前記レジスタファイルが前記命令を実行するのに必要とされる前記レジスタのアドレスを決定する。これらのレジスタのアドレスは、前記レジスタファイル１３５へ送られる。前記レジスタは、ついで前記ＩＤ／ＥＸレジスタ１４０にロードされる。前記レジスタからの前記データは、ついでＭＡＣ回路１４５及び算術論理ユニット（ＡＬＵ）１５０により前記命令に対して正しい論理演算の実行するために使用される。ＭＡＣ回路１４５の前記出力は、マルチプレクサ１５５へ送信される。ＭＡＣ回路１４５は、またアキュムレータキャッシュに格納された値の状態をコントローラ／デコーダ１３０へ指し示すＡｃｃ＿Ｃａｃｈｅ＿Ｓｔａｔｕｓ信号バスへ向けて信号を出力する。前記Ａｃｃ＿Ｃａｃｈｅ＿Ｓｔａｔｕｓ信号バスは、ＭＡＣ回路１４５のアキュムレータキャッシュ内の各入力に対するラインを有している。ＡＬＵ１５０は、マルチプレクサ１５５へ送信された結果と、前記結果の計算の間に発生したあらゆるフラグとを出力する。
【００１９】
前記マルチプレクサ１５５はＡＬＵ１５０及びＭＡＣ１４５から正しい出力を選択し、かつＥＸ／ＭＥＭパイプラインレジスタ１６５の正しい出力レジスタへ前記結果を書き込む。前記結果は、ついでデータメモリ１７０の正しいアドレス内に格納されるか、正しいＭＥＭ／ＷＢパイプラインレジスタ１７５内に配置されるかのどちらかである。
【００２０】
マルチプレクサ１８０は、パイプラインレジスタ１７５からの出力を受信し、データメモリ１７０からか、または実行パイプラインステージにおける演算結果からのどちらかからライトバックされたデータを選択する。どの命令でも、結果として終点レジスタを具備する。この終点レジスタは、レジスタファイルもしくはプログラムカウンタ１０５に置かれる。終点レジスタがレジスタファイルに存在する場合、マルチプロセッサ１８０の出力は、レジスタファイル１３５へ書き込まれる。終点レジスタがプログラムカウンタ１０５である場合、マルチプレクサ１８０の出力は、マルチプレクサ１２０へと送信される。マルチプロセッサ１２０は加算器１１５からおよびマルチプレクサ１８０から出力を受信する。マルチプレクサ１２０は、ついでプログラムカウンタ１０５内に次のアドレスとして次の命令へ挿入するための正しい出力を選択する。
【００２１】
図２は、本発明に従って構成されたＭＡＣ回路１４５の概念ブロック図である。前記ＭＡＣ回路は、本発明の従って演算を実行するために乗算器２０５と加算器２１０とを具備している。前記ＭＡＣ装置は、ＭＡＣもしくは積和演算に対するオペランドを実行するための２つのオペランド入力ポート２２０，２２５と、結果出力ポート２１５とを具備する。入力ポート２２０，２２５もまたアキュムレータキャッシュ２３５をロードするために用いられる。
【００２２】
前記ＭＡＣ回路１４５は、またアキュムレータキャッシュ２３５を具備する。図２の前記アキュムレータキャッシュ２３５は、Ａ及びＢという２つのアキュムレータキャッシュ２３５の値を持つが、アキュムレータキャッシュ２３５はあらゆる値を有することがわかる。より好ましい実施形態では、アキュムレータキャッシュ２３５はあらゆる値を具備し、そこで各値が演算の精度と同じ桁幅を有する。アキュムレータキャッシュ２３５は、望ましくは加算器２１０へコンテンツを供給するように下記により詳しく開示された方法にて構成される。
【００２３】
加算器２１０、乗算器２０５、及びＭＡＣ回路１４５のアキュムレータキャッシュ２３５は、マルチプレクサ２３０に接続している。マルチプレクサ２３０は、目的とする値と結果出力ポート２１５への結果とを提供する。ＭＡＣまたは積和結果のあらゆる部分、またはアキュムレータキャッシュ２３５のあらゆる部分が結果出力ポート２１５への出力である、と意図されている。結果出力ポート２１５は、好ましくはレジスタファイルへライトバックされるためのデータを実行するために、またはマイクロプロセッサの他の部分へ結果を転送するために構成されている。
【００２４】
より好ましい実施形態において、乗算器２０５は入力よりも桁幅の広い結果を算出するために構成されている。例えば、乗算器２０５はＮとＭビットの桁幅を持つ入力オペランドを受信し、提供されるアキュムレータの最大桁数にも依るが、Ｎ＋Ｍビットの結果を生成することができる。
【００２５】
図３は、本発明に関するＭＡＣ回路１４５の演算を制御するための一般的な制御ロジック３００を図示している。制御ロジック３００はＭＡＣ回路１４５を演算するための伝統的なハードウェア回路であることが意図されている。制御ロジック３００は、マイクロプロセッサ１００において主なコントローラ／デコーダ１３０と通信を行う。
【００２６】
制御ロジック３００は、コントローラ／デコーダ１３０からの次のような信号を受信する。その信号は、Ｉｎｓｔｒｕｃｔｉｏｎ信号、Ｉｎｓｔｒｕｃｔｉｏｎ_Ｖａｌｉｄ信号、Ａｃｃ_Ｓｒｃ_Ｒｅｇ信号、Ｒｆ＿Ｗａｄｒ信号、及びＲｆ＿Ｗｅｎ信号である。
【００２７】
前記Ｉｎｓｔｒｕｃｔｉｏｎ信号は、ＭＡＣ回路１４５が実行する次の命令を指示する。前記信号がいくつかのロジックユニットで分配されたシグナルバス経由で受信されるので、制御ロジック３００は、また前記Ｉｎｓｔｒｕｃｔｉｏｎ信号が有効であり、かつＭＡＣ回路１４５によって実行されることを指示する前記Ｉｎｓｔｒｕｃｔｉｏｎ_Ｖａｌｉｄ信号を受信しなければならない。前記Ａｃｃ_Ｓｒｃ_Ｒｅｇ信号は、ＭＡＣ演算が実行されていることにより前記アキュムレータソースレジスタとして使用されることをレジスタに指示する。ＭＡＣ回路１４５がレジスタファイルからアキュムレータキャッシュ２３５へ値をロードする時、前記Ａｃｃ_Ｓｒｃ_Ｒｅｇ信号は、またアキュムレータキャッシュ２３５における値の場所をＭＡＣ回路１４５へ指示する。前記Ｒｆ＿Ｗａｄｒ信号はどちらのレジスタファイルがパイプラインにおけるほかの演算によって直ぐに書き込まれようとしているのかを指示する。前記Ｒｆ＿Ｗｅｎ信号は、前記Ｒｆ＿Ｗｅｎ信号におけるレジスタアドレスが有効かどうかを指示する。前記Ｒｆ＿Ｗａｄｒ信号及び前記Ｒｆ＿Ｗｅｎ信号は、アキュムレータ２３５に指示される可能性もある。
【００２８】
前記Ａｃｃ_Ｃａｓｈｅ_Ｓｔａｔｕｓ信号は、アキュムレータキャッシュ２３５においてレジスタファイルが複製されるレジスタを指示する。前記Ａｃｃ_Ｃａｓｈｅ_Ｓｔａｔｕｓ信号は、またアキュムレータ２３５におけるエントリが有効かどうかも指示する。ついでこれらの信号は、制御ロジックを送信する命令に使用される。
【００２９】
図４―７は、さまざまな信号の受信に応答する制御ロジック２４０による実行される実施形態のフロー図を図示している。図４は、Ｉｄ＿Ｃｏｎｔｒｏｌ＿Ｌｏｇｉｃプロセス４００を図示している。これは、書き込み障害後の読み取りかまたは書き込み障害後の書き込みが発生するか否かを判定し、障害が発生していなければ命令を出力するプロセスである。図５は、Ｎｏ＿Ｏｐプロセス５００を図示している。これは、ＭＡＣ回路１４５に提供されていない命令バス上での全ての命令が実行されるプロセスである。図６は、Ａｃｃ＿Ｃａｓｈｅ＿Ｃｏｎｔｒｏｌ＿Ｌｏｇｉｃプロセス６００を図示している。これは、Ｉｄ＿Ｃｏｎｔｒｏｌ＿Ｌｏｇｉｃプロセス４００によって生成された命令をデコードするプロセスである。図７は、ＭＡＣ演算を実行するプロセス７００を図示している。例となるこれらのプロセスの形態は、下記に詳細に記載されている。
【００３０】
図４は、Ｉｄ＿Ｃｏｎｔｒｏｌ＿Ｌｏｇｉｃプロセス４００を図示している。これは、書き込み障害後の読み取りかまたは書き込み障害後の書き込みが発生するか否かを判定し、ついで障害が発生していなければ命令を出力するプロセスである。これらの障害は、パイプライン化されたロジックにて発生する。なぜならば、演算において使用される無効なデータを引き起こすレジスタファイル１３５からの読み取りまたは前記レジスタファイル１３５への書き込みが生じるからである。Ｉｄ＿Ｃｏｎｔｒｏｌ＿Ｌｏｇｉｃプロセス４００は、レジスタファイル１３５への読み取り及び書き込み処理を、正しい順で発生させることを保証する。
【００３１】
プロセス４００は、アキュムレータキャッシュ２３５がレジスタファイル１３５へ書き込まれていないという結果を格納しているという判定により、ステップ４０５において始まる。これは、Ａｃｃ＿Ｃａｓｈｅ＿Ｐｅｎｄｉｎｇ＿Ｗｂ信号の受信により決定することになる。ステップ４１０にて、制御ロジックは、レジスタファイル１３５へまだ書き込まれていないキャッシュの値が存在するかという判定に応答して、直ぐに命令を出力させるか否かを判定する。もし命令が直ぐには発生しないのであれば、プロセス４００は終了する。
【００３２】
命令を直ぐに出力するのであれば、前記制御ユニットは、前記命令が書き込み障害後の読み取りにより発生したのかまたは書き込み障害後の読み取りにより発生したのか否かをステップ４１５にて判定する。障害が検知された場合、前記制御ユニットは、ｎｏ＿ｏｐ信号をステップ４１９にて出力させ、パイプラインのデコード段階において命令を保持し、ついでステップ４２０にてレジスタファイルに正しい値が存在するまで命令の出力を待つ。プロセス４００は、ついで障害が解決されたか否か判定するためにステップ４１５から繰りされる。
【００３３】
前記命令が障害を発生させる値を読み込んでいなければ、前記制御ユニットはステップ４２５にてデコードされている命令がＭＡＣ命令であるか否かを判定する。命令がＭＡＣ命令でなければ、ステップ４３０では演算命令をＭＡＣ回路１４５へ出力しない。
【００３４】
ＭＡＣ命令がデコードされていれば、プロセス４００は、ステップ４４０でアキュムレータキャッシュ２３５が有効かどうかを判定する。アキュムレータキャッシュ２３５の前記有効性は、前記Ａｃｃ＿Ｃａｓｈｅ＿Ｒｅｇ＿Ａｄｒと前記Ａｃｃ＿Ｃａｓｈｅ＿Ｖａｉｄ信号を各Ａｃｃ＿Ｃａｓｈｅ＿Ｓｔａｔｕｓ信号バスに対してアサート（ａｓｓｅｒｔ）することにより判定される。アキュムレータキャッシュ２３５が有効でなければ、プロセス４００はＭＡＣ命令を保持するとともに、ステップ４４５にてＬｏａｄ＿Ａｃｃ命令を前記パイプラインの中へ挿入する。ステップ４４５の後またはアキュムレータキャッシュ２３５が有効である場合は、ついでＭＡＣ命令はステップ４５０にて出力され、プロセス４００が終了する。
【００３５】
図５は、非演算（ｎｏ  ｏｐｅｒａｔｉｏｎ）プロセス５００を図示している。これは、ＭＡＣ回路１４５による実行されない命令を受信した時の制御ロジック３００により実行されるプロセスである。プロセス５００は平行に処理される２つの別々の処理を有している。第１処理は、Ａｃｃ＿Ｃａｃｈｅ＿Ｐｅｎｄｉｎｇ＿Ｗｂ信号がセットされているかを制御ロジック３００が判定するステップ５０５から始まる。前記信号がセットされていれば、アキュムレータキャッシュ２３５に前回のＭＡＣ演算から前記レジスタファイルへライトバックされないまま格納された値が存在する。これは、オペランドレジスタよりも演算の結果の桁幅が広いときに発生する。前記Ａｃｃ＿Ｃａｃｈｅ＿Ｐｅｎｄｉｎｇ＿Ｗｂ信号がセットされていない場合は、プロセス５００は終了する。言い換えれば、前記信号がセットされていれば、ステップ５１０にてアキュムレータキャッシュ２３５にてペンディングレジスタのライトバックが実行される。ついで、制御ロジック３００はステップ５１５のＡｃｃ＿Ｃａｃｈｅ＿Ｐｅｎｄｉｎｇ＿Ｗｂ信号をクリアして、処理を終了する。
【００３６】
ステップ５０５と平行して、制御ロジック３００を有する監視するロジックは、キャッシュエントリを無効にすることになるパイプラインのデータが存在するかを判定する。この処理が行われると、制御ロジック３００は前記Ｒｆ＿Ｗａｄｒ信号がアキュムレータ２３５のアドレスト等しいかどうかをステップ５５０にて判定する。前記信号が前記アキュムレータキャッシュ２３５のアドレスと等しくない場合、この部分のプロセスは終了する。言い換えれば、前記Ｒｆ＿Ｗａｄｒ信号が前記アキュムレータキャッシュ２３５のアドレスを指示すると、制御ユニット３００は前記Ｒｆ＿Ｗｅｎ信号がハイレベルかどうかをステップ５５５にて判定する。前記Ｒｆ＿Ｗｅｎ信号がハイレベルの場合、前記Ｒｆ＿Ｗｅｎ信号によるアキュムレータキャッシュ２３５のアドレスでの値が無効となる。このようにして、制御ユニット３００は、前記アキュムレータキャッシュ２３５のエントリをステップ５６０にて無効にし、処理を終了する。
【００３７】
図６は、制御ロジック３００によって実行されるＬｏａｄ＿Ａｃｃ＿Ｐｒｏｃｅｓｓ６００を図示している。プロセス６００は、レジスタファイル１３５からアキュムレータキャッシュ２３５へＭＡＣ回路１４５の入力ポート２２０，２２５を介して値をロードする。プロセス６００はステップ６０５にて入力ポート２２０，２２５にて値を受信して始まる。ステップ６１０では、前記値を受信するために前記Ａｃｃ＿Ｓｒｃ＿Ｒｅｇ信号が前記アキュムレータキャッシュ２３５のアドレスから読まれる。ステップ６１５では、前記値が前記アキュムレータキャッシュ２３５で指示されたアドレスに書かれる。当業者であれば、前記アキュムレータキャッシュ２３５が前記入力よりも桁幅が広ければ、下位ビットは第２ポートにビットを残したまま第１ポートに配置される、ということがわかる。例えば、入力ポートが３２ビット幅でかつ、アキュムレータキャッシュ２３５が２３ビットよりも桁幅広いとする。この場合、３２ビット以下のものは入力ポート２２０にて配置され、ついで残っている上位ビットは入力ポート２２５に配置される。この例において、前記アキュムレータキャッシュ２３５の値は、２の補数である数値信号を拡張した信号であり、かつ３２ビットより上位に残っている値は、拡張された信号である。
【００３８】
ステップ６２５では、制御ロジック３００がステップ６１５にて書き込まれた前記Ａｃｃ＿Ｃａｃｈｅ＿Ｐｅｎｄｉｎｇ＿Ｗｂ信号をアキュムレータキャッシュ２３５のエントリにてクリアする。プロセス６００は、ステップ６３０にて制御ロジック３００がアキュムレータキャッシュ２３５エントリに対するＡｃｃ＿Ｃａｃｈｅ＿Ｐｅｎｄｉｎｇ＿Ｗｂ信号を有効に設定することによって、終了する。
【００３９】
図７は、ＭＡＣ命令を実行するためのプロセス７００を図示している。プロセス７００は、ステップ７０５にてＭＡＣ回路１４５が前記命令を実行することにより始まる。ステップ７１０では、前記結果が前記アキュムレータキャッシュ２３５の正しい場所に書き込まれる。ステップ７１５では、前記制御ロジックは、結果が１ワードより長いかどうかを判定する。前記結果が１ワードよりも長くない場合は、ステップ７２０にて結果が出力ポート２３０を介して前記レジスタファイル１３５へ書き込まれ、ついでプロセス７００を終了する。前記結果が１ワードより長い場合、ステップ７３０にて前記結果の１ワードは出力ポート２１５を介して前記レジスタファイル１３５へ書き込まれる。ステップ７３５にて、ついで前記Ａｃｃ＿Ｃａｃｈｅ＿Ｐｅｎｄｉｎｇ＿Ｗｂ信号は、前記結果の残りを前記レジスタファイル１３５へ書き込まれることを待つためにハイレベルに設定され、ついでプロセス７００を終了する。
【００４０】
さらなる実施形態としては、前記アキュムレータキャッシュ２３５へロードされるデータが前記ロードされたデータに関する付加的な情報を含む可能性があることを意図する。例えば、前記データは、前記キャッシュレジスタの前記レジスタファイルアドレスに関する情報や、または前記アキュムレータキャッシュ２３５のエントリに応じた有効なビットを更新する情報を有してもよい。
【００４１】
いくつかの状況では、どのアキュムレータキャッシュ２３５のエントリでも新しい値をロードすることから逃れられない、ということが意図されている。このような場合、前記演算ロジックは交換戦略を採用する設定をしてもよい。それによって、現在のエントリが新しいエントリに応じて強制退去される可能性がある。
【００４２】
さらなる実施形態では、前記制御ロジックは先を見越して、かつ将来の命令で使用されそうなレジスタの値をアキュムレータキャッシュ２３５のレジスタに意図的にプレロードする設定をしてもよい。
【００４３】
上記は、装置の一般的な記載及びマイクロプロセサーにおける積和演算の効果的な実行に関する方法を記載した。変形例は、文言通りにもしくは均等論を通して添付したいずれかの請求項において記載された本発明を侵害する可能性を当業者は認識しなければならない。
【図面の簡単な説明】
【００４４】
【図１】本発明に関して、マイクロプロセッサにおける一般的なブロック図である。
【図２】本発明に関して、一般的なＭＡＣ装置である。
【図３】本発明に関して、ＭＡＣ装置のための制御ユニットである。
【図４】本発明に関して、アキュムレータキャッシュにおいて読み取りもしくは書き込み障害が発生したか否かを判定する判定方法である。
【図５】本発明に関して、非演算を実行するための一般的な方法である。
【図６】本発明に関して、ＭＡＣ命令をデコードするための一般的な方法である。
【図７】本発明に関して、ＭＡＣ命令を実行するための一般的な方法である。
【符号の説明】
【００４５】
１００  マイクロプロセッサ
１０５  ＰＣ：プログラムカウンタ
１１０  命令メモリ
１１５  加算器
１２０、１５５、１８０  ＭＵＸ：マルチプレクサ
１２５  パイプラインレジスタ
１３０  コントローラ／デコーダ
１３５  レジスタファイル
１４０  ＩＤ／ＥＸレジスタ
１４５  ＭＡＣ回路
１５０  算術論理ユニット（ＡＬＵ）
１６５  ＥＸ／ＭＥＭパイプラインレジスタ
１７０  データメモリ
１７５  ＭＥＭ／ＷＢパイプラインレジスタ
１８０  ＭＵＸ
【図１】
2008542893.tif 000003
【図２】
2008542893.tif 000004
【図３】
2008542893.tif 000005
【図４】
2008542893.tif 000006
【図５】
2008542893.tif 000007
【図６】
2008542893.tif 000008
【図７】
2008542893.tif 000009
【国際調査報告】
2008542893.tif 000010
2008542893.tif 000011
2008542893.tif 000012