JP2004512716A - 専用プロセッサ装置を含むプログラマブルロジック集積回路装置 - Google Patents
専用プロセッサ装置を含むプログラマブルロジック集積回路装置 Download PDFInfo
- Publication number
- JP2004512716A JP2004512716A JP2002536623A JP2002536623A JP2004512716A JP 2004512716 A JP2004512716 A JP 2004512716A JP 2002536623 A JP2002536623 A JP 2002536623A JP 2002536623 A JP2002536623 A JP 2002536623A JP 2004512716 A JP2004512716 A JP 2004512716A
- Authority
- JP
- Japan
- Prior art keywords
- circuit
- programmable logic
- address
- logic device
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Logic Circuits (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
Description
本発明は、2000年10月2日に出願され、その全部を参照文献としてここに加える米国仮特許出願第60/237,170号の利益をクレームするものである。
【0002】
技術分野
本発明は、プログラマブルロジック集積回路装置(時々「PLDs」と呼ぶことがある)に関し、特にしばしば「プロセッサ」又は「マイクロプロセッサ」と呼ばれる回路の一部によりしばしば実行されるような特定タスクを実行するための専用回路を含むPLDsに関する。
【0003】
背景技術
プログラマブルロジック装置(「PLDs」)は、例えばジェファーソン等の米国特許第5、215、326号および2000年3月2日出願のナガイ等の米国特許出願第09/516、921号に示されるように周知である。PLDsは、典型的には、プログラム可能な相互接続リソースにより多くの異なる方法のいずれかにより相互接続可能なプログラマブルロジックの多くの領域を含む。各論理領域は、相互接続リソースからこの領域に印加された入力信号に基づき幾つかの論理機能を実行するようプログラム可能である。そして論理機能を実行することで、各論理領域は、相互接続リソースに印加される1又はそれ以上の出力信号を生成する。相互接続リソースは、典型的には、ドライバ、相互接続導電体及び様々な相互接続導電体間を選択的に接続するプログラマブルスイッチを含む。相互接続リソースは、一般的には、ある論理領域の出力をある論理領域の入力に接続するために使用するものの、相互接続リソースに対し不釣合いに大きな装置の部分に専用されるのを回避し、通常は、可能な全ての相互接続のサブセットのみが、PLDの与えられたプログラムされた構成で行われる。
【0004】
論理領域のみ前述したが、多くのPLDsが、ランダムアクセスメモリ(「RAM」)、リードオンリーメモリ(「ROM」)、コンテンツアドレスアブルメモリ(「CAM」)、プロダクトターム(「p−term」)論理等として使用され得るメモリの領域を含むことに留意すべきである。(例えば少なくとも部分的にハード配線された)専用マイクロプロセッサ回路をPLDs中に含めることは有益であった。このような専用マイクロプロセッサ回路は、PLD上の別の場所に設けられた汎用プログラマブルロジックでタスクが実行されるよりも、典型的にはより速くマイクロプロセッサに関連づけされるタスクの少なくとも幾つかを実行可能である。
【0005】
PLD上に全特殊機構化された専用マイクロプロセッサを有することは、ある幾つかの状況では有益かもしれないが、多くの状況においては、専用マイクロプロセッサあるいは同様の回路が有するある特殊機構或いは機能のみを、典型的にはハード配線された専用回路により達成されうる高速で実行する必要がある。これらの場合、全特殊機構化されたマイクロプロセッサ回路は、本来は使用されず、従って廃棄され得る。即ち、特定タスクをすばやく実行するために必要となる全特殊機構化されたマイクロプロセッサ回路の一部を得るために、マイクロプロセッサ回路の不使用部分を信号が通過するよう回線化する必要があるが、これにより時間を消費し、必要部分の動作を最適な状態より悪くする。加えて、汎用マイクロプロセッサは、ベリーロングインストラクションワード「VLIW」プロセッシング或いはデジタルシグナルプロセッシング「DSP」のようなあるタスクであって、多重並列処理の実行がしばしば要求されるようなタスクを実行するのに最も効率の良い回路ではない。ただし、マイクロプロセッサが多重並列処理を支持するよう特別に設計されている場合は別である。
【0006】
発明の概要
本発明によれば、PLDs中に一般的に含まれる回路に加えて、1又はそれ以上のプロセッサオブジェクト回路(又は「プロセッサオブジェクト」或いは「オブジェクト」)を有するPLDを提供する。プロセッサオブジェクトは、1又は限定された数の特定タスクを実行するために少なくとも部分的にハード配線化された回路である。従って、プロセッサオブジェクトは、そのタスク或いは限定された数の特定タスクを実行するために専用化される。プロセッサオブジェクトは、全特殊機構化されたプロセッサ又は全特殊機構化されたマイクロプロセッサでもなく或いは汎用プロセッサ又は汎用マイクロプロセッサでもないが、プロセッサオブジェクトは、完全なプロセッサ又はマイクロプロセッサが典型的には実行し得る幾つかのタスク或いはタスクのサブセットを実行し得る。プロセッサオブジェクトは、少なくとも部分的にハード配線化されているが、またプログラム可能であるか或いは(たとえば実行し得るいくつかのタスクから選択するといった)幾つかの視点でプログラム可能に制御し得る。プロセッサオブジェクトは、付加的に或いは代替的には、少なくとも部分的にはダイナミックに(例えばPLD上の時間変化論理信号により)制御され、実行し得る様々のタスク中からダイナミックに選択するものであってもよい。
【0007】
典型的なプロセッサオブジェクトは、命令順序並替回路および演算部回路を含む。プロセッサオブジェクトは、また、マルチポート化されたレジスタファイル回路であるか或いはこれを含むアドレス発生回路を含む。命令順序並替回路は、(命令メモリから)実行されるべき命令を選択するか或いは選択するのを助ける。命令は、プロセッサオブジェクトの演算部の演算を制御するか或いは制御するのを助ける。アドレス発生回路は、演算部が演算するためのデータを(データメモリーから)選択するか或いは選択するのを助ける。アドレス発生回路は、演算部によるデータ出力のための(例えばデータメモリー中の)指定を選択する。アドレス発生回路は、前述の命令に基づき供給されるアドレス情報に基づき動作する。
【0008】
異なるアドレス管理体制間でアドレス情報を自動変更するために回路を設けてもよい。例えば、命令を、データを使用するプログラム及び・又はそのプログラムに対し「局所的である」(或いは「関連性のある」)命令アドレスを目的として書いてもよいが、これら幾つかのアドレス値が他のプログラム中で対立しないよう使用される可能性については考慮しない。これら多重プログラムを、その形式でPLDのプログラマブルロジック中に記憶してもよい。ある1つのプログラムが(PLD上のプロセッサオブジェクト中で少なくとも部分的に)実行される場合、インターフェース回路を設け、各プログラムで使用されるローカルアドレス或いは関連アドレスをPLD中の実際のメモリー位置の対立しない絶対的なアドレスへと自動変換する。
【0009】
プロセッサオブジェクト中に設けることが可能な演算部回路の例としては、演算論理装置(ALUs)、乗算累算器(MACs)、バレルシフター、ガロイスフィールド回路、並びにこれらの組み合わせ及び・又は多種多様な例を含む。PLD(とりわけプロセッサオブジェクト)は、ベリーロングインストラクションワード「VLIW」プログラムを実行し、デジタルシグナルプロセッシング「DSP」オペレーションを実行し、及び・又は他の同様の複雑で込み入ったタスクを実行するよう構成され得る。
【0010】
本発明の他の見地は、プログラマブルロジック回路と、このプログラマブルロジック回路と信号情報のやり取りを行う、少なくとも部分的にハード配線化され高機能化された機能ユニットとを有するPLDsを提供することに関する。高機能化された機能ユニットは、プロセッサオブジェクトの演算部として参照したものに類似するものでもよいが、但し、演算部・機能ユニットは複数の機能(即ち高機能)を有する。高機能化された機能ユニットの例は、(1)加算器ツリーと組み合わされた乗算器、又は(2)累算器と組み合わされた乗算器である。
【0011】
本発明の更なる特徴、性質さまざまな利点は、添付の図面および以下に続く詳細な説明により明らかになるであろう。
【0012】
本発明の実施例につき以下の図面を参照して例示的に説明する。
【0013】
発明の詳細
本発明に従い構成した例示するPLD10を図1に示す。PLD10は、所謂「ソフトロジック」部20および所謂「ハードロジック」部200を含む。ソフトロジック部20は、PLDs上に設けるものとして(少なくとも一般には)既知の様々な種類のプログラマブル回路を含む。従って、例えば、ソフトロジック部20は、1又はそれ以上のプログラマブルロジックおよびメモリのスーパー領域22を含んでもよい。このようなスーパー領域22の各々は、プログラマブルロジックの1又はそれ以上の領域30、メモリの1又はそれ以上の領域40、及びローカル或いは比較的ローカルな相互接続リソースを含んでもよい。図1に示す特定例において、相互接続リソースは、前記スーパー領域中の領域30/40間で信号を伝送するスーパー領域ワイド相互接続導体50と、導体50から各領域30/40の近傍へ信号を伝送する領域供給導体60と、導体60(およびあらゆるローカルフィードバック導体80)から隣接領域30/40へ信号を印加する入力導体70と、領域30/40の出力信号を導体50(およびあらゆるローカルフィードバック導体80)に印加する出力導体90と、(少なくとも論理領域30の場合に)ローカルフィードバック導体80とを含む。前述のローカル或いは比較的ローカルな相互接続リソースに加えて、PLD10は、デバイス上の多数のスーパー領域22間で信号を伝送する相互接続導体100のようなよりグローバルな相互接続リソースを含む。PLD10の様々な相互接続リソースは、また、前述の導体50/60/70/80/90/100の交差する部分を選択的に相互接続するための(比較的長い導体を駆動することが要求されるドライバー回路を含む)プログラマブルロジックコネクター(PLCs)52を含む。PLCs52をプログラマブル機能制御素子(「PCEs」図1では区別して示さず)により制御し、交差点導体間の接続を行ったり行わなかったりしてもよい。用語「PLC」はここでは様々な相互接続及び/又は信号経路化リソースに対して用いる。PLCsは、(例えばFCEsにより)比較的静的に制御されても或いは、(例えば異なる時刻で異なる論理値を有することが可能なPLDの信号によって)よりダイナミックに制御されてもよいことが判る。
【0014】
信号線のみがここにおいて大部分の相互接続として示され(信号例は単に大部分のPLCsとして示され)るが、数字は多数の相互接続(及び対応の多数のPLCs)をしばしば実際には示していることが判る。従って、例えば、図1中の信号線50は、実際には典型的には多くの同様の平行な相互接続導体を示す。また、典型的には、各線60により示される導体のグループにおいて、これら導体50を多くの導体60に選択的に接続する多くのPLCs52が存在する。本明細書の後の方で、単線で単に示された多数の接続の他のグループに対しても同様のことが言える。具体例は図1中の接続110、120、130、140、150及び160や、図1中のプロセッサオブジェクト202の演算部206中に示される内部接続である。
【0015】
ハードロジック部200は、本明細書の別の場所で用語を定義した1又はそれ以上のプロセッサオブジェクト202を含む。図1に示す特定例では、プロセッサオブジェクト202は、あるVLIW演算或いはDSP乗算−累算(「MAC」)演算を支持するよう構成される。プロセッサオブジェクト202は、制御部204及び演算部206を含む。双方の部204及び206は、少なくとも幾らかの範囲でハード配線化され、プロセッサオブジェクト202がより速くその能力内でタスクを実行することを可能にする。
【0016】
図1に示すように、制御部204はアドレス発生器210およびプログラムシーケンサ220を含む。素子210及び220の具体的構成に関するより詳細な説明を以下に行うが、差当たっては、アドレス発生器210は、ソフトロジック部20からリード110を介してあるアドレス情報及び/又は制御情報を受取り、他のアドレス情報をリード110を介しソフトロジック部20へ出力してもよい。例えば、アドレス発生器210は、演算部206へ提供され処理されるデータの1又はそれ以上の開始アドレスをソフトロジック部20から受取る。このようなアドレスは、メモリ領域40内、ロジック領域30のレジスタ内等のデータのアドレスであってもよい。このようなアドレスであれば、絶対的であっても相対的であってもよく、例えば、後に本明細書中で述べるように基本オフセット要因による変更の対象とされてもよい。リード110を介してアドレス発生器210により出力されるアドレス情報を使用して、ソフトロジック部20内の位置を実際に選択し、この位置に基づきプロセッサオブジェクト202により処理されるためにデータ或いは他の情報を検索してもよい。前述したものに代え或いはそれに加えて、アドレス発生器210が、ソフトロジック部20から1又はそれ以上の開始アドレスを受取り、プロセッサオブジェクト202により出力されるデータのソフトロジック部20内での意図する指定を行ってもよい。再び、このようなアドレス情報のいずれもが、絶対的なものであっても、相対的なものであってもよい。リード110を介してアドレス発生器210により出力される関連アドレス情報を使用して、ソフトロジック部20内の位置を実際に選択し、この位置にプロセッサオブジェクト202がデータを出力し、記憶及び/又は更なる処理を行ってもよい。プロセッサオブジェクト202により実行される演算によって、アドレス発生器210により出力されるアドレスをインクリーメントするか或いは他のタイプの変更(ジャンプを含む)をプロセッサオブジェクトの動作の連続するサイクル中に行ってもよい。
【0017】
後に本明細書中で明らかになるが、先のパラグラフで述べたようにアドレス発生器210に供給するデータアドレス情報を、プログラムシーケンサ220で実行するために選択された命令のアドレス部分から得てもよい。
【0018】
プログラムシーケンサ220は、典型的には、工程の1又はそれ以上のシーケンスを制御する能力のある回路でる。例えば、プログラムシーケンサ220は、演算部206によって実行されるべく次の命令を選択する能力があってもよい。これを行うために、プログラムシーケンサ220は、開始命令アドレスおよび場合により他の制御情報をリード130を介してソフトロジック部20を受取ってもよい。アドレス発生器210の場合のように、このアドレス情報は、絶対的なものでも相対的なものでもよい。プログラムシーケンサ220は、装置のその後の命令クロックサイクル中に、開始アドレスを自動的にインクリーメントしてもよい。リード140を介してプログラムシーケンサ220により出力される命令アドレスを使用して、所望の命令をメモリから検索し典型的には演算部206により少なくとも部分的に実行してもよい。
【0019】
このような比較的基本的な動作に代え或いは加え、プログラムシーケンサ220は、スタート後は相対的且つ独立して動作するが、命令工程の比較的複雑なシーケンスを発生するか或いはシーケンスの経過を少なくとも維持する能力を有してもよい。このようなシーケンスは、命令ループの繰返し実行を含んでもよい。2つ又はそれ以上のこのようなループは、互いに組み合わされてもよい。プログラムシーケンサ220は、例えば、1連の動作をテンポラリーに中止する一方で他の1連の動作を実行する「中断」処理を行う能力を有してもよい。
【0020】
演算部206はプロセッサオブジェクト202の1部であり、プロセッサオブジェクト202は、供給されたデータに基づき1又はそれ以上のタスクを実際に実行する。このデータは、典型的にはリード150を介してソフトロジック部20から得る。演算部206の演算動作を制御するのに必要なあらゆる信号は、リード150を介して供給してもよい。入力データに基づくオブジェクトのタスクの実行結果として得られる出力データは、リード160を介してソフトロジック部20へ戻してもよい。図1に示す特例において、演算部206は、(互いに並列な)幾つかの並列乗算器230を有し、各乗算器は、(入力リード150からの)2つのマルチビット入力データワードどうしを乗算し、マルチビット出力積ワードを生成する。各出力ワードは、テンポラリーに(例えばフリップフロップのような)レジスタ240の関連するバンクに記憶されその後リード160を介してソフトロジック部20へ出力されてもよい。乗算−累算(「MAC」)能力を含むため演算部206を先に説明する。図1を過剰に複雑にするのを回避し、よりシンプルな例とするため、図1は幾つか分離して例示する並列乗算器230および出力レジスタ240を含む演算部206を単に示す。MAC演算部の1例を図2に示し、より完全に以下説明する。演算部回路の他の例は図2に続く図に示し、様々タイプのMAC及び/又はDSP回路は、2001年9月18日付け(件番号174/199)出願のラングハマー等の米国特許出願に示され述べられている。
【0021】
専用並列乗算器230は、本発明に係るPLDのオブジェクトに有用に含めてもよい回路の種類のある1つの好適な例であることが理解できる。並列乗算はDSP(例えば多種のデジタルフィルタリングを行うため)極めてよく必要とされる。しかし、ソフトロジック部20の汎用ロジックは、並列乗算を(十分速く或いはソフトロジックリソースを不適当に消費することなく)実行するのにとりわけ効果的というわけではない。従って、PLDが、高速で比較的長いデータワードの並列乗算を行わなければならない場合は、ここに示すような演算能力のある1又はそれ以上のプロセッサオブジェクトをPLDが備えることは極めて有益である。
【0022】
プロセッサオブジェクト202により実行される命令の処理は、好ましくはソフトロジック部20により行われる。このような命令は多くの形式のいずれでも取り得る。VLIW形式は、1つの可能な例である。ソフトロジック部20での命令の処理は、アンパック、デコード等を含んでもよい。命令処理は、処理するデータの選択命令のアドレス部の使用、回路の適当な部分(例えば演算部206の好適な部分)へデータを送り実際にデータを処理するための命令の制御部の使用を含んでもよい。命令の制御部は、また、演算部206の動作の選択可能な側面の制御および/又はデータの演算部206からソフトロジック部20への転送を含んでもよい。
【0023】
図1はたった1つのプロセッサオブジェクト202のみと信号の交換を行うたった1つのスーパー領域22のみを示しているが、ある1つのスーパー領域22(又はプログラマブルロジックのその他あらゆる数量)は、複数のプロセッサオブジェクトと信号を交換してもよく、さらに/又はある1つのプロセッサオブジェクトが複数のスーパー領域(又はプログラマブルロジックのその他の数量)と信号を交換してもよいことが理解される。
【0024】
ソフトロジック部20とプロセッサオブジェクト202との間の高速通信を容易にするために、(とりわけ高速通信が重要な場合)プロセッサオブジェクトの様々な入力及び出力110/120/130/140/150/160は、好ましくは、ソフトロジック部20中の比較的ローカルな相互接続リソースに接続される。例えば、このような接続に関する好適な候補は、領域供給導体60、ローカルフィードバック導体80、領域出力導体90である。好ましくは、これらの接続は、信号源と信号到着先との間の出力ドライバの必要性を避けるため比較的短い。このようなドライバーは電力消費を増加させ通信経路における遅延が発生する。もちろんこれらの通信を検討することは、全ての場合で重要でないかもしれないが、もし制御しない場合、ソフトロジック部20中の他の相互接続リソース(例えば導体50および100)は、入力及び出力110/120/130/140/150/160のあるもの或いは全てに対する接続点としての役割を果す。
【0025】
少なくとも既に提案したように、図1に示すプロセッサオブジェクトの演算部206の特定構成は、多くの可能な構成の内の単なる1例である。他の例は、図2に示す乗算−累算(「MAC」)演算部306である。演算部306は、以下の回路の1又はそれ以上の例、専用(例えば少なくとも部分的にハード配線化された)並列乗算器330(図1の素子230に類似する)、専用並列加算器350(これにより乗算器330により出力された各連続プロダクトワードをレジスタ340の現在のコンテンツに加えて、新たな累算値を生成しレジスタに記憶する)、及びレジスタ340(図1の素子240に類似する)を含む。
【0026】
図3は本発明に係るプロセッサオブジェクトの演算部の可能な構成の他の例を示す。図3において、演算部406は、以下の回路の1又はそれ以上の例、幾つかの専用(例えば少なくとも部分的にハード配線化された)並列乗算器430a−d(各々は前記乗算器230/330に類似する)、専用並列加算器350a−c(各々は前記加算器350に類似する)であって乗算器430により出力されたプロダクトワードどうしを全て加算する乗算器、及びレジスタ340(各々は前記レジスタ240/340に類似する)であって最終加算器450dの並列出力をレジスタするレジスタを含む。図3に示すプロセッサオブジェクト演算部406は、DSPでしばしば必要となる有限インパルス応答(「FIR」)デジタルフィルタリングのある種類を実行するのにとりわけ好適な構造を有する。
【0027】
図4は、本発明に係るプロセッサオブジェクト回路のその他の例を示す。図4において、プロセッサオブジェクト502は、制御部504(図1の制御部204に類似する)及び演算部506(少なくとも概念的には図1−3の演算部206/306/406にそれぞれ類似する)を含む。図4は、ソフトロジック部20からの信号150が例示する演算部回路506の演算の様々な側面を如何にして制御するのかを示す。(これら制御信号150の究極のソースは、回路504のプログラムシーケンサ部により実行されるために選択される命令であってもよい。もちろんリード150上の信号はデータ信号でありうる。)
【0028】
図4において、演算部506は、素子530、540、550、552、554、556、560、562、564及び566の1又はそれ以上の例を含む。素子530は、専用並列乗算器であって、230のような前述した並列乗算器のいずれかに類似してもよい。素子550は、専用並列加算減算回路であって、前述した並列加算回路に概ね類似してもよいが、代替的に乗算器530の出力及びレジスタ540の出力どうしを互いに減算する能力を有する。PLC552の出力信号は加算減算器550が入力を加算するのかあるいは減算するのかを制御する。加算減算器の好ましい例をラングハマー等の米国特許出願第09/924、354号、2001年8月7日出願に示すものの、加算減算回路の他の形式を所望により変わりに使用してもよい。レジスタ540は、240のような前述したレジスタに類似してもよい。素子520は、PLCであって、(この場合例えばマルチプレクサ)であって、FCE554により制御され2つの他の入力のいずれか1方を出力として選択する。PLC552への2つの他の入力は信号150の1方(この場合制御信号)およびFCE556の出力である。従って、FCE554をプログラムし、PLC552を制御し、ソフトロジック部20或いはFCE556のいずれかから出力を得る。PLC552の出力をソフトロジック部20から得る場合、加算減算器550を(例えばソフトロジック部の少なくとも1部で処理される命令により)ダイナミックに制御し、オブジェクト502を含むPLDの演算中の異なる時刻で加算減算する。これに代えて、PLC552の出力をFCE556から得る場合、加算減算器550を(例えばFCE556のプログラム状態によって)よりスタティックに制御し、常に加算するか或いは常に減算する。
【0029】
素子560は、PLC(例えば平行マルチプレクサのある1つのバンク)であり、乗算器530の並列出力或いはレジスタ540の並列出力のいずれかを、PLC562により出力された制御信号の状態に基づき出力する。PLC562はPLC552に類似してもよい。1つのリード150上の信号或いはFEC566の出力信号のいずれを出力するかはFEC564により制御される。従って所望により、PLC560を今述べたリード150の1つによりダイナミックに制御し、時に乗算器530の出力とし、その他の時にはレジスタ540の出力とする。これに代えて、PLC560をFEC566によってよりスタティックに制御し、常に乗算器530の出力するか或いは常にレジスタ540の出力とする。
【0030】
ラングハマー等の米国特許出願、2001年9月18日出願(事件番号174/199)は、図4のボックス506内に示す一般的なタイプの回路の可能な代替的な構成を示す。この代替的な構成は、レジスタ540等が加算減算器550からの累積値或いは乗算器530の出力値そのもののうちいずれかを保持する。このことは、PLCs560の必要性を明らかにし、PLCsは厳密でなく必要とする。
【0031】
図5は本発明に係るプロセッサオブジェクト602のその他の例を示す。広範囲において、図5は既に議論した特徴及び/又は概念を組み合わせる。前述した素子と同一或いは類似の素子は、図5において同一参照番号を有するか、或いは同一或いは類似の素子に対して使用した参照番号から100、200、300及び/又は400だけ増加した参照番号を有する。図5の議論は従って、短縮され既に説明したことと意味の在る相違点に終始する。
【0032】
図5は、演算部606を示し、ここでは、加算器650が代替的に減算器の機能を果す。図5はまた演算部を示し、ここでは、乗算/加算器のツリーが多くの異なる方法のいずれかにより区分され、様々な区分のいずれかの出力が登録及び/又は未登録形式の出力である。例えば、乗算器630aの出力は、他のどれとも組み合わされない出力であり、この出力は、レジスタ640aによりレジスタされなくてもレジスタされてもよく(またレジスタされた信号およびレジスタされない信号の双方が出力されてもよい)。PLC660はPLCへ供給された多くのレジスタされた信号およびレジスタされない信号の中から演算部606の最終出力を選択する。他の例として、加算/減算器650aを使用して乗算器630aおよび630bの出力を組み合わせ、加算/減算器の出力は他のいずれとも組み合わされないがレジスタされたかあるいはレジスタされないかいずれでも良くあるいはその両方でもよく、PLC660による出力でありうる。更なる別の例として、加算/減算器650の全てを使用して4つの乗算器630全ての出力を組み合わせて、加算/減算器の全ての出力はPLC660の出力であり、レジスタされたかあるいはレジスタされないかいずれでも良くあるいはその両方でもよい。他の例においては、幾つかの乗算器630の出力を組み合わせず出力する一方で、組み合わせた乗算器の出力を出力する。図4に示すように、加算/減算器650の制御は、(ソフトロジック部20からの入力150に基づき)動的に或いは、(代替入力をPLCs652a−cに供給するFCEsのプログラムされた状態に基づき静的に行われてもよい。図4のこれらに対応するFCEsの1部を図5に示し図が複雑になるのを防ぐ。また図4に示すように、PLC660の制御は、(ソフトロジック部20からの入力150に基づき)動的に或いは、(代替入力をPLC662に供給するFCE(s)666のプログラムされた状態に基づき)より静的に行われてもよい。
【0033】
更なる能力と自由度とを図5の演算部606に付与してもよい。例えば、レジスタ640の出力から加算/減算器650或いは他の加算器へのフィードバックループや、減算器、或いは加算/減算器を設けて、所望により1又はそれ以上の累算機能を果してもよい。フィードバックループおよび累算機能の使用は、図5に実際に示した様々なオプションを(たとえば比較的スタティックなプログラム制御により、或いはソフトロジック部20によるダイナミック制御により、或いは制御のこれらタイプのいずれかをプログラムで選択することにより)選択するのと概ね同様の方法で制御可能である。演算部606(又は前述の演算部のいずれか)に与えてもよい更なる能力の他の例として、PLC660の動作にやや似ている入力信号ルーティン装置を設け、様々な入力ポートへ印加される入力信号を乗算器650の様々な入力部に転送してもよい。設ける場合、この入力信号ルーティン回路の制御はPLC660の制御に類似してもよく、(例えば、静的にプログラムされた制御或いはソフトロジック部20によるより動的な制御のいずれか、又は(プログラムによる選択に基づく)いずれでもよい。演算部606が有してもよい付加的な能力の他の例として、n*n乗算器630の各々を選択的にn/2*n/2乗算器に分割し、多重ハーフワードで演算するようにしてもよい。乗算器をより小さなものへと分割することは2001年9月18日付け(件番号174/199)出願のラングハマー等の米国特許出願に詳細に述べられている。他で示し述べた事項に類似して、(例えば図4の加算減算器550或いは図5の加算減算器650の静的或いは動的制御に関して、)乗算器のこのような分割は静的或いは動的に制御され選択される。
【0034】
図6は、本発明に係るプロセッサオブジェクト702を含むPLD10の他の例を示す。図6において、前述の素子と同一或いは類似の素子は、(ソフトロジック部の素子の場合)対応する前述の素子と同一参照番号を有するか或いは、700番台の参照番号すなわち先の図の対応する素子に使用した参照番号より100、200、300、400或いは500だけ増加した参照番号を有する。図6の実施例において、プロセッサオブジェクト702は演算部706aおよび706b、アドレス発生器710およびプログラムシーケンサ720を含む。これら素子の全てはこれら特定機能に専用であり、例えば少なくともある範囲でこれら機能を目的としハード配線化される。例えば、演算部706aは、広範囲の算術および関連の演算のうちのいずれかを実行する能力のある少なくとも部分的にハード配線化した論理演算装置(「ALU」)である。同様に、演算部706bは、広範囲の算術および関連の演算のうちのいずれかを実行する能力のある少なくとも部分的にハード配線化した乗算−累算器(「MAC」)ブロックであり(例えば本明細書で既に述べたMAC回路のいずれかに類似する)。(前述したように、可能なMACブロック回路の他の例は2001年9月18日付け(件番号174/199)出願のラングハマー等の米国特許出願に示される。)アドレス発生器710は、(例えば、アドレスを発生し演算部706a/706bにより演算するためのデータをPLD10のソフトロジック部20から検索する際に使用するか、及び/又は演算部706a/706bにより出力されたデータをソフトロジック部へ戻すために使用するアドレスを発生する)前述のアドレス発生器に類似する。プログラムシーケンサ720は、(例えば、演算部706a/706bの演算の少なくともある側面を制御する際に使用する連続した命令のプログラムROM40b中のアドレスを発生する)前述のプログラムシーケンサのいずれかに類似する。
【0035】
700番台でない参照番号を有する図6中の素子は、好ましくはPLD10のソフトロジック部中の素子である。これら素子は、プログラマブルロジック30、データランダムアクセスメモリ(「RAMs」)40a1及び40a2、プログラムリードオンリーメモリ(「ROM」)40b、スタックメモリ40c、及び図6に示すアドレス、データ及び制御信号用のバス及び関連する配線回路の殆ど或いは全部を含む。
【0036】
直前に記載したバス及び配線回路は、前述の図中の素子50、52、60、70、80、90、100、110、120、130140、150、及び160と同一或いは類似するものであってよい。言いかえると、図6中のバス及び配線回路は、プロセッサオブジェクト702の使用を支援する目的或いはこれらリソースを設ける何らかの他の目的のためPLD10の汎用プログラマブル相互接続リソースの1部であってもよい。プロセッサオブジェクト702の使用を示し説明するのを容易にするため、これらリソースを、あたかもプロセッサオブジェクトの使用を支援するよう構成(具体的にはプログラム)するかのように図6に示すようにする。そして、前に描き説明した相互接続リソースの特定素子間での意図しない特定相関関係を回避するため、800番台の完全に異なる参照番号を図6中の相互接続リソースの各部に使用すると供に以下の説明でも使用する。しかし、再び前述したものに類似する相互接続リソースを、図6中で(800番台の参照番号を有する)相互接続リソースのいずれか或いは全部を実現するのに使用し得ることが判る。又、図6中の800番台の単線は典型的には多数のリードを示し、これらリードの様々なものが「データ」信号、「アドレス」信号及び/又は「制御」信号のいずれか或いは全部を転送し得る。
【0037】
ハードロジックプロセッサオブジェクト702の動作開始信号をリード802、804、及び806を介しプログラマブルロジック30からプログラムシーケンサ720に供給してもよい。実行すべきある特定のプログラム命令のアドレスを同定することで、これら信号によりプログラムシーケンサ720がプログラムROM40bからこの命令(及びおそらく1連の他の命令を検索できるようになる。プログラムシーケンサ720により出力される各プログラムアドレスに基づき、プログラムROM40bが対応の(アドレス指定された)プログラム命令をリード812bを介して出力する。このような命令の制御部及びおそらくデータ部は、幾つかの可能な使用を目的としてPLC814に供給される。例えば、命令情報の幾つかを使用してPLC814(例えばそのPLCにより実行される信号の経路化)を制御してもよい。これに代え或いはこれに加えて、幾つかの命令情報をPLC814を介し(又は使用し)経路化して、演算部706a及び/又は706b、及び/又はPLC830により実行される経路化を制御する。プログラムROM40bにより出力される命令情報のアドレス部からリード804および808を介しアドレス発生器710へと経路化してもよい。
【0038】
アドレス発生器710は、データ(例えば演算部706a及び/又は706bにより処理されるべきデータ)のアドレスを出力することで受けたアドレス情報に応答する。アドレス発生器710のアドレス出力信号をリード808、804、810a1及び810a2を介してデータメモリ40a1及び40a2に供給する。メモリ40a1/40a2は、リード812a1/812a2を介しアドレス指定された場所からデータが出力されることでこれらアドレス信号に応答する。PLC814は、これらデータをALU706a及び/又はMAC706bへ(例えばプログラムROM40bからの現在の命令により指示されるように)経路化される。リード816はこの経路化に参加する。ALU706a及び/又はMAC706bこのデータ(及びおそらく後に説明するその他のデータ)に基づき演算する。これら演算は、ROM40bからの現在の命令により部分的或いは全体的に制御され得る。
【0039】
この点で、前述のアドレス発生器710のタイプが、DSPプロセッサに通常関連する機構に最も似ていてもよいことを言及すべきである。プロセッサの他のタイプは、いくらか異なってこれらアドレスを生成する。例えば、リディュースドインストラクションセットコンピューティング(「RISC」)プロセッサは、典型的には、プログラムメモリ及びプロセッサ内部のロジック及びレジスタを使用する多数の工程を使用しこれらアドレスを発生する。従って、発明の他の実施の形態において、アドレス発生器710必要でないか或いはここに記載したのとは異なる形式を採用し得る。
【0040】
演算部706a及び/又は706bは、それぞれリード828a及び828bを介しこれら演算により得られるデータ信号を出力する。これら信号は、供給信号をリード832、834、836、838、840、842及び/又は844の適当なものへ経路化するPLC830に供給される。言及したように、PLC830により実現される経路化を、プログラムROM40bからの現在の命令により全体的或いは部分的に制御してもよい。リード836及び/又は838を介して経路化を行う場合、演算部706a及び/又は706bにより出力されるデータを、比較的直接これら素子のいずれか或いは双方に戻し、更なる処理を(例えばメモリ40bからの同一或いは異なるプログラム命令に従いメモリ40a1/40a2から入力される他のデータにより)行ってもよい。リード840及び/又は842を介して経路化を行う場合、演算部706a及び/又は706bにより出力されるデータを、メモリ40a1/40a2中であって、アドレス発生器710により供給されるアドレスにより指定された場所に記憶してもよい。リード844を介して経路化を行う場合、演算部706a及び/又は706bにより出力されるデータを、プログラマブルロジック30に供給してそこに記憶し及び/又はそこで或いはそれにより他に使用してもよい。アドレス発生器710により出力されるアドレス情報をプログラマブルロジック30にリード802を介して供給して、リード844を介して供給されたデータのロジック30内での究極の指定を決定するか或いは決定するのを助けてもよい。
【0041】
図6には特定的に示さないものの、データは、プログラマブルロジック30からプロセッサオブジェクト702へと、データがメモリ40a1/40a2から出力されるのと同じ手法で送出される。アドレス発生器710から(リード808/804/802を介し)供給されたアドレス情報を使用して、オブジェクト702へ出力されるべきデータのロジック30内での場所を選択し或いは選択するのを助けてもよい。経路(示さない)を設けてデータをロジック30からPLC814へ移送してもよい。この点に基づき、データの使用を、メモリ40a1/40a2のような他のソースから得るデータに関し前述したように行ってもよい。
【0042】
多重並列アドレス発生サブ素子712a及び712bを含むアドレス発生器710を図6に示す。これら多重サブ素子712を幾つかの異なる方法のいずれかで使用し得る。例えば、1つのサブ素子712を使用して演算部706の1つに係るデータにアドレスを提供する一方で、他のサブ素子712を使用して演算部706の他のものに係るデータにアドレスを提供してもよい。他の例として、1つのサブ素子712を使用してプロセッサオブジェクト702へ入力されるデータにアドレスを提供する一方で、他のサブ素子712を使用してプロセッサオブジェクト702から出力されるデータにアドレスを提供してもよい。2つのサブ素子712しか図6には示さないものの、このような並列サブ素子を如何なる数でもアドレス発生器710中に設けてもよい。
【0043】
今言及した素子710の能力同様に、素子40b及び720も演算部706a及び706bの双方の同時並列演算を支援するのに適してもよく、(言いかえれば好ましくは適している)。このような同時演算は独立に行われても、或いは全体的又は部分的にリンクして行われてもよい。
【0044】
プログラムシーケンサ720は、幾つかの目的のいずれかのためリード810cを介しメモリ40cの更なるブロックと連絡する能力を有していてもよい。例えばプログラムシーケンサ720は、その現在のコンテンツを(プッシュダウン/ポップアップスタックメモリとして動作する)メモリ40cへテンポラリーにアンロードすることで1連の中断処理を行う能力を有していてもよい。プログラムシーケンサ720が中断により呼び出された演算を完了したあと、それをメモリ40cから再度ロードして、中断する前に停止していた演算を再開する。回路を設けて、この手法により所望の程度多数のグループ化された中断を行ってもよい。専用スタック40cを使用することは、リターンアドレスを記憶するための幾つかの可能な技術の1つに過ぎない。他の例としては、本発明のプロセッサオブジェクトは、同様に或いは代替的にデータメモリ40a1及び40a2にスタックアドレスを記憶してもよい。
【0045】
プログラムシーケンサ720が何らかのプログラムシーケンスを完了すると、完了した旨のシグナル(例えば「DONE」信号をリード806、804及び802を介しプログラマブルロジック30に送ることで)を発する。
【0046】
再び、図6中に示す実施例を単に図により説明するが、多くの変更が可能である。例えば、プロセッサオブジェクト702は、唯一1つの演算部706を含むかあるいは、2以上の演算部706を含んでもよい。設けられた演算部706は、図6に示すALU及びMAC演算部と異なってもよい。多数の演算部706を設けた場合、これらは同一回路で構成してもよく、或いは全体的或いは部分的に異なるタイプのものでもよい。710および720のような素子の1具体例と1連の組の演算部706を含むPLD10を図6に示すが、PLD10は、これら素子全ての多数の具体例及び多数のプロセッサオブジェクト702を有してもよい。更なる改変および変更は当業者にとって自明である。
【0047】
前述した内容から、本発明に従いソフト及びハードロジックの混合によりユーザーは、与えられたデバイス10が多数の異なるプロセッサを含むよう構成することが可能ことは明らかである。デバイス10の使用は、従って特定のプロセッサキテクチャに限定されない。即ち、ユーザーはデバイス10を使用して幾つかの異なるプロセッサのタイプを有効に確立することが可能である。本発明は、従って、プログラマブルロジックにおけるソフト及びハードロジック外のプロセッサを確立する能力をユーザーに与える。
【0048】
更なる図7に図示する実施の形態はとりわけ、所謂ベリーロングインストラクションワード「VLIW」プログラムを処理するように構成される。(もっとも、それは他のタイプのプログラムを処理するためにも使用し得る。)VLIWプログラムは比較的長く複雑な(或いは少なくとも複合的な)命令、アドレス、データ及び/又は他の情報のストリングスを含んでいるかもしれない命令を有する。例えば、単一のVLIW命令は、この命令によりプログラムされた即ち制御された装置に対し、幾つかの動作を少なくとも部分的には並列に且つ1つの命令サイクル中で幾つかの異なるデータワードに基づき実行し、幾つかの出力ワードを生成する。VLIW命令は、実行されるべき幾つかの動作をそれぞれ指定する幾つかの命令部分を含んでもよい。これら命令は、また、実行されるべき様々な動作で使用される入力データのソースを(少なくとも関連事項に関して)それぞれ指定する幾つかのアドレス部分およびこれら動作の結果得られた出力データワードのあて先を含んでもよい。
【0049】
図7に示す実施の形態は、他の実施の形態に関連して示し説明したことと幾つか類似する点及び共通点がある。図6のケース同様、前述した実施の形態と共通する図7に示す実施の形態のソフトロジック部の幾つかは、同一或いは同様の素子に対し先に使用した幾つかの2値参照番号(おそらくサフィックス(接尾部)と供に)により同定される。従って、例えば、プログラマブルロジック30として先に参照したものの様々な部分を、図7中の参照番号30、30a、30b、30c及び30dにより同定する。同様に、先に言及したメモリ40のような様々な素子を、図7中の参照番号40a1、40a2、40a3、40a4、40b及び40cにより同定する。一方、図7に示す相互接続回路の殆ど或いは全ては、好ましくは、先に言及した素子50、52、60、70、80、90、100、110、120、130、140、150及び160のようなプログラマブル相互接続リソースにより実現する。図7において示される、これら相互接続リソースは、プロセッサオブジェクト902を支援するよう構成される。しかしながら、これら相互接続リソースの大部分はプログラム可能であるので、多くの他の方法で代替的に構成し得ることが理解される。図7中の特定相互接続リソースと他の図中の特定相互接続リソースと間の意図しないおそらく不適切な限定的な相関関係を回避するため、1000番台の完全に新しい参照番号を図7中の全ての相互接続リソースに対し用いる。加えて、以下の議論を短縮するため、フレーズ「相互接続リソース」を「IR」および「IRs」に短縮する。先の図に示したように、図7中の単線を使用し示したIRsの殆ど或いは全部は、実際には多数の並列信号経路である。
【0050】
図7中のPLD10の専用(例えば少なくとも部分的にハード配線化された)プロセッサオブジェクト902は、演算部906a、906b、906c及び906d、アドレス発生器910及びプログラムシーケンサ920を含む。(それは、また、中断制御装置30bのような他の素子を含んでもよいが、図7に示す特定例において、中断制御装置30bは、PLD10のプログラマブルロジックの1部であると仮定する。)演算部906の幾つかの異なるタイプを図7に示す。例えば、演算部906aはMACブロックとして示し、演算部906bはALUとして示し、演算部906cは(例えばエラー訂正やエンクリプションに使用する数学上の演算のある特定のタイプを実行するための)ガロイスフィールド回路として示し、演算部906dはバレルシフターとして示す。演算部906のあるもの或いは全ては、前述した演算部(例えば図6の演算部706)に概ね類似してもよい。アドレス発生器910前述したアドレス発生器(例えば図6の710)に類似してもよい。プログラムシーケンサ920は前述したプログラムシーケンサ(例えば図6の720)に類似してもよい。プログラムシーケンサ920は図6中に素子710及び40cが協働したのと同様にスタックメモリ40cと協働してもよい。これに代え、スタックアドレスはデータメモリ40a1及び40a2に記憶してもよい。
【0051】
インターフェースブロック30aは、一方で、信号を転送しプロセッサオブジェクト902とこのプロセッサオブジェクトの使用を支援する素子との間で信号を変換し、他方で、PLD10中のプログラマブルロジック及び他の回路30/30bの残りの部分を提供する。インターフェースブロック30aの1つの具体的実現手段を図8により詳細に示すと供に以下説明する。差当たり、インターフェースブロック30aは、データ、アドレス、制御情報をいずれか或いは双方の方向に通過させ、加えて、それは提供されたアドレスオフセット情報を使用してある関連情報をより絶対的なアドレス情報に変換してもよいことに言及すれば十分である。制御タイプの情報は、典型的にはIRs1002/1004及びIRs1006間のインターフェースブロック30aを介し通過する。例えば、この制御情報は、プログラムシーケンサ920の動作を開始し、その後(例えば中断を伴い)制御を行ってもよい。同様に、(IRs1006からIRs1002/1004へ通過した)他のこのような制御情報は、プログラムシーケンサがプログラムシーケンスを完了したことを示してもよい。
【0052】
議論を進めることによりより明らかになるであろうが、本発明に係るインターフェースブロック30a或いは同様の回路(図8、14、15を参照)は、外部エージェントにより機能同定装置(「ID」)に基づきプログラム及びデータメモリにアクセスすることを可能とする。外部エージェントは、プロセッサオブジェクトの完全な内部メモリマップを知る必要はないが、各並列機能のためのゼロ−アドレスに基づくメモリマップのみは知る必要がある。「プロセッサオブジェクトの完全な内部メモリマップ」は、他の場所では時々「絶対的」アドレスとして言及され、。「ゼロ−アドレスに基づくメモリマップ」は他の場所では時々「相対的」アドレスとして言及される。この目的は、外部エージェントがユニバーサルコア或いはリソースとしてプロセッサオブジェクトを使用することを可能にするためである。分離固定機能コアをPLDs中においてソフトロジックを実現するのに共通に使用するのと同様の手法により、ソフトコア或いはリソースをここで示し説明するPLDsのプロセッサオブジェクトのタイプに対し設けてもよい。このことは本発明のPLDs上のプロセッサオブジェクトの能力で多数の機能(1つではない)を支援し、サイズと速度間のトレードオフを可能にする。更なる利点は、ソフトウエアの機能の開発はロジックの機能よりずっと速く、(フィールド中にバグが見つかった場合フィックスするのがより容易である。ユーザは、ここの機能のメモリマップ(絶対的アドレス)に関し何か知る必要はない。「リンカー」はIDコードをプロセッサオブジェクトで作用する各機能に付与し、構成ファイルを提供することで、書きこみ或いはさもなくば機能の生成に使用するゼロ−アドレスに基づく(相対的)アドレス間の変換テーブルを開始する。加えて、リンカーは、アプリケーションスペースを「保護」する(例えば、単に各IDの絶対的アドレスのある範囲を許可する)ようアドレス変換装置を構成し得る。言及したように、このインターフェースブロックタイプの機能性の様々な側面は、説明が進むにつれより十分に説明される。
【0053】
動作時に、プログラムシーケンサ920はある1つの特定タスク或いは幾つかの特定タスクを実行するのに適当な1連のプログラム命令アドレスを出力する。これら命令アドレスは、IRs1010を介してプログラムメモリ40bに供給され、アドレス指定された場所に記憶されるプログラム命令を出力する。言及したように、これら命令はVLIWの命令であってもよい。
【0054】
メモリ40bにより出力された各命令は、IRs1020を介し命令アンパックブロック30cへ供給される。命令アンパックブロック30cは、プログラムメモリ40bからのある1つの命令が、実際に幾つかの命令からなるある1つのVLIW命令であることを認識するような機能を実行する。このような場合、命令アンパックブロック30cは、VLIW命令をセパレートな複数の命令へ分割し、そうすることで、多かれ少なかれ各命令を更にセパレートに処理できる。参照番号で提示したように、命令アンパックブロック30cは、好ましくは、PLD10のプログラマブルロジック中に実現される。
【0055】
ある1つの命令がブロック30cによりアンパックされた後、それはIRs1040を介し命令デコードブロック30dに供給される。命令デコードブロック30dは、受取った命令情報をデコードし、40a1−4、906a1−d、及び910のような他の構成部分を制御する信号を生成し、命令情報により特定された機能を実際に実行する。再び、参照番号で提示したように、命令デコードブロック30dは、好ましくは、PLD10のプログラマブルロジック中に実現される。
【0056】
VLIWワードは、与えられたクロックサイクル中に実行されるべく演算の量に応じて異なる長さを有してもよい。命令アンパックブロック30cの機能の1つは、どれだけ多くのセパレート命令が各フェッチに存在するかを決定することを目的とし、以下のフェッチに関する命令アドレスをおそらく変更することを目的としてもよい。
【0057】
前記説明から明らかなように、ある1つの命令が(素子30c中で)アンパックされ(素子30d中で)デコードされた後、(IRs1020及び1022を介して素子30dにより出力された)形式で、アドレス発生器910、メモリ40a1−4、及び演算部906a−dを制御或いは少なくとも部分的に制御する際に好適に使用し得る。例えば、アンパックされデコードされた命令は、あるアドレス及び/又は制御情報をアドレス発生器910に提供し、そうすることで、アドレス発生器は、メモリ40a1−4から検索されるべきデータのアドレスを(IRs1030を介して)出力し、このアドレスを演算部906a−dのいずれか或いは全てにより使用してもよい。これに代えて或いはこれに加えて、このアドレス及び/又は制御情報をアドレス発生器910により使用し、演算部906a−dにより出力されたデータを記憶するメモリ40a1−4中のアドレスを決定し、(IRs1030を介して)出力するのを助ける。前述してものに対し代わるものとして、或いは追加するものとして、IRs1022を介し命令デコード30dにより出力された命令情報を使用してアドレスメモリ40a1−4をアドレス指定し助けることで、これらメモリからデータを出力し、及び/又はこれら命令情報をIRs1040を介して演算部906a−dへ通過させ、演算部を制御或いは制御するのを助ける。
【0058】
メモリ40a1−4により出力されたデータはIRs1040を介し演算部906a−dへ供給される。演算部906a−dは、(命令デコード30dからの前記命令情報により部分的或いは全体的に決定、制御、或いはさもなくば影響されるデータに基づきこれらの機能を実行する。どんな時でも、演算部906a−dの如何なるものも使用に供することが可能である。図7は演算部906a−dの各々がメモリ40a1−4のそれぞれ1つからしか入力データを得ないことを提示しているが、より多くのデータ経路化の自由度が所望により付与され得ることが理解できる。
【0059】
演算部906a−dにより出力されたデータは、IRs1050を介してメモリ40a1−4戻してもよい。メモリ40a1−4からのデータは、IRs1060、インターフェースブロック30a、IRs1002を介してプログラマブルロジックの残りの部分へ送ってもよい。(過密になるのを防ぐため、図7は単にメモリ40a1−4へ(及びからの)これらの配線1060を示すが、この配線示された他のメモリのいずれか或いは全てに対し重複していることがわかる。データはプログラマブルロジック30から素子1002、30a、及び1060を介してメモリ40a1−4へ逆方向に流れ得ることが判る。
【0060】
中断制御器30bを使用して、現在プログラムシーケンサ920により実行しているプログラムシーケンスを一時的に中断するのに必要な条件に対応してもよい。中断制御器30bから素子1004、1002、30a、及び1060を介してプログラムシーケンサ920に供給された中断命令及び他の中断情報に応答して、シーケンサ920は、その現在のシーケンスを中断し、スタック40cにこの中断したシーケンスを後で再開するのに必要な情報を記憶し、そして新たな(中断)シーケンスを開始してもよい。図6に示す実施の形態に関して先に述べたように、素子30b、920、及び40cが、所望の数の組を成す中断を支援する能力を有していてもよい。スタック40cを代替的に或いは付加的に使用して、これら中断以外のリターンアドレスを記憶してもよい。サブルーチンコールに関するアドレスが例である。また、前述したように、プロセッサは代替的には40aのような他の(メイン)メモリにスタックを記憶してもよい。そして、プロセッサはリターンアドレスよりずっと多くの情報をサブルーチンコール用に記憶してもよい。
【0061】
プログラム(プログラム、サブルーチン、インターラプトシーケンス等を包括的に含む用語「プログラム」を使用する)の命令は、プログラム完了時に「DONE」信号を一般化し回路の適当な部分へ送る(例えば命令デコード30dから素子1006、30a、及び1002を介しプログラマブルロジック30へ送るための命令を含んでもよい。このような「DONE」信号は、プロセッサオブジェクトを本発明のある視点に従い「ユニバーサル」コアとして使用する場合に、特に有用である。この場合、「DONE」信号は、外部エージェントにプロセッサが現在のタスクを完了したことを知らせる。
【0062】
今一度、図7は本発明に従い行うことが可能なことを単に示しているに過ぎない。例えば、図7は、所望のあらゆる可能な相互接続を示していない。図示することにより、プログラマブルロジック30及びプログラムメモリ40b間のIRsを使用して新たな或いは変更した命令をそのメモリにロードすることが望ましいかもしれない。同様に図7に示す演算部906の数及びタイプは、単に図示したに過ぎず、これと異なる数及びタイプのこのような素子を所望により代わりに使用し得る。図6の実施例の場合のように、演算部906の使用を支援する素子は、好ましくは、望まれる場合には多くの部906が有するような並列演算を支援する適当な能力を有する。従って、例えば、各VLIWの長さは好ましくは並列に演算部906を制御するのに適した長さであり、アドレス発生器910は、好適には、演算部906で必要とするのと同じくらい多くの入力及び/又は出力データアドレスを発生する。
【0063】
一般的には、PLD10上の相互接続リソースを使用して図7(及び他の実施例)中に1000番台で示すIRsのいずれかを提供してもよいのは本当であるが、典型的には、オブジェクト902及びオブジェクト902の使用を充分に支援する素子を配置し、(図1中の素子60および80のような)比較的ローカルなIRsをこれら構成部間の連絡の殆ど或いは全てに対し使用し得る。既に述べたように、このような比較的ローカルなIRsは、高速で、必要は電力は少なく、占有スペースは少なく、おそらく臨界速度の信号のこのような過剰な相互接続に関し他の類似の利点を有する傾向にある。
【0064】
図8は、更に詳細な(図7の)インターフェースブロック30aの実施例を示す。図8に示すように、インターフェースブロック30aは、(図に示すよう上から下までで)データチャネル、アドレスチャネル、識別(ID)チャネル、及び制御チャネルを示す。他の図に示すように、図8の相互接続を示す単線及び関連する素子は、典型的には多数の相互接続および素子を示す。従って、例えば、データチャネルは、16の導線分の幅であってもよく、従って、素子1110、1110及び1114をそれぞれ16個づつ含んでもよい。
【0065】
より詳細に前記チャネルの各々を検討すると、データチャネルは、ある方向にインターフェースブロック30aを通過したデータをレジスタするのに所望により使用し得る入力/出力レジスタ1110を含んでもよい。データチャネルは、データがIRs1002からIRs1060へ通過し所望によりレジスタ1110をバイパスするのを許可するPLCs1112を含んでもよい。同様に、データチャネルは、データがIRs1060からIRs1002へ通過し所望によりレジスタ1110をバイパスするのを許可するPLCs1112を含んでもよい。
【0066】
アドレスチャネルは、以下説明するようにID情報に基づく変更を伴ってアドレス(少なくとも1つの相対アドレス)がプロセッサオブジェクトに供給されるのを許可する。プログラマブルロジック30から入力されたアドレス情報は、レジスタ1120によりレジスタされるか、或いはPLCs1222を介しレジスタ1120をバイパスしてもよい。加算器1130を設けアドレスオフセット値を所望によりPLCs1122の出力に加える。
【0067】
IDチャネルは、プロセッサオブジェクトが実行し得る各異なるプログラムに固有のID値をプログラマブルロジック30が提供するのを可能にする。このID値はレジスタ1140によりレジスタされるか、或いは所望によりPLCs1242を介しこれらレジスタをバイパスしてもよい。PLCs1242から出力したID値はテーブル1144に供給され、(例えば供給されたID値に関連するアドレスオフセット値を含むテーブル1144の場所をアドレス指定する。テーブル1144は、供給されたID値に対応するアドレスオフセット値を出力し、加算器1130に供給することにより応答する。加算器1130は、このオフセット値をPLCs1122により出力された(相対)アドレス値に加算し、(図7の)メモリ40中の最終即ち絶対的アドレスを生成する。このタイプの「相対」アドレスから「絶対」アドレスへの変換を、データアドレス或いは命令アドレス、或いはデータアドレスと命令アドレスの双方に対し使用してもよい。データアドレスと命令アドレスの双方に対し使用する場合、2つのチャネル(各々は概ね素子1120/1122/1130/1140/1142/1144に似ている)を必要とし、1チャネルをデータアドレス用に使用し、他の1チャネルを命令アドレス用に使用してもよい。異なるオフセット値が、各ID値に関連するデータアドレスと命令アドレスの双方に対し必要となるかもしれない。従って、1120/1122/1130/1140/1142/1144のような2つのチャネルは、データアドレスと命令アドレスの双方がゼロ−アドレスに基づく値から絶対アドレス値への変換を必要とする場合に必要とされるかもしれない。ある場合には、このタイプのアドレス変換能力を、本発明に従って回路内の他の場所に提供するか、或いはPLDs中の情報の流れに提供することは望ましいかもしれない。そうであるなら、30aのようなインターフェース回路の更なる付加的な具体的構成を設けるか或いは、変換を必要とする情報をインターフェース回路30aの図示した構成を介して経路化してもよい。図示した幾つかの例を以下本明細書中で議論する。
【0068】
制御チャネルは、インターフェースブロック30aを介しいずれかの方向に通過する「START」信号及び「DONE」信号ような制御信号をレジスタする入力/出力レジスタを含んでもよい。代替的には、レジスタ1150はPLCs1152及び/又は1154を介しいずれかの方向にバイパスされ得る。
【0069】
データアドレスをオフセットする能力と開始命令アドレスをオフセットする能力とを有するインターフェースブロック30aの1例を図8Aに示す。図8Aの実施例において、素子1120/1122/1130/1140/1142/1144(図8)は、データアドレスオフセット即ちIRs1006よりむしろIRs1060に出力する専用に構成される。付加された素子1160/1162/1164はそれぞれ素子1140/1142/1144に類似するが、これらを使用して、各プログラム毎のID値をそのプログラムの命令のメモリ40b中の絶対的開始アドレスへ変更してもよい。IRs1006を介し開始アドレスを出力することに加え、回路1164或いは関連回路は、IRs1006を介し信号を出力することで、(図10の)プライオリティーデコーダ1440は、(図10)のPLC1430がその開始アドレスを(図10の)レジスタ即ちプログラム命令カウンタ1450へ供給するのを可能にする。これにより、メモリ40/40bから第1の命令を取り出す。その後、レジスタ1450は、連続命令クロックサイクル中でインクリーメントし、メモリ40/40bから関連するプログラムの連続する命令を取り出す。(図10の他の側面を以下詳細に議論する。)
【0070】
図8および8Aに示すタイプのインターフェースブロック30aは、各プログラムのコマンドを他のプログラムに使用されるのと同一の相対データ及び/又は命令アドレスを使用して要約タームの形式で記述するのを可能にするという利点を有する。例えば、各プログラムの相対命令アドレスをゼロで開始してもよい。プログラムが実際にPLD10(例えば図7中のプログラムメモリの分離された部分)にロードされる場合、プログラムの各命令に対する絶対的プログラムメモリのゼロの場所からのオフセットの量は、そのプログラムに対し(図8の)テーブル1144に記憶されたオフセット値或いは(図8Aの)テーブル1164に記憶されたオフセット値となる。各プログラムが呼び出される際、このプログラムに関連するID値を使用しテーブル1144或いは1146からそのプログラムに対する適当なアドレスオフセット値を検索する。図8の場合、加算器1130はそのオフセット値を、素子1120/1122を介しそのプログラム用に規定される相対命令アドレスに加算する。図8Aの場合、テーブル1164の出力は、絶対命令アドレスとして直接使用し得る。このアプローチは、ここで述べるようにプロセッサオブジェクトを有するPLDsのためのプログラムの書きこみ及びデバッグを多いに簡略化する。同様のアプローチをデータアドレス(例えば命令中のデータに使用するアドレスに使用し得る。(例えば、以下の図12及び12Aを参照)相対的なアドレスから絶対的なアドレスへの変換をデータのアドレス指定の目的で使用することにより、プロセッサオブジェクトを有するPLDsのためのプログラムの書きこみ及びデバッグを簡略化する。また、本明細書中の後で、如何にしてこれら概念を本発明におけるPLDsを含む大きなシステムに延用可能とするかにつき(例えば図14及び15の議論を参考に)説明する。図14及び15に関連して説明する更なるインターフェースの特徴は、図8および8Aに示すタイプの回路中に含まれるか、或いは回路に追加されることが理解される。
【0071】
図8および図8Aに示された例示的なインターフェースブロックは図7に示された典型的なPLD実施例に関するものであるが、この形式のインターフェースは本発明のいずれの実施例においても使用し得ることが理解される。
【0072】
前述のことから本発明に係るPLDが多くの利点を有することが良好に理解されよう。PLD上に適正な種類のプロセッサオブジェクト(適正な種類の動作部分を充分に伴って)を充分に有する場合、ユーザはカスタム用プロセッサを実施するためにこのPLDを使用することができる。この種のカスタムプロセッサは、例えば従来のマイクロプロセッサの機能を有することができるが、さらに追加的な機能を備えることもできる。例えば、従来のマイクロプロセッサに比べてより並列な機能ユニット(動作部分)を備えることができる。本発明のPLDは専用の完全なマイクロプロセッサをオンボードに備えるPLDに比べて全体的に“低価格”なものであり、これは例えばユーザが完全なマイクロプロセッサを必要としていない場合に高価な間接回路を伴わないためである。本発明によってユーザは各プロセッサ構成ブロックへのアクセスを有しており、従ってユーザはこれらの構成ブロックが完全なマイクロプロセッサを提供するために必要とされない場合に他の用途に使用することができる。例えば、MACブロックをDSPプロセッサの一部として使用するか、またはこれをその他の専用データ伝送動作に使用することができる。別の例として、プログラムシーケンサを複合ステートマシンとして使用することができる。
【0073】
本発明に従ってPLD上に設けられた専用回路(プロセッサオブジェクトを含む)は、PLDのプログラマブルロジック30内で実行された場合に最も遅いおよび/または最も低効率なマイクロプロセッサ動作を実行するように適応することが好適である。
【0074】
本発明に係るPLDのハードロジックプロセッサオブジェクト部分内に含めることが好適である別の制御回路の例は、例えば図9に示される種類の多ポートレジスタファイルである。レジスタファイルは制御ユニット(例えばプログラムシーケンサまたはアドレスジェネレータ等)である。レジスタファイルはメインメモリと機能ユニットとの間の局部記憶装置として使用することができる。縮小命令セット(“RISC”)プロセッサは一般的にアドレスジェネレータを備えておらず、アドレスはレジスタファイル内の局部記憶装置によって計算および記憶される。
【0075】
図9に示されているように、多ポートレジスタファイル1210は複数のレジスタ1222(例えば16個)からなるメモリ1220を含んでおり、各レジスタはそれぞれ複数ビット(例えば16ビット)のデータワードを記憶することができる。各レジスタ1222は結合された入力PLC1230および結合された出力PLC1240を備えている。各入力PLC1230は8個の16ビットワードのうちのいずれか1つを結合されたレジスタ1222に付加することができ、このレジスタ内に記憶する。レジスタファイル1210への8個の16ビット入力1228は、このレジスタファイルの入力ポートと呼称されることがある。各出力PLC1240は16個のレジスタ1222のうちのいずれか1つの内容を結合されたレジスタファイルの出力ポート1242に付加することができる。PLC1230および1240のそれぞれは、基本的に固定された選択を行うためにプログラム制御するか、またはより動的な選択を行うためにより動的に制御(例えば時間変化するロジックあるいはその他の制御信号によって)することができる。PLC1230および1240の全ては並列に動作することができ、従って8個以上の入力ワードをレジスタファイル1210内に同時にルーティングすることができ、同じ時点において8個以上の出力ワードがレジスタファイルから外へルーティングされる。回路は全く柔軟で無閉塞なものであり、任意の入力ポート1228からの入力ワードを(レジスタ1222が動作するための最低限の1クロックサイクルの遅延の後に)任意の1つまたは複数の出力ポート1242に付加することを可能にする。
【0076】
図9に示された形式のレジスタファイルはここで記述されているPLD10の汎用プログラマブルロジック30内で実施するには比較的高価であるが、専用回路(例えば固定配線式あるいは部分的に固定配線式の)内にておいては容易に実施することができる。従って、レジスタファイル1210は、本発明に係るPLD上のプロセッサオブジェクトの制御部分(例えば204/504/604/等)内に含まれるものの好適な候補の別の例である。特定のアーキテクチャにおいてレジスタファイルはアドレスジェネレータとして使用することができる(例えば、図7のアドレスジェネレータ910)。
【0077】
レジスタファイル1210の種々の特徴に対して前述した特定のサイズは単に説明のためのものであり、必要に応じてその他のサイズを代替的に使用し得ることが理解される。例えば、レジスタファイルは前述した16個よりも多いあるいは少ないレジスタ1222を備えることができ、また各レジスタのサイズは前述した16ビットよりも小さいあるいは大きいものとすることができる。同様に、レジスタファイルは前述した前述した8個よりも多い入力ポートならびに出力ポートを備えることができる。レジスタファイル内の入力ポートおよび出力ポートの数は異なったものとすることができる。
【0078】
図9Aには、本発明に係る説明的なPLD10が示されており、これは前述した多ポートレジスタファイル1210を含みこれを使用している。図9Aに示されたアーキテクチャはRISCプロセッサを提供するために使用し得るものである。図9Aに示された要素に加えて、PLD10は他のソフトロジック要素を含むことができる。後に図10および図11に関して記述するようにRISCプロセッサ内において通常プログラムシーケンサはゼロオーバヘッドループを有していないが、プログラムシーケンサ1320は本明細書中に記載されている他のプログラムシーケンサと同様なものとすることができる。矢印で垂直に結ばれている各ブロック40b,30d等はパイプラインステージとすることができるが、必ずしもこの種のステージとする必要はない。レジスタファイル1210と機能ユニット1306ならびにデータメモリ40aとの間のマルチプレクサ1314も、先にレジスタファイルに戻して書き込みする必要なく進行中の計算を受け入れることができる。このことは当業者において“フォワーディング”として知られている。レジスタファイル1210は少なくとも1つの入力ポートならびに2つの出力ポートを有する。機能ユニット1306は本明細書において先に記述した動作部分(例えば、206(図1)、306(図2)、406(図3)、506(図4)、606(図5)、706(図6)、906(図7)等)のうちの1つまたは複数のものを含んでいる。
【0079】
図9Bには別のRISCアーキテクチャが示されている。このアーキテクチャは図9Aのものと類似であるが、データメモリ40aが機能ユニット1306のライン内にある。
【0080】
本発明の実施例のいずれにも使用し得るプログラムシーケンサの説明的な実施例が図10により詳細に示されている。参照を容易にするために図10に示されたプログラムシーケンサはプログラムシーケンサ1420を引用するが、前述した任意のプログラムシーケンサ(例えば220,520,620等)を使用し得ることが理解される。
【0081】
プログラムシーケンサ1420は、PLC1430(基本的にマルチプレクサ形式回路)を含んでおり、これによってその複数の入力(“命令アドレス”、“ネクストプログラム”、“スタックリターン”、“アザーインプッツ”)のうちのいずれかをこのPLCによって出力される命令アドレス信号として選択する。PLC1430はいくつかの制御入力信号(“インタラプト”、“コンディションズ”、“スペシャルケースイズ”、“ゼロオーバヘッドループ”、“アザーコントロールズ”)によってその選択を行うように制御される。これらの信号は、優先エンコーダ回路(オプショナル)1440によって処理することができる。例えば、エンコーダ回路1440は、相互に対立する信号が定義されないことを保持するか;またはそのような信号が定義された場合に最も優先順位の高い制御信号のみをPLC1430の制御に使用するために出力することを保持する。プログラムシーケンサ1420はさらにPLC1430によって出力された命令アドレス信号を記録するためのレジスタ1450(オプショナル)を含むことができる。(レジスタ1450を含んでいる要素は、PLC1430からのいずれかの変異的な出力によって通常モード動作がオーバライドされない限り、連続する各命令サイクルの間にレジスタ1450の内容を一定に増加するように変更(例えば、インクリメント)するための回路を含んでいる。従ってレジスタ1450はプログラム命令カウンタとして考えることもできる。)前述したように、通常プログラムメモリ40/40bは専用(すなわち少なくとも部分的に固定配線式の)のプログラムシーケンサ回路1420の一部ではないが、完全化のために図10に示されている。プログラムメモリ40/40bは要素1430/1450の出力信号によってアドレスされ、メモリ内のアドレスされた位置で実行されるプログラム命令を出力する。
【0082】
図10に示された種々の形式の入力信号の多くは既に説明されており、従ってここでは短く述べるだけで充分である。“命令アドレス”、“ネクストプログラム”、“ブランチ”、ならびに“アザーインプッツ”信号は通常プログラムシーケンサ1420を含んでいるPLD10のソフトロジック部分20(例えば図1)内から生じる。これらの信号のいくつかあるいは全てが図8および図8Aに示されているようなインターフェース回路30aを介して伝送され、従ってこれらの信号のいくつかあるいは全てが前述したようにインターフェース回路処理に依存する(例えばアドレス変換を絶対的に開始するためにオフセット数値またはIDによって相対アドレスを変更する)。特定の“アザーインプッツ”信号をプログラムシーケンサの“ゼロオーバヘッド”機能を補助するために使用することができ、これは図11を参照して以下により詳細に説明する。この場合、これらの“アザーインプッツ”信号はプログラムシーケンサに対してよりローカル(例えばその内部で)に形成される。“スタックリターン”入力信号は典型的にプログラムシーケンサと共に使用されるスタックメモリ40c(例えば図7)から発信される(このスタックメモリは一般的にPLDのソフトロジック部分20とすることもできる)。“インタラプト”、“コンディションズ”、“スペシャルケースイズ”、および“アザーコントロールズ”信号もプログラムシーケンサ1420を含んでいるPLD10のソフトロジック部分20内から生じる。再び、これらの信号のいくつかあるいは全てが図8および図8Aに示されているようなインターフェース回路30aを介して伝送される。“ゼロオーバヘッドループ”信号もPLDのソフトロジック部分20内から生じるか、あるいはプログラムシーケンサがこの種の信号を形成し得ると仮定するとこれらはこのプログラムシーケンサ1420内でよりローカルに形成することができる。
【0083】
“ゼロオーバヘッドループ”状態は、それ自体が一群の命令の繰り返し実行の制御としてこの機能を実行するプログラムシーケンサ1420に関するものである。例えば、本発明に係るプログラムシーケンスは、プログラムシーケンサがそれ以上の外部命令を使用せずに繰り返し実行する命令シーケンスの開始アドレスとして外部から付加された命令アドレスを使用することができる。この形式の動作が必要とされる場合、“ゼロオーバヘッドループ”制御信号が定義され(例えば、PLDのソフトロジック部分20またはプログラムシーケンサ1420自体によって)、PLC1430が“アザーインプッツ”信号からの命令アドレスを出力する。この“アザーインプッツ”信号はプログラムシーケンサ1420自体によって形成された開始命令アドレス信号である。“ゼロオーバヘッドループ”機能を伴った例示的なプログラムシーケンサ回路が本明細書において以下により詳細に説明される(例えば図11に関連して)。
【0084】
以下に記す理由のため、本発明に係るPLDのハードロジック部分(群)(例えば図1)の一部としてプログラムシーケンサ1420のようなプログラムシーケンサを設けることが好適である。プログラムシーケンサへの入力のいくつかはPLDのソフトロジック部分20内における比較的難解な復号の結果またはその他の比較的時間のかかる動作の結果であり得る。プログラムシーケンサが全ての入力を受信する時間(PLDクロックサイクルの間)のため、プログラムシーケンサがその動作を実行するためにそれ程多くの時間はクロックサイクル中に残されていない。従ってプログラムシーケンサの動作を高速化するために専用回路を使用することが好適であり、それによってPLDクロックサイクル中の比較的短い一部の間にその動作を完了することができる。
【0085】
図11には、どのようにプログラムシーケンサ1420に説明的な“ゼロオーバヘッドループ”機能を設けることができるかがより詳細に示されている。図11に示されている説明的な実施例において、プログラムシーケンサ1420は少なくとも1つのループ制御回路1460の用例(複数の用例も可能)を有している。以下の説明はループ制御回路1460aに関して行うが、全ての記述がその他のいずれのこの回路の用例1460b等にも同様に該当することが理解される。
【0086】
ループ制御回路1460aは、開始アドレスレジスタ1470と終了アドレスレジスタ1474とカウントレジスタ1478とを含んでいる。開始アドレスレジスタは、回路1460aによって制御されるループを開始させるプログラムメモリ40/40b内の命令のアドレスを含んでいる。終了アドレスレジスタ1474は、回路1460aによって制御されるループを終了させるプログラムメモリ40/40b内の命令のアドレスを含んでいる。カウントレジスタ1478は回路1460aによって制御されるループを実行する回数を含んでいる。レジスタ1470、1474、および1478は前述した情報を任意のいずれかの方式でロードすることができる。例えば、これらのレジスタは、これらを含んでいるPLD10が最初に構成(プログラム)される際にロードすることができる。その後これらのレジスタはROMとして使用することができる。他方、これらのレジスタのうちの1つあるいは複数のものをPLDのソフトロジック部分(例えば図1の20)によってロードすることができる。このことを実行する方式の一例として、これらのレジスタのいくつかあるいは全てをロードするためにプログラムメモリ40/40bからの命令を使用することができる。このようなメモリ40/40bからの命令は以下のような解釈を有することができる:“回路1460aを開始アドレス1050、終了アドレス1056、およびカウント8でロードし”、これらの数字(1050,1056,8)はその命令の中の変数フィールドとすることができる。
【0087】
回路1460aはさらに比較回路1476、リセットおよびロード可能なカウンタ1480、およびゼロ検出回路1482を含んでいる。カウンタ1480は、レジスタ1478内に含まれているカウント値によって選択的にリセットおよびロードすることができる。
【0088】
ゼロオーバヘッドループを実行することが必要である際、このループに対するレジスタ1470/1474/1478を設定する前述した命令(またはその他のいずれかの命令)は、レジスタ1450がこのループの開始アドレスを受信することを誘起し、またカウンタ1480がレジスタ1478からのカウント数値をロードすることを誘起することができる。その後最初のループの実行に従ってレジスタ1450が増加し、このレジスタ1450がループの最後の命令アドレスに到達するまで増加する。このことが発生すると、比較回路1476はレジスタ1450の内容が終了アドレスレジスタ1474の内容と等しいことを検出する。その後比較回路1476はカウンタ1480を減数させる出力信号を形成し、ORゲート1422を付勢し(これによってOR回路1492の出力信号を送信するようにPLC1430を付勢する)、さらにAND回路1490aを付勢する。このようにして付勢されると、AND回路1490aはOR回路1492を介してレジスタ1470からの開始アドレスをPLC1430に付加する。このことによってレジスタ1450が再度ループの開始アドレスを受信することが誘起され、その結果ループの実行が再度開始される。
【0089】
このループはカウンタ1480がゼロになるまで前述したように繰り返し実行される。このことはゼロ検出回路1482によって検出され、これはこのループがさらに実行されることを防止するための“終了”出力信号を形成する。例えば、“終了”出力信号はレジスタ1470/1474/1478を0にすることができるか、あるいは“終了”出力信号はこの“終了”信号に関連付けられたAND回路1490aを使用不可能にする。
【0090】
(図11に示されているように)プログラムシーケンサ1420はループ制御回路1460の複数の用例を含んでおり、これらの複数の用例は相互に階層関係をもって使用することができる。このような場合において、1つの用例1460xによって実行されるループは別の用例1460yによって制御されるループの実行を開始する命令を含んでいる。用例1460xがこの命令を呼び出す度にこの用例1460xの動作は一時的に停止し(例えば前記の命令によって)、用例1460yはそれが制御するループの実行を開始するように付勢される。用例1460yの使用が終了すると、用例1460xはその動作を再開することができる。この種の階層は任意の深さのものとすることができる。
【0091】
当業者においては、図11に関して説明した効率的なループ機能が例えばDSP用途等の多くの用途において極めて効果的であることが理解されよう。従って、本発明に従ってこの種の機能を有するPLDを提供することによって、DSPまたはその他の一般的に類似の用途においてこの種のPLDを使用することが極めて容易になる。当業者においては、図11に示されている特定の制御回路は単に説明のためのものであり、必要に応じてこの回路の変更構成を使用し得ることが理解されよう。例えば、一連の命令の複数回の実行(例えばループ)をサポートする代わりに、回路は一連の命令を一回伝送することだけをサポートすることができる。ゼロオーバヘッドループの別の形式(図示されている一般的な場合よりも少ないハードウェアのサポートを必要とする)は“リピート”命令であり、これは単一の命令を多数回実行する。
【0092】
前述した専用アドレスジェネレータ210,510,610等に対して使用することができるジェネレータ回路1610の実施例が図12により詳細に示されている。アドレスジェネレータ1610は複数のアドレス変更子データワードM1−Mnを記憶するための複数のレジスタ1622を有するメモリ1620を備えている。各レジスタ1622の内容はPLC1630a,1630b等のうちの少なくとも1つ(好適には複数)に付加される。各PLC1630はこれに付加されたレジスタ内容のうちのいずれか1つを出力するように制御することができる。各PLC1630によって出力されたレジスタ1622の内容はそれぞれ加算器1660の1つに付加される。
【0093】
アドレスジェネレータ1610は、複数のアドレスワードA0−Amを記憶するための複数のレジスタ1642を有する別のメモリ1640をさらに備えている。各レジスタ1642の内容はPLC1650a,1650b等のうちの少なくとも1つ(好適には複数)に付加される。各PLC1650はこれに付加されたレジスタ内容のうちのいずれか1つを出力するように制御することができる。各PLC1650によって出力されたレジスタ1642の内容はそれぞれ加算器1660の1つに付加される。これらのPLC1650の出力信号はさらにアドレスジェネレータ1610によって出力され、従ってこのアドレスジェネレータを含んでいるPLD10(例えば図1)上の何処かにおいて使用することができる。例えば、これらのアドレス信号は、前述したようにPLD上のデータメモリ40/40bをアドレスするために使用することができる。
【0094】
各加算器1660はこれに付加された信号によって示された数値を換算する。従って加算器1660aは例えばPLC1650aによって出力されたアドレス数値にPLC1630aによって出力されたアドレス変更子数値を加算して変更されたアドレス数値を形成する。(関連付けられたアドレス変更子数値がゼロである場合、変更されたアドレス数値は当然元のアドレス数値と同一になる。)変更された各アドレス数値は次の命令クロック信号パルスに応答して元のアドレスレジスタ1642に対して返送されるとともにこの中に記憶される。従って、メモリ1640内のアドレス数値は必要に応じて繰り返し増加または減少させるか、または連続した命令クロック信号中に変更することができる。この加算器1660を通じたアドレスフィードバックの構成によって、PLD内において連続する動作の実行中に連続的にアドレスすることが必要となるデータメモリ位置を自動的にアドレスするようにアドレスジェネレータ1610を使用することが可能になる。
【0095】
メモリ1620および/または1640は、アドレスおよび/または変更子データを複数の方式のうちのいずれかによって受信することができる。例えば、これらのメモリは、アドレスジェネレータ1610を含んでいるPLD10(例えば図1)の構成(プログラミング)の一部として部分的または全体的にデータをロードすることができる。これに代えて、またはこれに加えて、メモリ1620および/または1640は、PLDの構成動作後の任意の時間にPLDのソフトロジック部分20(例えば図1)からの新規あるいは変更されたデータをロードするかまたはこれを受信することができる。例えば、プログラムシーケンサ(例えば図1の220)によってプログラムメモリ40/40bから選択された命令がメモリ1620および1640のいずれかあるいは両方の中の特定の位置への新規あるいは変更されたデータのロードを誘起することができる。
【0096】
図12に示されているように、アドレスジェネレータ1610は2つまたはそれより多数のアドレスを同時かつ互いに並行に出力し得るよう構成することが好適である。この機能は、2つまたはそれより多数のデータワードを演算的あるいは論理的に結合する(例えば1つのデータワードを別のデータワード(スケールファクタ)によって乗算する)ことがしばしば必要となるDSP等の多くの場合において有用なものとなる。VLIW処理は2つより大幅に多数のアドレスを出力することができるアドレスジェネレータ1610を設けることによって実行することができ、これはVLIW命令がしばしば極めて少数の異なったデータワードの処理を必要とするためである。アドレスジェネレータ1610はメモリ40/40bまたはそれ以外の何処かから引き出されるデータワードのアドレスを形成するために使用し得るばかりでなく、その時点で実行されている動作の結果として生じたデータワードが伝送される(例えば記憶するために)位置のアドレスを形成するために使用することができる。これは、アドレスジェネレータ1610が複数のアドレス(すなわち引き出されるデータ用の1つまたは複数、ならびに形成されるデータの目的位置(複数)用の1つまたは複数)を同時に出力し得ることが好適であることに対する別の理由である。
【0097】
必要に応じて、アドレスジェネレータ1610に付加されるか、ここから引き出されるか、および/またはこの中で処理されるアドレス情報は、例えば図8および図8Aに示された(特に図8の要素1130および1144)“インターフェース”処理の種類に依存するものとすることができる。言い換えると、要素1130および1144等の回路はアドレスジェネレータ1610内のまたはこれと結合された任意の適宜な点あるいは複数点に含めることができ、これによってアドレス情報を相対的なものから絶対的なアドレス値に変換する。例えば、メモリ1620および/または1640に付加されるアドレス情報は、図8内の要素の構成と同様な要素の構成を介して伝送することができ、これによってこの情報を異なった動作に対して再使用することができる相対値から各動作に対して固有の絶対値に変換し、ここで各動作はこの変換の制御に使用するためにそれぞれ独自の“ID”数値を有している。別の例として、PLC1650の出力に対して同様な手法を適用することができ(フィードバックループを離れて加算器1660へ戻るように)、従ってアドレスジェネレータ1610は相対アドレス情報を使用して内部的に動作するが、アドレスジェネレータの外の回路は絶対アドレス情報を受信する。
【0098】
図12Aには、例示的なアドレスジェネレータ1610の回路またはこれと結合される回路が直ぐ前の段落で記述した形式の“インターフェース”回路によってどのように増強されるかの説明的な例が示されている。命令デコード30d(図7参照)はVLIW命令のいくつかの部分それぞれから命令およびデータアドレス情報を出力することができる。このVLIW命令のそれぞれの部分からの命令情報出力は“ID”情報(“ALT ID1”、“ALT ID2”、“ALT IDN”等)を含むことができる。このID情報はPLC1604a,1604b,1604n等のうちの適宜な1つに付加される。これらの各PLCへの別の入力は、共通のID信号“ID”とすることができる。各PLC1604は、関連付けられた特定のID信号または共通ID信号のいずれかを選択して対応するインターフェース回路1606a,1606b,1606n等に付加するように制御(プログラム)することができる。
【0099】
インターフェース回路1606のそれぞれは図8の要素1130および1144と同様なものとすることができる。従って各インターフェース回路1606はそのID入力信号(関連付けられたPLC1604からの)に応答して先に記憶された対応するデータアドレスオフセット数値を選択して同様にこのインターフェース回路に付加された相対データアドレス数値に加算する。
【0100】
ここで命令デコード30dに戻ると、VLIW命令の各部分から出力されたデータアドレス情報は相対データアドレスとすることができ、PLC1602a,1602b等のうちの適宜な1つに付加される。PLC1602のぞれぞれは別のソース(例えばPLD10のソフトロジック部分のその他の領域)からの別の相対データアドレス情報(“ALT ADDR1”、“ALT ADDR2”等)も受信することができる。PLC1602のそれぞれはそのデータアドレス入力うちのいずれかを選択して対応するインターフェース回路1606a,1606b等に対して出力(これはPLC1606m,1606n等には付加されない)するように制御(プログラム)することができる。各インターフェース回路1606a,1606b等は、それが受信した相対データアドレス情報を絶対データアドレス情報に変換してその情報を関連付けられたPLC1608a,1608b等に付加する。各PLC1608はさらに別のソース(例えばPLD10のソフトロジック部分のその他の領域)からの別の相対データアドレス情報(“ALT ADDRM”、“ALT ADDRN”等)も受信することができる。PLC1608のそれぞれはそのデータアドレス入力うちのいずれかを選択してメモリ1640内の対応する1つのレジスタに対して出力しこのデータアドレスをそのレジスタ内にロードするように制御(例えばプログラム)することができる。
【0101】
ここでインターフェース回路1606m,1606n等に戻ると、これらの回路のそれぞれはPLC1650a,1650b等のうちの対応する1つによって出力されたデータアドレス情報を受信する。従って、回路1606m,1606n等のそれぞれは、対応するPLC1650から付加された相対データアドレス情報を対応するPLC1604から同様にこのインターフェース回路に付加されたID情報に基づいて絶対データアドレス情報に変換することができる(例えばアドレッシングメモリ40/40a(例えば図7)内において使用するために)。
【0102】
図12Aに示されたインターフェース回路の全てに関してPLD10のいずれかの構成において使用することが好適であるわけではないことが理解される。例えば、相対データアドレス情報をメモリ1640内のレジスタA0に対する絶対データアドレス情報に変換するためにインターフェース回路1606aを使用する場合、このレジスタの出力がインターフェース回路1606m,1606n等のいずれか1つによって再度変換される必要があることはあまり考えられない。同様に、下流のインターフェース回路1606m,1606n等の1つがメモリ1640の特定の出力を変換するために使用される場合、この特定の伝送路内において追加的な上流変換(インターフェース回路1606a,1606b等によって(しかしながら1606m/1606n/等は含まない))が必要であることは考えにくい。図12Aに示されている説明的な構成は、以下のような使用を含む考えられる多様な使用構成を提供するように設計されている(回路を通じた代表的な1つのデータアドレス伝送路に関して考える):
1. 命令デコード30dからのあるいはPLD10上の他の何処かからのものであり、インターフェース回路(例えば1606a)の上流(例えば“ALT ADDR1”)または下流(例えば“ALT ADDRM”)のいずれかの相対または絶対データアドレス情報;
2. 命令デコード30dからのあるいはPLD10上の他の何処かからのインターフェース回路1606を制御するためのID情報;
3: ループ1620/1640/1660の上流またはこれらのループの下流における相対から絶対データアドレスへの変換。
【0103】
相対アドレスから絶対アドレスへの自動的な変換に関する前述の説明に関連して、相対データアドレスから絶対データアドレスへの自動的な変換能力(例えば図12A)により本発明に係るプロセッサオブジェクトを有するPLDによって実行するための複雑なプログラムの書き込みが大幅に容易化される。例えば、モジュールとモジュールとの間における相反性を防止する必要のない相対命令および/またはデータアドレスを使用して、相対的に独立して書かれたモジュールとしてプログラムを作成することができる。各モジュールに対して固有のID数値が関連付けられ、さらに適宜な命令および/またはデータアドレスオフセット数値が各ID数値に関連付けられる。各モジュール内で使用される相対的命令および/またはデータアドレスに対するこれらのオフセット数値の加算によって、これらのアドレスがモジュールとモジュールの間で相反することがない絶対アドレスに変換される。前述したように、このことによって本発明のPLDに対する複雑なプログラムの書き込みおよびデバギングを大幅に容易化することができる。
【0104】
図13には、本発明に係るPLD上のプロセッサオブジェクト内に含むことができる専用動作部分1806(例えば図1の動作部分206と同様)のさらに別の説明的実施例が示されている。動作部分1806は、演算ロジックユニット(“ALU”)または演算ブロックと呼称されるものの例である。動作部分1806は複数の入力データワード記憶レジスタ1810a−nを含んでいる。関連付けられたPLC1812がどのように制御されるかに従って、これらのレジスタのそれぞれを使用するかあるいはバイパスすることができる。PLC1820はPLC1812の出力から機能ユニット1830,1840,1850等へのルーティングを広範囲の中から選択することを可能にする。
【0105】
機能ユニット1830は加算器/減算器(すなわち付加された2つのデジタル信号数値を互いに加算するかあるいは一方から他方を減算する回路)である。機能ユニット1840はバレルシフタ(例えば、付加されたデジタル信号数値のビット上においていくつかの種類のシフトを実行し得る回路)である。例えば、バレルシフタ1840は“左回転”、“右回転”、“論理的左シフト”、“論理的右シフト”、等として知られるシフト、および/または固定または選択されたいずれかの数のビット位置による別の方式のシフトを実行するように制御することができる。機能ユニット1850は、2つの(あるいはより多数の)付加されたデジタル信号数値上でいくつかの異なった論理動作をビット式に実行することができる。例えば、機能ユニット1850は第1の入力ワードの各ビットと第2の入力ワードの対応するビットとの論理AND演算を行って出力を形成することができる。あるいは2つより多い入力ワードにおいて対応するビット間の論理AND演算を行うこともできる。ANDに代えて、その他の任意の論理機能(例えばOR、XOR、NAND、NOR等)が機能ユニット1850の能力の中に含まれており、従ってこのユニットの動作として選択することができる。ユニット1830,1840および1850以外の別の機能ユニットを動作部分1806内に設けることもできる。これらは全くあるいは部分的に追加的な機能ユニットの用途とするか、または全くあるいは部分的に異なった形式の機能ユニットとすることができる。
【0106】
PLC1860は、機能ユニット1830/1840/1850の出力信号の出力レジスタ1870a−mへの可能なルーティングを広範囲の中から提供するように制御することができる。必要であれば、関連付けられたPLC1872a−mを介してこれらレジスタのいずれかあるいは全てをバイパスすることができる。
【0107】
本発明の他の回路と同様に、PLC1812,1820,1860および1872は複数の方式(例えば静的(FCEを使用して)あるいはより動的に(プログラムメモリ40/40bからの命令等の時間変化信号を使用して))のうちのいずれかによって制御することができる。同様に、ユニット1830/1840/1850が実行し得る種々の機能オプションの選択もいくつかの方式のうちのいずれか(例えば、PLC1812/1820/1860/1872の制御のための例として挙げたいくつかの方式のいずれか)によって制御することができる。他方、動作部分1806の動作および使用は、本明細書において先に記述した他の例示的な動作部分の動作および使用と同様なものとすることができる。
【0108】
本発明に係るPLDは、ローカルまたは相対命令および/またはデータアドレスをそれぞれ使用するその他の構成要素を伴ったシステム内で動作することができ、ここで前記命令および/またはデータアドレスは構成要素間において相反性が生じる可能性を有するものであり、この際PLDはこれらのアドレスをPLD内で使用するために相反性が生じることのない絶対アドレスに自動的に変換するように適用することができる。このことは、PLD上におけるプログラム内で使用されるローカルあるいは相対アドレスをこれらのプログラムを実際に実行するプロセッサオブジェクトによって使用される絶対アドレスに変換することに関連する前述の説明に対する拡大(システムに対する)と見ることができる。この場合、プログラムはPLDの中には含まれずにむしろこのPLDを含んでいるシステム内の他の構成要素内に含まれる。
【0109】
図14には、直ぐ前の段落で述べた形式の説明的なシステム2010が示されている。システム2010は、1つまたは複数のプロセッサ2020a−nおよび/または他の構成要素2030を含んでいる。(これらの他の構成要素2030はプロセッサ2020に関連して以下に説明するものとは異なった機能を代替的または追加的に実行することができるが、以下の説明は場合によって簡略化のためにプロセッサのみに関するものとし、他の構成要素2030は一般的にプロセッサと同様なものとして扱われる。)システム2010はさらにPLD10、ならびにシステム内の種々の構成要素(10/2020/2030)の間において信号を伝送するための通信バス2040を含むことができる。PLD10は、システム内の他の構成要素2020/2030によってスレーブとして使用することができるVLIWまたは他のプロセッサオブジェクトを含むことができる。例えば、別の構成要素2020/2030は、バス2040を介してPLD10に伝送するとともにこのPLD(特にこのPLDのプロセッサオブジェクト)によって実行する命令(例えばVLIW命令)を形成することができる。構成要素2020/2030はそれ自体の内部動作においてローカルあるいは相対アドレスを使用することができ、またそれら自体のローカルあるいは相対アドレスを使用して前記の命令を形成することもできる。言い換えると、PLD10は、命令を形成した他の構成要素2020/2030に対してローカルまたは相対的であるアドレス部分を使用してこの命令を受信することができる。しかしながら、これらのローカルまたは相対アドレスは構成要素2020/2030以外によって使用されるローカルまたは相対アドレスと異なったものとすることはできない。
【0110】
システム全体にわたって特有のものであるとともにPLD10が必要とする絶対アドレスに対して固有であることが知られているアドレスを各構成要素2020/2030がPLD10に対して伝送する必要性を除外するために、PLDはデータスペース変換および保護テーブル、ならびに受信した相対アドレスをそれ自体の動作のために必要な絶対アドレスに変換する相関回路2050を備えている。インターフェース2050のデータ領域は、PLD10のプロセッサ回路内に入力データをロードするとともに、処理されたデータをこのプロセッサ回路から取り出すためのものである。インターフェース2050のプログラム領域はIDによって識別された適正な処理を開始するためのものである。典型的な処理シーケンスは:(1)インターフェース2050へIDを付加し;(2)ゼロから開始してプロセッサへデータをロードし(データアドレスオフセットはIDデータアドレス変換によって内部的に校正される);(3)IDプログラム変換アドレスに基づいてプロセッサが始動するようにSTART信号を定義し;(4)DONEインタラプトまたは信号を待ち;(5)IDを使用してプロセッサからデータをアンロードする。場合によってはプロセッサ自体がそのI/Oポートを使用してデータをロードおよびアンロードすることができる。この場合も、プロセッサがどのプログラムスペースを実行するかを認識するためにIDが必要とされる。
【0111】
図15には、構成要素2050内に含まれる例示的な回路がより詳細に示されている。回路2050は、バス2040を介してPLD10によって受信されたアドレス情報を受信ならびに記憶するレジスタ2052を備えている。アドレス情報のソース(例えば構成要素2020/2030)はさらにPLD10に対してバス2040を介してこのソースを識別することができる識別(“ID”)情報を提供する(例えば、他の構成要素2020/2030、および/またはレジスタ2052に付加されるアドレス情報のソースである他の構成要素によって実行される特定のルーチン)。レジスタ2054はこのID情報を受信および記憶して変換テーブル2060に付加する。
【0112】
考えられる各ID数値に対して、変換テーブル2060は開始アドレスオフセット数値ならびに終了アドレス数値を含んでいる。変換テーブル2060はID数値を受信し、伝送線2061aを介して対応する開始アドレスオフセット数値を出力し、さらに伝送線2061bを介して終了アドレスを出力する。開始アドレスオフセット数値はレジスタ2052からの相対アドレス情報に加算するために加算器2062に付加される。この加算の結果はPLD10がその動作を実行するために必要とする絶対アドレス情報である。例えば、加算器2062によって出力された絶対アドレス情報は、PLD10がその命令メモリ内にVLIWまたは他の命令を検出するために使用することができる。別の例として、加算器2062によって出力された絶対アドレス情報は、PLD10によって実行するためにバス2040を介して受信された命令内の情報を変更するために使用することができる。あるいは、加算器2062によって出力されたアドレス情報は、PLD10がそのデータメモリ内においてデータを検出するために使用することができる。ID数値が同じである限り、レジスタ2052を介して受信された全ての連続する相対アドレスがこのID情報に関連付けられた開始アドレスオフセット数値によって変更される(加算器2062を使用して)。
【0113】
加算器2062によって出力された各絶対アドレスは、さらに伝送線2061b上の終了アドレス情報と比較するために比較回路2070に付加される。加算器2062の出力が許容可能な終了アドレスを超過している場合、比較回路2070はエラーが生じたことを示す出力信号を形成する。
【0114】
前述の説明から、装置がプログラムおよびデータアドレス変換の両方をサポートする場合別々のプログラムおよびデータアドレス変換テーブル回路が設けられることが理解される(図8Aに示されたものと同様)。“ハーバードアーキテクチャ”プロセッサとして知られているものにおいては、プログラムおよびデータ記憶に対して別々のデータスペースが設けられている。(殆どのRISCおよびDSPプロセッサはこの形式のアーキテクチャを有している。)本明細書において示された多くの実施例において、プログラムシーケンサがプログラムメモリをアドレスし、これから呼び出された命令が命令デコーダによって復号される。アドレスジェネレータ(または命令デコーダを介しての命令)がデータメモリをアドレスする。
【0115】
プログラムメモリがプロセッサ内にロードされて再配置される場合、プロセッサは2つの形式のアドレス変換を“迅速に”サポートする必要がある。これらの2つの形式のアドレス変換は、(1)プログラムアドレスのためのアドレス変換と(すなわちプログラムシーケンサ内)、(2)データアドレスのための別の変換テーブル(命令デコーダとアドレスジェネレータの外側)である。後者は、プログラム内に埋め込まれているアドレッシング情報が絶対項(すなわち相対値から正確な絶対値へ変更するための変換を行わないもの)において正確ではないために必要となる。本明細書によれば、本発明の視点に含まれる回路内におけるこれらの種々の形式のアドレッシングオプションの全てが当業者において実行し得るよう充分な開示が提供される。
【0116】
図15の加算器2062の使用方法は単に例示的なものであり、必要に応じて他の任意の論理または演算結合を代わりに実行し得ることが理解される。また、図15には各絶対アドレスを終了アドレスと比較することのみが示されているが、必要に応じてさらに特定の絶対アドレス検査を実行し得ることが理解される。例えば、変換テーブル2060は、各ID数値に関連付けられた許容可能なアドレス範囲を出力することができ、各絶対アドレスがこの許容範囲内に含まれていることを確認するために検査され得る。
【0117】
前述の説明から、図14および図15に示された回路が、PLD10を使用することが望ましい各システム構成要素がPLD10と共に動作するとともにそれ自体のローカルまたは相対アドレス情報を他の構成要素2020/2030が同様な(従って相反する)ローカルまたは相対アドレス情報を使用している可能性に配慮することなく、またPLD10によって絶対アドレスが要求されることにも配慮することなくPLD10に対して出力することを可能にする。PLD10はいずれにしても受信したローカルまたは相対アドレス情報を使用し、この情報をそれ自体の動作のために必要な適宜な絶対アドレス情報に自動的に変換する。システム2010のユーザは、他の構成要素2020/2030のために書かれたソフトウェアとの相反性に配慮することなく、またPLD10によって要求される最終的な絶対アドレスにも配慮することなく、構成要素2020/2030のためのソフトウェアを書き込むことができる(少なくともPLD10のアドレッシングおよび動作に関する限り)。これによってこの種のソフトウェアの書き込みおよびデバギングが大幅に容易化される。
【0118】
本明細書において発明の概要に記述したように、本発明の別の要素は、プログラマブルロジックおよび少なくとも部分的に固定配線であり高機能な機能ユニットを有するPLDを提供することに関する。高機能な機能ユニットは前述したプロセッサオブジェクトの動作部分のようなものであり、動作部分/機能ユニットは2つ以上の機能を備えている。2つ以上の機能を含むことは、“高機能”の特徴を説明するものである。高機能な機能ユニットの例としては、(1)加算器ツリーと結合されたマルチプライア、または(2)アキュムレータと結合されたマルチプライアが挙げられる。この段落に記述されたPLD10の説明的な実施例が図16に示されている。
【0119】
さらに図16を参照すると、ここに示されている説明的なPLD10は、ソフトロジック部分20、ハードロジック部分2500、およびこれらの2つの部分間の接続を形成するための回路150/160を含んでいる。ハードロジック部分2500は1つまたは複数の高機能な機能ユニット2506を含んでいる。各機能ユニット2506の回路は少なくとも部分的に固定配線されており、乗算と加算または乗算と累算等の複数の機能を実行する。機能ユニット2506に使用することができる特定の回路例は、図2(動作部分306)、図3(動作部分406)、図4(動作部分506)、図5(動作部分606)、図6(動作部分706aおよび/または706b)、図7(動作部分906a,906b,906c,および/または906d)、ならびに図13(動作部分1806)に示されている。従って、高機能な機能ユニットの例には、MAC回路、ALU回路、バレルシフタ回路、およびガロア域回路が含まれる。高機能な機能ユニットの多様な組み合わせおよび/または複数の用例を含むことができる。
【0120】
図16に示されているような本発明に実施例において、PLDのソフトロジック部分20は既に記述した実施例のハードロジック部分において実行される特定の機能を実行するようにプログラムすることができる。例えば、これらの実施例内のハードロジック回路の制御部分204(図1),504(図4),604(図5)等のうちのいくつかあるいは全ては、図16に示された形式の実施例のソフトロジック部分20を適宜にプログラミングすることによって実行することができる。この最後の点に関してさらに特定の例を示すと、回路16に示された形式の実施例において、アドレスジェネレータ710および/またはプログラムシーケンサ720(図6)、あるいはアドレスジェネレータ910および/またはプログラムシーケンサ920(図7)の機能のうちのいくつかあるいは全ては、ソフトロジック部分20内で実行することができる。
【0121】
高機能な機能ユニットの全ての場合に必要なものではないが、これらのユニットは実行される機能のいくつかあるいは全てが複数の可能な機能の中からプログラムによって選択される特徴を備えることができる。これに代えてまたはこれに加えて、この種のユニットは実行される機能のいくつかあるいは全てが複数の可能な機能の中から動的に選択される特徴を備えることができる。これらの能力を備えた高機能な機能ユニットの例は、図4および図5にそれぞれ示されている動作部分506および606である。この点に関して短く部分的に再考してみると、動作部分506内の加算器/減算器550が加算または減算のいずれを実行するかは、PLC554を介してFCE556によってプログラム制御(すなわち静的)するか、あるいはPLC554を介して伝送線150からの信号によってより動的に制御することができる。図16に示された実施例において、伝送線150の信号は直ぐ手前のシーケンスに関するものであり、ソフトロジック部分20内の任意の適宜なソースから受信することができる。例えば、これは、命令デコード(例えば図7の30d等)として動作するように構成(プログラム)されたソフトロジック部分20内の要素から受信することができ、この命令デコードは図7においてプログラムシーケンサ920、プログラムメモリ40b、命令アンパック30c等と関連付けられた機能を実行するように構成されたソフトロジック部分20内の他の要素と連係して動作するものである。
【0122】
図17には、本発明に係るPLD10がデータ処理システム3002内において示されている。データ処理システム3002は以下の要素のうちの1つまたは複数のものを含むことができる:それらは、プロセッサ3004;メモリ3006;I/O回路3008;および周辺装置3010である。これらの要素は、システムバス3020によって結合され、エンドユーザシステム3040内に含まれる回路基板3030上に設置される。
【0123】
システム3002は、コンピュータネットワーキング、データネットワーキング、計測、画像処理、デジタル信号処理、またはその他のプログラマブルまたはリプログラマブルロジックの利点を必要とする適用方法において、広範囲な適用分野で使用することができる。プログラマブルロジックデバイス10は、広範囲な異なったロジック機能を実行するために使用することができる。例えば、プログラマブルロジックデバイス10は、プロセッサ3004と共同動作するプロセッサまたはコントローラとして構成することができる。PLD10は、システム3002内において分配されたリソースへのアクセスを仲介するアービタとして使用することもできる。さらに別の例において、PLD10は、プロセッサ3004とシステム3002内の別の構成要素の1つとの間のインターフェースとして構成することができる。システム3002は単に例示的なものであり、本発明の真の視点および精神は請求の範囲によって定義されることが理解されよう。
【0124】
本発明の特徴ならびにデバイスの種々の構成要素(例えば前述したPLCおよびPLCを制御するプログラマブル機能制御要素(“FCE”)等)を備えるプログラマブルロジックデバイスを実施するために、種々の技術を使用することができる。例えば、各PLCは、複数の入力のいずれか1つを出力に接続するためのスイッチまたはスイッチ群等の比較的に単純にプログラム可能なコネクタとすることができる。他方、各PLCは、接続の形成と並んでロジックの実行(例えば複数の入力の論理的な結合によって)も可能な幾分複雑な要素とすることもできる。後者において、例えば、各PLCは、AND、NAND、OR、またはNOR等の機能を実行する積算項ロジックとすることができる。PLCを実施するための好適な構成要素としては、EPROM、EEPROM、パストランジスタ、トランスミッションゲート、アンティヒューズ、レーザヒューズ、メタルオプション接続器等が挙げられる。前述したように、PLCならびに他の回路要素は、種々のプログラマブル機能制御要素(“FCE”)によって制御することができる。(特定のPLC機器(例えば、ヒューズおよびメタルオプション接続器)においては、独立したFCEデバイスは必要とされない。)FCEもいくつかの異なった方式で実施することができる。例えば、FCEは、SRAM、DRAM、ファーストインファーストアウト(“FIFO”)メモリ、EPROM、EEPROM、機能制御レジスタ(例えば、ウォールストロムの米国特許第3、473、160号公報参照)、強誘電メモリ、ヒューズ、アンティヒューズ等とすることができる。前述した種々の例に示されているように、本発明は、一回のみプログラム可能なデバイス、またはリプログラマブルデバイスのいずれに適用することもできる。
【0125】
前述の説明は本発明の原理を単に例示するものであり、当業者においては本発明の精神を逸脱することなく、種々の設計変更をなし得ることが理解されよう。本発明の種々の要素は所要の数および構成によってPLD上に設けることができる。
【図面の簡単な説明】
【図1】
本発明に基づき構成されたPLDの1実施の形態の代表的な部分の簡略化した概略ブロック図である。
【図2】
図1に示したものの1部分の代替的な実施の形態を示す簡略化した概略ブロック図である。
【図3】
図1に示したものの1部分の他の代替的な実施の形態を示す簡略化した概略ブロック図である。
【図4】
図1に示したものの1部分の他の代替的な実施の形態を示す簡略化した概略ブロック図である。
【図5】
図1に示したものの1部分の他の代替的な実施の形態を示す簡略化した概略ブロック図である。
【図6】
図1に示したものの1部分の他の代替的な実施の形態を示す簡略化した概略ブロック図である。
【図7】
図1に示したものの1部分の他の代替的な実施の形態を示す簡略化した概略ブロック図である。
【図8】
図7の実施の形態の1部をより詳細に示す簡略化した概略ブロック図である。
【図8A】
図8に類似するが、図8に示す回路のタイプの代替的な実施の形態を示す図である。
【図9】
本発明に係る使用し得る回路を示した簡略化した概略ブロック図である。
【図9A】
本発明の他の実施の形態を示した簡略化した概略ブロック図である。
【図9B】
本発明の他の実施の形態を示した簡略化した概略ブロック図である。
【図10】
本発明の先に記載した実施の形態の1部に使用し得る回路の1実施の形態を示したより詳細ではあるがまだ簡略化した概略ブロック図である。
【図11】
本発明における図10に示したタイプの回路の付加的且つ可能な特徴を示したより詳細ではあるがまだ簡略化した概略ブロック図である。
【図12】
本発明の先に記載した実施の形態の他の部分に使用し得る回路の1実施の形態を示したより詳細ではあるがまだ簡略化した概略ブロック図である。
【図12A】
図12に類似するが、本発明において幾つかの更に選択し得る回路を加えた図である。
【図13】
本発明において使用し得る回路をさらに示した簡略化した概略ブロック図である。
【図14】
本発明においてPLDを含むシステムの1実施の形態を示した簡略化した概略ブロック図である。
【図15】
図14のシステムの1部の1実施の形態を示した簡略化した概略ブロック図である。
【図16】
本発明の他の視点の実施の形態を示した簡略化した概略ブロック図である。
【図17】
本発明においてPLDを使用するシステムを示した簡略化した概略ブロック図である。
Claims (58)
- プログラマブルロジック回路と、
命令情報を選択するよう構成されたプログラム順序並替回路と、このプログラム順序並替回路により選択された命令情報に応答する演算部とを含むプロセッサオブジェクトと、
からなるプログラマブルロジックデバイス。 - プロセッサオブジェクトは、更に、データ情報を選択するよう構成されたアドレス発生回路を含む請求項1記載のプログラマブルロジックデバイス。
- 演算部は更に、アドレス発生回路により選択されたデータ情報に応答する請求項2記載のプログラマブルロジックデバイス。
- 前記命令情報を記憶するよう構成されたメモリ回路を更に含む請求項1記載のプログラマブルロジックデバイス。
- メモリ回路はプログラマブルロジック回路の一部である請求項4記載のプログラマブルロジックデバイス。
- 前記データ情報を記憶するよう構成されたメモリ回路を更に含む請求項2記載のプログラマブルロジックデバイス。
- メモリ回路はプログラマブルロジック回路の一部である請求項6記載のプログラマブルロジックデバイス。
- アドレス発生回路は、演算部による更なるデータ情報に関する指定アドレスを発生するよう更に構成された請求項2記載のプログラマブルロジックデバイス。
- アドレス発生器はレジスタファイル回路からなる請求項2記載のプログラマブルロジックデバイス。
- プログラム順序並替回路は、命令情報の連続した複数の選択を自動的に行うよう更に構成された請求項1記載のプログラマブルロジックデバイス。
- アドレス発生回路は、データ情報の複数の同時選択を行うよう更に構成された請求項2記載のプログラマブルロジックデバイス。
- プロセッサオブジェクトは、データ情報を選択するよう構成されたレジスタファイル回路を含む請求項1記載のプログラマブルロジックデバイス。
- 演算部は、MAC回路、ALU回路、バレルシフター回路、ガロイスフィールド回路よりなる群から選択される請求項1記載のプログラマブルロジックデバイス。
- 演算部は、MAC回路、ALU回路、バレルシフター回路、ガロイスフィールド回路よりなる群から選択された回路の多数の例を含む請求項1記載のプログラマブルロジックデバイス。
- 相対的な命令情報選択を絶対的な命令情報アドレスへと変換するよう構成された回路を更に含む請求項1記載のプログラマブルロジックデバイス。
- 相対的なデータ情報選択を絶対的なデータ情報アドレスへと変換するよう構成された回路を更に含む請求項2記載のプログラマブルロジックデバイス。
- 処理回路と、
前記処理回路に結合したメモリと、
前記処理回路とメモリとに結合した請求項1記載のプログラマブルロジックデバイスと、
からなるデジタル処理システム。 - 請求項1記載のプログラマブルロジックデバイスが搭載されたプリント回路基板。
- プリント回路基板上に搭載され、プログラマブルロジックデバイスと結合したメモリをさらに含む請求項18記載のプリント回路基板。
- プリント回路基板上に搭載され、プログラマブルロジックデバイスと結合した処理回路をさらに含む請求項18記載のプリント回路基板。
- プロセッサオブジェクトを含むプログラマブルロジックデバイスと、
プログラマブルロジックデバイスの外側に在り、信号をプログラマブルロジックデバイスに印加してこのデバイスによりプログラマブルロジックデバイス上の位置を相対事項として参照する相対アドレス情報を含む信号を処理するよう構成された回路とからなり、
前記プログラマブルロジックデバイスはさらに、前記相対アドレス情報を前記プログラマブルロジックデバイス上の実際の位置を同定する絶対アドレス情報へ変換する変換回路を更に含むシステム。 - 前記信号は、前記相対アドレス情報に関連付けされたID情報を更に含み、前記変換回路は前記ID情報に応答する請求項21記載のシステム。
- 前記変換回路は、
アドレスオフセット値を生成するよう構成されたアドレスオフセット発生回路と、
前記相対アドレス情報と前記アドレスオフセット値とを組み合わせ前記絶対アドレス情報を生成するよう構成された組合回路とからなる請求項21記載のシステム。 - 前記組合回路は、前記アドレスオフセット値を前記相対アドレス情報に加え前記絶対アドレス情報を生成するよう構成された加算器回路からなる請求項23記載のシステム。
- 前記変換回路は、前記絶対アドレス情報の有効性をチェックするよう更に構成される請求項21記載のシステム。
- 前記変換回路は、前記絶対アドレス情報を許容アドレス情報と比較するよう構成された比較回路からなる請求項25記載のシステム。
- プログラマブルロジック回路と、メモリ回路とプログラマブル相互接続回路素子とを含むソフトロジック部と、
このソフトロジック部に接続されプロセッサオブジェクトを含むハードロジック部とからなるプログラマブルロジックデバイス。 - プログラム順序並替回路と、
アドレス発生回路と、
演算部回路とからなる請求項27記載のデバイス。 - プログラム順序並替回路は、メモリ回路から命令を検索して演算部回路の演算を少なくとも部分的に制御するよう構成された請求項28記載のデバイス。
- アドレス発生回路は、演算部回路が演算をするためのデータをメモリ回路から検索するよう構成された請求項28記載のデバイス。
- アドレス発生回路は、メモリ回路の位置を同定し、演算部回路によるデータ出力を受けるよう構成された請求項28記載のデバイス。
- アドレス発生回路はマルチポートレジスタファイル回路からなる請求項28記載のデバイス。
- ソフトロジック部は、プログラム順序並替回路の動作を少なくとも部分的に制御する信号を提供するよう構成された請求項28記載のデバイス。
- 前記信号は、プログラム順序並替回路により使用される命令アドレスを指定する請求項33記載のデバイス。
- プログラム順序並替回路は、メモリ回路内の位置の1連の同定を生成することにより命令アドレスに応答するよう構成された請求項34記載のデバイス。
- ソフトロジック部は、アドレス発生回路の動作を少なくとも部分的に制御する信号を提供するよう構成された請求項28記載のデバイス。
- 前記信号は、アドレス発生回路により使用されるデータアドレスを指定する請求項36記載のデバイス。
- メモリ回路内のデータアドレスを絶対的なアドレスへと変換するよう構成されたインターフェース回路を更に有する請求項37記載のデバイス。
- アドレス発生回路は、メモリ回路内の複数の位置を並列に同定するよう構成された請求項28記載のデバイス。
- 演算部回路は、MAC回路、ALU回路、バレルシフター回路、ガロイスフィールド回路よりなる群から選択される請求項28記載のデバイス。
- 演算部回路は、MAC回路、ALU回路、バレルシフター回路、ガロイスフィールド回路よりなる群から選択された回路の多数の例からなる請求項28記載のデバイス。
- 演算部は、VLIW命令を実行するよう構成された請求項28記載のデバイス。
- 演算部は、少なくとも1つのDSP動作を行うよう構成された請求項28記載のデバイス。
- プログラマブルロジック回路と、
前記プログラマブルロジック回路と信号情報を交換するよう構成された少なくとも部分的にハード配線化された高機能性機能ユニットとからなるプログラマブルロジックデバイス。 - 前記機能ユニットは、複数の機能から選択され得る機能を実行するよう構成された請求項44記載のプログラマブルロジックデバイス。
- 前記機能ユニットは、前記複数の機能から実行される機能を選択するようにプログラム可能である請求項45記載のプログラマブルロジックデバイス。
- 前記機能ユニットは、前記複数の機能から実行される機能を選択するように制御信号によりダイナミックに制御され得る請求項45記載のプログラマブルロジックデバイス。
- プログラマブルロジック回路は、制御信号を供給するよう構成される請求項47記載のプログラマブルロジックデバイス。
- 前記機能ユニットは、プログラマブル選択或いはダイナミック制御信号選択に基づき、前記複数の機能から実行される機能を選択するようにプログラム可能である請求項45記載のプログラマブルロジックデバイス。
- プログラマブルロジック回路は、制御信号を供給するよう構成される請求項49記載のプログラマブルロジックデバイス。
- 前記機能ユニットは、MAC回路、ALU回路、バレルシフター回路、ガロイスフィールド回路よりなる群から選択される請求項44記載のプログラマブルロジックデバイス。
- プログラマブルロジック回路は、メモリ回路を含む請求項44記載のプログラマブルロジックデバイス。
- 前記メモリ回路は前記機能ユニットにより処理されるデータを記憶するよう構成される請求項52記載のプログラマブルロジックデバイス。
- 前記メモリ回路は前記機能ユニットにより少なくとも1部が実行されるプログラム命令を記憶するよう構成される請求項52記載のプログラマブルロジックデバイス。
- プログラマブルロジック回路は、前記機能ユニットに提供するため、メモリ回路からデータを選択するよう構成される請求項53記載のプログラマブルロジックデバイス。
- プログラマブルロジック回路は、前記機能ユニットにより実行するためのプログラム命令をメモリ回路から選択するよう構成される請求項54記載のプログラマブルロジックデバイス。
- プログラマブルロジック回路は、メモリ回路から選択された命令を使用し、機能ユニットを動作させるためのデータの選択を少なくとも部分的に制御するよう更に構成される請求項56記載のプログラマブルロジックデバイス。
- プログラマブルロジック回路は、メモリ回路から選択された命令を使用し、機能ユニットにより実行される機能を少なくとも部分的に制御するよう更に構成される請求項56記載のプログラマブルロジックデバイス。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US23717000P | 2000-10-02 | 2000-10-02 | |
PCT/IB2001/002800 WO2002033504A2 (en) | 2000-10-02 | 2001-10-02 | Programmable logic integrated circuit devices including dedicated processor components |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007238316A Division JP2008042936A (ja) | 2000-10-02 | 2007-09-13 | 専用プロセッサ装置を含むプログラマブルロジック集積回路装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004512716A true JP2004512716A (ja) | 2004-04-22 |
Family
ID=22892611
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002536623A Pending JP2004512716A (ja) | 2000-10-02 | 2001-10-02 | 専用プロセッサ装置を含むプログラマブルロジック集積回路装置 |
JP2007238316A Withdrawn JP2008042936A (ja) | 2000-10-02 | 2007-09-13 | 専用プロセッサ装置を含むプログラマブルロジック集積回路装置 |
JP2011191627A Expired - Fee Related JP5496972B2 (ja) | 2000-10-02 | 2011-09-02 | 専用プロセッサ装置を含むプログラマブルロジック集積回路装置 |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007238316A Withdrawn JP2008042936A (ja) | 2000-10-02 | 2007-09-13 | 専用プロセッサ装置を含むプログラマブルロジック集積回路装置 |
JP2011191627A Expired - Fee Related JP5496972B2 (ja) | 2000-10-02 | 2011-09-02 | 専用プロセッサ装置を含むプログラマブルロジック集積回路装置 |
Country Status (4)
Country | Link |
---|---|
US (2) | US20020089348A1 (ja) |
EP (1) | EP1417590A2 (ja) |
JP (3) | JP2004512716A (ja) |
WO (1) | WO2002033504A2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014503083A (ja) * | 2010-05-28 | 2014-02-06 | 株式会社アドバンテスト | 並列処理が可変であり、ファームウェアのアップグレードが可能な、柔軟な記憶装置インタフェース試験器 |
Families Citing this family (126)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6556044B2 (en) | 2001-09-18 | 2003-04-29 | Altera Corporation | Programmable logic device including multipliers and configurations thereof to reduce resource utilization |
US20020088822A1 (en) * | 1995-08-14 | 2002-07-11 | Dresser, Inc. | Multiproduct fuel dispenser using a common meter |
US6628140B2 (en) * | 2000-09-18 | 2003-09-30 | Altera Corporation | Programmable logic devices with function-specific blocks |
US6836839B2 (en) | 2001-03-22 | 2004-12-28 | Quicksilver Technology, Inc. | Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements |
US7653710B2 (en) | 2002-06-25 | 2010-01-26 | Qst Holdings, Llc. | Hardware task manager |
US7752419B1 (en) | 2001-03-22 | 2010-07-06 | Qst Holdings, Llc | Method and system for managing hardware resources to implement system functions using an adaptive computing architecture |
US7962716B2 (en) | 2001-03-22 | 2011-06-14 | Qst Holdings, Inc. | Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements |
US20040133745A1 (en) | 2002-10-28 | 2004-07-08 | Quicksilver Technology, Inc. | Adaptable datapath for a digital processing system |
US6605962B2 (en) * | 2001-05-06 | 2003-08-12 | Altera Corporation | PLD architecture for flexible placement of IP function blocks |
US6577678B2 (en) | 2001-05-08 | 2003-06-10 | Quicksilver Technology | Method and system for reconfigurable channel coding |
US6874079B2 (en) * | 2001-07-25 | 2005-03-29 | Quicksilver Technology | Adaptive computing engine with dataflow graph based sequencing in reconfigurable mini-matrices of composite functional blocks |
US6586966B1 (en) | 2001-09-13 | 2003-07-01 | Altera Corporation | Data latch with low-power bypass mode |
US6566906B1 (en) | 2001-09-18 | 2003-05-20 | Altera Corporation | Specialized programmable logic region with low-power mode |
US6937062B1 (en) | 2001-09-18 | 2005-08-30 | Altera Corporation | Specialized programmable logic region with low-power mode |
US7046635B2 (en) | 2001-11-28 | 2006-05-16 | Quicksilver Technology, Inc. | System for authorizing functionality in adaptable hardware devices |
US8412915B2 (en) | 2001-11-30 | 2013-04-02 | Altera Corporation | Apparatus, system and method for configuration of adaptive integrated circuitry having heterogeneous computational elements |
US6986021B2 (en) | 2001-11-30 | 2006-01-10 | Quick Silver Technology, Inc. | Apparatus, method, system and executable module for configuration and operation of adaptive integrated circuitry having fixed, application specific computational elements |
US7215701B2 (en) | 2001-12-12 | 2007-05-08 | Sharad Sambhwani | Low I/O bandwidth method and system for implementing detection and identification of scrambling codes |
US7403981B2 (en) | 2002-01-04 | 2008-07-22 | Quicksilver Technology, Inc. | Apparatus and method for adaptive multimedia reception and transmission in communication environments |
US6781408B1 (en) | 2002-04-24 | 2004-08-24 | Altera Corporation | Programmable logic device with routing channels |
US7142011B1 (en) | 2002-04-24 | 2006-11-28 | Altera Corporation | Programmable logic device with routing channels |
US7660984B1 (en) | 2003-05-13 | 2010-02-09 | Quicksilver Technology | Method and system for achieving individualized protected space in an operating system |
US7328414B1 (en) | 2003-05-13 | 2008-02-05 | Qst Holdings, Llc | Method and system for creating and programming an adaptive computing engine |
US6844757B2 (en) | 2002-06-28 | 2005-01-18 | Lattice Semiconductor Corp. | Converting bits to vectors in a programmable logic device |
US7185177B2 (en) * | 2002-08-26 | 2007-02-27 | Gerald George Pechanek | Methods and apparatus for meta-architecture defined programmable instruction fetch functions supporting assembled variable length instruction processors |
US8108656B2 (en) | 2002-08-29 | 2012-01-31 | Qst Holdings, Llc | Task definition for specifying resource requirements |
US7937591B1 (en) | 2002-10-25 | 2011-05-03 | Qst Holdings, Llc | Method and system for providing a device which can be adapted on an ongoing basis |
US8276135B2 (en) | 2002-11-07 | 2012-09-25 | Qst Holdings Llc | Profiling of software and circuit designs utilizing data operation analyses |
US7225301B2 (en) | 2002-11-22 | 2007-05-29 | Quicksilver Technologies | External memory controller node |
US7395294B1 (en) * | 2003-01-10 | 2008-07-01 | Altera Corporation | Arithmetic logic unit |
US6911840B1 (en) * | 2003-06-06 | 2005-06-28 | Xilinx, Inc. | Integrated circuit with overclocked dedicated logic circuitry |
US7082592B1 (en) | 2003-06-16 | 2006-07-25 | Altera Corporation | Method for programming programmable logic device having specialized functional blocks |
US8589849B1 (en) | 2003-07-11 | 2013-11-19 | Altera Corporation | Method and apparatus for implementing soft constraints in tools used for designing programmable logic devices |
US7194720B1 (en) * | 2003-07-11 | 2007-03-20 | Altera Corporation | Method and apparatus for implementing soft constraints in tools used for designing systems on programmable logic devices |
US7440964B2 (en) * | 2003-08-29 | 2008-10-21 | Vortaloptics, Inc. | Method, device and software for querying and presenting search results |
JP4242741B2 (ja) * | 2003-09-19 | 2009-03-25 | パナソニック株式会社 | デバッグ用信号処理回路 |
US7287051B1 (en) | 2003-10-03 | 2007-10-23 | Altera Corporation | Multi-functional digital signal processing circuitry |
US7698358B1 (en) * | 2003-12-24 | 2010-04-13 | Altera Corporation | Programmable logic device with specialized functional block |
US7483420B1 (en) * | 2004-03-08 | 2009-01-27 | Altera Corporation | DSP circuitry for supporting multi-channel applications by selectively shifting data through registers |
US7949856B2 (en) * | 2004-03-31 | 2011-05-24 | Icera Inc. | Method and apparatus for separate control processing and data path processing in a dual path processor with a shared load/store unit |
US9047094B2 (en) * | 2004-03-31 | 2015-06-02 | Icera Inc. | Apparatus and method for separate asymmetric control processing and data path processing in a dual path processor |
US8484441B2 (en) * | 2004-03-31 | 2013-07-09 | Icera Inc. | Apparatus and method for separate asymmetric control processing and data path processing in a configurable dual path processor that supports instructions having different bit widths |
US8856201B1 (en) | 2004-11-10 | 2014-10-07 | Altera Corporation | Mixed-mode multiplier using hard and soft logic circuitry |
US7434192B2 (en) * | 2004-12-13 | 2008-10-07 | Altera Corporation | Techniques for optimizing design of a hard intellectual property block for data transmission |
US8713286B2 (en) | 2005-04-26 | 2014-04-29 | Qualcomm Incorporated | Register files for a digital signal processor operating in an interleaved multi-threaded environment |
US20070011432A1 (en) * | 2005-07-06 | 2007-01-11 | Advanced Micro Devices, Inc. | Address generation unit with operand recycling |
US7849466B2 (en) * | 2005-07-12 | 2010-12-07 | Qualcomm Incorporated | Controlling execution mode of program threads by applying a mask to a control register in a multi-threaded processor |
US7230451B1 (en) | 2005-08-22 | 2007-06-12 | Altera Corporation | Programmable logic device with routing channels |
US7590676B1 (en) | 2005-09-27 | 2009-09-15 | Altera Corporation | Programmable logic device with specialized multiplier blocks |
US8620980B1 (en) | 2005-09-27 | 2013-12-31 | Altera Corporation | Programmable device with specialized multiplier blocks |
US8266199B2 (en) | 2006-02-09 | 2012-09-11 | Altera Corporation | Specialized processing block for programmable logic device |
US8041759B1 (en) | 2006-02-09 | 2011-10-18 | Altera Corporation | Specialized processing block for programmable logic device |
US8266198B2 (en) | 2006-02-09 | 2012-09-11 | Altera Corporation | Specialized processing block for programmable logic device |
US7368942B1 (en) | 2006-02-09 | 2008-05-06 | Altera Corporation | Dedicated resource interconnects |
US8301681B1 (en) | 2006-02-09 | 2012-10-30 | Altera Corporation | Specialized processing block for programmable logic device |
US7836117B1 (en) | 2006-04-07 | 2010-11-16 | Altera Corporation | Specialized processing block for programmable logic device |
US7822799B1 (en) | 2006-06-26 | 2010-10-26 | Altera Corporation | Adder-rounder circuitry for specialized processing block in programmable logic device |
US8386550B1 (en) | 2006-09-20 | 2013-02-26 | Altera Corporation | Method for configuring a finite impulse response filter in a programmable logic device |
US8386553B1 (en) | 2006-12-05 | 2013-02-26 | Altera Corporation | Large multiplier for programmable logic device |
US7930336B2 (en) | 2006-12-05 | 2011-04-19 | Altera Corporation | Large multiplier for programmable logic device |
US7814137B1 (en) | 2007-01-09 | 2010-10-12 | Altera Corporation | Combined interpolation and decimation filter for programmable logic device |
US8650231B1 (en) | 2007-01-22 | 2014-02-11 | Altera Corporation | Configuring floating point operations in a programmable device |
US7865541B1 (en) | 2007-01-22 | 2011-01-04 | Altera Corporation | Configuring floating point operations in a programmable logic device |
US8645450B1 (en) | 2007-03-02 | 2014-02-04 | Altera Corporation | Multiplier-accumulator circuitry and methods |
US8135975B2 (en) * | 2007-03-09 | 2012-03-13 | Analog Devices, Inc. | Software programmable timing architecture |
US8831140B2 (en) * | 2007-03-16 | 2014-09-09 | Altera Corporation | Protocol-agnostic automatic rate negotiation for high-speed serial interface in a programmable logic device |
WO2008120566A1 (ja) * | 2007-03-29 | 2008-10-09 | Nec Corporation | エンジン・プロセッサ連携システム、及び連携方法 |
US7949699B1 (en) | 2007-08-30 | 2011-05-24 | Altera Corporation | Implementation of decimation filter in integrated circuit device using ram-based data storage |
US8959137B1 (en) | 2008-02-20 | 2015-02-17 | Altera Corporation | Implementing large multipliers in a programmable integrated circuit device |
US8244789B1 (en) | 2008-03-14 | 2012-08-14 | Altera Corporation | Normalization of floating point operations in a programmable integrated circuit device |
US8626815B1 (en) | 2008-07-14 | 2014-01-07 | Altera Corporation | Configuring a programmable integrated circuit device to perform matrix multiplication |
US8255448B1 (en) | 2008-10-02 | 2012-08-28 | Altera Corporation | Implementing division in a programmable integrated circuit device |
US8307023B1 (en) | 2008-10-10 | 2012-11-06 | Altera Corporation | DSP block for implementing large multiplier on a programmable integrated circuit device |
US8115513B2 (en) * | 2009-03-02 | 2012-02-14 | Mitsubishi Electric Research Laboratories, Inc. | Circuits for soft logical functions |
US8468192B1 (en) | 2009-03-03 | 2013-06-18 | Altera Corporation | Implementing multipliers in a programmable integrated circuit device |
US8645449B1 (en) | 2009-03-03 | 2014-02-04 | Altera Corporation | Combined floating point adder and subtractor |
US8706790B1 (en) | 2009-03-03 | 2014-04-22 | Altera Corporation | Implementing mixed-precision floating-point operations in a programmable integrated circuit device |
US8886696B1 (en) | 2009-03-03 | 2014-11-11 | Altera Corporation | Digital signal processing circuitry with redundancy and ability to support larger multipliers |
US8549055B2 (en) | 2009-03-03 | 2013-10-01 | Altera Corporation | Modular digital signal processing circuitry with optionally usable, dedicated connections between modules of the circuitry |
US8805916B2 (en) | 2009-03-03 | 2014-08-12 | Altera Corporation | Digital signal processing circuitry with redundancy and bidirectional data paths |
US8650236B1 (en) | 2009-08-04 | 2014-02-11 | Altera Corporation | High-rate interpolation or decimation filter in integrated circuit device |
US8396914B1 (en) | 2009-09-11 | 2013-03-12 | Altera Corporation | Matrix decomposition in an integrated circuit device |
US8412756B1 (en) | 2009-09-11 | 2013-04-02 | Altera Corporation | Multi-operand floating point operations in a programmable integrated circuit device |
US8892620B2 (en) | 2009-10-07 | 2014-11-18 | Qsigma, Inc. | Computer for Amdahl-compliant algorithms like matrix inversion |
WO2011091323A1 (en) | 2010-01-21 | 2011-07-28 | Qst Holdings, Llc | A method and apparatus for a general-purpose, multiple-core system for implementing stream-based computations |
US8539016B1 (en) | 2010-02-09 | 2013-09-17 | Altera Corporation | QR decomposition in an integrated circuit device |
US7948267B1 (en) | 2010-02-09 | 2011-05-24 | Altera Corporation | Efficient rounding circuits and methods in configurable integrated circuit devices |
US8477831B2 (en) | 2010-02-17 | 2013-07-02 | Altera Corporation | Multi-protocol multiple-data-rate auto-speed negotiation architecture for a device |
US8601044B2 (en) | 2010-03-02 | 2013-12-03 | Altera Corporation | Discrete Fourier Transform in an integrated circuit device |
US8458243B1 (en) | 2010-03-03 | 2013-06-04 | Altera Corporation | Digital signal processing circuit blocks with support for systolic finite-impulse-response digital filtering |
US8484265B1 (en) | 2010-03-04 | 2013-07-09 | Altera Corporation | Angular range reduction in an integrated circuit device |
US8510354B1 (en) | 2010-03-12 | 2013-08-13 | Altera Corporation | Calculation of trigonometric functions in an integrated circuit device |
US8539014B2 (en) | 2010-03-25 | 2013-09-17 | Altera Corporation | Solving linear matrices in an integrated circuit device |
US8862650B2 (en) | 2010-06-25 | 2014-10-14 | Altera Corporation | Calculation of trigonometric functions in an integrated circuit device |
US8589463B2 (en) | 2010-06-25 | 2013-11-19 | Altera Corporation | Calculation of trigonometric functions in an integrated circuit device |
US8577951B1 (en) | 2010-08-19 | 2013-11-05 | Altera Corporation | Matrix operations in an integrated circuit device |
US8789065B2 (en) | 2012-06-08 | 2014-07-22 | Throughputer, Inc. | System and method for input data load adaptive parallel processing |
US8645451B2 (en) | 2011-03-10 | 2014-02-04 | Altera Corporation | Double-clocked specialized processing block in an integrated circuit device |
US9600278B1 (en) | 2011-05-09 | 2017-03-21 | Altera Corporation | Programmable device using fixed and configurable logic to implement recursive trees |
US9448847B2 (en) | 2011-07-15 | 2016-09-20 | Throughputer, Inc. | Concurrent program execution optimization |
US8812576B1 (en) | 2011-09-12 | 2014-08-19 | Altera Corporation | QR decomposition in an integrated circuit device |
US8949298B1 (en) | 2011-09-16 | 2015-02-03 | Altera Corporation | Computing floating-point polynomials in an integrated circuit device |
US9053045B1 (en) | 2011-09-16 | 2015-06-09 | Altera Corporation | Computing floating-point polynomials in an integrated circuit device |
US8762443B1 (en) | 2011-11-15 | 2014-06-24 | Altera Corporation | Matrix operations in an integrated circuit device |
US8543634B1 (en) | 2012-03-30 | 2013-09-24 | Altera Corporation | Specialized processing block for programmable integrated circuit device |
US9098332B1 (en) | 2012-06-01 | 2015-08-04 | Altera Corporation | Specialized processing block with fixed- and floating-point structures |
US8996600B1 (en) | 2012-08-03 | 2015-03-31 | Altera Corporation | Specialized processing block for implementing floating-point multiplier with subnormal operation support |
US9553590B1 (en) | 2012-10-29 | 2017-01-24 | Altera Corporation | Configuring programmable integrated circuit device resources as processing elements |
US9207909B1 (en) | 2012-11-26 | 2015-12-08 | Altera Corporation | Polynomial calculations optimized for programmable integrated circuit device structures |
US9189200B1 (en) | 2013-03-14 | 2015-11-17 | Altera Corporation | Multiple-precision processing block in a programmable integrated circuit device |
US9348795B1 (en) | 2013-07-03 | 2016-05-24 | Altera Corporation | Programmable device using fixed and configurable logic to implement floating-point rounding |
US9379687B1 (en) | 2014-01-14 | 2016-06-28 | Altera Corporation | Pipelined systolic finite impulse response filter |
US10452392B1 (en) | 2015-01-20 | 2019-10-22 | Altera Corporation | Configuring programmable integrated circuit device resources as processors |
TWI514148B (zh) * | 2015-03-16 | 2015-12-21 | Univ Nat Sun Yat Sen | 快取記憶體 |
US9684488B2 (en) | 2015-03-26 | 2017-06-20 | Altera Corporation | Combined adder and pre-adder for high-radix multiplier circuit |
US10606651B2 (en) * | 2015-04-17 | 2020-03-31 | Microsoft Technology Licensing, Llc | Free form expression accelerator with thread length-based thread assignment to clustered soft processor cores that share a functional circuit |
US10540588B2 (en) | 2015-06-29 | 2020-01-21 | Microsoft Technology Licensing, Llc | Deep neural network processing on hardware accelerators with stacked memory |
US10110233B2 (en) * | 2016-06-23 | 2018-10-23 | Altera Corporation | Methods for specifying processor architectures for programmable integrated circuits |
US10509757B2 (en) * | 2016-09-22 | 2019-12-17 | Altera Corporation | Integrated circuits having expandable processor memory |
US10942706B2 (en) | 2017-05-05 | 2021-03-09 | Intel Corporation | Implementation of floating-point trigonometric functions in an integrated circuit device |
US10891238B1 (en) | 2019-06-28 | 2021-01-12 | International Business Machines Corporation | Dynamically joining and splitting dynamic address translation (DAT) tables based on operational context |
US11176056B2 (en) | 2019-06-28 | 2021-11-16 | International Business Machines Corporation | Private space control within a common address space |
US10970224B2 (en) | 2019-06-28 | 2021-04-06 | International Business Machines Corporation | Operational context subspaces |
US11074195B2 (en) | 2019-06-28 | 2021-07-27 | International Business Machines Corporation | Access to dynamic address translation across multiple spaces for operational context subspaces |
US11861190B2 (en) * | 2021-04-08 | 2024-01-02 | Marvell Asia Pte, Ltd. | Memory allocation and reallocation for memory access instructions and data using intermediate processor |
CN116319665A (zh) * | 2023-03-03 | 2023-06-23 | 上海繁易信息科技股份有限公司 | 基于动态定位plc标签地址的通信方法、装置、设备及介质 |
Family Cites Families (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3473160A (en) * | 1966-10-10 | 1969-10-14 | Stanford Research Inst | Electronically controlled microelectronic cellular logic array |
US6556044B2 (en) * | 2001-09-18 | 2003-04-29 | Altera Corporation | Programmable logic device including multipliers and configurations thereof to reduce resource utilization |
US4871930A (en) * | 1988-05-05 | 1989-10-03 | Altera Corporation | Programmable logic device with array blocks connected via programmable interconnect |
JPH02115957A (ja) * | 1988-10-26 | 1990-04-27 | Hitachi Ltd | 相対アドレスアクセス方式 |
JP2512119B2 (ja) * | 1988-12-09 | 1996-07-03 | 松下電器産業株式会社 | マイクロプロセッサ |
US5128559A (en) * | 1989-09-29 | 1992-07-07 | Sgs-Thomson Microelectronics, Inc. | Logic block for programmable logic devices |
US5122685A (en) * | 1991-03-06 | 1992-06-16 | Quicklogic Corporation | Programmable application specific integrated circuit and logic cell therefor |
US5371422A (en) * | 1991-09-03 | 1994-12-06 | Altera Corporation | Programmable logic device having multiplexers and demultiplexers randomly connected to global conductors for interconnections between logic elements |
CA2069711C (en) * | 1991-09-18 | 1999-11-30 | Donald Edward Carmon | Multi-media signal processor computer system |
US5483178A (en) * | 1993-03-29 | 1996-01-09 | Altera Corporation | Programmable logic device with logic block outputs coupled to adjacent logic block output multiplexers |
JPH07175784A (ja) * | 1993-12-20 | 1995-07-14 | Rohm Co Ltd | プロセッサー |
GB9403030D0 (en) * | 1994-02-17 | 1994-04-06 | Austin Kenneth | Re-configurable application specific device |
US5689195A (en) * | 1995-05-17 | 1997-11-18 | Altera Corporation | Programmable logic array integrated circuit devices |
US6052773A (en) * | 1995-02-10 | 2000-04-18 | Massachusetts Institute Of Technology | DPGA-coupled microprocessors |
JP3351452B2 (ja) * | 1995-03-08 | 2002-11-25 | 日本電信電話株式会社 | プログラマブルゲートアレイ |
WO1996034346A1 (en) * | 1995-04-28 | 1996-10-31 | Xilinx, Inc. | Microprocessor with distributed registers accessible by programmable logic device |
US5581696A (en) * | 1995-05-09 | 1996-12-03 | Parasoft Corporation | Method using a computer for automatically instrumenting a computer program for dynamic debugging |
US5754459A (en) * | 1996-02-08 | 1998-05-19 | Xilinx, Inc. | Multiplier circuit design for a programmable logic device |
US6346824B1 (en) * | 1996-04-09 | 2002-02-12 | Xilinx, Inc. | Dedicated function fabric for use in field programmable gate arrays |
GB9607528D0 (en) * | 1996-04-11 | 1996-06-12 | Int Computers Ltd | Integrated circuit processor |
US5894565A (en) * | 1996-05-20 | 1999-04-13 | Atmel Corporation | Field programmable gate array with distributed RAM and increased cell utilization |
GB9611994D0 (en) * | 1996-06-07 | 1996-08-07 | Systolix Ltd | A field programmable processor |
US5825202A (en) * | 1996-09-26 | 1998-10-20 | Xilinx, Inc. | Integrated circuit with field programmable and application specific logic areas |
US6150837A (en) * | 1997-02-28 | 2000-11-21 | Actel Corporation | Enhanced field programmable gate array |
US5874834A (en) * | 1997-03-04 | 1999-02-23 | Xilinx, Inc. | Field programmable gate array with distributed gate-array functionality |
US5970254A (en) * | 1997-06-27 | 1999-10-19 | Cooke; Laurence H. | Integrated processor and programmable data path chip for reconfigurable computing |
US6069487A (en) * | 1997-10-14 | 2000-05-30 | Altera Corporation | Programmable logic device circuitry for improving multiplier speed and/or efficiency |
US5915123A (en) * | 1997-10-31 | 1999-06-22 | Silicon Spice | Method and apparatus for controlling configuration memory contexts of processing elements in a network of multiple context processing elements |
US6075935A (en) * | 1997-12-01 | 2000-06-13 | Improv Systems, Inc. | Method of generating application specific integrated circuits using a programmable hardware architecture |
JP3611714B2 (ja) * | 1998-04-08 | 2005-01-19 | 株式会社ルネサステクノロジ | プロセッサ |
US6467009B1 (en) * | 1998-10-14 | 2002-10-15 | Triscend Corporation | Configurable processor system unit |
US6215326B1 (en) * | 1998-11-18 | 2001-04-10 | Altera Corporation | Programmable logic device architecture with super-regions having logic regions and a memory region |
WO2000031652A2 (en) * | 1998-11-20 | 2000-06-02 | Altera Corporation | Reconfigurable programmable logic device computer system |
US6407576B1 (en) * | 1999-03-04 | 2002-06-18 | Altera Corporation | Interconnection and input/output resources for programmable logic integrated circuit devices |
US6211697B1 (en) * | 1999-05-25 | 2001-04-03 | Actel | Integrated circuit that includes a field-programmable gate array and a hard gate array having the same underlying structure |
US6519753B1 (en) * | 1999-11-30 | 2003-02-11 | Quicklogic Corporation | Programmable device with an embedded portion for receiving a standard circuit design |
US6588008B1 (en) * | 2000-04-11 | 2003-07-01 | International Business Machines Corporation | Assembler tool for processor-coprocessor computer systems |
US6362650B1 (en) * | 2000-05-18 | 2002-03-26 | Xilinx, Inc. | Method and apparatus for incorporating a multiplier into an FPGA |
US6745369B1 (en) * | 2000-06-12 | 2004-06-01 | Altera Corporation | Bus architecture for system on a chip |
US6803785B1 (en) * | 2000-06-12 | 2004-10-12 | Altera Corporation | I/O circuitry shared between processor and programmable logic portions of an integrated circuit |
US6538470B1 (en) * | 2000-09-18 | 2003-03-25 | Altera Corporation | Devices and methods with programmable logic and digital signal processing regions |
US6628140B2 (en) * | 2000-09-18 | 2003-09-30 | Altera Corporation | Programmable logic devices with function-specific blocks |
-
2001
- 2001-10-02 JP JP2002536623A patent/JP2004512716A/ja active Pending
- 2001-10-02 EP EP01987904A patent/EP1417590A2/en not_active Withdrawn
- 2001-10-02 WO PCT/IB2001/002800 patent/WO2002033504A2/en active Application Filing
- 2001-10-02 US US09/969,977 patent/US20020089348A1/en not_active Abandoned
-
2005
- 2005-06-17 US US11/155,241 patent/US20050257030A1/en not_active Abandoned
-
2007
- 2007-09-13 JP JP2007238316A patent/JP2008042936A/ja not_active Withdrawn
-
2011
- 2011-09-02 JP JP2011191627A patent/JP5496972B2/ja not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014503083A (ja) * | 2010-05-28 | 2014-02-06 | 株式会社アドバンテスト | 並列処理が可変であり、ファームウェアのアップグレードが可能な、柔軟な記憶装置インタフェース試験器 |
Also Published As
Publication number | Publication date |
---|---|
JP2012023750A (ja) | 2012-02-02 |
JP5496972B2 (ja) | 2014-05-21 |
US20050257030A1 (en) | 2005-11-17 |
WO2002033504A2 (en) | 2002-04-25 |
EP1417590A2 (en) | 2004-05-12 |
US20020089348A1 (en) | 2002-07-11 |
WO2002033504A3 (en) | 2004-02-26 |
WO2002033504A8 (en) | 2002-09-06 |
JP2008042936A (ja) | 2008-02-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5496972B2 (ja) | 専用プロセッサ装置を含むプログラマブルロジック集積回路装置 | |
EP0102242B1 (en) | Data processing apparatus | |
US6023742A (en) | Reconfigurable computing architecture for providing pipelined data paths | |
US8429385B2 (en) | Device including a field having function cells and information providing cells controlled by the function cells | |
US8686549B2 (en) | Reconfigurable elements | |
EP0113178B1 (en) | Microcomputer | |
US6839831B2 (en) | Data processing apparatus with register file bypass | |
US20060015701A1 (en) | Arithmetic node including general digital signal processing functions for an adaptive computing machine | |
US9240220B2 (en) | Stacked-die multi-processor | |
EP1535189B1 (en) | Programmable pipeline fabric utilizing partially global configuration buses | |
KR100465388B1 (ko) | Risc 구조의 8비트 마이크로 제어기 | |
GB2092786A (en) | Stored-program controlled machine | |
US8607029B2 (en) | Dynamic reconfigurable circuit with a plurality of processing elements, data network, configuration memory, and immediate value network | |
JP2005508554A (ja) | データ操作を利用したデータの計算と処理方法、及び、その装置 | |
US20110125984A1 (en) | Microprocessor | |
US8890215B2 (en) | Reconfigurable elements | |
US20050235173A1 (en) | Reconfigurable integrated circuit | |
WO1998055932A2 (en) | Processor interfacing to memory mapped computing engine | |
US9081901B2 (en) | Means of control for reconfigurable computers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040916 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060920 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060929 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20061207 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20061214 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20070516 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20071026 |