(57)【要約】本発明による回路配列および方法は、スキームレジスタ（５０）を用いて、複数の間接アドレスレジスタ（４４）の中から、格納されているメモリアドレスをそれから取り出すべき一つを選択する。命令内に、その命令の処理の際に用いるべきアドレスが格納されている特定の間接アドレスレジスタ（４４）の位置を格納する代わりに、命令は、スキームレジスタ（５０）の位置を識別し、これを介して、格納されているアドレスを取り出すためにアクセスすべき複数の利用可能な間接アドレスレジスタ（４４）の内の一つを識別するする。スキームレジスタ（５０）は、例えば、デジタル信号処理アプリケーションにおいて、ＤＳＰ命令内に複数の独立なアドレスを効率的に符号化するために用いられる。スキームレジスタ（５０）内には、一つの実施例においては、間接アドレスレジスタ（４４）を識別する情報以外の追加の情報は格納されないが、ただし、追加の情報、例えば、事後修正および／あるいはアクセスタイプ情報を格納し、異なる独立に生成されるアドレスに対して独立な事後修正およびアクセスのタイプを指定することもできる。
2004501470.tif 000002
【特許請求の範囲】
【請求項１】
（ａ）各々がアドレスポインタを格納するように構成された複数の間接アドレスレジスタと、
（ｂ）各々が前記複数の間接アドレスレジスタから一つの選択された間接アドレスレジスタを選択する間接アドレスレジスタセレクタを格納するように構成された複数のスキームレジスタと、
（ｃ）前記複数のスキームレジスタからある一つの選択されたスキームレジスタを選択する命令に応答してメモリアドレスを生成し、このメモリアドレスを、選択されたスキームレジスタ内に格納されている間接アドレスレジスタセレクタによって選択された、選択された間接アドレスレジスタ内に格納されているアドレスポインタからメモリにアクセスする際に用いるように構成されたアドレス生成論理と、
を備えたことを特徴とする回路装置。
【請求項２】
各スキームレジスタがさらに事後修正情報を格納するように構成され、前記アドレス生成論理がさらに前記選択された間接アドレスレジスタ内に格納されているアドレスポインタを前記選択されたスキームレジスタ内に格納されている事後修正情報を用いて修正するように構成されたことを特徴とする請求項１記載の回路装置。
【請求項３】
さらに、各々が事後修正情報を格納する複数のステップレジスタを備え、各スキームレジスタが前記複数のステップレジスタから一つの選択されたステップレジスタを選択するステップレジスタセレクタを格納するように構成され、前記アドレス生成論理が前記選択された間接アドレスレジスタ内に格納されているアドレスポインタを、前記選択されたスキームレジスタからの前記ステップレジスタセレクタによって選択された、選択されたステップレジスタ内に格納されている事後修正情報を用いて、修正するように構成されたことを特徴とする請求項２記載の回路装置。
【請求項４】
各スキームレジスタがさらにアクセスタイプ情報を格納するように構成され、前記アドレス生成論理がさらに、前記生成されたメモリアドレスを、前記選択されたスキームレジスタ内のアクセスタイプ情報によって指定されるタイプのメモリアクセスを遂行する際に用いるように構成されることを特徴とする請求項１記載の回路装置。
【請求項５】
前記選択されたスキームレジスタ内の前記アクセスタイプ情報が、読出しアクセスタイプと書込みアクセスタイプを含む複数のアクセスタイプの一つを選択することを特徴とする請求項４記載の回路装置。
【請求項６】
さらに：
（ａ）各々がメモリへのアドレスポインタを格納するように構成された第二の複数の間接アドレスレジスタと、
（ｂ）各々が前記第二の複数の間接アドレスレジスタからある一つの選択された間接アドレスレジスタを選択する間接アドレスレジスタセレクタを格納するように構成された第二の複数のスキームレジスタとを備え、
前記命令がさらに前記第二の複数のスキームレジスタからある一つの選択された第二のスキームレジスタを選択し、前記アドレス生成論理がさらに、前記命令に応答して、第二のメモリアドレスを生成し、これを前記第二の選択されたスキームレジスタ内に格納されている間接アドレスレジスタセレクタによって前記第二の複数の間接アドレスレジスタから選択された、選択された間接アドレスレジスタ内に格納されている第二のアドレスポインタからメモリにアクセスする際に用いるするように構成されることを特徴とする請求項１記載の回路装置。
【請求項７】
さらに乗算累積（ＭＡＣ）ユニットを備え、前記命令がＭＡＣ命令から成ることを特徴とする請求項６記載の回路装置。
【請求項８】
さらに：
（ａ）第二のＭＡＣユニットと、
（ｂ）各々が前記メモリへのアドレスポインタを格納するように構成された第三および第四の複数の間接アドレスレジスタと、
（ｃ）各々が前記第三の複数の間接アドレスレジスタからある一つの選択されたアドレスレジスタを選択する間接アドレスレジスタセレクタを格納するように構成された第三の複数のスキームレジスタと、
（ｄ）各々が前記第四の複数の間接アドレスレジスタからある一つの選択された間接アドレスレジスタを選択する間接アドレスレジスタセレクタを格納するように構成された第四の複数のスキームレジスタとを備え、
前記命令が加えて第三と第四の選択されたスキームレジスタを選択するジュアルＭＡＣ命令から成り、前記アドレス生成論理がさらに、前記命令に応答して、前記第三と第四の選択されたスキームレジスタを用いて第三と第四のメモリアドレスを生成するように構成されることを特徴とする請求項７記載の回路装置。
【請求項９】
請求項１記載の回路装置を含むことを特徴とする集積回路デバイス。
【請求項１０】
請求項１の回路装置を定義するハードウエア定義プログラム、およびこのプログラムを運ぶ信号搬送媒体から成るプログラム製品。
【請求項１１】
メモリにアクセスする方法であって、この方法が：
（ａ）命令を受信し、複数のスキームレジスタからある一つの選択されたスキームレジスタを選択するステップと、
（ｂ）前記選択されたスキームレジスタにアクセスすることで、間接アドレスレジスタセレクタを得、これを用いて複数の間接アドレスレジスタからある一つの選択された間接アドレスレジスタを選択するステップと、
（ｃ）前記選択された間接アドレスレジスタにアクセスすることで、この中に格納されているアドレスポインタを得るステップと、
（ｄ）前記アドレスポインタを用いてメモリにアクセスするステップと、
を含むことを特徴とする方法。
【請求項１２】
各スキームレジスタがさらに事後修正情報を格納するように構成され、この方法がさらに、前記選択された間接アドレスレジスタ内に格納されているアドレスポインタを、前記選択されたスキームレジスタ内に格納されている事後修正情報を用いて修正するステップを含むことを特徴とする請求項１１記載の方法。
【請求項１３】
前記選択されたスキームレジスタ内の前記事後修正情報が、各々が事後修正情報を格納する複数のステップレジスタからある一つの選択されたステップレジスタを選択するステップレジスタセレクタを含み、前記アドレスポインタを修正するステップが、前記選択されたステップレジスタにアクセスするステップを含むことを特徴とする請求項１２記載の方法。
【請求項１４】
各スキームレジスタがさらにアクセスタイプ情報を格納するように構成され、前記メモリにアクセスするステップにおいて、前記選択されたスキームレジスタ内のアクセスタイプ情報によって指定されるタイプのメモリアクセスが遂行されることを特徴とする請求項１１記載の方法。
【請求項１５】
前記選択されたスキームレジスタ内の前記アクセスタイプ情報が、読出しアクセスタイプと書込みアクセスタイプを含む複数のアクセスタイプの一つを選択することを特徴とする請求項１４記載の方法。
【請求項１６】
前記命令がさらに第二の複数のスキームレジスタからある一つの第二の選択されたスキームレジスタを選択し、この方法がさらに：
（ａ）前記選択されたアクセススキームレジスタにアクセスすることで、間接アドレスレジスタセレクタを得、これを用いて第二の複数の間接アドレスレジスタからある一つの第二の選択された間接アドレスレジスタを選択するステップと、
（ｂ）前記第二の選択された間接アドレスレジスタにアクセスすることで、この中に格納されている第二のアドレスポインタを得るステップと、
（ｃ）前記第二のアドレスポインタを用いて前記メモリにアクセスするステップと、
を含むことを特徴とする請求項１１記載の方法。
【請求項１７】
前記命令が乗算累積（ＭＡＣ）命令から成ることを特徴とする請求項１６記載の方法。
【請求項１８】
前記命令が２つのＭＡＣ動作を同時に遂行するように構成されたジュアルＭＡＣ命令から成り、このジュアルＭＡＣ命令がさらに、それぞれ、第三および第四の複数のスキームレジスタから、第三と第四の選択されたスキームレジスタを選択し、この方法がさらに：
（ａ）前記第三の選択されたスキームレジスタにアクセスすることで間接アドレスレジスタセレクタを得、これを用いて第三の複数の間接アドレスレジスタからある一つの第三の選択された間接アドレスレジスタを選択するステップと、
（ｂ）前記第四の選択されたスキームレジスタにアクセスすることで間接アドレスレジスタセレクタを得、これを用いて第四の複数の間接アドレスレジスタからある一つの第四の選択された間接アドレスレジスタを選択するステップと、
（ｃ）前記第三の選択された間接アドレスレジスタにアクセスすることで、その中に格納されている第三のアドレスポインタを得るステップと、
（ｄ）前記第四の選択された間接アドレスレジスタにアクセスすることで、その中に格納されている第四のアドレスポインタを得るステップと、
（ｅ）前記第三のアドレスポインタを用いて前記メモリにアクセスするステップと、
（ｆ）前記第四のアドレスポインタを用いて前記メモリにアクセスするステップと、
を含むことを特徴とする請求項１７記載の方法。
【請求項１９】
回路装置であって、この回路装置が：
（ａ）ＸおよびＹなるメモリスペースを含むデータメモリと、
（ｂ）各々が前記Ｘメモリスペース内のメモリアドレスへのアドレスポインタを格納するように構成された第一の複数の間接アドレスレジスタと、
（ｃ）各々が前記Ｙメモリスペース内のメモリアドレスへのアドレスポインタを格納するように構成された第二の複数の間接アドレスレジスタと、
（ｄ）各々が前記第一の複数の間接アドレスレジスタからある一つの第一の選択された間接アドレスレジスタを選択する間接アドレスレジスタセレクタを格納するように構成された第一の複数のスキームレジスタと、
（ｅ）各々が前記第二の複数の間接アドレスレジスタからある一つの第二の選択された間接アドレスレジスタを選択する間接アドレスレジスタセレクタを格納するように構成された第二の複数のスキームレジスタと、
（ｆ）前記ＸおよびＹメモリスペースに結合された乗算累積（ＭＡＣ）ユニットと、
（ｇ）前記ＭＡＣユニットに結合され、前記第一の複数のスキームレジスタからある一つの第一の選択されたスキームレジスタを選択し、前記第二の複数のスキームレジスタからある一つの第二の選択されたスキームレジスタを選択する乗算累積（ＭＡＣ）命令を受信するように構成された命令デコーダと、
（ｈ）前記命令デコーダに結合され、それぞれ、前記ＸおよびＹメモリスペースにアクセスするために用いる第一および第二のメモリアドレスを生成するように構成されたアドレス生成ユニットと、
を備え、このアドレス生成ユニットが、第一の選択されたスキームレジスタ内に格納されている間接アドレスレジスタセレクタによって選択された、選択された第一の間接アドレスレジスタ内に格納されているアドレスポインタから前記第一のメモリアドレスを生成するように構成され、さらに、このアドレス生成ユニットが、第二の選択されたスキームレジスタ内に格納されている間接アドレスレジスタセレクタによって選択された、選択された第二の間接アドレスレジスタ内に格納されているアドレスポインタから前記第二のメモリアドレスを生成するように構成されることを特徴とする回路装置。
【請求項２０】
さらに：
（ａ）各々が前記Ｘメモリスペース内のメモリアドレスへのアドレスポインタを格納するように構成された第三の複数の間接アドレスレジスタと、
（ｂ）各々が前記Ｙメモリスペース内のメモリアドレスへのアドレスポインタを格納するように構成された第四の複数の間接アドレスレジスタと、
（ｃ）各々が前記第三の複数の間接アドレスレジスタからある一つの第三の選択された間接アドレスレジスタを選択する間接アドレスレジスタセレクタを格納するように構成された第三の複数のスキームレジスタと、
（ｄ）各々が前記第四の複数の間接アドレスレジスタからある一つの第四の選択された間接アドレスレジスタを選択する間接アドレスレジスタセレクタを格納するように構成された第四の複数のスキームレジスタと、
（ｅ）前記ＸおよびＹメモリスペースに結合された第二の乗算累積（ＭＡＣ）ユニットと、
を備え、
前記命令デコーダが前記第二のＭＡＣユニットに結合され、前記ＭＡＣ命令がさらに前記第三の複数のスキームレジスタからある一つの第三の選択されたスキームレジスタを選択し、前記第四の複数のスキームレジスタからある一つの第四の選択されたスキームレジスタを選択し、前記アドレス生成ユニットがさらに、それぞれＸおよびＹメモリスペースにアクセスするために用いる第三および第四のメモリアドレスを生成するように構成され、前記アドレス生成ユニットがさらに、前記第三の選択されたスキームレジスタ内に格納されている間接アドレスレジスタセレクタによって選択された、第三の選択された間接アドレスレジスタ内に格納されているアドレスポインタから前記第三のメモリアドレスを生成するように構成され、前記アドレス生成ユニットがさらに、前記第四の選択されたスキームレジスタ内に格納されている間接アドレスレジスタセレクタによって選択された、前記第四の選択された間接アドレスレジスタ内に格納されているアドレスポインタから前記第四のメモリアドレスを生成するように構成されることを特徴とする請求項１９記載の回路装置。
【発明の詳細な説明】
【０００１】
発明の分野
本発明は一般的には電子回路装置およびこれを組み込む集積回路、より詳細には、メモリスペースにアクセスする際のアドレスを生成するために用いるアドレス生成論理に関する。
【０００２】
発明の背景
半導体製造技術の進歩とともに、集積回路の設計者は、単一の集積回路デバイスあるいはチップ内にますます多くの機能を集積化することが可能となっている。このため、かつては回路ボードあるいはモジュール上で互いに電気的に結合された複数の集積回路を必要とした電子設計も、今では単一の集積回路内に集積化できるようになっており、性能は向上し、コストは削減する結果となっている。
【０００３】
離散回路から集積回路へと移行した一つの機能にデジタル信号処理がある。これは、概略的には、デジタル的に表現された信号への数学的演算の適用ということができる。デジタル信号処理は、多くのアプリケーション、例えば、オーディオおよび／あるいはビデオ信号に対するフィルタの実現、無線あるいは他のセルラ網内の通信信号からの情報の復号、その他において利用されている。
【０００４】
半導体製造技術は、常に進歩しており、今日では、デジタル信号処理を遂行する論理回路は、専用のＤＳＰアルゴリズムを実現する、ここではＤＳＰプログラムと呼ばれるソフトウエアプログラムを実行する専用のデジタル信号プロセッサによって遂行されるようになっている。さらに、これらデジタル信号プロセッサは、追加の論理回路とともに、集積回路あるいはチップ内に埋め込まれ、さらなる性能の改善およびコストの削減が図られている。
【０００５】
多くのデジタル信号処理タスクは、多量のデジタルデータに関して、反復的な、ただし、比較的単純な数学的演算を迅速に遂行することを要求されるという特徴を持つ。例えば、乗算累積（Ｍｕｌｔｉｐｌｙ−Ａｃｃｕｍｕｌａｔｅ、ＭＡＣ）演算は、２つのオペランド（ｏｐｅｒａｎｄｓ）の乗算と、この結果の、ランしているアキュムレータ（ｒｕｎｎｉｎｇ ａｃｃｕｍｕｌａｔｏｒ）への加算を遂行し、しばしば、単一のクロックサイクルにて遂行されるべきハードウエア論理として実現される。さらに、複数のＭＡＣユニッ トが、ある任意の与えられたクロックサイクルにおいて複数のＭＡＣ演算を遂行できるように設けられることもある。ただし、幾つかの複雑なフィルタリング動作においては、ある一つの時点においてたった一つの出力値を計算するために、数百あるいは数千のＭＡＣ動作を遂行することを要求されることもある。
【０００６】
多くのＤＳＰ動作は反復的な性格を持つため、あるデジタル信号プロセッサによって、メモリから入力データを取り出す、並びに処理の後に、出力データをメモリ内に書き戻すことができる速度（しばしばメモリ帯域幅と呼ばれる）は、ＤＳＰシステムの全体としての性能に非常に大きな影響を与える。
【０００７】
メモリ帯域幅を増加するための一つのやり方においては、複数の通信路あるいはバスが、デジタル信号プロセッサと異なるタイプのデータをやりとりするために用いられる。一例として、幾つかの従来のＤＳＰ設計においては、ＤＳＰプログラムデータと信号データは、別個のメモリスペースに分離され、ＤＳＰプログラム命令 と信号データを格納するために、別々にアクセス可能なプログラムメモリとデータメモリが用いられる。さらに、デジタル信号データは、任意の時点において与えられたメモリとの間で複数のデータポイントをやりとりできるように、複数のメモリスペース（しばしば「Ｙ」および「Ｙ」メモリスペースと呼ばれる）内に分割して格納される。さらに、ある与えられたメモリ内で複数のアクセス動作を並列に行なえるように、メモリへの複数のポートあるいはアクセス路が設けられる。
【０００８】
一例として、幾つかの従来のＤＳＰ設計においては、ジュアルＭＡＣユニットが組み込まれ、このため、最大の効率を維持するためには、ある一つのデータメモリスペースへの（「Ｘ」と「Ｙ」メモリスペースの各々に２つの）４つの経路が要求される。このため、サイクル毎に４つのメモリ位置にアクセスするため、各アクセスサイクルにおいて、４つのアドレスを生成し、メモリに出力することが必要となる。
【０００９】
４つのアドレスを生成することは、通常は、回路の観点からは大きな問題とはならないが、ただし、あるプロセッサ命令、例えば、ＤＳＰ命令内に４つのアドレスを符号化には、かなり大きな問題が伴う。ＤＳＰ命令は、多くのプロセッサ命令と同様に、典型的には、命令のタイプ、およびしばしばその命令によって使用されるべきアドレシングモードを指定するオプコードフィールド（ｏｐｃｏｄｅ ｆｉｅｌｄ）、並びに、処理されるべきデータあるいはそれらデータが格納されている場所を指定する一つあるいは複数のオペランドフィールド（ｏｐｅｒａｎｄ ｆｉｅｌｄｓ）を含む。ＤＳＰ命令を符号化するために要求されるビット数は、ある命令セット内に利用できる命令の数、これら命令を処理するために要求される相互接続、論理ユニットおよびレジスタの（ビット）幅、およびプログラムメモリスペースのサイズに影響を持つために、任意の与えられたＤＳＰ命令内のアドレスを符号化するために要求されるビット数を最小化することが強く要請される。
【００１０】
デュアルＭＡＣユニットを組み込む多くの従来のＤＳＰ設計においては、例えば、３２−ビット命令が用いられ、デュアルＭＡＣ動作に対しては、ＭＡＣ命令の１４ビットがオプコードに割り当てられ（各ＭＡＣユニットに対して７ビット）、全部で１８ビット（各ＭＡＣユニットに対する９ビット）が、４つのオペランドの位置と、結果を格納する場所を指定するために残される。
【００１１】
典型的には、アドレスを符号化するために要求されるビット数を最小化するためには、間接アドレシング（ｉｎｄｉｒｅｃｔ ａｄｄｒｅｓｓｉｎｇ）という形式が用いられるが、この形式においては、バンク（一群の）別個の間接アドレスレジスタ内に、所望のオペランドのアドレスがプレロードされ、ＭＡＣ命令は、このバンク（一群）の中から、そこから所望のアドレスがロードされるべき一つあるいは複数の間接アドレスレジスタの位置を指定する。さらに、しばしば、アドレスの事後修正（ａｄｄｒｅｓｓ ｐｏｓｔ−ｍｏｄｉｆｉｃａｔｉｏｎ）をサポートすることも要求されるが、このアドレス事後修正においては、間接アドレスレジスタ内に格納されているアドレスが、それらアドレスがレジスタから出力された後に、自動的に修正される（例えば、一定の値だけ増分あるいは減分される）。
【００１２】
間接アドレシングの使用にもかかわらず、一部には事後修正などの強化機能（ｅｎｈａｎｃｅｍｅｎｔｓ）をサポートする必要性のために、ある与えられたＤＳＰ命令内に４つの独立なアドレスを符号化することはしばしば不可能となる。このため、しばしば、アドレスコーレレーション（ａｄｄｒｅｓｓ ｃｏｒｒｅｌａｔｉｏｎ）として知られる技法が用いられるが、この技法においては、たった２つのアドレスのみが独立に符号化および生成され、残りの２つのアドレスは、符号化されたアドレスを修正することで（例えば、符号化されたアドレスに一定のオフセットを加えることで）生成される。
【００１３】
一例として、上述の従来のＤＳＰ設計の一つにおいては、以下のようなシンタックスを持つ間接アドレスＭＡＣ命令が使用される：
ＭＡＣ（ｒｉ）＋ｐｏｓｔｍｏｄ，（ｒｊ）＋ｐｏｓｔｍｏｄ，ａｍ｜｜ＭＡＣ（ｒｉ〜），（ｒｊ〜），ａｎ
ここで、（ｒｉ）および（ｒｊ）は選択された間接アドレスレジスタｒｉおよびｒｊを介して間接アドレシングを指定し、ｐｏｓｔｍｏｄは各格納されているアドレスに適用する事後修正を指定し、ａｍおよびａｎは結果を加えるアキュムレータを指定し、（ｒｉ〜）およびと（ｒｊ〜）はコーレレーテッドアドレス（ｃｏｒｒｅｌａｔｅｄ ａｄｄｒｅｓｓｅｓ）を指定する。
【００１４】
上述のＭＡＣ命令は、以下のテーブルＩに示すように３２−ビット命令として符号化される：
【表１】
2004501470.tif 000003
【００１５】
他のタイプの命令の場合も、ある与えられたサイクルにおいて４つのアドレスを生成するために、上述の技法を用いることもできる。ただし、このような技法の使用には幾つかの短所がある。
【００１６】
第一に、コーレレーテッドアドレシング（ｃｏｒｒｅｌａｔｅｄ ａｄｄｒｅｓｓｉｎｇ）技法では、コーレレーテッドアドレス（ｃｏｒｒｅｌａｔｅｄ ａｄｄｒｅｓｓｅｓ）を介してアドレスされるデータが、符号化されたアドレスを介してアドレスされるデータから適当なオフセットだけ離れて配置されることを確保するためにデータを注意深く編成する必要があり、このため、データメモリスペース内のデータ編成が著しく制限される。さらに、しばしば、非効率なデータ転送のために失われるプロセッササイクルの数を最小化するために、プログラムコードの手動による最適化（ｈａｎｄ ｏｐｔｉｍｉｚａｔｉｏｎ）が必要となる。
【００１７】
第二に、上述の技法は、典型的には、独立なおよびコーレレーテッドアドレスからの全読出し、あるいはこれへの全書込みのみをサポートし、典型的には、標準でない組合せ、例えば、３個の読出しと１個の書込み、３個の書込みと１個の読出し等はサポートされない。このため、このような組合せが必要な場合、典型的には、複数の命令を用いて、これら組合せを、並列でなく、直列に処理することが必要となる。追加の命令が必要となるために、処理が遅くなることに加えて、しばしば、貴重なメモリ帯域幅が十分に活用されず、プロセッサのスループットが、本来の最大動作効率以下に低減される結果となる。
【００１８】
従って、当分野においては、複数のメモリアドレスを生成およびこれにアクセスするためにあるプロセッサ命令内に要求されるビットの数を最小化するための方法に対する大きな必要性が引き続いて存在する。
【００１９】
発明の要約
本発明は、従来の技術と関連するこれらおよびその他の問題を解決するために、格納されているメモリアドレスをそこから取り出すべき一つを複数の間接アドレスレジスタの中から選択するために「スキーム（ｓｃｈｅｍｅ ｒｅｇｉｓｔｅｒｓ）」を利用する回路装置（ｃｉｒｃｕｉｔ ａｒｒａｎｇｅｍｅｎｔ）および方法を開示する。この方法においては、命令内に、その命令の処理の際に使用されるべきアドレスがその内部に格納されている特定の間接アドレスレジスタの位置を識別する代わりに、命令は、スキームレジスタの位置を指定し、これによって、複数の利用可能な間接アドレスレジスタの内のどれが、格納されているアドレスを取り出すためにアクセスされるべきかを指定する。スキームレジスタによって提供される第二のレベルの間接性のために大きな柔軟性が得られ、ある命令内の最小のビット数にて複数の独立なアドレスを生成することが可能となる。
【００２０】
本発明はデジタル信号処理アプリケーションに制限されるものではないが、本発明は、例えば、デジタル信号アプリケーションにおいて、ある与えられたＤＳＰ命令内に、複数の独立なアドレスを効率的に符号化する能力を提供する。一例として、デュアルＭＡＣアプリケーションに対しては、４つの独立なアドレスが生成されるが、これら４つのアドレスは別個の間接アドレスレジスタ内に格納され、これら４つの異なる間接アドレスレジスタが４つの異なるスキームレジスタ内の識別され、これら４つのスキームレジスタを識別することで、これら４つの独立なアドレスが取り出せるようにされる。
【００２１】
加えて、本発明のある実施例によるスキームレジスタは、アドレスを生成（格納）するために用いられる間接アドレスレジスタの位置あるいは識別の他はなにも格納しないが、幾つかの実施例においては、機能を強化し、プロセッサ命令の効率をさらに高めるために、スキームレジスタ内に追加の情報が格納される。例えば、一つの実施例においては、スキームレジスタ内に事後修正情報を格納することで、独立に生成された各アドレスに関して独立な事後修正動作を遂行できるようにされる。さらに、もう一つの実施例においては、スキームレジスタ内に、例えば、ある動作が書込み動作であるか読込み動作であるかを指定するアクセスタイプ情報を格納することで、個々の独立に生成されたアドレスとの関連で別個のタイプのアクセスを遂行できるようにされる。
【００２２】
こうして、本発明の一態様においては、各々がアドレスポインタを格納するように構成された複数の間接アドレスレジスタ、およびこれら複数の間接アドレスレジスタからある一つの選択された間接アドレスレジスタを選択する間接アドレスレジスタセレクタを格納するように構成された複数のスキームレジスタを備える回路装置が提供される。この回路装置はさらに、これら複数のスキームレジスタからある一つの選択されたスキームレジスタを選択する命令に応答してメモリアドレスを生成し、これを選択されたスキームレジスタ内に格納されている間接アドレスレジスタセレクタによって選択された、選択された間接アドレスレジスタ内に格納されているアドレスポインタからメモリにアクセスする際に用いるように構成されたアドレス生成論理を備える。
【００２３】
本発明のもう一態様によると、メモリにアクセスするための方法が提供される。この方法は、命令を受信し、これを用いて複数のスキームレジスタからある一つの選択されたスキームレジスタを選択するステップ、選択されたスキームレジスタにアクセスすることで間接アドレスレジスタセレクタを得、これを用いて複数の間接アドレスレジスタからある一つの選択された間接アドレスレジスタを選択するステップ、選択された間接アドレスレジスタにアクセスすることでこの中に格納されているアドレスポインタを得るステップ、およびこのアドレスポインタを用いてメモリにアクセスするステップを含む。
【００２４】
本発明を特徴付けるこれらおよびその他の長所および特徴が、この明細書に添付され、この明細書の部分を構成するクレーム内に述べられる。ただし、本発明、および本発明を用いて達成される長所および目的のより一層の理解するためには、以下では、本発明の様々な実施例を、図面を参照しながら説明する。
【００２５】
発明の実施の形態
ここで説明される実施例は、プロセッサ命令を用いて複数の独立なアドレスを生成するために要求されるビット数を最小にするために、スキームレジスタを利用する。本発明によるスキームレジスタは、一つあるいは複数のアドレスを生成する際にアドレス生成器によって使用されるアドレシング「スキーム（ｓｃｈｅｍｅ）」あるいは規則を格納するために利用される。スキームレジスタ内には、典型的には、セレクタが含まれ、これセレクタによって、複数の利用可能な間接レジスタの内の、そこからアドレス（これは、その後、このアドレスにてメモリにアクセスする前に修正されることも、されないこともある）を生成する際に用いる間接アドレスポイントが取り出されるべき一つの間接アドレスレジスタを識別する。加えて、スキームレジスタは、オプションとして、アドレシングスキームに関する追加の情報を含めることもできる。これには、例えば、（例えば、ステップ情報あるいはステップ情報がその中に格納されるステップレジスタを識別する、および／あるいはモジュロ情報あるいはその中にモジュロ情報が格納されるモジュロレジスタを識別する）事後修正情報、および／あるいは（例えば、読出し、書込み、その他可能な他のアクセスタイプを識別する）アクセスタイプ情報が含まれる。スキームレジスタ内には、本発明から逸脱することなく、アドレシングスキームと関連する他の情報を格納することもできる。
【００２６】
以下の説明は、ＤＳＰ環境内で並列メモリアクセスを遂行するために用いるための複数の独立なアドレスを生成する目的で、命令内に複数のアドレスを符号化する、本発明の一つの特定のアプリケーションに焦点が置かれる。より詳細には、以下の説明は、ＤＳＰプロセッサ内のＸおよびＹデータメモリへの４つの並列アクセスを遂行する際に用いるための４つの独立なアドレスの生成に焦点が置かれる。ただし、本発明は、この特定のアプリケーションに制限されるものではなく、ＤＳＰ環境と非ＤＳＰ環境の両方を含む、他の環境（例えば、古典的なマイクロプロセシング環境）においては、ここに説明の本発明によるユニークなアドレシングスキームを利用できるものである。
【００２７】
図面の説明に戻り、類似の符号はこれら複数の図に渡って類似のパーツを示す。図１は本発明による回路装置１０を示す。説明の実施例においては、回路装置１０は単一の集積回路デバイスあるいはチップ上に実装されるが、ただし、別のやり方として、回路装置１０内の様々な要素は、複数の別個のチップ上に実装することもできる。回路装置１０は、デジタル信号プロセッサ（ＤＳＰ）１２を備え、これは、データバスインタフェース１６を介してデータメモリ１４とインタフェースする。データメモリ１４は、図１に示すように、一つあるいは複数のデータスペース、例えば、ＸおよびＹデータスペース１８、２０に分割され、後により明らかとなるように、各データスペース１８、２０は、２つの別個のメモリ路あるいはポートを持ち、これによって、各データスペース内の２つのメモリ位置（典型的には、Ｘデータスペースに対するＸ１およびＸ２として示される位置およびＹデータスペースに対するＹ１およびＹ２として示される位置）に並列にアクセスできるようにされる。
【００２８】
ＤＳＰ１２は、追加のメモリデバイスへのインタフェースも備える。プログラムコードは、例えば、インタフェース２４を通じてＤＳＰ１２に結合されたプログラムメモリ２２に格納される。ＤＳＰ１２への外部からの接続性はインタフェース２８を介してＤＳＰ１２にインタフェースされた外部デバイスインタフェース２６によって提供される。外部デバイスインタフェースは、一つあるいは複数の外部デバイス３０へのインタフェースを提供する。外部デバイスは同一の集積回路上に配置することも、この回路の外側に配置し、この間を電気的に結ぶこともできる。このやり方にてアクセスされるタイプの外部デバイスの例としては、ＤＳＰ周波数より低い周波数にて動作するアナログ／デジタルあるいはデジタル／アナログ変換器、デバグポート、チップの初期化段階において読み書きされるチップ構成レジスタ、ホストコンピュータへの（シリアルあるいはパラレル）通信ポート、あるいは高い周波数を必要としない任意の他のハードウエア資源が含まれる。
【００２９】
各インタフェース１６、２４および２８は、典型的には、各々のバスに結合するための終端ポイント、並びに適当なバスとの必要なインタフェースを実現するための適当なバッファおよび制御論理を含む。
【００３０】
回路装置１０は、単に、本発明によるスキームレジスタを利用するための多くの可能な環境の一つに過ぎず、従って、本発明はここで説明される特定の環境に制限されるものではないことに注意する。単に一例として、本発明は、不揮発性および揮発性ソリッドステートメモリデバイスにて実現されるメモリ、大容量記憶デバイスにて実現されるメモリ、回路装置１０と同一の集積回路デバイス上に組み込まれたメモリあるいは外部メモリを含む、実質的にあらゆるタイプのメモリにアクセスするために用いる、メモリアドレスの生成に用いることができる。さらに、複数のメモリアドレスは、同一のメモリスペースあるいは分割内で用いるために生成することも、あるいは、異なるメモリスペースあるいは分割内で用いるために生成することもできる。さらに、メモリは任意の数の物理デバイスから形成することも、あるいは、マルチレベルメモリ階層に構成された複数のメモリレベルの任意に組合せから形成することもできる。当業者においては、この開示から、本発明との関連で用いるのに適するメモリアクセスの他の形態も明らかになるものと思われる。
【００３１】
さらに、回路装置１０は、典型的には、一つあるいは複数の集積回路デバイスあるいはチップ上に実装され、これら集積回路デバイスは、典型的には、一つあるいは複数のコンピュータデータファイルを用いて設計および製造されることに注意する。これらコンピュータデータファイルは、様々なレベルの詳細さにて、これらデバイス上の回路装置の機能および／あるいはレイアウトを定義し、ここではハードウエア定義プログラム（ｈａｒｄｗａｒｅ ｄｅｆｉｎｉｔｉｏｎ ｐｒｏｇｒａｍｓ）と呼ばれる。これらプログラムは、典型的には、設計ツールを用いて生成され、その後、シミュレーションのために、および／あるいは製造の際に、半導体ウェーハに塗布される回路装置を定義するレイアウトマスクを生成するために用いられる。これらプログラムは、典型的には、ＶＨＤＬ、Ｖｅｒｉｌｏｇ、ＥＤＩＦなどのハードウエア定義言語（ＨＤＬ）を用いて所定のフォーマットにて供給される。こうして、本発明は、ここでは、完全に機能する集積回路デバイスとして実現された回路装置、およびこのようなデバイスを利用するデータ処理システムの文脈で説明されるが、当業者においては理解できるように、本発明による回路装置は、プログラム製品（ｐｒｏｇｒａｍ ｐｒｏｄｕｃｔｓ）として様々な形態にて配布することもでき、本発明は、この配布を実際に遂行するために具体的にどのようなタイプの信号搬送媒体（ｓｉｇｎａｌ ｂｅａｒｉｎｇ ｍｅｄｉａ）が用いられるかに関係なく、同様に、これらプログラム製品にも適用するものである。信号搬送媒体の例には、これに限定されるものではないが、記憶可能なタイプの媒体（ｒｅｃｏｒｄａｂｌｅ ｔｙｐｅ ｍｅｄｉａ）、例えば、揮発性および不揮発性メモリデバイス、フロッピーディスク、ハードディスクドライブ、ＣＤ−ＲＯＭ、ＤＶＤ（その他）、および伝送タイプの媒体（ｔｒａｎｓｍｉｓｓｉｏｎ ｔｙｐｅ ｍｅｄｉａ）、例えば、デジタルおよびアナログ通信リンクが含まれる。
【００３２】
図２は、回路装置１０内でのアドレス生成に関与する主要なコンポーネントをより詳細に示す。より具体的には、図示するように、ＤＳＰ１２は、プログラムメ モリ２２から命令を受け取るように構成された命令デコーダ３４を備える制御ユニット３２を含む。デコーダ３４は、デコードされた命令に基づいて、デュアルＭｕｌｔｉｐｌｙ−Ａｃｃｕｍｕｌａｔｅ（ＭＡＣ）ユニット３８を含む計算ユニットとレジスタの複合体３６を操作するための制御信号を生成する。これら計算ユニットおよびレジスタは、複数のメモリバスＸ１、Ｘ２、Ｙ１およびＹ２を通じて、Ｘ、Ｙメモリスペース１８、２０に結合される。これら各メモリバスのデータ線は、ブロック３６とＸ、Ｙメモリスペース１８、２０の各々との間で、典型的には双方向線を用いて結合されるが、、代替として対の単方向線を用いることもできる。各メモリバスに対するアドレス線はアドレス生成ユニット４０によって駆動されるが、これは制御ユニット３２の制御下に置かれる。４つの独立なアドレスを生成できるようにするために、アドレス生成ユニット４０内には、複数のデータアドレス生成器（ＤＡＧ）４２が設けられる。命令デコーダ３４からの適当な制御信号に応答して、一つあるいは複数のＤＡＧ４２が、Ｘ１、Ｘ２、Ｙ１および／あるいはＹ２メモリバス上にアドレスを出力するように制御される。
【００３３】
アドレス生成ユニット４０は、典型的には、本発明によるスキームレジスタを利用する間接アドレシングモード（ｉｎｄｉｒｅｃｔ ａｄｄｒｅｓｓｉｎｇ ｍｏｄｅ）の形態も含む複数のアドレシングモードをサポートする。加えて、アドレス生成ユニット４０は、典型的には、複数の追加の従来のアドレシングモード、例えば、直接アドレシング、（スキームレジスタは用いない）間接アドレシング、即座アドレシング等もサポートする。さらに、アドレス生成ユニット４０は、典型的には、事後修正（ｐｏｓｔ−ｍｏｄｉｆｉｃａｔｉｏｎ）、ビット反転（ｂｉｔ ｒｅｖｅｒｓｅ）およびモジュロ機能（ｍｏｄｕｌｕｓ ｆｕｎｃｔｉｏｎｓ）などの機能を含む、上述のアドレシングモードに対する追加の強化機能（ｅｎｈａｎｃｅｍｅｎｔｓ）もサポートするように構成される。さらに、アドレス生成ユニット４０は、例えば、指標付アドレシングモード（ｉｎｄｅｘｅｄ ａｄｄｒｅｓｓｉｎｇ ｍｏｄｅ）、スタックアドレシングモード（ｓｔａｃｋ ａｄｄｒｅｓｓｉｎｇ ｍｏｄｅ）などを含む、他のアドレス生成機能もサポートする。ただし、これら従来のアドレシングモードおよび強化機能をサポートする目的でのアドレス生成ユニット（並びにアドレスの生成と関連する他の論理回路、例えば、命令デコーダ）の構成は、当分野において周知であるために、回路装置１０内へのこのような従来のアドレシングモードおよび強化機能の実装に関する詳細はここでは割愛する。一例として、このようなアドレシングモードおよび機能は、ＤＳＰアーキテクチャ、例えば、ＤＳＰ Ｇｒｏｕｐ，Ｉｎｃ．から市販されるＰａｌｍＤＳＰｃｏｒｅアーキテクチャにて実装されるが、この使用および構成については当分野において周知である。
【００３４】
図３は、ＤＳＰ１２によってサポートされる様々なアドレシングモードを実現するために、アドレス生成ユニット４０内に実装される主要なレジスタを示す。より具体的には、各ＤＡＧ４２は、セットの間接アドレスレジスタ４４、セットのステップレジスタ４６、セットのモジュロレジスタ４８およびセットのスキームレジスタ５０を備える。加えて、アドレス生成ユニット４０内には、ミニ／マックスレジスタ（ＭＩＸＰ）レジスタ５２も設けられ、ＤＳＰによって実行される新たな最小あるいは最大命令のアドレスを示すために用いられる。ミニ／マックスレジスタ５２の使用および構成は、当分野において周知であり、ユニット４０内へのこのような機能の実装についてはここでは詳細には説明しない。
【００３５】
説明の実施例においては、各ＤＡＧ４２は、それぞれ、４つの間接アドレスレジスタ４４（Ｒ０．．３）、ステップレジスタ４６（Ｓ０．．３）、モジュロレジスタ４８（Ｍ０．．３）およびスキームレジスタ５０（ＳＲ０．．３）を含み、こうして、これらタイプの全部で１６個のレジスタが設けられる。各ＤＡＧ４２は、バスのアドレス線上に、適当なアドレス、並びに、ＲＥＡＤあるいはＷＲＩＴＥ信号（例えば、Ｘ１メモリバスに対するＲＸ１およびＷＸ１）も出力するように構成される。
【００３６】
さらに、説明の実施例においては、各レジスタは、命令デコーダから一連の制御信号５４を通じて個別にアクセスすることができる。全部で６５個のレジスタを持つ場合は、アドレス生成ユニット内の各レジスタに個別にアドレスするためには、全部で７ビットが必要となる。従って、命令デコーダとアドレス生成ユニットの間のインタフェースを提供するためには、アドレス生成ユニットに、６５の利用可能なレジスタの一つを選択するために、７−ビット幅のＲＥＧＩＳＴＥＲ ＮＵＭＢＥＲ信号が提供される。あるレジスタの内容の読出しあるいはあるレジスタへの新たな内容の書込みは、ＲＥＡＤおよびＷＲＩＴＥ信号によって制御され、読出しアクセスに応答してのレジスタの内容はＯＵＴＰＵＴバスを通じて供給され、書込みアクセスの際のレジスタへの新たなデータはＩＮＰＵＴバスを通じて供給される。さらに、アドレス生成ユニット４０は、様々な制御信号を同期するため、および命令デコーダがアドレス生成ユニット４０を制御できるようにするための、ＣＬＯＣＫ信号を受信するように構成される。
【００３７】
各レジスタ４４、４６、４８および５０は、任意のビット数の異なる幅を持つことができる。典型的には、各間接アドレスレジスタ４４は、メモリスペースのサイズに等しい幅を持つ。一例として、説明の実施例は、６４ＫＢのメモリスペースを用い（ＸとＹメモリスペースの各々に３２ＫＢが割り当てられ、各メモリスペース内に設けられる２つの独立なバンクにてメモリスペース当たり２つの同時アクセスがサポートされる）、このため、各間接アドレスレジスタ４４は、典型的には、１６−ビット幅を持つ。
【００３８】
各モジュロレジスタ４８は、典型的には、モジュロアドレスとバッファサイズをここに格納することができるように、メモリスペースのサイズの２倍に等しい幅を持つ。例えば、６４Ｋのメモリスペースの場合は、各ステップレジスタ４６とスキームレジスタ５０も１６−ビット幅を持つが、ただし、多くの場合、１６−ビットの情報は必要とされず、このため、これら各レジスタは集積回路デバイス上のこの回路装置によって占められるスペースを節約するためにこれより小さなビット幅とされる。
【００３９】
レジスタ４４〜５０の任意の一つを初期化するためには、典型的には、あるレジスタは、ＲＥＧＩＳＴＥＲ ＮＵＭＢＥＲ制御線上でその一意なレジスタ番号を主張する（有効にする、ａｓｓｅｒｔする）ことで、その一意なレジスタ番号を介して選択される。選択されたレジスタ内に書込まれるデータは、ＩＮＰＵＴ線上に主張される。次に、ＷＲＩＴＥ信号が主張された（有効にされた）時点で、主張されたデータが次のクロックサイクルにおいて選択されたレジスタ内に書込まれる。レジスタの内容の読出しは、ＯＵＴＰＵＴ線とＲＥＡＤ信号を、ＲＥＧＩＳＴＥＲ ＮＵＭＢＥＲ線との関連で用いる相補的動作を介して遂行される。
【００４０】
図４はＤＡＧ４２の一つの一例としての実装をより詳細に示す。図示するように、図４のＤＡＧ４２は、命令デコーダから出力される命令信号（ＩＮＳＴ）と制御信号（ＣＴＲＬ）に応答する。これも図示されるように、ＤＡＧ４２はアドレス出力（ＡＤＤＲ）を出力する。ここで特に詳しく説明される追加の間接アドレシングモードとは特に関係のない追加の制御信号は簡潔さのために省かれている。
【００４１】
間接アドレスレジスタ４４は、間接アドレスポインタを格納するが、デコーダ６２を介して制御されるマルチプレクサ６０に結合される。ステップレジスタ４６も同様に、デコーダ６６を介して制御されるマルチプレクサ６４に結合される。こうして、選択された間接アドレスポインタの出力は、マルチプレクサ６０によって、デコーダ６２から加えられる制御信号に基づいて供給され、こうして、出力アドレスＡＤＤＲが生成される。事後修正（ｐｏｓｔ−ｍｏｄｉｆｉｃａｔｉｏｎ）の目的で、出力アドレスは、加算器（ｓｕｍｍｅｒ）６８にも供給される。加算器６８は、ステップレジスタ４６の一つの中に格納されていおり、マルチプレクサ６４とデコーダ６６を介して選択されたオフセットも受け取る。各ステップレジスタは、例えば、（事後修正なしを表す）ＮＵＬＬ値、正のオフセットあるいは負のオフセットを含む。加算器６８の出力は、出力アドレスと選択されたステップレジスタの内容の合計から成り、（現在の命令に対してこのモードが選択されている場合は）、オプションとしてのモジュロ計算（ｍｏｄｕｌｕｓ ｃａｌｃｕｌａｔｉｏｎ）を遂行するために、モジュロレジスタ論理（ｍｏｄｕｌｕｓ ｒｅｇｉｓｔｅｒ ｌｏｇｉｃ）７０にパスされる。各モジュロレジスタ４８は、モジュロレジスタ論理７０内に実装され、この論理は、アドレスが所定の最大アドレスを超えたときアドレスを「ロールオーバ（ｒｏｌｌ ｏｖｅｒ）」するために用いられる。
【００４２】
当分野において周知のモジュロアドレシング（ｍｏｄｕｌｕｓ ａｄｄｒｅｓｓｉｎｇ）は、通常は、メモリスペース内に巡回バッファを実現する。説明の実施例に対しては、周知の任意のモジュロアルゴリズム（ｍｏｄｕｌｕｓ ａｌｇｏｒｉｔｈｍｓ）を用いることができる。例えば、モジュロレジスタ内に、開始アドレスと、実現されるべき巡回バッファのサイズを表す長さの両方を格納することが必要となることがある。この場合、モジュロレジスタ論理は、加算器６８の内容を、開始アドレスと長さの合計と比較する。加算器６８の出力が、この合計より小さなときは、この出力はモジュロレジスタ論理７０から変更なしにパスされる。そうでない場合は、選択されたモジュロレジスタ内に指定される開始アドレスが、モジュロレジスタ論理７０の結果として出力される。代替として他のモジュロアドレシング方式を用いることも、別のやり方としてモジュロアドレシングは省くこともできる。さらに、様々な異なるモジュロアルゴリズムをアドレス発生ユニット内に実現することもできるが、これらは当業者においては周知であり、このためここではこれ以上の説明は割愛する。
【００４３】
モジュロレジスタ論理７０の出力は間接アドレスレジスタ４４に戻され、こうして、出力アドレスに対して加えられた修正が現在選択されている間接アドレスレジスタ内に保存され、格納されているアドレスポインタが事後修正される。
【００４４】
上述のように、各ＤＡＧ４２によって、２つの異なる間接アドレシングモードがサポートされる。第一の間接アドレシングモードは、スキームレジスタは用いず、命令内に符号化されている情報を用いて、間接アドレスレジスタと、オプションとして、ステップレジスタが選択される。第二のアドレシングモードにおいては、スキームレジスタ５０を用いて、各間接アドレスレジスタが選択され、選択された間接アドレスレジスタの内容に基づいてステップレジスタが選択される。この２つのモードのどちらを用いるかは、対のセレクタ７２、７４を介して制御され、これらは、デコーダ６２と６６を介して、間接アドレスレジスタとステップレジスタの選択を制御する。
【００４５】
セレクタ７２は、入力として命令デコーダからのＩＮＳＴ信号を受信するとともに、マルチプレクサ７６からデコーダ７８の制御下で追加の入力を受信する。マルチプレクサ７６は、スキームレジスタ５０の内容を受信し、これらレジスタの一つの内容をセレクタ７２に出力するように構成される。
【００４６】
どちらの間接アドレスモードが用いられるか（これは現在の命令内に符号化されている）によって、ＣＴＲＬ信号が選択的に有効（ａｓｓｅｒｔ）あるいは無効（ｄｅａｓｓｅｒｔ）にされ、これに基づいてセレクタ７２が制御され、セレクタ７２はこれに基づいて、命令デコーダからのＩＮＳＴ信号内に供給される命令復号情報か、スキームレジスタの出力のいずれかを間接アドレスレジスタの一つを選択するための制御信号として選択し、この制御信号に基づいて選択された間接アドレスレジスタが、ＤＡＧに対する出力アドレスを生成するために用いられる。このＣＴＲＬ信号は、さらに、セレクタ７４を制御するためにも用いられる。セレクタ７４は、これに基づいて、第一の間接アドレシングモードにおいて命令内に生成され、ＩＮＳＴ信号にて供給されるステップレジスタ選択情報か、スキームレジスタ内に格納されているステップレジスタ選択情報のいずれかをデコーダ６６に出力し、デコーダ６６は、この情報に基づいて適当なステップレジスタを選択する。
【００４７】
こうして、選択された間接アドレシングモードに依存して、選択されたスキームレジスタの内容か命令の内容のいずれかを用いて、間接アドレスレジスタとステップレジスタの各々が選択され、これらが、出力アドレスを生成するため、および出力アドレスを事後修正するために用いられる。
【００４８】
図５は、例えば、図４のデータアドレス生成器（ＤＡＧ）４２内のセットのスキームレジスタからの一つのスキームレジスタ５０に対する一例としてのフォーマットを示す。説明の実施例においては、スキームレジスタ５０は、５ビットという少ないビットを用いて実現されるか、あるいは追加のビットも用意されるが、ただし使用しない場合は無効（ｎｕｌｌ）にセットされる。２ビットは、一つの間接アドレスレジスタ（ｒｉ）を利用可能な４つの中から選択し、追加の２ビットは、４つのステップレジスタ（ｓｉ）の一つを選択する。第五のビットは、アクセスタイプ、ここでは、ＲＥＡＤあるいはＷＲＩＴＥ動作を選択するために用いられる。第二の間接アドレシングモードにおいては、アクセスタイプビットの内容が、ＲＥＡＤあるいはＷＲＩＴＥ信号のいずれかを選択的に適当なアドレスバス上に駆動（供給）するために用いられる。
【００４９】
本発明から逸脱することなく、各スキームレジスタ内に様々な代替フォーマットを用いることもできる。例えば、ある与えられたタイプに対して異なる数のレジスタが利用できる場合は、これらレジスタの任意の一つを選択するために、異なる数のビットを割り当てることもできる（例えば、８個の間接アドレスレジスタの中から１つを選択するために３ビットを用いることもできる）。さらに、ステップレジスタ選択フィールドは用いないことも、別個のステップレジスタを識別する代わりに、ステップ情報をスキームレジスタ内に直接格納することもできる。さらに、追加のアクセスタイプ情報を、例えば、異なる優先のアクセス等を選択するために格納することもでき、この場合は、アクセスタイプフィールドは追加のビットを含む。他の実施例として、アクセスタイプフィールドは用いないこともできる。別の実施例として、追加の情報、例えば、ビット反転情報、モジュロ情報（例えば、モジュロレジスタセレクタ、あるいはモジュロアドレスおよび／あるいはサイズ情報）等も各スキームレジスタ内に格納することもできる。
【００５０】
図１〜５に示す構成とすることで、間接アドレシングスキームは極めて効率的かつコンパクトとなり、命令内の最小のビットにて、４つの独立なアドレスを生成することが可能となる。一例として、図６はデュアルＭＡＣ命令を実現するのに適する一例としての命令シンタックス８２を示す。４つの独立なアドレスの生成を必要とする他の命令も、類似のフォーマットを用いることができる。
【００５１】
図６に示すように、４つのスキームレジスタの選択は８ビットのみで指定され、各メモリバスに対する２ビットにて各バスに対して割り当てられる４つの利用可能なスキームレジスタの中から１つが選択される。加えて、追加の２ビットにて、それぞれ、結果アキュムレータが指定される。これからわかるように、デュアルＭＡＣに対するオペランドあるいは類似の命令は１２ビットのみで指定され、３２−ビット命令内の２０個のフルビットがオプコードおよび他の必要な情報に対して残される。
【００５２】
当業者においては理解できるように、様々な代替の命令フォーマットを用いることも可能であり、従って、本発明はここに説明される特定のフォーマットに制限されるものではない。
【００５３】
ＤＳＰアルゴリズムの第二のアドレシングモードを利用するためには、典型的には、ＤＳＰプログラムを用いて、所望の機能を実現するために必要とされる適当な間接アドレスレジスタ、ステップレジスタ、およびスキームレジスタを初期化することが必要となる。この初期化は、図３との関連で上で説明したインタフェースを用いて遂行される。次に、スキームレジスタの間接アドレシングモードを用いてメモリアクセスを遂行することが必要とされる場合は、各メモリバスに対してスキームレジスタを選択を指定する命令が供給される。
【００５４】
スキームレジスタをここに説明のやり方にて用いることの一つの重要な長所は、信号処理の最も顕著な特性の一つである規則性（ｒｅｇｕｌａｒｉｔｙ）から得られる。より具体的には、メモリのデータの順序（ｄａｔａ ｏｒｄｅｒｉｎｇ）は、典型的には常に同一であり、多くの場合、このアドレシングモードにおいて要求される４つのアドレスは、性能要件が最大で、任意の損失サイクルが重大な影響を及ぼすループ（ｌｏｏｐ）にて必要とされる。さらに、信号処理ループ（ｓｉｇｎａｌ ｐｒｏｃｅｓｓｉｎｇ ｌｏｏｐ）においては、プロセッサは、典型的には、規則的なアドレス規則（ｒｅｇｕｌａｒ ａｄｄｒｅｓｓｉｎｇ ｌａｗ）にてデータ配列にアクセスする。スキームレジスタを用いた場合は、この規則をループの開始においてスキームレジスタ内にプログラムすることができ、このため、ループの実行の際は、各命令内にアクセスタイプおよび／あるいは事後修正情報などの情報を供給するためのプログラムコードは必要とされない。こうして、命令内にアクセスタイプおよび／あるいは事後修正情報などを供給する必要がなくなるため、命令をよりコンパクトにすること、並びにシステム資源の最大化が可能となる。
【００５５】
図７は、上述のスキームレジスタの間接アドレシングモードを利用する一例としてのメモリアクセスをより詳細に示す。「ＭＡＣ ＳＲ３，ＳＲ２，Ａ１｜｜ＭＡＣ ＳＲ２，ＳＲ１，Ａ３」なるフォーマットを持つ一例としての命令９０が示される。この命令の二進表現は、各ＭＡＣ命令に対するオプコード、並びに（各ＭＡＣに対して全部で４個のアキュムレータがサポートされると想定したとき）結果を受け取るためのＡ１およびＡ３アキュムレータの選択、第一のＭＡＣ命令に対するＳＲ３およびＳＲ２スキームレジスタの選択、および第二の動作に対するＳＲ２およびＳＲ１スキームレジスタの選択を含む。図７は、より具体的には、Ｘ１メモリバスに対するアドレスの生成を示し、この命令９０内には、スキームレジスタＳＲ３が指定されている。説明の目的に対しては、スキームレジスタＳＲ３は、この中に「ＲＥＡＤ」アクセスタイプを格納しており、ステップレジスタＳ１と、間接アドレスレジスタＲ２が選択されており、ステップレジスタＳ１内には、＋３なるステップ値が格納されており、間接アドレスレジスタＲ２内には、１６進アドレス「９５Ａ０」を指すポインタが格納されているものと想定される。このため、命令９０に応答して、バスＸ１に対するアドレスの生成は、最初に、スキームレジスタＳＲ３を選択することから開始され、この結果として間接アドレスレジスタＲ２が選択され、さらにこの結果として、間接アドレスレジスタＲ２の内容、つまり、アドレス「９５Ａ０」が、出力アドレス９２として出力される。加えて、事後修正を遂行するために、この出力アドレスが、加算器６８内でステップレジスタＳ１内に格納されているオフセットと加算され、結果として「９５Ａ３」なる事後修正されたアドレス９４が得られる。この事後修正されたアドレスが次に間接アドレスレジスタＲ２に格納される。こうして、スキームレジスタＳＲ３を指定する次のアクセスにおいては、この出力アドレスが間接アドレスレジスタＲ２の新たな内容となる。
【００５６】
ここに説明の実施例は従来の設計と比較して幾つかの長所を持つ。上述のように、これらスキームレジスタを用いることで、命令内の最少のビットにて、複数の独立なアドレスを並列に生成することが可能となる。加えて、コンパクトな命令にて独立なアドレスを生成する能力の増加のために、コーレレーテッドアドレス（ｃｏｒｒｅｌａｔｅｄ ａｄｄｒｅｓｓｅｓ）の生成と関連する制約を回避することができる。加えて、多くのケースにおいて、従来の設計と比較してアドレスの復号を著しく簡素化することができる。さらに、スキームレジスタを実現するために要求される追加の論理およびこのための制御論理はＤＳＰ回路装置のサイズに対して僅かである。
【００５７】
さらに、各スキームレジスタ内に別個のステップ情報を供給できる能力のために、生成されたアドレスに対して独立な事後修正動作を遂行することが可能となり、このためメモリ編成面での追加の柔軟性が得られる。さらに、各スキームレジスタ内に別個のアクセス情報を供給できる能力のために、アクセスタイプの任意の組合せ、例えば、４ ｒｅａｄｓ／０ ｗｒｉｔｅｓ、３ ｒｅａｄｓ／１ ｗｒｉｔｅｓ、２ ｒｅａｄｓ／２ ｗｒｉｔｅｓ等をサポートすることが可能となり、このためメモリ帯域幅を最大化が可能となる。
【００５８】
本発明の精神および範囲から逸脱することなく、説明の実施例に対して様々な修正を施すことが可能である。例えば、様々な設計において、任意の数の同時アドレス生成器、並びに、任意の数のスキームレジスタ、間接アドレスレジスタ、ステップレジスタおよび／あるいはモジュロレジスタをサポートすることができる。さらに、追加の機能、例えば、同一のメモリアドレスへの同時書込みを禁止する書込衝突論理（ｗｒｉｔｅ ｃｏｎｆｌｉｃｔ ｌｏｇｉｃ）をサポートすることもできる。
【００５９】
当業者においては他の修正も明らかであり、従って、本発明の範囲はクレームによってのみ定義されるものである。
【図面の簡単な説明】
【図１】
本発明によるデジタル信号プロセッサ（ＤＳＰ）回路装置のブロック図である。
【図２】
図１のＤＳＰ回路装置内でアドレス生成のために用いられる主要コンポーネントのブロック図である。
【図３】
図２のＤＳＰ回路装置内のレジスタおよびこれらレジスタを初期化するために利用される制御入力のブロック図である。
【図４】
図３のアドレス生成ユニット内のデータアドレス生成器の一つのブロック図である。
【図５】
図４のデータアドレス生成器内のスキームレジスタの一例としての構成を示す図である。
【図６】
図１のＤＳＰ回路装置内で用いるための一例としてのＤＳＰ命令のフォーマットを示す図である。
【図７】
図１のＤＳＰ回路装置によって遂行される一例としての間接メモリアクセスを示す図である。
【符号の説明】
１０  回路構成
１２  デジタル信号プロセッサ（ＤＳＰ）
１４  データメモリ
１６  データバスインタフェース
１８  Ｘデータスペース１８
２０  Ｙデータスペース２０
２２  プログラムメモリ
２４  インタフェース
２６  外部デバイスインタフェース
２８  インタフェース
３０  外部デバイス
３２  制御ユニット
３４  命令デコーダ
３６  計算ユニット／レジスタ
３８  デュアルＭｕｌｔｉｐｌｙ−Ａｃｃｕｍｕｌａｔｅ（ＭＡＣ）ユニット
４０  アドレス生成ユニット
４２  データアドレス生成器（ＤＡＧ）
４４  間接アドレスレジスタ
４６  ステップレジスタ
４８  モジュロレジスタ
５０  スキームレジスタ
５２  ミニ／マックスレジスタ（ＭＩＸＰ）レジスタ
５４  制御信号
６０  マルチプレクサ
６２  デコーダ
６４  マルチプレクサ
６６  デコーダ
６８  加算器
７０  モジュロレジスタ論理
７２  セレクタ
７４  セレクタ
８２  命令シンタックス
９０  命令
【図１】
2004501470.tif 000004
【図２】
2004501470.tif 000005
【図３】
2004501470.tif 000006
【図４】
2004501470.tif 000007
【図５】
2004501470.tif 000008
【図６】
2004501470.tif 000009
【図７】
2004501470.tif 000010
【国際公開パンフレット】
2004501470.tif 000011
2004501470.tif 000012
2004501470.tif 000013
2004501470.tif 000014
2004501470.tif 000015
2004501470.tif 000016
2004501470.tif 000017
2004501470.tif 000018
2004501470.tif 000019
2004501470.tif 000020
2004501470.tif 000021
2004501470.tif 000022
2004501470.tif 000023
2004501470.tif 000024
2004501470.tif 000025
2004501470.tif 000026
2004501470.tif 000027
2004501470.tif 000028
2004501470.tif 000029
2004501470.tif 000030
2004501470.tif 000031
2004501470.tif 000032
2004501470.tif 000033
2004501470.tif 000034
2004501470.tif 000035
2004501470.tif 000036
2004501470.tif 000037
2004501470.tif 000038
2004501470.tif 000039
2004501470.tif 000040
【国際調査報告】
2004501470.tif 000041
2004501470.tif 000042
2004501470.tif 000043