(57)【特許請求の範囲】
【請求項１】
機械命令を受け取る段階と、
前記機械命令に応答して、コンディション・フラグの状態に基づいてポインタ・レジスタとデータ・レジスタとの間でデータを転送する段階と、を含み、
前記ポインタ・レジスタは前記データ・レジスタを含む第２レジスタ・ファイルとは分離した第１レジスタ・ファイルの一部から成り、前記第１レジスタ・ファイルはポインタを生成する際にアドレス生成ユニットによって用いられ、前記ポインタ・レジスタおよび前記データ・レジスタはプロセッサの異なるパイプライン・ユニットの異なるステージ内に位置する、
ことを特徴とする方法。
【請求項２】
前記データを転送する段階が、前記ポインタ・レジスタから前記データ・レジスタへメモリ・アドレスをコピーする段階を含むことを特徴とする請求項１記載の方法。
【請求項３】
前記データを転送する段階が、前記データ・レジスタから前記ポインタ・レジスタへ前記データをコピーする段階を含むことを特徴とする請求項１記載の方法。
【請求項４】
前記ポインタ・レジスタが前記データのためのソースである場合には第１パスを選択する段階、および、前記データ・レジスタが前記データのための前記ソースである場合には第２パスを選択する段階をさらに含み、機械命令を受け取る段階は前記アドレス生成ユニットを含むデジタル信号プロセッサ内で前記機械命令を受け取る段階を含むことを特徴とする請求項１記載の方法。
【請求項５】
実行ユニットを経由して前記データを変更することなく伝播する段階をさらに含むことを特徴とする請求項１記載の方法。
【請求項６】
機械命令を受け取る段階と、
前記機械命令によって指定されたポインタ・レジスタの出力を可能にする段階であって、前記ポインタ・レジスタがメモリ・アドレスを格納するために適合される、段階と、
実行ユニットを経由して前記メモリ・アドレスを変更することなく伝播する段階と、
コンディション・フラグの状態を判定する段階と、
前記状態に基づいてデータ・レジスタに前記メモリ・アドレスを書き込む段階と、
から成ることを特徴とする方法。
【請求項７】
第１パイプラインから第２パイプラインへ前記アドレスを伝播する段階をさらに含むことを特徴とする請求項６記載の方法。
【請求項８】
先の命令を実行する間に、前記コンディション・フラグをセットする段階をさらに含むことを特徴とする請求項６記載の方法。
【請求項９】
複数のパイプラインを有するプロセッサ内でデータを転送する方法であって、
第１パイプライン内のデータ・レジスタの出力を可能にする段階と、
前記第１のパイプラインの書戻しステージに優先して、前記データ・レジスタから第２パイプラインへデータが伝播する段階と、
前記第２パイプライン内に位置するポインタ・レジスタへ前記データを書き込む段階と、
から成ることを特徴とする方法。
【請求項１０】
コンディション・フラグの状態を判定する段階と、
前記状態に基づいて前記ポインタ・レジスタに前記データを書き込む段階と、
をさらに含むことを特徴とする請求項９記載の方法。
【請求項１１】
前記ポインタ・レジスタおよび前記データ・レジスタが、前記第１および第２パイプラインの異なるステージを占めることを特徴とする請求項９記載の方法。
【請求項１２】
各パイプラインが書戻しステージを持つ複数のパイプラインを有するプロセッサ内でデータを転送する方法であって、
第１パイプライン内のポインタ・レジスタの出力を可能にする段階と、
前記第１パイプラインの書戻しステージに優先して、前記第１パイプラインから第２パイプラインへアドレスを伝播する段階と、
前記第２パイプライン内に位置するデータ・レジスタに前記アドレスを書き込む段階と、
から成ることを特徴とする方法。
【請求項１３】
コンディション・フラグの前記状態を判定する段階と、
前記状態に基づいて前記ポインタ・レジスタに前記データを書き込む段階と、
をさらに含むことを特徴とする請求項１２記載の方法。
【請求項１４】
前記ポインタ・レジスタおよび前記データ・レジスタが、前記第１および第２パイプラインの異なるステージを占めることを特徴とする請求項１２記載の方法。
【請求項１５】
前記ポインタ・レジスタが、前記データ・レジスタに優先するステージ内に位置することを特徴とする請求項１２記載の方法。
【請求項１６】
ポインタ・レジスタを含むアドレス生成ユニットと、
前記ポインタ・レジスタとは分離したレジスタ・ファイル内のデータ・レジスタと、
単一の機械命令に応答して、前記データ・レジスタと前記ポインタ・レジスタとの間でデータを条件付きで転送するために適合された制御ユニットと、
から構成されることを特徴とする装置。
【請求項１７】
前記ポインタ・レジスタが第１パイプライン内に位置し、かつ、前記データ・レジスタが第２パイプライン内に位置することを特徴とする請求項１６記載の装置。
【請求項１８】
前記第１および第２パイプラインが複数のステージを有し、さらに前記ポインタ・レジスタおよび前記データ・レジスタが、前記各パイプラインの異なるステージ内に位置することを特徴とする請求項１７記載の装置。
【請求項１９】
前記アドレス生成ユニット、前記レジスタ・ファイル、前記制御ユニット、および、前記第１パイプラインの前記ポインタ・レジスタから前記第２パイプラインの前記データ・レジスタへアドレスを伝送するために、前記第１および第２パイプラインを結合するパスを含むデジタル信号プロセッサをさらに含むことを特徴とする請求項１７記載の装置。
【請求項２０】
前記第２パイプラインの前記データ・レジスタから前記第１パイプラインの前記ポインタ・レジスタへデータを伝送するために、前記第１および第２パイプラインに結合するパスをさらに含むことを特徴とする請求項１７記載の装置。
【請求項２１】
各パイプラインが書戻しステージを含み、さらに前記書戻しステージに優先して前記パスが前記第２パイプラインへ前記アドレスを伝送することを特徴とする請求項１９記載の装置。
【請求項２２】
各パイプラインが書戻しステージを含み、さらに前記書戻しステージに優先して前記パスが前記第１パイプラインへ前記データを伝送することを特徴とする請求項２０記載の装置。
【請求項２３】
前記ポインタ・レジスタから前記書き戻しステージへ前記データを変更することなく伝播するために適合された実行ユニットをさらに含むことを特徴とする請求項１６記載の装置。
【請求項２４】
ソフトウェア・プログラムをコンパイルするために格納された、コンピュータにより実行可能な命令を記録したコンピュータ読み取り可能な記録媒体であって、前記コンピュータにより実行可能な命令は、プログラマブル・プロセッサにポインタ・レジスタとデータ・レジスタとの間でデータを条件付きで転送させる単一の機械命令を生成するために適合し、前記命令によって、前記プログラマブル・プロセッサはデータ・アドレス生成パイプラインと実行ユニット・パイプラインとの間でデータを転送させる、ことを特徴とするコンピュータにより実行可能な命令を記録したコンピュータ読み取り可能な記録媒体。
【請求項２５】
前記命令が、前記プログラマブル・プロセッサに、前記データ・レジスタから前記ポインタ・レジスタへ前記データを転送させることを特徴とする請求項２４記載のコンピュータにより実行可能な命令を記録したコンピュータ読み取り可能な記録媒体。
【請求項２６】
前記プロセッサがデジタル信号プロセッサを含み、前記機械命令は、前記ポインタ・レジスタが前記データのソースである場合は第１パスを、前記データ・レジスタが前記データのソースである場合は第２パスを、前記プロセッサに選択させることを特徴とする請求項２４記載のコンピュータにより実行可能な命令を記録したコンピュータ読み取り可能な記録媒体。
【請求項２７】
メモリ・デバイスと、
前記メモリ・デバイスに結合されたデジタル信号プロセッサであって、前記プロセッサは、ポインタを生成する際にポインタ・レジスタを含むレジスタ・ファイルを用いるアドレス生成ユニット、前記レジスタ・ファイルとは分離したデータ・レジスタ、および単一の機械命令に応答して前記データ・レジスタと前記ポインタ・レジスタとの間でデータを条件付きで転送するために適合された制御ユニットを含む、プロセッサと、
から構成されることを特徴とするシステム。
【請求項２８】
前記ポインタ・レジスタが第１パイプライン内に位置し、かつ、前記データ・レジスタが第２パイプライン内に位置することを特徴とする請求項２７記載のシステム。
【請求項２９】
前記第１および第２パイプラインが複数のステージを有し、さらに前記ポインタ・レジスタおよび前記データ・レジスタが、前記各パイプラインの異なるステージ内に位置することを特徴とする請求項２８記載のシステム。
【請求項３０】
前記第１パイプラインの前記ポインタ・レジスタから前記第２パイプラインの前記データ・レジスタへアドレスを伝送するために前記第１および第２パイプラインを結合するパスをさらに含むことを特徴とする請求項２８記載のシステム。
【請求項３１】
前記第２パイプラインの前記データ・レジスタから前記第１パイプラインの前記ポインタ・レジスタへ前記データを伝送するために前記第１および第２パイプラインを結合するパスをさらに含むことを特徴とする請求項２８記載のシステム。
【請求項３２】
各パイプラインが書戻しステージを含み、さらに前記パスが、前記書戻しステージに優先して前記アドレスを前記第２パイプラインへ伝送することを特徴とする請求項３０記載のシステム。
【請求項３３】
各パイプラインが書戻しステージを含み、さらに前記パスが、前記書戻しステージに優先して前記データを前記第１パイプラインへ伝送することを特徴とする請求項３１記載のシステム。
【請求項３４】
前記ポインタ・レジスタから前記書戻しステージへ前記データを変更することなく伝播するために適合された実行ユニットをさらに含むことを特徴とする請求項２７記載のシステム。
【請求項３５】
前記メモリ・デバイスがスタティック・ランダム・アクセス・メモリを含むことを特徴とする請求項２７記載のシステム
【請求項３６】
前記メモリ・デバイスがフラッシュ・メモリを含むことを特徴とする請求項２７記載のシステム。
【発明の詳細な説明】
【０００１】
【技術分野】
本発明は、コンピュータのためのレジスタ転送オペレーションに関する。
【０００２】
【発明の背景】
デジタル信号プロセッサ（ＤＳＰ）のような多くの従来型のプログラマブル・プロセッサは、データを処理するときに使用する様々な内部レジスタを含む。データ・レジスタと呼ばれる１つのタイプのレジスタは、主に、現在のオペレーションの結果を格納し、その結果を次のオペレーションに提供するために使用される。データ・レジスタは、多くの場合、レジスタ・ファイルと呼ばれるレジスタのセットにグループ化される。別のタイプのレジスタは、アドレスを格納するために典型的に使用されるポインタ・レジスタである。しばしばプロセッサ内の実行ユニットに直接提供される、データ・レジスタによって格納されたデータとは異なり、ポインタ・レジスタによって格納されたアドレスは、主としてメモリ・システムからデータを取り出すために使用される。一群のポインタ・レジスタは、しばしばスタック・ポインタ、フレーム・ポインタおよび多くの汎用のポインタ・レジスタを含む。
【０００３】
【実施例の詳細な説明】
図１は、１またはそれ以上のパイプライン４および制御ユニット６を有するプログラマブル・プロセッサ２を示すブロック図である。以下に詳細を説明するが、プロセッサ２は、ポインタ・レジスタとデータ・レジスタとの間でデータを転送するための機械命令を支援する。特にプロセッサ２は、ポインタ・レジスタとデータ・レジスタとの間でデータを転送する、ここではＣＣ  ＭＯＶＥ命令と呼ばれる機械命令を支援する。
【０００４】
パイプライン４は、命令を処理するための多くのステージを有する多数のハードウェア・パイプラインを含む。ステージは、他のステージと同時に処理することができ、クロック・サイクルに従って結果を次のステージに転送する。命令の結果は、間断なく最終パイプライン４に現れる。
【０００５】
制御ユニット６は、パイプライン４の様々なステージを通る、命令とデータの流れをコントロールする。例えば、命令の処理中に、制御ユニット６はパイプラインの様々なコンポーネントに指示して、命令を取出して解読し、応答するオペレーションを実行し、その結果をメモリまたはローカル・レジスタに書き戻す。
【０００６】
図２は、本発明のある実施例に従ってアレンジされた、データ・アドレス生成（ＤＡＧ）パイプライン１２、実行ユニット（ＥＵ）・パイプライン１４、およびロード／格納（Ｌ／Ｓ）パイプライン１６を有するパイプライン・プロセッサの一例を図示する。例えば、各パイプラインは５つのステージ、すなわち命令取出し（ＩＦ）、解読（ＤＥＣ）、アドレス演算およびデータの取出し（ＡＣ）、実行（ＥＸ）、および書戻し（ＷＢ）を有する。
【０００７】
ＤＡＧパイプライン１２内で、命令は、ＩＦステージ中に取出しユニット２１によってメモリから、あるいは命令キャッシュから取出され、ＤＥＣステージ中に解読される。さらに、ＤＡＧパイプライン１２のＤＥＣステージは、メモリ・アドレスを格納するための１セットのポインタ・レジスタ２２を含む。次のクロック・サイクルで、解読された命令およびその命令によって使用されるあらゆるポインタ・アドレスが、データ・アドレス・ジェネレータ（ＤＡＧ）２３へＤＡＧパイプライン１２を経由してＡＣステージに送られる。ＤＡＧ  ２３は、オペレーションを実行するために必要なあらゆる付加メモリ・アドレスを演算する。これらのアドレスがＤＡＧパイプライン１２をさらに伝播して、ポインタ・レジスタ２２へ書き戻される。あるいは、その命令は、実行ユニット２５によって使用されるためにパス１５を経由してＥＵパイプライン１４に送られるか、あるいは、メモリ１８からのデータをロードするためにパス１７を経由してＬ／Ｓパイプライン１６に送られる。ある実施例では、ＤＡＧ２３は、インデックス、ベースおよび長さレジスタのようなポインタ・レジスタとして使用される循環バッファ・アドレス・レジスタを含む。
【０００８】
ＥＸステージ中に、実行ユニット２５は、例えば２つの数の加算や乗算のような特定の動作を実施する。実行ユニット２５は、例えば１またはそれ以上の算術論理演算装置（ＡＬＵ）、浮動小数点装置（ＦＰＵ）およびバレル・シフタを含むオペレーションを行なうために特殊なハードウェアを含むことがある。データ・レジスタ２４はパイプライン４のＥＸステージ内に位置し、局所的に格納されたデータを実行ユニット２５に直接提供する。さらに、データは、ＤＡＧ２３によって生成されたメモリ・アドレスに基づいて、あるいはポインタ・レジスタ２２に格納されたアドレスに基づいてデータ・メモリ１８から取り出され、ＷＢステージに伝播される。ＷＢステージ中に、オペレーションの結果が宛先に書き込まれる。ＷＢステージは、結果を格納するために２つのパスを有する。結果がデータ・メモリ１８またはデータ・レジスタ２４に書き込まれたときに、出力２６が可能になる。結果がポインタ・レジスタ２２に書き込まれたときに、出力２７が可能になる。
【０００９】
プロセッサ２によって支援されたＣＣ  ＭＯＶＥ命令によって、ソフトウェア・アプリケーションは、ポインタ・レジスタ２２とデータ・レジスタ２４との間でデータを直接に転送できる。更に、ＣＣ  ＭＯＶＥ命令によって、プロセッサは、コンディション・フラグ（ＣＣ＿ＦＬＡＧ）２９の状態に基づいてデータを転送でき、それは、典型的には、比較命令（ＣＭＰ）、他の論理演算、または直接にＣＣ＿ＦＬＡＧ２９をセットするオペレーションのような先の命令によってセットされる。ＣＣ＿ＦＬＡＧ２９は、ステータス・レジスタまたはフリップ−フロップのような記憶回路内のシングル・ビットとして格納され、例えばＣＭＰ命令がＥＸステージを終了するときにセットされる。
【００１０】
図３は、１つの実施例に従って、ソース・レジスタがポインタ・レジスタ２２で、かつ、宛先レジスタがデータ・レジスタ２４であるときに、制御ユニット６がＣＣ  ＭＯＶＥ機械命令を実行するという例示のプロセス３０を図示したフローチャートである。プロセス３０は、ＣＣ＿ＦＬＡＧ２９がセットされている条件での転送命令に関して説明されるが、転送命令はＣＣ＿ＦＬＡＧ２９が取り除かれた条件でも可能であり、本発明の範囲はこの事項によって制限されない。
【００１１】
先の命令がＥＸステージを終了するときにＣＣ＿ＦＬＡＧ２９がしばしばセットされるので、パイプライン４は、ＣＣ＿ＦＬＡＧの書込みに優先して部分的にＣＣ  ＭＯＶＥ命令を処理することがある。より詳しくは、ＣＣ  ＭＯＶＥ命令がＤＥＣステージにあるとき、制御ユニット６は、転送が生じてポインタ・レジスタ２２の出力を可能にし、そして次のクロック・サイクルで格納されたアドレスをＡＣステージに送ることを推測する（３１）。
【００１２】
ＡＣステージ中に、制御ユニット６は、ＤＡＧ２３に対して、変更することなくＥＸステージへアドレスを転送するように命令する（３２）。あるいは、ＤＡＧ２３内のポインタ・レジスタについて（図示せず）、制御ユニット６が、ＡＣステージでそれらの出力を可能にすることがある。
【００１３】
ＥＸステージ中に、アドレスは、パス１５を経由して実行ユニット２５に伝播する。制御ユニットは、実行ユニット２５に、変更することなくＷＢステージへアドレスを転送するように命令する（３３）。
【００１４】
ＷＢステージにおいて、制御ユニット６は、実行ユニット２５内のＣＣ＿ＦＬＡＧ２９の状態を決定し、状態に基づいてデータ・レジスタ２４への書込みが可能か不可能かを判定する。ＣＣ＿ＦＬＡＧ２９がセットされた場合、制御ユニット６が適切なデータ・レジスタ２４を選択し、出力２６を経由してアドレスを書き込む（３４）。このように、アドレスが、ＣＣ  ＭＯＶＥ命令に応答してポインタ・レジスタ２２からデータ・レジスタ２４にコピーされる。特に、ポインタ・レジスタ２２からデータ・レジスタ２４にデータを転送するために、アドレスはパイプライン４を横切って伝播されることがある。より詳しくは、アドレスは、第１パイプラインのＤＡＧパイプライン１２から第２パイプラインのＥＵパイプライン１４まで伝播され、コンディション・フラグがセットされるときに、それがデータ・レジスタ２４に書き込まれる。パイプラインがプロセッサ内で物理的に分離されることがあるので、あるパイプラインから別のパイプラインまでデータを伝播するときに遅延が生じることがある。したがって、データ・レジスタ２４にアドレスが正確に書き込まれる危険を減じるために、アドレスは、ＷＢステージの前に、ＤＡＧパイプライン１２からＥＵパイプライン１４へ伝播する。
【００１５】
図４は、１つの実施例に従って、ソース・レジスタがデータ・レジスタ２４であり、かつ、宛先レジスタがポインタ・レジスタ２２であるときに、制御ユニット６がＣＣ  ＭＯＶＥ機械命令を実行するという例示のプロセス４０を図示したフローチャートである。
【００１６】
ＥＸステージ中に、制御ユニット６は、格納されたデータがパス１９を経由してＥＵパイプライン１４からＤＡＧパイプライン１２まで伝播することを許容し、データ・レジスタ２４の出力を可能にする（４１）。ＷＢステージ中に、制御ユニット６は、ＥＵパイプライン１４の実行ユニット２５内でＣＣ＿ＦＬＡＧ２９の状態を決定する（４２）。ＣＣ＿ＦＬＡＧの状態に基づいて、制御ユニット６は、出力２７を経由して適切なポインタ・レジスタ２２にデータを書き込む（４３）。上述したように、アドレスがポインタ・レジスタ２２に書き込まれることを可能にするために、データは、ＷＢステージより先にＥＵのパイプライン１４からＤＡＧパイプライン１２へ伝播する。ある実施例では、ＥＸステージは、ＷＢステージでデータを提供するために３つのサブステージを含むことがある。
【００１７】
以下の例は、ＣＣ  ＭＯＶＥ機械命令を起動するためのシンタックスを示すものであるが、本発明の範囲はこの点に制限されない。
【００１８】
ｉｆ  ＣＣ  ｐ１＝ｒ１；データ・レジスタからポインタ・レジスタへ転送
ｉｆ  ！ＣＣ  ｒ０＝ｐ１；ＣＣが偽であるとき、ポインタ・レジスタからデータ・レジスタへ転送
典型的なアプリケーションでは、プログラマは、上述のＣＣ  ＭＯＶＥ命令のような、ポインタ・レジスタおよびデータ・レジスタ双方を含むレジスタ転送オペレーションを起動するソフトウェア・アプリケーションやサブルーチンを開発する。プログラマは、上記の例で示されたようなアセンブリ言語で、あるいは、高水準ソフトウェア言語でソフトウェア・アプリケーションを書く。コンパイラは、典型的には、高水準ソフトウェア・アプリケーションを処理し、かつ、ポインタ・レジスタとデータ・レジスタとの間のデータを条件付きで転送するためのＣＣ  ＭＯＶＥ機械命令を含むプロセッサ２のための適切な機械命令を生成するために起動される。
【００１９】
以上、発明の様々な実施例が述べられた。例えば、ポインタ・レジスタとデータ・レジスタとの間でデータを条件付きで転送する単一の機械命令が述べられた。プロセッサは、汎用コンピューティング・システム、デジタル処理システム、ラップトップ・コンピュータ、携帯情報端末（ＰＤＡ）および携帯電話を含む様々なシステムで実行される。かかるシステムでは、プロセッサは、オペレーティング・システムや他のソフトウェア・アプリケーションを格納する、フラッシュ（ＦＬＡＳＨ）・メモリ装置またはスタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）のような記憶装置に結合される。これらおよび他の実施例は、本願の請求項の範囲内である。
【図面の簡単な説明】
【図１】  本発明に従った、パイプライン・プログラマブル・プロセッサの例を示すブロック図である。
【図２】  プログラマブル・プロセッサのためのパイプラインの例を示すブロック図である。
【図３】  本発明に従った、レジスタ転送命令の実行例を示すフローチャートである。
【図４】  本発明に従った、レジスタ転送命令の実行例を示すフローチャートである。
【図１】
0003670646.tif 000002
【図２】
0003670646.tif 000003
【図３】
0003670646.tif 000004
【図４】
0003670646.tif 000005