(57)【要約】計算マシンは第１バッファと該バッファと結合されたプロセッサとを含む。プロセッサは、アプリケーション、第１データ転送オブジェクト、並びに、第２データ転送オブジェクトを実行し、アプリケーションの制御下でデータを発行し、第１データ転送オブジェクトの制御下でその発行されたデータをバッファにロードし、そして、第２データ転送オブジェクトの制御下でバッファからその発行されたデータを検索する。代替的には、プロセッサは、データを検索して、第１データ転送オブジェクトの制御下でその検索されたデータをバッファにロードし、第２データ転送オブジェクトの制御下でバッファからそのデータをアンロードし、そして、アプリケーションの制御下でそのアンロードされたデータを処理する。計算マシンがプロセッサと結合されたハードウェアに組み込まれたパイプライン加速器を含むピア−ベクトル・マシンである場合、バッファ及びデータ転送オブジェクトはアプリケーション及び加速器の間でのデータの転送を補助する。【特許請求の範囲】
【請求項１】
計算マシンであって、
第１バッファと、
前記バッファと結合されたプロセッサと、を含み、
前記プロセッサが、
アプリケーション、第１データ転送オブジェクト、並びに、第２データ転送オブジェクトを実行し、
前記アプリケーションの制御下でデータを発行し、
前記第１データ転送オブジェクトの制御下で前記発行されたデータを前記バッファにロードし、
前記第２データ転送オブジェクトの制御下で前記バッファから前記発行されたデータを検索するように動作できる、計算マシン。
【請求項２】
前記第１及び第２のデータ転送オブジェクトが、同一オブジェクト・コードの第１及び第２の例証をそれぞれ含む、請求項１に記載の計算マシン。
【請求項３】
前記プロセッサが、
前記アプリケーションを実行して、前記アプリケーションの制御下で前記データを発行するように動作できる処理ユニットと、
前記第１及び第２のデータ転送オブジェクトを実行して、前記第１データ転送オブジェクトの制御下で前記バッファに前記発行されたデータをロードし、前記第２データ転送オブジェクトの制御下で前記発行されたデータを検索するように動作できるデータ転送ハンドラーを含む、請求項１に記載の計算マシン。
【請求項４】
前記プロセッサが、前記アプリケーションのスレッドを実行して、前記スレッドの制御下で前記データを発行するように更に動作できる、請求項１に記載の計算マシン。
【請求項５】
前記プロセッサが、
キュー・オブジェクト及びリーダ・オブジェクトを実行し、
前記キュー・オブジェクトの制御下で前記発行されたデータの前記バッファへのローディングを反映しているキュー値を記憶し、
前記リーダ・オブジェクトの制御下で前記キュー値を読み取り、
前記リーダ・オブジェクトの制御下で且つ前記キュー値に応じて、前記発行されたデータが前記バッファを専有していることを前記第２ソフトウェア・オブジェクトに通知し、
前記第２データ転送オブジェクトの制御下で且つ前記通知に応じて、前記記憶箇所から前記発行されたデータを検索するように更に動作できる、請求項１に記載の計算マシン。
【請求項６】
バスを更に含み、
前記プロセッサが通信オブジェクトを実行し、前記通信オブジェクトの制御下で前記検索されたデータを前記バスに駆動するように動作できる、請求項１に記載の計算マシン。
【請求項７】
第２バッファを更に含み、
前記プロセッサが、前記第２データ転送オブジェクトの制御下で、前記検索されたデータを前記第２バッファに提供するように動作できる、請求項１に記載の計算マシン。
【請求項８】
前記プロセッサが、前記第２データ転送オブジェクトの制御下で、ヘッダーと前記検索されたデータとを含むメッセージを生成するように更に動作できる、請求項１に記載の計算マシン。
【請求項９】
前記第１及び第２のデータ転送オブジェクトが同一オブジェクト・コードの第１及び第２の例証をそれぞれ含み、
前記プロセッサがオブジェクト・ファクトリーを実行して、前記オブジェクト・ファクトリーの制御下で前記オブジェクト・コードを生成するように動作できる、請求項１に記載の計算マシン。
【請求項１０】
計算マシンであって、
第１バッファと、
前記バッファと結合されたプロセッサと、を含み、
前記プロセッサが、
第１及び第２のデータ転送オブジェクトとアプリケーションとを実行し、
前記第１データ転送オブジェクトの制御下でデータを検索して前記検索されたデータを前記バッファにロードし、
前記第２データ転送オブジェクトの制御下で前記バッファから前記データをアンロードし、
前記アプリケーションの制御下で前記アンロードされたデータを処理するように動作できる、計算マシン。
【請求項１１】
前記第１及び第２のデータ転送オブジェクトが同一オブジェクト・コードの第１及び第２の例証をそれぞれに含む、請求項１０に記載の計算マシン。
【請求項１２】
前記プロセッサが、
前記アプリケーションを実行し、前記アプリケーションの制御下で前記アンロードされたデータを処理するように動作できる処理ユニットと、
前記第１及び第２のデータ転送オブジェクトを実行し、前記第１データ転送オブジェクトの制御下で前記バスから前記データを検索して該データを前記バッファにロードし、前記第２データ転送オブジェクトの制御下で前記バッファから前記データをアンロードするように動作できるデータ転送ハンドラーと、を含む、請求項１０に記載の計算マシン。
【請求項１３】
前記プロセッサが前記アプリケーションのスレッドを実行して、前記スレッドの制御下で前記アンロードされたデータを処理するように更に動作できる、請求項１０に記載の計算マシン。
【請求項１４】
前記プロセッサが、
キュー・オブジェクト及びリーダ・オブジェクトを実行し、
前記キュー・オブジェクトの制御下で前記発行されたデータの前記第１バッファへのローディングを反映しているキュー値を記憶し、
前記リーダ・オブジェクトの制御下で前記キュー値を読み取り、
前記リーダ・オブジェクトの制御下で且つ前記キュー値に応じて、前記発行されたデータが前記バッファを専有していることを前記第２データ転送オブジェクトに通知し、
前記第２データ転送オブジェクトの制御下で且つ前記通知に応じて前記バッファから前記発行されたデータをアンロードするように更に動作できる、請求項１０に記載の計算マシン。
【請求項１５】
第２バッファを更に含み、
前記プロセッサが前記第１データ転送オブジェクトの制御下で前記第２バッファから前記データを検索するように動作できる、請求項１０に記載の計算マシン。
【請求項１６】
バスを更に含み、
前記プロセッサが、通信オブジェクトを実行し、前記通信オブジェクトの制御下で前記バスから前記データを検索して、前記第１データ転送オブジェクトの制御下で前記通信オブジェクトから前記データを検索するように動作できる、請求項１０に記載の計算マシン。
【請求項１７】
前記第１及び第２のデータ転送オブジェクトが同一のオブジェクト・コードの第１及び第２の例証をそれぞれ含み、
前記プロセッサが、オブジェクト・ファクトリーを実行して、前記オブジェクト・ファクトリーの制御下で前記オブジェクト・コードを生成するように動作できる、請求項１０に記載の計算マシン。
【請求項１８】
前記プロセッサが、前記第１データ転送オブジェクトの制御下でヘッダー及び前記データを含むメッセージから前記データを回復するように動作できる、請求項１０に記載の計算マシン。
【請求項１９】
ピア−ベクトル・マシンであって
バッファと、
バスと、
前記バッファ及び前記バスの双方と結合されたプロセッサであり、
アプリケーション、第１及び第２のデータ転送オブジェクト、並びに、通信オブジェクトを実行し、
前記アプリケーションの制御下でデータを発行し、
前記第１データ転送オブジェクトの制御下で前記バッファに前記発行されたデータをロードし、
前記第２データ転送オブジェクトの制御下で前記バッファから前記発行されたデータを検索し、
前記通信オブジェクトの制御下で前記発行されたデータを前記バスに駆動するように動作できるプロセッサと、
前記バスと結合されて、前記バスから前記発行されたデータを受信して前記受信された発行データを処理するように動作できるパイプライン加速器と、を含むピア−ベクトル・マシン。
【請求項２０】
前記プロセッサが、前記第２データ転送オブジェクトの制御下で前記発行されたデータを含むメッセージを構築して、前記通信オブジェクトの制御下で前記バスに前記メッセージを駆動するように更に動作でき、
前記パイプライン加速器が、前記バスから前記メッセージを受信して、前記メッセージから前記発行されたデータを回復するように動作できる、請求項１９に記載のピア−ベクトル・マシン。
【請求項２１】
前記ホストプロセッサと結合されると共にオブジェクト・データを記憶するように動作できるレジストリを更に含み、
前記プロセッサが、
オブジェクト・ファクトリーを実行し、
前記オブジェクト・ファクトリーの制御下で、前記オブジェクト・データから、前記第１及び第２のデータ転送オブジェクトと前記通信オブジェクトとを生成するように動作できる、請求項１９に記載のピア−ベクトル・マシン。
【請求項２２】
ピア−ベクトル・マシンであって、
バッファと、
バスと、
前記バスと結合されると共にデータを生成してそのデータを前記バスに駆動するように動作できるパイプライン加速器と、
前記バッファ及び前記バスの双方と結合されたプロセッサと、を含み、
前記プロセッサが、
アプリケーション、第１及び第２のデータ転送オブジェクト、並びに、通信オブジェクトを実行し、
前記通信オブジェクトの制御下で前記バスから前記データを受信し、
前記第１データ転送オブジェクトの制御下で前記受信したデータを前記バッファにロードし、
前記第２データ転送オブジェクトの制御下で前記バッファから前記データをアンロードし、
前記アプリケーションの制御下で前記アンロードされたデータを処理するように動作できる、ピア−ベクトル・マシン。
【請求項２３】
前記パイプライン加速器が前記データを含むメッセージを構築してそのメッセージを前記バスに駆動するように更に動作でき、
前記プロセッサが、
前記通信オブジェクトの制御下で前記バスから前記メッセージを受信し、
前記第１データ転送オブジェクトの制御下で前記メッセージから前記データを回復するように動作できる、請求項２２に記載のピア−ベクトル・マシン。
【請求項２４】
前記ホストプロセッサと結合されると共にオブジェクト・データを記憶するように動作できるレジストリを更に含み、
前記プロセッサが、
オブジェクト・ファクトリーを実行し、
前記オブジェクト・ファクトリーの制御下で、前記オブジェクト・データから前記第１及び第２のデータ転送オブジェクトと前記通信オブジェクトを生成するように動作できる、請求項２２に記載のピア−ベクトル・マシン。
【請求項２５】
ピア−ベクトル・マシンであって、
第１バッファと、
バスと、
前記バッファ及び前記バスの双方と結合されたプロセッサであり、
コンフィギュレーション・マネージャ、第１及び第２のデータ転送オブジェクト、並びに、通信オブジェクトを実行し、
前記コンフィギュレーション・マネージャ及び前記第１データ転送オブジェクトの制御下でコンフィギュレーション・ファームウェアを前記バッファにロードし、
前記第２データ転送オブジェクトの制御下で前記バッファから前記コンフィギュレーション・ファームウェアを検索し、
前記通信オブジェクトの制御下で前記コンフィギュレーション・ファームウェアを前記バスに駆動するように動作できるプロセッサと、
前記バスと結合されると共に、前記コンフィギュレーション・ファームウェアを受信して、それ自体をそのコンフィギュレーション・ファームウェアで構成するように動作できるパイプライン加速器と、
を含むピア−ベクトル・マシン。
【請求項２６】
前記プロセッサが、前記第２データ転送オブジェクトの制御下で前記コンフィギュレーション・ファームウェアを含むメッセージを構築して、前記通信オブジェクトの制御下でそのメッセージを前記バスに駆動するように更に動作でき、
前記パイプライン加速器が前記バスから前記メッセージを受信して、そのメッセージから前記コンフィギュレーション・ファームウェアを回復するように動作できる、請求項２５に記載のピア−ベクトル・マシン。
【請求項２７】
前記プロセッサと結合されると共にコンフィギュレーション・データを記憶するように動作できるレジストリーを更に含み、
前記プロセッサが前記コンフィギュレーション・マネージャの制御下で前記コンフィギュレーション・データから前記コンフィギュレーション・ファームウェアを位置決めするように動作できる、請求項２５に記載のピア−ベクトル・マシン。
【請求項２８】
第２バッファを更に含み、
前記プロセッサが、
アプリケーションと第３及び第４のデータ転送オブジェクトとを実行し、
前記コンフィギュレーション・マネージャの制御下でコンフィギュレーション命令を生成し、
前記第３データ転送オブジェクトの制御下で前記コンフィギュレーション命令を前記第２バッファにロードし、
前記第４データ転送オブジェクトの制御下で前記第２バッファから前記コンフィギュレーション命令を検索し、
前記アプリケーションの制御下で、前記コンフィギュレーション命令と対応している動作を実行すべく前記アプリケーションを構成するように動作できる、請求項２５に記載のピア−ベクトル・マシン。
【請求項２９】
前記プロセッサが、
前記コンフィギュレーション・マネージャの制御下でコンフィギュレーション命令を生成し、
前記アプリケーションの制御下で、前記コンフィギュレーション命令と対応している動作を実行すべく前記アプリケーションを構成するように動作できる、請求項２５に記載のピア−ベクトル・マシン。
【請求項３０】
前記コンフィギュレーション・マネージャが、前記ファームウェアをロードする前に、前記パイプライン加速器が前記コンフィギュレーション・データによって規定されるコンフィギュレーションを支援することを確認するように動作できる、請求項２５に記載のピア−ベクトル・マシン。
【請求項３１】
ピア−ベクトル・マシンであって、
第１バッファと、
バスと、
前記バスと結合されると共に、例外データを生成して、その例外データを前記バスに駆動するように動作できるパイプライン加速器と、
前記バッファ及び前記バスの双方と結合されたプロセッサと、を含み、
前記プロセッサが、
例外マネージャ、第１及び第２のデータ転送オブジェクト、並びに、通信オブジェクトを実行し、
前記通信オブジェクトの制御下で前記バスから前記例外データを受信し、
前記第１データ転送オブジェクトの制御下で前記受信された例外データを前記バッファにロードし、
前記第２データ転送オブジェクトの制御下で前記バッファから前記例外データをアンロードし、
前記例外マネージャの制御下で前記アンロードされた例外データを処理するように動作できる、ピア−ベクトル・マシン。
【請求項３２】
前記パイプラインが、前記例外データを含むメッセージを構築して、そのメッセージを前記バスに駆動するように更に動作でき、
前記プロセッサが、前記通信オブジェクトの制御下で前記バスから前記メッセージを受信して、前記第１データ転送オブジェクトの制御下で前記メッセージから前記例外データを回復するように動作できる、請求項３１に記載のピア−ベクトル・マシン。
【請求項３３】
第２バッファを更に含み、
前記プロセッサが、
コンフィギュレーション・マネージャ及び、第３及び第４データ転送オブジェクトを実行し、
前記例外データに応じて、前記コンフィギュレーション・マネージャの制御下でコンフィギュレーション・ファームウェアを生成し、
前記第３データ転送オブジェクトの制御下で前記コンフィギュレーション・ファームウェアを前記第２バッファにロードし、
前記第４データ転送オブジェクトの制御下で前記第２バッファから前記コンフィギュレーション命令をアンロードし、
前記通信オブジェクトの制御下で前記コンフィギュレーション・ファームウェアを前記バスに駆動するように更に動作でき、
前記パイプライン加速器が、前記バスから前記コンフィギュレーション・ファームウェアを受信して、それ自体を該ファームウェアで再構成するように動作できる、請求項３１に記載のピア−ベクトル・マシン。
【請求項３４】
前記プロセッサが、
アプリケーション及びコンフィギュレーション・マネージャを実行し、
前記例外データに応じて、前記コンフィギュレーション・マネージャの制御下でコンフィギュレーション命令を生成し、
前記コンフィギュレーション命令に応じて、前記アプリケーションの制御下で前記アプリケーションを再構成するように更に動作できる、請求項３１に記載のピア−ベクトル・マシン。
【請求項３５】
ピア−ベクトル・マシンであって、
コンフィギュレーション・データを記憶するように動作できるコンフィギュレーション・レジストリと、
前記コンフィギュレーション・レジストリと結合されると共に、前記コンフィギュレーション・データからコンフィギュレーション・ファームウェアを位置決めするように動作できるプロセッサと、
前記プロセッサと結合されると共に、前記コンフィギュレーション・ファームウェアでそれ自体を構成するように動作できるパイプライン加速器と、
を含むピア−ベクトル・マシン。
【請求項３６】
ピア−ベクトル・マシンであって、
コンフィギュレーション・データを記憶するように動作できるコンフィギュレーション・レジストリと、
パイプライン加速器と、
前記コンフィギュレーション・レジストリ及び前記パイプライン加速器の双方と結合されると共に、前記コンフィギュレーション・データに応じてコンフィギュレーション・ファームウェアを検索して、そのコンフィギュレーション・ファームウェアで前記パイプライン加速器を構成するように動作できるプロセッサと、
を含むピア−ベクトル・マシン。
【請求項３７】
方法であって、
アプリケーションでデータを発行し、
第１データ転送オブジェクトで前記発行されたデータを第１バッファにロードし、
第２データ転送オブジェクトで前記バッファから前記発行されたデータを検索することを含む方法。
【請求項３８】
前記データを発行することが、前記アプリケーションのスレッドで前記データを発行することを含む、請求項３７に記載の方法。
【請求項３９】
前記バッファにおける前記発行されたデータの存在と対応するキュー値を生成し、
前記キュー値に応じて、前記発行されたデータが前記バッファを専有していることを前記第２データ転送オブジェクトに通知することを更に含み、
前記発行されたデータを検索することが、前記通知に応じて、前記第２データ転送オブジェクトで前記記憶箇所から前記発行されたデータを検索することを含む、請求項３７に記載の方法。
【請求項４０】
通信オブジェクトで前記検索されたデータをバスに駆動することを更に含む、請求項３７に記載の方法。
【請求項４１】
前記第２データ転送オブジェクトで前記検索されたデータを第２バスにロードすることを更に含む、請求項３７に記載の方法。
【請求項４２】
前記第２データ転送オブジェクトで前記検索されたデータに対するヘッダーを生成し、
前記第２データ転送オブジェクトで前記ヘッダー及び前記検索されたデータを１つのメッセージに組み合わせることを更に含む、請求項３７に記載の方法。
【請求項４３】
オブジェクト・ファクトリーでデータ転送オブジェクト・コードを生成し、
前記オブジェクト・コードの第１例証として前記第１データ転送オブジェクトを生成し、
前記オブジェクト・コードの第２例証として前記第２データ転送オブジェクトを生成することを更に含む、請求項３７に記載の方法。
【請求項４４】
パイプライン加速器で前記第２データ転送オブジェクトから前記データを受信して処理することを更に含む、請求項３７に記載の方法。
【請求項４５】
方法であって、
第１データ転送オブジェクトで、データを検索して、その検索されたデータを第１バッファにロードし、
第２データ転送オブジェクトで前記バッファから前記データをアンロードし、
アプリケーションで前記アンロードされたデータを処理することを含む方法。
【請求項４６】
前記アンロードされたデータを処理することが、前記アプリケーションのスレッドで前記アンロードされたデータを処理することを含む、請求項４５に記載の方法。
【請求項４７】
前記バッファにおける前記データの存在と対応するキュー値を生成し、
前記キュー値に応じて、前記データが前記バッファを専有していることを前記第２データ転送オブジェクトに通知し、
前記データをアンロードすることが、前記通知に応じて、前記第１データ転送オブジェクトで前記バッファから前記データをアンロードすることを含む、請求項４５に記載の方法。
【請求項４８】
前記データを検索することが、前記第１データ転送オブジェクトで第２バッファから前記データを検索することを含む、請求項４５に記載の方法。
【請求項４９】
通信オブジェクトでバスから前記データを受信することを更に含み、
前記データを検索することが、前記第１データ転送オブジェクトで前記通信オブジェクトから前記データを検索することを含む、請求項４５に記載の方法。
【請求項５０】
パイプライン加速器で前記データを前記第１データ転送オブジェクトに提供することを更に含む、請求項４５に記載の方法。
【請求項５１】
方法であって、
プロセッサ上で走っているアプリケーションでデータを発行し、
前記プロセッサ上で走っている第１データ転送オブジェクトで前記発行されたデータをバッファにロードし、
前記プロセッサ上で走っている第２データ転送オブジェクトで前記バッファから前記発行されたデータを検索し、
前記プロセッサ上で走っている通信オブジェクトで前記検索された発行データをバスに駆動し、
前記バスから前記発行されたデータを受信して、パイプライン加速器で前記発行されたデータを処理することを含む方法。
【請求項５２】
前記第２データ転送オブジェクトで、ヘッダーと前記発行されたデータとを含むメッセージを生成し、
前記データを前記バスに駆動することが、前記通信オブジェクトで前記メッセージを前記バスに駆動することを含み、
前記発行されたデータを受信して処理することが、前記パイプライン加速器で、前記メッセージを受信してそのメッセージから前記発行されたデータを回復することを含む、請求項５１に記載の方法。
【請求項５３】
方法であって、
パイプライン加速器で、データを生成してそのデータをバスに駆動し、
通信オブジェクトで、前記バスから前記データを受信し、
第１データ転送オブジェクトで、前記受信されたデータをバッファにロードし、
第２データ転送オブジェクトで、前記バッファから前記データをアンロードし、
アプリケーションで、前記アンロードされたデータを処理することを含む方法。
【請求項５４】
前記データを生成することが、前記パイプライン加速器で、ヘッダー及び前記データを含むメッセージを構築することを含み、
前記データを駆動することが、前記パイプライン加速器で、前記メッセージを前記バスに駆動することを含み、
前記データを受信することが、前記通信オブジェクトで、前記バスから前記メッセージを受信することを含み、
前記第１データ転送オブジェクトで前記メッセージから前記データを回復することを更に含む、請求項５３に記載の方法。
【請求項５５】
コンフィギュレーション・マネージャでコンフィギュレーション・ファームウェアを検索し、
第１通信オブジェクトで、前記コンフィギュレーション・ファームウェアを第１バッファにロードし、
第２通信オブジェクトで、前記バッファから前記コンフィギュレーション・ファームウェアを検索し、
通信オブジェクトで、前記コンフィギュレーション・ファームウェアをバスに駆動し、
パイプライン加速器で、前記コンフィギュレーション・ファームウェアを受信し、
前記コンフィギュレーション・ファームウェアで、前記パイプライン加速器を構成することを含む方法。
【請求項５６】
前記コンフィギュレーション・マネージャでコンフィギュレーション命令を生成し、
前記アプリケーションを構成して、前記コンフィギュレーション命令と対応している動作を実行することを更に含む、請求項５５に記載の方法。
【請求項５７】
前記コンフィギュレーション・マネージャでコンフィギュレーション命令を生成し、
第３通信オブジェクトで、前記コンフィギュレーション命令を第２バッファにロードし、
第４通信オブジェクトで、前記第２バッファから前記コンフィギュレーション命令を検索し、
前記アプリケーションを構成して、前記コンフィギュレーション命令と対応している動作を実行することを更に含む、請求項５５に記載の方法。
【請求項５８】
方法であって、
パイプライン加速器で、例外データを生成してその例外データをバスに駆動し、
通信オブジェクトで、前記バスから前記例外データを受信し、
第１データ転送オブジェクトで、前記受信された例外データをバッファにロードし、
第２データ転送オブジェクトで、前記バッファから前記例外データをアンロードし、
例外マネージャで、前記アンロードされた例外データを処理することを含む方法。
【請求項５９】
前記例外データに応じて、コンフィギュレーション・マネージャでコンフィギュレーション・ファームウェアを検索し、
第３転送オブジェクトで、前記コンフィギュレーション・ファームウェアを第２バッファにロードし、
第４データ転送オブジェクトで、前記第２バッファから前記コンフィギュレーション命令をアンロードし、
前記通信オブジェクトで、前記コンフィギュレーション・ファームウェアを前記バスに駆動し、
前記コンフィギュレーション・ファームウェアで、前記パイプライン加速器を再構成することを更に含む、請求項５８に記載の方法。
【請求項６０】
エラー・データに応じて、コンフィギュレーション・マネージャでコンフィギュレーション命令を生成し、
前記コンフィギュレーション命令に応じて前記アプリケーションを再構成することを更に含む、請求項５８に記載の方法。
【請求項６１】
方法であって、
計算マシンの初期化中、コンフィギュレーション・レジストリに記憶されたコンフィギュレーション・データによって指されたコンフィギュレーション・ファームウェアを検索し、
前記コンフィギュレーション・ファームウェアで、前記計算マシンのパイプライン加速器を構成することを含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
＜優先権の請求＞
この出願は、下記の特許文献１に対する優先権を請求するものであり、引用することでここに合体させる。
【特許文献１】米国仮出願第６０／４２２，５０３号（２００２年１０月３１日出願）
【０００２】
＜関連出願の相互参照＞
この出願は、「改善された計算アーキテクチャ、関連システム、並びに、方法」と題された下記の特許文献２、「改善された計算アーキテクチャ用パイプライン加速器、関連システム、並びに、方法」と題された下記の特許文献３、「プログラマブル回路、関連計算マシン、並びに、方法」と題された下記の特許文献４、「多数パイプライン・ユニットを有するパイプライン加速器、関連計算マシン、並びに、方法」と題された下記の特許文献５、と関連し、これら特許文献は全て２００３年１０月９日に出願され、共通の所有者を有し、引用することでここに合体させる。
【特許文献２】米国出願第１０／６８４，１０２号
【特許文献３】米国出願第１０／６８３，９２９号
【特許文献４】米国出願第１０／６８４，０５７号
【特許文献５】米国出願第１０／６８３，９３２号
【背景技術】
【０００３】
比較的大量のデータを比較的短い期間で処理する通常の計算アーキテクチャは、処理負担を分担する多数の相互接続プロセッサを含む。処理負担を分担することによって、これら多数のプロセッサは、しばしば、所与のクロック周波数で単一プロセッサができるものよりよりも迅速にデータを処理できる。例えば、これらプロセッサの各々はデータの各部分を処理できるか、或は、処理アルゴリズムの各部分を実行できる。
【０００４】
図１は、多数プロセッサ・アーキテクチャを有する従来の計算マシン１０の概略ブロック図である。この計算マシン１０は、マスター・プロセッサ１２と、相互に通信すると共に該マスター・プロセッサとバス１６を介して通信する共同プロセッサ１４1−１４nと、遠隔装置（図１では不図示）から生データを受け取る入力ポート１８と、該遠隔装置に処理データを提供する出力ポート２０とを含む。また、計算マシン１０はマスター・プロセッサ１２に対するメモリ２２と、共同プロセッサ１４1−１４nに対する各メモリ２４1−２４nと、マスター・プロセッサ及び共同プロセッサがバス１６を介して共有するメモリ２６とを含む。メモリ２２はマスター・プロセッサ１２に対するプログラム及び作業メモリの双方の役割を果たし、各メモリ２４1−２４nは各共同メモリ１４1−１４nに対するプログラム及び作業メモリの双方の役割を果たす。共有されたメモリ２６は、マスター・プロセッサ１２及び共同プロセッサ１４がそれらの間でデータを転送すること、ポート１８を介して遠隔装置からデータを転送すること、ポート２０を介して遠隔装置にデータを転送することを可能としている。またマスター・プロセッサ１２及び共同プロセッサ１４は、マシン１０が生データを処理する速度を制御する共通クロック信号を受け取る。
【０００５】
一般に、計算マシン１０は、マスター・プロセッサ１２及び共同プロセッサ１４の間で生データの処理を効果的に分割する。ソナー・アレイ等の遠隔ソース（図１では不図示）は、ポート１８を介して、生データに対する先入れ先出し（ＦＩＦＯ）バッファ（不図示）として作用する共有メモリ２６の１つの区分に生データをロードする。マスター・プロセッサ１２はバス１６を介してメモリ２６から生データを検索して、マスター・プロセッサ及び共同プロセッサ１４はその生データを処理して、バス１６を介して必要に応じてデータをそれらの間に転送する。マスター・プロセッサ１２はその処理データを共有メモリ２６内に規定された別のＦＩＦＯバッファ（不図示）にロードし、遠隔ソースがポート２０を介してこのＦＩＦＯからその処理データを検索する。
【０００６】
演算例において、計算マシン１０は生データに対するｎ＋１個の各演算を順次実行することによって該生データを処理し、これら演算は一体的に高速フーリエ変換（ＦＦＴ）等の処理アルゴリズムを構成する。より詳細には、マシン１０はマスター・プロセッサ１２及び共同プロセッサ１４からのデータ−処理パイプラインを形成する。クロック信号の所与の周波数で、そうしたパイプラインはしばしばマシン１０が単一プロセッサのみを有するマシンよりも高速に生データを処理することを可能としている。
【０００７】
メモリ２６内における生データＦＩＦＯ（不図示）からの生データ検索後、マスター・プロセッサ１２はその生データに対して三角関数等の第１番演算を実行する。この演算は第１番結果を生み出し、それをプロセッサ１２がメモリ２６内に規定された第１番結果ＦＩＦＯ（不図示）に記憶する。典型的には、プロセッサ１２はメモリ２２内に記憶されたプログラムを実行し、そのプログラムの制御の下で上述した動作を実行する。プロセッサ１２はメモリ２２を作業メモリとしても使用し得て、当該プロセッサが第１番演算の中間期間に生成するデータを一時的に記憶する。
【０００８】
次に、メモリ２６内における第１番結果ＦＩＦＯ（不図示）からの第１番結果検索後、共同プロセッサ１４1はその第１番結果に対して対数関数等の第２番演算を実行する。この第２番演算は第２番結果を生み出し、それを共同プロセッサ１４1がメモリ２６内に規定された第２番結果ＦＩＦＯ（不図示）に記憶する。典型的には、共同プロセッサ１４1はメモリ２４1内に記憶されたプログラムを実行し、そのプログラムの制御の下で上述した動作を実行する。共同プロセッサ１４1はメモリ２４1を作業メモリとしても使用し得て、当該共同プロセッサが第２番演算の中間期間に生成するデータを一時的に記憶する。
【０００９】
次に共同プロセッサ２４2−２４nは、共同プロセッサ２４1に対して先に議論されたものと同様に、（第２番結果−第（ｎ−１）番）結果に対して（第３番演算−第ｎ番）演算を順次実行する。
【００１０】
共同プロセッサ２４nによって実行される第ｎ番演算は最終結果、即ち処理データを生み出す。共同プロセッサ２４nはその処理データをメモリ２６内に規定された処理データＦＩＦＯ（不図示）内にロードし、遠隔装置（図１では不図示）がこのＦＩＦＯからその処理データを検索する。
【００１１】
マスター・プロセッサ１２及び共同プロセッサ１４は処理アルゴリズムの種々の演算を同時に実行するので、計算マシン１０は、しばしば、種々の演算を順次実行する単一プロセッサを有する計算マシンよりも生データを高速に処理することができる。詳細には、単一プロセッサは、生データから成る先行集合に対する全（ｎ＋１）個の演算を実行するまで、生データから成る新しい集合を検索できない。しかし、以上に議論したパイプライン技術を用いて、マスター・プロセッサ１２は第１演算だけを実行後に生データから成る新しい集合を検索できる。結果として、所与のクロック周波数でこのパイプライン技術は、単一プロセッサ・マシン（図１では不図示）と比較して約ｎ＋１倍だけマシン１０が生データを処理する速度を増大することができる。
【００１２】
代替的には、計算マシン１０は、生データに対するＦＦＴ等の処理アルゴリズムの（ｎ＋１）例を同時に実行することによって該生データを並列して処理し得る。即ち、もしそのアルゴリズムが先行する例において先に記載されたような（ｎ＋１）個の順次演算を含めば、マスター・プロセッサ１２及び共同プロセッサ１４の各々は生データからそれぞれが成る各集合に対して、順次、全（ｎ＋１）個の演算を実行する。その結果として、所与のクロック周波数で、先のパイプライン技術と同様のこの並列処理技術は、単一プロセッサ・マシン（図１では不図示）と比較して約ｎ＋１倍だけマシン１０が生データを処理する速度を増大することができる。
【００１３】
残念ながら、計算マシン１０は単一プロセッサ・計算マシン（図１では不図示）と比べてより迅速にデータを処理できるが、マシン１０のデータ処理速度はしばしばプロセッサ・クロックの周波数より非常に小さい。詳細には、計算マシン１０のデータ処理速度はマスター・プロセッサ１２及び共同プロセッサ１４がデータ処理するのに必要な時間によって制限される。簡略化のため、この速度制限の例はマスター・プロセッサ１２と連携して議論されているが、この議論は共同プロセッサ１４にも適用されることを理解して頂きたい。先に議論されたように、マスター・プロセッサ１２は所望の方式でデータを操作すべくプロセッサを制御するプログラムを実行する。このプログラムはプロセッサ１２が実行する複数の命令から成るシーケンスを含む。残念ながら、プロセッサ１２は典型的には単一命令を実行するために多数のクロック・サイクルを必要とし、そしてしばしばデータの単一値を処理すべく多数の命令を実行しなければならない。例えば、プロセッサ１２が第１データ値Ａ（不図示）を第２データ値Ｂ（不図示）で乗算することを仮定する。第１クロック・サイクル中、プロセッサ１２はメモリ２２から乗算命令を検索する。第２及び第３クロック・サイクル中、プロセッサ１２はメモリ２６からＡ及びＢをそれぞれ検索する。第４クロック・サイクル中、プロセッサ１２はＡ及びＢを乗算し、そして第５クロック・サイクル中に結果としての積をメモリ２２或は２６に記憶するか、或は、その結果としての積を遠隔装置（不図示）に提供する。これは最良ケースのシナリオであり、その理由は多くの場合にプロセッサ１２はカウンタの初期化及び閉鎖等のオーバーヘッド・タスクに対して付加的なクロック・サイクルを必要とするからである。それ故に、よくてもプロセッサ１２はＡ及びＢを処理すべく５クロック・サイクルを必要とするか、或は、１データ値当たり平均２．５クロック・サイクルを必要とする。
【００１４】
結果として、計算マシン１０がデータを処理する速度は、しばしば、マスター・プロセッサ１２及び共同プロセッサ１４を駆動するクロックの周波数より非常に低い。例えば、もしプロセッサ１２は１．０ギガヘルツ（ＧＨｚ）でクロックされるが、１データ値当たり平均２．５クロック・サイクルを必要とすれば、効果的なデータ処理速度は（１．０ＧＨｚ）／２．５＝０．４ＧＨｚと同等である。この効果的なデータ処理速度は、しばしば、１秒当たり演算数の単位で特徴付けされる。それ故に、この例において、１．０ＧＨｚのクロック速度で、プロセッサ１２は０．４ギガ演算数／秒（Ｇｏｐｓ）で使用限界が定められる。
【００１５】
図２は、所与クロック周波数で且つしばしば該パイプラインがクロックされる速度と略同一速度で、プロセッサが可能であるよりは高速で典型的にはデータを処理できるハードウェアに組み込まれたデータ・パイプライン３０のブロック線図である。パイプライン３０は、プログラム命令を実行することなく、各データに対する各演算を各々が実行する演算子回路３２1−３２nを含む。即ち、所望の演算は回路３２内に「書き込み」が為されて、それがプログラム命令の必要性なしに自動的にその演算を具現化するように為す。プログラム命令の実行と関連されたオーバーヘッドを減ずることによって、パイプライン３０は所与のクロック周波数でプロセッサが可能であるよりは単位秒当たりより多くの演算を典型的には実行する。
【００１６】
例えば、パイプライン３０は所与のクロック周波数でプロセッサが可能であるよりは高速で以下の数式１をしばしば解くことができる。
Ｙ（ｘk）＝（５ｘk＋３）２xk
ここで、ｘkは複数の生データ値から成るシーケンスを表す。この例において、演算子回路３２1は５ｘkを計算する乗算器であり、回路３２2は５ｘk＋３を計算する加算器であり、そして回路３２n（ｎ＝３）は（５ｘk＋３）２xkを計算する乗算器である。
【００１７】
第１クロック・サイクルｋ＝１中、回路３２1はデータ値ｘ1を受け取って、それを５で乗じて、５ｘ1を生成する。
【００１８】
第２クロック・サイクルｋ＝２中、回路３２2は回路３２1から５ｘ1を受け取って、３を加えて、５ｘ1＋３を生成する。またこの第２クロック・サイクル中に回路３２1は５ｘ2を生成する。
【００１９】
第３クロック・サイクルｋ＝３中、回路３２3は回路３２2から５ｘ1＋３を受け取って、２x1で乗じて（効果としては、ｘ1だけ５ｘ1＋３を左シフトする）、第１結果（５ｘ1＋３）２x1を生成する。またこの第３クロック・サイクル中に回路３２1は５ｘ3を生成し、回路３２2は５ｘ2＋３を生成する。
【００２０】
このようにしてパイプライン３０は、全ての生データ値が処理されるまで、引き続く生データ値ｘkの処理を続行する。
【００２１】
結果として、生データ値ｘ1の受け取り後の２つのクロック・サイクルの遅延、即ち、この遅延はパイプライン３０の待ち時間としばしば呼称され、パイプラインは結果（５ｘ1＋３）２x1を生成し、その後、１つの結果を生成する、即ち各クロック・サイクル毎に（５ｘ2＋３）２x2、（５ｘ3＋３）２x3、・・・、５ｘn＋３）２xnを生成する。
【００２２】
待ち時間を無視して、パイプライン３０はこうしてクロック速度と同等のデータ処理速度を有する。比較して、マスター・プロセッサ１２及び共同プロセッサ１４（図１）が先の例におけるようにクロック速度の０．４倍であるデータ処理速度を有すると仮定すれば、パイプライン３０は、所与のクロック速度で、計算マシン１０（図１）よりも２．５倍高速でデータを処理できる。
【００２３】
更に図２で参照されるように、設計者はフィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）等のプログラマブル・ロジックＩＣ（ＰＬＩＣ）にパイプライン３０を具現化することを選ぶ可能性があり、その理由はＰＬＩＣが特殊用途ＩＣ（ＡＳＩＣ）が為すよりも多くの設計及び変更の柔軟性を許容するからである。ＰＬＩＣ内にハードウェアに組み込まれた接続を構成するため、設計者はＰＬＩＣ内に配置された相互接続構成レジスタを単に所定バイナリー状態に設定する。全てのこうしたバイナリー状態の組み合わせはしばしば「ファームウェア」と呼称される。典型的には、設計者はこのファームウェアをＰＬＩＣと結合された不揮発性メモリ（図２では不図示）内にロードする。ＰＬＩＣを「ターンオン」すると、それはファームウェアをそのメモリから相互接続構成レジスタにダウンロードする。それ故に、ＰＬＩＣの機能を変更すべく、設計者は単にそのファームウェアを変更して、ＰＬＩＣがその変更されたファームウェアを相互接続構成レジスタにダウンロードすることを可能とする。ファームウェアを単に変更することによってＰＬＩＣを変更する能力は、モデル作成段階中や「フィールド内」にパイプライン３０をアップグレードするために特に有用である。
【００２４】
残念ながら、ハードウェアに組み込まれたパイプライン３０は、典型的にはすべてのアルゴリズムを実行できるわけではなく、特に重要な意思決定を引き起こすようなアルゴリズムを実行できない。プロセッサは、典型的には、意思決定命令（例えば、「もしＡであれば、Ｂへ行き、またＣへ行く」のように、条件命令）を、比肩する長さの演算命令（例えば、「Ａ＋Ｂ」）を実行できる程に高速に実行できる。しかしパイプライン３０は、比較的単純な決定（例えば、「Ａ＞Ｂ？」）を為し得るが、典型的には比較的複雑な決定（例えば、「もしＡであれば、Ｂへ行き、またＣへ行く」）を実行することができない。そして、そうした複雑な決定を実行すべくパイプライン３０を設計できるが、必要とされる回路のサイズ及び複雑性はしばしばそうした設計を非現実的に為し、特にアルゴリズムが多数の種々の複雑な決定を含む場合にそうである。
【００２５】
結果として、プロセッサは典型的には重要な意思決定を必要とする用途において使用され、ハードウェアに組み込まれたパイプラインは殆ど意思決定が為されないか或は意思決定されない「ナンバークランチング（数値データ処理）」用途に典型的には限定される。
【００２６】
更には、下記に議論されるように、典型的には、特にパイプライン３０が多数のＰＬＩＣを含む場合、図２のパイプライン３０等のハードウェアに組み込まれたパイプラインを設計／変更するよりも、図１の計算マシン１０等のプロセッサに基づく計算マシンを設計／変更することが非常に易しい。
【００２７】
プロセッサ及びそれらの周辺機器（例えば、メモリ）等の計算構成要素は、典型的には、プロセッサに基づく計算マシンを形成すべくそれら構成要素の相互接続を補助する工業規格通信インターフェースを含む。
【００２８】
典型的には、規格通信インターフェースは２つの層、即ち、物理層及びサービス層を含む。
【００２９】
物理層は、回路とこの回路のインターフェース及び動作パラメータを形成する対応回路相互接続とを含む。例えば、物理層はそれら構成要素を１つのバスに接続するピンと、それらのピンから受け取ったデータをラッチするバッファと、信号をそれらピンに駆動するドライバとを含む。動作パラメータは、ピンが受け取るデータ信号の許容可能電圧範囲と、データの書き込み及び読み取りのための信号タイミングと、動作の支援されたモード（例えば、バーストモード、ページモード）とを含む。従来の物理層はトランジスタ−トランジスタ論理（ＴＴＬ）及びＲＡＭＢＵＳを含む。
【００３０】
サービス層は、計算構成要素のデータ転送のためのプロトコルを含む。このプロトコルはデータのフォーマットと、構成要素によるフォーマット済みデータの送受信の方式とを含む。従来の通信プロトコルは、ファイル転送プロトコル（ＦＴＰ）及び伝送制御プロトコル／インターネット・プロトコル（ＴＣＰ／ＩＰ）（拡張）を含む。
【００３１】
結果として、製造業者やその他は工業規格通信インターフェースを有する計算構成要素を典型的には設定するので、そうした構成要素のインターフェースを典型的には設計できて、それを他の計算構成要素と比較的少ない労力で相互接続することができる。これは、計算マシンの他の部分の設計に設計者自信の時間を殆ど費やすことを可能として、各種構成要素を追加或は除去することによってそのマシンを変更することを可能としている。
【００３２】
工業規格通信インターフェースを支援する計算構成要素を設計することは、設計ライブラリから既存の物理層を用いることによって設計時間を節約することを可能としている。これは、設計者が構成要素を既製の計算構成要素と容易にインターフェースすることを保証するものでもある。
【００３３】
そして、共通した工業規格通信インターフェースを支援する計算構成要素を用いる計算マシンを設計することは、設計者がそれら構成要素を少しの時間及び労力で相互接続することを可能としている。それら構成要素は共通インターフェースを支援するので、設計者はそれらをシステム・バスを介して少しの設計労力で相互接続することができる。そして、その支援されたインターフェースは工業規格であるので、マシンを容易に変更することができる。例えば、システム設計が進化するに伴って種々の構成要素及び周辺機器をマシンに追加することができるか、或は、テクノロジーが進化するに伴って次世代の構成要素を追加／設計することが可能である。更には、構成要素が通常の工業規格サービス層を支援するので、計算マシンのソフトウェアに対応するプロトコルを具現化する既存のソフトウェア・モジュールを組み込むことができる。それ故に、インターフェース設計が本質的には既に整っているので少しの労力で構成要素をインターフェースでき、よって、マシンに所望の機能を実行させるマシンの各種部分（例えばソフトウェア）の設計に集中することができる。
【００３４】
しかし残念ながら、図２のパイプライン３０等のハードウェアに組み込まれたパイプラインを形成すべく、使用されるＰＬＩＣ等の各種構成要素に対する既知の工業規格通信インターフェースが全く知られていない。
【００３５】
結果として、多数のＰＬＩＣを有するパイプラインを設計すべく、「ゼロから」種々のＰＬＩＣの間の通信インターフェースを設計及びデバッグするのに、多大な時間を費やし且つ多大な労力を行使する。典型的には、そうしたその場限りの通信インターフェースは種々のＰＬＩＣ間で転送されるデータのパラメータに依存する。同じように、プロセッサとインターフェースするパイプラインを設計すべく、ゼロからのパイプライン及びプロセッサの間の通信インターフェースの設計及びデバッグに関して多大な時間を費やし且つ多大な労力を行使する必要がある。
【００３６】
同様に、そうしたパイプラインをＰＬＩＣを該パイプラインに追加することによって変更すべく、典型的には、その追加されたＰＬＩＣと既存のＰＬＩＣとの間の通信インターフェースの設計及びデバッグに関して多大な時間を費やし且つ多大な労力を行使する。同じように、プロセッサを追加することによってパイプラインを変更すべく、或は、パイプラインを追加することによって計算マシンを変更すべく、パイプライン及びプロセッサの間の通信インターフェースの設計及びデバッグに関して多大な時間を費やし且つ多大な労力を行使しなければならないであろう。
【００３７】
結果として、図１及び図２で参照されるように、多数のＰＬＩＣをインターフェースすることとプロセッサをパイプラインにインターフェースすることとの難しさのため、計算マシンを設計する際に多大な妥協を為すことがしばしば強いられる。例えば、プロセッサに基づく計算マシンでは、ナンバークランチング速度を、複雑な意思決定を為す能力に対する設計／変更の柔軟性と交換することを強いられる。逆に、ハードウェアに組み込まれたパイプラインに基づく計算マシンでは、複雑な意思決定を為す能力と設計／変更の柔軟性を、ナンバークランチング速度と交換することを強いられる。更には、多数のＰＬＩＣをインターフェースすることに関する難しさのため、少数のＰＬＩＣよりも多くのＰＬＩＣを有するパイプラインに基づくマシンを設計することはしばしば実際的ではない。その結果、実際的なパイプラインに基づくマシンはしばしば制限された機能しか有しない。そして、プロセッサをＰＬＩＣとインターフェースすることに関する難しさのため、プロセッサを１つのＰＬＩＣより多くのＰＬＩＣにインターフェースすることは実際的ではない。その結果、プロセッサ及びパイプラインを組み合わせることによって獲得される利益は最少となる。
【発明の開示】
【発明が解決しようとする課題】
【００３８】
それ故に、プロセッサに基づくマシンの意思決定を為す能力を、ハードウェアに組み込まれたパイプラインに基づくマシンのナンバークランチング速度と組み合わせることを可能とする新しい計算アーキテクチャに対する要望が生じてきている。
【課題を解決するための手段】
【００３９】
本発明の実施例において、計算マシンは、第１バッファと該バッファと結合されたプロセッサとを含む。このプロセッサは、アプリケーション、第１データ転送オブジェクト、並びに、第２データ転送オブジェクトを実行し、そのアプリケーションの制御下でデータを発行し、第１データ転送オブジェクトの制御下でその発行されたデータをバッファにロードしてから、第２データ転送オブジェクトの制御下でそのバッファから発行されたデータを検索するように動作できる。
【００４０】
本発明の別の実施例に従えば、プロセッサは、データを検索し、第１データ転送オブジェクトの制御下でその検索されたデータをバッファにロードし、第２データ転送オブジェクトの制御下でそのバッファからデータをアンロードしてから、アプリケーションの制御下でそのアンロードされたデータを処理する。
【００４１】
計算マシンがプロセッサと結合されたハードウェアに組み込まれたパイプライン加速器を含むピア−ベクトル・マシンである場合、バッファ及びデータ転送オブジェクトはデータの（単向性であろうが二方向性であろうが）転送を補助する。
【発明を実施するための最良の形態】
【００４２】
図３は、本発明の一実施例に従ったピア−ベクトル・アーキテクチャを有する計算マシン４０の概略ブロック線図である。ホストプロセッサ４２に加えて、ピア−ベクトル・マシン４０はパイプライン加速器４４を含み、それがデータ処理の少なくとも一部を実行して、図１の計算マシン１０における共同プロセッサ１４の列と効果的に置き換わる。それ故に、ホストプロセッサ４２及び加速器４４はデータ・ベクトルを前後に転送できる「ピア」である。加速器４４はプログラム命令を実行しないので、所与のクロック周波数で共同プロセッサの列ができるものよりも著しく高速にデータに対して数学的に集中的な演算を典型的には実行する。結果として、プロセッサ４２の意思決定能力と加速器４４のナンバークランチング能力とを組み合わせることによって、マシン４０はマシン１０等の従来の計算マシンと同一の能力を有するが、しばしばそれよりもデータをより高速に処理することができる。更には、以下に議論されると共に、先行して引用された「改善された計算アーキテクチャ用パイプライン加速器、関連システム、並びに、方法」と題された特許文献３に議論されているように、加速器４４にホストプロセッサ４２と同一の通信インターフェースを設けることが、特にその通信インターフェースが工業規格である場合に、マシン４０の設計及び変更を補助する。そして、加速器４４が多数の構成要素（例えば、複数のＰＬＩＣ）を含む場合、それら構成要素に同一の通信インターフェースを設けることは、特にその通信インターフェースが工業規格である場合に、加速器の設計及び変更を補助する。更には、マシン４０は以下に議論されると共に先行して引用された特許出願におけるような他の長所等をも提供し得る。
【００４３】
更に図３で参照されるように、ホストプロセッサ４２及びパイプライン加速器４４に加えて、ピア−ベクトル計算マシン４０は、プロセッサ・メモリ４６、インターフェース・メモリ４８、バス５０、ファームウェア・メモリ５２、任意選択的な生データ入力ポート５４，５６、処理済みデータ出力ポート５８，６０、並びに、任意選択的なルータ６１を含む。
【００４４】
ホストプロセッサ４２は処理ユニット６２及びメッセージ・ハンドラー６４を含み、プロセッサ・メモリ４６は処理ユニット・メモリ６６及びハンドラー・メモリ６８を含み、そのそれぞれがプロセッサ・ユニット及びメッセージ・ハンドラーに対するプログラム及び作業の両メモリとして役立っている。プロセッサ・メモリ４６は、加速器コンフィギュレーション・レジストリ７０及びメッセージ・コンフィギュレーション・レジストリ７２をも含み、それらが、ホストプロセッサ４２に加速器４４の機能を構成させると共に、メッセージ・ハンドラー６４が送信及び受信するメッセージの構造を構成させることを可能とするそれぞれのコンフィギュレーション・データを記憶する。
【００４５】
パイプライン加速器４４は少なくとも１つのＰＬＩＣ（不図示）上に配置され、プログラム命令を実行することなしに各データを処理するハードウェアに組み込まれたパイプライン７４1−７４nを含む。ファームウェア・メモリ５２は加速器４４に対するコンフィギュレーション・ファームウェアを記憶する。もし加速器４４が多数のＰＬＩＣ上に配置されたら、それらＰＬＩＣ及びそれらの各ファームウェア・メモリは多数の回路ボード上、即ちドーターカード（不図示）上に配置され得る。加速器４４及びドーターカードは、先行して引用された「改善された計算アーキテクチャ用パイプライン加速器、関連システム、並びに、方法」と題された特許文献３と、「多数パイプライン・ユニットを有するパイプライン加速器、関連計算マシン、並びに、方法」と題された特許文献５に更に議論されている。代替的には、加速器４４は、少なくとも１つのＡＳＩＣ上に配置され得て、よって構成不可能である内部相互接続を有し得る。この代替例において、マシン４０はファームウェア・メモリ５２を省略し得る。更には、加速器４４が多数パイプライン７４を含んで示されているが、ただ１つのパイプラインを含み得る。加えて、図示されていないが、加速器４４はディジタル信号プロセッサ（ＤＳＰ）等の１つ或はそれ以上のプロセッサを含み得る。
【００４６】
ピア−ベクトル・マシン４０の一般動作は、先行して引用された「改善された計算アーキテクチャ、関連システム、並びに、方法」と題された特許文献２に議論されており、ホストプロセッサ４２の機能トポロジー及び動作は図４乃至図７と連携して以下に議論されている。図４は、本発明の実施例に従った図３のホストプロセッサ４２及びパイプライン・バス５０の機能ブロック線図である。一般に、処理ユニット６２は１つ或はそれ以上のソフトウェア・アプリケーションを実行し、メッセージ・ハンドラー６４は、ソフトウェア・アプリケーション（単数或は複数）とパイプライン加速器４４（図３）の間でデータを転送する１つ或はそれ以上のソフトウェア・オブジェクトを実行する。データ処理、データ転送、並びに、他の機能を種々のアプリケーション及びオブジェクトの間で分割することは、ホストプロセッサ・ソフトウェアのより容易な設計及び変更をもたらす。更には、以下の記載においてソフトウェア・アプリケーションが特定の動作を実行するように説明されているが、処理ユニット６２或はメッセージ・ハンドラー６４は、実際の動作において、ソフトウェア・アプリケーションを実行してそのアプリケーションの制御下でその動作を実行することを理解して頂きたい。同じように、以下の記載においてソフトウェア・オブジェクトが特定の動作を実行するように説明されているが、処理ユニット６２或はメッセージ・ハンドラー６４は、実際の動作において、ソフトウェア・オブジェクトを実行してそのオブジェクトの制御下でその動作を実行することを理解して頂きたい。
【００４７】
更に図４で参照されるように、処理ユニット６２は、データ処理アプリケーション８０、加速器例外マネージャ・アプリケーション（以降、例外マネージャ）８２、並びに、加速器コンフィギュレーション・マネージャ・アプリケーション（以降、コンフィギュレーション・マネージャ）８４を実行するが、それらアプリケーションは集合的に処理ユニット・アプリケーションと呼称される。データ処理アプリケーションは、パイプライン加速器４４（図３）と共同してデータを処理する。例えば、データ処理アプリケーション８０はポート５４（図３）を介して生ソナー・データを受信し、そのデータをパースし、そのパースされたデータを加速器４４に送信し得て、そして加速器はそのパースされたデータにＦＦＴを実行して、その処理されたデータを更なる処理のためにデータ処理アプリケーションに戻し得る。例外マネージャ８２は加速器４４からの例外メッセージを取り扱い、コンフィギュレーション・マネージャ８４は加速器のコンフィギュレーション・ファームウェアをビア−ベクトル・マシン４０（図３）の初期化中にメモリ５２にロードする。またコンフィギュレーション・マネージャ８４は、例えば加速器の誤動作に応じて、初期化後に加速器４４を再構成し得る。図６及び図７と連携されて以下に更に議論されるように、処理ユニット・アプリケーションは、破線８５，８７，８９で示されるように、直接的に相互に通信し得るか、或は、データ転送オブジェクト８６を介して相互に通信し得る。メッセージ・ハンドラー６４はデータ転送オブジェクト８６，通信オブジェクト８８、並びに、入力及び出力読み取りオブジェクト９０，９２を実行して、入力及び出力キュー・オブジェクト９４，９６を実行し得る。データ転送オブジェクト８６は、通信オブジェクト８８及び処理ユニット・アプリケーションの間でデータを転送し、インターフェース・メモリ４８をデータ・バッファとして使用し得て、処理ユニット・アプリケーション及び加速器４４にそれぞれ独立して動作させることを可能としている。例えば、メモリ４８は、しばしばデータ処理アプリケーション８０よりも高速である加速器４４に、そのデータ処理アプリケーションを「待機」することなしに動作させることを可能としている。通信オブジェクト８８はデータ・オブジェクト８６及びパイプライン・バス５０の間でデータを転送する。入力及び出力読み取りオブジェクト９０，９２は、データ転送オブジェクトが通信オブジェクト８８及び処理ユニット・アプリケーションの間でデータを転送している際にそれらのデータ転送オブジェクト８６を制御する。そして、実行されると、入力及び出力キュー・オブジェクト９４，９６は入力及び出力読み取りオブジェクト９０，９２に所望の優先順位に従ってデータのその転送を同期させている。
【００４８】
更には、ピア−ベクトル・マシン４０（図３）の初期化中、メッセージ・ハンドラー６４は、メッセージ・コンフィギュレーション・レジストリ７２（図３）に記憶されたコンフィギュレーション・データからデータ転送オブジェクト８６を例示する従来のオブジェクト・ファクトリー９８を例示し実行する。このメッセージ・ハンドラー６４も、メッセージ−コンフィギュレーション・レジストリ７２に記憶されたコンフィギュレーション・データから通信オブジェクト８８、入力及び出力リーダ・オブジェクト９０，９２、並びに、入力及び出力キュー・オブジェクト９４，９６を例示する。結果として、レジストリ７２に記憶されたコンフィギュレーション・データを単に設計及び変更することによって、それらソフトウェア・オブジェクトそしてそれ故、それらのデータ転送パラメータを設計及び変更し得る。典型的にはこれは、ソフトウェア・オブジェクト各々を個々別々に設計或は変更するよりもより少ない時間消費で済む。
【００４９】
図４のホストプロセッサ４２の動作は図５乃至図７と連携して以下に議論される。
【００５０】
＜データ処理＞
図５は、本発明の実施例に従った図４のデータ処理アプリケーション８０、データ転送オブジェクト８６、並びに、インターフェース・メモリ４８の機能ブロック線図である。
【００５１】
データ処理アプリケーション８０は、各データ処理動作をそれぞれ実行する多数のスレッド１００1−１００nを含む。例えば、スレッド１００1は加算を、スレッド１００2は減算をそれぞれ実行し得るか、或は、スレッド１００1及び１００2の双方は加算を実行し得る。
【００５２】
各スレッド１００は、パイプライン加速器４４（図３）に仕向けられたデータを生成、即ち発行して、加速器からデータを受信、即ち加入するか、或は、データの発行及び加入の双方を為す。例えば、スレッド１００1−１００4の各々は加速器４４からデータの発行及び加入の双方を為す。スレッド１００は別のスレッド１００と直に通信も為し得る。例えば、破線１０２で示されるように、スレッド１００3及び１００4は直接相互に通信し得る。更にはスレッド１００は加速器４４（図３）以外の構成要素（不図示）からデータを受信するか或は該構成要素にデータを送信し得る。しかし、簡潔さのため、スレッド１００とそうした別の構成要素の間でのデータ転送の議論は省略される。
【００５３】
更に図５で参照されるように、インターフェース・メモリ４８及びデータ転送オブジェクト８６1a−８６nbは、各スレッド１００及び通信オブジェクト８８の間でデータを転送するため、多数の単向性チャネル１０４1−１０４nを機能的に形成する。インターフェース・メモリ４８は、単位チャネル１０４当たり１つのバッファとなるように、多数のバッファ１０６1−１０６nを含む。これらバッファ１０６は、各々、データの単一グループ分け（例えば、バイト、ワード、ブロック）、或は、バッファの少なくとも幾分かはそれぞれがデータから成る各多数グループ分けを記憶できるＦＩＦＯバッファであり得る。各チャネル１０４には２つのデータ・オブジェクト８６があり、一方が各スレッド１００及び各バッファ１０６の間でデータを転送するものであり、他方がバッファ１０６及び通信オブジェクト８８の間でデータを転送するものである。例えば、チャネル１０４1は、バッファ１０６1、発行されたデータをスレッド１００1からバッファ１０６1に転送するデータ転送オブジェクト８６1a、並びに、発行されたデータをバッファ１０６1から通信オブジェクト８８に転送するデータ転送オブジェクト８６1bを含む。各々の許容できるデータ転送に対して各チャネル１０４を含むことは、データ・ボトルネックに対するポテンシャルを低減すると共に、ホストプロセッサ４２（図４）の設計及び変更を補助する。
【００５４】
図３乃至図５で参照されるように、初期化中及びデータ処理アプリケーション８０、データ転送オブジェクト８６、通信オブジェクト８８、並びに、任意選択的なリーダ及びキュー・オブジェクト９０，９２，９４，９６を実行している最中におけるホストプロセッサ４２の動作は、本発明の実施例に従って議論される。
【００５５】
ホストプロセッサ４２の初期化中、オブジェクト・ファクトリー９８はデータ転送オブジェクト８６を例示しバッファ１０４を規定する。詳細には、オブジェクト・ファクトリー９８はレジストリ７２からコンフィギュレーション・データをダウンロードし、データ処理アプリケーション８０が必要とし得る各データ転送オブジェクト８６xbに対するソフトウェア・コードを生成する。アプリケーション８０が必要とし得るデータ転送オブジェクトの識別性はコンフィギュレーション・データの典型的には一部であるが、アプリケーション８０はデータ転送オブジェクト８６の全てを使用する必要はない。次いで、生成されたオブジェクト８６xbから、オブジェクト・ファクトリー９８はデータ・オブジェクト８６xaをそれぞれ例示する。典型的には、以下の例で議論されるように、オブジェクト・ファクトリー９８は、同一ソフトウェア・コードの多数例証として同一のバッファ１０４にアクセスするデータ転送オブジェクト８６xa及び８６xbを例示する。これは、さもなければオブジェクト・ファクトリー９８が約半分で生成することになるコード量を低減する。更には、メッセージ・ハンドラー６４は、もしあれば、アプリケーション８０が必要としないデータ転送オブジェクト８６を決定し得ると共に、それら不必要なデータ転送オブジェクトの例証を削除し得てメモリを節約する。代替的には、メッセージ・ハンドラー６４はオブジェクト・ファクトリー９８がデータ転送オブジェクト８６を生成する前にこの決定を為し得て、オブジェクト・ファクトリーにアプリケーション８０が必要とするデータ転送オブジェクトだけを例示させる。加えて、データ転送オブジェクト８６が、各バッファ１０４が位置決めされているインターフェース・メモリ４８のアドレスを含むので、オブジェクト・ファクトリー９８はデータ転送オブジェクトを例示する際にバッファのサイズ及び箇所を効果的に規定する。
【００５６】
例えば、オブジェクト・ファクトリー９８は以下の方式でデータ転送オブジェクト８６1a及び８６1bを例示する。先ず、ファクトリー９８はレジストリ７２からコンフィギュレーション・データをダウンロードし、データ転送オブジェクト８６1a及び８６1bに対する共通ソフトウェア・コードを生成する。次に、ファクトリー９８はその共通ソフトウェア・コードの各例証としてデータ転送オブジェクト８６1a及び８６1bを例示する。即ち、メッセージ・ハンドラー６４は共通ソフトウェア・コードをハンドラー・メモリ６８の２つの箇所或は他のプログラム・メモリ（不図示）に効果的にコピーし、一方の箇所をオブジェクト８６1aとして実行し、他方の箇所をオブジェクト８６1bとして実行する。
【００５７】
更に図３乃至図５で参照されるように、ホストプロセッサ４２の初期化後、データ処理プリケーション８０はデータを処理し、パイプライン加速器４４にデータを送信し該パイプライン加速器からデータを受信する。
【００５８】
加速器４４にデータを送信するデータ処理アプリケーション８０の例は、チャネル１０４1と連携して議論される。
【００５９】
先ず、スレッド１００1はデータを生成して、データ転送オブジェクト８６1aにデータを発行する。スレッド１００1は、加速器４４（以下に更に議論される）から或はポート５４を介してソナー・アレイ或はデータベース等の別のソース（不図示）から受信する生データに対して演算することによってデータを生成し得る。
【００６０】
次いで、データ・オブジェクト８６1aは発行されたデータをバッファ１０６1にロードする。
【００６１】
次にデータ転送オブジェクト８６1bは、バッファ１０６1にデータ転送オブジェクト８６1aから新しく発行されたデータがロードされたかを決定する。出力リーダ・オブジェクト９２は、バッファ１０６1を新しく発行されたデータに対して照合させるようにデータ転送オブジェクト８６1bに周期的に命令する。代替的には、出力リーダ・オブジェクト９２は、バッファ１０６1が新しく発行されたデータをいつ受信したかをデータ転送オブジェクト８６1bに通知する。詳細には、出力キュー・オブジェクト９６は発行されたデータをバッファ１０６1に記憶するデータ転送オブジェクト８６1aに応じて、固有識別子（不図示）を生成し記憶する。この識別子に応じて、出力リーダ・オブジェクト９２は、バッファ１０６1が新しく発行されたデータを含むことをデータ転送オブジェクト８６1bに通知する。多数のバッファ１０６が各新しく発行されたデータを含む場合、出力キュー・オブジェクト９６はそのデータが発行される順番を記録し得て、出力リーダ・オブジェクト９２は各データ転送オブジェクト８６xbに同一の順番で通知し得る。よって、出力リーダ・オブジェクト９２及び出力キュー・オブジェクト９６は、各データ転送オブジェクト８６xbが加速器４４に送信する第１データとなるように第１データを発行させ、各データ転送オブジェクト８６xbが加速器４４に送信する第２データとなるように第２データを発行させ等々することによってデータ転送を同期する。多数のバッファ１０６が各新しく発行されたデータを含む場合の別の代替例において、出力リーダ及び出力キュー・オブジェクト９２及び９６は、その先入れ先出し方式以外の、或は、その先入れ先出し方式に加えて、優先順位方式を具現化し得る。例えば、スレッド１００1が第１データを発行し、続いてスレッド１００2が第２データを発行するが、出力キュー・オブジェクト９６にその第２データと関連された優先順位フラグも発行する。第２データが第１データを凌ぐ優先順位を有するので、出力リーダ・オブジェクト９２はデータ転送オブジェクト８６2bに、データ転送オブジェクト８６1bにバッファ１０６1における発行された第１データを通知する前に、バッファ１０６2における発行された第２データを通知する。
【００６２】
次いで、データ転送オブジェクト８６1bはバッファ１０６1からその発行データを検索し、そのデータを所定の方式でフォーマットする。例えば、オブジェクト８６1bは発行データ（即ち、ペイロード）と、例えば加速器４４内のデータの仕向先を識別する、ヘッダとを含むメッセージを生成する。このメッセージは高速ＩＯ（入力／出力）フォーマット等の工業規格フォーマットを有し得る。そうしたメッセージの生成は従来技術であるので、更に議論されない。
【００６３】
データ転送オブジェクト８６1bによる発行データのフォーマット後、それはそのフォーマットされたデータを通信オブジェクト８８に送信する。
【００６４】
次に、通信オブジェクト８８はフォーマットされたデータをバス５０を介してパイプライン加速器４４に送信する。通信オブジェクト８８は、ホストプロセッサ４２及び加速器４４の間でデータを転送すべく使用される通信プロトコル（例えば、高速ＩＯ、ＴＣＰ／ＩＰ）を具現化するように設計されている。例えば、通信オブジェクト８８はプロトコルが必要とする必須のハンドシェーキング及び他の転送パラメータ（例えば、バス５０上のメッセージの送受信を仲裁する）を具現化する。代替的には、データ転送オブジェクト８６xbは通信プロトコルを具現化し得て、通信オブジェクト８８は省略され得る。しかしながら、この後者の代替例はデータ転送オブジェクト８６xb全てに追加のコード及び機能を含むように要求するので効率性を欠いている。
【００６５】
パイプライン加速器４４は、次いで、フォーマットされたデータを受信し、メッセージからそのデータを回復し（例えば、ヘッダーが存在する場合にそのデータをヘッダーから分離する）、そのデータを加速器内の適切な仕向先に向かわせ、そのデータを処理する。
【００６６】
更に図３乃至図５で参照されるように、データをホストプロセッサ４２（図３）に送信するパイプライン加速器４４（図３）の例はチャネル１０４2と連携して議論される。
【００６７】
先ず、パイプライン加速器４４はデータを生成してフォーマットする。例えば、加速器４４はデータ・ペイロードと、例えばそのデータを受信して処理することなるスレッドである仕向先スレッド１００1及び１００2を識別するヘッダーとを含むメッセージを生成する。先に議論されたように、このメッセージは高速ＩＯ（入力／出力）フォーマット等の工業規格フォーマットを有し得る。
【００６８】
次に、加速器４４はそのフォーマットされたデータを従来方式でバス５０に駆動する。
【００６９】
次いで、通信オブジェクト８８はバス５０からそのフォーマットされたデータを受信し、そのフォーマットされたデータをデータ転送オブジェクト８６2bに提供する。一実施例において、そのフォーマットされたデータはメッセージの形態であり、通信オブジェクト８８はそのメッセージ・ヘッダー（先に議論されたように、仕向先スレッド１００1及び１００2を識別する）を分析し、そのメッセージをヘッダーに応じてデータ転送オブジェクト８６2bに提供する。別の実施例において、通信オブジェクト８８はメッセージをデータ転送オブジェクト８６nbの全てに提供し、それら各々はそのメッセージ・ヘッダーを分析し、もしその機能がデータを仕向先スレッド１００1及び１００2に提供することであるときのみ、メッセージを処理する。結果として、この例において、データ転送オブジェクト８６2bだけがそのメッセージを処理する。
【００７０】
次に、データ転送オブジェクト８６2bは通信オブジェクト８８から受信されたデータをバッファ１０６2にロードする。例えば、もしそのデータがメッセージ・ペイロード内に含まれていれば、データ転送オブジェクト８６2bはそのメッセージからデータを回復し（例えば、ヘッダーを分割することによって）、その回復されたデータをバッファ１０６2にロードする。
【００７１】
次いで、データ転送オブジェクト８６2aは、バッファ１０６2がデータ転送オブジェクト８６2bから新しいデータを受信したことを決定する。入力リーダ・オブジェクト９０はデータ転送オブジェクト８６2aに、新しく受信されたデータに対してバッファ１０６2を照合するように周期的に命令し得る。代替的には、入力リーダ・オブジェクト９０はデータ転送オブジェクト８６2aに、バッファ１０６2が新しく発行されたデータをいつ受信したかを通知する。詳細には、入力キュー・オブジェクト９４は、その発行されたデータをバッファ１０６2に記憶するデータ転送オブジェクト８６2bに応じて、固有識別子（不図示）を生成し記憶する。この識別子に応じて、入力リーダ・オブジェクト９０はデータ転送オブジェクト８６2aにバッファ１０６2が新しく発行されたデータを含むことを通知する。出力リーダ及び出力キュー・オブジェクト９２及び９６と連携して先に議論されたように、多数のバッファ１０６が各新しく発行されたデータを含む場合、入力キュー・オブジェクト９４は、このデータが発行された順番を記録し得て、入力リーダ・オブジェクト９０は各データ転送オブジェクト８６xaに同一の順番で通知し得る。代替的には、多数のバッファ１０６が各新しく発行されたデータを含む場合、入力リーダ及び入力キュー・オブジェクト９０及び９４は、この先入れ先出し方式以外の、或は、この先入れ先出し方式に加えて優先順位方式を具現化し得る。
【００７２】
次に、データ・オブジェクト８６2aはバッファ１０６2から加入者スレッド１００1及び１００2にデータを転送し、それら加入者スレッドはデータに対して各演算を実行する。
【００７３】
図５で参照されるように、他方のスレッドからデータを受信して処理する一方のスレッドの例はスレッド１００3によって発行されたデータを受信して処理するスレッド１００4と連携して議論される。
【００７４】
一実施例において、スレッド１００3は任意選択的な接続（破線）１０２を介してスレッド１００4に直接的にデータを発行する。
【００７５】
別の実施例において、スレッド１００3はチャネル１０４5及び１０４6を介してスレッド１００4にデータを発行する。詳細には、データ転送オブジェクト８６5aは発行されたデータをバッファ１０６5にロードする。次にデータ転送オブジェクト８６5bはバッファ１０６5からデータを検索し、そのデータを通信オブジェクト８８に転送し、該通信オブジェクトはデータ転送オブジェクト８６6bにデータを発行する。次いでデータ転送オブジェクト８６6bはバッファ１０６6にデータをロードする。次にデータ転送オブジェクト８６6aはバッファ１０６6からスレッド１００4にデータを転送する。代替的には、データがバス５０を介して転送されていないので、データ転送オブジェクト８６5bがデータをバッファ１０６6に直接的にロードし、よって通信オブジェクト８８及びデータ転送オブジェクト８６6bを迂回するようにそのデータ転送オブジェクトを変更し得る。しかし、データ転送オブジェクト８６5bを他のデータ転送オブジェクト８６とは異なるように変更することはメッセージ・ハンドラー６４の複雑性モジュール方式を増大し得る。
【００７６】
更に図５で参照されるように、追加のデータ転送技術が想定されている。例えば、単一スレッドは各多数チャネルを介してパイプライン加速器４４（図３）内の多数箇所にデータを発行し得る。代替的には、先行して引用された「改善された計算アーキテクチャ、関連システム、並びに、方法」と題された特許文献２や、「改善された計算アーキテクチャ用パイプライン加速器、関連システム、並びに、方法」と題された特許文献３に議論されているように、加速器４４は単一チャネル１０４を介してデータを受信し、それを加速器内の多数箇所に提供し得る。更には多数のスレッド（例えば、スレッド１００1及び１００2）は同一チャネル（例えばチャネル１０４2）からのデータに加入し得る。加えて、多数のスレッド（例えば、スレッド１００2及び１００3）は同一チャネル（例えば、チャネル１０４3）を介して加速器４４内の同一箇所にデータを発行し得るが、それらスレッドは各チャネル１０４を介して同一の加速器箇所にデータを発行し得る。
【００７７】
図６は、本発明の実施例に従った例外マネージャ８２、データ転送オブジェクト８６、並びに、インターフェース・メモリ４８の機能的ブロック線図である。
【００７８】
例外マネージャ８２は、パイプライン加速器４４（図３）の初期化中或は動作中に生じ得る例外を受信しログする。一般に例外は、加速器４４が所望されない方式で行動する設計者規定事象である。例えば、オーバーフローしているバッファ（不図示）は１つの例外であり得て、よって加速器４４に例外メッセージを生成させて、それを例外マネージァ８２に送信させる。例外メッセージの生成は、先行して引用された「改善された計算アーキテクチャ用パイプライン加速器、関連システム、並びに、方法」と題された特許文献３に議論されている。
【００７９】
例外マネージャ８２は、加速器４４（図３）の初期化中或は動作中に生ずる例外を取り扱うこともできる。例えば、もし加速器４４がオーバーフローしているバッファ（不図示）を含めば、例外マネージャ８２は加速器にバッファのサイズを増大させて、将来のオーバーフローを防止させ得る。或は、もし加速器４４の１つの区分が誤動作すれば、例外マネージャ８２は加速器の別の区分に或はデータ処理アプリケーション８０に、誤動作区分に実行が意図された動作を実行させる。そうした例外取り扱いは以下に更に議論されると共に、先行して引用された「改善された計算アーキテクチャ用パイプライン加速器、関連システム、並びに、方法」と題された特許文献３に更に議論されている。
【００８０】
加速器例外をログ及び／或は取り扱うべく、例外マネージャ８２は１つ或はそれ以上の加入者スレッド１００（図５）からのデータに加入し、そのデータから例外が生じたかを決定する。
【００８１】
一代替例において、例外マネージャ８２は加入者スレッド１００（図５）が加入するものと同一のデータに加入する。詳細には、マネージャ８２は同一の各チャネル１０４s（例えば図５のチャネル１０４2を含む）を介してそのデータを受信し、そのチャネルから受信する加入者スレッド１００（例えば、図５のスレッド１００1及び１００2を含む）がそのデータを受信する。結果として、チャネル１０４sはそのデータを、それらチャネルがそのデータを加入者スレッド１００に提供するのと同一方式で例外マネージャ８２にそのデータを提供する。
【００８２】
別の代替例において、例外マネージャ８２は専用チャネル１０６（不図示）からのデータに加入し、該チャネルが加入者チャネル１０４sを介してスレッド１００にデータを提供しない加速器４４（図３）の区分からデータを受信し得る。そうした専用チャネル１０４が使用される場合、オブジェクト・ファクトリー９８（図４）は、図４と連携して先に議論されたように、ホストプロセッサ４２の初期化中、それらチャネルに対してデータ転送オブジェクト８６を生成する。例外マネージャ８２は、独占排他的に或は加入者チャネル１０４sに加えて、専用チャネル１０６に加入し得る。
【００８３】
例外が生じたかを決定すべく、例外マネージャ８２はそのデータをメモリ６６（図３）内におけるレジストリ（不図示）に記憶された例外コードと比較する。もしそのデータがそれらコードの内の１つと符合すれば、例外マネージャ８２は符合されたコードと対応しているその例外が生じたことを決定する。
【００８４】
別の代替例において、例外マネージャ８２はデータを分析して、例外が生じたかを決定する。例えば、そのデータは加速器４４によって実行された動作の結果を表し得る。例外マネージャ８２は、そのデータがエラーを含むかを決定し、もしそうであれば、例外が生じたことを決定すると共にその例外の識別性を決定する。
【００８５】
例外が生じたことの決定後、例外マネージャ８２は、例えば対応する例外コードと発現の時間とをログし、加速器４４のデバッグ時等の後の使用に備える。例外マネージャ８２は、その例外の識別性を決定して、それを例えばシステム設計者に従来方式で伝える。
【００８６】
代替的には、例外のログに加えて、例外マネージャ８２はその例外を取り扱うための適切な手続きを具現化し得る。例えば、例外マネージャ８２は例外取り扱い命令を加速器４４、データ処理アプリケーション８０、或は、コンフィギュレーション・マネージャ８４に送信することによってその例外を取り扱うことができる。例外マネージャ８２は、発行者スレッド１００（例えば、図５のスレッド１００1）がデータを発行する媒介となる同一の各チャネル１０４p（例えば、図５のチャネル１０４1）を介してか、或は、図５と連携して先に議論されたように動作する専用例外取り扱いチャネル１０４（不図示）を通じてかの何れかで、加速器４４に例外取り扱い命令を送信し得る。もし例外マネージャ８２が他のチャネル１０４を介して命令を送信すれば、オブジェクト・ファクトリー９８（図４）は、図４と連携して先に議論されたように、ホストプロセッサ４２の初期化中にそれらチャネルに対するデータ転送オブジェクト８６を生成する。例外マネージャ８２は、データ処理アプリケーション８０及びコンフィギュレーション・マネージャ８４に例外取り扱い命令を直接的（図４における破線８５及び８９で示されるように）か、或は、オブジェクト・ファクトリー９８がホストプロセッサ４２の初期化中に更に生成するチャネル１０４dpa1，１０４dpa2（アプリケーション８０）及びチャネル１０４cm1，１０４cm2（コンフィギュレーション・マネージャ８４）を介してかの何れかで発行し得る。
【００８７】
更に図６で参照されるように例外取り扱い命令は、以下に議論されるように、加速器４４、データ処理アプリケーション８０、或は、コンフィギュレーション・マネージャ８４に様々な方法で対応する例外を取り扱わさせ得る。
【００８８】
加速器４４に送信されると、例外取り扱い命令はその加速器のソフト・コンフィギュレーション或は機能を変更し得る。例えば、先に議論したように、もし例外がバッファ・オーバーフローであれば、その命令は加速器のソフト・コンフィギュレーションを変更し得て（即ち、ソフト・コンフィギュレーション・レジスタの内容を変更することによって）、バッファのサイズを増大する。或は、もし特定の動作を実行する加速器４４の区分が誤動作していれば、その命令は加速器にディスエーブルされた区分を「オフライン」にさせることによって加速器の機能を変更し得る。この後者の場合、例外マネージャ８２は、追加命令を介して、加速器４４の別の区分に、或は、データ処理アプリケーション８０に、以下に議論されるようにディスエーブルされた加速器の区分から動作の「引き継ぎ」を為させ得る。加速器４４のソフト・コンフィギュレーションを改変することは、先行して引用された「改善された計算アーキテクチャ用パイプライン加速器、関連システム、並びに、方法」と題された特許文献３に更に議論されている。
【００８９】
データ処理アプリケーション８０に送信されると、例外取り扱い命令はそのデータ処理アプリケーションに、オフラインとされた加速器４４のディスエーブルされた区分の動作の「引き継ぎ」を行わせ得る。処理ユニット６２（図３）がこの動作を、加速器４４よりもより緩慢に且つより非効率的に実行し得るが、これはその動作を全く実行しないことよりもより好ましい可能性がある。加速器４４から処理ユニット６２に動作の実行をシフトするこの能力は、ピア−ベクトル・マシン４０（図３）の柔軟性、信頼性、保守性、並びに、フォルトトレランスを増大する。
【００９０】
そして、コンフィギュレーション・マネージャ８４に送信されると、例外取り扱い命令はそのコンフィギュレーション・マネージャに加速器４４のハード・コンフィギュレーションを変更させ得て、加速器がオフラインとされた誤動作している区分の動作の実行を続行できるように為す。例えば、もし加速器４４が未使用区分を有せば、コンフィギュレーション・マネージャ８４は誤動作していた区分での動作を実行すべくその未使用区分を構成し得る。もし加速器４４が未使用区分を有しなければ、コンフィギュレーション・マネージャ８４は、誤動作している区分の第２動作を実行すべく、すなわち、誤動作している区分を引き継ぐべく、第１動作を現在実行している加速器の区分を再構成し得る。この技術は、第１動作が省略され得るが、第２動作が省略できない場合、或はデータ処理アプリケーション８０が第２動作の場合よりも第１動作の実行により適合している場合に有用であり得る。加速器４４の一方の区分から加速器の他方の区分まで動作の実行をシフトするそうした能力は、ピア−ベクトル・マシン４０（図３）の柔軟性、信頼性、保守性、並びに、フォルトトレランスを増大する。
【００９１】
図７で参照されるようにコンフィギュレーション・マネージャ８４は、ピア−ベクトル・マシン４０（図３）の初期化中に加速器４４のハード・コンフィギュレーションを規定するファームウェアをロードし、そして、図６と連携して先に議論されたように、本発明の実施例に従って例外に応じて加速器のハード・コンフィギュレーションを再規定するファームウェアをロードし得る。以下に議論されるように、コンフィギュレーション・マネージャ８４は加速器４４の設計及び変更の複雑性をしばしば低減し、ピア−ベクトル・マシン４０（図３）のフォルトトレランス、信頼性、保守性、並びに、柔軟性を増大する。
【００９２】
ピア−ベクトル・マシン４０の初期化中、コンフィギュレーション・マネージャ８４は加速器コンフィギュレーション・レジストリ７０からコンフィギュレーション・データを受信し、そのコンフィギュレーション・データによって識別されたコンフィギュレーション・ファームウェアをロードする。コンフィギュレーション・データは、効果としては、ファームウェアをロードするためのコンフィギュレーション・マネージャ８４への命令である。例えば、もし初期化された加速器４４の区分がＦＦＴを実行する場合には、コンフィギュレーション・データを設計して、マネージャ８４によってロードされたファームウェアが加速器のその区分でＦＦＴを具現化するように為す。結果として、ピア−ベクトル・マシン４０の初期化前にコンフィギュレーション・データを単に生成或は変更することによって、加速器４４のハード・コンフィギュレーションを変更できる。コンフィギュレーション・データの生成及び変更がファームウェアを直に生成及び変更するよりもしばしば容易であるので（特にもしコンフィギュレーション・データがコンフィギュレーション・マネージャ８４にライブラリから現行ファームウェアをロードさせれば）、コンフィギュレーション・マネージャ８４は加速器４４の設計及び変更の複雑性を典型的には低減する。
【００９３】
コンフィギュレーション・マネージャ８４がコンフィギュレーション・データによって識別されたファームウェアをロードする前に、コンフィギュレーション・マネージャは加速器４４がコンフィギュレーション・データによって規定されたコンフィギュレーションを支援し得るかを決定する。例えば、もしコンフィギュレーション・データがコンフィギュレーション・マネージャ８４に加速器４４の特定ＰＬＩＣ（不図示）に対するファームウェアをロードさせるように命令すれば、コンフィギュレーション・マネージャ８４はデータをロードする前にそのＰＬＩＣが存在していることを確認する。もしＰＬＩＣが存在しなければ、コンフィギュレーション・マネージャ８４は加速器４４の初期化を停止して、加速器がそのコンフィギュレーションを支援しないことをオペレータに通知する。
【００９４】
コンフィギュレーション・マネージャ８４が、加速器が規定されたコンフィギュレーションを支援することを確認した後、コンフィギュレーション・マネージャはファームウェアを加速器４４にロードし、該加速器がそのファームウェアで、例えばそのファームウェアをファームウェア・メモリ５２にロードすることによって、そのハード・コンフィギュレーションを設定する。典型的には、コンフィギュレーション・マネージャ８４は、生成、構造、並びに、動作の点で図５のチャネル１０４と類似している１つ或はそれ以上のチャネル１０４tを介して加速器４４にファームウェアを送信する。またコンフィギュレーション・マネージャ８４は１つ或はそれ以上のチャネル１０４uを介して加速器４４からデータをも受信し得る。例えば、加速器４４はそのハード・コンフィギュレーションの成就した設定の確認をコンフィギュレーション・マネージャ８４に送信し得る。
【００９５】
加速器４４のハード・コンフィギュレーションが設定された後、コンフィギュレーション・マネージャ８４は、図６と連携して先に議論されたように例外マネージャ８４からの例外取り扱い命令に応じて加速器のハード・コンフィギュレーションを設定し得る。例外取り扱い命令に応じて、コンフィギュレーション・マネージャ８４はレジストリ７０から適切なコンフィギュレーション・データをダウンロードし、そのコンフィギュレーション・データによって識別された再構成ファームウェアをロードして、そのファームウェアをチャネル１０４tを介して加速器４４に送信する。コンフィギュレーション・マネージャ８４はチャネル１０４uを介して加速器４４から成就された再構成の確認を受信し得る。図６と連携して先に議論されたように、コンフィギュレーション・マネージャ８４は、ライン８９（図４）を介して例外マネージャ８２から直接的に、或は、チャネル１０４cm1，１０４cm2を介して間接的に、例外取り扱い命令を受信し得る。
【００９６】
またコンフィギュレーション・マネージャ８４は、図６と連携して先に議論されたように、例外マネージャ８４からの例外取り扱い命令に応じてデータ処理アプリケーション８０を再構成し得る。例外取り扱い命令に応じて、コンフィギュレーション・マネージャ８４はデータ処理アプリケーション８０に対して、誤動作或は他の理由のため、加速器４４が実行することができない動作を実行させるべく、それ自体を再構成するように命令する。コンフィギュレーション・マネージャ８４は、ライン８７（図４）を介して直接的に、或はチャネル１０４dp1，１０４dp2を介して間接的にデータ処理アプリケーション８０にそのように命令し得て、直接的に或は別のチャネル１０４（不図示）を介して、成就した再構成の確認等の情報をデータ処理アプリケーションから受信し得る。代替的には、例外マネージャ８２は例外取り扱い命令をデータ処理８０に送信し得て、該データ処理８０はそれ自体を再構成し、よってコンフィギュレーション・マネージャ８２を迂回する。
【００９７】
更に図７で参照されるように、コンフィギュレーション・マネージャ８２の代替実施例が想定されている。例えば、コンフィギュレーション・マネージャ８２は、加速器誤動作の発生以外の理由で、加速器４４或はデータ処理アプリケーション８０を再構成し得る。
【００９８】
先行する議論は当業者が本発明を作製し使用することを可能とすべく提示されている。種々実施例への様々な変更は当業者には容易に明かであろうし、ここでの包括的な原則は本発明の精神及び範囲から逸脱することなしに他の実施例及び適用例に適用され得る。よって、本発明は図示された実施例に限定されることが意図されておらず、ここに開示された原理及び特徴と一貫した最も広い範囲と一致されるべきものである。
【図面の簡単な説明】
【００９９】
【図１】図１は、従来の多数プロセッサ・アーキテクチャを有する計算マシンのブロック線図である。
【図２】図２は、従来のハードウェアに組み込まれたパイプラインのブロック線図である。
【図３】図３は、本発明の実施例に従ったピア−ベクトル・アーキテクチャを有する計算マシンの概略ブロック線図である。
【図４】図４は、本発明の実施例に従った図３のホストプロセッサの機能的ブロック線図である。
【図５】図５は、本発明の実施例に従った図４のデータ処理アプリケーションとパイプライン・バスの間におけるデータ転送経路の機能的ブロック線図である。
【図６】図６は、本発明の実施例に従った図４の加速器例外マネージャとパイプライン・バスの間におけるデータ転送経路の機能的ブロック線図である。
【図７】図７は、本発明の実施例に従った図４の加速器コンフィギュレーション・マネージャとパイプライン・バスの間におけるデータ転送経路の機能的ブロック線図である。
【符号の説明】
【０１００】
１０    計算マシン
１４    共同プロセッサ
４０    ピア−ベクトル・マシン
４２    ホストプロセッサ
４４    パイプライン加速器
４６    プロセッサ・メモリ
４８    インターフェース・メモリ
５０    パイプライン・バス
５２    ファームウェア・メモリ
５４    生データ入力ポート
５８    処理済みデータ出力ポート
６１    ルータ
６２    処理ユニット
６４    メッセージ・ハンドラー
６６    処理ユニット・メモリ
６８    ハンドラー・メモリ
７０    加速器コンフィギュレーション・レジストリ
７２    メッセージ・コンフィギュレーション・レジストリ
７４    ハードウェアに組み込まれたパイプライン
７８    パイプライン・ユニット
８０    データ処理アプリケーション
８２    加速器例外マネージャ
８４    加速器コンフィギュレーション・マネージャ
８６    データ転送オブジェクト
８８    通信オブジェクト
９０    入力リーダ
９２    出力リーダ
９４    入力キュー
９６    出力キュー
９８    オブジェクト・ファクトリー
１００1−１００n    スレッド
１０６1−１０６n    バッファ
【図１】
2006518495.tif 000002
【図２】
2006518495.tif 000003
【図３】
2006518495.tif 000004
【図４】
2006518495.tif 000005
【図５】
2006518495.tif 000006
【図６】
2006518495.tif 000007
【図７】
2006518495.tif 000008
【国際調査報告】
2006518495.tif 000009
2006518495.tif 000010