(57)【特許請求の範囲】
【請求項１】
プログラム命令に基づいてユーザデータを処理する少なくとも１つのマイクロプロセッサと、
書込ラインおよび読込ラインによって前記少なくとも１つのマイクロプロセッサと結合された少なくとも１つのメモリアレイと、
前記書込ラインおよび前記読込ラインに結合された少なくとも１つの再構成可能なプロセッサと、
を含むコンピュータシステムであって、
前記少なくとも１つの再構成可能なプロセッサは、
少なくとも１つのアルゴリズムをオペランドに対して実行するユーザアレイと、
前記書込ラインおよび前記ユーザアレイに結合し、前記書込ライン上の入力データを記憶する入力記憶部と、
前記ユーザアレイおよび前記読込ラインに結合し、前記ユーザアレイからの出力データを記憶する出力記憶部と、
前記ユーザアレイ、前記入力記憶部および前記出力記憶部に結合し、前記少なくとも１つの再構成可能なプロセッサの機能を制御する制御部と、
前記ユーザアレイおよび前記出力記憶部に結合し、前記コンピュータシステムにおける他の再構成可能なプロセッサからの入力を受け取り可能にするとともに前記コンピュータシステムにおける他の再構成可能なプロセッサに対して出力を供給可能にするチェーンポートと、
を有する、
コンピュータシステム。
【請求項２】
前記オペランドは、前記入力記憶部に記憶された後、前記ユーザアレイへ転送される、
請求項１に記載のコンピュータシステム。
【請求項３】
前記ユーザアレイは、少なくとも１つのフィールドプログラマブルゲートアレイを有する、
請求項１または２に記載のコンピュータシステム。
【請求項４】
前記少なくとも１つのマイクロプロセッサのうちの１つが前記出力データを直ちに読み出すことができない場合に、前記出力記憶部は当該出力データを保持し、前記少なくとも１つの再構成可能なプロセッサは処理を継続する、
請求項１から３のいずれか１項に記載のコンピュータシステム。
【請求項５】
前記少なくとも１つの再構成可能なプロセッサに対応付けられ、前記少なくとも１つのアルゴリズムを記憶するメモリをさらに含む、
請求項１から４のいずれか１項に記載のコンピュータシステム。
【請求項６】
前記メモリは、前記コンピュータシステムの動作中に更新可能である、
請求項５に記載のコンピュータシステム。
【請求項７】
プログラム命令に基づいてユーザデータを処理する少なくとも１つのマイクロプロセッサと、
複数のメモリコントローラであって、各メモリコントローラは複数の再構成可能なプロセッサおよび当該複数の再構成可能なプロセッサに関連付けられた複数のメモリアレイに結合された、複数のメモリコントローラと、
前記複数のメモリコントローラを選択的に前記少なくとも１つのマイクロプロセッサに結合するスイッチと、
を含むコンピュータシステムであって、
前記複数の再構成可能なプロセッサの各々は、
前記コンピュータシステムにおける他の再構成可能なプロセッサからの入力を受け取り可能にするとともに前記コンピュータシステムにおける他の再構成可能なプロセッサに対して出力を供給可能にするチェーンポートを有する、
コンピュータシステム。
【請求項８】
前記複数の再構成可能なプロセッサの各々は、
少なくとも１つのアルゴリズムをオペランドに対して実行するユーザアレイと、
対応する前記メモリコントローラおよび前記ユーザアレイに結合し、当該メモリコントローラからの入力データを記憶する入力記憶部と、
前記ユーザアレイおよび対応する前記メモリコントローラに結合し、前記ユーザアレイからの出力データを記憶する出力記憶部と、
を有する、
請求項７に記載のコンピュータシステム。
【請求項９】
前記複数のメモリコントローラの各々は、フィールドプログラマブルゲートアレイを有する、
請求項７または８に記載のコンピュータシステム。
【請求項１０】
前記スイッチは、フィールドプログラマブルゲートアレイを有する、
請求項７から９のいずれか１項に記載のコンピュータシステム。
【請求項１１】
請求項１から１０のいずれか１項に記載のコンピュータシステムを具備する再構成可能なサーバ。
【発明の詳細な説明】
【技術分野】
【０００１】
発明の背景
この発明は、一般的に、マルチアダプティブプロセッサ（「ＭＡＰTM」、左記は、コロラド州、コロラドスプリングスのエス・アール・シィ・コンピューターズ・インコーポレイテッド（SRC Computers, Inc.）の商標）等の複数の処理素子を組込むコンピュータアーキテクチャの分野に関する。より特定的には、この発明は、単一のオペレーティングシステムイメージ下で動作する再構成可能なプロセッサを組込むコンピュータシステムを利用して、ウェブサイトアクセスおよび処理を加速させるためのシステムおよび方法に関する。
【背景技術】
【０００２】
現在、多くの種々の形態の電子的なビジネス取引が、インターネットに結合された個々のコンピュータを用いて行なわれる。そのコンピュータベースの性質のおかげで、多くの電子商取引（「ｅ−コマース」）のウェブサイトは種々の方法を用いることにより、特定のユーザの人口統計に基づいてその内容を変えることができる。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
この人口統計情報はさまざまな方法で得ることができ、いくつかのサイトでは単に、そのサイトの訪問者に１つ以上の質問に回答するよう要求するだけであるのに対し、他のサイトでは、「クリックストリーム」処理等のより高度な技術を用い得る。この後者の場合、サイトの訪問者が将来興味を持ちそうなものは、たとえば訪問者が以前に訪問したサイトを判断および分析することにより推測される。しかしながら、いずれの場合も、このデータは、最終的にはサイトの収入を最大にすることを目指してその特定のサイト訪問者に最大限にアピールするようウェブページの内容を変更し得るように、そのサイトによって処理されなければならない。
【０００４】
標準的なインターネットユーザは、ウェブページが更新されるのに最高で２０秒ほどしか待たないということが調査により分かっているので、ページ内容の更新を可能な限り迅速に完了させることが極めて重要である。したがって、ユーザの人口統計データを処理するアルゴリズムのソフトウェア性能を最大限に活用するべく多大な努力が払われている。現在、この処理を達成する公知のウェブサーバはすべて、業界標準のマイクロプロセッサベースのサーバを使用し、結果としてこれにより、その最高性能は、標準のマイクロプロセッサ「ロード／記憶」アーキテクチャに固有の制約によって制限される。
【課題を解決するための手段】
【０００５】
発明の概要
この発明の譲受人である、SRC Computers, Inc.は、たとえば、プログラマブルＭＡＰ素子として機能するフィールドプログラマブルゲートアレイを利用するマルチアダプティブプロセッサ（「ＭＡＰTM」）とともに業界標準のプロセッサを用いるシステムを含む、マルチプロセッサコンピュータシステムの設計および開発における業界のリーダーである。
【０００６】
特に、単一のオペレーティングシステムイメージ下で動作する１つ以上のマイクロプロセッサと複数の再構成可能なプロセッサとを組込むマルチプロセッサコンピュータシステムを利用して、ウェブサイトアクセスおよび処理を加速させるためのシステムおよび方法
が、この明細書中に開示される。具体的な実施例では、ウェブサイトは、すべてのシステムのリソースを共有し、かつ単一のオペレーティングシステムイメージ下で動作する、業界標準のマイクロプロセッサおよび１つ以上の再構成可能なプロセッサをともに含むハイブリッドマルチプロセッサコンピュータシステムでもってサービスしてもよい（が、代替的な実施例では、クラスタ管理ソフトウェアを用いて、ユーザにはマイクロプロセッサのクラスタがオペレーティングシステムの単一のコピーとして見えるようにし得る）。このようなシステムでは、人口統計データ処理アルゴリズムは、特別に適応されたフィールドプログラマブルゲートアレイ（「ＦＰＧＡ」）の形で設けることのできる再構成可能なプロセッサにロードされ得る。この態様では、適切なアルゴリズムは、標準のマイクロプロセッサベースのサーバより最大１０００倍まで速くデータを処理することのできる、（ソフトウェアとは反対に）ハードウェアゲートで実現され得る。
【０００７】
具体的な実現例として、１つの特に効果的なハイブリッド計算システムには、マルチアダプティブプロセッサ（ＭＡＰ）を組込む、SRC Computers, Inc.のＳＲＣ−６がある。このようなシステムでは、ＭＡＰ素子にロードされてデータを処理するアルゴリズムを、１００ｍｓｅｃ以内に完全に変更することができる。これにより、サイト訪問者をさほど足止めすることなく、処理アルゴリズムでさえも迅速に変更することが可能となり得る。アルゴリズムを変更するこの能力は、非常に加速された処理時間と結合されることで、より複雑なアルゴリズムを用いることを可能にし、これにより、さらに一層改善されたウェブページ内容の調整に繋がり得る。
【０００８】
単一のオペレーティングシステムイメージ下で動作するこのようなハイブリッドシステムを用いることにより、ソラリスTM（SolarisTM、左記は、カリフォルニア州、パロアルトのサン・マイクロシステムズ・インコーポレイテッド（Sun Microsystems, Inc.）の商標）を利用し得、かつ容易に管理することができる。この特徴は、このようなｅ−コマースベースのアプリケーションにおいて重要である。ＭＡＰ素子は、本来システムに密結合され、たとえば入出力（「Ｉ／Ｏ」）ポート上に配置される取付けられたプロセッサではないので、これらの有効性および使いやすさは最大限に活用される。
【０００９】
人口統計データ処理は、このような再構成可能な処理システムの固有の能力を利用してｅ−コマースをいかに加速させることができるかの単なる一例であり、「セキュアソケット」動作は、さらに別の実現可能な適用例である。この場合、このような動作は、しばしば、典型的な、従来のサイトサーバマイクロプロセッササイクルの８０％までも費やすことがある。SRC Computers, Inc.は、ＳＲＣ−６等の再構成可能なプロセッサベースのシステムが従来のマイクロプロセッサよりも最大で１０００倍まで速く解読アルゴリズムを実行することができ、これにより、より高速のウェブサイトアクセスも可能となるが、同時に、よりロバストなデータ暗号化技術を用いることも可能となることを証明している。同様に、重要な速度の利点は、たとえば、検索アルゴリズムが再構成可能なシステムのハードウェアにおいて直接実現されて従来のマイクロプロセッサベースのソリューションよりも２〜３桁の実行時間の改善をもたらし得るデータベース検索を実行することで実現され得る。
【００１０】
一般的に、ウェブサイトホスティングのためのオペレーティングシステムの単一のシステムイメージを備えたハイブリッドコンピュータシステムを用いることにより、多様なｅ−コマース関連の機能において現在実現される、ユーザにより選択されたハードウェア加速バージョンのソフトウェアアルゴリズムをサイトに使用させることが可能となる。これにより、結果として、サイト訪問者の待ち時間をより短くする、極めて高速な処理能力を備えた使いやすいシステムとなる。
【００１１】
添付の図面と関連して好ましい実施例の以下の説明を参照することにより、この発明の
上述および他の特徴ならびに目的、およびそれらを達成する方法がより明らかとなり、この発明自体が最もよく理解されるだろう。
【発明を実施するための最良の形態】
【００１２】
図１では、この発明の一実施例に従ったマルチプロセッサコンピュータ１０アーキテクチャが示される。このマルチプロセッサコンピュータ１０は、メモリ相互接続構造１４に双方向に結合されるＮ個のプロセッサ１２0から１２Nを組込む。次いで、このメモリ相互接続構造１４はまた、メモリバンクサブシステム１６0（バンク０）から１６Ｍ（バンクＭ）を含むＭ個のメモリバンクに結合される。Ｎ個のマルチアダプティブプロセッサ（「ＭＡＰTM」）１１２0から１１２Nはまた、後にさらに詳しく説明されるように、メモリ相互接続構造１４に結合される。
【００１３】
図２では、この発明に従った複数のマルチアダプティブプロセッサを組込むマルチプロセッサコンピュータアーキテクチャ１００に対する代表的なアプリケーションプログラム分解処理（decomposition）が示される。コンピュータアーキテクチャ１００は、分解処理の低精細部分では、（単に例示のために）４つの並列領域１０２1から１０２4までのうち１つに対して選択的に向けられるユーザ命令およびデータに応答して動作する。並列領域１０２1から１０２4の各々から出力される命令およびデータは、それぞれ、データ領域１０４1から１０４4、および命令領域１０６1から１０６4に分けられた並列領域に入力される。データ領域１０４1から１０４4に維持されるデータと、命令領域１０６1から１０６4に維持される命令は、次いで、図示のとおり、たとえば、対応する対のプロセッサ１０８1、１０８2（Ｐ１およびＰ２）、１０８3、１０８4（Ｐ３およびＰ４）、１０８5、１０８6（Ｐ５およびＰ６）、ならびに１０８7、１０８8（Ｐ７およびＰ８）に与えられる。この時点で、命令およびデータの中精細の分解処理が達成されている。
【００１４】
高精細の分解処理または並列処理は、さらなるアルゴリズムの分解処理により実行され、プロセッサ１０８1から１０８8の各々の出力は、たとえば、図示のとおり、複数の基本的アルゴリズム１１０1A、１１０1B、１１０2A、１１０2Bから１１０8Bに分割される。次いで、アルゴリズムの各々は、コンピュータアーキテクチャ１００のメモリ空間において、後により詳しく説明されるように、そこでの実行のために、配置され得るＭＡＰ素子１１２1A、１１２1B、１１２2A、１１２2Bから１１２8Bのうち対応する素子に供給される。
【００１５】
さらに図３では、この発明のＭＡＰシステムコンピュータアーキテクチャ１００におけるメモリバンク１２０の具体的な実現例が、前出の図に示されたＭＡＰ素子１１２のうち代表的なものについて示される。各メモリバンク１２０は、コンピュータシステムトランクライン、たとえば７２ラインのバス１２４に双方向に結合されるバンク制御論理ブロック１２２を含む。バンク制御論理ブロック１２２は、双方向データバス１２６（たとえば２５６ライン）に結合され、アドレスバス１２８（たとえば１７ライン）上にアドレスを与えてメモリアレイ１３０内の特定された場所のデータにアクセスするようにする。
【００１６】
データバス１２６およびアドレスバス１２８はまた、ＭＡＰ素子１１２に結合される。ＭＡＰ素子１１２は、アドレスバス１２８に結合される制御ブロック１３２を含む。制御ブロック１３２はまた、複数の信号ライン１３６によってユーザフィールドプログラマブルゲートアレイ（「ＦＰＧＡ」）１３４に双方向に結合される。ユーザＦＰＧＡ１３４はデータバス１２６に直接結合される。特定の実施例では、ＦＰＧＡ１３４は、ルーセント・テクノロジーズ（Lucent Technologies）ＯＲ３Ｔ８０装置として提供され得る。
【００１７】
コンピュータアーキテクチャ１００は、メモリサブシステムまたはメモリ空間に位置し得る１つ以上のＭＡＰ素子１１２を備えた共通の共有メモリにわたって均一なメモリアクセスを用いるマルチプロセッサシステムを含む。前述のように、各ＭＡＰ素子１１２は、
再構成可能な機能ユニットとして用いられる少なくとも１つの比較的大きなＦＰＧＡ１３４を含む。加えて、制御ブロック１３２と、予めプログラムされたまたは動的にプログラム可能な構成ＲＯＭと（後により詳細に述べる）は、再構成可能なＭＡＰ素子１１２が必要とする情報を含み、これにより、特定のアルゴリズムを実行することが可能となる。また、ユーザがプログラム制御下で新しい構成をＦＰＧＡ１３４に直接ダウンロードすることも可能であるが、場合によっては、これは複数のメモリアクセスを消費することがあり、アルゴリズムが短命である場合システム性能を全体的に低下させるおそれがある。
【００１８】
ＦＰＧＡは、いくつかの理由で、図示されるアプリケーションにおいて特定の利点を有する。第一に、市販されているＦＰＧＡは、現在、意味のある計算機能を実行するために十分な内部論理セルを含む。第二に、これらはマイクロプロセッサと同等の速度で動作することができるので、速度整合バッファの必要性がなくなる。さらに、ＦＰＧＡの内部プログラマブルルーティングリソースは、現在十分に広範なものであるので、入出力（「Ｉ／Ｏ」）ピンの位置を再割当てする必要なしに、意味のあるアルゴリズムをプログラミングすることができる。
【００１９】
たとえば、メモリサブシステムまたはメモリ空間にＭＡＰ素子１１２を配置することにより、これは、メモリ読出および書込コマンドを使用することによって容易にアクセスすることができ、これにより、さまざまな標準オペレーティングシステムを用いることが可能となる。対照的に、他の従来の実現例は、プロセッサの中または近くにいずれの再構成可能な論理をも配置することを提案し得るが、これらの従来の実現例は、マルチプロセッサ環境においては一般的にそれほど効果的ではない。というのも、この発明のシステムおよび方法とは異なり、１つのプロセッサしかそれに高速アクセスしないからである。したがって、再構成可能な論理は、マルチプロセッサシステム内のすべてのプロセッサのそばに配置されなければならず、これによりシステム全体の費用が増す。加えて、ＭＡＰ素子１１２は、ダイレクトメモリアクセス（「ＤＭＡ」）と称されるメモリアレイ１３０自体にアクセスすることができ、これによりプロセッサから独立しかつ非同期的にタスクを実行することが可能となる。これに比べて、これをプロセッサの近くに配置した場合、メモリにアクセスするためにシステムルーティングリソースについてプロセッサと競合しなければならず、プロセッサ性能に悪影響を与える。ＭＡＰ素子１１２がＤＭＡ能力を有する（これによりメモリへの書込が可能となる）ので、かつ、メモリへの書込を介してそのオペランドを受取るので、ＭＡＰ素子１１２が別のＭＡＰ素子１１２へ結果を送ることが可能となる。これは、大きなタスクの非常に広範なパイプライン処理および並列処理を可能にする非常に強力な特徴であり、これらのタスクのより迅速な完了を可能にする。
【００２０】
実現され得るアルゴリズムの多くは、オペランドを受取り、結果を生成するのに多くのクロックサイクルを必要とする。１つのこのような例は、６４クロックサイクルをとる乗算であり得る。この同じ乗算は、また、何千ものオペランドで実行されなければならない場合もある。このような状況では、入来するオペランドは順次提示され、このため、第１のオペランドは出力において結果を生成するのに６４クロックサイクルを必要とするが、第２のオペランドは、入力において１クロックサイクル後に到達し、出力において１クロック後に結果を示すこととなる。したがって、６４クロックサイクルの初めの遅延の後、新しい出力データは、最後のオペランドの結果が現われるまで、連続するクロックサイクルごとに現われることとなる。これは「パイプライン処理」と呼ばれる。
【００２１】
マルチプロセッサシステムでは、オペレーティングシステムがタスクの途中でプロセッサを止め、これを優先順位のより高いタスクに再割当てし、次いでこれまたは別のものを戻して最初のタスクを完了させることは極めて一般的である。これがパイプライン処理されたアルゴリズムと組合された場合、（プロセッサがリストの途中でオペランドの発行を止め、結果の受入れを止めた場合）、既に発行されているが、まだパイプラインを通過し
ていないオペランドに関して問題が生じる。この問題に対処するために、ソフトウェアとハードウェアとの組合せを含む解決法がこの明細書中に開示される。
【００２２】
いかなるタイプの従来の再構成可能なハードウェアをも利用するために、プログラマは、自身のアプリケーションプログラムコードに必要なコマンドを埋込み得る。この方策の欠点は、そのような場合、プログラムを、ＭＡＰハードウェアに特有なものとなるよう合わせなければならないことである。この発明のシステムによりこの問題が解消される。マルチプロセッサコンピュータは、しばしば、パラレライザ（parallelizer）と称されるソフトウェアを用いる。このソフトウェアの目的は、ユーザのアプリケーションコードを分析し、これをプロセッサ間でいかにして最良に分割するかを決定することである。この発明は、従来のパラレライザに勝る顕著な利点を提供し、そのシステムのためにＭＡＰ素子１１２に存在するアルゴリズムを表わすユーザコードの部分を認識し、次いで、ＭＡＰ素子１１２を別の計算素子として扱うことを可能にする。次いで、パラレライザは、ＭＡＰ素子１１２を利用するのに必要なコードを自動的に生成する。これにより、ユーザが自身のコードに直接アルゴリズムを書込むことが可能となるので、それはより携帯可能となり得、ユーザがＭＡＰ素子１１２を利用するために有する必要があるシステムハードウェアの知識を軽減する。
【００２３】
さらに図４では、ＭＡＰ制御ブロック１３２のブロック図がより詳細に示される。制御ブロック１３２は、アドレスバス１２８から複数のコマンドビット（たとえば、１７）をコマンドデコーダ１５０で受取るよう結合される。次いで、コマンドデコーダ１５０は、８ビットのバス１５４上で、ステータスレジスタｉＳ２の群へ複数のレジスタ制御ビットを与える。コマンドデコーダ１５０はまた、ライン１５６上で、単一ビットの最終オペランドフラグをパイプラインカウンタ１５８に与える。パイプラインカウンタ１５８は、バス１６２上で等化コンパレータ１６０へ８ビットの出力を与える。等化コンパレータ１６０はまた、バス１３６上で、ＦＰＧＡ１３４から、パイプラインの深さを示す８ビットの信号を受取る。等化コンパレータ１６０は、パイプラインが空であると判断すると、ステータスレジスタ１５２への入力のために、ライン１６４上で単一ビットのパイプライン空フラグを与える。ステータスレジスタ１５２はまた、バス１３６上でＦＰＧＡ１３４から８ビットのステータス信号を受取るよう結合され、バス１３６および１５４ならびにライン１６４上の信号に応答して、バス１６６上で６４ビットのステータスワード出力を生成する。
【００２４】
コマンドデコーダ１５０はまた、図示のとおり、ライン１６８上で、構成マルチプレクサ（「ＭＵＸ」）１７０に５ビットの制御信号を与える。構成ＭＵＸ１７０は、ライン１７６上で、２５６ビットのパラレル−シリアル変換器１７２の単一ビットの出力を受取る。２５６ビットのパラレル−シリアル変換器１７２の入力は、２５６ビットのユーザ構成パターンバス１７４に結合される。構成ＭＵＸ１７０はまた、バス１７８上で、（ＲＯＭ１８２と示される）構成ＲＯＭから１６の単一ビット入力を受取り、コマンドデコーダ１５０からのバス１６８上の制御信号により選択されるように、ライン１８０上で、ユーザＦＰＧＡ１３４に単一ビットの構成ファイル信号を与える。
【００２５】
動作において、プロセッサ１０８がオペレーティングシステムによって停止されると、このオペレーティングシステムは、バス１２８上で、アドレスフィールドに埋込まれたコマンドビットを用いることにより、ＭＡＰ素子１１２へ最終オペランドコマンドを発行するだろう。このコマンドは、制御ブロック１３２のコマンドデコーダ１５０によって認識され、ハードウェアパイプラインカウンタ１５８を開始させる。アルゴリズムがＦＰＧＡ１３４に最初にロードされた場合、制御ブロック１３２に接続されるいくつかの出力ビットは、等化コンパレータ１６０に入力されるバス１３６上に、そのパイプラインを通過するのに必要とされるクロックサイクルの数（すなわち、パイプラインの「深さ」）のバイ
ナリ表現を表示するよう構成された。最終オペランドコマンドを受取った後、制御ブロック１３２内のパイプラインカウンタ１５８は、そのカウントがその特定のアルゴリズムに対するパイプラインの深さと等しくなるまでクロックサイクルを数える。その時点で、制御ブロック１３２内の等化コンパレータ１６０は、ステータスレジスタ１５２の内部の群におけるライン１６４上でビジービットをデアサートする。最終オペランド信号を発行した後、プロセッサ１０８は、ステータスレジスタ１５２を繰返し読出し、バス１６６上のいかなる出力データも受入れるだろう。ビジーフラグがデアサートされると、このタスクを停止させ、ＭＡＰ素子１１２を別のタスクのために利用することができる。ＭＡＰ素子１１２を構成されたままにし、プログラムを異なるプロセッサ１０８に転送し、タスクを中断されたところから再開させることも可能であることに留意されたい。
【００２６】
所与の適用例におけるＭＡＰ素子１１２の使用の効果を評価するために、使用に対して何らかの形のフィールドバックが必要とされる。したがって、ＭＡＰ素子１１２は、出力データに対する入力オペランドの数、時間に対するアイドルサイクルの数、および時間にわたって受取られたシステムモニタ割込の数などの効率に関する要因を監視することができるように、制御ブロック１３２内に内部レジスタを備え得る。ＭＡＰ素子１１２が有する利点の１つは、その再構成可能な性質のために、監視される実際の機能および機能のタイプもまた、アルゴリズムの変化に従って変化し得ることである。これにより、常にすべての要因を監視する必要なしに、監視される可能性のあるほぼ無数の要因がユーザに与えられる。
【００２７】
さらに図５には、この発明に従ったコンピュータシステム２０の代替的な実施例の一部の機能ブロック図が示される。図示されるコンピュータシステム２０では、個々のＭＡＰ素子１１２A、１１２Bなどは、各々、個々のプロセッサボード２２Aおよび２２Bにそれぞれ密接に関連付けられる。図示されるように、ＭＡＰ素子１１２の各々は、ＭＡＰ素子１１２を互いに直接結合するための独立したチェーンポート２４を含む。
【００２８】
ＭＡＰ素子１１２の個々の要素は、チェーンポート２４によって互いに結合されることに加えて、各プロセッサボード２２のプロセッサボード２２書込トランク２６と読出トランク２８との間に結合される。スイッチは、いずれの所与のプロセッサボードの書込トランク２６と読出トランク２８とを、他のいずれのメモリサブシステムバンク１６A、１６Bなどに結合する。概略的に示されるように、メモリサブシステムバンク１６の各々は、制御ブロック１１２および１つ以上のメモリアレイ１３０を含む。
【００２９】
さらに図６には、個々のＭＡＰ素子１１２の機能ブロック図が示され、ここで、各ＭＡＰ素子１１２は、共通のメモリＤＭＡ能力を提供するオンボードメモリ４０と制御ブロック４６とを含む。簡潔に述べると、書込トランク２６および読出トランク２８は、共通のメモリスイッチから制御ブロック４６に結合され、この制御ブロック４６は、アドレスライン４８上で、メモリ４０にアドレスを与え、ユーザアレイ４２からアドレスを受取る。書込トランク２６上で供給されるデータは、制御ブロック４６によりデータライン４４上でメモリ４０へ与えられ、メモリ４０から読出されるデータは、これらの同じライン上で、ユーザアレイ４２および制御ブロック４６の両方に与えられ、その後、読出トランク２８上に提示される。示されるように、チェーンポート２４は、読出および書込データが他のＭＡＰ素子１１２と直接通信するように、ユーザアレイ４２に結合される。
【００３０】
さらに図７には、個々のＭＡＰ素子１１２のさらなる機能ブロック図が示され、特に、その入力バッファ４０および出力ＦＩＦＯ７４部分として機能する前出の図のメモリ４０が示される。この図では、図６のＭＡＰ素子１１２の代替的な図が示され、ライン５０（または書込トランク２６）上のメモリ入力データは、入力バッファ（メモリ４０）と、チェーンポート２４に結合される再構成可能なユーザアレイ４２とに供給される。再構成可
能なアレイ４２の出力は、出力ＦＩＦＯ７４に供給されて、メモリ出力データをライン９４（または読出トランク２８）上およびチェーンポート２４に与える。入力バッファ４０、再構成可能なアレイ４２および出力ＦＩＦＯ７４は、制御ブロック４６の制御下で動作する。
【００３１】
上述の図面に関して、各ＭＡＰ素子１１２は、入力オペランド記憶部（すなわち、メモリ／入力バッファ４０）と、ユーザアレイ４２と、インテリジェントアドレス生成部制御ブロック４６と、出力結果記憶部ＦＩＦＯ７４と、Ｉ／Ｏポートとを含むプリント回路基板からなり、チェーンポート２４およびホストシステムメモリアレイを介して他のＭＡＰ素子１１２との接続を可能にし得る。
【００３２】
入力オペランド記憶部
入力記憶部は、ホストシステムにおけるマイクロプロセッサ１２のうち１つからのメモリ書込により、またはＭＡＰ  ＤＭＡにより最初にロードされるメモリチップからなる。バッファ４０は、特定の実施例では、７２ビット幅および２Ｍエントリの深さであり得る。これにより、必要な場合、６４のビットオペランドとデータ修正のための８つのエラー修正コード（「ＥＣＣ」）ビットとの記憶が可能となる。ユーザアレイ４２により、このバッファ４０からオペランドまたは参照データを読出すことができる。データは使用後も破損されず、このためＭＡＰ素子１１２がオペランドを再利用することが可能となる。バッファ４０がロードされた後にだけオペランドを読出すことにより、オペランドが時間順にＭＡＰ素子１１２に到達する必要がなくなる。ＭＡＰ素子１１２が要求するのは、記憶順序を維持することだけであり、これにより、入力バッファ４０に記憶される前にオペランドがばらばらの順序で到達することが可能となる。これはキャッシュライン転送を意味する。キャッシュライン転送とは、典型的には時間による順序で実行することはできないが、未キャッシュ転送の４倍の帯域幅を有し得るものであり、これを用いて入力バッファ４０をロードすることができる。
【００３３】
インテリジェントアドレス生成部
入力バッファ４０の内容は、これに対して、制御ブロック４６からアドレスおよび読出イネーブル信号を与えることによりアクセスされる。これらのアドレスは、２つの方法のうち１つで生成され得る。第一に、プログラマブルユーザアレイ４２によりアドレスビットをアドレス生成部制御ブロック４６へ与えることができ、そこで、このアドレスビットは他の制御信号と組合わされ、入力バッファ４０へ発行される。これにより、参照データへのアクセスに必要とされるような、バッファ４０への極めてランダムなアクセスが可能となる。別のアドレスモードは、スタートアドレス、ストップアドレスおよびストライドを含むスタートコマンドを発行するようユーザに要求する。アドレス生成部制御ブロック４６は、次いで、スタートアドレスにおいて入力バッファ４０へのアクセスを開始し、ストップアドレスに到達するまで、送り出される最後のアドレスにストライド値を加えることにより、これにアクセスし続けるだろう。これは、同様の要素がアレイから抽出される、ベクトル処理を行なう場合に非常に有用な技術となる可能性がある。ストライドはスタートアドレスとストップアドレスとの間のデルタ未満のいかなる数字でもあり得るので、ＭＡＰ素子１１２は、高性能の計算市場において非常に有用なデータ収集機能を極めて容易に行なうことができる。
【００３４】
ユーザアレイ
アレイ４２は、ＭＡＰ素子１１２の実際の計算機能を実行する。これは、ＭＡＰ素子１１２の他の要素に相互接続された１つ以上の高性能フィールドプログラマブルゲートアレイ（「ＦＰＧＡ」）を含み得る。後により詳細に開示されるこの発明の特定の実現例は、５００，０００を超える使用可能なゲートをもたらす４つのこのような装置を用い得る。これらの構成要素は、選択された構成ＲＯＭの内容をＦＰＧＡにロードするユーザコマン
ドにより構成される。構成後、ユーザアレイ４２は、これが行うようプログラミングされたいかなる機能も実行することができる。ベクトル処理に対してその性能を最大限にするために、アレイ４２は、２つのオペランドのストリームに同時にアクセス可能であるべきである。これは、１つの７２ビット幅の入力ポートを入力オペランド記憶部に接続し、第２の７２ビット幅のポートをチェーン入力コネクタポート２４に接続することにより達成される。このコネクタにより、ＭＡＰ素子１１２が、先のＭＡＰ素子１１２によって与えられたデータを用いることが可能となる。チェーンポート２４により、単一のＭＡＰ素子１１２アセンブリの能力をはるかに超えるであろう機能を実現することが可能となる。加えて、示される特定の実現例では、オペランドのみがチェーンポート２４を介して転送されるので、帯域幅はメインメモリの帯域幅を超え、結果として、固定命令マイクロプロセッサベースのプロセッサ１２より性能が優れたものとなり得る。
【００３５】
ＦＰＧＡは、回路が何倍または何分の１のシステムクロック周波数で実行するかをユーザが特定することを可能にするオンボード位相ロックループ（「ＰＬＬ」）も含み得る。これは、ある複雑な機能が、システムクロック周波数より遅いクロックを必要とする可能性があるので重要である。また、ユーザが、結果として性能は低いがより早く市場に出ることとなる機能を統合することを望む場合もある。ＰＬＬを用いることにより、これらの制約にともに対処することができる。ＰＬＬを利用する可能性における別の利点は、現在のシステムクロック速度より速く動作し得る次世代のＦＰＧＡをより低速のシステムに後付けすることができ、ＰＬＬ周波数乗算特徴を用いることにより、ＭＡＰ素子１１２をシステムの残りの部分よりも速く実行させることができるという点である。これは、結果として、より高性能のＭＡＰ素子１１２となる。
【００３６】
出力結果の記憶
ユーザアレイ４２が結果を生成すると、これを７２ビット幅の経路を介して出力結果記憶素子（たとえば、出力ＦＩＦＯ７４）へ送り、次にこの出力結果記憶素子が、７２ビット幅の読出ポートまたは７２ビット幅のチェーンポート２４へこのデータを送り、さらに次のＭＡＰ素子１１２に送ることができる。この記憶装置は複数の異なったメモリタイプから作られ得る。ＦＩＦＯ７４記憶装置を用いることにより、直ちにホストマイクロプロセッサが読出すことのできない、または出力チェーンポート２４を介して次の段階へ送ることのできない結果が一時的に保持されることとなる。この特徴により、チェーンにおけるＭＡＰ素子１１２は異なる周波数で実行することが可能となる。この場合、出力ＦＩＦＯ７４は速度整合バッファと同様に機能する。非連鎖動作では、この結果を読出しているマイクロプロセッサを遅延し得る。この場合、ＦＩＦＯ７４は、結果が読出されるのを待機する間にＭＡＰ素子１１２が「ストール」する（stalling）ことを防ぐ。この発明の特定の実施例では、７２ビット幅および５１２Ｋエントリの深さであるＦＩＦＯ７４を用いてもよい。上述の特許出願に開示されるように、出力記憶部はまた、共通メモリに見出されるような真のメモリ装置であり得る。この場合、書込アドレスは、ユーザアレイ４２またはアドレス生成部により与えられる必要があり、読出アドレスは、メモリから結果を読出すエンティティにより与えられる必要がある。これはいくらか電気的に複雑である可能性があるが、いかなる順序でも結果にアクセスし得るという利点を有する。
【００３７】
ＤＭＡの向上
上述の特許出願では、共通メモリに対してＤＭＡを実行するＭＡＰ素子１１２の能力が開示された。この能力を、主にオペランドの動きおよび結果に関して述べたが、同じ概念をコマンドに適用することも可能である。通常一連のコマンドを直接ＭＡＰ素子１１２に書込むとされるマイクロプロセッサはまた、同じコマンドを共通メモリにも書込み得る。一連のコマンドの書込の後、マイクロプロセッサはＭＡＰ素子１１２に割込を送ることができる。次いで、ＭＡＰ素子１１２は共通メモリからコマンドを読出し、企図されたとおりにこれらを実行し得る。このコマンドリストは、前述の特許出願において特定されるＤ
ＭＡ命令を含み得るので、ＭＡＰ素子１１２は、さらなるプロセッサ１２のいかなる介入もなしに、その入力オペランドをすべて検索し、その結果をすべて記憶し得る。ＭＡＰ素子１１２の処理が完了すると、ＭＡＰ素子１１２はマイクロプロセッサに割込んで、共通メモリにおいて結果が入手可能であるという信号を送り得る。この態様での動作により、ＭＡＰ素子１１２とマイクロプロセッサとの間で要求される相互作用が減じられる。
【００３８】
オンボードライブラリ
当初開示されたように、電気的に消去可能なプログラマブルＲＯＭ（「ＥＥＰＲＯＭ」）または類似の装置を用いて、ユーザアレイ４２のための機能のライブラリを保持することができる。ＭＡＰ素子１１２自体のＲＯＭにこれらのアルゴリズムを配置することにより、ユーザアレイ４２の機能を迅速に変更することができる。この態様では、ユーザプログラムは、ボードＲＯＭのうち１つに新しい機能をダウンロードし、これによりその内容を更新し、ＭＡＰ素子１１２が新しい機能を実行できるようにし得る。特定の実現例では、これは、ライブラリ機能のうちの１つを予約して、ＥＥＰＲＯＭプログラマの機能を実行することにより達成され得る。ＲＯＭを更新するためのコマンドを受取ると、ユーザアレイ４２はこの特別の機能を備えるよう構成され、データがＭＡＰ素子１１２入力記憶部（たとえば、入力バッファ４０）から読出され、次いで、ＲＯＭにロードされて更新処理を完了し得る。
【００３９】
さらに図８では、個々のＭＡＰ素子１１２のより詳細な機能ブロック図が、図６および図７において先に示されるのと同様に示される。この図では、ＭＡＰ素子１１２は、メモリまたは入力バッファ４０として機能する拡張同期ダイナミックランダムアクセスメモリ（ＥＳＤＲＡＭTM、コロラド州、コロラドスプリングスのエンハスト・メモリ・システムズ・インコーポレイテッド（Enhanced Memory Systems, Inc.）の商標）を含む。ＥＳＤＲＡＭメモリは、オンチップスタティックランダムアクセスメモリ（「ＳＲＡＭ」）行レジスタで増強して装置の読出動作を速めるダイナミックランダムアクセスメモリ（「ＤＲＡＭ」）アレイを組込む超高速メモリ装置である。
【００４０】
この図では、前述と同様の構造には同様の参照番号が付され、これについては、上述の記載で十分であるだろう。ライン５０上のメモリ入力データは、伝送ゲート５２を介してデータライン４４に供給されて、メモリ４０およびユーザアレイ４２に与えられる。同様に、アドレス入力はライン５４上で受取られて、伝送ゲート５６を介して、メモリ４０および制御ブロック４６に結合されるアドレスライン４８に与えられる。制御ブロック４６は、伝送ゲート５２および５６を動作的に制御し、ライン６０上でＦＳ１１信号を受取り、ライン６２上でＬＯＣＫＯＵＴ信号を与える。
【００４１】
ユーザアレイ４２は、図示のとおり、チェーンポート２４に結合され得、ライン６４上でユーザアドレス信号を、かつライン６６上で次のアドレス信号を制御ブロック４６に与える。制御ブロック４６は、ライン６８上で、入力がユーザアレイ４２に対して有効であるか否かを示す。ユーザアレイ４２の出力は、ライン７０上で、ライン７２上の書込クロック（「ＷＲＴＣＬＫ」）信号とともに、ＦＩＦＯ７４または他の出力記憶装置に与えられる。ＦＩＦＯ７４は、ライン７８上で、制御ブロック４６から読出クロック（「ＲＤＣＬＫ」）信号を受取る。ＦＩＦＯ７４または制御ブロック４６からの出力は、ライン８０上で、伝送ゲート７６を介してチェーンポート２４へ選択的に供給され、および／または伝送ゲート８２を介してライン９４上でメモリデータを与え得る。制御ブロック４６はまた、ライン９０上でチェーン読出信号を受取り、ライン９２上でチェーン有効出力を戻す。制御ブロック４６は、ライン８８上でエラー修正コード（「ＥＣＣ」）出力信号を与える役割を果たす伝送ゲート８６に加えて、伝送ゲート７６および８２を動作的に制御する。
【００４２】
前述のように、ＭＡＰ素子１１２は、１つ以上の回路基板を含み得、たとえば、制御ブロック４６として機能する１つのルーセント・オルカTM（Lucent OrcaTM）ＯＲ３Ｔ８０
ＦＰＧＡと、ユーザアレイ４２を形成する４つのＯＲ３Ｔ１２５  ＦＰＧＡとを利用し得る。ユーザは、それに書込まれるデータを変更し、ＭＡＰ素子１１２が読出されるとこの変更されたデータを与えるこれらのＦＰＧＡにおいて、アルゴリズムを実現することができる。加えて、各ＭＡＰ素子１１２はまた、ボード上に４個の構成ＲＯＭを８組含み得る。これらのＲＯＭはユーザにより予めプログラミングされ、プログラム制御下でユーザアレイ４２の４つのユーザＦＰＧＡを構成する。これらのＲＯＭは、外部で、またはシステム内に位置するＭＡＰ素子１１２上にある間のどちらかで、再プログラミングされ得る。
【００４３】
ＭＡＰ素子１１２は、通常のメモリ読出（ＲＥＡＤ）および書込（ＷＲＩＴＥ）コマンドを用いることによりアクセスされる。図示および説明される代表的な実施例では、ユーザは、１２８ビットのパケット（すなわち、２つの６４ビットワードの形式）をユーザアレイ４２チップに直接書込むか、または２５６ビットのパケット（４つの６４ビットワードの形式）を専用の１６ＭＢ  ＥＳＤＲＡＭメモリ入力データバッファ４０に書込むことにより、ＭＡＰ素子１１２にオペランドを与えることができる。ＭＡＰ素子１１２からの読出は、常に、２ワードのパケットを戻し、この戻されたパケットの部分はステータス情報を含む。これについては後により十分に記載する。加えて、入来するアドレスはコマンドにデコードされる。これも同様に後に規定する。
【００４４】
ＭＡＰ素子１１２はまた、ハードウェアを介して連鎖させる能力も有する。これにより、プロセッサ１２の介入なしに、１つのＭＡＰ素子１１２からの出力データを、次のＭＡＰ素子１１２のユーザアレイ４２チップへ直接移すことが可能となる。チェーンの長さは、システム全体におけるＭＡＰ素子１１２の数により制限される。ＭＡＰ素子１１２の総数はまた、いくつかのより小さな独立したチェーンに分けることができる。動作の連鎖モードでは、ＭＡＰ素子１１２は、依然として、その入力バッファ４０から読出して、相互概算表などの参照情報にアクセスすることができる。
【００４５】
論理規則
この明細書中に開示されるこの発明のコンピュータシステムの代表的な実現例では、プロセッサ１２は、ペンティアム（Ｒ）（PentiumTM）（カリフォルニア州、サンタクララ、インテル・コーポレーション（Intel Corporation）の商標）プロセッサを含み得、これらの装置は、戻されたステータスワードを含むＭＡＰ素子１１２に対して送受信されるすべてのアドレスビットおよびデータワードに適用するアクティブな「ロー」論理規則を利用する。
【００４６】
さらに図９には、ユーザアレイ相互接続２００の図が示され、これは、たとえば、水平、垂直および斜めのバスを介して相互接続される４つのユーザＦＰＧＡを利用することにより、単一のＦＰＧＡの容量を超えるおそれのある設計において拡張を可能にする。この点に関して、相互接続図２００は前出の図のユーザアレイ４２に対応し、入力データバス２１０はデータライン４４に対応し、チェーン入力バス２１２はチェーンポート２４に対応し、出力バス２１４は図８のライン７０に対応する。ユーザアレイ４２を含む４つのＦＰＧＡ２０２、２０４、２０６および２０８は、各々、入力データバス２１０、チェーン入力バス２１２および出力バス２１４に結合され、ならびに、上側のバス２１６、右側のバス２１８、下側のバス２２０、左側のバス２２２および斜めのバス２２４と２２６とによって、互いに結合される。
【００４７】
ユーザアレイ相互接続
前述のように、４つのユーザＦＰＧＡ（２０２、２０４、２０６および２０８）は、一
連の水平、垂直および斜めのバスを介して相互接続され、これにより、ユーザアレイ４２のための単一のＦＰＧＡの容量を超える設計に対して、既存の対称的な内部チップルーティングを最も容易に拡張することが可能となる。示される具体例では、バスのサイズは、少なくとも６４ビットのバス幅を維持しつつ、可能な限り多くのピンを利用するよう選択された。
【００４８】
アドレス構造
ＭＡＰはシステムのメモリアレイに配置され得、アドレスフィールドの一部をデコードするので、プロセッサ１２により生成されるアドレスは正確にアセンブルされなければならない。以下の表１は、プロセッサ１２およびＭＡＰ素子１１２ボードで見られるアドレスビットの割当を示す。プロセッサボードブリッジ素子は、システムの大きさに基づきＭＡＰ素子１１２に実際に伝送されるビット位置を再割当するだろう。
【００４９】
フィールド選択ビット
フィールド選択ビットは、ブリッジ素子から出る２つの最上位アドレスビットであり、これを用いて、メモリスタックにおける４つの可能なメザニン（mezzanine）カードのいずれがアクセスされているかを選択する。すべてのメザニンカードに対するフィールド選択ビットは、Ｐ６バスビットＡ［２１：２０］の状態により決定される。ビットＡ２１がセットされる場合、ＭＡＰ素子１１２動作は進行中であり、フィールド選択ビットは１１にセットされる。ＭＡＰ素子１１２は、１つのＭＡＰ素子１１２が各セグメントのバンク０になるまで、第１のＭＡＰ素子１１２はセグメント０バンク０にあり、第２の素子はセグメント１バンク０にあり、などとなるように、セマフォ（semaphore）レジスタのちょうど上方に常に配置される。これらは、次いで、セグメント０バンク１に配置され、すべてが配置されるまで同じパターンが続けられる。これにより、これら素子は連続したアドレスブロックに保持される。
【００５０】
チップ選択ビット
次の３つの最上位ビットは、チップ選択ビットである。これらは、通常、メザニンボード上の８つの行のメモリチップのうちいずれが活性化されるかを選択する。ＭＡＰ素子１１２については、チップ選択０および１が用いられる。チップ選択０を用いてＥＳＤＲＡＭメモリ入力バッファ４０に書込み、チップ選択１を用いて制御ブロック４６とユーザアレイ４２のユーザチップとにアクセスする。
【００５１】
メモリアドレスビット
Ｐ６バス上の次の１９個の最上位ビットは、通常、使用の際にキャッシュラインのメモリチップ内の実際の位置を選択するメモリアドレスビットである。これらのビットのうち５つが、ＭＡＰ素子１１２によって、後により詳細に述べられる種々のコマンドにデコードされる。
【００５２】
バンク選択ビット
次の４つの最上位ビットはバンク選択ビットである。これらのビットを用いて、所望のメモリまたはＭＡＰ素子１１２が配置されるセグメント内の特定のバンクを選択する。
【００５３】
トランク選択ビット
次の４つの最上位ビットはトランク選択ビットである。これらのビットの数は、システムにおけるセグメントの数に応じて０から４の範囲にわたる。これらのビットを用いて、所望のメモリまたはＭＡＰを含むセグメントを選択する。未使用のビットは０にセットされる。
【００５４】
【表１】
0004713080.tif 000002
【００５５】
ワード選択ビット
次の２つの最上位ビットはワード選択ビットである。これらのビットは、４ワードキャッシュラインの各ワードが用いられている順序を決定する。ＣＳ［１：０］が０１にセットされる場合、これらのビットはデコードされたコマンドの一部である。
【００５６】
ＭＡＰコマンドデコード
ＣＭＤ［３：０］は、以下の表２に示されるように、ＣＳ［１：０］が０１である場合、ＭＡＰ制御ブロック４６チップにより以下のコマンドへデコードされる。このデコードは、トランザクションがＲＥＡＤまたはＷＲＩＴＥのどちらであるかにも依存する。加えて、ＳＥＬ［２：０］を、後に記載されるＲＥＣＯＮおよびＬＤＲＯＭコマンドとともに用いて、８つのＲＯＭのいずれが用いられるかを選択する。
【００５７】
【表２】
0004713080.tif 000003
【００５８】
ヌル（Null）コマンド記述
ＭＡＰ素子１１２がコマンドを能動的に受取らない場合、すべての入力が１にセットされ、すべての内部回路はスタティックに保持される。したがって、「１１１１」という入来コマンドをどんなものとしてもデコードすることができず、使用することができない。
【００５９】
ＲＭＢ
書込トランザクション中に発行されるこのコマンドにより、制御ブロック４６チップがユーザアレイ４２のユーザチップに対してグローバルセットリセット（「ＧＳＲ」）を生成し、制御チップが再プログラミングされる。すべての内部ラッチはリセットされるが、ユーザチップの構成は変更されない。読出されるのを待機していたデータがすべて失われることとなる。
【００６０】
ＲＵＣ
書込トランザクション中に発行されるこのコマンドにより、制御チップが、ユーザアレイ４２の４つのユーザＦＰＧＡすべてに対するＧＳＲ信号を生成する。すべての内部ラッチがリセットされるが、構成は変更されない。いずれのオペランドも失われるが、制御ブロック４６チップにおいて読出されるのを待機しているデータは失われることはない。
【００６１】
ＲＥＣＯＮ
書込トランザクション中に発行されるこのコマンドにより、制御チップが、ユーザアレイ４２の４つのユーザＦＰＧＡを、ＳＥＬ［２：０］により選択されるＲＯＭとともに再構成する。依然として処理中のいずれのオペランドも失われるが、制御チップにおいて読出されるのを待機しているデータは失われることはない。
【００６２】
ＬＡＳＴＯＰ
このコマンドは書込トランザクション中に発行されて、ＭＡＰ素子１１２制御ブロック４６チップに、これ以上オペランドを送らないこととパイプラインをフラッシュ（flush）すべきであることとを知らせる。制御チップはパイプラインカウンタを開始し、パイプラインの深さに達するまで読出データを与え続ける。
【００６３】
ＷＲＴＯＰ
このコマンドは書込トランザクション中に発行されて、ＭＡＰ素子１１２制御ブロック４６チップに、それがユーザ回路に直接送られる有効オペランドを受取っていることを知らせる。
【００６４】
ＤＯＮＥ
このコマンドは書込トランザクション中に発行されて、ＭＡＰ素子１１２制御ブロック４６チップに、プロセッサ１２がＭＡＰ素子１１２の使用を終えたことを知らせる。制御チップはステータスワードにおけるビジービットをリセットし、新しいユーザを待つ。ユーザ回路に現在ロードされている構成は変更されない。
【００６５】
ＬＤＲＯＭ
このコマンドは書込トランザクション中に発行されて、ＭＡＰ素子１１２制御ブロック４６チップに、ＳＥＬ［２：０］により特定されるＲＯＭがアドレス０で開始する入力バッファ４０の内容を再ロードされるべきことを知らせる。これにより、８つのオンボードアルゴリズムのうち１つに不揮発性変化がもたらされることとなる。
【００６６】
ＳＴＡＲＴ
このコマンドは書込トランザクション中に発行され、スタートアドレス、ストップアドレス、自動／ユーザ選択およびストライドを入力コントローラに送る。次いで、この入力コントローラが入力バッファ４０を制御し、ストップアドレスがヒットされるまで、これらのパラメータを用いてユーザアレイ４２のユーザチップにオペランドを転送し始める。この命令に伴うデータワード０は、ビット０から２０にスタートアドレス、ビット２３から４３にストップアドレス、ビット４６から５１にストライド、および、ビット位置５４にユーザ／自動ビットを含む。すべての場合、各ビット群の最下位ビット（「ＬＳＢ」）は、その値のＬＳＢを含む。
【００６７】
ＲＤＳＴＡＴ
このコマンドは読出トランザクション中に発行されて、ステータスワードをプロセッサ１２に戻すようにする。このトランザクションは、ＬＡＳＴＯＰコマンドの後に続く場合、パイプラインカウンタを増分することはない。ステータスワードの詳細は、後の表４に
示される。
【００６８】
ＲＤＤＡＴ
このコマンドは読出トランザクション中に発行されて、２つのデータワードをプロセッサ１２に戻すようにする。このトランザクションは、ＬＡＳＴＯＰコマンドの後に続く場合、パイプラインカウンタを増分することとなる。ステータスワードの詳細も表４に示される。
【００６９】
ＲＤＤＡＳＴ
このコマンドは読出トランザクション中に発行されて、ステータスワードおよびデータワードをプロセッサ１２に戻すようにする。
【００７０】
ＳＥＬ［２：０］デコード
ＳＥＬ［２：０］ビットは２つの目的のために用いられる。ＲＥＣＯＮまたはＬＤＲＯＭコマンドとともに用いられる場合、これらは、８つのオンボードＲＯＭセットのうちいずれがその命令に対して用いられるのかを決定する。これは以下の表３に規定される。
【００７１】
【表３】
0004713080.tif 000004
【００７２】
ステータスワード構造
読出トランザクションが発生するたびに、その読出を発行するプロセッサ１２にステータスワードを戻す。この６４ビットワードの構造は以下のとおりである。
【００７３】
【表４】
0004713080.tif 000005
【００７４】
単一ＭＡＰ素子動作
ＭＡＰ素子１１２の通常の動作は以下のとおりである。電源投入後、ＭＡＰ素子１１２制御ブロック４６チップは、それ自体を自動的に構成およびリセットする。ユーザアレイ４２の４つのユーザチップにはいかなる構成も存在しない。ＭＡＰ素子１１２を用いることを欲するプロセッサ１２は、まず、ＲＤＳＴＡＴコマンドをＭＡＰ素子１１２に送る。
【００７５】
ＭＡＰ素子１１２が現在使用中でない場合、ステータスワードはビット６３「０」（ビジーでない）とともに戻され、このビジービットは、次いで、ＭＡＰ素子１１２上で１にセットされる。さらなるＲＤＳＴＡＴまたはＲＤＤＡＳＴコマンドはいずれも、ＭＡＰ素子１１２がビジーであることを示す。
【００７６】
ビジービットを評価し、それが「ロー」であることを観察した後、プロセッサ１２は、セットされた適切な構成ＲＯＭ選択ビットとともにＲＥＣＯＮコマンドを発行する。これにより、ＭＡＰ素子１１２がユーザアレイ４２のユーザチップを構成する。これが起こっている間、ステータスビット６０は「ロー」である。プロセッサ１２はＲＤＳＴＡＴを発行し、ビット６０をそれが「ハイ」に戻るまで評価する。この時点では、構成が完了し、ユーザアレイ４２のユーザチップはそれら自体をリセットして、内部レジスタをすべてクリアしている。次いで、ユーザはＲＵＣコマンドを発行して、ユーザアレイ４２または制御ブロック４６回路に残された先のデータがいずれも確実にクリアされるようにする。
【００７７】
ここで、ユーザは、ＭＡＰ素子１１２に対してデータを提示するのに利用可能な２つの方法を有する。それは、２つのクワッドワードを一度にユーザアレイ４２のユーザチップに直接書込み得るか、または入力バッファ４０をロードし得るかのどちらかであり得る。
【００７８】
クワッドワードの書込は、少数の基準値をユーザアレイ４２に与えるのには有用であるが、未キャッシュの書込に対する各転送につき１２８ビットの制限のせいで、入力バッファ４０を用いるよりも低い帯域幅を有する。このモードを用いるために、ＷＲＴＯＰコマンドが送られ、これがユーザ回路に２つの６４ビットワードを引き渡す。アルゴリズムの以前の知識に基づいて、プログラムは、ＲＤＤＡＳＴを実行し得る前にオペランドをいくつ発行し得るか知っているはずである。構成後にステータスビット０から７を評価するこ
とにより、この計算に対するパイプラインの深さもまた示される。
【００７９】
大きなデータセットが演算される場合、または大量のオペランドが再利用される場合、入力データバッファ４０を用いるべきである。この発明の特定の実施例では、このバッファは、ＥＳＤＲＡＭメモリ記憶部の２Ｍクワッドワードを含み得る。このメモリはＭＡＰ素子１１２上に位置し、キャッシュライン書込の実行によりアクセスされる。これにより、トランザクションごとに４つの６４ビットワードをロードすることが可能となる。データセットがロードされると、ＳＴＡＲＴコマンドが発行される。
【００８０】
制御ブロック４６チップは、ロックアウトビットをアサートして、入力バッファ４０にアクセスしないようにメモリコントローラに信号を送ることとなる。これはまた、先に規定されたフィールドに従って、このトランザクションのデータワード「０」を評価することとなる。
【００８１】
自動／ユーザビットが「１」である場合、アドレスは制御ブロック４６チップにより自動的に生成される。第１のアドレスは、転送されたスタートアドレスである。次いで、このアドレスは、ストップアドレスがヒットされるまでストライド値ずつ増分される。このアドレスはアクセスされる最後のアドレスである。
【００８２】
この時点で、ロックアウトビットが解除され、メモリコントローラは入力バッファ４０にアクセスできる。入力制御チップは、ロックアウトビットがセットされている間ＥＳＤＲＡＭメモリを維持するために、メモリコントローラにより与えられるリフレッシュ信号でもって入力バッファ４０へのアクセスをインタリーブしなければならないことに注目されたい。
【００８３】
自動／ユーザビットが「０」であった場合、アドレスがユーザアルゴリズムにより入力制御ブロック４６チップに与えられることを除いて、動作は同じである。
【００８４】
ＳＴＡＲＴコマンドが発行されると、プロセッサ１２は出力データの読出を開始することができる。ユーザはまずＲＤＤＡＳＴを発行しなければならず、これにより、ステータスワードおよびデータワードが戻されることになる。ステータスワードのビット６１が１である場合、データワードは有効である。ユーザは、ステータスワードビット６２が１となるまでこの処理を続ける。この時点で、ユーザは、ＭＡＰ素子１１２上の出力ＦＩＦＯ７４が少なくとも１２８の有効データワードを含み、次の６４回の読出のためにＲＤＤＡＴコマンドを用い得ることを知っている。このコマンドは、いずれのステータスもなしに２つの有効データワードを戻す。６４のＲＤＤＡＴコマンドの後、ユーザは再びＲＤＤＡＳＴコマンドならびにチェックビット６１および６２を発行しなければならない。いずれもセットされない場合、ＦＩＦＯ７４がこれ以上有するデータはない。６１のみがセットされる場合、プログラムはＲＤＤＡＳＴコマンドを発行し続けて、ＦＩＦＯ７４を空にすべきである。６１および６２がセットされる場合、プログラムは、別の組の６４のＲＤＤＡＴコマンドで再開することができ、すべての結果を受取るまでこの処理を繰返すことができる。
【００８５】
すべてのデータが読出され、ユーザがＭＡＰ素子１１２に対する要求を満たした後、ＤＯＮＥコマンドが発行される。これによりビジーフラグがクリアされ、他のプロセッサ１２がこれを用いることが可能となる。入力バッファ４０におけるデータは使用の際には破損されず、したがって、ＤＯＮＥが発行されるまで再利用され得ることに留意されたい。
【００８６】
連鎖したＭＡＰ動作
ＭＡＰ素子１１２は、ベクトル化されたモードまたはＶＭＡＰTMのモード（ＶＭＡＰは
この発明の譲受人である、SRC Computers, Inc.の商標）で実行する能力を有する。このモードにより、プロセッサ１２の介入なしに、１つのＭＡＰ素子１１２からの出力データを、次のＭＡＰ素子１１２のユーザアレイ４２におけるユーザチップに直接送ることが可能となる。代表的な実施例では、このリンクまたはチェーンポート２４は、最大で８００ＭＢ／秒で動作し、システムにおけるすべてのＭＡＰ素子１１２を連鎖して接続する。１本のチェーンは、少なくとも２つの、および最大ではこのシステムが含む限りのＭＡＰ素子１１２の連続した群で構成されなければならない。複数の重なり合わないチェーンは共存し得る。
【００８７】
このモードを用いるために、ユーザは、単に、チェーンイン［００：６３］ピンから入力データを受けるようアルゴリズムを設計する。出力データ経路は変更されず、常にメモリデータバスとチェーンアウト［００：６３］ピンとの両方へ向かう。
【００８８】
ＶＭＡＰモード動作は、そのチェーンにおける第１のＭＡＰ素子１１２上のデータバッファ４０にデータがロードされ、すべての結果が最後のＭＡＰ素子１１２から読出されることを除いては、単一のＭＡＰ素子１１２動作と同一である。連鎖したＭＡＰ素子１１２はそれらの入力バッファ４０から同時に読出され、これと同時にチェーンインポートからオペランドを受取る。これにより、用いられるバッファ４０が、連鎖動作中に基準を供給することが可能となる。これを行なうために、入力バッファ４０を最初にロードしなければならず、次いで、チェーンにおけるＭＡＰ素子すべてにＳＴＡＲＴコマンドを送らなければならない。チェーンにおける第１のＭＡＰ素子１１２は、ＳＴＡＲＴコマンドを受取る最後の素子でなければならない。チェーンにおける第１の素子以外のすべてのＭＡＰ素子１１２は、ユーザアドレスモードが選択されているＳＴＡＲＴコマンドを受取らなければならない。
【００８９】
ＬＤＲＯＭ動作
ＭＡＰ素子１１２は、システムの動作中にオンボードＲＯＭの内容を外部から再ロードし、これによりアルゴリズムを変更することを可能にする能力を有する。ユーザアレイ４２における４つのユーザチップすべてに対して同じＲＯＭが同時に更新されることに留意されたい。
【００９０】
これを達成するために、所与の組の４つのＲＯＭの構成ファイルが、シリアルストリームから１６ビットワードに変換される。次いで、各ＲＯＭファイルの第１のワードが組合されて、６４ビットワードを形成する。ユーザアレイ４２ファイルのユーザチップ０はビット０から１５を満たし、チップ１は１６から３１、チップ２は３１から４７、チップ３は４８から６４である。この処理は、４つの個々のファイルすべてが消費されるまで繰返される。これにより結果として、６４ビット幅および５１，９３５エントリの深さのファイルとなる。
【００９１】
この組における特定のＲＯＭの内容が変更されない場合、そのエントリはすべて０でなくてはならない。このファイルの最上部には、その組における更新すべきすべてのＲＯＭに対するすべてのビット位置においてすべて１を含むヘッダワードが追加される。変更されないＲＯＭはこのワードにゼロを含むこととなる。次いで、このファイルはＭＡＰ素子１１２入力バッファ４０へロードされ、そのヘッダはアドレス０へロードされる。
【００９２】
ＬＤＲＯＭコマンドを受取ると、入力コントローラは、ユーザアレイ４２のユーザチップに、これらをＲＯＭプログラマに変える特別なアルゴリズムをロードする。次いで、これらのチップは、入力バッファ４０におけるデータにアクセスし始め、ワード０を評価することとなる。
【００９３】
これが０である場合、そのチップによるさらなる動作は行われない。それが１である場合、このチップはデータを抽出し続け、これを順番に並べ、これをＬＤＲＯＭコマンド中にＳＥＬラインの状態により選択されたＲＯＭへロードする。これが起きている間、ステータスワードのビット６０は０である。完了すると、ビット６０は１に戻ることとなる。
【００９４】
ユーザは、有効なユーザアルゴリズムをロードしてユーザアレイ４２へ戻し、ＲＯＭプログラマアルゴリズムを上書きするために、ＬＤＲＯＭコマンドの後に常にＲＥＣＯＮコマンドを発行しなければならない。
【００９５】
さらに図１０には、この発明の別の代替的な実施例２３０の機能ブロック図が示され、ここでは、個々のＭＡＰ素子１１２は個々のメモリアレイと密接に関連付けられ、ＭＡＰ素子１１２の各々は、ＭＡＰ素子１１２を互いに直接連結するための独立したチェーンポート２４を含む。図示されるシステムはプロセッサアセンブリを含み、このプロセッサアセンブリは、（ＦＰＧＡを含み得る）プロセッサスイッチを介して書込トランク２６および読出トランク２８に双方向に結合される１つ以上のプロセッサ１２を含む。
【００９６】
図示される例では、複数のＭＡＰ素子１１２は、（同様にＦＰＧＡを含み得る）メモリコントローラ２３８の制御下で、特定のメモリアレイ２４６と関連付けられる。図示のとおり、メモリコントローラ２３８Aおよび２３８Bの各々は、プロセッサスイッチ２３４を介して、書込トランク２６および読出トランク２８によってプロセッサアセンブリ２３２に結合される。メモリコントローラの各々は、複数のＭＡＰ素子１１２および関連するメモリアレイ２４６に結合され得、さらに、前述のチェーンポート２４によって追加のＭＡＰ素子１１２に結合され得る。図示される実施例では、メモリコントローラ２３８Aは、１対のＭＡＰ素子、すなわち、メモリアレイ２４６A1に関連付けられる第１の構成バッファ２４０A1、ユーザアレイ２４２A1およびＦＩＦＯ２４４A1、ならびに、メモリアレイ２４６A2に関連付けられる第２の構成バッファ２４０A2、ユーザアレイ２４２A2およびＦＩＦＯ２４４A2と関連して動作する。同様に、メモリコントローラ２３８Bは、１対のＭＡＰ素子、すなわち、メモリアレイ２４６B1に関連付けられる第１の構成バッファ２４０B1、ユーザアレイ２４２B1およびＦＩＦＯ２４４B1、ならびに、メモリアレイ２４６B2に関連付けられる第２の構成バッファ２４０B2、ユーザアレイ２４２B2およびＦＩＦＯ２４４B2と関連して動作する。
【００９７】
さらに図１１Ａおよび図１１Ｂでは、別個のタイミング図が示され、システムクロック（「Sysclk」）信号に関連する入力および出力タイミングがそれぞれ表わされる。
【００９８】
インターフェイスタイミング
ＭＡＰ素子１１２ユーザアレイ４２は、入力メモリバス、入力バッファ４０またはチェーンポート２４からデータを受けることができる。先に説明および図示されたこの発明の実施例では、これらのいずれかのソースからの６４ビットすべてが、制御ブロック４６から送られユーザアレイ４２のユーザチップにおける入力クロックをイネーブルにする、ライン６８上のＶＡＬＩＤ  ＩＮ信号（図８）とともに、４つのユーザチップ（図９の２０２、２０４、２０６および２０８）すべてに送られる。
【００９９】
この信号は、１つ、２つまたは４つのワードが転送されているかどうかに応じて、１０、２０または４０ナノ秒間、ハイに保たれる。ライン６８上のこのＶＡＬＩＤ  ＩＮ信号は、ユーザアレイ４２のユーザチップにおける入力ラッチのクロックイネーブルピンに接続する。次いで、これらのラッチはＭＡＰ素子１１２にユーザ回路を送る。種々の書込動作に対するタイミングが、図１１Ａに詳細に示される。
【０１００】
入力タイミング
アルゴリズム動作が完了した後、出力データは、ＤＯＵＴ［００：６３］ネットに接続されるピン上でユーザアレイ４２のユーザチップにおける６４ビットワードに形成される。これらのネットは、最終的にはメモリコントローラまたはチェーンにおける次のＭＡＰ素子１１２に読出データを与える、出力ＦＩＦＯ７４（図８）に接続する。６４ビットの結果を形成した後、ユーザ回路は「ＦＵＬＬ」信号が確実に「ロー」であるようにしなければならない。信号が「ロー」である場合、ユーザアレイ４２から制御ブロック４６とＦＩＦＯ７４上のＦＩＦＯ♯ＷＥ入力とに「ロー」を与えることにより転送を開始する。
【０１０１】
同時に、有効データはデータアウト（「ＤＯＵＴ」）ネット上に現われなければならない。このデータは１０ナノ秒間有効なままでなければならず、ＦＩＦＯ♯ＷＥは、この１０ナノ秒期間が終わるまで「ロー」のままでなければならない。複数のワードが同時に転送される場合、ＦＩＦＯ♯ＷＥ入力は、図１１Ｂに詳細に示されるように、この１０ナノ秒期間が終わるまで「ロー」のままでなければならない。
【０１０２】
出力タイミング
「読出」が発生して「読出」帯域幅を最大限にする前に、３つの結果ワードをユーザアレイ４２から転送することができる。出力ＦＩＦＯ７４（図８）は、図示される実施例では５１２ｋワードを保持することができる。３つのワードが制御ブロック４６に保持されると、ステータスワードにおけるワードカウンタはバイナリ「１１」を示すこととなる。
【０１０３】
パイプライン深さ
システムレベル動作を補助するために、ユーザアレイ４２はまた、制御ブロック４６にアルゴリズムのパイプライン深さを与えなければならない。この発明の特定の実施例では、これは、データ入力ワードを受取り、このデータを処理し、この結果をＦＩＦＯ７４へ転送し始めるのに必要な１００ＭＨｚクロックサイクルの数と等しくなるだろう。
【０１０４】
初期化パラメータまたは参照番号が実際のオペランドより前に送られるようなアルゴリズムである場合、パイプライン深さは、オペランドを処理するのに必要なクロックサイクルの数にのみ等しくなる。この深さは、ＦＰＧＡ２０２および／または２０４（図９）から、ネットＤＯＵＴ［６４：７１］上のスタティック８ビット番号として与えられる。これら８ビットの各々は一般的にユーザアレイ４２のＦＰＧＡのみから出力されるが、これら８ビットは両方のチップにわたって分散され得る。
【０１０５】
この発明の特定の実施例では、ＭＡＰ素子１１２上で用いられるＲＯＭは、２０ピンＰＬＣＣパッケージにおいてＡＴＭＥＬTMＡＴ１７ＬＶ０１０として都合よく設けられ得る。各ＲＯＭは、ユーザアレイ４２の４つのユーザＦＰＧＡのうちの１つに対する構成情報を含む。ユーザアレイ４２のユーザチップの各々に８つ以上のＲＯＭソケットを割当てることにより、最大８つ以上の固有のアルゴリズムを選択できるようにし得る。８つのＲＯＭを利用する実施例では、４つのユーザチップの各々に対してリストにされる第１のＲＯＭは、構成０ｈを選ぶことにより選択され得、最後のＲＯＭは構成８ｈを選ぶことにより選択され得る。
【０１０６】
ユーザアレイ４２の４つのユーザチップすべてがアルゴリズムにとって必要ではない場合、未使用のチップはそれらのＲＯＭソケットの設置を必要としない。しかしながら、ユーザチップのうち少なくとも１つは、たとえアルゴリズムにおいて用いられないとしても正確にプログラミングされたＲＯＭを常に含んでいなければならない。というのも、構成タイミングサイクルに関する信号が制御ブロックにより監視されるからである。ＤＩＮおよびＤＯＵＴ信号の両方に直接接続するユーザＦＰＧＡは、アルゴリズム回路を配置するときには常に最初に用いられるべきである。
【０１０７】
さらに図１２には、この発明のシステムおよび方法のための代表的な動作環境３００の略図が示され、これは、（たとえば、前出の図のマルチプロセッサコンピュータ１０またはコンピュータシステム２０を含む）たとえば、ＳＲＣ−６再構成可能なサーバ３０８に置換され得る典型的なウェブサイトサーバ３０６、または、オペレーティングシステムの単一のシステムイメージによりすべてのプロセッサが制御される１つ以上の再構成可能なプロセッサとともに１つ以上の業界標準のプロセッサを組込む他のコンピュータシステムを含む。この略図では、複数のパーソナルコンピュータ３０２または他の計算装置は、インターネット３０４を介して、（先行技術の実現例における）典型的なウェブサイトサーバ３０６、または（この発明のシステムおよび方法に従った）再構成可能なサーバ３０８に結合される。
【０１０８】
さらに図１３には、前出の図に示される典型的なウェブサイトサーバ３０６の従来の適用例における従来のデータ処理シーケンス３１０を例示するフローチャートが示される。シーケンス３１０は、典型的なウェブサイトサーバ３０６による処理のために、人口統計データ要素の数「Ｎ」の入力から開始する。次いで、これらのＮ個のデータ要素は、データ要素の最後が決定されるまでステップ３１４で連続して処理され、決定ステップ３１６で処理される。したがって、入力データ要素の処理を完了するのに、典型的なウェブサイトサーバ３０６のマイクロプロセッサによるＮ回の繰返しが必要とされる。
【０１０９】
この長期のデータ処理期間の後、典型的なウェブサイトサーバ３０６は、ステップ３１８で、特定のウェブサイト訪問者に特別に適応された新たなウェブページ内容を選択し始めることができ、これにより、更新されたサイト内容がステップ３２０で表示される。
【０１１０】
さらに図１４には、極めて高速のデータ処理シーケンス３３０において、図１２の再構成可能なサーバ３０８を利用する人口統計または他のデータの処理を例示する、対応するフローチャートが示される。処理シーケンス３３０が再び、入力ステップ３３２でサイトサーバによって処理するために、Ｎ個の人口統計データ要素もしくは他のセキュアソケット、データベースまたは他のデータの入力から開始する。重要なことには、再構成可能なサーバ３０８は、（ＭＡＰ素子などの）単一の再構成可能なプロセッサを用いることにより、その能力のおかげで、並行して個々のデータ要素を処理することができる。この能力とは、マイクロプロセッサ内に位置する１つ以上の処理ユニットを再利用することとは対照的に、このジョブのために特化された１つ以上の処理ユニットをインスタンス生成する能力である。示される具体的な実施例では、再構成可能なプロセッサのすべてはシステムのリソースすべてを共有し得、オペレーティングシステムの単一のシステムイメージにより制御され得るが、代替的な実施例では、クラスタ管理ソフトウェアを利用して、有効に、ユーザにはマイクロプロセッサのクラスタがオペレーティングシステムのただ単一のコピーとして見えるようにし得る。いずれにしても、ステップ３３６で新たな内容を選択し、ステップ３３８でこれを表示するべくこのサイトを準備するのに、ステップ３３４1から３３４Nの完了を１回繰返すだけでよい。
【０１１１】
この発明の１つ以上の特定の実施例およびＭＡＰ素子に関連してこの発明の原理を以上に記載したが、前述の記載は例示のためだけになされたものであり、この発明の範囲を限定するものではないことは明らかである。特に、前述の開示の教示により、関連技術の当業者には、ウェブサイトで異なる種類のデータを処理するのに用いるための他の変形例が提案されることがわかる。このような変形例は、それ自体が既に公知であり、かつ、この明細書中に既に記載された特徴の代わりにまたはそれに加えて用いることのできる他の特徴を含み得る。特許請求の範囲は、本願では特定の特徴の組合せに対して作成されているが、この明細書中に開示の範囲もまた、関連技術の当業者には明らかであろういかなる新規な特徴、または明示的もしくは暗示的に開示される特徴のいかなる新規な組合せ、またはこれらのいかなる一般化もしくは変形例も、これらがいずれかの請求項において現在ク
レームされるのと同じ発明に関連しているか否か、および、この発明が直面するのと同じ技術的な問題のいずれかもしくはすべてを緩和するか否かにかかわらず、包含するものであることを理解されたい。本出願人はこれにより、本願またはこれより発生するさらなる出願すべての審査手続期間中にそのような特徴および／またはそのような特徴の組合せに対し、新しい請求項を作成する権利を留保する。
【図面の簡単な説明】
【０１１２】
【図１】データに加えてコマンドをＭＡＰ素子に送るためにダイレクトメモリアクセス（「ＤＭＡ」）技術を用い得る代替的な実施例における上述の特許出願の開示に従って、マルチアダプティブプロセッサ（「ＭＡＰTM」）を用いるマルチプロセッサコンピュータアーキテクチャを示す簡略化された高度な機能ブロック図である。
【図２】この発明の特定の実施例に従って、たとえばコンピュータシステムメモリ空間に位置する複数のＭＡＰ素子を利用するマルチプロセッサコンピュータアーキテクチャとともに用いるための、可能なコンピュータアプリケーションプログラム分解処理シーケンスを示す簡略化された論理ブロック図である。
【図３】前出の図のＭＡＰ素子のうち具体的な個々の素子を示すより詳細な機能ブロック図であり、バンク制御論理、メモリアレイおよびそのＭＡＰアセンブリを示す図である。
【図４】前出の図のＭＡＰアセンブリの制御ブロックを示すより詳細な機能ブロック図であり、特定の実施例におけるそのユーザＦＰＧＡへの相互接続を示す図である。
【図５】個々のＭＡＰ素子が個々のプロセッサボードと密接に関連付けられ、ＭＡＰ素子の各々がＭＡＰ素子を互いに直接結合させるための独立したチェーンポートを含む、この発明の代替的な実施例を示す機能ブロック図である。
【図６】各々が、共通のメモリＤＭＡ能力をもたらすオンボードメモリと制御ブロックとを含む、個々のＭＡＰ素子を示す機能ブロック図である。
【図７】オンボードメモリ機能をその入力バッファおよび出力ＦＩＦＯ部分として示す、個々のＭＡＰ素子を示すさらなる機能ブロック図である。
【図８】図６および図７に示された個々のＭＡＰ素子を示すより詳細な機能ブロック図である。
【図９】たとえば、水平、垂直および斜めのバスを介して相互接続されて、単一のＦＰＧＡの容量を超える設計において拡張を可能にする４つのユーザＦＰＧＡを示すユーザアレイ相互接続図である。
【図１０】個々のＭＡＰ素子が個々のメモリアレイと密接に関連付けられ、ＭＡＰ素子の各々が、ＭＡＰ素子を互いに直接結合させるための独立したチェーンポートを含む、この発明の別の代替的な実施例を示す機能ブロック図である。
【図１１Ａ】システムクロック（「Sysclk」）信号に関連する入力および出力タイミングをそれぞれ示すタイミング図である。
【図１１Ｂ】システムクロック（「Sysclk」）信号に関連する入力および出力タイミングをそれぞれ示すタイミング図である。
【図１２】ＳＲＣ−６再構成可能なサーバと置換され得る典型的なウェブサイトサーバを含む、この発明のシステムおよび方法のための代表的な動作環境を示す略図である。
【図１３】前出の図に示される典型的なウェブサイトサーバの従来の適用例における従来のデータ処理シーケンスを示すフローチャートである。
【図１４】アクセスおよびデータ処理時間を大いに改善する、この発明のシステムおよび方法を実現するための再構成可能なサーバを利用する人口統計または他のデータの処理を示す、対応するフローチャートである。
【図１】
0004713080.tif 000006
【図２】
0004713080.tif 000007
【図３】
0004713080.tif 000008
【図４】
0004713080.tif 000009
【図５】
0004713080.tif 000010
【図６】
0004713080.tif 000011
【図７】
0004713080.tif 000012
【図８】
0004713080.tif 000013
【図９】
0004713080.tif 000014
【図１０】
0004713080.tif 000015
【図１１Ａ】
0004713080.tif 000016
【図１１Ｂ】
0004713080.tif 000017
【図１２】
0004713080.tif 000018
【図１３】
0004713080.tif 000019
【図１４】
0004713080.tif 000020