(57)【特許請求の範囲】
【請求項１】
プログラマブルロジック集積回路装置であって、
複数の高機能性機能ユニットであって、前記複数の高機能性機能ユニットのそれぞれは、複数の特定の機能を実行するように少なくとも部分的にハード配線化されており、前記複数の高機能性機能ユニットのうちの第１の高機能性機能ユニットによって実行される複数の特定の機能は、前記複数の高機能性機能ユニットのうちの第２の高機能性機能ユニットによって実行される複数の特定の機能とは異なる、複数の高機能性機能ユニットと、
前記複数の高機能性機能ユニットから分離したプログラマブルロジック回路であって、前記プログラマブルロジック回路は、複数の領域を含み、前記複数の領域のそれぞれは、
プログラマブルロジックの少なくとも１つのエリアと、
メモリの少なくとも１つのエリアと
を含む、プログラマブルロジック回路と、
プログラマブル相互接続リソースと
を含み、
前記プログラマブル相互接続リソースは、
前記複数の領域に信号を搬送すること、前記複数の領域から信号を搬送すること、または、前記複数の領域の間で信号を搬送することを行うローカル導体と、
前記複数の領域に信号を搬送すること、前記複数の領域から信号を搬送すること、または、前記複数の領域の間で信号を搬送することを行うグローバル導体と、
前記ローカル導体および／またはグローバル導体のうちの交差しているものを選択的に相互接続するプログラマブルコネクタと、
前記複数の高機能性機能ユニットのうちの選択された高機能性機能ユニットを一緒に選択的に結合し、これにより、前記プログラマブル相互接続リソースによって相互接続されたプログラマブルロジック回路および複数の高機能性機能ユニットのみから、少なくとも１つの汎用マイクロプロセッサを前記プログラマブルロジック集積回路装置内に形成するプログラマブル相互接続回路と
を含み、
前記プログラマブルロジック集積回路装置は、前記プログラマブル相互接続リソースによって相互接続されたプログラマブルロジック回路および複数の高機能性機能ユニットのみから形成されたマイクロプロセッサ以外の汎用マイクロプロセッサを欠いている、プログラマブルロジック集積回路装置。
【請求項２】
少なくとも１つの高機能性機能ユニットは、データ情報を選択するように適合されたアドレス発生回路を含む、請求項１に記載のプログラマブルロジック集積回路装置。
【請求項３】
命令情報を格納するように適合されたメモリ回路をさらに含む、請求項１に記載のプログラマブルロジック集積回路装置。
【請求項４】
前記メモリ回路は、前記プログラマブルロジック回路のメモリの前記少なくとも１つのエリアのうちの一部分である、請求項３に記載のプログラマブルロジック集積回路装置。
【請求項５】
データ情報を格納するように適合されたメモリ回路をさらに含む、請求項２に記載のプログラマブルロジック集積回路装置。
【請求項６】
前記メモリ回路は、前記プログラマブルロジック回路のメモリの前記少なくとも１つのエリアのうちの一部分である、請求項５に記載のプログラマブルロジック集積回路装置。
【請求項７】
前記アドレス発生回路は、前記少なくとも１つのマイクロプロセッサによって出力されるさらなるデータ情報のための行先のアドレスを生成するようにさらに適合されている、請求項２に記載のプログラマブルロジック集積回路装置。
【請求項８】
前記アドレス発生器は、レジスタファイル回路を含む、請求項２に記載のプログラマブルロジック集積回路装置。
【請求項９】
命令情報の複数の連続的選択を自動的に行うように適合されたプログラムシーケンサ回路をさらに含む、請求項１に記載のプログラマブルロジック集積回路装置。
【請求項１０】
前記アドレス発生回路は、データ情報の複数の同時選択を行うようにさらに適合されている、請求項２に記載のプログラマブルロジック集積回路装置。
【請求項１１】
データ情報を選択するように適合されたレジスタファイル回路をさらに含む、請求項１に記載のプログラマブルロジック集積回路装置。
【請求項１２】
前記複数の高機能性機能ユニットのうちの少なくとも１つは、ＭＡＣ回路、ＡＬＵ回路、バレルシフター回路、ガロイスフィールド回路のうちの少なくとも１つを含む、請求項１に記載のプログラマブルロジック集積回路装置。
【請求項１３】
前記複数の高機能性機能ユニットのうちの少なくとも２つのそれぞれは、ＭＡＣ回路、ＡＬＵ回路、バレルシフター回路、ガロイスフィールド回路のうちの少なくとも１つを含む、請求項１２に記載のプログラマブルロジック集積回路装置。
【請求項１４】
相対的な命令情報選択を絶対的な命令情報アドレスに変換するように適合された回路をさらに含む、請求項１に記載のプログラマブルロジック集積回路装置。
【請求項１５】
相対的なデータ情報選択を絶対的なデータ情報アドレスに変換するように適合された回路をさらに含む、請求項２に記載のプログラマブルロジック集積回路装置。
【請求項１６】
デジタル処理システムであって、
処理回路と、
前記処理回路に結合されたメモリと、
前記処理回路および前記メモリに結合された請求項１に記載のプログラマブルロジック集積回路装置と
を含む、デジタル処理システム。
【請求項１７】
請求項１に記載のプログラマブルロジック集積回路装置が搭載されているプリント回路基板。
【請求項１８】
前記プリント回路基板上に搭載され、かつ、前記プログラマブルロジック集積回路装置に結合されたメモリをさらに含む、請求項１７に記載のプリント回路基板。
【請求項１９】
前記プリント回路基板上に搭載され、かつ、前記プログラマブルロジック集積回路装置に結合された処理回路をさらに含む、請求項１７に記載のプリント回路基板。
【請求項２０】
プログラマブルロジック集積回路装置であって、
プログラマブルロジック回路を含むソフトロジック部であって、前記プログラマブルロジック回路は、複数の領域を含み、前記複数の領域のそれぞれは、
プログラマブルロジックの少なくとも１つのエリアと、
メモリ回路の少なくとも１つのエリアと
を含む、ソフトロジック部と、
プログラマブル相互接続リソースであって、
前記複数の領域のそれぞれの内部の複数のエリアに信号を搬送すること、前記複数のエリアから信号を搬送すること、または、前記複数のエリアの間で信号を搬送することを行うローカル導体と、
前記複数の領域に信号を搬送すること、前記複数の領域から信号を搬送すること、または、前記複数の領域の間で信号を搬送することを行うグローバル導体と、
前記ローカル導体および／またはグローバル導体のうちの交差しているものを選択的に相互接続するプログラマブルコネクタと
を含む、プログラマブル相互接続リソースと、
複数の高機能性機能ユニットを含むハードロジック部であって、前記複数の高機能性機能ユニットのそれぞれは、複数の特定の機能を実行するように少なくとも部分的にハード配線化されており、前記複数の高機能性機能ユニットのうちの第１の高機能性機能ユニットによって実行される複数の特定の機能は、前記複数の高機能性機能ユニットのうちの第２の高機能性機能ユニットによって実行される複数の機能とは異なる、ハードロジック部と
を含み、
前記プログラマブル相互接続リソースは、プログラマブル相互接続回路をさらに含み、前記プログラマブル相互接続回路は、前記ハードロジック部を前記ソフトロジック部に接続し、前記複数の高機能性機能ユニットのうちの選択された高機能性機能ユニットを一緒に選択的に結合し、これにより、前記プログラマブル相互接続リソースによって相互接続された前記ソフトロジック部および前記ハードロジック部のみから、少なくとも１つの汎用マイクロプロセッサを形成し、
前記プログラマブルロジック装置は、前記プログラマブル相互接続リソースによって相互接続された前記ソフトロジック部および前記ハードロジック部のみから形成されたマイクロプロセッサ以外の汎用マイクロプロセッサを欠いている、プログラマブルロジック集積回路装置。
【請求項２１】
前記ハードロジック部は、
プログラムシーケンサ回路と、
アドレス発生回路と、
動作部回路と
をさらに含む、請求項２０に記載のプログラマブルロジック集積回路装置。
【請求項２２】
前記プログラムシーケンサ回路は、前記動作部回路の動作を少なくとも部分的に制御するための命令を前記メモリ回路から検索するように適合されている、請求項２１に記載のプログラマブルロジック集積回路装置。
【請求項２３】
前記アドレス発生回路は、前記動作部回路が動作するためのデータを前記メモリ回路から検索するように適合されている、請求項２１に記載のプログラマブルロジック集積回路装置。
【請求項２４】
前記アドレス発生回路は、前記メモリ回路内の位置を識別することにより、前記動作部回路によって出力されたデータを受信するように適合されている、請求項２１に記載のプログラマブルロジック集積回路装置。
【請求項２５】
前記アドレス発生回路は、マルチポートレジスタファイル回路を含む、請求項２１に記載のプログラマブルロジック集積回路装置。
【請求項２６】
前記ソフトロジック部は、前記プログラムシーケンサ回路の動作を少なくとも部分的に制御するための信号を提供するように適合されている、請求項２１に記載のプログラマブルロジック集積回路装置。
【請求項２７】
前記信号は、前記プログラムシーケンサ回路による使用のための命令アドレスを示す、請求項２６に記載のプログラマブルロジック集積回路装置。
【請求項２８】
前記プログラムシーケンサ回路は、前記メモリ回路内の位置の一連の識別を生成することにより、前記命令アドレスに応答するように適合されている、請求項２７に記載のプログラマブルロジック集積回路装置。
【請求項２９】
前記ソフトロジック部は、前記アドレス発生回路の動作を少なくとも部分的に制御するための信号を提供するように適合されている、請求項２１に記載のプログラマブルロジック集積回路装置。
【請求項３０】
前記信号は、前記アドレス発生回路による使用のためのデータアドレスを示す、請求項２９に記載のプログラマブルロジック集積回路装置。
【請求項３１】
前記メモリ回路内でデータアドレスを絶対的なアドレスに変換するように構成されたインターフェース回路をさらに含む、請求項３０に記載のプログラマブルロジック集積回路装置。
【請求項３２】
前記アドレス発生回路は、前記メモリ回路内の複数の位置を並列的に識別するように適合されている、請求項２１に記載のプログラマブルロジック集積回路装置。
【請求項３３】
前記複数の高機能性機能ユニットのうちの少なくとも１つは、ＭＡＣ回路、ＡＬＵ回路、バレルシフター回路、ガロイスフィールド回路のうちの少なくとも１つを含む、請求項２１に記載のプログラマブルロジック集積回路装置。
【請求項３４】
前記複数の高機能性機能ユニットのうちの少なくとも２つのうちのそれぞれは、ＭＡＣ回路、ＡＬＵ回路、バレルシフター回路、ガロイスフィールド回路のうちの少なくとも１つを含む、請求項２１に記載のプログラマブルロジック集積回路装置。
【請求項３５】
前記動作部は、ＶＬＩＷ命令を実行するように適合されている、請求項２１に記載のプログラマブルロジック集積回路装置。
【請求項３６】
前記複数の高機能性機能ユニットは、少なくとも１つのＤＳＰ動作を実行するように適合されている、請求項２１に記載のプログラマブルロジック集積回路装置。
【請求項３７】
前記複数の高機能性機能ユニットのうちの少なくとも１つは、複数の機能から選択可能な機能を実行するように適合されている、請求項１に記載のプログラマブルロジック集積回路装置。
【請求項３８】
前記複数の高機能性機能ユニットのうちの前記少なくとも１つのうちの少なくとも１つは、前記複数の機能から実行する機能を選択するようにプログラム可能である、請求項３７に記載のプログラマブルロジック集積回路装置。
【請求項３９】
前記複数の高機能性機能ユニットのうちの前記少なくとも１つのうちの少なくとも１つは、前記複数の機能から実行する機能を選択するように制御信号によって動的に制御可能である、請求項３７に記載のプログラマブルロジック集積回路装置。
【請求項４０】
前記プログラマブルロジック回路は、前記制御信号を供給するように適合されている、請求項３９に記載のプログラマブルロジック集積回路装置。
【請求項４１】
前記複数の高機能性機能ユニットのうちの前記少なくとも１つのうちの少なくとも１つは、プログラム可能な選択および動的な制御信号選択のうちの１つに基づいて、前記複数の機能から実行する機能を選択するようにプログラム可能である、請求項３７に記載のプログラマブルロジック集積回路装置。
【請求項４２】
前記プログラマブルロジック回路は、前記制御信号を供給するように適合されている、請求項４１に記載のプログラマブルロジック集積回路装置。
【請求項４３】
前記プログラマブルロジック回路は、メモリ回路を含む、請求項１に記載のプログラマブルロジック集積回路装置。
【請求項４４】
前記メモリ回路は、前記機能ユニットによる処理のためのデータを格納するように適合されている、請求項４３に記載のプログラマブルロジック集積回路装置。
【請求項４５】
前記メモリ回路は、前記機能ユニットによる少なくとも部分的な実行のためのプログラム命令を格納するように適合されている、請求項４３に記載のプログラマブルロジック集積回路装置。
【請求項４６】
前記プログラマブルロジック回路は、前記機能ユニットに対する適用のために、前記メモリ回路からデータを選択するように適合されている、請求項４４に記載のプログラマブルロジック集積回路装置。
【請求項４７】
前記プログラマブルロジック回路は、前記機能ユニットによる実行のために、前記メモリ回路からプログラム命令を選択するように適合されている、請求項４５に記載のプログラマブルロジック集積回路装置。
【請求項４８】
前記プログラマブルロジック回路は、前記メモリ回路から選択された命令を用いることにより、前記機能ユニットが動作するためのデータの選択を少なくとも部分的に制御するようにさらに適合されている、請求項４７に記載のプログラマブルロジック集積回路装置。
【請求項４９】
前記プログラマブルロジック回路は、前記メモリ回路から選択された命令を用いることにより、前記機能ユニットによって実行される機能を少なくとも部分的に制御するようにさらに適合されている、請求項４７に記載のプログラマブルロジック集積回路装置。
【請求項５０】
前記プログラマブルロジックの少なくとも１つの領域のうちの少なくとも１つは、前記少なくとも１つのマイクロプロセッサのうちの少なくとも１つの一部分を形成するように構成可能である、請求項１に記載のプログラマブルロジック集積回路装置。
【請求項５１】
少なくとも１つの完全なマイクロプロセッサとしてプログラマブルロジック集積回路装置を構成する方法であって、
前記プログラマブルロジック集積回路装置は、
複数の高機能性機能ユニットであって、前記複数の高機能性機能ユニットのそれぞれは、複数の特定の機能のうちの異なる機能のそれぞれを実行するように少なくとも部分的にハード配線化されており、前記複数の高機能性機能ユニットのうちの第１の高機能性機能ユニットによって実行される複数の特定の機能は、前記複数の高機能性機能ユニットのうちの第２の高機能性機能ユニットによって実行される複数の機能とは異なる、複数の高機能性機能ユニットと、
前記複数の高機能性機能ユニットから分離したプログラマブルロジック回路であって、前記プログラマブルロジック回路は、複数の領域を含み、前記複数の領域のそれぞれは、プログラマブルロジックの少なくとも１つのエリアと、メモリ回路の少なくとも１つのエリアとを含む、プログラマブルロジック回路と、
プログラマブル相互接続リソースと
を含み、
前記プログラマブル相互接続リソースは、前記複数の領域のそれぞれの内部の複数のエリアに信号を搬送すること、前記複数のエリアから信号を搬送すること、または、前記複数のエリアの間で信号を搬送することを行うローカル導体と、前記複数の領域に信号を搬送すること、前記複数の領域から信号を搬送すること、または、前記複数の領域の間で信号を搬送することを行うグローバル導体と、前記ローカル導体および／またはグローバル導体のうちの交差しているものを選択的に相互接続するプログラマブルコネクタと、プログラマブル相互接続回路とを含み、
前記方法は、
前記複数の高機能性機能ユニットの特定の機能に従って、前記複数の高機能性機能ユニットのうちの１つの高機能性機能ユニットを選択することと、
前記プログラマブル相互接続回路を用いて、記複数の高機能性機能ユニットのうちの前記選択された高機能性機能ユニットを一緒に結合し、これにより、前記プログラマブルロジック回路および前記複数の高機能性機能ユニットから、少なくとも１つの完全なマイクロプロセッサのうちの少なくとも１つを前記プログラマブルロジック集積回路装置内に形成することと
を含み、
前記プログラマブルロジック集積回路装置は、前記プログラマブル相互接続回路を用いた前記結合の実行の前に、完全なマイクロプロセッサを欠いている、方法。
【請求項５２】
プログラマブルロジックの前記少なくとも１つのエリアのうちの少なくとも１つを構成することにより、前記少なくとも１つの完全なマイクロプロセッサのうちの少なくとも１つの一部分を形成することをさらに含む、請求項５１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、２０００年１０月２日に出願され、その全部を参照文献としてここに加える米国仮特許出願第６０/２３７，１７０号の利益をクレームするものである。
【０００２】
技術分野
本発明は、プログラマブルロジック集積回路装置（時々「ＰＬＤｓ」と呼ぶことがある）に関し、特にしばしば「プロセッサ」又は「マイクロプロセッサ」と呼ばれる回路の一部によりしばしば実行されるような特定タスクを実行するための専用回路を含むＰＬＤｓに関する。
【背景技術】
【０００３】
背景技術
プログラマブルロジック装置（「ＰＬＤｓ」）は、例えばジェファーソン等の米国特許第５、２１５、３２６号および２０００年３月２日出願のナガイ等の米国特許出願第０９/５１６、９２１号に示されるように周知である。ＰＬＤｓは、典型的には、プログラム可能な相互接続リソースにより多くの異なる方法のいずれかにより相互接続可能なプログラマブルロジックの多くの領域を含む。各論理領域は、相互接続リソースからこの領域に印加された入力信号に基づき幾つかの論理機能を実行するようプログラム可能である。そして論理機能を実行することで、各論理領域は、相互接続リソースに印加される１又はそれ以上の出力信号を生成する。相互接続リソースは、典型的には、ドライバ、相互接続導電体及び様々な相互接続導電体間を選択的に接続するプログラマブルスイッチを含む。相互接続リソースは、一般的には、ある論理領域の出力をある論理領域の入力に接続するために使用するものの、相互接続リソースに対し不釣合いに大きな装置の部分に専用されるのを回避し、通常は、可能な全ての相互接続のサブセットのみが、ＰＬＤの与えられたプログラムされた構成で行われる。
【０００４】
論理領域のみ前述したが、多くのＰＬＤｓが、ランダムアクセスメモリ（「ＲＡＭ」）、リードオンリーメモリ（「ＲＯＭ」）、コンテンツアドレスアブルメモリ（「ＣＡＭ」）、プロダクトターム（「p-term」）論理等として使用され得るメモリの領域を含むことに留意すべきである。（例えば少なくとも部分的にハード配線された）専用マイクロプロセッサ回路をＰＬＤｓ中に含めることは有益であった。このような専用マイクロプロセッサ回路は、ＰＬＤ上の別の場所に設けられた汎用プログラマブルロジックでタスクが実行されるよりも、典型的にはより速くマイクロプロセッサに関連づけされるタスクの少なくとも幾つかを実行可能である。
【０００５】
ＰＬＤ上に全特殊機構化された専用マイクロプロセッサを有することは、ある幾つかの状況では有益かもしれないが、多くの状況においては、専用マイクロプロセッサあるいは同様の回路が有するある特殊機構或いは機能のみを、典型的にはハード配線された専用回路により達成されうる高速で実行する必要がある。これらの場合、全特殊機構化されたマイクロプロセッサ回路は、本来は使用されず、従って廃棄され得る。即ち、特定タスクをすばやく実行するために必要となる全特殊機構化されたマイクロプロセッサ回路の一部を得るために、マイクロプロセッサ回路の不使用部分を信号が通過するよう回線化する必要があるが、これにより時間を消費し、必要部分の動作を最適な状態より悪くする。加えて、汎用マイクロプロセッサは、ベリーロングインストラクションワード「ＶＬＩＷ」プロセッシング或いはデジタルシグナルプロセッシング「ＤＳＰ」のようなあるタスクであって、多重並列処理の実行がしばしば要求されるようなタスクを実行するのに最も効率の良い回路ではない。ただし、マイクロプロセッサが多重並列処理を支持するよう特別に設計されている場合は別である。
【発明の概要】
【課題を解決するための手段】
【０００６】
発明の概要
本発明によれば、ＰＬＤｓ中に一般的に含まれる回路に加えて、１又はそれ以上のプロセッサオブジェクト回路（又は「プロセッサオブジェクト」或いは「オブジェクト」）を有するＰＬＤを提供する。プロセッサオブジェクトは、１又は限定された数の特定タスクを実行するために少なくとも部分的にハード配線化された回路である。従って、プロセッサオブジェクトは、そのタスク或いは限定された数の特定タスクを実行するために専用化される。プロセッサオブジェクトは、全特殊機構化されたプロセッサ又は全特殊機構化されたマイクロプロセッサでもなく或いは汎用プロセッサ又は汎用マイクロプロセッサでもないが、プロセッサオブジェクトは、完全なプロセッサ又はマイクロプロセッサが典型的には実行し得る幾つかのタスク或いはタスクのサブセットを実行し得る。プロセッサオブジェクトは、少なくとも部分的にハード配線化されているが、またプログラム可能であるか或いは（たとえば実行し得るいくつかのタスクから選択するといった）幾つかの視点でプログラム可能に制御し得る。プロセッサオブジェクトは、付加的に或いは代替的には、少なくとも部分的にはダイナミックに（例えばＰＬＤ上の時間変化論理信号により）制御され、実行し得る様々のタスク中からダイナミックに選択するものであってもよい。
【０００７】
典型的なプロセッサオブジェクトは、命令順序並替回路および演算部回路を含む。プロセッサオブジェクトは、また、マルチポート化されたレジスタファイル回路であるか或いはこれを含むアドレス発生回路を含む。命令順序並替回路は、（命令メモリから）実行されるべき命令を選択するか或いは選択するのを助ける。命令は、プロセッサオブジェクトの演算部の演算を制御するか或いは制御するのを助ける。アドレス発生回路は、演算部が演算するためのデータを（データメモリーから）選択するか或いは選択するのを助ける。アドレス発生回路は、演算部によるデータ出力のための（例えばデータメモリー中の）指定を選択する。アドレス発生回路は、前述の命令に基づき供給されるアドレス情報に基づき動作する。
【０００８】
異なるアドレス管理体制間でアドレス情報を自動変更するために回路を設けてもよい。例えば、命令を、データを使用するプログラム及び・又はそのプログラムに対し「局所的である」（或いは「関連性のある」）命令アドレスを目的として書いてもよいが、これら幾つかのアドレス値が他のプログラム中で対立しないよう使用される可能性については考慮しない。これら多重プログラムを、その形式でＰＬＤのプログラマブルロジック中に記憶してもよい。ある１つのプログラムが（ＰＬＤ上のプロセッサオブジェクト中で少なくとも部分的に）実行される場合、インターフェース回路を設け、各プログラムで使用されるローカルアドレス或いは関連アドレスをＰＬＤ中の実際のメモリー位置の対立しない絶対的なアドレスへと自動変換する。
【０００９】
プロセッサオブジェクト中に設けることが可能な演算部回路の例としては、演算論理装置（ＡＬＵｓ）、乗算累算器（ＭＡＣｓ）、バレルシフター、ガロイスフィールド回路、並びにこれらの組み合わせ及び・又は多種多様な例を含む。ＰＬＤ（とりわけプロセッサオブジェクト）は、ベリーロングインストラクションワード「ＶＬＩＷ」プログラムを実行し、デジタルシグナルプロセッシング「ＤＳＰ」オペレーションを実行し、及び・又は他の同様の複雑で込み入ったタスクを実行するよう構成され得る。
【００１０】
本発明の他の見地は、プログラマブルロジック回路と、このプログラマブルロジック回路と信号情報のやり取りを行う、少なくとも部分的にハード配線化され高機能化された機能ユニットとを有するＰＬＤｓを提供することに関する。高機能化された機能ユニットは、プロセッサオブジェクトの演算部として参照したものに類似するものでもよいが、但し、演算部・機能ユニットは複数の機能（即ち高機能）を有する。高機能化された機能ユニットの例は、（１）加算器ツリーと組み合わされた乗算器、又は（２）累算器と組み合わされた乗算器である。
【００１１】
本発明の更なる特徴、性質さまざまな利点は、添付の図面および以下に続く詳細な説明により明らかになるであろう。
【００１２】
本発明の実施例につき以下の図面を参照して例示的に説明する。
【図面の簡単な説明】
【００１３】
【図１】本発明に基づき構成されたＰＬＤの１実施の形態の代表的な部分の簡略化した概略ブロック図である。
【図２】図１に示したものの１部分の代替的な実施の形態を示す簡略化した概略ブロック図である。
【図３】図１に示したものの１部分の他の代替的な実施の形態を示す簡略化した概略ブロック図である。
【図４】図１に示したものの１部分の他の代替的な実施の形態を示す簡略化した概略ブロック図である。
【図５】図１に示したものの１部分の他の代替的な実施の形態を示す簡略化した概略ブロック図である。
【図６】図１に示したものの１部分の他の代替的な実施の形態を示す簡略化した概略ブロック図である。
【図７】図１に示したものの１部分の他の代替的な実施の形態を示す簡略化した概略ブロック図である。
【図８】図７の実施の形態の1部をより詳細に示す簡略化した概略ブロック図である。
【図８Ａ】図８に類似するが、図８に示す回路のタイプの代替的な実施の形態を示す図である。
【図９】本発明に係る使用し得る回路を示した簡略化した概略ブロック図である。
【図９Ａ】本発明の他の実施の形態を示した簡略化した概略ブロック図である。
【図９Ｂ】本発明の他の実施の形態を示した簡略化した概略ブロック図である。
【図１０】本発明の先に記載した実施の形態の１部に使用し得る回路の１実施の形態を示したより詳細ではあるがまだ簡略化した概略ブロック図である。
【図１１】本発明における図１０に示したタイプの回路の付加的且つ可能な特徴を示したより詳細ではあるがまだ簡略化した概略ブロック図である。
【図１２】本発明の先に記載した実施の形態の他の部分に使用し得る回路の１実施の形態を示したより詳細ではあるがまだ簡略化した概略ブロック図である。
【図１２Ａ】図１２に類似するが、本発明において幾つかの更に選択し得る回路を加えた図である。
【図１３】本発明において使用し得る回路をさらに示した簡略化した概略ブロック図である。
【図１４】本発明においてＰＬＤを含むシステムの１実施の形態を示した簡略化した概略ブロック図である。
【図１５】図１４のシステムの１部の１実施の形態を示した簡略化した概略ブロック図である。
【図１６】本発明の他の視点の実施の形態を示した簡略化した概略ブロック図である。
【図１７】本発明においてＰＬＤを使用するシステムを示した簡略化した概略ブロック図である。
【発明を実施するための形態】
【００１４】
発明の詳細
本発明に従い構成した例示するＰＬＤ１０を図１に示す。ＰＬＤ１０は、所謂「ソフトロジック」部２０および所謂「ハードロジック」部２００を含む。ソフトロジック部２０は、ＰＬＤｓ上に設けるものとして（少なくとも一般には）既知の様々な種類のプログラマブル回路を含む。従って、例えば、ソフトロジック部２０は、１又はそれ以上のプログラマブルロジックおよびメモリのスーパー領域２２を含んでもよい。このようなスーパー領域２２の各々は、プログラマブルロジックの1又はそれ以上の領域３０、メモリの１又はそれ以上の領域４０、及びローカル或いは比較的ローカルな相互接続リソースを含んでもよい。図１に示す特定例において、相互接続リソースは、前記スーパー領域中の領域３０/４０間で信号を伝送するスーパー領域ワイド相互接続導体５０と、導体５０から各領域３０/４０の近傍へ信号を伝送する領域供給導体６０と、導体６０（およびあらゆるローカルフィードバック導体８０）から隣接領域３０/４０へ信号を印加する入力導体７０と、領域３０/４０の出力信号を導体５０（およびあらゆるローカルフィードバック導体８０）に印加する出力導体９０と、（少なくとも論理領域３０の場合に）ローカルフィードバック導体８０とを含む。前述のローカル或いは比較的ローカルな相互接続リソースに加えて、ＰＬＤ１０は、デバイス上の多数のスーパー領域２２間で信号を伝送する相互接続導体１００のようなよりグローバルな相互接続リソースを含む。ＰＬＤ１０の様々な相互接続リソースは、また、前述の導体５０/６０/７０/８０/９０/１００の交差する部分を選択的に相互接続するための（比較的長い導体を駆動することが要求されるドライバー回路を含む）プログラマブルロジックコネクター（ＰＬＣｓ）５２を含む。ＰＬＣｓ５２をプログラマブル機能制御素子（「ＰＣＥｓ」図１では区別して示さず）により制御し、交差点導体間の接続を行ったり行わなかったりしてもよい。用語「ＰＬＣ」はここでは様々な相互接続及び/又は信号経路化リソースに対して用いる。ＰＬＣｓは、（例えばＦＣＥｓにより）比較的静的に制御されても或いは、（例えば異なる時刻で異なる論理値を有することが可能なＰＬＤの信号によって）よりダイナミックに制御されてもよいことが判る。
【００１５】
信号線のみがここにおいて大部分の相互接続として示され（信号例は単に大部分のＰＬＣｓとして示され）るが、数字は多数の相互接続（及び対応の多数のＰＬＣｓ）をしばしば実際には示していることが判る。従って、例えば、図１中の信号線５０は、実際には典型的には多くの同様の平行な相互接続導体を示す。また、典型的には、各線６０により示される導体のグループにおいて、これら導体５０を多くの導体６０に選択的に接続する多くのＰＬＣｓ５２が存在する。本明細書の後の方で、単線で単に示された多数の接続の他のグループに対しても同様のことが言える。具体例は図１中の接続１１０、１２０、１３０、１４０、１５０及び１６０や、図１中のプロセッサオブジェクト２０２の演算部２０６中に示される内部接続である。
【００１６】
ハードロジック部２００は、本明細書の別の場所で用語を定義した１又はそれ以上のプロセッサオブジェクト２０２を含む。図１に示す特定例では、プロセッサオブジェクト２０２は、あるＶＬＩＷ演算或いはＤＳＰ乗算-累算（「ＭＡＣ」）演算を支持するよう構成される。プロセッサオブジェクト２０２は、制御部２０４及び演算部２０６を含む。双方の部２０４及び２０６は、少なくとも幾らかの範囲でハード配線化され、プロセッサオブジェクト２０２がより速くその能力内でタスクを実行することを可能にする。
【００１７】
図１に示すように、制御部２０４はアドレス発生器２１０およびプログラムシーケンサ２２０を含む。素子２１０及び２２０の具体的構成に関するより詳細な説明を以下に行うが、差当たっては、アドレス発生器２１０は、ソフトロジック部２０からリード１１０を介してあるアドレス情報及び/又は制御情報を受取り、他のアドレス情報をリード１１０を介しソフトロジック部２０へ出力してもよい。例えば、アドレス発生器２１０は、演算部２０６へ提供され処理されるデータの１又はそれ以上の開始アドレスをソフトロジック部２０から受取る。このようなアドレスは、メモリ領域４０内、ロジック領域３０のレジスタ内等のデータのアドレスであってもよい。このようなアドレスであれば、絶対的であっても相対的であってもよく、例えば、後に本明細書中で述べるように基本オフセット要因による変更の対象とされてもよい。リード１１０を介してアドレス発生器２１０により出力されるアドレス情報を使用して、ソフトロジック部２０内の位置を実際に選択し、この位置に基づきプロセッサオブジェクト２０２により処理されるためにデータ或いは他の情報を検索してもよい。前述したものに代え或いはそれに加えて、アドレス発生器２１０が、ソフトロジック部２０から１又はそれ以上の開始アドレスを受取り、プロセッサオブジェクト２０２により出力されるデータのソフトロジック部２０内での意図する指定を行ってもよい。再び、このようなアドレス情報のいずれもが、絶対的なものであっても、相対的なものであってもよい。リード１１０を介してアドレス発生器２１０により出力される関連アドレス情報を使用して、ソフトロジック部２０内の位置を実際に選択し、この位置にプロセッサオブジェクト２０２がデータを出力し、記憶及び/又は更なる処理を行ってもよい。プロセッサオブジェクト２０２により実行される演算によって、アドレス発生器２１０により出力されるアドレスをインクリーメントするか或いは他のタイプの変更（ジャンプを含む）をプロセッサオブジェクトの動作の連続するサイクル中に行ってもよい。
【００１８】
後に本明細書中で明らかになるが、先のパラグラフで述べたようにアドレス発生器２１０に供給するデータアドレス情報を、プログラムシーケンサ２２０で実行するために選択された命令のアドレス部分から得てもよい。
【００１９】
プログラムシーケンサ２２０は、典型的には、工程の１又はそれ以上のシーケンスを制御する能力のある回路でる。例えば、プログラムシーケンサ２２０は、演算部２０６によって実行されるべく次の命令を選択する能力があってもよい。これを行うために、プログラムシーケンサ２２０は、開始命令アドレスおよび場合により他の制御情報をリード１３０を介してソフトロジック部２０を受取ってもよい。アドレス発生器２１０の場合のように、このアドレス情報は、絶対的なものでも相対的なものでもよい。プログラムシーケンサ２２０は、装置のその後の命令クロックサイクル中に、開始アドレスを自動的にインクリーメントしてもよい。リード１４０を介してプログラムシーケンサ２２０により出力される命令アドレスを使用して、所望の命令をメモリから検索し典型的には演算部２０６により少なくとも部分的に実行してもよい。
【００２０】
このような比較的基本的な動作に代え或いは加え、プログラムシーケンサ２２０は、スタート後は相対的且つ独立して動作するが、命令工程の比較的複雑なシーケンスを発生するか或いはシーケンスの経過を少なくとも維持する能力を有してもよい。このようなシーケンスは、命令ループの繰返し実行を含んでもよい。２つ又はそれ以上のこのようなループは、互いに組み合わされてもよい。プログラムシーケンサ２２０は、例えば、１連の動作をテンポラリーに中止する一方で他の１連の動作を実行する「中断」処理を行う能力を有してもよい。
【００２１】
演算部２０６はプロセッサオブジェクト２０２の１部であり、プロセッサオブジェクト２０２は、供給されたデータに基づき１又はそれ以上のタスクを実際に実行する。このデータは、典型的にはリード１５０を介してソフトロジック部２０から得る。演算部２０６の演算動作を制御するのに必要なあらゆる信号は、リード１５０を介して供給してもよい。入力データに基づくオブジェクトのタスクの実行結果として得られる出力データは、リード１６０を介してソフトロジック部２０へ戻してもよい。図１に示す特例において、演算部２０６は、（互いに並列な）幾つかの並列乗算器２３０を有し、各乗算器は、（入力リード１５０からの）２つのマルチビット入力データワードどうしを乗算し、マルチビット出力積ワードを生成する。各出力ワードは、テンポラリーに（例えばフリップフロップのような）レジスタ２４０の関連するバンクに記憶されその後リード１６０を介してソフトロジック部２０へ出力されてもよい。乗算−累算（「ＭＡＣ」）能力を含むため演算部２０６を先に説明する。図１を過剰に複雑にするのを回避し、よりシンプルな例とするため、図１は幾つか分離して例示する並列乗算器２３０および出力レジスタ２４０を含む演算部２０６を単に示す。ＭＡＣ演算部の１例を図２に示し、より完全に以下説明する。演算部回路の他の例は図２に続く図に示し、様々タイプのＭＡＣ及び/又はＤＳＰ回路は、２００１年９月１８日付け（件番号１７４/１９９）出願のラングハマー等の米国特許出願に示され述べられている。
【００２２】
専用並列乗算器２３０は、本発明に係るＰＬＤのオブジェクトに有用に含めてもよい回路の種類のある１つの好適な例であることが理解できる。並列乗算はＤＳＰ（例えば多種のデジタルフィルタリングを行うため）極めてよく必要とされる。しかし、ソフトロジック部２０の汎用ロジックは、並列乗算を（十分速く或いはソフトロジックリソースを不適当に消費することなく）実行するのにとりわけ効果的というわけではない。従って、ＰＬＤが、高速で比較的長いデータワードの並列乗算を行わなければならない場合は、ここに示すような演算能力のある１又はそれ以上のプロセッサオブジェクトをＰＬＤが備えることは極めて有益である。
【００２３】
プロセッサオブジェクト２０２により実行される命令の処理は、好ましくはソフトロジック部２０により行われる。このような命令は多くの形式のいずれでも取り得る。ＶＬＩＷ形式は、１つの可能な例である。ソフトロジック部２０での命令の処理は、アンパック、デコード等を含んでもよい。命令処理は、処理するデータの選択命令のアドレス部の使用、回路の適当な部分（例えば演算部２０６の好適な部分）へデータを送り実際にデータを処理するための命令の制御部の使用を含んでもよい。命令の制御部は、また、演算部２０６の動作の選択可能な側面の制御および/又はデータの演算部２０６からソフトロジック部２０への転送を含んでもよい。
【００２４】
図１はたった１つのプロセッサオブジェクト２０２のみと信号の交換を行うたった１つのスーパー領域２２のみを示しているが、ある１つのスーパー領域２２（又はプログラマブルロジックのその他あらゆる数量）は、複数のプロセッサオブジェクトと信号を交換してもよく、さらに/又はある１つのプロセッサオブジェクトが複数のスーパー領域（又はプログラマブルロジックのその他の数量）と信号を交換してもよいことが理解される。
【００２５】
ソフトロジック部２０とプロセッサオブジェクト２０２との間の高速通信を容易にするために、（とりわけ高速通信が重要な場合）プロセッサオブジェクトの様々な入力及び出力１１０/１２０/１３０/１４０/１５０/１６０は、好ましくは、ソフトロジック部２０中の比較的ローカルな相互接続リソースに接続される。例えば、このような接続に関する好適な候補は、領域供給導体６０、ローカルフィードバック導体８０、領域出力導体９０である。好ましくは、これらの接続は、信号源と信号到着先との間の出力ドライバの必要性を避けるため比較的短い。このようなドライバーは電力消費を増加させ通信経路における遅延が発生する。もちろんこれらの通信を検討することは、全ての場合で重要でないかもしれないが、もし制御しない場合、ソフトロジック部２０中の他の相互接続リソース（例えば導体５０および１００）は、入力及び出力１１０/１２０/１３０/１４０/１５０/１６０のあるもの或いは全てに対する接続点としての役割を果す。
【００２６】
少なくとも既に提案したように、図１に示すプロセッサオブジェクトの演算部２０６の特定構成は、多くの可能な構成の内の単なる１例である。他の例は、図２に示す乗算−累算（「ＭＡＣ」）演算部３０６である。演算部３０６は、以下の回路の１又はそれ以上の例、専用（例えば少なくとも部分的にハード配線化された）並列乗算器３３０（図１の素子２３０に類似する）、専用並列加算器３５０（これにより乗算器３３０により出力された各連続プロダクトワードをレジスタ３４０の現在のコンテンツに加えて、新たな累算値を生成しレジスタに記憶する）、及びレジスタ３４０（図１の素子２４０に類似する）を含む。
【００２７】
図３は本発明に係るプロセッサオブジェクトの演算部の可能な構成の他の例を示す。図３において、演算部４０６は、以下の回路の１又はそれ以上の例、幾つかの専用（例えば少なくとも部分的にハード配線化された）並列乗算器４３０a-d（各々は前記乗算器２３０/３３０に類似する）、専用並列加算器３５０a-c（各々は前記加算器３５０に類似する）であって乗算器４３０により出力されたプロダクトワードどうしを全て加算する乗算器、及びレジスタ３４０（各々は前記レジスタ２４０/３４０に類似する）であって最終加算器４５０dの並列出力をレジスタするレジスタを含む。図３に示すプロセッサオブジェクト演算部４０６は、ＤＳＰでしばしば必要となる有限インパルス応答（「ＦＩＲ」）デジタルフィルタリングのある種類を実行するのにとりわけ好適な構造を有する。
【００２８】
図４は、本発明に係るプロセッサオブジェクト回路のその他の例を示す。図４において、プロセッサオブジェクト５０２は、制御部５０４（図１の制御部２０４に類似する）及び演算部５０６（少なくとも概念的には図１−３の演算部２０６/３０６/４０６にそれぞれ類似する）を含む。図４は、ソフトロジック部２０からの信号１５０が例示する演算部回路５０６の演算の様々な側面を如何にして制御するのかを示す。（これら制御信号１５０の究極のソースは、回路５０４のプログラムシーケンサ部により実行されるために選択される命令であってもよい。もちろんリード１５０上の信号はデータ信号でありうる。）
【００２９】
図４において、演算部５０６は、素子５３０、５４０、５５０、５５２、５５４、５５６、５６０、５６２、５６４及び５６６の１又はそれ以上の例を含む。素子５３０は、専用並列乗算器であって、２３０のような前述した並列乗算器のいずれかに類似してもよい。素子５５０は、専用並列加算減算回路であって、前述した並列加算回路に概ね類似してもよいが、代替的に乗算器５３０の出力及びレジスタ５４０の出力どうしを互いに減算する能力を有する。ＰＬＣ５５２の出力信号は加算減算器５５０が入力を加算するのかあるいは減算するのかを制御する。加算減算器の好ましい例をラングハマー等の米国特許出願第０９/９２４、３５４号、２００１年８月７日出願に示すものの、加算減算回路の他の形式を所望により変わりに使用してもよい。レジスタ５４０は、２４０のような前述したレジスタに類似してもよい。素子５２０は、ＰＬＣであって、（この場合例えばマルチプレクサ）であって、ＦＣＥ５５４により制御され２つの他の入力のいずれか１方を出力として選択する。ＰＬＣ５５２への２つの他の入力は信号１５０の１方（この場合制御信号）およびＦＣＥ５５６の出力である。従って、ＦＣＥ５５４をプログラムし、ＰＬＣ５５２を制御し、ソフトロジック部２０或いはＦＣＥ５５６のいずれかから出力を得る。ＰＬＣ５５２の出力をソフトロジック部２０から得る場合、加算減算器５５０を（例えばソフトロジック部の少なくとも１部で処理される命令により）ダイナミックに制御し、オブジェクト５０２を含むＰＬＤの演算中の異なる時刻で加算減算する。これに代えて、ＰＬＣ５５２の出力をＦＣＥ５５６から得る場合、加算減算器５５０を（例えばＦＣＥ５５６のプログラム状態によって）よりスタティックに制御し、常に加算するか或いは常に減算する。
【００３０】
素子５６０は、ＰＬＣ（例えば平行マルチプレクサのある１つのバンク）であり、乗算器５３０の並列出力或いはレジスタ５４０の並列出力のいずれかを、ＰＬＣ５６２により出力された制御信号の状態に基づき出力する。ＰＬＣ５６２はＰＬＣ５５２に類似してもよい。１つのリード１５０上の信号或いはＦＥＣ５６６の出力信号のいずれを出力するかはＦＥＣ５６４により制御される。従って所望により、ＰＬＣ５６０を今述べたリード１５０の１つによりダイナミックに制御し、時に乗算器５３０の出力とし、その他の時にはレジスタ５４０の出力とする。これに代えて、ＰＬＣ５６０をＦＥＣ５６６によってよりスタティックに制御し、常に乗算器５３０の出力するか或いは常にレジスタ５４０の出力とする。
【００３１】
ラングハマー等の米国特許出願、２００１年９月１８日出願（事件番号１７４/１９９）は、図４のボックス５０６内に示す一般的なタイプの回路の可能な代替的な構成を示す。この代替的な構成は、レジスタ５４０等が加算減算器５５０からの累積値或いは乗算器５３０の出力値そのもののうちいずれかを保持する。このことは、ＰＬＣｓ５６０の必要性を明らかにし、ＰＬＣｓは厳密でなく必要とする。
【００３２】
図５は本発明に係るプロセッサオブジェクト６０２のその他の例を示す。広範囲において、図５は既に議論した特徴及び/又は概念を組み合わせる。前述した素子と同一或いは類似の素子は、図５において同一参照番号を有するか、或いは同一或いは類似の素子に対して使用した参照番号から１００、２００、３００及び/又は４００だけ増加した参照番号を有する。図５の議論は従って、短縮され既に説明したことと意味の在る相違点に終始する。
【００３３】
図５は、演算部６０６を示し、ここでは、加算器６５０が代替的に減算器の機能を果す。図５はまた演算部を示し、ここでは、乗算/加算器のツリーが多くの異なる方法のいずれかにより区分され、様々な区分のいずれかの出力が登録及び/又は未登録形式の出力である。例えば、乗算器６３０aの出力は、他のどれとも組み合わされない出力であり、この出力は、レジスタ６４０aによりレジスタされなくてもレジスタされてもよく（またレジスタされた信号およびレジスタされない信号の双方が出力されてもよい）。ＰＬＣ６６０はＰＬＣへ供給された多くのレジスタされた信号およびレジスタされない信号の中から演算部６０６の最終出力を選択する。他の例として、加算/減算器６５０aを使用して乗算器６３０aおよび６３０bの出力を組み合わせ、加算/減算器の出力は他のいずれとも組み合わされないがレジスタされたかあるいはレジスタされないかいずれでも良くあるいはその両方でもよく、ＰＬＣ６６０による出力でありうる。更なる別の例として、加算/減算器６５０の全てを使用して４つの乗算器６３０全ての出力を組み合わせて、加算/減算器の全ての出力はＰＬＣ６６０の出力であり、レジスタされたかあるいはレジスタされないかいずれでも良くあるいはその両方でもよい。他の例においては、幾つかの乗算器６３０の出力を組み合わせず出力する一方で、組み合わせた乗算器の出力を出力する。図４に示すように、加算/減算器６５０の制御は、（ソフトロジック部２０からの入力１５０に基づき）動的に或いは、（代替入力をＰＬＣｓ６５２a-cに供給するＦＣＥｓのプログラムされた状態に基づき静的に行われてもよい。図４のこれらに対応するＦＣＥｓの１部を図５に示し図が複雑になるのを防ぐ。また図４に示すように、ＰＬＣ６６０の制御は、（ソフトロジック部２０からの入力１５０に基づき）動的に或いは、（代替入力をＰＬＣ６６２に供給するＦＣＥ（ｓ）６６６のプログラムされた状態に基づき）より静的に行われてもよい。
【００３４】
更なる能力と自由度とを図５の演算部６０６に付与してもよい。例えば、レジスタ６４０の出力から加算/減算器６５０或いは他の加算器へのフィードバックループや、減算器、或いは加算/減算器を設けて、所望により１又はそれ以上の累算機能を果してもよい。フィードバックループおよび累算機能の使用は、図５に実際に示した様々なオプションを（たとえば比較的スタティックなプログラム制御により、或いはソフトロジック部２０によるダイナミック制御により、或いは制御のこれらタイプのいずれかをプログラムで選択することにより）選択するのと概ね同様の方法で制御可能である。演算部６０６（又は前述の演算部のいずれか）に与えてもよい更なる能力の他の例として、ＰＬＣ６６０の動作にやや似ている入力信号ルーティン装置を設け、様々な入力ポートへ印加される入力信号を乗算器６５０の様々な入力部に転送してもよい。設ける場合、この入力信号ルーティン回路の制御はＰＬＣ６６０の制御に類似してもよく、（例えば、静的にプログラムされた制御或いはソフトロジック部２０によるより動的な制御のいずれか、又は（プログラムによる選択に基づく）いずれでもよい。演算部６０６が有してもよい付加的な能力の他の例として、ｎ＊ｎ乗算器６３０の各々を選択的にｎ/２＊ｎ/２乗算器に分割し、多重ハーフワードで演算するようにしてもよい。乗算器をより小さなものへと分割することは２００１年９月１８日付け（件番号１７４/１９９）出願のラングハマー等の米国特許出願に詳細に述べられている。他で示し述べた事項に類似して、（例えば図４の加算減算器５５０或いは図５の加算減算器６５０の静的或いは動的制御に関して、）乗算器のこのような分割は静的或いは動的に制御され選択される。
【００３５】
図６は、本発明に係るプロセッサオブジェクト７０２を含むＰＬＤ１０の他の例を示す。図６において、前述の素子と同一或いは類似の素子は、（ソフトロジック部の素子の場合）対応する前述の素子と同一参照番号を有するか或いは、７００番台の参照番号すなわち先の図の対応する素子に使用した参照番号より１００、２００、３００、４００或いは５００だけ増加した参照番号を有する。図６の実施例において、プロセッサオブジェクト７０２は演算部７０６aおよび７０６b、アドレス発生器７１０およびプログラムシーケンサ７２０を含む。これら素子の全てはこれら特定機能に専用であり、例えば少なくともある範囲でこれら機能を目的としハード配線化される。例えば、演算部７０６aは、広範囲の算術および関連の演算のうちのいずれかを実行する能力のある少なくとも部分的にハード配線化した論理演算装置（「ＡＬＵ」）である。同様に、演算部７０６bは、広範囲の算術および関連の演算のうちのいずれかを実行する能力のある少なくとも部分的にハード配線化した乗算-累算器（「ＭＡＣ」）ブロックであり（例えば本明細書で既に述べたＭＡＣ回路のいずれかに類似する）。（前述したように、可能なＭＡＣブロック回路の他の例は２００１年９月１８日付け（件番号１７４/１９９）出願のラングハマー等の米国特許出願に示される。）アドレス発生器７１０は、（例えば、アドレスを発生し演算部７０６a/７０６bにより演算するためのデータをＰＬＤ１０のソフトロジック部２０から検索する際に使用するか、及び/又は演算部７０６a/７０６bにより出力されたデータをソフトロジック部へ戻すために使用するアドレスを発生する）前述のアドレス発生器に類似する。プログラムシーケンサ７２０は、（例えば、演算部７０６a/７０６bの演算の少なくともある側面を制御する際に使用する連続した命令のプログラムＲＯＭ４０b中のアドレスを発生する）前述のプログラムシーケンサのいずれかに類似する。
【００３６】
７００番台でない参照番号を有する図６中の素子は、好ましくはＰＬＤ１０のソフトロジック部中の素子である。これら素子は、プログラマブルロジック３０、データランダムアクセスメモリ（「ＲＡＭｓ」）４０a１及び４０a２、プログラムリードオンリーメモリ（「ＲＯＭ」）４０b、スタックメモリ４０c、及び図６に示すアドレス、データ及び制御信号用のバス及び関連する配線回路の殆ど或いは全部を含む。
【００３７】
直前に記載したバス及び配線回路は、前述の図中の素子５０、５２、６０、７０、８０、９０、１００、１１０、１２０、１３０１４０、１５０、及び１６０と同一或いは類似するものであってよい。言いかえると、図６中のバス及び配線回路は、プロセッサオブジェクト７０２の使用を支援する目的或いはこれらリソースを設ける何らかの他の目的のためＰＬＤ１０の汎用プログラマブル相互接続リソースの１部であってもよい。プロセッサオブジェクト７０２の使用を示し説明するのを容易にするため、これらリソースを、あたかもプロセッサオブジェクトの使用を支援するよう構成（具体的にはプログラム）するかのように図６に示すようにする。そして、前に描き説明した相互接続リソースの特定素子間での意図しない特定相関関係を回避するため、８００番台の完全に異なる参照番号を図６中の相互接続リソースの各部に使用すると供に以下の説明でも使用する。しかし、再び前述したものに類似する相互接続リソースを、図６中で（８００番台の参照番号を有する）相互接続リソースのいずれか或いは全部を実現するのに使用し得ることが判る。又、図６中の８００番台の単線は典型的には多数のリードを示し、これらリードの様々なものが「データ」信号、「アドレス」信号及び/又は「制御」信号のいずれか或いは全部を転送し得る。
【００３８】
ハードロジックプロセッサオブジェクト７０２の動作開始信号をリード８０２、８０４、及び８０６を介しプログラマブルロジック３０からプログラムシーケンサ７２０に供給してもよい。実行すべきある特定のプログラム命令のアドレスを同定することで、これら信号によりプログラムシーケンサ７２０がプログラムＲＯＭ４０bからこの命令（及びおそらく１連の他の命令を検索できるようになる。プログラムシーケンサ７２０により出力される各プログラムアドレスに基づき、プログラムＲＯＭ４０bが対応の（アドレス指定された）プログラム命令をリード８１２bを介して出力する。このような命令の制御部及びおそらくデータ部は、幾つかの可能な使用を目的としてＰＬＣ８１４に供給される。例えば、命令情報の幾つかを使用してＰＬＣ８１４（例えばそのＰＬＣにより実行される信号の経路化）を制御してもよい。これに代え或いはこれに加えて、幾つかの命令情報をＰＬＣ８１４を介し（又は使用し）経路化して、演算部７０６a及び/又は７０６b、及び/又はＰＬＣ８３０により実行される経路化を制御する。プログラムＲＯＭ４０bにより出力される命令情報のアドレス部からリード８０４および８０８を介しアドレス発生器７１０へと経路化してもよい。
【００３９】
アドレス発生器７１０は、データ（例えば演算部７０６a及び/又は７０６bにより処理されるべきデータ）のアドレスを出力することで受けたアドレス情報に応答する。アドレス発生器７１０のアドレス出力信号をリード８０８、８０４、８１０a１及び８１０a２を介してデータメモリ４０a１及び４０a２に供給する。メモリ４０a１/４０a２は、リード８１２a１/８１２a２を介しアドレス指定された場所からデータが出力されることでこれらアドレス信号に応答する。ＰＬＣ８１４は、これらデータをＡＬＵ７０６a及び/又はＭＡＣ７０６bへ（例えばプログラムＲＯＭ４０bからの現在の命令により指示されるように）経路化される。リード８１６はこの経路化に参加する。ＡＬＵ７０６a及び/又はＭＡＣ７０６bこのデータ（及びおそらく後に説明するその他のデータ）に基づき演算する。これら演算は、ＲＯＭ４０bからの現在の命令により部分的或いは全体的に制御され得る。
【００４０】
この点で、前述のアドレス発生器７１０のタイプが、ＤＳＰプロセッサに通常関連する機構に最も似ていてもよいことを言及すべきである。プロセッサの他のタイプは、いくらか異なってこれらアドレスを生成する。例えば、リディュースドインストラクションセットコンピューティング（「ＲＩＳＣ」）プロセッサは、典型的には、プログラムメモリ及びプロセッサ内部のロジック及びレジスタを使用する多数の工程を使用しこれらアドレスを発生する。従って、発明の他の実施の形態において、アドレス発生器７１０必要でないか或いはここに記載したのとは異なる形式を採用し得る。
【００４１】
演算部７０６a及び/又は７０６bは、それぞれリード８２８a及び８２８bを介しこれら演算により得られるデータ信号を出力する。これら信号は、供給信号をリード８３２、８３４、８３６、８３８、８４０、８４２及び/又は８４４の適当なものへ経路化するＰＬＣ８３０に供給される。言及したように、ＰＬＣ８３０により実現される経路化を、プログラムＲＯＭ４０bからの現在の命令により全体的或いは部分的に制御してもよい。リード８３６及び/又は８３８を介して経路化を行う場合、演算部７０６a及び/又は７０６bにより出力されるデータを、比較的直接これら素子のいずれか或いは双方に戻し、更なる処理を（例えばメモリ４０bからの同一或いは異なるプログラム命令に従いメモリ４０a１/４０a２から入力される他のデータにより）行ってもよい。リード８４０及び/又は８４２を介して経路化を行う場合、演算部７０６a及び/又は７０６bにより出力されるデータを、メモリ４０a１/４０a２中であって、アドレス発生器７１０により供給されるアドレスにより指定された場所に記憶してもよい。リード８４４を介して経路化を行う場合、演算部７０６a及び/又は７０６bにより出力されるデータを、プログラマブルロジック３０に供給してそこに記憶し及び/又はそこで或いはそれにより他に使用してもよい。アドレス発生器７１０により出力されるアドレス情報をプログラマブルロジック３０にリード８０２を介して供給して、リード８４４を介して供給されたデータのロジック３０内での究極の指定を決定するか或いは決定するのを助けてもよい。
【００４２】
図６には特定的に示さないものの、データは、プログラマブルロジック３０からプロセッサオブジェクト７０２へと、データがメモリ４０a１/４０a２から出力されるのと同じ手法で送出される。アドレス発生器７１０から（リード８０８/８０４/８０２を介し）供給されたアドレス情報を使用して、オブジェクト７０２へ出力されるべきデータのロジック３０内での場所を選択し或いは選択するのを助けてもよい。経路（示さない）を設けてデータをロジック３０からＰＬＣ８１４へ移送してもよい。この点に基づき、データの使用を、メモリ４０a１/４０a２のような他のソースから得るデータに関し前述したように行ってもよい。
【００４３】
多重並列アドレス発生サブ素子７１２a及び７１２bを含むアドレス発生器７１０を図６に示す。これら多重サブ素子７１２を幾つかの異なる方法のいずれかで使用し得る。例えば、１つのサブ素子７１２を使用して演算部７０６の１つに係るデータにアドレスを提供する一方で、他のサブ素子７１２を使用して演算部７０６の他のものに係るデータにアドレスを提供してもよい。他の例として、１つのサブ素子７１２を使用してプロセッサオブジェクト７０２へ入力されるデータにアドレスを提供する一方で、他のサブ素子７１２を使用してプロセッサオブジェクト７０２から出力されるデータにアドレスを提供してもよい。２つのサブ素子７１２しか図６には示さないものの、このような並列サブ素子を如何なる数でもアドレス発生器７１０中に設けてもよい。
【００４４】
今言及した素子７１０の能力同様に、素子４０b及び７２０も演算部７０６a及び７０６bの双方の同時並列演算を支援するのに適してもよく、（言いかえれば好ましくは適している）。このような同時演算は独立に行われても、或いは全体的又は部分的にリンクして行われてもよい。
【００４５】
プログラムシーケンサ７２０は、幾つかの目的のいずれかのためリード８１０ｃを介しメモリ４０ｃの更なるブロックと連絡する能力を有していてもよい。例えばプログラムシーケンサ７２０は、その現在のコンテンツを（プッシュダウン/ポップアップスタックメモリとして動作する）メモリ４０ｃへテンポラリーにアンロードすることで１連の中断処理を行う能力を有していてもよい。プログラムシーケンサ７２０が中断により呼び出された演算を完了したあと、それをメモリ４０ｃから再度ロードして、中断する前に停止していた演算を再開する。回路を設けて、この手法により所望の程度多数のグループ化された中断を行ってもよい。専用スタック４０ｃを使用することは、リターンアドレスを記憶するための幾つかの可能な技術の１つに過ぎない。他の例としては、本発明のプロセッサオブジェクトは、同様に或いは代替的にデータメモリ４０a１及び４０a２にスタックアドレスを記憶してもよい。
【００４６】
プログラムシーケンサ７２０が何らかのプログラムシーケンスを完了すると、完了した旨のシグナル（例えば「DONE」信号をリード８０６、８０４及び８０２を介しプログラマブルロジック３０に送ることで）を発する。
【００４７】
再び、図６中に示す実施例を単に図により説明するが、多くの変更が可能である。例えば、プロセッサオブジェクト７０２は、唯一１つの演算部７０６を含むかあるいは、２以上の演算部７０６を含んでもよい。設けられた演算部７０６は、図６に示すＡＬＵ及びＭＡＣ演算部と異なってもよい。多数の演算部７０６を設けた場合、これらは同一回路で構成してもよく、或いは全体的或いは部分的に異なるタイプのものでもよい。７１０および７２０のような素子の１具体例と1連の組の演算部７０６を含むＰＬＤ１０を図６に示すが、ＰＬＤ１０は、これら素子全ての多数の具体例及び多数のプロセッサオブジェクト７０２を有してもよい。更なる改変および変更は当業者にとって自明である。
【００４８】
前述した内容から、本発明に従いソフト及びハードロジックの混合によりユーザーは、与えられたデバイス１０が多数の異なるプロセッサを含むよう構成することが可能ことは明らかである。デバイス１０の使用は、従って特定のプロセッサキテクチャに限定されない。即ち、ユーザーはデバイス１０を使用して幾つかの異なるプロセッサのタイプを有効に確立することが可能である。本発明は、従って、プログラマブルロジックにおけるソフト及びハードロジック外のプロセッサを確立する能力をユーザーに与える。
【００４９】
更なる図７に図示する実施の形態はとりわけ、所謂ベリーロングインストラクションワード「ＶＬＩＷ」プログラムを処理するように構成される。（もっとも、それは他のタイプのプログラムを処理するためにも使用し得る。）ＶＬＩＷプログラムは比較的長く複雑な（或いは少なくとも複合的な）命令、アドレス、データ及び/又は他の情報のストリングスを含んでいるかもしれない命令を有する。例えば、単一のＶＬＩＷ命令は、この命令によりプログラムされた即ち制御された装置に対し、幾つかの動作を少なくとも部分的には並列に且つ１つの命令サイクル中で幾つかの異なるデータワードに基づき実行し、幾つかの出力ワードを生成する。ＶＬＩＷ命令は、実行されるべき幾つかの動作をそれぞれ指定する幾つかの命令部分を含んでもよい。これら命令は、また、実行されるべき様々な動作で使用される入力データのソースを（少なくとも関連事項に関して）それぞれ指定する幾つかのアドレス部分およびこれら動作の結果得られた出力データワードのあて先を含んでもよい。
【００５０】
図７に示す実施の形態は、他の実施の形態に関連して示し説明したことと幾つか類似する点及び共通点がある。図６のケース同様、前述した実施の形態と共通する図７に示す実施の形態のソフトロジック部の幾つかは、同一或いは同様の素子に対し先に使用した幾つかの２値参照番号（おそらくサフィックス（接尾部）と供に）により同定される。従って、例えば、プログラマブルロジック３０として先に参照したものの様々な部分を、図７中の参照番号３０、３０a、３０b、３０c及び３０dにより同定する。同様に、先に言及したメモリ４０のような様々な素子を、図７中の参照番号４０a１、４０a２、４０a３、４０a４、４０b及び４０cにより同定する。一方、図７に示す相互接続回路の殆ど或いは全ては、好ましくは、先に言及した素子５０、５２、６０、７０、８０、９０、１００、１１０、１２０、１３０、１４０、１５０及び１６０のようなプログラマブル相互接続リソースにより実現する。図７において示される、これら相互接続リソースは、プロセッサオブジェクト９０２を支援するよう構成される。しかしながら、これら相互接続リソースの大部分はプログラム可能であるので、多くの他の方法で代替的に構成し得ることが理解される。図７中の特定相互接続リソースと他の図中の特定相互接続リソースと間の意図しないおそらく不適切な限定的な相関関係を回避するため、１０００番台の完全に新しい参照番号を図７中の全ての相互接続リソースに対し用いる。加えて、以下の議論を短縮するため、フレーズ「相互接続リソース」を「ＩＲ」および「ＩＲｓ」に短縮する。先の図に示したように、図７中の単線を使用し示したＩＲｓの殆ど或いは全部は、実際には多数の並列信号経路である。
【００５１】
図７中のＰＬＤ１０の専用（例えば少なくとも部分的にハード配線化された）プロセッサオブジェクト９０２は、演算部９０６a、９０６b、９０６c及び９０６d、アドレス発生器９１０及びプログラムシーケンサ９２０を含む。（それは、また、中断制御装置３０bのような他の素子を含んでもよいが、図７に示す特定例において、中断制御装置３０bは、ＰＬＤ１０のプログラマブルロジックの１部であると仮定する。）演算部９０６の幾つかの異なるタイプを図７に示す。例えば、演算部９０６aはＭＡＣブロックとして示し、演算部９０６bはＡＬＵとして示し、演算部９０６cは（例えばエラー訂正やエンクリプションに使用する数学上の演算のある特定のタイプを実行するための）ガロイスフィールド回路として示し、演算部９０６dはバレルシフターとして示す。演算部９０６のあるもの或いは全ては、前述した演算部（例えば図６の演算部７０６）に概ね類似してもよい。アドレス発生器９１０前述したアドレス発生器（例えば図６の７１０）に類似してもよい。プログラムシーケンサ９２０は前述したプログラムシーケンサ（例えば図６の７２０）に類似してもよい。プログラムシーケンサ９２０は図６中に素子７１０及び４０cが協働したのと同様にスタックメモリ４０cと協働してもよい。これに代え、スタックアドレスはデータメモリ４０a１及び４０a２に記憶してもよい。
【００５２】
インターフェースブロック３０aは、一方で、信号を転送しプロセッサオブジェクト９０２とこのプロセッサオブジェクトの使用を支援する素子との間で信号を変換し、他方で、ＰＬＤ１０中のプログラマブルロジック及び他の回路３０/３０bの残りの部分を提供する。インターフェースブロック３０aの１つの具体的実現手段を図８により詳細に示すと供に以下説明する。差当たり、インターフェースブロック３０aは、データ、アドレス、制御情報をいずれか或いは双方の方向に通過させ、加えて、それは提供されたアドレスオフセット情報を使用してある関連情報をより絶対的なアドレス情報に変換してもよいことに言及すれば十分である。制御タイプの情報は、典型的にはＩＲｓ１００２/１００４及びＩＲｓ１００６間のインターフェースブロック３０aを介し通過する。例えば、この制御情報は、プログラムシーケンサ９２０の動作を開始し、その後（例えば中断を伴い）制御を行ってもよい。同様に、（ＩＲｓ１００６からＩＲｓ１００２/１００４へ通過した）他のこのような制御情報は、プログラムシーケンサがプログラムシーケンスを完了したことを示してもよい。
【００５３】
議論を進めることによりより明らかになるであろうが、本発明に係るインターフェースブロック３０a或いは同様の回路（図８、１４、１５を参照）は、外部エージェントにより機能同定装置（「ＩＤ」）に基づきプログラム及びデータメモリにアクセスすることを可能とする。外部エージェントは、プロセッサオブジェクトの完全な内部メモリマップを知る必要はないが、各並列機能のためのゼロ-アドレスに基づくメモリマップのみは知る必要がある。「プロセッサオブジェクトの完全な内部メモリマップ」は、他の場所では時々「絶対的」アドレスとして言及され、。「ゼロ-アドレスに基づくメモリマップ」は他の場所では時々「相対的」アドレスとして言及される。この目的は、外部エージェントがユニバーサルコア或いはリソースとしてプロセッサオブジェクトを使用することを可能にするためである。分離固定機能コアをＰＬＤｓ中においてソフトロジックを実現するのに共通に使用するのと同様の手法により、ソフトコア或いはリソースをここで示し説明するＰＬＤｓのプロセッサオブジェクトのタイプに対し設けてもよい。このことは本発明のＰＬＤｓ上のプロセッサオブジェクトの能力で多数の機能（１つではない）を支援し、サイズと速度間のトレードオフを可能にする。更なる利点は、ソフトウエアの機能の開発はロジックの機能よりずっと速く、（フィールド中にバグが見つかった場合フィックスするのがより容易である。ユーザは、ここの機能のメモリマップ（絶対的アドレス）に関し何か知る必要はない。「リンカー」はＩＤコードをプロセッサオブジェクトで作用する各機能に付与し、構成ファイルを提供することで、書きこみ或いはさもなくば機能の生成に使用するゼロ-アドレスに基づく（相対的）アドレス間の変換テーブルを開始する。加えて、リンカーは、アプリケーションスペースを「保護」する（例えば、単に各ＩＤの絶対的アドレスのある範囲を許可する）ようアドレス変換装置を構成し得る。言及したように、このインターフェースブロックタイプの機能性の様々な側面は、説明が進むにつれより十分に説明される。
【００５４】
動作時に、プログラムシーケンサ９２０はある１つの特定タスク或いは幾つかの特定タスクを実行するのに適当な１連のプログラム命令アドレスを出力する。これら命令アドレスは、ＩＲｓ１０１０を介してプログラムメモリ４０bに供給され、アドレス指定された場所に記憶されるプログラム命令を出力する。言及したように、これら命令はＶＬＩＷの命令であってもよい。
【００５５】
メモリ４０bにより出力された各命令は、ＩＲｓ１０２０を介し命令アンパックブロック３０ｃへ供給される。命令アンパックブロック３０ｃは、プログラムメモリ４０bからのある１つの命令が、実際に幾つかの命令からなるある１つのＶＬＩＷ命令であることを認識するような機能を実行する。このような場合、命令アンパックブロック３０ｃは、ＶＬＩＷ命令をセパレートな複数の命令へ分割し、そうすることで、多かれ少なかれ各命令を更にセパレートに処理できる。参照番号で提示したように、命令アンパックブロック３０ｃは、好ましくは、ＰＬＤ１０のプログラマブルロジック中に実現される。
【００５６】
ある１つの命令がブロック３０ｃによりアンパックされた後、それはＩＲｓ１０４０を介し命令デコードブロック３０ｄに供給される。命令デコードブロック３０ｄは、受取った命令情報をデコードし、４０a１−４、９０６a１−ｄ、及び９１０のような他の構成部分を制御する信号を生成し、命令情報により特定された機能を実際に実行する。再び、参照番号で提示したように、命令デコードブロック３０ｄは、好ましくは、ＰＬＤ１０のプログラマブルロジック中に実現される。
【００５７】
ＶＬＩＷワードは、与えられたクロックサイクル中に実行されるべく演算の量に応じて異なる長さを有してもよい。命令アンパックブロック３０ｃの機能の１つは、どれだけ多くのセパレート命令が各フェッチに存在するかを決定することを目的とし、以下のフェッチに関する命令アドレスをおそらく変更することを目的としてもよい。
【００５８】
前記説明から明らかなように、ある１つの命令が（素子３０ｃ中で）アンパックされ（素子３０ｄ中で）デコードされた後、（ＩＲｓ１０２０及び１０２２を介して素子３０ｄにより出力された）形式で、アドレス発生器９１０、メモリ４０a１−４、及び演算部９０６a-ｄを制御或いは少なくとも部分的に制御する際に好適に使用し得る。例えば、アンパックされデコードされた命令は、あるアドレス及び/又は制御情報をアドレス発生器９１０に提供し、そうすることで、アドレス発生器は、メモリ４０a１−４から検索されるべきデータのアドレスを（ＩＲｓ１０３０を介して）出力し、このアドレスを演算部９０６a-ｄのいずれか或いは全てにより使用してもよい。これに代えて或いはこれに加えて、このアドレス及び/又は制御情報をアドレス発生器９１０により使用し、演算部９０６a-ｄにより出力されたデータを記憶するメモリ４０a１−４中のアドレスを決定し、（ＩＲｓ１０３０を介して）出力するのを助ける。前述してものに対し代わるものとして、或いは追加するものとして、ＩＲｓ１０２２を介し命令デコード３０ｄにより出力された命令情報を使用してアドレスメモリ４０a１−４をアドレス指定し助けることで、これらメモリからデータを出力し、及び/又はこれら命令情報をＩＲｓ１０４０を介して演算部９０６a-ｄへ通過させ、演算部を制御或いは制御するのを助ける。
【００５９】
メモリ４０a１−４により出力されたデータはＩＲｓ１０４０を介し演算部９０６a-ｄへ供給される。演算部９０６a-ｄは、（命令デコード３０ｄからの前記命令情報により部分的或いは全体的に決定、制御、或いはさもなくば影響されるデータに基づきこれらの機能を実行する。どんな時でも、演算部９０６a-ｄの如何なるものも使用に供することが可能である。図７は演算部９０６a-ｄの各々がメモリ４０a１−４のそれぞれ１つからしか入力データを得ないことを提示しているが、より多くのデータ経路化の自由度が所望により付与され得ることが理解できる。
【００６０】
演算部９０６a-ｄにより出力されたデータは、ＩＲｓ１０５０を介してメモリ４０a１−４戻してもよい。メモリ４０a１−４からのデータは、ＩＲｓ１０６０、インターフェースブロック３０a、ＩＲｓ１００２を介してプログラマブルロジックの残りの部分へ送ってもよい。（過密になるのを防ぐため、図７は単にメモリ４０a１−４へ（及びからの）これらの配線１０６０を示すが、この配線示された他のメモリのいずれか或いは全てに対し重複していることがわかる。データはプログラマブルロジック３０から素子１００２、３０a、及び１０６０を介してメモリ４０a１−４へ逆方向に流れ得ることが判る。
【００６１】
中断制御器３０ｂを使用して、現在プログラムシーケンサ９２０により実行しているプログラムシーケンスを一時的に中断するのに必要な条件に対応してもよい。中断制御器３０ｂから素子１００４、１００２、３０a、及び１０６０を介してプログラムシーケンサ９２０に供給された中断命令及び他の中断情報に応答して、シーケンサ９２０は、その現在のシーケンスを中断し、スタック４０ｃにこの中断したシーケンスを後で再開するのに必要な情報を記憶し、そして新たな（中断）シーケンスを開始してもよい。図６に示す実施の形態に関して先に述べたように、素子３０ｂ、９２０、及び４０ｃが、所望の数の組を成す中断を支援する能力を有していてもよい。スタック４０ｃを代替的に或いは付加的に使用して、これら中断以外のリターンアドレスを記憶してもよい。サブルーチンコールに関するアドレスが例である。また、前述したように、プロセッサは代替的には４０aのような他の（メイン）メモリにスタックを記憶してもよい。そして、プロセッサはリターンアドレスよりずっと多くの情報をサブルーチンコール用に記憶してもよい。
【００６２】
プログラム（プログラム、サブルーチン、インターラプトシーケンス等を包括的に含む用語「プログラム」を使用する）の命令は、プログラム完了時に「ＤＯＮＥ」信号を一般化し回路の適当な部分へ送る（例えば命令デコード３０ｄから素子１００６、３０a、及び１００２を介しプログラマブルロジック３０へ送るための命令を含んでもよい。このような「ＤＯＮＥ」信号は、プロセッサオブジェクトを本発明のある視点に従い「ユニバーサル」コアとして使用する場合に、特に有用である。この場合、「ＤＯＮＥ」信号は、外部エージェントにプロセッサが現在のタスクを完了したことを知らせる。
【００６３】
今一度、図７は本発明に従い行うことが可能なことを単に示しているに過ぎない。例えば、図７は、所望のあらゆる可能な相互接続を示していない。図示することにより、プログラマブルロジック３０及びプログラムメモリ４０ｂ間のＩＲｓを使用して新たな或いは変更した命令をそのメモリにロードすることが望ましいかもしれない。同様に図７に示す演算部９０６の数及びタイプは、単に図示したに過ぎず、これと異なる数及びタイプのこのような素子を所望により代わりに使用し得る。図６の実施例の場合のように、演算部９０６の使用を支援する素子は、好ましくは、望まれる場合には多くの部９０６が有するような並列演算を支援する適当な能力を有する。従って、例えば、各ＶＬＩＷの長さは好ましくは並列に演算部９０６を制御するのに適した長さであり、アドレス発生器９１０は、好適には、演算部９０６で必要とするのと同じくらい多くの入力及び/又は出力データアドレスを発生する。
【００６４】
一般的には、ＰＬＤ１０上の相互接続リソースを使用して図７（及び他の実施例）中に１０００番台で示すＩＲｓのいずれかを提供してもよいのは本当であるが、典型的には、オブジェクト９０２及びオブジェクト９０２の使用を充分に支援する素子を配置し、（図１中の素子６０および８０のような）比較的ローカルなＩＲｓをこれら構成部間の連絡の殆ど或いは全てに対し使用し得る。既に述べたように、このような比較的ローカルなＩＲｓは、高速で、必要は電力は少なく、占有スペースは少なく、おそらく臨界速度の信号のこのような過剰な相互接続に関し他の類似の利点を有する傾向にある。
【００６５】
図８は、更に詳細な（図７の）インターフェースブロック３０aの実施例を示す。図８に示すように、インターフェースブロック３０aは、（図に示すよう上から下までで）データチャネル、アドレスチャネル、識別（ＩＤ）チャネル、及び制御チャネルを示す。他の図に示すように、図８の相互接続を示す単線及び関連する素子は、典型的には多数の相互接続および素子を示す。従って、例えば、データチャネルは、１６の導線分の幅であってもよく、従って、素子１１１０、１１１０及び１１１４をそれぞれ１６個づつ含んでもよい。
【００６６】
より詳細に前記チャネルの各々を検討すると、データチャネルは、ある方向にインターフェースブロック３０aを通過したデータをレジスタするのに所望により使用し得る入力/出力レジスタ１１１０を含んでもよい。データチャネルは、データがＩＲｓ１００２からＩＲｓ１０６０へ通過し所望によりレジスタ１１１０をバイパスするのを許可するＰＬＣｓ１１１２を含んでもよい。同様に、データチャネルは、データがＩＲｓ１０６０からＩＲｓ１００２へ通過し所望によりレジスタ１１１０をバイパスするのを許可するＰＬＣｓ１１１２を含んでもよい。
【００６７】
アドレスチャネルは、以下説明するようにＩＤ情報に基づく変更を伴ってアドレス（少なくとも１つの相対アドレス）がプロセッサオブジェクトに供給されるのを許可する。プログラマブルロジック３０から入力されたアドレス情報は、レジスタ１１２０によりレジスタされるか、或いはＰＬＣｓ１２２２を介しレジスタ１１２０をバイパスしてもよい。加算器１１３０を設けアドレスオフセット値を所望によりＰＬＣｓ１１２２の出力に加える。
【００６８】
ＩＤチャネルは、プロセッサオブジェクトが実行し得る各異なるプログラムに固有のＩＤ値をプログラマブルロジック３０が提供するのを可能にする。このＩＤ値はレジスタ１１４０によりレジスタされるか、或いは所望によりＰＬＣｓ１２４２を介しこれらレジスタをバイパスしてもよい。ＰＬＣｓ１２４２から出力したＩＤ値はテーブル１１４４に供給され、（例えば供給されたＩＤ値に関連するアドレスオフセット値を含むテーブル１１４４の場所をアドレス指定する。テーブル１１４４は、供給されたＩＤ値に対応するアドレスオフセット値を出力し、加算器１１３０に供給することにより応答する。加算器１１３０は、このオフセット値をＰＬＣｓ１１２２により出力された（相対）アドレス値に加算し、（図７の）メモリ４０中の最終即ち絶対的アドレスを生成する。このタイプの「相対」アドレスから「絶対」アドレスへの変換を、データアドレス或いは命令アドレス、或いはデータアドレスと命令アドレスの双方に対し使用してもよい。データアドレスと命令アドレスの双方に対し使用する場合、２つのチャネル（各々は概ね素子１１２０/１１２２/１１３０/１１４０/１１４２/１１４４に似ている）を必要とし、１チャネルをデータアドレス用に使用し、他の１チャネルを命令アドレス用に使用してもよい。異なるオフセット値が、各ＩＤ値に関連するデータアドレスと命令アドレスの双方に対し必要となるかもしれない。従って、１１２０/１１２２/１１３０/１１４０/１１４２/１１４４のような２つのチャネルは、データアドレスと命令アドレスの双方がゼロ-アドレスに基づく値から絶対アドレス値への変換を必要とする場合に必要とされるかもしれない。ある場合には、このタイプのアドレス変換能力を、本発明に従って回路内の他の場所に提供するか、或いはＰＬＤｓ中の情報の流れに提供することは望ましいかもしれない。そうであるなら、３０aのようなインターフェース回路の更なる付加的な具体的構成を設けるか或いは、変換を必要とする情報をインターフェース回路３０aの図示した構成を介して経路化してもよい。図示した幾つかの例を以下本明細書中で議論する。
【００６９】
制御チャネルは、インターフェースブロック３０aを介しいずれかの方向に通過する「ＳＴＡＲＴ」信号及び「ＤＯＮＥ」信号ような制御信号をレジスタする入力/出力レジスタを含んでもよい。代替的には、レジスタ１１５０はＰＬＣｓ１１５２及び/又は１１５４を介しいずれかの方向にバイパスされ得る。
【００７０】
データアドレスをオフセットする能力と開始命令アドレスをオフセットする能力とを有するインターフェースブロック３０aの１例を図８Ａに示す。図８Ａの実施例において、素子１１２０/１１２２/１１３０/１１４０/１１４２/１１４４（図８）は、データアドレスオフセット即ちＩＲｓ１００６よりむしろＩＲｓ１０６０に出力する専用に構成される。付加された素子１１６０/１１６２/１１６４はそれぞれ素子１１４０/１１４２/１１４４に類似するが、これらを使用して、各プログラム毎のＩＤ値をそのプログラムの命令のメモリ４０ｂ中の絶対的開始アドレスへ変更してもよい。ＩＲｓ１００６を介し開始アドレスを出力することに加え、回路１１６４或いは関連回路は、ＩＲｓ１００６を介し信号を出力することで、（図１０の）プライオリティーデコーダ１４４０は、（図１０）のＰＬＣ１４３０がその開始アドレスを（図１０の）レジスタ即ちプログラム命令カウンタ１４５０へ供給するのを可能にする。これにより、メモリ４０/４０ｂから第１の命令を取り出す。その後、レジスタ１４５０は、連続命令クロックサイクル中でインクリーメントし、メモリ４０/４０ｂから関連するプログラムの連続する命令を取り出す。（図１０の他の側面を以下詳細に議論する。）
【００７１】
図８および８Ａに示すタイプのインターフェースブロック３０aは、各プログラムのコマンドを他のプログラムに使用されるのと同一の相対データ及び/又は命令アドレスを使用して要約タームの形式で記述するのを可能にするという利点を有する。例えば、各プログラムの相対命令アドレスをゼロで開始してもよい。プログラムが実際にＰＬＤ１０（例えば図７中のプログラムメモリの分離された部分）にロードされる場合、プログラムの各命令に対する絶対的プログラムメモリのゼロの場所からのオフセットの量は、そのプログラムに対し（図８の）テーブル１１４４に記憶されたオフセット値或いは（図８Ａの）テーブル１１６４に記憶されたオフセット値となる。各プログラムが呼び出される際、このプログラムに関連するＩＤ値を使用しテーブル１１４４或いは１１４６からそのプログラムに対する適当なアドレスオフセット値を検索する。図８の場合、加算器１１３０はそのオフセット値を、素子１１２０/１１２２を介しそのプログラム用に規定される相対命令アドレスに加算する。図８Ａの場合、テーブル１１６４の出力は、絶対命令アドレスとして直接使用し得る。このアプローチは、ここで述べるようにプロセッサオブジェクトを有するＰＬＤｓのためのプログラムの書きこみ及びデバッグを多いに簡略化する。同様のアプローチをデータアドレス（例えば命令中のデータに使用するアドレスに使用し得る。（例えば、以下の図１２及び１２Ａを参照）相対的なアドレスから絶対的なアドレスへの変換をデータのアドレス指定の目的で使用することにより、プロセッサオブジェクトを有するＰＬＤｓのためのプログラムの書きこみ及びデバッグを簡略化する。また、本明細書中の後で、如何にしてこれら概念を本発明におけるＰＬＤｓを含む大きなシステムに延用可能とするかにつき（例えば図１４及び１５の議論を参考に）説明する。図１４及び１５に関連して説明する更なるインターフェースの特徴は、図８および８Ａに示すタイプの回路中に含まれるか、或いは回路に追加されることが理解される。
【００７２】
図８および図８Ａに示された例示的なインターフェースブロックは図７に示された典型的なＰＬＤ実施例に関するものであるが、この形式のインターフェースは本発明のいずれの実施例においても使用し得ることが理解される。
【００７３】
前述のことから本発明に係るＰＬＤが多くの利点を有することが良好に理解されよう。ＰＬＤ上に適正な種類のプロセッサオブジェクト（適正な種類の動作部分を充分に伴って）を充分に有する場合、ユーザはカスタム用プロセッサを実施するためにこのＰＬＤを使用することができる。この種のカスタムプロセッサは、例えば従来のマイクロプロセッサの機能を有することができるが、さらに追加的な機能を備えることもできる。例えば、従来のマイクロプロセッサに比べてより並列な機能ユニット（動作部分）を備えることができる。本発明のＰＬＤは専用の完全なマイクロプロセッサをオンボードに備えるＰＬＤに比べて全体的に“低価格”なものであり、これは例えばユーザが完全なマイクロプロセッサを必要としていない場合に高価な間接回路を伴わないためである。本発明によってユーザは各プロセッサ構成ブロックへのアクセスを有しており、従ってユーザはこれらの構成ブロックが完全なマイクロプロセッサを提供するために必要とされない場合に他の用途に使用することができる。例えば、ＭＡＣブロックをＤＳＰプロセッサの一部として使用するか、またはこれをその他の専用データ伝送動作に使用することができる。別の例として、プログラムシーケンサを複合ステートマシンとして使用することができる。
【００７４】
本発明に従ってＰＬＤ上に設けられた専用回路（プロセッサオブジェクトを含む）は、ＰＬＤのプログラマブルロジック３０内で実行された場合に最も遅いおよび／または最も低効率なマイクロプロセッサ動作を実行するように適応することが好適である。
【００７５】
本発明に係るＰＬＤのハードロジックプロセッサオブジェクト部分内に含めることが好適である別の制御回路の例は、例えば図９に示される種類の多ポートレジスタファイルである。レジスタファイルは制御ユニット（例えばプログラムシーケンサまたはアドレスジェネレータ等）である。レジスタファイルはメインメモリと機能ユニットとの間の局部記憶装置として使用することができる。縮小命令セット（“ＲＩＳＣ”）プロセッサは一般的にアドレスジェネレータを備えておらず、アドレスはレジスタファイル内の局部記憶装置によって計算および記憶される。
【００７６】
図９に示されているように、多ポートレジスタファイル１２１０は複数のレジスタ１２２２（例えば１６個）からなるメモリ１２２０を含んでおり、各レジスタはそれぞれ複数ビット（例えば１６ビット）のデータワードを記憶することができる。各レジスタ１２２２は結合された入力ＰＬＣ１２３０および結合された出力ＰＬＣ１２４０を備えている。各入力ＰＬＣ１２３０は８個の１６ビットワードのうちのいずれか１つを結合されたレジスタ１２２２に付加することができ、このレジスタ内に記憶する。レジスタファイル１２１０への８個の１６ビット入力１２２８は、このレジスタファイルの入力ポートと呼称されることがある。各出力ＰＬＣ１２４０は１６個のレジスタ１２２２のうちのいずれか１つの内容を結合されたレジスタファイルの出力ポート１２４２に付加することができる。ＰＬＣ１２３０および１２４０のそれぞれは、基本的に固定された選択を行うためにプログラム制御するか、またはより動的な選択を行うためにより動的に制御（例えば時間変化するロジックあるいはその他の制御信号によって）することができる。ＰＬＣ１２３０および１２４０の全ては並列に動作することができ、従って８個以上の入力ワードをレジスタファイル１２１０内に同時にルーティングすることができ、同じ時点において８個以上の出力ワードがレジスタファイルから外へルーティングされる。回路は全く柔軟で無閉塞なものであり、任意の入力ポート１２２８からの入力ワードを（レジスタ１２２２が動作するための最低限の１クロックサイクルの遅延の後に）任意の１つまたは複数の出力ポート１２４２に付加することを可能にする。
【００７７】
図９に示された形式のレジスタファイルはここで記述されているＰＬＤ１０の汎用プログラマブルロジック３０内で実施するには比較的高価であるが、専用回路（例えば固定配線式あるいは部分的に固定配線式の）内にておいては容易に実施することができる。従って、レジスタファイル１２１０は、本発明に係るＰＬＤ上のプロセッサオブジェクトの制御部分（例えば２０４／５０４／６０４／等）内に含まれるものの好適な候補の別の例である。特定のアーキテクチャにおいてレジスタファイルはアドレスジェネレータとして使用することができる（例えば、図７のアドレスジェネレータ９１０）。
【００７８】
レジスタファイル１２１０の種々の特徴に対して前述した特定のサイズは単に説明のためのものであり、必要に応じてその他のサイズを代替的に使用し得ることが理解される。例えば、レジスタファイルは前述した１６個よりも多いあるいは少ないレジスタ１２２２を備えることができ、また各レジスタのサイズは前述した１６ビットよりも小さいあるいは大きいものとすることができる。同様に、レジスタファイルは前述した前述した８個よりも多い入力ポートならびに出力ポートを備えることができる。レジスタファイル内の入力ポートおよび出力ポートの数は異なったものとすることができる。
【００７９】
図９Ａには、本発明に係る説明的なＰＬＤ１０が示されており、これは前述した多ポートレジスタファイル１２１０を含みこれを使用している。図９Ａに示されたアーキテクチャはＲＩＳＣプロセッサを提供するために使用し得るものである。図９Ａに示された要素に加えて、ＰＬＤ１０は他のソフトロジック要素を含むことができる。後に図１０および図１１に関して記述するようにＲＩＳＣプロセッサ内において通常プログラムシーケンサはゼロオーバヘッドループを有していないが、プログラムシーケンサ１３２０は本明細書中に記載されている他のプログラムシーケンサと同様なものとすることができる。矢印で垂直に結ばれている各ブロック４０ｂ，３０ｄ等はパイプラインステージとすることができるが、必ずしもこの種のステージとする必要はない。レジスタファイル１２１０と機能ユニット１３０６ならびにデータメモリ４０ａとの間のマルチプレクサ１３１４も、先にレジスタファイルに戻して書き込みする必要なく進行中の計算を受け入れることができる。このことは当業者において“フォワーディング”として知られている。レジスタファイル１２１０は少なくとも１つの入力ポートならびに２つの出力ポートを有する。機能ユニット１３０６は本明細書において先に記述した動作部分（例えば、２０６（図１）、３０６（図２）、４０６（図３）、５０６（図４）、６０６（図５）、７０６（図６）、９０６（図７）等）のうちの１つまたは複数のものを含んでいる。
【００８０】
図９Ｂには別のＲＩＳＣアーキテクチャが示されている。このアーキテクチャは図９Ａのものと類似であるが、データメモリ４０ａが機能ユニット１３０６のライン内にある。
【００８１】
本発明の実施例のいずれにも使用し得るプログラムシーケンサの説明的な実施例が図１０により詳細に示されている。参照を容易にするために図１０に示されたプログラムシーケンサはプログラムシーケンサ１４２０を引用するが、前述した任意のプログラムシーケンサ（例えば２２０，５２０，６２０等）を使用し得ることが理解される。
【００８２】
プログラムシーケンサ１４２０は、ＰＬＣ１４３０（基本的にマルチプレクサ形式回路）を含んでおり、これによってその複数の入力（“命令アドレス”、“ネクストプログラム”、“スタックリターン”、“アザーインプッツ”）のうちのいずれかをこのＰＬＣによって出力される命令アドレス信号として選択する。ＰＬＣ１４３０はいくつかの制御入力信号（“インタラプト”、“コンディションズ”、“スペシャルケースイズ”、“ゼロオーバヘッドループ”、“アザーコントロールズ”）によってその選択を行うように制御される。これらの信号は、優先エンコーダ回路（オプショナル）１４４０によって処理することができる。例えば、エンコーダ回路１４４０は、相互に対立する信号が定義されないことを保持するか；またはそのような信号が定義された場合に最も優先順位の高い制御信号のみをＰＬＣ１４３０の制御に使用するために出力することを保持する。プログラムシーケンサ１４２０はさらにＰＬＣ１４３０によって出力された命令アドレス信号を記録するためのレジスタ１４５０（オプショナル）を含むことができる。（レジスタ１４５０を含んでいる要素は、ＰＬＣ１４３０からのいずれかの変異的な出力によって通常モード動作がオーバライドされない限り、連続する各命令サイクルの間にレジスタ１４５０の内容を一定に増加するように変更（例えば、インクリメント）するための回路を含んでいる。従ってレジスタ１４５０はプログラム命令カウンタとして考えることもできる。）前述したように、通常プログラムメモリ４０／４０ｂは専用（すなわち少なくとも部分的に固定配線式の）のプログラムシーケンサ回路１４２０の一部ではないが、完全化のために図１０に示されている。プログラムメモリ４０／４０ｂは要素１４３０／１４５０の出力信号によってアドレスされ、メモリ内のアドレスされた位置で実行されるプログラム命令を出力する。
【００８３】
図１０に示された種々の形式の入力信号の多くは既に説明されており、従ってここでは短く述べるだけで充分である。“命令アドレス”、“ネクストプログラム”、“ブランチ”、ならびに“アザーインプッツ”信号は通常プログラムシーケンサ１４２０を含んでいるＰＬＤ１０のソフトロジック部分２０（例えば図１）内から生じる。これらの信号のいくつかあるいは全てが図８および図８Ａに示されているようなインターフェース回路３０ａを介して伝送され、従ってこれらの信号のいくつかあるいは全てが前述したようにインターフェース回路処理に依存する（例えばアドレス変換を絶対的に開始するためにオフセット数値またはＩＤによって相対アドレスを変更する）。特定の“アザーインプッツ”信号をプログラムシーケンサの“ゼロオーバヘッド”機能を補助するために使用することができ、これは図１１を参照して以下により詳細に説明する。この場合、これらの“アザーインプッツ”信号はプログラムシーケンサに対してよりローカル（例えばその内部で）に形成される。“スタックリターン”入力信号は典型的にプログラムシーケンサと共に使用されるスタックメモリ４０ｃ（例えば図７）から発信される（このスタックメモリは一般的にＰＬＤのソフトロジック部分２０とすることもできる）。“インタラプト”、“コンディションズ”、“スペシャルケースイズ”、および“アザーコントロールズ”信号もプログラムシーケンサ１４２０を含んでいるＰＬＤ１０のソフトロジック部分２０内から生じる。再び、これらの信号のいくつかあるいは全てが図８および図８Ａに示されているようなインターフェース回路３０ａを介して伝送される。“ゼロオーバヘッドループ”信号もＰＬＤのソフトロジック部分２０内から生じるか、あるいはプログラムシーケンサがこの種の信号を形成し得ると仮定するとこれらはこのプログラムシーケンサ１４２０内でよりローカルに形成することができる。
【００８４】
“ゼロオーバヘッドループ”状態は、それ自体が一群の命令の繰り返し実行の制御としてこの機能を実行するプログラムシーケンサ１４２０に関するものである。例えば、本発明に係るプログラムシーケンスは、プログラムシーケンサがそれ以上の外部命令を使用せずに繰り返し実行する命令シーケンスの開始アドレスとして外部から付加された命令アドレスを使用することができる。この形式の動作が必要とされる場合、“ゼロオーバヘッドループ”制御信号が定義され（例えば、ＰＬＤのソフトロジック部分２０またはプログラムシーケンサ１４２０自体によって）、ＰＬＣ１４３０が“アザーインプッツ”信号からの命令アドレスを出力する。この“アザーインプッツ”信号はプログラムシーケンサ１４２０自体によって形成された開始命令アドレス信号である。“ゼロオーバヘッドループ”機能を伴った例示的なプログラムシーケンサ回路が本明細書において以下により詳細に説明される（例えば図１１に関連して）。
【００８５】
以下に記す理由のため、本発明に係るＰＬＤのハードロジック部分（群）（例えば図１）の一部としてプログラムシーケンサ１４２０のようなプログラムシーケンサを設けることが好適である。プログラムシーケンサへの入力のいくつかはＰＬＤのソフトロジック部分２０内における比較的難解な復号の結果またはその他の比較的時間のかかる動作の結果であり得る。プログラムシーケンサが全ての入力を受信する時間（ＰＬＤクロックサイクルの間）のため、プログラムシーケンサがその動作を実行するためにそれ程多くの時間はクロックサイクル中に残されていない。従ってプログラムシーケンサの動作を高速化するために専用回路を使用することが好適であり、それによってＰＬＤクロックサイクル中の比較的短い一部の間にその動作を完了することができる。
【００８６】
図１１には、どのようにプログラムシーケンサ１４２０に説明的な“ゼロオーバヘッドループ”機能を設けることができるかがより詳細に示されている。図１１に示されている説明的な実施例において、プログラムシーケンサ１４２０は少なくとも１つのループ制御回路１４６０の用例（複数の用例も可能）を有している。以下の説明はループ制御回路１４６０ａに関して行うが、全ての記述がその他のいずれのこの回路の用例１４６０ｂ等にも同様に該当することが理解される。
【００８７】
ループ制御回路１４６０ａは、開始アドレスレジスタ１４７０と終了アドレスレジスタ１４７４とカウントレジスタ１４７８とを含んでいる。開始アドレスレジスタは、回路１４６０ａによって制御されるループを開始させるプログラムメモリ４０／４０ｂ内の命令のアドレスを含んでいる。終了アドレスレジスタ１４７４は、回路１４６０ａによって制御されるループを終了させるプログラムメモリ４０／４０ｂ内の命令のアドレスを含んでいる。カウントレジスタ１４７８は回路１４６０ａによって制御されるループを実行する回数を含んでいる。レジスタ１４７０、１４７４、および１４７８は前述した情報を任意のいずれかの方式でロードすることができる。例えば、これらのレジスタは、これらを含んでいるＰＬＤ１０が最初に構成（プログラム）される際にロードすることができる。その後これらのレジスタはＲＯＭとして使用することができる。他方、これらのレジスタのうちの１つあるいは複数のものをＰＬＤのソフトロジック部分（例えば図１の２０）によってロードすることができる。このことを実行する方式の一例として、これらのレジスタのいくつかあるいは全てをロードするためにプログラムメモリ４０／４０ｂからの命令を使用することができる。このようなメモリ４０／４０ｂからの命令は以下のような解釈を有することができる：“回路１４６０ａを開始アドレス１０５０、終了アドレス１０５６、およびカウント８でロードし”、これらの数字（１０５０，１０５６，８）はその命令の中の変数フィールドとすることができる。
【００８８】
回路１４６０ａはさらに比較回路１４７６、リセットおよびロード可能なカウンタ１４８０、およびゼロ検出回路１４８２を含んでいる。カウンタ１４８０は、レジスタ１４７８内に含まれているカウント値によって選択的にリセットおよびロードすることができる。
【００８９】
ゼロオーバヘッドループを実行することが必要である際、このループに対するレジスタ１４７０／１４７４／１４７８を設定する前述した命令（またはその他のいずれかの命令）は、レジスタ１４５０がこのループの開始アドレスを受信することを誘起し、またカウンタ１４８０がレジスタ１４７８からのカウント数値をロードすることを誘起することができる。その後最初のループの実行に従ってレジスタ１４５０が増加し、このレジスタ１４５０がループの最後の命令アドレスに到達するまで増加する。このことが発生すると、比較回路１４７６はレジスタ１４５０の内容が終了アドレスレジスタ１４７４の内容と等しいことを検出する。その後比較回路１４７６はカウンタ１４８０を減数させる出力信号を形成し、ＯＲゲート１４２２を付勢し（これによってＯＲ回路１４９２の出力信号を送信するようにＰＬＣ１４３０を付勢する）、さらにＡＮＤ回路１４９０ａを付勢する。このようにして付勢されると、ＡＮＤ回路１４９０ａはＯＲ回路１４９２を介してレジスタ１４７０からの開始アドレスをＰＬＣ１４３０に付加する。このことによってレジスタ１４５０が再度ループの開始アドレスを受信することが誘起され、その結果ループの実行が再度開始される。
【００９０】
このループはカウンタ１４８０がゼロになるまで前述したように繰り返し実行される。このことはゼロ検出回路１４８２によって検出され、これはこのループがさらに実行されることを防止するための“終了”出力信号を形成する。例えば、“終了”出力信号はレジスタ１４７０／１４７４／１４７８を０にすることができるか、あるいは“終了”出力信号はこの“終了”信号に関連付けられたＡＮＤ回路１４９０ａを使用不可能にする。
【００９１】
（図１１に示されているように）プログラムシーケンサ１４２０はループ制御回路１４６０の複数の用例を含んでおり、これらの複数の用例は相互に階層関係をもって使用することができる。このような場合において、１つの用例１４６０ｘによって実行されるループは別の用例１４６０ｙによって制御されるループの実行を開始する命令を含んでいる。用例１４６０ｘがこの命令を呼び出す度にこの用例１４６０ｘの動作は一時的に停止し（例えば前記の命令によって）、用例１４６０ｙはそれが制御するループの実行を開始するように付勢される。用例１４６０ｙの使用が終了すると、用例１４６０ｘはその動作を再開することができる。この種の階層は任意の深さのものとすることができる。
【００９２】
当業者においては、図１１に関して説明した効率的なループ機能が例えばＤＳＰ用途等の多くの用途において極めて効果的であることが理解されよう。従って、本発明に従ってこの種の機能を有するＰＬＤを提供することによって、ＤＳＰまたはその他の一般的に類似の用途においてこの種のＰＬＤを使用することが極めて容易になる。当業者においては、図１１に示されている特定の制御回路は単に説明のためのものであり、必要に応じてこの回路の変更構成を使用し得ることが理解されよう。例えば、一連の命令の複数回の実行（例えばループ）をサポートする代わりに、回路は一連の命令を一回伝送することだけをサポートすることができる。ゼロオーバヘッドループの別の形式（図示されている一般的な場合よりも少ないハードウェアのサポートを必要とする）は“リピート”命令であり、これは単一の命令を多数回実行する。
【００９３】
前述した専用アドレスジェネレータ２１０，５１０，６１０等に対して使用することができるジェネレータ回路１６１０の実施例が図１２により詳細に示されている。アドレスジェネレータ１６１０は複数のアドレス変更子データワードＭ１−Ｍｎを記憶するための複数のレジスタ１６２２を有するメモリ１６２０を備えている。各レジスタ１６２２の内容はＰＬＣ１６３０ａ，１６３０ｂ等のうちの少なくとも１つ（好適には複数）に付加される。各ＰＬＣ１６３０はこれに付加されたレジスタ内容のうちのいずれか１つを出力するように制御することができる。各ＰＬＣ１６３０によって出力されたレジスタ１６２２の内容はそれぞれ加算器１６６０の１つに付加される。
【００９４】
アドレスジェネレータ１６１０は、複数のアドレスワードＡ０−Ａｍを記憶するための複数のレジスタ１６４２を有する別のメモリ１６４０をさらに備えている。各レジスタ１６４２の内容はＰＬＣ１６５０ａ，１６５０ｂ等のうちの少なくとも１つ（好適には複数）に付加される。各ＰＬＣ１６５０はこれに付加されたレジスタ内容のうちのいずれか１つを出力するように制御することができる。各ＰＬＣ１６５０によって出力されたレジスタ１６４２の内容はそれぞれ加算器１６６０の１つに付加される。これらのＰＬＣ１６５０の出力信号はさらにアドレスジェネレータ１６１０によって出力され、従ってこのアドレスジェネレータを含んでいるＰＬＤ１０（例えば図１）上の何処かにおいて使用することができる。例えば、これらのアドレス信号は、前述したようにＰＬＤ上のデータメモリ４０／４０ｂをアドレスするために使用することができる。
【００９５】
各加算器１６６０はこれに付加された信号によって示された数値を換算する。従って加算器１６６０ａは例えばＰＬＣ１６５０ａによって出力されたアドレス数値にＰＬＣ１６３０ａによって出力されたアドレス変更子数値を加算して変更されたアドレス数値を形成する。（関連付けられたアドレス変更子数値がゼロである場合、変更されたアドレス数値は当然元のアドレス数値と同一になる。）変更された各アドレス数値は次の命令クロック信号パルスに応答して元のアドレスレジスタ１６４２に対して返送されるとともにこの中に記憶される。従って、メモリ１６４０内のアドレス数値は必要に応じて繰り返し増加または減少させるか、または連続した命令クロック信号中に変更することができる。この加算器１６６０を通じたアドレスフィードバックの構成によって、ＰＬＤ内において連続する動作の実行中に連続的にアドレスすることが必要となるデータメモリ位置を自動的にアドレスするようにアドレスジェネレータ１６１０を使用することが可能になる。
【００９６】
メモリ１６２０および／または１６４０は、アドレスおよび／または変更子データを複数の方式のうちのいずれかによって受信することができる。例えば、これらのメモリは、アドレスジェネレータ１６１０を含んでいるＰＬＤ１０（例えば図１）の構成（プログラミング）の一部として部分的または全体的にデータをロードすることができる。これに代えて、またはこれに加えて、メモリ１６２０および／または１６４０は、ＰＬＤの構成動作後の任意の時間にＰＬＤのソフトロジック部分２０（例えば図１）からの新規あるいは変更されたデータをロードするかまたはこれを受信することができる。例えば、プログラムシーケンサ（例えば図１の２２０）によってプログラムメモリ４０／４０ｂから選択された命令がメモリ１６２０および１６４０のいずれかあるいは両方の中の特定の位置への新規あるいは変更されたデータのロードを誘起することができる。
【００９７】
図１２に示されているように、アドレスジェネレータ１６１０は２つまたはそれより多数のアドレスを同時かつ互いに並行に出力し得るよう構成することが好適である。この機能は、２つまたはそれより多数のデータワードを演算的あるいは論理的に結合する（例えば１つのデータワードを別のデータワード（スケールファクタ）によって乗算する）ことがしばしば必要となるＤＳＰ等の多くの場合において有用なものとなる。ＶＬＩＷ処理は２つより大幅に多数のアドレスを出力することができるアドレスジェネレータ１６１０を設けることによって実行することができ、これはＶＬＩＷ命令がしばしば極めて少数の異なったデータワードの処理を必要とするためである。アドレスジェネレータ１６１０はメモリ４０／４０ｂまたはそれ以外の何処かから引き出されるデータワードのアドレスを形成するために使用し得るばかりでなく、その時点で実行されている動作の結果として生じたデータワードが伝送される（例えば記憶するために）位置のアドレスを形成するために使用することができる。これは、アドレスジェネレータ１６１０が複数のアドレス（すなわち引き出されるデータ用の１つまたは複数、ならびに形成されるデータの目的位置（複数）用の１つまたは複数）を同時に出力し得ることが好適であることに対する別の理由である。
【００９８】
必要に応じて、アドレスジェネレータ１６１０に付加されるか、ここから引き出されるか、および／またはこの中で処理されるアドレス情報は、例えば図８および図８Ａに示された（特に図８の要素１１３０および１１４４）“インターフェース”処理の種類に依存するものとすることができる。言い換えると、要素１１３０および１１４４等の回路はアドレスジェネレータ１６１０内のまたはこれと結合された任意の適宜な点あるいは複数点に含めることができ、これによってアドレス情報を相対的なものから絶対的なアドレス値に変換する。例えば、メモリ１６２０および／または１６４０に付加されるアドレス情報は、図８内の要素の構成と同様な要素の構成を介して伝送することができ、これによってこの情報を異なった動作に対して再使用することができる相対値から各動作に対して固有の絶対値に変換し、ここで各動作はこの変換の制御に使用するためにそれぞれ独自の“ＩＤ”数値を有している。別の例として、ＰＬＣ１６５０の出力に対して同様な手法を適用することができ（フィードバックループを離れて加算器１６６０へ戻るように）、従ってアドレスジェネレータ１６１０は相対アドレス情報を使用して内部的に動作するが、アドレスジェネレータの外の回路は絶対アドレス情報を受信する。
【００９９】
図１２Ａには、例示的なアドレスジェネレータ１６１０の回路またはこれと結合される回路が直ぐ前の段落で記述した形式の“インターフェース”回路によってどのように増強されるかの説明的な例が示されている。命令デコード３０ｄ（図７参照）はＶＬＩＷ命令のいくつかの部分それぞれから命令およびデータアドレス情報を出力することができる。このＶＬＩＷ命令のそれぞれの部分からの命令情報出力は“ＩＤ”情報（“ＡＬＴ  ＩＤ１”、“ＡＬＴ  ＩＤ２”、“ＡＬＴ  ＩＤＮ”等）を含むことができる。このＩＤ情報はＰＬＣ１６０４ａ，１６０４ｂ，１６０４ｎ等のうちの適宜な１つに付加される。これらの各ＰＬＣへの別の入力は、共通のＩＤ信号“ＩＤ”とすることができる。各ＰＬＣ１６０４は、関連付けられた特定のＩＤ信号または共通ＩＤ信号のいずれかを選択して対応するインターフェース回路１６０６ａ，１６０６ｂ，１６０６ｎ等に付加するように制御（プログラム）することができる。
【０１００】
インターフェース回路１６０６のそれぞれは図８の要素１１３０および１１４４と同様なものとすることができる。従って各インターフェース回路１６０６はそのＩＤ入力信号（関連付けられたＰＬＣ１６０４からの）に応答して先に記憶された対応するデータアドレスオフセット数値を選択して同様にこのインターフェース回路に付加された相対データアドレス数値に加算する。
【０１０１】
ここで命令デコード３０ｄに戻ると、ＶＬＩＷ命令の各部分から出力されたデータアドレス情報は相対データアドレスとすることができ、ＰＬＣ１６０２ａ，１６０２ｂ等のうちの適宜な１つに付加される。ＰＬＣ１６０２のぞれぞれは別のソース（例えばＰＬＤ１０のソフトロジック部分のその他の領域）からの別の相対データアドレス情報（“ＡＬＴ  ＡＤＤＲ１”、“ＡＬＴ  ＡＤＤＲ２”等）も受信することができる。ＰＬＣ１６０２のそれぞれはそのデータアドレス入力うちのいずれかを選択して対応するインターフェース回路１６０６ａ，１６０６ｂ等に対して出力（これはＰＬＣ１６０６ｍ，１６０６ｎ等には付加されない）するように制御（プログラム）することができる。各インターフェース回路１６０６ａ，１６０６ｂ等は、それが受信した相対データアドレス情報を絶対データアドレス情報に変換してその情報を関連付けられたＰＬＣ１６０８ａ，１６０８ｂ等に付加する。各ＰＬＣ１６０８はさらに別のソース（例えばＰＬＤ１０のソフトロジック部分のその他の領域）からの別の相対データアドレス情報（“ＡＬＴ  ＡＤＤＲＭ”、“ＡＬＴ  ＡＤＤＲＮ”等）も受信することができる。ＰＬＣ１６０８のそれぞれはそのデータアドレス入力うちのいずれかを選択してメモリ１６４０内の対応する１つのレジスタに対して出力しこのデータアドレスをそのレジスタ内にロードするように制御（例えばプログラム）することができる。
【０１０２】
ここでインターフェース回路１６０６ｍ，１６０６ｎ等に戻ると、これらの回路のそれぞれはＰＬＣ１６５０ａ，１６５０ｂ等のうちの対応する１つによって出力されたデータアドレス情報を受信する。従って、回路１６０６ｍ，１６０６ｎ等のそれぞれは、対応するＰＬＣ１６５０から付加された相対データアドレス情報を対応するＰＬＣ１６０４から同様にこのインターフェース回路に付加されたＩＤ情報に基づいて絶対データアドレス情報に変換することができる（例えばアドレッシングメモリ４０／４０ａ（例えば図７）内において使用するために）。
【０１０３】
図１２Ａに示されたインターフェース回路の全てに関してＰＬＤ１０のいずれかの構成において使用することが好適であるわけではないことが理解される。例えば、相対データアドレス情報をメモリ１６４０内のレジスタＡ０に対する絶対データアドレス情報に変換するためにインターフェース回路１６０６ａを使用する場合、このレジスタの出力がインターフェース回路１６０６ｍ，１６０６ｎ等のいずれか１つによって再度変換される必要があることはあまり考えられない。同様に、下流のインターフェース回路１６０６ｍ，１６０６ｎ等の１つがメモリ１６４０の特定の出力を変換するために使用される場合、この特定の伝送路内において追加的な上流変換（インターフェース回路１６０６ａ，１６０６ｂ等によって（しかしながら１６０６ｍ／１６０６ｎ／等は含まない））が必要であることは考えにくい。図１２Ａに示されている説明的な構成は、以下のような使用を含む考えられる多様な使用構成を提供するように設計されている（回路を通じた代表的な１つのデータアドレス伝送路に関して考える）：
１．  命令デコード３０ｄからのあるいはＰＬＤ１０上の他の何処かからのものであり、インターフェース回路（例えば１６０６ａ）の上流（例えば“ＡＬＴ  ＡＤＤＲ１”）または下流（例えば“ＡＬＴ  ＡＤＤＲＭ”）のいずれかの相対または絶対データアドレス情報；
２．  命令デコード３０ｄからのあるいはＰＬＤ１０上の他の何処かからのインターフェース回路１６０６を制御するためのＩＤ情報；
３：  ループ１６２０／１６４０／１６６０の上流またはこれらのループの下流における相対から絶対データアドレスへの変換。
【０１０４】
相対アドレスから絶対アドレスへの自動的な変換に関する前述の説明に関連して、相対データアドレスから絶対データアドレスへの自動的な変換能力（例えば図１２Ａ）により本発明に係るプロセッサオブジェクトを有するＰＬＤによって実行するための複雑なプログラムの書き込みが大幅に容易化される。例えば、モジュールとモジュールとの間における相反性を防止する必要のない相対命令および／またはデータアドレスを使用して、相対的に独立して書かれたモジュールとしてプログラムを作成することができる。各モジュールに対して固有のＩＤ数値が関連付けられ、さらに適宜な命令および／またはデータアドレスオフセット数値が各ＩＤ数値に関連付けられる。各モジュール内で使用される相対的命令および／またはデータアドレスに対するこれらのオフセット数値の加算によって、これらのアドレスがモジュールとモジュールの間で相反することがない絶対アドレスに変換される。前述したように、このことによって本発明のＰＬＤに対する複雑なプログラムの書き込みおよびデバギングを大幅に容易化することができる。
【０１０５】
図１３には、本発明に係るＰＬＤ上のプロセッサオブジェクト内に含むことができる専用動作部分１８０６（例えば図１の動作部分２０６と同様）のさらに別の説明的実施例が示されている。動作部分１８０６は、演算ロジックユニット（“ＡＬＵ”）または演算ブロックと呼称されるものの例である。動作部分１８０６は複数の入力データワード記憶レジスタ１８１０ａ−ｎを含んでいる。関連付けられたＰＬＣ１８１２がどのように制御されるかに従って、これらのレジスタのそれぞれを使用するかあるいはバイパスすることができる。ＰＬＣ１８２０はＰＬＣ１８１２の出力から機能ユニット１８３０，１８４０，１８５０等へのルーティングを広範囲の中から選択することを可能にする。
【０１０６】
機能ユニット１８３０は加算器／減算器（すなわち付加された２つのデジタル信号数値を互いに加算するかあるいは一方から他方を減算する回路）である。機能ユニット１８４０はバレルシフタ（例えば、付加されたデジタル信号数値のビット上においていくつかの種類のシフトを実行し得る回路）である。例えば、バレルシフタ１８４０は“左回転”、“右回転”、“論理的左シフト”、“論理的右シフト”、等として知られるシフト、および／または固定または選択されたいずれかの数のビット位置による別の方式のシフトを実行するように制御することができる。機能ユニット１８５０は、２つの（あるいはより多数の）付加されたデジタル信号数値上でいくつかの異なった論理動作をビット式に実行することができる。例えば、機能ユニット１８５０は第１の入力ワードの各ビットと第２の入力ワードの対応するビットとの論理ＡＮＤ演算を行って出力を形成することができる。あるいは２つより多い入力ワードにおいて対応するビット間の論理ＡＮＤ演算を行うこともできる。ＡＮＤに代えて、その他の任意の論理機能（例えばＯＲ、ＸＯＲ、ＮＡＮＤ、ＮＯＲ等）が機能ユニット１８５０の能力の中に含まれており、従ってこのユニットの動作として選択することができる。ユニット１８３０，１８４０および１８５０以外の別の機能ユニットを動作部分１８０６内に設けることもできる。これらは全くあるいは部分的に追加的な機能ユニットの用途とするか、または全くあるいは部分的に異なった形式の機能ユニットとすることができる。
【０１０７】
ＰＬＣ１８６０は、機能ユニット１８３０／１８４０／１８５０の出力信号の出力レジスタ１８７０ａ−ｍへの可能なルーティングを広範囲の中から提供するように制御することができる。必要であれば、関連付けられたＰＬＣ１８７２ａ−ｍを介してこれらレジスタのいずれかあるいは全てをバイパスすることができる。
【０１０８】
本発明の他の回路と同様に、ＰＬＣ１８１２，１８２０，１８６０および１８７２は複数の方式（例えば静的（ＦＣＥを使用して）あるいはより動的に（プログラムメモリ４０／４０ｂからの命令等の時間変化信号を使用して））のうちのいずれかによって制御することができる。同様に、ユニット１８３０／１８４０／１８５０が実行し得る種々の機能オプションの選択もいくつかの方式のうちのいずれか（例えば、ＰＬＣ１８１２／１８２０／１８６０／１８７２の制御のための例として挙げたいくつかの方式のいずれか）によって制御することができる。他方、動作部分１８０６の動作および使用は、本明細書において先に記述した他の例示的な動作部分の動作および使用と同様なものとすることができる。
【０１０９】
本発明に係るＰＬＤは、ローカルまたは相対命令および／またはデータアドレスをそれぞれ使用するその他の構成要素を伴ったシステム内で動作することができ、ここで前記命令および／またはデータアドレスは構成要素間において相反性が生じる可能性を有するものであり、この際ＰＬＤはこれらのアドレスをＰＬＤ内で使用するために相反性が生じることのない絶対アドレスに自動的に変換するように適用することができる。このことは、ＰＬＤ上におけるプログラム内で使用されるローカルあるいは相対アドレスをこれらのプログラムを実際に実行するプロセッサオブジェクトによって使用される絶対アドレスに変換することに関連する前述の説明に対する拡大（システムに対する）と見ることができる。この場合、プログラムはＰＬＤの中には含まれずにむしろこのＰＬＤを含んでいるシステム内の他の構成要素内に含まれる。
【０１１０】
図１４には、直ぐ前の段落で述べた形式の説明的なシステム２０１０が示されている。システム２０１０は、１つまたは複数のプロセッサ２０２０ａ−ｎおよび／または他の構成要素２０３０を含んでいる。（これらの他の構成要素２０３０はプロセッサ２０２０に関連して以下に説明するものとは異なった機能を代替的または追加的に実行することができるが、以下の説明は場合によって簡略化のためにプロセッサのみに関するものとし、他の構成要素２０３０は一般的にプロセッサと同様なものとして扱われる。）システム２０１０はさらにＰＬＤ１０、ならびにシステム内の種々の構成要素（１０／２０２０／２０３０）の間において信号を伝送するための通信バス２０４０を含むことができる。ＰＬＤ１０は、システム内の他の構成要素２０２０／２０３０によってスレーブとして使用することができるＶＬＩＷまたは他のプロセッサオブジェクトを含むことができる。例えば、別の構成要素２０２０／２０３０は、バス２０４０を介してＰＬＤ１０に伝送するとともにこのＰＬＤ（特にこのＰＬＤのプロセッサオブジェクト）によって実行する命令（例えばＶＬＩＷ命令）を形成することができる。構成要素２０２０／２０３０はそれ自体の内部動作においてローカルあるいは相対アドレスを使用することができ、またそれら自体のローカルあるいは相対アドレスを使用して前記の命令を形成することもできる。言い換えると、ＰＬＤ１０は、命令を形成した他の構成要素２０２０／２０３０に対してローカルまたは相対的であるアドレス部分を使用してこの命令を受信することができる。しかしながら、これらのローカルまたは相対アドレスは構成要素２０２０／２０３０以外によって使用されるローカルまたは相対アドレスと異なったものとすることはできない。
【０１１１】
システム全体にわたって特有のものであるとともにＰＬＤ１０が必要とする絶対アドレスに対して固有であることが知られているアドレスを各構成要素２０２０／２０３０がＰＬＤ１０に対して伝送する必要性を除外するために、ＰＬＤはデータスペース変換および保護テーブル、ならびに受信した相対アドレスをそれ自体の動作のために必要な絶対アドレスに変換する相関回路２０５０を備えている。インターフェース２０５０のデータ領域は、ＰＬＤ１０のプロセッサ回路内に入力データをロードするとともに、処理されたデータをこのプロセッサ回路から取り出すためのものである。インターフェース２０５０のプログラム領域はＩＤによって識別された適正な処理を開始するためのものである。典型的な処理シーケンスは：（１）インターフェース２０５０へＩＤを付加し；（２）ゼロから開始してプロセッサへデータをロードし（データアドレスオフセットはＩＤデータアドレス変換によって内部的に校正される）；（３）ＩＤプログラム変換アドレスに基づいてプロセッサが始動するようにＳＴＡＲＴ信号を定義し；（４）ＤＯＮＥインタラプトまたは信号を待ち；（５）ＩＤを使用してプロセッサからデータをアンロードする。場合によってはプロセッサ自体がそのＩ／Ｏポートを使用してデータをロードおよびアンロードすることができる。この場合も、プロセッサがどのプログラムスペースを実行するかを認識するためにＩＤが必要とされる。
【０１１２】
図１５には、構成要素２０５０内に含まれる例示的な回路がより詳細に示されている。回路２０５０は、バス２０４０を介してＰＬＤ１０によって受信されたアドレス情報を受信ならびに記憶するレジスタ２０５２を備えている。アドレス情報のソース（例えば構成要素２０２０／２０３０）はさらにＰＬＤ１０に対してバス２０４０を介してこのソースを識別することができる識別（“ＩＤ”）情報を提供する（例えば、他の構成要素２０２０／２０３０、および／またはレジスタ２０５２に付加されるアドレス情報のソースである他の構成要素によって実行される特定のルーチン）。レジスタ２０５４はこのＩＤ情報を受信および記憶して変換テーブル２０６０に付加する。
【０１１３】
考えられる各ＩＤ数値に対して、変換テーブル２０６０は開始アドレスオフセット数値ならびに終了アドレス数値を含んでいる。変換テーブル２０６０はＩＤ数値を受信し、伝送線２０６１ａを介して対応する開始アドレスオフセット数値を出力し、さらに伝送線２０６１ｂを介して終了アドレスを出力する。開始アドレスオフセット数値はレジスタ２０５２からの相対アドレス情報に加算するために加算器２０６２に付加される。この加算の結果はＰＬＤ１０がその動作を実行するために必要とする絶対アドレス情報である。例えば、加算器２０６２によって出力された絶対アドレス情報は、ＰＬＤ１０がその命令メモリ内にＶＬＩＷまたは他の命令を検出するために使用することができる。別の例として、加算器２０６２によって出力された絶対アドレス情報は、ＰＬＤ１０によって実行するためにバス２０４０を介して受信された命令内の情報を変更するために使用することができる。あるいは、加算器２０６２によって出力されたアドレス情報は、ＰＬＤ１０がそのデータメモリ内においてデータを検出するために使用することができる。ＩＤ数値が同じである限り、レジスタ２０５２を介して受信された全ての連続する相対アドレスがこのＩＤ情報に関連付けられた開始アドレスオフセット数値によって変更される（加算器２０６２を使用して）。
【０１１４】
加算器２０６２によって出力された各絶対アドレスは、さらに伝送線２０６１ｂ上の終了アドレス情報と比較するために比較回路２０７０に付加される。加算器２０６２の出力が許容可能な終了アドレスを超過している場合、比較回路２０７０はエラーが生じたことを示す出力信号を形成する。
【０１１５】
前述の説明から、装置がプログラムおよびデータアドレス変換の両方をサポートする場合別々のプログラムおよびデータアドレス変換テーブル回路が設けられることが理解される（図８Ａに示されたものと同様）。“ハーバードアーキテクチャ”プロセッサとして知られているものにおいては、プログラムおよびデータ記憶に対して別々のデータスペースが設けられている。（殆どのＲＩＳＣおよびＤＳＰプロセッサはこの形式のアーキテクチャを有している。）本明細書において示された多くの実施例において、プログラムシーケンサがプログラムメモリをアドレスし、これから呼び出された命令が命令デコーダによって復号される。アドレスジェネレータ（または命令デコーダを介しての命令）がデータメモリをアドレスする。
【０１１６】
プログラムメモリがプロセッサ内にロードされて再配置される場合、プロセッサは２つの形式のアドレス変換を“迅速に”サポートする必要がある。これらの２つの形式のアドレス変換は、（１）プログラムアドレスのためのアドレス変換と（すなわちプログラムシーケンサ内）、（２）データアドレスのための別の変換テーブル（命令デコーダとアドレスジェネレータの外側）である。後者は、プログラム内に埋め込まれているアドレッシング情報が絶対項（すなわち相対値から正確な絶対値へ変更するための変換を行わないもの）において正確ではないために必要となる。本明細書によれば、本発明の視点に含まれる回路内におけるこれらの種々の形式のアドレッシングオプションの全てが当業者において実行し得るよう充分な開示が提供される。
【０１１７】
図１５の加算器２０６２の使用方法は単に例示的なものであり、必要に応じて他の任意の論理または演算結合を代わりに実行し得ることが理解される。また、図１５には各絶対アドレスを終了アドレスと比較することのみが示されているが、必要に応じてさらに特定の絶対アドレス検査を実行し得ることが理解される。例えば、変換テーブル２０６０は、各ＩＤ数値に関連付けられた許容可能なアドレス範囲を出力することができ、各絶対アドレスがこの許容範囲内に含まれていることを確認するために検査され得る。
【０１１８】
前述の説明から、図１４および図１５に示された回路が、ＰＬＤ１０を使用することが望ましい各システム構成要素がＰＬＤ１０と共に動作するとともにそれ自体のローカルまたは相対アドレス情報を他の構成要素２０２０／２０３０が同様な（従って相反する）ローカルまたは相対アドレス情報を使用している可能性に配慮することなく、またＰＬＤ１０によって絶対アドレスが要求されることにも配慮することなくＰＬＤ１０に対して出力することを可能にする。ＰＬＤ１０はいずれにしても受信したローカルまたは相対アドレス情報を使用し、この情報をそれ自体の動作のために必要な適宜な絶対アドレス情報に自動的に変換する。システム２０１０のユーザは、他の構成要素２０２０／２０３０のために書かれたソフトウェアとの相反性に配慮することなく、またＰＬＤ１０によって要求される最終的な絶対アドレスにも配慮することなく、構成要素２０２０／２０３０のためのソフトウェアを書き込むことができる（少なくともＰＬＤ１０のアドレッシングおよび動作に関する限り）。これによってこの種のソフトウェアの書き込みおよびデバギングが大幅に容易化される。
【０１１９】
本明細書において発明の概要に記述したように、本発明の別の要素は、プログラマブルロジックおよび少なくとも部分的に固定配線であり高機能な機能ユニットを有するＰＬＤを提供することに関する。高機能な機能ユニットは前述したプロセッサオブジェクトの動作部分のようなものであり、動作部分／機能ユニットは２つ以上の機能を備えている。２つ以上の機能を含むことは、“高機能”の特徴を説明するものである。高機能な機能ユニットの例としては、（１）加算器ツリーと結合されたマルチプライア、または（２）アキュムレータと結合されたマルチプライアが挙げられる。この段落に記述されたＰＬＤ１０の説明的な実施例が図１６に示されている。
【０１２０】
さらに図１６を参照すると、ここに示されている説明的なＰＬＤ１０は、ソフトロジック部分２０、ハードロジック部分２５００、およびこれらの２つの部分間の接続を形成するための回路１５０／１６０を含んでいる。ハードロジック部分２５００は１つまたは複数の高機能な機能ユニット２５０６を含んでいる。各機能ユニット２５０６の回路は少なくとも部分的に固定配線されており、乗算と加算または乗算と累算等の複数の機能を実行する。機能ユニット２５０６に使用することができる特定の回路例は、図２（動作部分３０６）、図３（動作部分４０６）、図４（動作部分５０６）、図５（動作部分６０６）、図６（動作部分７０６ａおよび／または７０６ｂ）、図７（動作部分９０６ａ，９０６ｂ，９０６ｃ，および／または９０６ｄ）、ならびに図１３（動作部分１８０６）に示されている。従って、高機能な機能ユニットの例には、ＭＡＣ回路、ＡＬＵ回路、バレルシフタ回路、およびガロア域回路が含まれる。高機能な機能ユニットの多様な組み合わせおよび／または複数の用例を含むことができる。
【０１２１】
図１６に示されているような本発明に実施例において、ＰＬＤのソフトロジック部分２０は既に記述した実施例のハードロジック部分において実行される特定の機能を実行するようにプログラムすることができる。例えば、これらの実施例内のハードロジック回路の制御部分２０４（図１），５０４（図４），６０４（図５）等のうちのいくつかあるいは全ては、図１６に示された形式の実施例のソフトロジック部分２０を適宜にプログラミングすることによって実行することができる。この最後の点に関してさらに特定の例を示すと、回路１６に示された形式の実施例において、アドレスジェネレータ７１０および／またはプログラムシーケンサ７２０（図６）、あるいはアドレスジェネレータ９１０および／またはプログラムシーケンサ９２０（図７）の機能のうちのいくつかあるいは全ては、ソフトロジック部分２０内で実行することができる。
【０１２２】
高機能な機能ユニットの全ての場合に必要なものではないが、これらのユニットは実行される機能のいくつかあるいは全てが複数の可能な機能の中からプログラムによって選択される特徴を備えることができる。これに代えてまたはこれに加えて、この種のユニットは実行される機能のいくつかあるいは全てが複数の可能な機能の中から動的に選択される特徴を備えることができる。これらの能力を備えた高機能な機能ユニットの例は、図４および図５にそれぞれ示されている動作部分５０６および６０６である。この点に関して短く部分的に再考してみると、動作部分５０６内の加算器／減算器５５０が加算または減算のいずれを実行するかは、ＰＬＣ５５４を介してＦＣＥ５５６によってプログラム制御（すなわち静的）するか、あるいはＰＬＣ５５４を介して伝送線１５０からの信号によってより動的に制御することができる。図１６に示された実施例において、伝送線１５０の信号は直ぐ手前のシーケンスに関するものであり、ソフトロジック部分２０内の任意の適宜なソースから受信することができる。例えば、これは、命令デコード（例えば図７の３０ｄ等）として動作するように構成（プログラム）されたソフトロジック部分２０内の要素から受信することができ、この命令デコードは図７においてプログラムシーケンサ９２０、プログラムメモリ４０ｂ、命令アンパック３０ｃ等と関連付けられた機能を実行するように構成されたソフトロジック部分２０内の他の要素と連係して動作するものである。
【０１２３】
図１７には、本発明に係るＰＬＤ１０がデータ処理システム３００２内において示されている。データ処理システム３００２は以下の要素のうちの１つまたは複数のものを含むことができる：それらは、プロセッサ３００４；メモリ３００６；Ｉ／Ｏ回路３００８；および周辺装置３０１０である。これらの要素は、システムバス３０２０によって結合され、エンドユーザシステム３０４０内に含まれる回路基板３０３０上に設置される。
【０１２４】
システム３００２は、コンピュータネットワーキング、データネットワーキング、計測、画像処理、デジタル信号処理、またはその他のプログラマブルまたはリプログラマブルロジックの利点を必要とする適用方法において、広範囲な適用分野で使用することができる。プログラマブルロジックデバイス１０は、広範囲な異なったロジック機能を実行するために使用することができる。例えば、プログラマブルロジックデバイス１０は、プロセッサ３００４と共同動作するプロセッサまたはコントローラとして構成することができる。ＰＬＤ１０は、システム３００２内において分配されたリソースへのアクセスを仲介するアービタとして使用することもできる。さらに別の例において、ＰＬＤ１０は、プロセッサ３００４とシステム３００２内の別の構成要素の１つとの間のインターフェースとして構成することができる。システム３００２は単に例示的なものであり、本発明の真の視点および精神は請求の範囲によって定義されることが理解されよう。
【０１２５】
本発明の特徴ならびにデバイスの種々の構成要素（例えば前述したＰＬＣおよびＰＬＣを制御するプログラマブル機能制御要素（“ＦＣＥ”）等）を備えるプログラマブルロジックデバイスを実施するために、種々の技術を使用することができる。例えば、各ＰＬＣは、複数の入力のいずれか１つを出力に接続するためのスイッチまたはスイッチ群等の比較的に単純にプログラム可能なコネクタとすることができる。他方、各ＰＬＣは、接続の形成と並んでロジックの実行（例えば複数の入力の論理的な結合によって）も可能な幾分複雑な要素とすることもできる。後者において、例えば、各ＰＬＣは、ＡＮＤ、ＮＡＮＤ、ＯＲ、またはＮＯＲ等の機能を実行する積算項ロジックとすることができる。ＰＬＣを実施するための好適な構成要素としては、ＥＰＲＯＭ、ＥＥＰＲＯＭ、パストランジスタ、トランスミッションゲート、アンティヒューズ、レーザヒューズ、メタルオプション接続器等が挙げられる。前述したように、ＰＬＣならびに他の回路要素は、種々のプログラマブル機能制御要素（“ＦＣＥ”）によって制御することができる。（特定のＰＬＣ機器（例えば、ヒューズおよびメタルオプション接続器）においては、独立したＦＣＥデバイスは必要とされない。）ＦＣＥもいくつかの異なった方式で実施することができる。例えば、ＦＣＥは、ＳＲＡＭ、ＤＲＡＭ、ファーストインファーストアウト（“ＦＩＦＯ”）メモリ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、機能制御レジスタ（例えば、ウォールストロムの米国特許第３、４７３、１６０号公報参照）、強誘電メモリ、ヒューズ、アンティヒューズ等とすることができる。前述した種々の例に示されているように、本発明は、一回のみプログラム可能なデバイス、またはリプログラマブルデバイスのいずれに適用することもできる。
【０１２６】
前述の説明は本発明の原理を単に例示するものであり、当業者においては本発明の精神を逸脱することなく、種々の設計変更をなし得ることが理解されよう。本発明の種々の要素は所要の数および構成によってＰＬＤ上に設けることができる。
【図１】
0005496972.tif 000002
【図２】
0005496972.tif 000003
【図３】
0005496972.tif 000004
【図４】
0005496972.tif 000005
【図５】
0005496972.tif 000006
【図６】
0005496972.tif 000007
【図７】
0005496972.tif 000008
【図８】
0005496972.tif 000009
【図８Ａ】
0005496972.tif 000010
【図９】
0005496972.tif 000011
【図９Ａ】
0005496972.tif 000012
【図９Ｂ】
0005496972.tif 000013
【図１０】
0005496972.tif 000014
【図１１】
0005496972.tif 000015
【図１２】
0005496972.tif 000016
【図１２Ａ】
0005496972.tif 000017
【図１３】
0005496972.tif 000018
【図１４】
0005496972.tif 000019
【図１５】
0005496972.tif 000020
【図１６】
0005496972.tif 000021
【図１７】
0005496972.tif 000022