(57)【要約】      （修正有）【課題】性能および有用性を増進させるデジタル信号プロセッサを提供する。【解決手段】可変長命令セットを利用するための通話を処理するデジタル信号回路において、ＤＳＰは３つのデータバスの組を含み、その上でデータはレジスタバンク１２０と３つのデータメモリ１０２，１０３，１０４と交換されることができる。レジスタバンク１２０は、少なくとも二つのプロセスユニット１２８，１３０によりアクセス可能なレジスタを有して使用され得る。命令フェッチユニット１５６は、命令メモリ１５２中に格納される可変長の命令を受信することを含むことができる。この命令メモリ１５２は３つのデータメモリ１０２，１０３，１０４の組から離されている。【選択図】図２
2010282637.tif 000002
【特許請求の範囲】
【請求項１】
可変数の命令フラグメントを含む可変長命令に応答してデジタル信号処理を実行するデジタル信号プロセッサにおいて、
命令データが可変長命令を含み、少なくとも１つの最大長の完全な命令にとって十分な命令データをフェッチする命令フェッチユニットと
前記命令を復号して、制御信号を発生する命令復号器と、
処理すべきデータを記憶するレジスタバンクと、
第１のデータを記憶する第１のメモリバンクと、
第２のデータを記憶する第２のメモリバンクと、
第３のデータを記憶する第３のメモリバンクと、
前記第１のデータを前記レジスタバンク中の第１のレジスタに読み込む第１のデータバスと、
前記第２のデータを前記レジスタバンク中の第２のレジスタに読み込む第２のデータバスと、
前記第１および第２のレジスタ中の処理すべきデータを処理し、結果を前記レジスタバンク中の第３のレジスタに書き込む第１の処理ユニットと、
前記結果を前記第３のレジスタから前記第３のメモリに書き込む第３のデータバスとを具備するデジタル信号プロセッサ。
【請求項２】
前記結果を処理することによりさらに処理された結果を発生し、前記結果を前記レジスタバンク中の第４のレジスタに記憶させる第２の処理ユニットをさらに具備し、ここにおいて、前記第３のデータバスは前記さらに処理された結果を前記第４のレジスタから前記第３のメモリにさらに書き込む請求項１記載のデジタル信号プロセッサ。
【請求項３】
前記第３のデータバスは前記第１のデータバスおよび前記第２のデータバスより幅が広い請求項１記載のデジタル信号プロセッサ。
【請求項４】
前記レジスタバンク中の第１組のレジスタは前記第１の処理ユニットおよび前記第２の処理ユニットの両方に書き込むことができ、前記レジスタバンク中の第２組のレジスタは前記第１の処理ユニットまたは前記第２の処理ユニットの組のうちの１つに書き込むことができる請求項２記載のデジタル信号プロセッサ。
【請求項５】
前記レジスタバンク中の第１組のレジスタは前記第１の処理ユニットおよび前記第２の処理ユニットの両方から読み出すことができ、前記レジスタバンク中の第２組のレジスタは前記第１の処理ユニットまたは前記第２の処理ユニットの組のうちの１つから読み出すことができる請求項２記載のデジタル信号プロセッサ。
【請求項６】
デジタル信号には１組が含まれ、命令データに応答してデジタル信号を処理するデジタル信号プロセッサにおいて、
第１のメモリとレジスタバンクとの間でデータを読み出しおよび書き込む第１のデータバスと、
第２のメモリと前記レジスタバンクとの間でデータを読み出しおよび書き込む第２のデータバスと、
第３のメモリと前記レジスタバンクとの間でデータを読み出しおよび書き込む第３のデータバスとを具備し、
ここにおいて、前記第１のデータバス、前記第２のデータバス、前記第３のデータバスは同時に動作するデジタル信号プロセッサ。
【請求項７】
前記レジスタバンク中に記憶されているデータを処理する処理ユニットをさらに具備する請求項６記載のデジタル信号プロセッサ。
【請求項８】
１組の演算を要求する可変長の命令をフェッチする命令フェッチユニットと、
前記可変長の命令を復号し、前記１組の演算を実行させる命令復号器とをさらに具備する請求項６記載のデジタル信号プロセッサ。
【請求項９】
前記第１の処理ユニットと同時に前記レジスタバンク中のデータを処理する第２の処理ユニットをさらに具備する請求項６記載のデジタル信号プロセッサ。
【請求項１０】
第１のデータバスを通して第１のデータ値を受け取り、
第２のデータバスを通して第２のデータ値を受け取り、
前記第１のデータ値と前記第２のデータ値を使用して結果を発生し、
第３のデータバスを通して前記結果をメモリに書き込むステップを含むデータを処理する方法。
【請求項１１】
前記第３のデータバスは前記第１のデータバスよりも幅が広い請求項１０記載の方法。
【請求項１２】
前記第３のバスは前記第１のバスよりも幅が広い請求項１０記載の方法。
【請求項１３】
第１のレジスタ中に前記第１のデータ値を記憶し、
第２のレジスタ中に前記第２のデータ値を記憶し、
第３のレジスタ中に前記結果を記憶するステップをさらに含む請求項１０記載の方法。
【請求項１４】
第１の処理ユニットを使用して前記結果を発生し、
前記第３のレジスタに結合された第２の処理ユニットを使用して前記第１の結果から第２の結果を発生するステップをさらに含む請求項１３記載の方法。
【請求項１５】
デジタル信号を処理するデジタル信号プロセッサにおいて、
第１の入力データと第２の入力データに応答して結果データを発生する処理ユニットと、
前記第１の入力データを前記処理ユニットに送る第１のデータバスと、
前記第２の入力データを前記処理ユニットに送る第２のデータバスと、
前記結果データを送る第３のデータバスとを具備するデジタル信号プロセッサ。
【請求項１６】
前記第１の入力データを読み出すために前記第１のデータバスに結合された第１のメモリシステムと、
第２のメモリシステムを読み出すために前記第２のデータバスに結合された第２のメモリシステムと、
前記結果データを書き込むために前記第３のデータバスに結合された第３のメモリシステムとをさらに具備する請求項１５記載のデジタル信号プロセッサ。
【請求項１７】
前記第１のデータバスは前記第３のデータバスよりも幅が狭い請求項１５記載のデジタル信号プロセッサ。
【請求項１８】
前記第１のデータバスおよび前記第２のデータバスは前記第３のデータバスよりも幅が狭い請求項１５記載のデジタル信号プロセッサ。
【請求項１９】
前記第１のデータバス、前記第２のデータバス、前記第３のデータバス、前記処理ユニットに結合され、前記第１のデータと前記第２のデータを記憶する第１のレジスタと、
前記結果データを記憶する第２のレジスタと、
前記第２のレジスタに結合され、前記結果データを処理する第２の処理ユニットとをさらに具備する請求項１５記載のデジタル信号プロセッサ。
【請求項２０】
前記第１のデータバス、前記第２のデータバス、前記第３のデータバスを制御する制御システムをさらに具備する請求項１９記載のデジタル信号プロセッサ。
【請求項２１】
前記第１の処理ユニットは乗算累算ユニットであり、前記第２の処理ユニットは演算論理ユニットである請求項１９記載のデジタル信号プロセッサ。
【請求項２２】
少なくとも３つのデータバスを有する１組のデータバスと、
前記１組のデータバス中の各データバスからデータを受け取る複数の処理ユニットとを具備するデジタル信号プロセッサ。
【請求項２３】
前記複数の処理ユニット中の第１の処理ユニットは乗算累算ユニットであり、前記複数の処理ユニット中の前記第２の処理ユニットは演算論理ユニットである請求項２２記載のデジタル信号プロセッサ。
【請求項２４】
データを記憶するメモリユニットと、
１組のレジスタを備え、データを記憶するレジスタバンクとをさらに具備し、
ここにおいて、前記１組のデータバスは対応するデータの組を対応するレジスタに読み込む請求項２２記載のデジタル信号プロセッサ。
【請求項２５】
データを記憶するメモリユニットと、
１組のレジスタを備え、データを記憶するレジスタバンクとをさらに具備し、
ここにおいて、前記１組のデータバスは対応するデータの組を対応するレジスタに書き込む請求項２２記載のデジタル信号プロセッサ。
【請求項２６】
それぞれが１つの演算を要求する１組の命令フラグメントを有する可変長の命令を使用してデジタル信号プロセッサを動作させる方法において、
（ａ）第１のクロックサイクルの第１のクロックフェーズ中に、前に処理されたデータを第１のレジスタから第１の処理ユニットに読み込み、
（ｂ）前記１組の命令フラグメント中の第１の命令フラグメントに基づいて前記前に処理されたデータを処理し、前記第１のクロックサイクル中に、２度処理されたデータを生成し、
（ｃ）前記１組の命令フラグメント中の第２の命令フラグメントに基づいて新しいデータを処理し、前記第１のクロックサイクル中に、新しく処理されたデータを生成し、
（ｄ）前記第１のクロックサイクルの第２のフェーズ中に、前記新しく処理されたデータを前記第１のレジスタに書き込み、
（ｅ）前記第１のクロックサイクルの第２のフェーズ中に、前記２度処理されたデータを第２のレジスタに書き込むステップを含む方法。
【請求項２７】
ステップ（ｂ）は第１の処理ユニットにより実行され、ステップ（ｃ）は第２の処理ユニットにより実行される請求項２６記載の方法。
【請求項２８】
前記可変長の命令を含む命令データを読み出し、
次の命令長を決定し、
前記次の命令長に等しい前記命令データ中のデータ量を復号するステップを含む請求項２６記載の方法。
【請求項２９】
第１の処理ユニットと、
第２の処理ユニットと、
前記第１の処理ユニットおよび前記第２の処理ユニットに読み出し可能に結合されたレジスタとを具備するマイクロプロセッサ。
【請求項３０】
前記レジスタに結合されたデータバスと、
前記データバスに結合されたデータメモリとをさらに具備する請求項２９記載のマイクロプロセッサ。
【請求項３１】
前記第１の処理ユニットに結合されているが、前記第２の処理ユニットには結合されていない第２のレジスタと、
前記第２の処理ユニットに結合されているが、前記第１の処理ユニットには結合されていない第３のレジスタとをさらに具備する請求項２９記載のマイクロプロセッサ。
【請求項３２】
前記レジスタは２つのフェーズクロックサイクルで動作し、前記レジスタは前記２つのフェーズクロックサイクルの第１のフェーズ中に読み出され、前記レジスタは前記２つのフェーズクロックサイクルの第２のフェーズ中に書き込まれる請求項２９記載のマイクロプロセッサ。
【請求項３３】
前記第１の処理ユニットを前記レジスタに第１の構成で結合し、前記第２の処理ユニットを前記レジスタに第２の構成で結合するマルチプレクサをさらに具備する請求項２９記載のマイクロプロセッサ。
【請求項３４】
命令データに基づいて前記マルチプレクサを構成する制御システムをさらに具備する請求項３３記載のマイクロプロセッサ。
【請求項３５】
前記第１の処理ユニットは乗算アキュムレータである請求項２９記載のマイクロプロセッサ。
【請求項３６】
前記第１の処理ユニットは演算論理ユニットである請求項３５記載のマイクロプロセッサ。
【請求項３７】
第１のデータメモリと、
第２のデータメモリと、
前記第１のデータメモリと前記レジスタとに結合された第１のバスと、
前記第２のデータメモリと前記レジスタとに結合された第２のバスとをさらに具備する請求項２９記載のマイクロプロセッサ。
【請求項３８】
前記レジスタは前記レジスタの出力を通して前記第１の処理ユニットと前記第２の処理ユニットとに結合され、前記第１の処理ユニットの出力は前記レジスタの入力に結合されている請求項２９記載のマイクロプロセッサ。
【請求項３９】
デジタル信号プロセッサを動作させる方法において、
第１のクロックサイクルの第１のクロックフェーズ中に、処理されたデータをレジスタから第１の処理ユニットに読み込み、
前記第１のクロックサイクル中に、前記第１の処理ユニットを使用して前記処理されたデータを処理して、さらに処理されたデータを生成し、
前記第１のクロックサイクル中に、第２の処理ユニット中の他のデータを処理して、新しく処理されたデータを生成し、
前記第１のクロックサイクルの第２のフェーズ中に、前記新しく処理されたデータを前記レジスタに書き込むステップを含む方法。
【請求項４０】
前記第１のクロックサイクルの前記第２のフェーズ中に、前記さらに処理されたデータを第２のレジスタに書き込むステップをさらに含む請求項３９記載の方法。
【請求項４１】
データを処理する第１の処理ユニットと、
データを処理する第２の処理ユニットと、
前記第１の処理ユニットと前記第２の処理ユニットの両方にデータを書き込むことができる第１組のレジスタと、
前記第１の処理ユニットにはデータを書き込むことができるが、前記第２の処理ユニットにはデータを書き込むことができない第２組のレジスタとを具備するデジタル信号プロセッサ。
【請求項４２】
前記第１の処理ユニットは乗算累算ユニットであり、前記第２の処理ユニットは演算論理ユニットである請求項４１記載のデジタル信号プロセッサ。
【請求項４３】
アドレス空間を有するメモリ中に記憶された命令を使用してデジタル信号プロセッサを制御する方法において、
第１の命令の第１の部分を含むメモリの第１のデータワードを書き出し、
第１の命令の第２の部分と第２の命令の第１の部分を含むメモリの第２のデータワードを書き出すステップを含む方法。
【請求項４４】
前記第１の命令は複数の命令フラグメントから構成され、各命令フラグメントは特定の演算を実行する請求項４３記載の方法。
【請求項４５】
前記第１の命令と前記第２の命令は異なる長さである請求項４３記載の方法。
【請求項４６】
前記第１の命令と前記第２の命令は複数組の命令フラグメントから構成され、各命令フラグメントは特定の演算を実行する請求項４３記載の方法。
【請求項４７】
前記命令フラグメントには第１の命令フラグメントと第２の命令フラグメントとが含まれ、前記第１の命令フラグメントは１組の演算を要求し、１組の演算は前記第２の命令フラグメントにより実行される１組の演算のサブセットである請求項４６記載の方法。
【請求項４８】
前記第１の命令フラグメントは前記第２の命令フラグメントよりも短い請求項４７記載の方法。
【請求項４９】
デジタル信号プロセッサを制御するシステムにおいて、
フロントエッジワード境界を有するアドレスワードでアドレス可能なアドレス空間を持つメモリと、
前記メモリに記憶された１組の可変長の命令と、前記可変長の命令のそれぞれがフロントエッジ命令境界を有する、具備し、
ここにおいて、前記フロントエッジ命令境界の第１の部分は前記フロントエッジワード境界に対応し、前記フロントエッジ命令境界の第２の部分は前記フロントエッジワード境界と異なっているシステム。
【請求項５０】
前記可変長の命令は可変数の命令フラグメントを含む請求項４９記載のシステム。
【請求項５１】
前記可変長の命令は各可変長の命令がどれ位長いかを示すヘッダを含む請求項４９記載のシステム。
【請求項５２】
前記メモリは前記デジタル信号プロセッサの命令メモリ内に配置されている請求項４９記載のシステム。
【請求項５３】
デジタル信号プロセッサを制御するシステムにおいて、
バックエッジワード境界を有するアドレスワードでアドレス可能なアドレス空間を持つメモリと、
前記メモリに記憶された１組の可変長の命令と、前記可変長の命令のそれぞれがバックエッジ命令境界を有する、具備し、
ここにおいて、前記バックエッジ命令境界の第１の部分は前記バックエッジワード境界に対応し、前記バックエッジ命令境界の第２の部分は前記バックエッジワード境界と異なっているシステム。
【請求項５４】
前記可変長の命令は可変数の命令フラグメントを含む請求項５３記載のシステム。
【請求項５５】
前記可変長の命令は各可変長の命令がどれ位長いかを示すヘッダを含む請求項５３記載のシステム。
【請求項５６】
前記メモリは前記デジタル信号プロセッサの命令メモリ内に配置されている請求項５３記載のシステム。
【請求項５７】
マイクロプロセッサを制御するシステムにおいて、
命令データを記憶し、アドレス空間を有するメモリと、
演算を要求する複数の可変長の命令とを具備し、
前記複数の可変長の命令の実質的な部分は前記アドレス空間のほぼ連続した位置に配置されているシステム。
【請求項５８】
１０より多い命令が前記メモリ内のほぼ連続した位置に配置されている請求項５７記載のシステム。
【請求項５９】
前記命令の９０パーセントより多い命令が前記メモリ空間内のほぼ連続した位置に配置されている請求項５７記載のシステム。
【請求項６０】
前記命令の２５パーセントより多い命令が前記メモリ空間内のほぼ連続した位置に配置されている請求項５７記載のシステム。
【請求項６１】
前記可変長の命令はどれ位多くの命令データが可変長の命令に存在しているかにしたがって変化する請求項５７記載のシステム。
【請求項６２】
集積回路を制御する方法において、
（ａ）実行すべき１組の演算に対応する１組の命令フラグメントを発生し、
（ｂ）同時に実行することができる前記命令フラグメントを命令フラグメント組にグループ分けし、
（ｃ）その可変長の命令がどれ位長い可変長の全命令を生成するかを示すヘッダを各命令フラグメント組に付加し、
（ｄ）前記可変長の全命令をアドレス空間の連続したアドレスで前記集積回路に書き込むステップを含み、
ここにおいて、前記アドレス空間はワード境界を有する方法。
【請求項６３】
前記可変長の命令は１６ビットの命令、３２ビットの命令、４８ビットの命令から構成されている請求項６２記載の方法。
【請求項６４】
各ヘッダは前記可変長の全長の命令内で最上位の位置に配置され、５ビットから構成されている請求項６２記載の方法。
【請求項６５】
前記命令フラグメントのサブセットは、１つ、２つあるいは３つの命令フラグメントを含むことができる請求項６２記載の方法。
【請求項６６】
デジタル信号プロセッサを制御する方法において、
（ａ）減少された数の演算が並列に処理されるべきときに短い命令を発生し、
（ｂ）より多い数の演算が並列に処理されるべきときに長い命令を発生するステップを含む方法。
【請求項６７】
前記短い命令と前記長い命令はアドレスワード境界を有するメモリ中の連続した位置に記憶される請求項６６記載の方法。
【請求項６８】
ステップ（ａ）は、
他の任意の演算と同時に実行できない演算を識別し、
命令フラグメントと、短い命令がどれ位の長さかを示すヘッダとから前記短い命令を構成するステップからなる請求項６６記載の方法。
【請求項６９】
ステップ（ｂ）は、
同時に実行できる１組の演算を識別し、
前記１組の演算を実行する１組の命令フラグメントと、長い命令がどれ位の長さかを示すヘッダとから前記長い命令を構成するステップからなる請求項６６記載の方法。
【請求項７０】
前記ヘッダは５ビットから構成されている請求項６８記載の方法。
【請求項７１】
前記ヘッダは５ビットから構成されている請求項６９記載の方法。
【請求項７２】
可変数の命令フラグメントを含む可変長の命令を処理する方法において、
（ａ）可能な最大長の可変長命令を含むのに十分な大きさの第１組の命令データを読み出し、
（ｂ）前記第１組の命令データ内に記憶されている第１の可変長の命令を処理し、
（ｃ）未処理の命令データ量が前記可能な最大長よりも少ないときに付加的な命令データをロードするステップを含む方法。
【請求項７３】
ステップ（ａ）は、
第１のデータワードを読み出し、
第２のデータワードを読み出すステップから構成されている請求項７２記載の方法。
【請求項７４】
ステップ（ｃ）は、
未処理の命令データ量が前記可能な最大長の１つの命令ワード内であるときに１つの命令ワードを読み出し、
未処理の命令データ量が前記可能な最大長よりも少ない１つより多くの命令ワードであるときに２つの命令ワードを読み出すステップを含む請求項７３記載の方法。
【請求項７５】
メモリ内のほぼ連続したメモリ空間中に間隔をあけられた複数の可変長の命令を具備し、
前記複数の可変長の命令中の各命令は、
命令の長さを示すヘッダと、
実行すべき演算を特定する本体部とを有するメモリ。
【請求項７６】
デジタル信号プロセッサ中の命令データを処理する制御システムにおいて、
ワードでアドレス可能な第１のメモリバンクと第２のメモリバンクとを備え、未処理の命令データを記憶し、前記命令データは最大命令長を有する命令メモリと、
前記命令メモリから読み出す命令レジスタと、
前記命令レジスタ中の未処理の命令データ量が前記最大命令長の１つのワード内であるときに、命令データの１つのワードを前記命令メモリから前記命令レジスタにロードし、前記最大命令長と前記命令レジスタ中の前記未処理データとの間に１つよりも多いワードの不足があるときに命令データの２つのワードを前記命令メモリから前記命令レジスタにロードする制御システムとを具備する制御システム。
【請求項７７】
１組の回転された構成のうちの１つで前記命令レジスタ中に記憶されたデータを出力する回転子をさらに具備し、
ここにおいて、前記制御システムはさらに、前記命令レジスタからの未処理データを前記回転子を使用して最上位位置に保持する請求項７６記載の制御システム。
【請求項７８】
前記可変長の命令は前記ワード以下の長さを有する請求項７６記載の制御システム。
【請求項７９】
前記可変長の命令はフロントエッジ命令境界とバックエッジ命令境界を有し、前記可変長の命令は、メモリアドレス空間中で相互に隣接する２つの連続した命令のフロントエッジ命令境界とバックエッジ命令境界を有する前記命令メモリ内で、ワード境界間に記憶される請求項７６記載の制御システム。
【請求項８０】
前記可変長の命令は可変数の命令フラグメントを含み、各命令フラグメントは特定の演算を実行する請求項７６記載の制御システム。
【請求項８１】
データを記憶するレジスタバンクと、
前記データに乗算累算演算を実行する乗算累算ユニットと、
前記乗算累算ユニットの入力に結合され、第１の構成で入力データをシフトし、第２の構成で前記入力データを通過させるシフトユニットとを具備するデジタル信号プロセッサ。
【請求項８２】
前記シフトユニットは前記入力データをシフトし、前記乗算累算ユニットは単一の処理サイクル中に前記乗算累算演算を実行する請求項８１記載のデジタル信号プロセッサ。
【請求項８３】
下位１６ビットＡｌおよび上位１６ビットＡｈを有する３２ビット数Ａと、１６ビット数Ｂとに２倍精度乗法演算を実行するシステムにおいて、
（ａ）第１のクロックサイクル中にＢによりＡｌを乗算して、第１の中間値Ｉ１を生成し、
（ｂ）１６ビットだけ右に前記中間値Ｉ１をシフトして、シフトされた中間値ＳＩ１を生成し、
（ｃ）ＢとＡｈを乗算して、第２の中間値Ｉ２を生成し、
（ｄ）Ｉ２に前記シフトされた中間値ＳＩ１を加算し、
ここにおいて、ステップ（ｂ）−（ｄ）は第２のクロックサイクル中に実行されるシステム。
【請求項８４】
メモリと処理装置との間の可変長のデータの転送が最適化されるように選択された第２の複数の選択可能なバスを通して第１の複数の処理装置とメモリが接続可能であるデジタル信号プロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデジタル信号プロセッサに関する。本発明は特別の、但し排他的ではない、高度に並列的で、高度にパイプライン化された処理技術を使用するデジタル信号処理に関する応用を有する。
【背景技術】
【０００２】
デジタル信号プロセッサ（ＤＳＰｓ：Digital Signal Processors）はデジタル信号のリアルタイム処理に一般に使用される。デジタル信号は一般に対応するアナログ信号を表現するために使用される一連の数またはデジタル値である。ＤＳＰｓはコンパクトディスクプレイヤのようなオーディオシステム、およびセルラー電話のような無線通信システムを含む広範囲の応用に使用される。
【０００３】
ＤＳＰはしばしばマイクロプロセッサの特別のフォームであると考えられている。マイクロプロセッサーのように、ＤＳＰは典型的にはシリコンをベースにした半導体集積回路上に形成される。さらに、マイクロプロセッサとともに、ＤＳＰsの計算機能力は減じられた命令セット(ＲＩＳＣ)計算技術を使用することにより高められる。ＲＩＳＣ計算技術は、ＤＳＰの動作を制御するために同様サイズの命令のより小さい数を使用することを含んでいる。ここで、各命令は同じ長さの時間において実行される。ＲＩＳＣ計算技術の使用は、ＤＳＰの内の命令パイプライン化の量と同様に、命令が実行されるスピード、或いはクロック速度を高める。これは、ＤＳＰの全体的な計算機能力を高める。
【０００４】
ＲＩＳＣ計算技術を使用してＤＳＰを構成することは、また不所望な特性を形成する。特に、ＲＩＳＣベースのＤＳＰsは、与えられたタスクを実行するために非常に多数の命令を実行する。追加の命令を実行することは、たとえ、これらの命令を実行する時間がＲＩＳＣベースのＤＳＰの改善されたクロック速度のために減少しても、ＲＩＤＳＰの電力消費を増加させる。さらに、非常に多数の命令を使用することにより、該ＤＳＰの内のオンチップ(on-chip)命令メモリのサイズが増加する。メモリ構造は、ＤＳＰの内の実質的な(しばしば全体の５０％以上)回路領域を要求し、それはＤＳＰのサイズとコストを増加させる。このように、ＲＩＳＣベースのＤＳＰsの使用は、低いコスト、低い電力、ディジタルセルラー電話やバッテリ動作無線通信システムの他のタイプのような応用に関して理想以下である。
【０００５】
図１は、従来技術に従って構成されたディジタル信号プロセッサの高度に単純化されたブロックダイアグラムである。演算論理ユニット（ＡＬＵ）１６はＡＬＵレジスタバンク (bank)１７に結合され、乗算累算（ＭＡＣ）回路２６はＭＡＣレジスタバンク２７に結合される。データバス２０は、ＭＡＣレジスタバンク２７、ＡＬＵレジスタ１７及び(チップ上)データメモリ１０を結合する。命令バス２２は、ＭＡＣレジスタバンク２７、(オン−チップ)命令メモリ１２、ＭＡＣバンク２７及びＡＬＵレジスタバンク１７を結合する。
【０００６】
命令復号器１８はＭＡＣ２６とＡＬＵ１６に結合され、いくつかの従来システムにおいては、命令復号器１８は命令メモリ１２に直接結合される。データメモリ１０は、またデータインターフェイス１１に結合され、命令メモリ１２は、また命令インターフェイス１３に結合される。データインターフェイス１２と命令インターフェイス１２はオフ−チップメモリ６とデータと命令を交換する。
【０００７】
動作中、命令メモリ１２中の命令は、命令復号器１８により復号される。応答して、命令復号器１８は、ＡＬＵ１６およびＭＡＣ２６に適用される内部制御信号を発生する。これらの内部制御信号は典型的に、ＡＬＵ１６に、ＡＬＵレジスタバンク１７とデータメモリ１０または命令メモリ１２との間で命令データを交換させる。同様に、これらの内部制御信号はＭＡＣ２６に、ＭＡＣレジスタバンク２７と命令メモリ１２またはデータメモリ１０との間で命令データを交換させる。さらに、これらの制御信号は、ＡＬＵ１６およびＭＡＣ２６に種々の動作を、ＡＬＵレジスタバンク１７およびＭＡＣレジスタバンク２７中に記憶されているデータに応答して、および該データに関して、それぞれ行わせる。
【０００８】
例示的な動作において、命令メモリ１２はＡＬＵ１６およびＭＡＣ２６による使用のためにある定まった係数データを含むことができ、そしてデータメモリ１０は処理されるべきデータ（信号データ）を含むこができる。係数データは、ＤＳＰを使用して周波数フィルタを構成するためのものであってもよく、それは慣例である。フィルタリング(filtering)が行われると、データメモリ１０からの信号データおよび命令メモリ１２からの係数データは共に、ＭＡＣレジスタ２７に読み込まれる。命令メモリ１２内の追加の命令データはまた、命令データバス２２を通ってあるいは直接接続(connection)によってのいずれかにより、命令復号器１８に適用される。追加の命令データは、ＭＡＣ２６により行われる動作を特定する。ＭＡＣ２６により発生された結果は典型的に、データメモリ１０に読み込まれて戻される。
【０００９】
多くの処理の非効率はこの従来技術の処理の結果生じる。これらの処理の非効率には、たとえば、信号データの読み出しと出力データの書き込みの両方を行わなければならないデータメモリ１０への、バス、またはアクセス競合(contention)だけでなく、命令データをＭＡＣレジスタ２６および命令復号器１８の両方に供給することも行わなければならない命令メモリ１２への、バス、またはアクセス競合が含まれる。さらに、多くの例において、出力データに関する追加の処理は、ＡＬＵ１６により行われなければならない。これはデータメモリ１０へのアクセスをさらに悪化させ、それ故データバス２０に対する競合を生じさせる。何故ならそれは、出力データがＭＡＣレジスタバンク２７からデータメモリ１０に書き込まれ、その後にＡＬＵレジスタ１７に読み出されなければならないからである。これらの読み出しおよび書き込み動作はバス２０によって行われ、それ故追加のバスサイクルが浪費される。このような非効率性はＤＳＰの処理性能を低下させる。
【発明の概要】
【００１０】
本発明は、本願を通して記載される他の特徴および進歩を提供することによるのと同様に、上記問題点および非能率性を処理することによりＤＳＰの性能および有用性を増進させることを目的とする。
【００１１】
本発明は、デジタル信号処理のための方法および回路を提供することを目的とする。
【００１２】
本発明の１つの観点によると、メモリと処理装置との間の可変長のデータの転送が最適化されるように選択された第２の複数の選択可能なバスを通して第１の複数の処理装置とメモリが接続可能であるデジタル信号プロセッサが提供されます。
【００１３】
本発明の種々の他の観点は、添付の請求項に規定されている。  
本発明は、可変長命令セットの使用により実現されてもよい。可変長命令セットの一部分は、メモリスペース内において隣接する位置に記憶され、それら命令の始めと終りはメモリワード境界を横切って生成されてもよい。本発明の追加の観点は、可変数の命令フラグメント(fragments)を含む命令を有することによって実現され得る。各命令フラグメントにより１または複数の特定の動作が実行され、各クロックサイクル中におけるマルチプル(multiple)演算を可能にする。したがって、マルチプル演算は各クロックサイクル中に行われ、１つのタスクを行うために必要なクロックサイクルの合計数を減少させる。
【００１４】
１つの例示的なＤＳＰは、３つのデータメモリおよび１つのレジスタバンクとデータが交換されることのできる３つのデータバスのセットを備えている。３以上のデータバス、とくに３つのデータバスの使用は、著しく減少されたデータバス競合である本発明の別の観点を実現する。本発明の１実施形態は、データバスが１つの広いバスと２つの狭いバスとを含むことを要求する。該広いバスは広いデータメモリに結合され、該２つの狭いバスは２つの狭いデータメモリに結合される。
【００１５】
本発明の１実施形態の一つの観点は、少なくとも２つの処理装置によってアクセス可能な複数のレジスタを有するレジスタバンクの使用である。これは、メモリからの／へのデータの読み出し／書き込みなしに、マルチプル演算がデータの特定セットに関してマルチプル処理装置により行われることを可能にする。本発明の例示的な実施形態における処理装置は、演算論理ユニット（ＡＬＵ）と、乗算累算演算（ＭＡＣ）器とを含む。マルチプルバスアーキテクチャ、高度に並列な命令、またはその両者の使用と結合すると、本発明の付加的な観点が実現され、ここにおいて、高度にパイプライン化され(pipelined)、マルチ演算(multi-operation)処理が行われる。
【００１６】
本発明の他の複数の観点は、命令メモリ中に記憶された可変長の命令を受取る命令フェッチユニットを含むことにより実現される。本発明のさらに別の観点は、３つのデータメモリのセットから分離している命令メモリにより実現される。命令復号器は命令メモリからの命令を復号し、種々のレジスタと複数のデータメモリと複数の機能ユニットとの間でデータを交換させてマルチプル演算が各クロックサイクル中に行われることを可能にする制御信号を発生する。
【００１７】
本発明の種々の観点は相乗的に結合して、予期しない望ましい結果をもたらす。たとえば、メモリ内に連続的に記憶された可変長命令の使用は、ＤＳＰの必要な回路面積を減少させる。この減少は、マルチプル処理ユニットによってアクセス可能なレジスタの追加だけでなく、該ＤＳＰへのマルチプルデータバスの追加を容易にし、該ＤＳＰの全体的な性能を高める。本発明の種々の観点の結合により別の相乗的な利益は明らかであり、下記に詳細に説明される。
【００１８】
本発明の上記および更なる特徴は添付の請求の範囲にとくに記載されており、その利点と共に、本発明の例示的な実施形態の以下の詳細な説明および添付図面から明らかになるであろう。
【００１９】
本発明の特徴、目的、および利点は、全体を通して対応する基準、文字、識別子と同様に図面と組合わせることで、以下に述べる本発明に関する具体例の詳細な記述により、より明確になるであろう。
【図面の簡単な説明】
【００２０】
【図１】図１は従来技術に従って形成されたデジタル信号プロセッサのブロックダイアグラムである。
【図２】図２は本発明を具体化するデジタル信号プロセッサのブロックダイアグラムである。
【図３】図３はレジスタバンクのレジスタと入力ポートとの間の接続のブロックダイアグラムである。
【図４】図４はレジスタバンクの出力ポートとレジスタとの間の接続のブロックダイアグラムである。
【図５】図５は本発明の具体例に従ってメモリ空間に記憶された一組の可変長命令のダイアグラムである。
【図６】図６は命令フェッチユニットの動作を示すフローチャートである。
【図７】図７は本発明の具体例に従って形成された命令フェッチユニットのブロックダイアグラムである。
【図８】図８は本発明の具体例に従って形成されたＭＡＣユニットのブロックダイアグラムである。
【図９】図９は本発明の具体例に使用される命令階層のブロックダイアグラムである。
【実施形態の詳細な説明】
【００２１】
本発明はデジタル信号処理のための新規なそして進歩した方法および回路に関するものである。本願を通して、信号、命令、およびデータに関して多くの基準（reference）が形成される。これらの信号、命令、およびデータは電圧、電流、荷電された、光学的な、または磁気的な粒子を含む電流の蓄積、またはこれらの何らかの結合により適切に表現され、これらの使用は良く知られている。かかる信号、命令、およびデータを表現する多くの化学的および生物学的化合物の使用が、たとえかかる対象についての使用、制御および操作が困難性を有することにより好ましくはない場合があるとしても、一般的に本発明の使用に関し良好に成立する。
【００２２】
加えて、本発明の概念（aspect）、利点、特徴または効果に関して基準が形成される（特別に参照するのではない場合、ここではひとまとめにして概念として参照される。）。本発明のある具体例においては、本発明の他の概念の何れの存在もなしに、これらの異なる概念が単独で実現できる。しかしながら、本発明の他の実施例においては、本発明の２またはそれ以上の概念が結合されて実行され、本発明の２つまたはそれ以上の結合された概念のうち単に一つの概念を実現化する本発明の具体例により提供されるよりも大きな予期しない相互依存的な効果を生成するであろう。
【００２３】
Ｉ．ＤＳＰ動作および命令の記録
図２は本発明の具体例に対応して形成されたデジタル信号プロセッサ（ＤＳＰ）回路の一部分のブロックダイアグラムである。データメモリ102-104はアドレス生成ユニット（ＡＧＵ）105-107を介してデータバスＡ、ＢおよびＣに、そしてデータインターフェース100にそれぞれ結合される。データバスＡ、ＢおよびＣは、マルチプレクサ122−126を介して、レジスタバンク120の出力ポートＰＯ１、ＰＯ２およびＰＯ３のそれぞれに、そしてレジスタバンク120の入力ポートＰＩ１、ＰＩ２およびＰＩ３のそれぞれに結合される。望ましくは、データバスＡ、ＢおよびＣは、データメモリ102-104とレジスタバンク120内のレジスタ間のデータを読み出しそして書き込む。
【００２４】
３つのデータバスおよび３つのデータメモリの使用は、さらに多くのデータがバス競合を生成することなしに、レジスタバンクとデータメモリとの間で交換されることを可能にする。例えば、３つのフェッチ動作は３つのデータバスＡ、ＢおよびＣを使用して３つメモリ102-104から同時に実行できる。３つのフェッチおよび書き込み動作の何れかの結合が可能な場合、３つの書込み動作が同時に実行できる。
【００２５】
第4のデータバスを追加することで、より多数の動作が実行可能となり、これは本発明の一部の具体例を形成する。しかし３つのデータバスはフィルタリングのようなＤＳＰにより共通して遂行される多くのタスクの実行を容易にするために、３つのデータバスの使用だけに特別の利点がある。このように、第4のデータバスの追加は、第3のデータバスの追加と同じ増加する性能改善を提供するものではなく、そして追加の回路面積に関しては同じ量を必要とする。それ故に、第4のデータバスの追加は第３のデータバスの追加より少ない効果を利益として提供する。そこで、本発明の多くの具体例において、３つだけのデータバスの使用が望ましい。
【００２６】
出力ポートＰＯ４、ＰＯ５およびＰＯ６またはレジスタバンク120は乗算累算（ＭＡＣ：multiply accumulate）ユニット128に結合され、この出力は順番にレジスタバンク120の入力ポートＰＩ４に結合される。レジスタバンク120の出力ポートＰＯ７およびＰＯ８は論理演算ユニット（ＡＬＵ）に結合され、その出力はレジスタバンク120の入力ポートＰＩ５に結合される。
【００２７】
命令メモリ１５２は命令フェッチユニット１５６及び命令インターフェイス１５０に結合されている。命令復号器１５８は命令フェッチユニット１５６、並びにイミディエットバスＩｍ１，Ｉｍ２、Ｉｍ３及びＩｍＡＬＵに結合されている。イミディエットバスＩｍ１，Ｉｍ２、Ｉｍ３はマルチプレクサー１２２、１２４及び１２６に結合されている。イミディエットバスＩｍＡＬＵはＡＬＵ１３０に結合されている。上記のデータカップリングに加え、復号器１５８は、コントロールコネクション（簡略のため図示せず）により示される、種々のサブシステムに結合される。
【００２８】
レジスタバンク１２０は８個のレジスタＬ０−Ｌ３，Ｄ０−Ｄ３を含む。レジスタＬ０−Ｌ３は４０ビット幅レジスタであり、ハイワードレジスタＬ０ｈ−Ｌ３ｈ及びロウワードレジスタＬ０ｌ−Ｌ３ｌを介して、１６ビットフラグメントでアクセス可能である。レジスタＤ０−Ｄ３は３２ビット幅レジスタであり、サブレジスタＲ０−Ｒ７を介して、１６ビットフラグメントでアクセス可能である。レジスタ及びサブレジスタは、一般化して、単に「レジスタ」と呼ぶ。各レジスタの特徴は、個々のレジスタ番号を付けることにより、明らかとなる。
【００２９】
本発明の一つのアスペクトは、レジスタがマルチプル入力出力ポートに結合されそれらによりアクセス可能とすることにより達成される。ある実施例においては、この多重接続は、各レジスタの入力及び各出力ポートに結合されたマルチプレクサを使用することによりなされる。多重接続を設けるための他の方法は明らかになり、それらは、例えば、データバスとアドレス可能なメモリの使用を含む、本発明の他のアスペクトの使用と矛盾することはない。しかしながら、ある実施例においては、マルチプレクサの使用はより好ましい。なぜなら、それらは種々のレジスタとポートに対する迅速で制御可能なアクセスが可能となるからである。
【００３０】
本発明の他のアスペクトは、以下に説明されるように、イミディエットデータバスを用いる実施例において実現される。例えば、命令データに含まれるデータは、メモリ１０２−１０５とインターフェイスすることなく、レジスタバンク１２０に読込み可能である。このように、付加データは、データメモリとインターフェイスすることなく、命令処理システムから提供され、バス競合をさらに減少する。
【００３１】
図３は、レジスタバンク１２０中の一組のレジスタと一組の入力ポートＰＩ１−ＰＩ５との接続関係を示すブロック図である。レジスタは、Ｌ０ｈ−Ｌ３ｈ，Ｌ０ｌ−Ｌ３ｌ，Ｒ０−Ｒ７と定義される。レジスタＬ０は、レジスタＬ０ｈとＬ０ｌとから構成される。図３及び図４に示す例では、レジスタＬ０ｈ−Ｌ０３は２４ビットであり、レジスタＬ０１−Ｌ３ｌとＲ０−Ｒ７は１６ビットであり、レジスタＬ０−Ｌ３を４０ビット幅としている。同様に、入力ポートＰＩ３−ＰＩ５は２４ビットの入力ポートＰＩ３ｈ−ＰＩ５ｈと１６ビットの入力ポートＰＩ３ｌ−ＰＩ５ｌとからなり、合計で４０ビットとなる。入力ポートＰＩ１及びＰＩ２は１６ビットのみであり、レジスタＬ０ｈ−Ｌ３ｈへの書き込みに使用される時は、使用可能な２４ビットの内、最下位１６ビットにのみ書き込みを行う。
【００３２】
図３に示すように、レジスタの或るものはすべての入力ポートからデータを受け取り、また或るものは入力ポートの或るものだけ、または一部からデータを受け取る。特に、すべてのレジスタＬ０−Ｌ３はすべての入力ポートＰＩ１−ＰＩ５から、またマルチプレクサ５００−５１４から、データを受け取り、１６ビットの入力ポートはレジスタＬ０−Ｌ３の内の高位及び低位のレジスタの双方へ書き込みが可能である。このように、レジスタＬ０−Ｌ３は、バスＡ−Ｃ（入力ポートＰＩ０−ＰＩ３に対応する）のいずれからも、またＭＡＣユニット１２８とＡＬＵ１３０（入力ポートＰＩ４−ＰＩ５に対応する）からも入力を受け取る。レジスタＲ０−Ｒ７は入力データを、マルチプレクサ５１６−５３０を介してバスＡ−Ｃから受け取る。しかし、レジスタＲ０−Ｒ７のいずれもＭＡＣユニット１２８（入力ポートＰＩ４）から入力データを受け取らない。更に、レジスタＲ０−Ｒ３は、マルチプレクサ５１６、５１８、５２４、５２６を介して、ＡＬＵユニット１３０から入力データを受け取る。
【００３３】
図３に示す実施例は多くの効果を有する。特に、入力ポートとレジスタとの間に十分な接続性がもたらされ、最も共通する動作が容易に達成される。しかし、回路を実現するために必要とされる全回路面積を減少させるために、全体の接続性は最小にされる。例えば、ＭＡＣユニット１２８の出力はロングレジスタＬ０−Ｌ３のみに結合される。これは、乗算及び累算演算の結果が一般に３２ビットを超えるので、有利である。また、ＭＡＣユニット１２８の出力をレジスタＤ０−Ｄ３に結合することは、最小の利点しかもたらさない。他の例では、ＡＬＵユニット１３０はレジスタＬ０−Ｌ３，Ｒ０−Ｒ３に出力可能である。これにより、フレキシビリティが増し、それはＡＬＵユニット１３０からのデータは種々のレジスタへ書き込み可能となるからであり、それはＡＬＵユニット１３がより多種の演算を行い、データをより多くのレジスタへ出力することを有用にするため有益である。しかしながら、ＡＬＵユニット１３０はすべてのレジスタに結合されることはない。それゆえに、不必要で過度な接続性は避けられる。
【００３４】
図４は、本発明の一実施例による、レジスタバンク１２０の出力ポートとレジスタとの結合を示すブロック図である。図示されるように、バスＡへの出力のための出力ポートＰＯ１はマルチプレクサ５４０を介してレジスタＬ０ｈ−Ｌ３ｈ，Ｌ０ｌ−Ｌ３ｌ，Ｒ０−Ｒ７に結合される。これらのレジスタは、サブレジスタとしてアクセスされた場合のすべての使用可能なレジスタを含む。同様に、バスＢへの出力のための出力ポートＰＯ２はマルチプレクサ５４２を介してレジスタＬ０ｈ−Ｌ３ｈ，Ｌ０ｌ−Ｌ３ｌ，Ｒ０−Ｒ７に結合される。４０ビット幅バスＣへの出力のための出力ポートＰＯ３はマルチプレクサ５３０を介してレジスタＬ０−Ｌ３，Ｄ０−Ｄ３に結合される。これらのレジスタは、全レジスタとしてアクセスされた場合のすべての使用可能なレジスタを含む。
【００３５】
ＭＡＣユニット１２８の４０ビット入力端に結合された出力ポートＰＯ４はマルチプレクサ５３２を介してレジスタＬ０−Ｌ３に結合してある。ＭＡＣ１２８が累算する値は実行される乗算と累算演算の性質により大きくなる傾向があるので、出力ポートＰＯ４を４０ビット「長さ」のレジスタＬＯ−Ｌ３のみに結合することで、最良の結合形態を提供できる。これは、種々の乗算演算の累算量が特に３２ビットを超える場合に、レジスタＤ０−Ｄ３への付加的結合から生れる有用性が低いためである。
【００３６】
ＭＡＣユニット１２８のうちの一つの１６ビット入力端に結合された出力ポートＰＯ５はマルチプレクサ５３４によりレジスタＬ０ｈ−Ｌ３ｈ、R０、R２、R４、Ｒ６に結合してある。ＭＡＣユニット１２８の第２の１６ビット入力ポートに結合された出力ポートＰＯ６はレジスタＬ０ｈ−Ｌ３ｈ、Ｌ０１―Ｌ３１、Ｒ０―Ｒ７に結合してある。第２の１６ビット入力ポートを利用可能なレジスタのサブセットに結合する一方、ＭＡＣユニット１２８のうちの一つの１６ビット入力を利用可能なレジスタの全てに結合することにより、有用な折衷策が講じられる。特に、レジスタ空間が限られている場合、処理すべきデータの少なくとも一部を利用可能なレジスタのいずれにも保持できる。しかしながら、他の入力端に結合されたレジスタの数を制限することによって回路の接続総量が減少される。これにより、他の機能と特徴、例えば他のレジスタ、入力ポート、出力ポート間の接続性、とを提供できる。
【００３７】
ＡＬＵ１３０の入力端に結合された出力ポートＰＯ７はマルチプレクサ５４６によりレジスタＬ０−Ｌ３，Ｌ０ｈ−Ｌ３ｈ，Ｒ０−Ｒ３とに結合してあり、ここでレジスタＬ０ｈ−ＬＯ３ｈとＲ０−Ｒ３とは論理０のセットと共に出力される。すなわち、レジスタＬ０ｈ−ＬＯ３ｈ、Ｒ０−Ｒ３はＰＯ７のビット３１―１６(番号０―３９を付したビット)に出力され、ビット０―１５は論理０に設定される。ビット３９―３２は、ビット３１を用いて拡張された符号である。ＡＬＵ１３０の他の入力端に結合された出力ポートＰＯ８はマルチプレクサ５４８によりレジスタＬ０−Ｌ３に結合してあり、論理０のセットと共にレジスタＲ０―Ｒ７にも結合してある。ＡＬＵ１３０の入力端をこのように結合することにより、論理演算を利用可能な長いレジスタＬ０―Ｌ３全てについて実施でき、よって正規化やスケーリングなどの、多くの種類の信号処理操作に有用な大きな数について実施できる。加えて、算術演算をレジスタＲ０―Ｒ７、Ｌ０ｈ―Ｌ３ｈ、Ｒ０―Ｒ７間で実行できる。したがって、必要な接続の数を減少でき、結果として必要な回路面積を減少できるだけでなく、使用できるレジスタのセットについて柔軟性を高くすることができる。実施可能な論理演算と算術演算が上記のものに限定されないことを理解されたい。
【００３８】
マルチプルデータバスとマルチプル処理ユニットとがアクセスできるレジスタを使用しているので、様々な効果を達成している。たとえば、これらレジスタはデータバスと処理ユニットとの間にインターフェースを取ることができ、各データバスを各処理ユニットに配線することの必要性を減少している。データバス配線を減ずることにより、回路面積を節約し、かつチップのコストを下げる。
【００３９】
さらに、レジスタの少なくとも幾つか(レジスタのセット)をマルチプル処理ユニットに結合することにより、データバスを介してデータをメモリから読み出し、メモリへ書き込むことをせずに、マルチプル処理ユニットを使ってマルチプル演算を同一データに対し実行可能となる。これにより、バスサイクルが節約され、バス競合を減少させる。また、命令処理パイプライン技術が容易になる。これは、第１の処理ユニットが第１命令サイクル中に処理したデータを、同じレジスタ内で第２処理ユニットにより第２命令サイクル中にさらに処理することができるからである。
【００４０】
しかし、マルチプル処理ユニットにより全てのデータが処理される必要はない。したがって、他のレジスタ(他のセット)は、処理ユニット一つのみにより、三つ以上の処理ユニットがある場合、その総数より少ない処理ユニットによりアクセスできる。他のセットのレジスタの使用により、接続の数が減少する。これにより、回路面積も減少できるので、レジスタの接続性と回路面積との均衡(よって、性能と効率とのバランス)が最良となる。
【００４１】
さらに、本発明の１実施例においては、２相クロックド・レジスタをレジスタ・バンク内で用いることによりパイプライン効率をより上げられる。同一全クロック(処理)サイクル内において、２相クロックド・レジスタはクロック信号の第１相で読み出され、クロック信号の第２相で書き込まれる。よって、ある処理サイクル内において、ＭＡＣ１２８のような第１処理ユニットにより既に処理されたデータ は第１クロック相サイクル中に読み出され、ＡＬＵ１３０のような第２処理ユニットにより処理サイクルの残る部分において、さらに処理される。
【００４２】
加えて、処理サイクルの第２相中において、ＭＡＣ１２８により処理されたばかりの新たなデータが同じレジスタに書き込まれる。これにより、ふたつの処理ユニット間の完全なパイプライン処理がひとつの処理サイクル内で可能となる。これらの動作は、いずれの内部バスを介してデータを送ることなく、再度実行できる。よって、バス競合の増加が回避される。
【００４３】
再び図２を参照する。演算中命令フェッチユニット１５６はバイナリ命令を命令メモリ１５２から検索するか、命令メモリ１５２の中にない場合には、外部メモリから検索する。外部メモリにはこの技術では良く知られている様々な形態がある。例えば、動的ランダムアクセス記憶装置や静的ランダムアクセス記憶装置（ＤＲＡＭやＳＲＡＭ）、あるいはこれらの派生物、さらには磁気や光によるハードディスク記憶装置、またはこの技術では公知のその他のデータ記憶媒体が外部メモリに含まれる。この発明の典型的な実施例では、命令は可変長であり、命令フェッチユニットは命令の長さを決定したり、各処理や各クロックサイクルの間にどれだけの量の命令データをさらにフェッチしなければならないのかを決定する。さらに、命令は内部メモリや外部メモリの連続した記憶位置に記憶される。命令フェッチユニット１５６の動作や命令データを内部および外部のメモリに記憶することについては、以下に詳しく説明する。
【００４４】
命令復号器１５８は、命令フェッチユニット１５６が検索した命令を受け取り、命令を制御信号に変換する。変換された制御信号は、データメモリ、レジスタバンク、ＭＡＣ、ＡＬＵを含むＤＳＰを構成する一台以上のサブシステムに供給される。また、命令復号器１５８は、受け取った命令に含まれているイミディエットデータをイミディエットバスＩｍ１、Ｉｍ２、Ｉｍ３、ＩｍＡＬＵ経由で適切なシステムに供給する。イミディエットデータは、データメモリ１０２〜１０６Πに格納されているデータに対する演算に用いられるか、アドレスの指定や修正を行うことのできる命令データ内に格納されている数値がその典型である。
【００４５】
図２のＤＳＰが実行する処理には、データメモリからデータバスのうちの１つを介してレジスタ位置にデータをロードすることが含まれる。データはレジスタからデータメモリに書き込まれることもある。また、ＭＡＣユニット１２８やＡＬＵユニット１３０は、レジスタバンク１２０内の１個以上のレジスタに格納されているデータに対して処理をし、結果は概ねレジスタバンク１２０内のレジスタに書き戻される。
【００４６】
上で述べたＤＳＰアーキテクチャには多くの長所がある。例えば、三個のデータバスを使用しているので、データの途切れないパイプライン処理が可能である。ＤＳＰが実行する模範的なフィルタリング中に、濾過されるデータ（信号データ）があるデータメモリに記憶され、そのデータに印加される係数が別のデータメモリに記憶される。演算結果にはオペランドよりも大きいビットが必要なので、信号データと係数データとを二台の狭いメモリに記憶することが好ましい。係数および信号の両データは次にレジスタバンク１２０に読み込まれ、ＭＡＣユニット１２８により乗算されて累算される。以上の演算の結果は、レジスタバンク１２０内の第二レジスタに記憶されるか、以前に入力データが記憶されていたレジスタバンクに上書きされる。通常、演算結果はどれもレジスタから第三バス（ＢＵＳ Ｃ）を経由して広いデータメモリ（メモリＣ）に書き込まれる。
【００４７】
出力データが第三バスを経由して第三メモリに書き込まれ、入力データセットが第一および第二のデータメモリから第一および第二のデータバスを経由して読み込まれるので、メモリアクセスやバスの競合はほとんど生じないか、一切生じない。したがって、データの処理が途切れることなく進行するので、メモリサブシステムやデータバスの任意のものを内部バスや他のサブシステムよりも高いレートでクロックする(clock)必要性が減少する。これにより電力消費が減少し、しかも処理速度は維持されるか、却って速くなる。
【００４８】
さらに、データが途切れることなくＤＳＰを通過するので、所定時にＤＳＰの異なる段で幾つかの異なるデータ値に異なる処理が施される場合に、データのパイプライン処理が促進される。また、以下に述べる並列命令と一緒に使用した場合、この効率的な高度パイプライン処理と一緒になって処理の柔軟性が増大するので、汎用性が非常に高く、効率的で、強力なＤＳＰシステムが得られる。
【００４９】
マルチプルバスの使用によりデータをＤＳＰの周囲で様々に移動させることができるようになるので、バスの競合が少なくなる。例えば、分割すべきデータはデータバスＣ経由でメモリＣから入力データとして供給し、除数は別のメモリと別のバス、例えば、メモリＡとデータバスＡから供給することができる。演算結果は残っているバス（データバスＢ）を経由して残っているメモリ（メモリＢ）に記憶することができる。
【００５０】
マルチプルデータバスとデータメモリを提供することにより促進化される別の典型的な演算では、ＭＡＣユニット１３０により累算されるデータが第一メモリと第一バス（例えば、メモリＡとデータバスＡ）を経由して提供される。一組の累算が実行されると、演算結果のデータはデータバスＣを経由してメモリＣに書き込まれる。同時に、論理シフトが施されるデータは、データバスＣがＭＡＣユニット１２８からの結果データを搬送していない場合に、処理サイクル中にメモリＣからデータバスＣを経由してＡＬＵユニット１３０に供給され、このような結果データは、通常は一組の累算演算の実行後にのみ得られる。論理シフトが施されたデータは、データバスＢを経由してメモリＢに同時に書き込まれる。したがって、一般にマルチプルデータバスとメモリ、とくにマルチプル処理ユニットと共に使用することは、ＤＳＰ内でデータを移動させるさらに多くの可能性を提供することによりマルチプル演算を行うことを促進する。
【００５１】
以上に述べたように、この発明の別の態様は、ＭＡＣユニット１２８やＡＬＵユニット１３０などのマルチプル処理ユニットがアクセス可能なレジスタを使用して実現される。マルチプル処理ユニットがアクセス可能なレジスタにより、処理ユニットが処理すべきデータは当該データにいずれかの内部データバスを経由させることもなく、アクセスされることができるようになる。例えば、第一処理ユニットはレジスタにデータを書き込むことができるし、第二処理ユニットがそのレジスタにアクセスして、当該データをさらに処理することもできる。これにより、バスの競合や混雑が解消されるので、高データスループットが維持される。
【００５２】
さらに、下記に詳細に記載するように、並列演算命令の使用と並列処理能力を結合すれば、データを高度にパイプラインしマルチ演算処理する能力がさらに高められる。これに対し、典型的なパイプラインは、一連の演算の異なった相（すなわち、フェッチ、復号、プロセス）をずらすので、それぞれの命令の開始点間の処理時間を短縮させることができる。マルチ演算パイプラインにより、データに対し一連の異なった演算をすることができるという付加的な利点もある。この場合、それらの一連の演算は異なるデータ組に対して同時になされる。このマルチ演算パイプライン処理により、従来の命令パイプライン処理に比べ、一処理サイクルあたりになされる命令の数を増加することができる。
【００５３】
上述した構成の相乗作用を、以下に例示する処理によりさらに説明する。例示するフィルタリング処理においては（上述した場合と同様）、累算(accumulation)がなされた積の数が増えるにつれ、MC２６により発生された結果の規模が増加する（絶対値、及びその数値を表すために使用されるビット数との観点から）。そのため、結果はスケーリング、もしくは「正規化」しなければならない。このため、通常は、ALUユニット１３０による論理シフト演算が必要となる。
【００５４】
記載されたシステムにおいては、スケーリング操作をフィルタリングの乗算や累算と同時に行うことができる。そのような同時処理がなされる処理サイクル中においては、処理前の信号データとフィルタリング係数をデータメモリー１０２、１０３からレジスタバンク１２０内のレジスタに読み出す。同時に、MACユニット１２８はこれらのレジスタ（L0hとL01)に以前記憶された数値を読み、乗算と累算の演算を行う。この演算においては、出力は第２のレジスタ（例えばL1)に書き込まれる。同時に、ALUユニット１３０は第２のレジスタ（L1)に以前記憶されたデータを読み、スケール演算をし、スケーリングした数値を第３のレジスタ（例えばL2)に書き込む。同じ処理サイクル間に、第３のレジスタ（D０)に以前記憶された数値を、バスC112を介しデータメモリ１０４に書き込む。これで明らかなように、個々の演算は行われているタスクによって違う。さらに明らかなように、マルチプル演算の実行を可能にするような高度に並列的な命令を用いた場合には、高度にパイプラン処理されたマルチ命令演算が容易になる。高度に並列的な命令は、個々の処理サイクル中において、異なった演算の指定をパイプライン化することを可能にする。
【００５５】
２相の読み出し書き込み操作（この一例は上述した）を利用することで、処理のすべてを単一の処理サイクルで行うことができる。この処理サイクルにおいては、データを最初のクロック相の間にそれぞれのレジスタから読み出し、処理ユニットにより処理をし、古いデータに上書きした結果を第２のクロック相の間にレジスタに書き込む。単一のクロックサイクルの間では、このプロセスのすべてのステップが同じ数値に対し適用されるというよりは、一連の数値がDSPを介してパイプライン化され、それぞれの数値が処理がなされるとき次のステップに移行することが理解されよう。
【００５６】
他にも数多くの演算が、本明細書に記載された発明の種々の観点により、容易になる。例えば、ボコーディング(vocoding)とは、音声データを符号化するプロセスである。ボコーディングでは数多くの異なった操作がなされる必要があり、その中には、他の操作と独立し、故に同時になされる操作が含まれる。マルチプルデータバスやマルチプル処理ユニットを用いることで、これらの操作が容易になる。
【００５７】
別個の命令メモリと命令復号を利用することで更なる利点が得られる。例えば、上述したデータ処理と同時に、命令フェッチ（instruction fetch）１５６によって命令メモリ１５２から命令を読み出し、次に命令復号器１５８で、DSP内の他の種々のサブシステムの操作を制御するための制御信号を発生させる（図面を簡略化しわかりやすくするために接続関係は示されていない）。この場合も、データバスは命令データを搬送する必要はなく、信号データは命令データからの割り込みなしで移動し処理することができる。したがって、命令処理をデータ処理と分離することで性能をさらに高めることができ、命令データを移動させるためにデータバスサイクルを使う必要がなくなる。
【００５８】
図５は、本発明の一実施例における、図２の命令メモリ１５２のアドレス指定が可能なメモリスペースの一部の一組の可変長命令のパッキング（packing）を示す表である。本発明の実施例の中には、長さ可変命令を外部メモリシステム内に図2に示すように記憶し、更なるメモリ効率を実現するものもある。例として示すアドレスが左側のコラムに示されており、それぞれのアドレスはメモリ２７５のまん中と右側のコラムに示されている３２ビットのデータワードを示している。まん中のコラムは、それぞれのデータワードにおける１６ビットの高位のサブワードを表し、もっとも右側のコラムは１６ビットの低位のサブワードを表している。本発明の好適な実施例においては、高位と低位のサブワードは個別にアドレス指定ができないようになっており、これにより必要となるアドレス論理量を少なくしている。
【００５９】
メモリー２７５内には、可変長命令Ａ乃至Ｌが、図示されたパックされた構造で記憶される。命令Ａは、アドレスワード０×００００に記憶された最初の二つの倍バイトＡ（１）とＡ（２）と、アドレス０×０００１の上位サブワードに記憶された第三の倍バイトＡ（３）を持つ４８ビット命令である。命令Ａに続く命令Ｂは、アドレス０×０００１の下位ワードに記憶された最初の倍バイトＢ（１）と、アドレス０×０００２の上位サブワードに記憶された第二の倍バイトＢ（２）とを持つ３２ビット命令である。命令Ｃは、アドレス０×０００２の下位サブワードに記憶された第一でかつ唯一の倍バイトＣ（１）を持つ１６ビット命令である。
【００６０】
命令Ａ乃至Ｃの記憶配置から明らかなように、本発明は、同じアドレスワード内に違った命令のいくつかの部分を記憶する事によって一組の命令を記憶するために必要なメモリー２７５のサイズや量を減らしている。例えば、命令Ａの第三の倍バイトＡ（３）は、命令Ｂの最初の倍バイトＢ（１）とともに記憶される。
【００６１】
可変長命令をワード境界を、横切って、あるいは、特に、メモリーアドレススペース内に連続した位置に記憶する事によって、本発明は、ある定められた数の命令を記憶するのに必要な命令メモリーの量を減らしている。命令メモリーの量を減らす事は、ＤＳＰにある量の命令キャッシュ能力を与えるのに必要なチップのサイズと費用を減らす事になる。命令のパッキングについては、図３に示されるようにメモリー２７５内に可変長命令Ｄ乃至Ｌを配置する事によって説明されている。
【００６２】
連続した位置に全ての命令をパッキングする事は、上記で述べたように、発明の幾つかの実施例においては必要ではないという事は理解されるはずである。例えば、発明の異なる実施例では、メモリースペース内の連続した位置において、命令の多くの部分（例えば９０％以上）をパックする。発明の他の実施例においては、命令の重要な部分（例えば２５から５０％の間）のみが、連続したメモリースペースに有利にパックされる。発明のいくつかのその他の実施例では、違ったパーセンテージのパックされた命令を使ってもよい。
【００６３】
また、連続した位置の使用は必要ではない。命令は、単に、命令データのトータル量より実質的に大きくないトータルメモリースペースに配置しなければならないだけである。これは、メモリースペース内において隣接する位置に命令を配置する事によって好ましく達成されるが、命令は、意図された実行順に読み出され得る限り、メモリースペースを通じてシャッフルされ得る。当該技術において熟練された者は、メモリースペースのリマッピングとしてのこのタイプの所定のシャッフリング、およびこのようなリマッピングは、通常不所望な複雑性を付加する事以外、発明の動作に影響を与えないことを認識するであろう。
【００６４】
同様に、大きな一組の命令に渡って採用されるパッキング方式を持つ事は好ましい事である。例えば、少なくとも十の命令に対してパッキング方式を採用する事は、発明のいくつかの実施例において好ましい。
【００６５】
補足すると、発明の模範的な実施例で使われる特別なパッキング方式は、他の実施例においては必要ではない。例えば、発明の他の幾つかの実施例では、連続したメモリー位置における命令を持たなくてもよい。むしろ、命令は、命令セパレーター符号の使用を含む、少量のメモリースペースによって分けられてもよい。好ましいのは、少量のメモリースペースは、メモリーワード境界に命令境界を保つ為に必要なメモリースペースの量より小さい事である。上記に述べたパッキングは多くの例では好ましく、それはその簡易さ、完全さ、そして効率に負っている。一般的に、パッキングの完全さとパッキング方式の複雑性の間における選択されたトレードオフは、発明の異なる実施例において異なり得るのである。
【００６６】
また、上記に意味されたように、発明の幾つかの実施例では、完全な一組の利用可能な命令ではなく、命令の部分のみにパッキング方式を採用している。たとえば、命令パッキングは、特別なタスクやサブルーチンをなす為に使われる何セットかの命令のみになしてもよい。
【００６７】
以下の事を注目してもらいたい。可変長命令の使用と結合高度パック命令記憶との結合は、さらにＤＳＰのメモリー要求を減ずるのである。なぜなら、可変長命令は、所望の演算を要求する為に必要なデータ量を消費するだけだからである。そして、高度にパックされた命令記憶は、トータルメモリーを、一組の可変長命令によって消費されるメモリーに等しく保ち、従って最小に保つ。減じられたメモリーサイズはチップサイズそしてコストを減ずる。
【００６８】
減じられたＤＳＰサイズの利点に加えて、そして、それ故に減ぜられるＤＳＰコスト、高度にパックされた命令の使用そして可変長命令は、上記に述べた構造の他の特徴と結合された時、更なる予期せぬ利点をもたらす。たとえば、命令メモリーのサイズを小さくすることによって、追加回路面積は、不断の、高度にパイプラインされた、データ処理とＤＳＰ内で同時にマルチプル演算をする為の能力を含みながら、上記に述べたように利益を提供する、ＤＳＰ内での三つのデータバスの使用の為に利用可能にされる。故に、タイトにパックされた命令は、さらに増した性能そして効率の、付加的な、予期せぬ利益を提供するために多重バス構造と結合する。
【００６９】
メモリ空間の連続した位置に可変長命令を記憶する可能性は、そのような構成で記憶された可変長命令をフェッチし処理することができるＤＳＰを提供することにより可能となる。図6は、本発明の一実施例に基づき命令メモリ152から命令をフェッチする際の、命令フェッチユニット156の動作を示すフロー図である。処理はステップ200で開始され、ステップ202で命令データの第1のセットが命令メモリ152から読み出される。本発明の典型的な実施例では、2つの32ビットワード、或いは64ビットの命令データがステップ202で検索される。
【００７０】
ステップ204では、検索された64ビットの命令データに含まれる第1の命令は命令復号器158により処理される。本発明の代表的な実施例では、命令は16，32或いは48ビットの長さであってもよい。命令長は、以下において詳細に記述される命令長を示す各命令に含まれているヘッダービットの組により決定される。命令長を特定するその他の種々の方法は、2つの命令を分離し或いは切り離すコードを使用したり、スーパーヘッダー命令を使用したりすることであり、それは従うべき命令のセットの長さを特定する。ヘッダービットを使用することはある意味において好ましい。その理由は、命令長情報がその命令に近接して保たれ、命令処理についての状態情報を記憶したり維持したりする必要性を減じるからである。
【００７１】
64ビットの検索された命令データ内に含まれる第1の命令が処理された後に、48ビット或いはより以上の未処理命令データが64ビットの検索命令データに残っているかどうかを、ステップ206で決定する。48ビット或いはそれ以上の未処理命令データが残っている場合には、残っている48ビットの未処理データに含まれる次の命令がステップ204において再び処理される。
【００７２】
48ビットより低い未処理命令データがステップ206において検索命令データに残っている場合には、追加の命令データが命令メモリ152からロードされる。追加の命令をロードする種々の方法が考えられる。本発明の一実施例では、十分な追加の命令データが命令メモリからロードされて、命令フェッチユニットに記憶された未処理データの量を48ビットに復帰させる。48ビットの未処理データが命令フェッチユニット内に記憶されることを保証することは、少なくとも1つの競争命令が命令復号器158に利用可能であることを保証する。
【００７３】
本発明の好ましい実施例では、処理された特定量のデータに依存して、48ビットの未処理データが残っている場合には、命令フェッチユニットは可変量のデータを検索する。特に、処理されたデータ量がデータワード（32ビット）以上の場合には、新たな命令データの追加データワード（32ビット）が検索される。以前に処理されたデータ量が2データワード（64ビット）以上の場合には、2つの新たなデータワードが命令フェッチユニットにより検索される。
【００７４】
処理されたデータのワード数に基づいて検索されたデータの量を決定することが好ましい。その理由は、未処理データの十分な量を命令復号器158に利用可能とする一方、命令メモリを構成するメモリバンクへのより効率的なワード長アクセスを可能とするからである。ステップ206において追加の未処理命令データが検索されると、現在利用可能な未処理命令データのトータル量内で次の命令が処理される。
【００７５】
図7は、本発明の一実施例に基づき構成された命令フェッチユニット156と命令メモリ152を示すブロック図である。命令メモリ152は偶数のメモリバンク302（RAM0)と奇数のメモリバンク300（RAM1)からなり、それらのそれぞれは32ビットデータワードを読取り、書き込む。メモリバンクは偶数と奇数とラベルを付けられている。というのはそれらは両方とも同じアドレス空間でアドレスされるからである。しかし偶数アドレスは偶数メモリバンク302に向けられ、奇数アドレスは奇数メモリバンク300に向けられている。８、16，24， 48と64ビットワードを含むほかのワードサイズを読み書きするメモリバンクも別の実施例において使用可能である。更に、異なる数のメモリバンク、即ち1−8メモリバンクを使用することも可能である。しかしながら、32ビットワードを用いる２つのメモリバンクを使用すると全体的な複雑さを減少でき、命令データが管理可能な大きさでアドレスされることも可能にするので、好ましい。
【００７６】
制御論理304は、データワードをメモリバンク300と302から命令レジスタ106と107に読み出す。読み出された特定のメモリ位置は、アドレス線310,314により特定され、命令の読み出しはイネーブル線332,315,316,318により制御される。命令レジスタ306,307の32ビット出力は、16ビット部において回転子308の入力A,B,C,Dに供給される。回転子308は48ビットの命令データ324を出力する。48ビットの命令データ324は、3対4（3：4）入力A,B, C,Dからなり、各入力は、以下に詳細に説明するように、16ビットを含むようにセットされている。
【００７７】
動作中において、制御論理304は、図5を参照して記述されている方法に基づいて命令メモリバンク300,302から命令データをロードする。特に、制御論理304は、32ビットのデータワードを偶数メモリバンク302と奇数メモリバンク300の両方から読み出すことによって、まずトータル64ビットの未処理命令データを命令レジスタ306,307にロードする。16ビットの命令が処理される場合には、新たなデータはロードされない。その訳は、命令レジスタ306,307はまだ48ビットの未処理命令データを含んでいるからである。32ビットの命令が処理される場合には、命令レジスタ306は32ビットワードの追加命令データをロードされる。その理由は、48ビットより小の未処理命令データが残っているからである。32ビット命令ワードをロードし、再び48ビット未処理命令データをレジスタ306,307に置く。即ち、16未処理ビットをレジスタ307に、次の32ビットをレジスタ306に置く。48ビット命令が次に処理される場合、未処理命令データは残っていないので、レジスタ306,307の両方とも命令データの32ビットワードをロードされ、それは64ビットの未処理命令データであり、それは必要な48ビット命令データよりも大きい。全64ビットの命令データをロードすることは特に必要ないが、工業上通常使用されている2つの32ビットワード命令メモリとレジスタを使用できるので有益である。十分な量の未処理命令データを維持する他の方法を使用することも、本発明の技術的事項の使用に当たる。
【００７８】
64ビットの新たな命令データが命令レジスタ306,307にロードされると、制御論理304は更にコントロール信号320を使用して回転子308を形成し、1）命令アドレス空間内の命令データの位置、2）処理された命令データの組、3）処理された前の命令の長さに基づき入力A,B,C,Dで受信された命令データの次の48ビットを出力する。
【００７９】
特に、回転子308は、処理されるべきネクスト・イン・ラインの48ビットの命令データの組を、最上位または最左位置におけるその命令のネクスト・イン・ライン・ビットと共に出力するように構成されている。
【００８０】
例えば、命令データの最初の2つのワード或いは64ビットをレジスタ306,307にロードする際は、偶数命令レジスタ307の命令データがネクスト・イン・ラインである場合に、回転子308の出力は、入力A,B,C（ABC)にこの順番で受信された命令データから構成される。奇数命令レジスタ306の命令データがネクスト・イン・ラインである場合には、回転子308は入力C,D,A（CDA)にこの順番で受信された命令データを出力するように構成されている。
【００８１】
命令が処理されると、新しい命令データが上述したようにデータレジスタ306,307にロードされ、回転子307は処理された前の命令のサイズに基づいて出力324にネクスト・イン・ライン命令データを出力し続けるように構成されている。処理された前の命令のサイズは、出力324の最初の5ビットのコピーであるヘッダーデータ322によって、制御論理304に送られる。上述したように、制御論理304への命令長を特定する所定の方法は、命令長が命令データから直接的に決定されることを可能にするので、最初の5ビットの使用が好ましいが、本発明の応用の範囲である。
【００８２】
本発明の典型的な実施例では、前の命令サイズは、表1にしたがって2ビット状態情報I1,I0にコード化されている。  
【表１】
2010282637.tif 000003
【００８３】
更に、回転子３０８の構成は、２つの選択ビットS1,S0により制御されていて、この選択ビットは表２のようにコード化されている制御信号３２０を形成している。  
【表２】
2010282637.tif 000004
【００８４】
明らかなように、状態S1,S0がインクリメントされると、回転子308の出力は左に回転し、或いはバレルシフトする。左回転は、各入力グループ（A,B,C,D)が出力において左にシフトすることを意味する。出力の最左方にいた入力グループは除去される。出力で以前現れなかった入力グループは、最右方の位置で次に出力される。
【００８５】
状態S1,S2、従って回転子308の構成は、種々の長さの命令に応答して変化する量だけ、更新され或いは回転される。特に、処理された命令の長さを表す値（I1,I0)がコントロールビットS1,S0に加えられ、任意のキャリーアウト値が処分される。即ち
S1(t+1)，S0(t+1)  ＝  S1(t),S0(t)+I0,I1            （１）
ブランチ或いはリセット状態においては、値S1,S0は、処理がブランチ或いはリセットされる特別の命令に基づきリセットされるので、式(1)は利用されない。ブランチ、リセット或いはストール命令を処理する種々の方法は当業者に周知であり、この処理は本発明に特に関係がないので、これ以上説明しない。
【００８６】
典型的な処理では、回転子308は、00において選択ビットS1,S0、およびABCの出力から始まる。16ビットの命令が受信された場合には、対応する01の命令長ビットI1,I0がS1，S0に加えられ、01のS1,S2となり、これはBCDの回転子308からの出力324に対応する。出力BCDは、最初の16ビットの命令データ（入力A)が処理された後に、ネクスト・イン・ラインの組の命令データとなる。
【００８７】
次の命令が32ビットの命令である場合には、10の命令長I1,I0が01の現在のS1,S0状態に加えられて11となる。その結果として出力は、まだ処理されていない次の48ビットの命令データに対応し、最上位或いは最左方に位置された入力Dで受信されたネクスト・イン・ライン命令データにより構成されたDABとなる。以前、入力B,Cからの命令データは処理された。前の32ビット命令を処理する間に、新たなデータが上述した命令データロードプロセスに基づいて命令レジスタ307にロードされる。
【００８８】
48ビット命令が処理される場合には、選択ビットS1,S0の状態は、11の命令長I1,I0によって増加され、キャリーアウトを処分して10のS1,S0となり、回転子308の出力をCDAとする。出力CDAは処理されるべき次の48ビットの命令データに対応し、ネクスト・イン・ラインビットは最上位位置になる。以前、入力D,A,Bの命令データは処理された。新たな命令データは前の命令を処理している間にレジスタ306に読み込まれる。関連する命令データ処理を達成する上述した論理を例としてあげた。上述の命令データ処理を達成する他の論理を使用してもよいことは明らかであり、本発明の使用の範囲に入る。
【００８９】
したがって例示的な実施形態では、制御論理は回転子308が命令レジスタ306および307から受取った次の４８ビットの命令データを出力し、このとき処理されることになる次の命令ビットが最左位置に位置しているように設定する。当業者は、所定の構成では命令データを命令処理ユニット158へ送り、これにより処理されることになる次の組の命令データが識別可能になり、この次の組のデータにも同じく本発明を使用できることが分かるであろう。
【００９０】
既に記載したように、次の４８ビットの処理されていない命令データを出力することに加えて、さらに回転子３０８は処理されることになる次の命令の大きさを制御論理３０４に示す。とくに、回転子３０８は処理されることになる次の５ビットの命令データの付加的なコピーを制御論理３０４へ出力する。本発明の好ましい実施形態では、命令の長さは最初の５ビットの命令によって特定される。
【００９１】
図８は、本発明の１つの実施形態にしたがって設定されたときのＭＡＣ128のブロックである。右へのシフト部900は４０ビットの入力を受取って、累算し、この値を０または１６ビットだけシフトし、この出力はマルチプレクサ901の１つの入力に加えられる。マルチプレクサ901の他の入力は、値０ｘ８０００を受取る。乗算器902は乗算されることになる２つの１６ビットの値を、命令復号器158からの符号ビットと共に受取り、したがって各入力ごとに合計で１７ビットを受取ることになる。
【００９２】
乗算器902の出力は左へのシフト部904によって受取られ、左へのシフト部904はこの出力を命令復号器158によって特定されたように０、１、２、または３ビットだけシフトする。加算器／減算器906はマルチプレクサ901および左へのシフト部904の出力を受取る。加算器／減算器906は命令復号器158によって命令されたように2つの入力値の加算または減算を行い、その結果を出力し、この出力は本発明の例示的実施形態ではレジスタバンク入力ポートPI4へ加えられる。
【００９３】
本発明の実施形態におけるＭＡＣユニット１２８内の１６ビットを右へシフトするユニット９００は、さらに他のタイプのＭＡＣユニットにも利用できる。とくに１６ビットを右へシフトするユニット９００を使用すると、２倍精度の演算をより少ないクロックサイクルで実行することが容易になる。例えば、３２ビットの数値（Ａ）が１６ビットの数値（Ｂ）で乗算される２倍精度の演算を実行するには、最初に３２ビットの数値の下位の１６ビット（Ａｌ）が第１のクロックサイクル中に１６ビットの数値（Ｂ）で乗算されて、レジスタバンク１２０に記憶されている中間値Ｉを得る。
【００９４】
第２のクロックサイクル中に中間値Ｉは１６ビットを右へシフトするユニット900へ入力されて、１６ビットだけ右へシフトされる。さらに、１６ビットの数値（Ｂ）および３２ビットの数値（Ａ）の上位の１６ビット（Ａｈ）が乗算されて、その結果が１６ビットを右へシフトするユニット900からの、右へシフトされた中間値Ｉに加算される。したがって２倍精度の乗算は３クロックサイクルではなく、２クロックサイクルで実行される。一般的に、多くの２倍精度の演算では、１以上の変数を他の変数に関係してシフトすることが必要であり、したがって乗算または累算の一方は２倍精度の演算を実行するのに必要なサイクル数を低減するので、シフト段階を同じクロックサイクル中に実行することができる。
【００９５】
一般的に第１の乗算演算、シフト演算、および第２の乗算演算は各々、１クロックサイクルを必要とするので、一般的に３クロックサイクルが必要である。したがって、シフト回路を使用すると、２倍精度の乗算を実行するのに必要なクロックサイクル数が低減する。異なる大きさのオペランドを含む他の２倍精度の演算も右へシフトするユニット900を使用することによって容易になる。
【００９６】
ＩＩ．    命令設定
Ａ．概要
図９は本発明の例示的実施形態において使用される命令階層を示すブロック図である。ブロック402はＤＳＰの演算を制御する１６、３２、または４８ビットからなる可変長の全命令を示している。さらに可変長の命令は、ブロック403に示したように、一般命令フラグメントとメモリ移動およびプログラムフロー（ＭＭＰＦ、memory move and program flow）命令とを含む命令フラグメントから構成されている。本発明の例示的実施形態において使用された一般命令フラグメントは、ＭＡＣ８、ＭＡＣ16、ＡＬＵ８、ＡＬＵ16、ＤＭＯＶ16、ＤＭＯＶ24、およびＤＬ40の命令フラグメントを含む。ＭＭＰＦ命令フラグメントは、ＯｎｅＭｅｍ11、ＴｗｏＭｅｍ19、ＴｗｏＭｏｖ19、およびＴｈｒｅｅＭｅｍ24の命令フラグメントを含む。ＭＭＰＦ命令フラグメントはブロック406に示したＭＭＰＦ命令サブフラグメントから構成されている。ＭＭＰＦ命令サブフラグメントはＬＤ（Ａ）、ＬＤ（Ｂ）、ＳＴ（Ａ）、ＳＴ（Ｂ）、ＬＳ（Ｃ）、ＤＭＯＶＡ、ＤＭＯＶＢ、およびＰＦ８を含む。種々の全命令、命令フラグメント、および命令サブフラグメントは後でより詳しく記載する。
【００９７】
Ｂ．全命令
発明の好ましい実施例において、DSPは16、32および48ビットの長さを有する全命令を使用して制御される。全命令は１つまたはそれ以上の命令フラグメントを結合することにより形成される。全命令は命令メモリ152内における連続的な記憶およびDSPによる処理を許容するように形成される。全命令のフォーマットおよび構成は、命令フラグメントのフォーマットと構成とにより後続の以下に記述される。演算中、DPSは各クロックサイクル毎に全命令を処理する。かくして、マルチプル演算は各全命令の処理中実行され得るものであり、特定の演算が選択された特定の組の命令フラグメントにより決定される。
【００９８】
発明の例示的実施例に使用された３つの全命令のフォーマットが表３に示される。  
【表３】
2010282637.tif 000005
【００９９】
各全命令のため使用される5ビットヘッダーは全命令の長さ、および全命令の内容に関してのいくらかの付加的な情報を示す。発明の例示的実施例に使用されるヘッダーのフォーマットが表４により提供される。  
【表４】
2010282637.tif 000006
【０１００】
各全命令（16、32および48ビット長）は１つまたはそれ以上の命令フラグメントを含む。表５は発明の例示的実施例において利用可能な命令フラグメントのリストを提供する。命令フラグメントの演算とフォーマットのより詳細な記述は全命令の議論の後に提供される。  
【表５】
2010282637.tif 000007
【０１０１】
表６−８は発明の例示的実施例により48、32および16ビットの全命令内に使用される命令フラグメントの種々の結合を提供する。命令フラグメントの他の結合が発明の使用および演算と合致するが、ここに記述された結合のある特徴は以下により詳細に議論されるように提出される。加えて、全命令の全部または一部が“予約済み” として示される場合、特定の命令結合は記述された実施例において特定されず、または使用されないが、これらの全命令結合の将来の使用が期待される。
【０１０２】
表６はここに記述された発明の例示的実施例により実行したときの16ビット全命令のフォーマットを提供する。全命令は11命令ビットにより後続される５ビットヘッダーからなる。  
【表６】
2010282637.tif 000008
【０１０３】
ヘッダービットは命令の型についてのある情報と同様に命令の長さを示す。00000のヘッダーについて、最下位の３つの末尾ビットが実行される演算をさらに特定するために使用される。特に、000の末尾ビットは残り8ビットがMAC８命令フラグメントを含むことを示す。001の末尾ビットは残り8ビットがALU８命令フラグメントを含むことを示す。他の末尾ビットの結合については命令が特定されない。
【０１０４】
00001のヘッダーについて、残りの11ビットがOneMem11命令フラグメントを含む。ALU、MACまたはメモリ移動演算が実行されることを可能にする16ビット全命令を提供することにより、最も共通の演算が最も短い全命令で実行され得る。最も短い命令は記憶すべき最少量のメモリを要求するので、記述した16ビット全命令の使用により、特定の組の演算を実行するに必要な命令メモリの量が減少する。かくして、DSPの全体サイズ、およびそれ故コストおよび電力消費もまた減少される。
【０１０５】
16ビット命令は、たった１つ、または減少された数の演算が実行され得るような状態のときに典型的に使用される。典型的に、ただ１つの演算を特定するに必要な命令のサイズは減少され得るものであり、したがって１つの演算を実行するために半ワード、即ち16ビット命令の使用である。加えて、16ビット命令は、人が実行することを予期する演算の殆ど全てを包含するメモリ移動またはプログラムフロー演算、ALU 、MACのために使用され得る。
【０１０６】
図７は発明の一実施例により形成されるとき、32ビット全命令の命令フラグメント結合および関連するフォーマットを示す。  
【表７】
2010282637.tif 000009
【０１０７】
上記で注目したように、５つのヘッダービットは、命令フラグメントの特定の結合と同様に全命令の長さを示す。例えば、00010のヘッダーは、残り27命令ビットがThreeMen27命令フラグメントを含むことを示し、00011のヘッダーは、残り27命令ビットがTwoMem19命令フラグメントにより後続されるALU8命令フラグメントを含むことを示す。
【０１０８】
01111のヘッダーについて、最下位の末尾ビットは命令フラグメントの結合をさらに示す。例えば、0の最下位の末尾ビットについて、次の２つの最下位のビットは、残り24ビットがDMOV24、MAC８により後続されるALU16、またはALU８命令フラグメントにより後続されるMAC16を含むか否かを示す。１の最下位の末尾ビットのような他の末尾ビット状態は、予約済み結合を特定する。
【０１０９】
32ビット命令は、最も普通に実行される演算の多くが同時に演算されることを可能にし、それはパイプライニングを容易にし、また命令サイズを減少する。例えば、２つのフェッチ演算およびフィルタリングのような応用のための乗算/累算演算を実行することが共通である。32ビット命令は、演算のかかる組が、命令スペースの十分な48ビットを必要とすることなくパイプラインされた様式において実行されることを可能にする。
【０１１０】
加えて、32ビット命令は、また最大の命令サイズの使用なく、プログラムジャンプおよび呼出し演算と同様にMACおよびALU演算が同時に実行されることを許容する。
【０１１１】
表８は発明の一実施例により実行したときの48ビットの全命令の命令フラグメント結合およびフォーマットを示す。  
【表８】
2010282637.tif 000010
【０１１２】
５つのヘッダ（ｈｅａｄｅｒ）のビットは、特定の命令（ｉｎｓｔｒｕｃｔｉｏｎ）フラグメント（ｆｒａｇｍｅｎｔｓ）結合はもちろん、命令の長さを特定する。例えば、００１００のヘッダのビットは、４３の残っている命令のビットがＤＭＯＶ２４、ＭＡＣ８およびＯｎｅＭｅｍ１１命令フラグメントからなることを示す。１００１１のヘッダのビットは、４３の残っているビットがそれぞれ命令フラグメントのＡＬＵ１６、ＭＡＣ８およびＴｗｏＭｅｍ１９命令フラグメントからなることを示す。
【０１１３】
１１１１１のヘッダビットについて、３つの最下位末尾ビットは、さらに、残りの命令ビットに含まれる命令フラグメントを示す。例えば、０００の末尾ビットは、残りの４０の命令ビットがＭＡＣ１６およびＤＭＯＶ２４命令フラグメントを包含することを示す。００１の末尾ビットは、残りの４０の命令ビットがＭＡＣ８、ＡＬＵ８およびＤＭＯＶ２４命令フラグメントを包含することを示す。１１０の末尾ビットは、残りの４０の命令ビットがＤＬ４０命令フラグメントを包含することを示す。
【０１１４】
４８ビットの全（ｆｕｌｌ）命令中に与えられたこの命令フラグメント結合は、多数の演算が同時に、その結果、連続的に行われる場合よりもより速く行われることを可能にする。例えば、いくつかの４８ビットの全命令は、ＡＬＵ演算と、ＭＡＣ演算と、メモリ演算とが全て同時に行われることを可能にする。このメモリ演算は、ロード（ｌｏａｄ）、ストア（ｓｔｏｒｅ）、データ移動演算を包含し、しばしば、マルチプルメモリ位置が同時にアクセスされることを可能にする。
【０１１５】
この４８ビットの命令は、すべてのパイプラインの方式で、乗算演算がＡＬＵ演算と、データフェッチと、プログラムフロー演算と結合して行われることを可能にする。これは、ＡＬＵ（シフティング（ｓｈｉｆｔｉｎｇ）のような）演算によって追従されるＭＡＣ演算を行うことによって、しばしば行われるスケーリング演算と結合された場合にフィルタリングのために役に立ち得る。ＭＡＣとＡＬＵ演算を使用する他のアプリケーションは、３つもしくは、それ以上のデータストリームを結合することを包含する。特に、３つのバスの使用との結合におけるこの４８ビット命令は、これらの場合の演算のパイプラインを簡易化（ｆａｃｉｌｉｔｉｅｓ）する。
【０１１６】
これによって、シングル４８ビットの全命令で行われ得る演算の数が５つ（ＭＡＣ、ＡＬＵ、ＦＥＴＣＨ１、ＦＥＴＣＨ２、ＳＴＯＲＥ）に効果的に増す。ＤＳＰにおいてマルチプル命令を同時に行う能力は、一般に、ＤＳＰの内部での様々な処理システムを結合するためのマルチプル内部バスとのＤＳＰの使用によってさらに高まる。異なるデータのセットは、異なるバスを使用して同時に移動、並びに、アクセスされ得る。
【０１１７】
行われ得る演算の数に基礎を置く命令の長さを変化させることによって、命令メモリが使用される効率がさらに増す。任意の特定のタスクは、マルチプル演算が同時に行われ得る期間（ｐｅｒｉｏｄ）と、少数もしくは唯一の演算が行われ得る他の期間とを有する。同時に行われ得る演算の数にしたがって、命令の長さを調節することによって、命令のメモリの総数は、減らされる。
【０１１８】
上述の例の方法をタイト（ｔｉｇｈｔ）な命令パッキング（ｐａｃｋｉｎｇ）の使用と結合される場合、要求される命令メモリは、さらに、減らされる。可変長命令、もしくは、タイトにパックされた命令、もしくは、両者の使用は、これらの特徴を実行するために利用可能な回路（ｃｉｒｃｕｉｔ）面積を作ることによってマルチプルバスアーキテクチャと、マルチアクセス（ｍｕｌｔｉ−ａｃｃｅｓｓ）レジスタ（ｒｅｇｉｓｔｅｒ）バンクとの使用を容易にする。このように、本発明のこれらアスペクトの結合は相互依存的に結合して、改良された性能と、改良された効率との利点を同時に有する。
【０１１９】
Ｃ．命令フラグメント
上に記述されたように、全命令は、予め定められた方法で、１つ、もしくはそれより多くの一まとめにされた命令フラグメントのセットからなる。本発明の実施の形態の一例に利用可能な命令フラグメントのセットが、表５に示されている。発明の実施の形態の一例の全命令を使用して利用可能にされた命令フラグメントと結合とは、共に行われる最も可能性のある演算のセットが結合されることを可能にするようにデザインされているので、与えられた演算を行うために必要な命令メモリの総数が、減らされる。
【０１２０】
本発明の実施の形態の一例で使用された様々な命令フラグメントのフォーマットと演算のディスカッションを次に示す。
【０１２１】
Ｃ．１  命令フラグメントのノメンクラチャ（Ｎｏｍｅｎｃｌａｔｕｒｅ）
命令フラグメントとサブフラグメントの次のディスカッションを通して、次のアブレビエーション（ａｂｂｒｅｖｉａｔｉｏｎｓ）は、下の表９と１０とにリストされたレジスタを指示するために使用される。加えて、本発明の実施の形態の一例で使用される特定のビットコード（マッピング）は、左に示される。  
【表９】
2010282637.tif 000011
【表１０】
2010282637.tif 000012
【０１２２】
Ｃ.２ 命令・フラグメント(instruction fragment)の記述
命令・フラグメントのセットは、ＭＡＣ命令・フラグメントの２つのタイプ、即ちＭＡＣ８及びＭＡＣ１６を含んでいる。このＭＡＣ８命令・フラグメントは符号付き−符号なし及び符号付き−符号付きの乗算タイプをサポートしており、その結果はアキュムレータＬ0又はＬ1の中に格納されている。ＭＡＣ８命令フラグメントは、１６ビット全命令を使用して１つのＭＡＣ演算を許すことにより、また、多数の並列命令結合については４８ビット命令の代わりに３２ビット命令に符号化されることをＭＡＣ演算に要求することにより、命令ＲＡＭを節約する。一般に、ＭＡＣ８命令によって実行される処理は、以下の式に従う：
【数１】
2010282637.tif 000013
【０１２３】
式（２）に示す如く、ＭＡＣ８命令・フラグメントはレジスタＬ0又はＬ1の内容がレジスタＲ0，Ｒ2，Ｒ4及びＲ6とレジスタＲ0，Ｒ1，Ｒ3及びＲ5の積と加算されるか、またはレジスタのその積に直接設定されることを可能にする。また、符号付きまたは符号なしの乗算が特定され得る。ＭＡＣ演算が１つのＭＡＣ８命令を用いて実行され得るレジスタの数を制限することによって、命令の長さは８ビットに維持され、複数のＭＡＣ演算が更に短い８ビット命令・フラグメントを用いて実行されることを可能にし得る。
【０１２４】
ＭＡＣ８命令（instruction）によって実行されるこの特別な演算は、表１１に示すように、命令を構成する８ビットの値によって特定されている。  
【表１１】
2010282637.tif 000014
【０１２５】
ＳＵ／ＳＳは、符号付きまたは符号なし乗算を指定する。ＭＡＣ８命令フラグメント(instructuon fragment)内の様々な演算のためのコードは、表１２にリストされている。  
【表１２】
2010282637.tif 000015
【０１２６】
このように、０ｘ９９というＭＡＣ８命令により、レジスタＲ０とＲ３との符号のない積と、レジスタＬ０の内容との和はレジスタL0中に配置される。
【０１２７】
ＭＡＣ１６命令フラグメントは、付加的なレジスターが乗算-累算演算において用いられることを可能にするによって、付加的な順応性（flexibility）を提供している。式（３）は、ＭＡＣ１６命令フラグメントを用いて実行可能な演算を示している。  
【数２】
2010282637.tif 000016
【０１２８】
アキュムレーターの結合の全てが乗算・累算命令で使えるわけではないが、たとえば、あらゆるアキュムレーター (L0-L3)が、あて先として使用されることができる。ＣＰＳフィールドは、双対プロセッサが特別な演算を並列に実行するべき信号を送信する。このＭＡＣ１６命令により実行される特別な演算は、表１３に示されている命令を構成する１６ビットの値によって指定されている。  
【表１３】
2010282637.tif 000017
【０１２９】
ＭＡＣ１６命令フラグメント内の様々な演算を指定するための複数のコードは、表１４にリストされている。  
【表１４】
2010282637.tif 000018
【０１３０】
ＭＡＣ１６命令フラグメントは３までの左シフトを可能とし、ストレート乗算(累算なし)の間にまるめ動作を実行でき、該丸めは該シフトの後で発生する。累算が実行されると、加算されるべきアキュムレータは符号付きー符号付き掛け算と並行して１６だけシフトダウンされることができる。ＣＰＳビットは、MAC演算中で使用されるデータが双対プロセッサに送られるべきことを表示するための双対プロセッサ・ストローブビットである。
【０１３１】
ＭＡＣ８命令フラグメントは、ＭＡＣ１６により実行され得る演算のサブセットを実行することに留意せねばならない。ＭＡＣ８命令フラグメントのために選択された特別の組の命令はＭＡＣ１６命令フラグメントを使用して実行され得る演算のセット中最も共通して実行されるものである。これは、MAC演算の大多数がMAC８命令フラグメントを使用して実行されることを可能とすることにより、プログラムメモリをセーブする。
【０１３２】
８ビットＡＬＵ８命令フラグメントは、MAC演算(ＭＡＣ８とＭＡＣ１６)と最も共通して並行にされるＡＬＵ演算を有しており、それはイミディエットを含まない。全てのＡＬＵ８シフト演算は、命令符号化ビットをセーブするために内部シフトレジスタ（ＳＲ）レジスタを使用する算術シフトである。ALU８命令フラグメントを使用して実行される演算が表１５に示される。  
【表１５】
2010282637.tif 000019
【０１３３】
ＡＬＵ８命令フラグメントにより実行される特別の演算は、表16に示される命令フラグメントを作成する８ビットの値により特定される。  
【表１６】
2010282637.tif 000020
【０１３４】
ALU８命令フラグメントを使用して実行される演算を特定するために使用される特別のコードが、表１７に示される。  
【表１７】
2010282637.tif 000021
【０１３５】
ＡＬＵ１６命令フラグメントは、算術及び論理シフトの両者でよい。ＡＬＵ１６命令フラグメントにより実行される特別の演算が表１８に示される。  
表記＜＜は、算術シフトを意味するが、＜＜＜は論理シフトを意味する。  
【表１８】
2010282637.tif 000022
【０１３６】
ALU16命令フラグメントのフォーマットは、表１９に示される。  
【表１９】
2010282637.tif 000023
【０１３７】
ＡＬＵ１６命令フラグメントにより実行される特別の演算は、表２０に示された命令フラグメントを作成するビットの値により特定される。  
【表２０】
2010282637.tif 000024
【０１３８】
ＤＭＯＶ16命令フラグメントは、表２１に示される異なるデータ移動、データインポートとデータアウトポート演算、を実行するための１６ビット命令フラグメントである。  
【表２１】
2010282637.tif 000025
【０１３９】
ＤＭＯＶ１６命令フラグメントを使用して利用可能な演算を実行するために使用されるフォーマットとコードは、表２２に示される。  
【表２２】
2010282637.tif 000026
【０１４０】
命令ＯＵＴＰＯＲＴＡ(port  adder)はＡｂｕｓ上の値を読み、そしてそれを指定されたポートに出力する。同時にメモリＡからの値を読むことにより、この命令は、メモリＡから該ポートへ直接に値を送るために使用されることが出来る。ＯＵＴＰＯＲＴＢ（port  addr）は同様に動作する。
【０１４１】
ＤＭＯＶ２４命令フラグメントは、表２３に示される異なるロード／ストアー・レジスタダイレクト、又はロード・レジスタイミディエット演算を実行するための２４ビット命令フラグメントである。  
【表２３】
2010282637.tif 000027
【０１４２】
表２４は、本発明の例示的な実施態様に従って、ＤＭＯＶ２４命令フラグメントを使用して利用可能な種々の演算を実行するために使用されるフォーマットといくつかのコードを提供する。  
【表２４】
2010282637.tif 000028
【０１４３】
他の命令フラグメントと同様にＤＭＯＶ２４に関して、幾つかの演算は二度符号化されることが留意されねばならない。例えば、列（ｉ）と（ｊ）に特定されたフォーマットは、同じ演算を符号化する。一つはイミディエットバスＩｍ１の使用を特定し、他はイミディエットバスＩｍ２の使用を特定する。二度の符号化は、命令フラグメントがより多くの種類の他の命令フラグメントと結合されることを許容し、これは同様にイミディエットバス１又はイミディエットバス２の使用を要求する可能性がある。
【０１４４】
４0ビット・デュアル・ロード命令フラグメント（ＤＬ４０）は、イミディエットロード又はアドレスロード演算を実行するための４0ビット命令フラグメントである。本発明の例示的な実施態様において実行される特別の演算が表２５に示される。  
【表２５】
2010282637.tif 000029
【０１４５】
各演算のためのＤＬ４0命令フラグメントフォーマットは、表２６に提供される。  
【表２６】
2010282637.tif 000030
【０１４６】
表５にまた示されるように、メモリ移動及びプログラムフロー命令フラグメントの４つのタイプが、本発明の例示的な実施態様中に提起される。そのリストは表２７に提供される。  
【表２７】
2010282637.tif 000031
【０１４７】
各メモリ移動とプログラムフロー命令(ＭＭＰＦ)フラグメントは、表２８にリストされた１組のＭＭＰＦサブフラグメントからなる。  
【表２８】
2010282637.tif 000032
【０１４８】
ＭＭＰＦ命令フラグメントのフォーマットと演算は、まず議論され、ＭＭＰＦサブフラグメントのフォーマットと演算のより詳細な議論が続いて行われた。
【０１４９】
ＯｎｅＭｅｍ１１  ＭＭＰＦ命令フラグメントは、単一のメモリロードとストア演算、データ移動演算、及びプログラムフロー演算を実行するために使用される。ここに提供された例示的な実施態様において、８つの異なる演算はＯｎｅＭｅｍ１１  ＭＭＰＦ命令フラグメントを使用して実行され、特別の演算が表２９に示される１１ビットフラグメントの最初の３ビットにより表示され、それはＯｎｅＭｅｍ１１データ移動命令フラグメントを使用して実行されることができる演算をリストする。  
【表２９】
2010282637.tif 000033
【０１５０】
ＴｗｏＭｅｍ１９  ＭＭＰＦ命令フラグメントは、１９ビット命令フラグメントであり、それはメモリロードとストア演算の８つの異なる結合が、表３０に示されたように実行されることを可能とする。  
【表３０】
2010282637.tif 000034
【０１５１】
ＴｗｏＭｏｖ１９  ＭＭＰＦ命令フラグメントは、１９ビット命令フラグメントであり、それは表３１に示されるデータ移動演算と一緒にメモリロードとストア演算の８つの異なる結合を可能とする。  
【表３１】
2010282637.tif 000035
【０１５２】
ＴｈｒｅｅＭｅｍ２７  ＭＭＰＦ命令フラグメントは、２７ビット命令フラグメントであり、それは、メモリロード、メモリストア、及びデータ演算の８つの異なる結合が表３２に示されるように実行されることを可能とする。  
【表３２】
2010282637.tif 000036
【０１５３】
式（４）は、ＬＤ（Ａ）命令サブフラグメントにより実行される演算を提供する。  
【数３】
2010282637.tif 000037
【０１５４】
表３３は、本発明の例示的な実施態様に従ってＬＤ（Ａ）命令サブフラグメントのフォーマットを提供する。  
【表３３】
2010282637.tif 000038
【０１５５】
式（５）は、ＬＤ（ｂ）命令サブフラグメントにより実行される演算を提供する。  
【数４】
2010282637.tif 000039
【０１５６】
表３４は、本発明の例示的な実施態様に従うＬＤ（Ｂ）命令サブフラグメントのフォーマットを提供する。  
【表３４】
2010282637.tif 000040
【０１５７】
式（６）は、ＳＴ（Ａ）命令サブフラグメントにより実行される演算を提供する。  
【数５】
2010282637.tif 000041
【０１５８】
表３５は、本発明の例示的な実施態様に従うＳＴ（Ａ）命令サブフラグメントのフォーマットを提供する。  
【表３５】
2010282637.tif 000042
【０１５９】
式（７）は、ＳＴ（Ｂ）命令サブフラグメントにより実行される演算を提供する。  
【数６】
2010282637.tif 000043
【０１６０】
表３６は、本発明の例示的な実施態様に従うＳＴ（Ｂ）命令サブフラグメントのフォーマットを提供する。  
【表３６】
2010282637.tif 000044
【０１６１】
表３７は、ＤＭＯＶＡ命令サブフラグメントにより実行される演算をリストする。  
【表３７】
2010282637.tif 000045
【０１６２】
表３８は、本発明の例示的な実施態様に従うＤＭＯＶＡ命令サブフラグメントのフォーマットを提供する。  
【表３８】
2010282637.tif 000046
【０１６３】
このように、一つ以上の命令サブフラグメントを有することができるＭＭＰＦ命令フラグメントを提供することにより、全命令を使用して実行されることができる演算の数は、さらに高められる。例えば、全命令により、算術及びＭＡＣ演算は３つまでのメモリ移動とプログラムフロー演算の組と一緒に実行されることができる。一つの命令を使用してこの多くの演算を実行する能力は、与えられた演算を実行するために必要な命令の総数をさらに減じ、それ故にＤＳＰに要求される総命令メモリを減少する。命令メモリを減じることは、ダイサイズを減じ、それ故にＤＳＰのコストと電力消費を減少する。それによって、そのＤＳＰは移動無線電話を含む幅広い種々の応用により適したものになる。
【０１６４】
このように、高度並列可変長命令セットを使用してＤＳＰを制御するためのシステムと方法が説明された。好ましい実施態様についての前の説明は、当業者が本発明をつくり使用することを可能とする。それらの実施態様への種々の変更は当業者に容易に明らかであり、ここに明記された一般的な原理は発明能力を使用することなく他の実施態様に適用されることができる。例えば、該システムと方法はＤＳＰの文脈において開示されたが、種々の観点が一般のコンピュータシステムと装置に適用可能である。
【０１６５】
好ましい実施態様を参照することにより、本発明を説明したが、該当する実施態様は単に例示的なものであり、適当な知識と技術を有するものには種々の変形がクレームに記載された本願発明の範囲と精神とその均等物から離れることなくなされることができる。
【図１】
2010282637.tif 000047
【図２】
2010282637.tif 000048
【図３】
2010282637.tif 000049
【図４】
2010282637.tif 000050
【図５】
2010282637.tif 000051
【図６】
2010282637.tif 000052
【図７】
2010282637.tif 000053
【図８】
2010282637.tif 000054
【図９】
2010282637.tif 000055
【手続補正書】
【提出日】平成22年8月9日(2010.8.9)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
デジタル信号には１組が含まれ、命令データに応答してデジタル信号を処理するデジタル信号プロセッサにおいて、
第１のメモリとレジスタバンクとの間でデータを読み出しおよび書き込む第１のデータバスと、
第２のメモリと前記レジスタバンクとの間でデータを読み出しおよび書き込む第２のデータバスと、
第３のメモリと前記レジスタバンクとの間でデータを読み出しおよび書き込む第３のデータバスとを具備し、
ここにおいて、前記第１のデータバス、前記第２のデータバス、前記第３のデータバスは同時に動作するデジタル信号プロセッサ。
【請求項２】
前記レジスタバンク中に記憶されているデータを処理する処理ユニットをさらに具備する請求項１記載のデジタル信号プロセッサ。
【請求項３】
１組の演算を要求する可変長の命令をフェッチする命令フェッチユニットと、
前記可変長の命令を復号し、前記１組の演算を実行させる命令復号器とをさらに具備する請求項１記載のデジタル信号プロセッサ。
【請求項４】
前記第１の処理ユニットと同時に前記レジスタバンク中のデータを処理する第２の処理ユニットをさらに具備する請求項１記載のデジタル信号プロセッサ。
【請求項５】
第１のデータバスを通して第１のデータ値を受け取り、
第２のデータバスを通して第２のデータ値を受け取り、
前記第１のデータ値と前記第２のデータ値を使用して結果を発生し、
第３のデータバスを通して前記結果をメモリに書き込むステップを含むデータを処理する方法。
【請求項６】
前記第３のデータバスは前記第１のデータバスよりも幅が広い請求項５記載の方法。
【請求項７】
前記第３のバスは前記第１のバスよりも幅が広い請求項５記載の方法。
【請求項８】
第１のレジスタ中に前記第１のデータ値を記憶し、
第２のレジスタ中に前記第２のデータ値を記憶し、
第３のレジスタ中に前記結果を記憶するステップをさらに含む請求項５記載の方法。
【請求項９】
第１の処理ユニットを使用して前記結果を発生し、
前記第３のレジスタに結合された第２の処理ユニットを使用して前記第１の結果から第２の結果を発生するステップをさらに含む請求項８記載の方法。
【請求項１０】
デジタル信号を処理するデジタル信号プロセッサにおいて、
第１の入力データと第２の入力データに応答して結果データを発生する処理ユニットと、
前記第１の入力データを前記処理ユニットに送る第１のデータバスと、
前記第２の入力データを前記処理ユニットに送る第２のデータバスと、
前記結果データを送る第３のデータバスとを具備するデジタル信号プロセッサ。
【請求項１１】
前記第１の入力データを読み出すために前記第１のデータバスに結合された第１のメモリシステムと、
第２のメモリシステムを読み出すために前記第２のデータバスに結合された第２のメモリシステムと、
前記結果データを書き込むために前記第３のデータバスに結合された第３のメモリシステムとをさらに具備する請求項１０記載のデジタル信号プロセッサ。
【請求項１２】
前記第１のデータバスは前記第３のデータバスよりも幅が狭い請求項１０記載のデジタル信号プロセッサ。
【請求項１３】
前記第１のデータバスおよび前記第２のデータバスは前記第３のデータバスよりも幅が狭い請求項１０記載のデジタル信号プロセッサ。
【請求項１４】
前記第１のデータバス、前記第２のデータバス、前記第３のデータバス、前記処理ユニットに結合され、前記第１のデータと前記第２のデータを記憶する第１のレジスタと、
前記結果データを記憶する第２のレジスタと、
前記第２のレジスタに結合され、前記結果データを処理する第２の処理ユニットとをさらに具備する請求項１０記載のデジタル信号プロセッサ。
【請求項１５】
前記第１のデータバス、前記第２のデータバス、前記第３のデータバスを制御する制御システムをさらに具備する請求項１４記載のデジタル信号プロセッサ。
【請求項１６】
前記第１の処理ユニットは乗算累算ユニットであり、前記第２の処理ユニットは演算論理ユニットである請求項１４記載のデジタル信号プロセッサ。
【請求項１７】
少なくとも３つのデータバスを有する１組のデータバスと、
前記１組のデータバス中の各データバスからデータを受け取る複数の処理ユニットとを具備するデジタル信号プロセッサ。
【請求項１８】
前記複数の処理ユニット中の第１の処理ユニットは乗算累算ユニットであり、前記複数の処理ユニット中の前記第２の処理ユニットは演算論理ユニットである請求項１７記載のデジタル信号プロセッサ。
【請求項１９】
データを記憶するメモリユニットと、
１組のレジスタを備え、データを記憶するレジスタバンクとをさらに具備し、
ここにおいて、前記１組のデータバスは対応するデータの組を対応するレジスタに読み込む請求項１７記載のデジタル信号プロセッサ。
【請求項２０】
データを記憶するメモリユニットと、
１組のレジスタを備え、データを記憶するレジスタバンクとをさらに具備し、
ここにおいて、前記１組のデータバスは対応するデータの組を対応するレジスタに書き込む請求項１７記載のデジタル信号プロセッサ。
【請求項２１】
それぞれが１つの演算を要求する１組の命令フラグメントを有する可変長の命令を使用してデジタル信号プロセッサを動作させる方法において、
（ａ）第１のクロックサイクルの第１のクロックフェーズ中に、前に処理されたデータを第１のレジスタから第１の処理ユニットに読み込み、
（ｂ）前記１組の命令フラグメント中の第１の命令フラグメントに基づいて前記前に処理されたデータを処理し、前記第１のクロックサイクル中に、２度処理されたデータを生成し、
（ｃ）前記１組の命令フラグメント中の第２の命令フラグメントに基づいて新しいデータを処理し、前記第１のクロックサイクル中に、新しく処理されたデータを生成し、
（ｄ）前記第１のクロックサイクルの第２のフェーズ中に、前記新しく処理されたデータを前記第１のレジスタに書き込み、
（ｅ）前記第１のクロックサイクルの第２のフェーズ中に、前記２度処理されたデータを第２のレジスタに書き込むステップを含む方法。
【請求項２２】
ステップ（ｂ）は第１の処理ユニットにより実行され、ステップ（ｃ）は第２の処理ユニットにより実行される請求項２１記載の方法。
【請求項２３】
前記可変長の命令を含む命令データを読み出し、
次の命令長を決定し、
前記次の命令長に等しい前記命令データ中のデータ量を復号するステップを含む請求項２１記載の方法。
【請求項２４】
第１の処理ユニットと、
第２の処理ユニットと、
前記第１の処理ユニットおよび前記第２の処理ユニットに読み出し可能に結合されたレジスタとを具備するマイクロプロセッサ。
【請求項２５】
前記レジスタに結合されたデータバスと、
前記データバスに結合されたデータメモリとをさらに具備する請求項２４記載のマイクロプロセッサ。
【請求項２６】
前記第１の処理ユニットに結合されているが、前記第２の処理ユニットには結合されていない第２のレジスタと、
前記第２の処理ユニットに結合されているが、前記第１の処理ユニットには結合されていない第３のレジスタとをさらに具備する請求項２４記載のマイクロプロセッサ。
【請求項２７】
前記レジスタは２つのフェーズクロックサイクルで動作し、前記レジスタは前記２つのフェーズクロックサイクルの第１のフェーズ中に読み出され、前記レジスタは前記２つのフェーズクロックサイクルの第２のフェーズ中に書き込まれる請求項２４記載のマイクロプロセッサ。
【請求項２８】
前記第１の処理ユニットを前記レジスタに第１の構成で結合し、前記第２の処理ユニットを前記レジスタに第２の構成で結合するマルチプレクサをさらに具備する請求項２４記載のマイクロプロセッサ。
【請求項２９】
命令データに基づいて前記マルチプレクサを構成する制御システムをさらに具備する請求項２８記載のマイクロプロセッサ。
【請求項３０】
前記第１の処理ユニットは乗算アキュムレータである請求項２４記載のマイクロプロセッサ。
【請求項３１】
前記第１の処理ユニットは演算論理ユニットである請求項３０記載のマイクロプロセッサ。
【請求項３２】
第１のデータメモリと、
第２のデータメモリと、
前記第１のデータメモリと前記レジスタとに結合された第１のバスと、
前記第２のデータメモリと前記レジスタとに結合された第２のバスとをさらに具備する請求項２４記載のマイクロプロセッサ。
【請求項３３】
前記レジスタは前記レジスタの出力を通して前記第１の処理ユニットと前記第２の処理ユニットとに結合され、前記第１の処理ユニットの出力は前記レジスタの入力に結合されている請求項２４記載のマイクロプロセッサ。
【請求項３４】
デジタル信号プロセッサを動作させる方法において、
第１のクロックサイクルの第１のクロックフェーズ中に、処理されたデータをレジスタから第１の処理ユニットに読み込み、
前記第１のクロックサイクル中に、前記第１の処理ユニットを使用して前記処理されたデータを処理して、さらに処理されたデータを生成し、
前記第１のクロックサイクル中に、第２の処理ユニット中の他のデータを処理して、新しく処理されたデータを生成し、
前記第１のクロックサイクルの第２のフェーズ中に、前記新しく処理されたデータを前記レジスタに書き込むステップを含む方法。
【請求項３５】
前記第１のクロックサイクルの前記第２のフェーズ中に、前記さらに処理されたデータを第２のレジスタに書き込むステップをさらに含む請求項３４記載の方法。
【請求項３６】
データを処理する第１の処理ユニットと、
データを処理する第２の処理ユニットと、
前記第１の処理ユニットと前記第２の処理ユニットの両方にデータを書き込むことができる第１組のレジスタと、
前記第１の処理ユニットにはデータを書き込むことができるが、前記第２の処理ユニットにはデータを書き込むことができない第２組のレジスタとを具備するデジタル信号プロセッサ。
【請求項３７】
前記第１の処理ユニットは乗算累算ユニットであり、前記第２の処理ユニットは演算論理ユニットである請求項３６記載のデジタル信号プロセッサ。
【請求項３８】
アドレス空間を有するメモリ中に記憶された命令を使用してデジタル信号プロセッサを制御する方法において、
第１の命令の第１の部分を含むメモリの第１のデータワードを書き出し、
第１の命令の第２の部分と第２の命令の第１の部分を含むメモリの第２のデータワードを書き出すステップを含む方法。
【請求項３９】
前記第１の命令は複数の命令フラグメントから構成され、各命令フラグメントは特定の演算を実行する請求項３８記載の方法。
【請求項４０】
前記第１の命令と前記第２の命令は異なる長さである請求項３８記載の方法。
【請求項４１】
前記第１の命令と前記第２の命令は複数組の命令フラグメントから構成され、各命令フラグメントは特定の演算を実行する請求項３８記載の方法。
【請求項４２】
前記命令フラグメントには第１の命令フラグメントと第２の命令フラグメントとが含まれ、前記第１の命令フラグメントは１組の演算を要求し、１組の演算は前記第２の命令フラグメントにより実行される１組の演算のサブセットである請求項４１記載の方法。
【請求項４３】
前記第１の命令フラグメントは前記第２の命令フラグメントよりも短い請求項４２記載の方法。
【請求項４４】
デジタル信号プロセッサを制御するシステムにおいて、
フロントエッジワード境界を有するアドレスワードでアドレス可能なアドレス空間を持つメモリと、
前記メモリに記憶された１組の可変長の命令と、前記可変長の命令のそれぞれがフロントエッジ命令境界を有する、具備し、
ここにおいて、前記フロントエッジ命令境界の第１の部分は前記フロントエッジワード境界に対応し、前記フロントエッジ命令境界の第２の部分は前記フロントエッジワード境界と異なっているシステム。
【請求項４５】
前記可変長の命令は可変数の命令フラグメントを含む請求項４４記載のシステム。
【請求項４６】
前記可変長の命令は各可変長の命令がどれ位長いかを示すヘッダを含む請求項４４記載のシステム。
【請求項４７】
前記メモリは前記デジタル信号プロセッサの命令メモリ内に配置されている請求項４４記載のシステム。
【請求項４８】
デジタル信号プロセッサを制御するシステムにおいて、
バックエッジワード境界を有するアドレスワードでアドレス可能なアドレス空間を持つメモリと、
前記メモリに記憶された１組の可変長の命令と、前記可変長の命令のそれぞれがバックエッジ命令境界を有する、具備し、
ここにおいて、前記バックエッジ命令境界の第１の部分は前記バックエッジワード境界に対応し、前記バックエッジ命令境界の第２の部分は前記バックエッジワード境界と異なっているシステム。
【請求項４９】
前記可変長の命令は可変数の命令フラグメントを含む請求項４８記載のシステム。
【請求項５０】
前記可変長の命令は各可変長の命令がどれ位長いかを示すヘッダを含む請求項４８記載のシステム。
【請求項５１】
前記メモリは前記デジタル信号プロセッサの命令メモリ内に配置されている請求項４８記載のシステム。
【請求項５２】
マイクロプロセッサを制御するシステムにおいて、
命令データを記憶し、アドレス空間を有するメモリと、
演算を要求する複数の可変長の命令とを具備し、
前記複数の可変長の命令の実質的な部分は前記アドレス空間のほぼ連続した位置に配置されているシステム。
【請求項５３】
１０より多い命令が前記メモリ内のほぼ連続した位置に配置されている請求項５２記載のシステム。
【請求項５４】
前記命令の９０パーセントより多い命令が前記メモリ空間内のほぼ連続した位置に配置されている請求項５２記載のシステム。
【請求項５５】
前記命令の２５パーセントより多い命令が前記メモリ空間内のほぼ連続した位置に配置されている請求項５２記載のシステム。
【請求項５６】
前記可変長の命令はどれ位多くの命令データが可変長の命令に存在しているかにしたがって変化する請求項５２記載のシステム。
【請求項５７】
集積回路を制御する方法において、
（ａ）実行すべき１組の演算に対応する１組の命令フラグメントを発生し、
（ｂ）同時に実行することができる前記命令フラグメントを命令フラグメント組にグループ分けし、
（ｃ）その可変長の命令がどれ位長い可変長の全命令を生成するかを示すヘッダを各命令フラグメント組に付加し、
（ｄ）前記可変長の全命令をアドレス空間の連続したアドレスで前記集積回路に書き込むステップを含み、
ここにおいて、前記アドレス空間はワード境界を有する方法。
【請求項５８】
前記可変長の命令は１６ビットの命令、３２ビットの命令、４８ビットの命令から構成されている請求項５７記載の方法。
【請求項５９】
各ヘッダは前記可変長の全長の命令内で最上位の位置に配置され、５ビットから構成されている請求項５７記載の方法。
【請求項６０】
前記命令フラグメントのサブセットは、１つ、２つあるいは３つの命令フラグメントを含むことができる請求項５７記載の方法。
【請求項６１】
デジタル信号プロセッサを制御する方法において、
（ａ）減少された数の演算が並列に処理されるべきときに短い命令を発生し、
（ｂ）より多い数の演算が並列に処理されるべきときに長い命令を発生するステップを含む方法。
【請求項６２】
前記短い命令と前記長い命令はアドレスワード境界を有するメモリ中の連続した位置に記憶される請求項６１記載の方法。
【請求項６３】
ステップ（ａ）は、
他の任意の演算と同時に実行できない演算を識別し、
命令フラグメントと、短い命令がどれ位の長さかを示すヘッダとから前記短い命令を構成するステップからなる請求項６１記載の方法。
【請求項６４】
ステップ（ｂ）は、
同時に実行できる１組の演算を識別し、
前記１組の演算を実行する１組の命令フラグメントと、長い命令がどれ位の長さかを示すヘッダとから前記長い命令を構成するステップからなる請求項６１記載の方法。
【請求項６５】
前記ヘッダは５ビットから構成されている請求項６３記載の方法。
【請求項６６】
前記ヘッダは５ビットから構成されている請求項６４記載の方法。
【請求項６７】
可変数の命令フラグメントを含む可変長の命令を処理する方法において、
（ａ）可能な最大長の可変長命令を含むのに十分な大きさの第１組の命令データを読み出し、
（ｂ）前記第１組の命令データ内に記憶されている第１の可変長の命令を処理し、
（ｃ）未処理の命令データ量が前記可能な最大長よりも少ないときに付加的な命令データをロードするステップを含む方法。
【請求項６８】
ステップ（ａ）は、
第１のデータワードを読み出し、
第２のデータワードを読み出すステップから構成されている請求項６７記載の方法。
【請求項６９】
ステップ（ｃ）は、
未処理の命令データ量が前記可能な最大長の１つの命令ワード内であるときに１つの命令ワードを読み出し、
未処理の命令データ量が前記可能な最大長よりも少ない１つより多くの命令ワードであるときに２つの命令ワードを読み出すステップを含む請求項６８記載の方法。
【請求項７０】
メモリ内のほぼ連続したメモリ空間中に間隔をあけられた複数の可変長の命令を具備し、
前記複数の可変長の命令中の各命令は、
命令の長さを示すヘッダと、
実行すべき演算を特定する本体部とを有するメモリ。
【請求項７１】
デジタル信号プロセッサ中の命令データを処理する制御システムにおいて、
ワードでアドレス可能な第１のメモリバンクと第２のメモリバンクとを備え、未処理の命令データを記憶し、前記命令データは最大命令長を有する命令メモリと、
前記命令メモリから読み出す命令レジスタと、
前記命令レジスタ中の未処理の命令データ量が前記最大命令長の１つのワード内であるときに、命令データの１つのワードを前記命令メモリから前記命令レジスタにロードし、前記最大命令長と前記命令レジスタ中の前記未処理データとの間に１つよりも多いワードの不足があるときに命令データの２つのワードを前記命令メモリから前記命令レジスタにロードする制御システムとを具備する制御システム。
【請求項７２】
１組の回転された構成のうちの１つで前記命令レジスタ中に記憶されたデータを出力する回転子をさらに具備し、
ここにおいて、前記制御システムはさらに、前記命令レジスタからの未処理データを前記回転子を使用して最上位位置に保持する請求項７１記載の制御システム。
【請求項７３】
前記可変長の命令は前記ワード以下の長さを有する請求項７１記載の制御システム。
【請求項７４】
前記可変長の命令はフロントエッジ命令境界とバックエッジ命令境界を有し、前記可変長の命令は、メモリアドレス空間中で相互に隣接する２つの連続した命令のフロントエッジ命令境界とバックエッジ命令境界を有する前記命令メモリ内で、ワード境界間に記憶される請求項７１記載の制御システム。
【請求項７５】
前記可変長の命令は可変数の命令フラグメントを含み、各命令フラグメントは特定の演算を実行する請求項７１記載の制御システム。
【請求項７６】
データを記憶するレジスタバンクと、
前記データに乗算累算演算を実行する乗算累算ユニットと、
前記乗算累算ユニットの入力に結合され、第１の構成で入力データをシフトし、第２の構成で前記入力データを通過させるシフトユニットとを具備するデジタル信号プロセッサ。
【請求項７７】
前記シフトユニットは前記入力データをシフトし、前記乗算累算ユニットは単一の処理サイクル中に前記乗算累算演算を実行する請求項７６記載のデジタル信号プロセッサ。
【請求項７８】
下位１６ビットＡｌおよび上位１６ビットＡｈを有する３２ビット数Ａと、１６ビット数Ｂとに２倍精度乗法演算を実行するシステムにおいて、
（ａ）第１のクロックサイクル中にＢによりＡｌを乗算して、第１の中間値Ｉ１を生成し、
（ｂ）１６ビットだけ右に前記中間値Ｉ１をシフトして、シフトされた中間値ＳＩ１を生成し、
（ｃ）ＢとＡｈを乗算して、第２の中間値Ｉ２を生成し、
（ｄ）Ｉ２に前記シフトされた中間値ＳＩ１を加算し、
ここにおいて、ステップ（ｂ）−（ｄ）は第２のクロックサイクル中に実行されるシステム。
【請求項７９】
メモリと処理装置との間の可変長のデータの転送が最適化されるように選択された第２の複数の選択可能なバスを通して第１の複数の処理装置とメモリが接続可能であるデジタル信号プロセッサ。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０１６５
【補正方法】変更
【補正の内容】
【０１６５】
好ましい実施態様を参照することにより、本発明を説明したが、該当する実施態様は単に例示的なものであり、適当な知識と技術を有するものには種々の変形がクレームに記載された本願発明の範囲と精神とその均等物から離れることなくなされることができる。  
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
[1]可変数の命令フラグメントを含む可変長命令に応答してデジタル信号処理を実行するデジタル信号プロセッサにおいて、
命令データが可変長命令を含み、少なくとも１つの最大長の完全な命令にとって十分な命令データをフェッチする命令フェッチユニットと
前記命令を復号して、制御信号を発生する命令復号器と、
処理すべきデータを記憶するレジスタバンクと、
第１のデータを記憶する第１のメモリバンクと、
第２のデータを記憶する第２のメモリバンクと、
第３のデータを記憶する第３のメモリバンクと、
前記第１のデータを前記レジスタバンク中の第１のレジスタに読み込む第１のデータバスと、
前記第２のデータを前記レジスタバンク中の第２のレジスタに読み込む第２のデータバスと、
前記第１および第２のレジスタ中の処理すべきデータを処理し、結果を前記レジスタバンク中の第３のレジスタに書き込む第１の処理ユニットと、
前記結果を前記第３のレジスタから前記第３のメモリに書き込む第３のデータバスとを具備するデジタル信号プロセッサ。
[2]前記結果を処理することによりさらに処理された結果を発生し、前記結果を前記レジスタバンク中の第４のレジスタに記憶させる第２の処理ユニットをさらに具備し、ここにおいて、前記第３のデータバスは前記さらに処理された結果を前記第４のレジスタから前記第３のメモリにさらに書き込む上記[1]記載のデジタル信号プロセッサ。
[3]前記第３のデータバスは前記第１のデータバスおよび前記第２のデータバスより幅が広い上記[1]記載のデジタル信号プロセッサ。
[4]前記レジスタバンク中の第１組のレジスタは前記第１の処理ユニットおよび前記第２の処理ユニットの両方に書き込むことができ、前記レジスタバンク中の第２組のレジスタは前記第１の処理ユニットまたは前記第２の処理ユニットの組のうちの１つに書き込むことができる上記[2]記載のデジタル信号プロセッサ。
[5]前記レジスタバンク中の第１組のレジスタは前記第１の処理ユニットおよび前記第２の処理ユニットの両方から読み出すことができ、前記レジスタバンク中の第２組のレジスタは前記第１の処理ユニットまたは前記第２の処理ユニットの組のうちの１つから読み出すことができる上記[2]記載のデジタル信号プロセッサ。
[6]デジタル信号には１組が含まれ、命令データに応答してデジタル信号を処理するデジタル信号プロセッサにおいて、
第１のメモリとレジスタバンクとの間でデータを読み出しおよび書き込む第１のデータバスと、
第２のメモリと前記レジスタバンクとの間でデータを読み出しおよび書き込む第２のデータバスと、
第３のメモリと前記レジスタバンクとの間でデータを読み出しおよび書き込む第３のデータバスとを具備し、
ここにおいて、前記第１のデータバス、前記第２のデータバス、前記第３のデータバスは同時に動作するデジタル信号プロセッサ。
[7]前記レジスタバンク中に記憶されているデータを処理する処理ユニットをさらに具備する上記[6]記載のデジタル信号プロセッサ。
[8]１組の演算を要求する可変長の命令をフェッチする命令フェッチユニットと、
前記可変長の命令を復号し、前記１組の演算を実行させる命令復号器とをさらに具備する上記[6]記載のデジタル信号プロセッサ。
[9]前記第１の処理ユニットと同時に前記レジスタバンク中のデータを処理する第２の処理ユニットをさらに具備する上記[6]記載のデジタル信号プロセッサ。
[10]第１のデータバスを通して第１のデータ値を受け取り、
第２のデータバスを通して第２のデータ値を受け取り、
前記第１のデータ値と前記第２のデータ値を使用して結果を発生し、
第３のデータバスを通して前記結果をメモリに書き込むステップを含むデータを処理する方法。
[11]前記第３のデータバスは前記第１のデータバスよりも幅が広い上記[10]記載の方法。
[12]前記第３のバスは前記第１のバスよりも幅が広い上記[10]記載の方法。
[13]第１のレジスタ中に前記第１のデータ値を記憶し、
第２のレジスタ中に前記第２のデータ値を記憶し、
第３のレジスタ中に前記結果を記憶するステップをさらに含む上記[10]記載の方法。
[14]第１の処理ユニットを使用して前記結果を発生し、
前記第３のレジスタに結合された第２の処理ユニットを使用して前記第１の結果から第２の結果を発生するステップをさらに含む上記[13]記載の方法。
[15]デジタル信号を処理するデジタル信号プロセッサにおいて、
第１の入力データと第２の入力データに応答して結果データを発生する処理ユニットと、
前記第１の入力データを前記処理ユニットに送る第１のデータバスと、
前記第２の入力データを前記処理ユニットに送る第２のデータバスと、
前記結果データを送る第３のデータバスとを具備するデジタル信号プロセッサ。
[16]前記第１の入力データを読み出すために前記第１のデータバスに結合された第１のメモリシステムと、
第２のメモリシステムを読み出すために前記第２のデータバスに結合された第２のメモリシステムと、
前記結果データを書き込むために前記第３のデータバスに結合された第３のメモリシステムとをさらに具備する上記[15]記載のデジタル信号プロセッサ。
[17]前記第１のデータバスは前記第３のデータバスよりも幅が狭い上記[15]記載のデジタル信号プロセッサ。
[18]前記第１のデータバスおよび前記第２のデータバスは前記第３のデータバスよりも幅が狭い上記[15]記載のデジタル信号プロセッサ。
[19]前記第１のデータバス、前記第２のデータバス、前記第３のデータバス、前記処理ユニットに結合され、前記第１のデータと前記第２のデータを記憶する第１のレジスタと、
前記結果データを記憶する第２のレジスタと、
前記第２のレジスタに結合され、前記結果データを処理する第２の処理ユニットとをさらに具備する上記[15]記載のデジタル信号プロセッサ。
[20]前記第１のデータバス、前記第２のデータバス、前記第３のデータバスを制御する制御システムをさらに具備する上記[19]記載のデジタル信号プロセッサ。
[21]前記第１の処理ユニットは乗算累算ユニットであり、前記第２の処理ユニットは演算論理ユニットである上記[19]記載のデジタル信号プロセッサ。
[22]少なくとも３つのデータバスを有する１組のデータバスと、
前記１組のデータバス中の各データバスからデータを受け取る複数の処理ユニットとを具備するデジタル信号プロセッサ。
[23]前記複数の処理ユニット中の第１の処理ユニットは乗算累算ユニットであり、前記複数の処理ユニット中の前記第２の処理ユニットは演算論理ユニットである上記[22]記載のデジタル信号プロセッサ。
[24]データを記憶するメモリユニットと、
１組のレジスタを備え、データを記憶するレジスタバンクとをさらに具備し、
ここにおいて、前記１組のデータバスは対応するデータの組を対応するレジスタに読み込む上記[22]記載のデジタル信号プロセッサ。
[25]データを記憶するメモリユニットと、
１組のレジスタを備え、データを記憶するレジスタバンクとをさらに具備し、
ここにおいて、前記１組のデータバスは対応するデータの組を対応するレジスタに書き込む上記[22]記載のデジタル信号プロセッサ。
[26]それぞれが１つの演算を要求する１組の命令フラグメントを有する可変長の命令を使用してデジタル信号プロセッサを動作させる方法において、
（ａ）第１のクロックサイクルの第１のクロックフェーズ中に、前に処理されたデータを第１のレジスタから第１の処理ユニットに読み込み、
（ｂ）前記１組の命令フラグメント中の第１の命令フラグメントに基づいて前記前に処理されたデータを処理し、前記第１のクロックサイクル中に、２度処理されたデータを生成し、
（ｃ）前記１組の命令フラグメント中の第２の命令フラグメントに基づいて新しいデータを処理し、前記第１のクロックサイクル中に、新しく処理されたデータを生成し、
（ｄ）前記第１のクロックサイクルの第２のフェーズ中に、前記新しく処理されたデータを前記第１のレジスタに書き込み、
（ｅ）前記第１のクロックサイクルの第２のフェーズ中に、前記２度処理されたデータを第２のレジスタに書き込むステップを含む方法。
[27]ステップ（ｂ）は第１の処理ユニットにより実行され、ステップ（ｃ）は第２の処理ユニットにより実行される上記[26]記載の方法。
[28]前記可変長の命令を含む命令データを読み出し、
次の命令長を決定し、
前記次の命令長に等しい前記命令データ中のデータ量を復号するステップを含む上記[26]記載の方法。
[29]第１の処理ユニットと、
第２の処理ユニットと、
前記第１の処理ユニットおよび前記第２の処理ユニットに読み出し可能に結合されたレジスタとを具備するマイクロプロセッサ。
[30]前記レジスタに結合されたデータバスと、
前記データバスに結合されたデータメモリとをさらに具備する上記[29]記載のマイクロプロセッサ。
[31]前記第１の処理ユニットに結合されているが、前記第２の処理ユニットには結合されていない第２のレジスタと、
前記第２の処理ユニットに結合されているが、前記第１の処理ユニットには結合されていない第３のレジスタとをさらに具備する上記[29]記載のマイクロプロセッサ。
[32]前記レジスタは２つのフェーズクロックサイクルで動作し、前記レジスタは前記２つのフェーズクロックサイクルの第１のフェーズ中に読み出され、前記レジスタは前記２つのフェーズクロックサイクルの第２のフェーズ中に書き込まれる上記[29]記載のマイクロプロセッサ。
[33]前記第１の処理ユニットを前記レジスタに第１の構成で結合し、前記第２の処理ユニットを前記レジスタに第２の構成で結合するマルチプレクサをさらに具備する上記[29]記載のマイクロプロセッサ。
[34]命令データに基づいて前記マルチプレクサを構成する制御システムをさらに具備する上記[33]記載のマイクロプロセッサ。
[35]前記第１の処理ユニットは乗算アキュムレータである上記[29]記載のマイクロプロセッサ。
[36]前記第１の処理ユニットは演算論理ユニットである上記[35]記載のマイクロプロセッサ。
[37]第１のデータメモリと、
第２のデータメモリと、
前記第１のデータメモリと前記レジスタとに結合された第１のバスと、
前記第２のデータメモリと前記レジスタとに結合された第２のバスとをさらに具備する上記[29]記載のマイクロプロセッサ。
[38]前記レジスタは前記レジスタの出力を通して前記第１の処理ユニットと前記第２の処理ユニットとに結合され、前記第１の処理ユニットの出力は前記レジスタの入力に結合されている上記[29]記載のマイクロプロセッサ。
[39]デジタル信号プロセッサを動作させる方法において、
第１のクロックサイクルの第１のクロックフェーズ中に、処理されたデータをレジスタから第１の処理ユニットに読み込み、
前記第１のクロックサイクル中に、前記第１の処理ユニットを使用して前記処理されたデータを処理して、さらに処理されたデータを生成し、
前記第１のクロックサイクル中に、第２の処理ユニット中の他のデータを処理して、新しく処理されたデータを生成し、
前記第１のクロックサイクルの第２のフェーズ中に、前記新しく処理されたデータを前記レジスタに書き込むステップを含む方法。
[40]前記第１のクロックサイクルの前記第２のフェーズ中に、前記さらに処理されたデータを第２のレジスタに書き込むステップをさらに含む上記[39]記載の方法。
[41]データを処理する第１の処理ユニットと、
データを処理する第２の処理ユニットと、
前記第１の処理ユニットと前記第２の処理ユニットの両方にデータを書き込むことができる第１組のレジスタと、
前記第１の処理ユニットにはデータを書き込むことができるが、前記第２の処理ユニットにはデータを書き込むことができない第２組のレジスタとを具備するデジタル信号プロセッサ。
[42]前記第１の処理ユニットは乗算累算ユニットであり、前記第２の処理ユニットは演算論理ユニットである上記[41]記載のデジタル信号プロセッサ。
[43]アドレス空間を有するメモリ中に記憶された命令を使用してデジタル信号プロセッサを制御する方法において、
第１の命令の第１の部分を含むメモリの第１のデータワードを書き出し、
第１の命令の第２の部分と第２の命令の第１の部分を含むメモリの第２のデータワードを書き出すステップを含む方法。
[44]前記第１の命令は複数の命令フラグメントから構成され、各命令フラグメントは特定の演算を実行する上記[43]記載の方法。
[45]前記第１の命令と前記第２の命令は異なる長さである上記[43]記載の方法。
[46]前記第１の命令と前記第２の命令は複数組の命令フラグメントから構成され、各命令フラグメントは特定の演算を実行する上記[43]記載の方法。
[47]前記命令フラグメントには第１の命令フラグメントと第２の命令フラグメントとが含まれ、前記第１の命令フラグメントは１組の演算を要求し、１組の演算は前記第２の命令フラグメントにより実行される１組の演算のサブセットである上記[46]記載の方法。
[48]前記第１の命令フラグメントは前記第２の命令フラグメントよりも短い上記[47]記載の方法。
[49]デジタル信号プロセッサを制御するシステムにおいて、
フロントエッジワード境界を有するアドレスワードでアドレス可能なアドレス空間を持つメモリと、
前記メモリに記憶された１組の可変長の命令と、前記可変長の命令のそれぞれがフロントエッジ命令境界を有する、具備し、
ここにおいて、前記フロントエッジ命令境界の第１の部分は前記フロントエッジワード境界に対応し、前記フロントエッジ命令境界の第２の部分は前記フロントエッジワード境界と異なっているシステム。
[50]前記可変長の命令は可変数の命令フラグメントを含む上記[49]記載のシステム。
[51]前記可変長の命令は各可変長の命令がどれ位長いかを示すヘッダを含む上記[49]記載のシステム。
[52]前記メモリは前記デジタル信号プロセッサの命令メモリ内に配置されている上記[49]記載のシステム。
[53]デジタル信号プロセッサを制御するシステムにおいて、
バックエッジワード境界を有するアドレスワードでアドレス可能なアドレス空間を持つメモリと、
前記メモリに記憶された１組の可変長の命令と、前記可変長の命令のそれぞれがバックエッジ命令境界を有する、具備し、
ここにおいて、前記バックエッジ命令境界の第１の部分は前記バックエッジワード境界に対応し、前記バックエッジ命令境界の第２の部分は前記バックエッジワード境界と異なっているシステム。
[54]前記可変長の命令は可変数の命令フラグメントを含む上記[53]記載のシステム。
[55]前記可変長の命令は各可変長の命令がどれ位長いかを示すヘッダを含む上記[53]記載のシステム。
[56]前記メモリは前記デジタル信号プロセッサの命令メモリ内に配置されている上記[53]記載のシステム。
[57]マイクロプロセッサを制御するシステムにおいて、
命令データを記憶し、アドレス空間を有するメモリと、
演算を要求する複数の可変長の命令とを具備し、
前記複数の可変長の命令の実質的な部分は前記アドレス空間のほぼ連続した位置に配置されているシステム。
[58]１０より多い命令が前記メモリ内のほぼ連続した位置に配置されている上記[57]記載のシステム。
[59]前記命令の９０パーセントより多い命令が前記メモリ空間内のほぼ連続した位置に配置されている上記[57]記載のシステム。
[60]前記命令の２５パーセントより多い命令が前記メモリ空間内のほぼ連続した位置に配置されている上記[57]記載のシステム。
[61]前記可変長の命令はどれ位多くの命令データが可変長の命令に存在しているかにしたがって変化する上記[57]記載のシステム。
[62]集積回路を制御する方法において、
（ａ）実行すべき１組の演算に対応する１組の命令フラグメントを発生し、
（ｂ）同時に実行することができる前記命令フラグメントを命令フラグメント組にグループ分けし、
（ｃ）その可変長の命令がどれ位長い可変長の全命令を生成するかを示すヘッダを各命令フラグメント組に付加し、
（ｄ）前記可変長の全命令をアドレス空間の連続したアドレスで前記集積回路に書き込むステップを含み、
ここにおいて、前記アドレス空間はワード境界を有する方法。
[63]前記可変長の命令は１６ビットの命令、３２ビットの命令、４８ビットの命令から構成されている上記[62]記載の方法。
[64]各ヘッダは前記可変長の全長の命令内で最上位の位置に配置され、５ビットから構成されている上記[62]記載の方法。
[65]前記命令フラグメントのサブセットは、１つ、２つあるいは３つの命令フラグメントを含むことができる上記[62]記載の方法。
[66]デジタル信号プロセッサを制御する方法において、
（ａ）減少された数の演算が並列に処理されるべきときに短い命令を発生し、
（ｂ）より多い数の演算が並列に処理されるべきときに長い命令を発生するステップを含む方法。
[67]前記短い命令と前記長い命令はアドレスワード境界を有するメモリ中の連続した位置に記憶される上記[66]記載の方法。
[68]ステップ（ａ）は、
他の任意の演算と同時に実行できない演算を識別し、
命令フラグメントと、短い命令がどれ位の長さかを示すヘッダとから前記短い命令を構成するステップからなる上記[66]記載の方法。
[69]ステップ（ｂ）は、
同時に実行できる１組の演算を識別し、
前記１組の演算を実行する１組の命令フラグメントと、長い命令がどれ位の長さかを示すヘッダとから前記長い命令を構成するステップからなる上記[66]記載の方法。
[70]前記ヘッダは５ビットから構成されている上記[68]記載の方法。
[71]前記ヘッダは５ビットから構成されている上記[69]記載の方法。
[72]可変数の命令フラグメントを含む可変長の命令を処理する方法において、
（ａ）可能な最大長の可変長命令を含むのに十分な大きさの第１組の命令データを読み出し、
（ｂ）前記第１組の命令データ内に記憶されている第１の可変長の命令を処理し、
（ｃ）未処理の命令データ量が前記可能な最大長よりも少ないときに付加的な命令データをロードするステップを含む方法。
[73]ステップ（ａ）は、
第１のデータワードを読み出し、
第２のデータワードを読み出すステップから構成されている上記[72]記載の方法。
[74]ステップ（ｃ）は、
未処理の命令データ量が前記可能な最大長の１つの命令ワード内であるときに１つの命令ワードを読み出し、
未処理の命令データ量が前記可能な最大長よりも少ない１つより多くの命令ワードであるときに２つの命令ワードを読み出すステップを含む上記[73]記載の方法。
[75]メモリ内のほぼ連続したメモリ空間中に間隔をあけられた複数の可変長の命令を具備し、
前記複数の可変長の命令中の各命令は、
命令の長さを示すヘッダと、
実行すべき演算を特定する本体部とを有するメモリ。
[76]デジタル信号プロセッサ中の命令データを処理する制御システムにおいて、
ワードでアドレス可能な第１のメモリバンクと第２のメモリバンクとを備え、未処理の命令データを記憶し、前記命令データは最大命令長を有する命令メモリと、
前記命令メモリから読み出す命令レジスタと、
前記命令レジスタ中の未処理の命令データ量が前記最大命令長の１つのワード内であるときに、命令データの１つのワードを前記命令メモリから前記命令レジスタにロードし、前記最大命令長と前記命令レジスタ中の前記未処理データとの間に１つよりも多いワードの不足があるときに命令データの２つのワードを前記命令メモリから前記命令レジスタにロードする制御システムとを具備する制御システム。
[77]１組の回転された構成のうちの１つで前記命令レジスタ中に記憶されたデータを出力する回転子をさらに具備し、
ここにおいて、前記制御システムはさらに、前記命令レジスタからの未処理データを前記回転子を使用して最上位位置に保持する上記[76]記載の制御システム。
[78]前記可変長の命令は前記ワード以下の長さを有する上記[76]記載の制御システム。
[79]前記可変長の命令はフロントエッジ命令境界とバックエッジ命令境界を有し、前記可変長の命令は、メモリアドレス空間中で相互に隣接する２つの連続した命令のフロントエッジ命令境界とバックエッジ命令境界を有する前記命令メモリ内で、ワード境界間に記憶される上記[76]記載の制御システム。
[80]前記可変長の命令は可変数の命令フラグメントを含み、各命令フラグメントは特定の演算を実行する上記[76]記載の制御システム。
[81]データを記憶するレジスタバンクと、
前記データに乗算累算演算を実行する乗算累算ユニットと、
前記乗算累算ユニットの入力に結合され、第１の構成で入力データをシフトし、第２の構成で前記入力データを通過させるシフトユニットとを具備するデジタル信号プロセッサ。
[82]前記シフトユニットは前記入力データをシフトし、前記乗算累算ユニットは単一の処理サイクル中に前記乗算累算演算を実行する上記[81]記載のデジタル信号プロセッサ。
[83]下位１６ビットＡｌおよび上位１６ビットＡｈを有する３２ビット数Ａと、１６ビット数Ｂとに２倍精度乗法演算を実行するシステムにおいて、
（ａ）第１のクロックサイクル中にＢによりＡｌを乗算して、第１の中間値Ｉ１を生成し、
（ｂ）１６ビットだけ右に前記中間値Ｉ１をシフトして、シフトされた中間値ＳＩ１を生成し、
（ｃ）ＢとＡｈを乗算して、第２の中間値Ｉ２を生成し、
（ｄ）Ｉ２に前記シフトされた中間値ＳＩ１を加算し、
ここにおいて、ステップ（ｂ）−（ｄ）は第２のクロックサイクル中に実行されるシステム。
[84]メモリと処理装置との間の可変長のデータの転送が最適化されるように選択された第２の複数の選択可能なバスを通して第１の複数の処理装置とメモリが接続可能であるデジタル信号プロセッサ。
【外国語明細書】
2010282637000001.pdf