【手続補正書】
【提出日】平成27年3月10日(2015.3.10)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
シングルスレッドソフトウェアアプリケーションを特定用途向けスーパーコンピュータへ自動的に変換するための方法であって、
ａ．前記シングルスレッドソフトウェアアプリケーションからのコードフラグメントを前記特定用途向けスーパーコンピュータのカスタマイズされたハードウェアへと自動的に変換するステップであって、前記ハードウェアの実行が前記コードフラグメントのソフトウェア実行に機能的に相当するステップと、
ｂ．前記シングルスレッドソフトウェアアプリケーションのハードウェア部分およびソフトウェア部分にインタフェースを生成するステップであって、前記インタフェースが、ランタイムに、
ｉ．前記コードフラグメントへの入口でソフトウェア−ハードウェアプログラム状態転送を行い、
ｉｉ．前記コードフラグメントからの出口でハードウェア−ソフトウェアプログラム状態転送を行い、
ｉｉｉ．前記シングルスレッドソフトウェアアプリケーションのソフトウェアメモリとハードウェアのメモリとの間のメモリコヒーレンスを維持する、ステップと、
ｃ．ステップａ及びｂにおいて得た前記特定用途向けスーパーコンピュータの前記カスタマイズされたハードウエアを複数のモジュールに分割するステップと、
を備える方法。
【請求項２】
ａ．前記コードフラグメントの領域階層内のリーフ領域をハードウェア有限状態機械へと自動的に変換するステップと、
ｂ．前記リーフ領域のための前記ハードウェア有限状態機械の少なくとも１つのコピーを形成して、前記ハードウェア有限状態機械の前記少なくとも１つのコピーと通信のためのネットワークとを組み合わせ、それにより、組み合わされた前記ハードウェア有限状態機械の前記少なくとも１つのコピーと前記通信のためのネットワークとが、前記リーフ領域の機能を実行するためのパイプラインプリミティブオペレーションとして振る舞うようにするステップと、
を更に備える請求項１に記載の方法。
【請求項３】
請求項２の方法を前記コードフラグメントの前記領域階層に対して再帰的に適用し、それにより、前記コードフラグメントの前記ソフトウェア実行において親領域が子領域を呼び出すそれぞれのポイントで、前記コードフラグメントのハードウェアの実行において前記親領域のための前記ハードウェア有限状態機械が前記子領域のための前記パイプラインプリミティブオペレーションを始めるようにするステップを更に備える請求項２に記載の方法。
【請求項４】
前記コードフラグメントの前記ソフトウェア実行においてメモリ命令インスタンスＩ２がメモリ命令インスタンスＩ１に依存している場合に、前記コードフラグメントの前記ハードウェアの実行において前記メモリ命令インスタンスＩ２が前記メモリ命令インスタンスＩ１の後に実行されるようにするために、カスタマイズされたハードウェア同期化ユニットを形成するステップを更に備える請求項３に記載の方法。
【請求項５】
ａ．並列にアクセスされる複数のロード／ストアポートをサポートする、および、
ｂ．前記同期化ユニットをサポートするために、前記複数のロード／ストアポートの各ロード／ストアポートから出される各メモリ命令の完了を信号で送る、
コヒーレントメモリ階層を形成するステップを更に備える請求項４に記載の方法。
【請求項６】
複数のコンポーネントと前記複数のコンポーネントを接続する複数のネットワークとを備える特定用途向けスーパーコンピュータのハードウェア構造を複数のモジュールへと分割するための方法であって、
ａ．クロスモジュール通信を可能にするスケーラブルネットワークを形成するステップと、
ｂ．前記特定用途向けスーパーコンピュータの前記ハードウェア構造を複数のモジュールへと分割し、それにより、前記複数のコンポーネントの各コンポーネントが前記複数のモジュールの特定のモジュール内へ配置されるようにするステップと、
ｃ．クロスモジュール通信を可能にするために、Ｉ／Ｏコントローラを前記複数のモジュールの各モジュール内に配置するステップと、
ｄ．前記複数のモジュールの各モジュールにおいて、
前記モジュール内に配置される少なくとも１つの前記コンポーネントに当初から取り付けられる各ネットワークｘのために、
前記ネットワークｘに専用のローカルＩ／Ｏコントローラのポートに接続されるとともに前記ネットワークｘに当初から接続されるローカルコンポーネントにも接続される前記ネットワークｘのローカルサブネットワークを形成するステップと、
ｅ．ｉ．メッセージソースモジュールにおいて、メッセージソースコンポーネントにより前記ネットワークｘの前記ローカルサブネットワークを介して前記メッセージソースモジュールのローカルＩ／Ｏコントローラへメッセージを送る、
ｉｉ．前記メッセージソースモジュールの前記ローカルＩ／Ｏコントローラによって、前記メッセージを、前記メッセージソースモジュール外へ送り、前記メッセージがメッセージ送り先モジュールに達するまで、クロスモジュール通信を可能にするために前記スケーラブルネットワーク内で前記メッセージをルーティングする、及び、
ｉｉｉ．前記メッセージを、前記ネットワークｘのローカルサブネットワークを介して、前記メッセージ送り先モジュールのローカルＩ／Ｏコントローラによって受け入れるとともに前記メッセージ送り先モジュール内のメッセージ送り先コンポーネントへ配信する、
ことにより、各ネットワークｘのために、あたかも前記特定用途向けスーパーコンピュータの前記ハードウェア構造が分割されなかったかのように、前記ネットワークｘ上の任意のコンポーネントから同じ前記ネットワークｘ上の任意の他のコンポーネントへのメッセージの配信を可能にするステップと、
を備える方法。
【請求項７】
前記特定用途向けスーパーコンピュータの前記ハードウェア構造の前記分割により生成される複数のモジュールのいずれかを実現できる統合モジュールを形成するステップを更に備える請求項６に記載の方法。
【請求項８】
請求項５の方法を用いてシングルスレッドソフトウェアアプリケーションから得られる特定用途向けスーパーコンピュータ。
【請求項９】
ａ．クロスモジュール通信を可能にするスケーラブルネットワークを形成するステップと、
ｂ．前記特定用途向けスーパーコンピュータのハードウェア構造を複数のモジュールへと分割し、それにより、複数のコンポーネントの各コンポーネントが前記複数のモジュールの特定のモジュール内へ配置されるようにするステップと、
ｃ．クロスモジュール通信を可能にするために、Ｉ／Ｏコントローラを前記複数のモジュールの各モジュール内に配置するステップと、
ｄ．前記複数のモジュールの各モジュールにおいて、
前記モジュール内に配置される少なくとも１つの前記コンポーネントに当初から取り付けられる各ネットワークｘのために、
前記ネットワークｘに専用のローカルＩ／Ｏコントローラのポートに接続されるとともに前記ネットワークｘに当初から接続されるローカルコンポーネントにも接続される前記ネットワークｘのローカルサブネットワークを形成するステップと、
ｅ．ｉ．メッセージソースモジュールにおいて、メッセージソースコンポーネントにより前記ネットワークｘの前記ローカルサブネットワークを介して前記メッセージソースモジュールのローカルＩ／Ｏコントローラへメッセージを送る、
ｉｉ．前記メッセージソースモジュールの前記ローカルＩ／Ｏコントローラによって、前記メッセージを、前記メッセージソースモジュール外へ送り、前記メッセージがメッセージ送り先モジュールに達するまで、クロスモジュール通信を可能にするために前記スケーラブルネットワーク内で前記メッセージをルーティングする、及び、
ｉｉｉ．前記メッセージを、前記ネットワークｘのローカルサブネットワークを介して、前記メッセージ送り先モジュールのローカルＩ／Ｏコントローラによって受け入れるとともに前記メッセージ送り先モジュール内のメッセージ送り先コンポーネントへ配信する、
ことにより、各ネットワークｘのために、あたかも前記特定用途向けスーパーコンピュータの前記ハードウェア構造が分割されなかったかのように、前記ネットワークｘ上の任意のコンポーネントから同じ前記ネットワークｘ上の任意の他のコンポーネントへのメッセージの配信を可能にするステップと、
により、
前記複数のコンポーネントと前記複数のコンポーネントを接続する複数のネットワークとを備える特定用途向けスーパーコンピュータの前記ハードウェア構造を複数のモジュールへと分割するステップを更に備える、請求項５に記載の方法。
【請求項１０】
前記特定用途向けスーパーコンピュータの前記ハードウェア構造の前記分割により生成される複数のモジュールのいずれかを実現できる統合モジュールを形成するステップを更に備える請求項９に記載の方法。
【請求項１１】
請求項１０の方法を用いてシングルスレッドソフトウェアアプリケーションから得られる特定用途向けスーパーコンピュータ。
【請求項１２】
そのハードウェアの実行がシングルスレッドソフトウェアアプリケーション内のコードフラグメントのソフトウェア実行に機能的に相当する特定用途向けスーパーコンピュータであって、
ａ．前記コードフラグメントの領域階層から導かれる階層ソフトウェアパイプラインを実装するパイプラインプリミティブオペレーションの１又は複数の階層レベルと、
ｂ．前記コードフラグメントの前記ソフトウェア実行においてメモリ命令インスタンスＩ２がメモリ命令インスタンスＩ１に依存している場合に、前記コードフラグメントの前記ハードウェアの実行において前記メモリ命令インスタンスＩ２が前記メモリ命令インスタンスＩ１の後に実行されるようにするための、少なくとも１つのカスタマイズされたハードウェア同期ユニットと、
ｃ．ｉ．並列にアクセスされる複数のロード／ストアポートをサポートし、
ｉｉ．同期化ユニットをサポートするために、前記複数のロード／ストアポートの各ロード／ストアポートから出される各メモリ命令の完了を信号で送る、
少なくとも１つのコヒーレントメモリ階層と、
を備え、
スケーラブルネットワーク接続とともにＡＳＩＣテクノロジーで実装された統合モジュールの複数のコピーとして実装され、
ＡＳＩＣテクノロジーで実装された前記統合モジュールは、前記特定用途向けスーパーコンピュータのハードウェア構造を分割した結果生じる複数のモジュールのいずれかの機能を実行可能である、
特定用途向けスーパーコンピュータ。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１６
【補正方法】変更
【補正の内容】
【００１６】
［００３９］
サブネットワークは、１つ以上の入力（幾つかのコンポーネントの送信ＦＩＦＯに接続される）から１つ以上の出力（幾つかのコンポーネントの受信ＦＩＦＯに接続される）へとメッセージを経路付けるための非常に簡単な高周波ルータである。サブネットワークの例としては、基本高周波から形成される不完全なバタフライサブネットワーク、２入力２出力コアクロスバースイッチ（ここでサブネットワークの特にアドレス指定された出力ポートへメッセージが送られる）、または、タスクサブネットワーク（メッセージを自由に受け入れることができる、すなわち、その受信ｆｉｆｏが一杯でない、任意のサブネットワーク出力ポートへ入力メッセージを送る）が挙げられる。図８および図９を参照すると、良好なロードバランシングのため、タスクネットワークは、１次元、２次元、または、それ以上の次元のトーラスとして実施することができ、それにより、タスクは、それらが自由なスレッドユニットを見出すまで、ネットワーク内で循環する。タスクサブネットワークのビルディングブロックは、１つのサイクル内で左から右への順序で要求する入力（そのＦＩＦＯが空でない入力）を利用可能な出力（そのＦＩＦＯが一杯でない出力）に効率的に接続するタスククロスバースイッチである。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０１２２
【補正方法】変更
【補正の内容】
【０１２２】
［００１４５］
依存性内側ループＡの論理的に先のインスタンスの静止を内側ループＢがどのように待つのかを詳しく示すために、本発明者らは、ここで、段落［００１３１］で与えられる外側ループ例ｍａｉｎＬｏｏｐのハードウェア実装も提供する。以下は、インデックスｉを有するこの外側ループのためのツリーＶＬＩＷ命令の組である。
【表３３】
2015502604.tif 000001
【表３４】
2015502604.tif 000002
【手続補正４】
【補正対象書類名】図面
【補正対象項目名】図３８
【補正方法】変更
【補正の内容】
【図３８】
2015502604.tif 000003