【手続補正書】
【提出日】平成27年1月22日(2015.1.22)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ソースコードから並列マシンをプログラムするように構成されたイメージを生成するためのコンピュータ実装方法であって、
アンコンパイルされた実行可能なソフトウェアアプリケーションのソースコードを、複数の相互接続された状態を含むオートマトンに変換することと、
前記オートマトンを、前記オートマトンの状態に対応するインスタンスを含むネットリストに変換することであって、前記インスタンスが前記並列マシンのハードウェア要素に対応し、前記オートマトンをネットリストに変換することが、前記並列マシンの物理的設計に基づいて前記オートマトンの状態を共にグループ化することを含む、前記オートマトンをネットリストに変換することと、
前記ネットリストを前記イメージに変換し、前記イメージは、前記並列マシンを、前記ネットリストの前記インスタンスに対応するようにプログラムとするコンパイルされたバイナリデータを含み、前記コンパイルされたバイナリデータは、前記イメージが前記並列マシンにロードされたとき、前記アンコンパイルされた実行可能なソフトウェアアプリケーションの前記ソースコードによって特定される機能を提供するために、前記並列マシンをプログラムするように配置されていることと、
を含む方法。
【請求項２】
前記ネットリストの前記インスタンスが、状態機械要素（ＳＭＥ）ハードウェア要素に対応するＳＭＥインスタンスおよび、ＳＭＥのグループを含むハードウェア要素に対応するＳＭＥグループインスタンスを含み、かつ、グループ化することが、前記オートマトンの状態をＳＭＥグループインスタンスにグループ化することを含む、請求項１に記載の方法。
【請求項３】
前記オートマトンの前記状態をグループ化するために使用される前記物理的設計が、ＳＭＥのグループを含む前記ハードウェア要素の物理的設計を含む、請求項２に記載の方法。
【請求項４】
前記オートマトンの前記状態をグループ化するために使用される前記物理的設計が、ＳＭＥのグループを含む前記ハードウェア要素内の前記ＳＭＥに関する入力制約または出力制約のうちの１つを含む、請求項３に記載の方法。
【請求項５】
前記オートマトンの前記状態をグループ化するために使用される前記物理的設計が、ＳＭＥのグループを含む前記ハードウェア要素内の前記ＳＭＥが出力を共有するという制限を含む、請求項４に記載の方法。
【請求項６】
ＳＭＥグループインスタンスが、２つのＳＭＥインスタンスを含む２つのグループ（ＧＯＴ）インスタンスを含み、かつ、前記オートマトンの前記状態をグループ化するために使用される前記物理的設計が、各ＧＯＴ内の前記ＳＭＥが共通の出力に結合されていることを含む、請求項２に記載の方法。
【請求項７】
前記オートマトンをネットリストに変換することが、
どの前記オートマトンの前記状態がＧＯＴインスタンス内で共にグループ化できるかを判断することと、
前記判断に基づいて前記オートマトンの前記状態をペア形成することと
を含む、請求項６に記載の方法。
【請求項８】
前記オートマトンの第１の状態または第２の状態のどちらも前記オートマトンの最終状態ではなく、かつ、前記オートマトンの前記第１の状態および前記第２の状態の一方が、前記オートマトンの前記第１の状態または前記第２の状態以外のどの状態も駆動しない場合に、前記オートマトンの前記第１の状態および前記第２の状態が、ＧＯＴインスタンス内で共にペア形成できる、請求項７に記載の方法。
【請求項９】
前記オートマトンの第１の状態または第２の状態のどちらも前記オートマトンの最終状態ではなく、かつ、前記オートマトンの前記第１の状態および前記第２の状態の両方が、同じ外部状態を駆動する場合に、前記オートマトンの前記第１の状態および前記第２の状態が、ＧＯＴインスタンス内で共にペア形成できる、請求項７に記載の方法。
【請求項１０】
前記オートマトンの第１の状態および第２の状態の一方が前記オートマトンの最終状態であり、かつ、前記オートマトンの前記第１の状態および前記第２の状態の他方が、どの外部状態も駆動しない場合に、前記オートマトンの前記第１の状態および前記第２の状態が、ＧＯＴインスタンス内で共にペア形成できる、請求項７に記載の方法。
【請求項１１】
前記オートマトンの第１の状態および第２の状態の両方が前記オートマトンの最終状態であり、かつ、前記オートマトンの前記第１の状態および前記第２の状態の両方が、同じ外部状態を駆動する場合に、前記オートマトンの前記第１の状態および前記第２の状態が、ＧＯＴインスタンス内で共にペア形成できる、請求項７に記載の方法。
【請求項１２】
どの前記オートマトンの前記状態がＧＯＴインスタンス内で共にグループ化できるかを判断することが、グラフ理論を使用して、どの前記オートマトンの前記状態がＧＯＴインスタンス内で共にグループ化できるかを判断することを含む、請求項７に記載の方法。
【請求項１３】
グラフ理論を使用して、どの前記オートマトンの前記状態がＧＯＴインスタンス内で共にグループ化できるかを判断することが、最大マッチングを識別するために、グラフ理論を使用して、どの前記オートマトンの前記状態がＧＯＴインスタンス内で共にグループ化できるかを判断することを含む、請求項１２に記載の方法。
【請求項１４】
前記イメージを公開することをさらに含む、
請求項１に記載の方法。
【請求項１５】
前記ネットリストの前記インスタンスが、汎用インスタンスおよび専用インスタンスを含み、前記汎用インスタンスが前記オートマトンの汎用状態に対応し、また、前記専用インスタンスが前記オートマトンの専用状態に対応する、請求項１に記載の方法。
【請求項１６】
前記汎用インスタンスに対応する前記ハードウェア要素が、状態機械要素（ＳＭＥ）および２つのグループ（ＧＯＴ）を含み、かつ、前記専用インスタンスに対応する前記ハードウェア要素がカウンタおよび論理要素を含む、請求項１５に記載の方法。
【請求項１７】
一時的な伝送信号ではない、命令を含むコンピュータ可読媒体であって、前記コンピュータによって実行されるときに、前記コンピュータに、
アンコンパイルされた実行可能なソフトウェアアプリケーションのソースコードを、複数の相互接続された状態を含むオートマトンに変換することと、
前記オートマトンを、前記オートマトンの状態に対応するインスタンスを含むネットリストに変換することであって、前記インスタンスが前記並列マシンのハードウェア要素に対応し、前記オートマトンをネットリストに変換することが、前記並列マシンの物理的設計に基づいて前記オートマトンの状態を共にグループ化することを含む、前記オートマトンをネットリストに変換することと、
前記ネットリストを前記イメージに変換し、前記イメージは、前記並列マシンを、前記ネットリストの前記インスタンスに対応するようにプログラムとするコンパイルされたバイナリデータを含み、前記コンパイルされたバイナリデータは、前記イメージが前記並列マシンにロードされたとき、前記アンコンパイルされた実行可能なソフトウェアアプリケーションの前記ソースコードによって特定される機能を提供するために、前記並列マシンをプログラムするように配置されていることと
を含む動作を実行させる、
コンピュータ可読媒体。
【請求項１８】
前記オートマトンが均質なオートマトンである、請求項１７に記載のコンピュータ可読媒体。
【請求項１９】
前記オートマトンをネットリストに変換することが、前記オートマトンの前記状態の各々を、前記ハードウェア要素に対応するインスタンスにマッピングすることと、前記インスタンス間の接続性を決定することとを含む、請求項１７に記載のコンピュータ可読媒体。
【請求項２０】
前記ネットリストが、前記ハードウェア要素間の導体を表す前記インスタンス間の複数の接続をさらに含む、請求項１７に記載のコンピュータ可読媒体。
【請求項２１】
前記オートマトンをネットリストに変換することが、前記オートマトンを、開始状態を除いて、前記オートマトンの状態に対応するインスタンスを含むネットリストに変換することを含む、請求項１７に記載のコンピュータ可読媒体。
【請求項２２】
前記命令が、前記コンピュータに、
前記ネットリストの前記インスタンスに対応する前記ハードウェア要素の前記並列マシン内の位置を決定すること
を含む動作を実行させる、請求項１７に記載のコンピュータ可読媒体。
【請求項２３】
前記オートマトンの状態を共にグループ化することが、汎用要素のグループを含むハードウェア要素の物理的設計に基づいて、前記オートマトンの状態を共にグループ化することを含む、請求項２２に記載のコンピュータ可読媒体。
【請求項２４】
前記命令が、前記コンピュータに、
前記並列マシンのどの導体が前記ハードウェア要素を接続するために使用されるかを決定することと、
前記並列マシンのプログラム可能スイッチに対する設定を決定することであって、前記プログラム可能スイッチが、前記ハードウェア要素を選択的に共に結合するように構成されている、プログラム可能スイッチに対する設定を決定することと
を含む動作を実行させる、請求項２２に記載のコンピュータ可読媒体。
【請求項２５】
ソフトウェアがその上に格納されたメモリと、
前記メモリに通信的に結合されたプロセッサであって、前記ソフトウェアが、前記プロセッサによって実行されるとき、前記プロセッサに、
アンコンパイルされた実行可能なソフトウェアアプリケーションのソースコードを、複数の相互接続された状態を含むオートマトンに変換することと、
前記オートマトンを、前記オートマトンの状態に対応するインスタンスを含むネットリストに変換することであって、前記インスタンスが前記並列マシンのハードウェア要素に対応し、前記インスタンスが、複数の第１のインスタンスおよび２つ以上の第１のインスタンスを含むグループインスタンスを含み、前記オートマトンをネットリストに変換することが、未使用の第１のインスタンスの数に基づいて、前記オートマトンの状態をグループインスタンス内に共にグループ化することを含む、前記オートマトンをネットリストに変換することと、
前記ネットリストを前記イメージに変換し、前記イメージは、前記並列マシンを、前記ネットリストの前記インスタンスに対応するようにプログラムとするコンパイルされたバイナリデータを含み、前記コンパイルされたバイナリデータは、前記イメージが前記並列マシンにロードされたとき、前記アンコンパイルされた実行可能なソフトウェアアプリケーションの前記ソースコードによって特定される機能を提供するために、前記並列マシンをプログラムするように配置されていることと
をさせるプロセッサと
を含むコンピュータ。
【請求項２６】
前記グループインスタンスが２つのグループ（ＧＯＴ）インスタンスを含み、かつ、前記オートマトンの状態をグループ化することが、前記ペア形成された状態がどの状態を駆動するかに応じて、前記オートマトンの状態をペア形成することを含む、請求項２５に記載のコンピュータ。
【請求項２７】
未使用の第１のインスタンスの数に基づいて前記オートマトンの状態をグループインスタンス内にグループ化することが、
以下の条件：
前記オートマトンの第１の状態または第２の状態のどちらも前記オートマトン内の最終状態ではなく、かつ前記第１の状態および第２の状態の一方が、前記第１の状態または第２の状態以外のどの状態も駆動しないことと；
前記第１の状態または第２の状態のどちらも前記オートマトン内の最終状態ではなく、かつ前記第１の状態および前記第２の状態の両方が、同じ外部状態を駆動することと；
前記第１の状態または前記第２の状態のどちらかが最終状態であり、かつ最終状態ではない前記第１の状態または第２の状態が、前記第１の状態または第２の状態以外のどの状態も駆動しないことと；
前記第１の状態および前記第２の状態の両方が最終状態であり、かつ前記第１の状態および前記第２の状態の両方が、同じ外部状態を駆動することと
に基づいて、前記第１の状態および前記第２の状態がペア形成できるかどうかを判断することを含む、請求項２６に記載のコンピュータ。
【請求項２８】
前記オートマトンをネットリストに変換することが、
前記オートマトンの前記状態をグラフとしてモデル化することであって、前記グラフのバーテックスが状態に対応し、かつ前記グラフのエッジが前記オートマトンの前記状態の可能なペア形成に対応する、前記状態をグラフとしてモデル化することと、
前記グラフに対して一致するバーテックスを決定することと、
前記一致するバーテックスに対応する前記オートマトンの状態をペア形成することと
を含む、請求項２５に記載のコンピュータ。
【請求項２９】
前記オートマトンをネットリストに変換することが、
前記グラフに対して最大マッチングを決定すること
を含む、請求項２８に記載のコンピュータ。
【請求項３０】
前記オートマトンをネットリストに変換することが、
一致するバーテックスに対応する前記オートマトンの状態の各セットをペア形成することと、
一致しないバーテックスに対応する前記オートマトンの各状態をＧＯＴインスタンスにマッピングすることであって、前記ＧＯＴインスタンス内の１つのＳＭＥインスタンスが使用されない、一致しないバーテックスに対応する各状態をＧＯＴインスタンスにマッピングすることと
を含む、請求項２９に記載のコンピュータ。
【請求項３１】
システムであって、前記システムが、
コンピュータであって、
アンコンパイルされた実行可能なソフトウェアアプリケーションのソースコードを、複数の相互接続された状態を含むオートマトンに変換することと、
前記オートマトンを、前記オートマトンの状態に対応するインスタンスを含むネットリストに変換することであって、前記インスタンスが前記並列マシンのハードウェア要素に対応し、前記インスタンスが、複数の第１のインスタンスおよび２つ以上の第１のインスタンスを含むグループインスタンスを含み、前記オートマトンをネットリストに変換することが、未使用の第１のインスタンスの数に基づいて、前記オートマトンの状態をグループインスタンス内に共にグループ化することを含む、前記オートマトンをネットリストに変換することと、
前記ネットリストを前記イメージに変換し、前記イメージは、前記並列マシンを、前記ネットリストの前記インスタンスに対応するようにプログラムとするコンパイルされたバイナリデータを含み、前記コンパイルされたバイナリデータは、前記イメージが前記並列マシンにロードされたとき、前記アンコンパイルされた実行可能なソフトウェアアプリケーションの前記ソースコードによって特定される機能を提供するために、前記並列マシンをプログラムするように配置されているすることと
を行うように構成された、コンピュータと、
前記イメージを並列マシン上にロードするように構成された装置と
を含む、システム。
【請求項３２】
状態を共にグループ化することが、
前記ペア形成された状態がどの状態を駆動するかに応じて、前記オートマトンの状態をペア形成すること
を含む、請求項３１に記載のシステム。
【請求項３３】
未使用の第１のインスタンスの数に基づいて、前記オートマトンの状態を共にグループインスタンス内にグループ化することが、
以下の条件：
第１の状態または第２の状態のどちらも前記オートマトン内の最終状態ではなく、かつ前記第１の状態および第２の状態の一方が、前記第１の状態または第２の状態以外のどの状態も駆動しないことと；
前記第１の状態または第２の状態のどちらも前記オートマトン内の最終状態ではなく、かつ前記第１の状態および前記第２の状態の両方が、同じ外部状態を駆動することと；
前記第１の状態または前記第２の状態のどちらかが最終状態であり、かつ最終状態ではない前記第１の状態または第２の状態が、前記第１の状態または第２の状態以外のどの状態も駆動しないことと；
前記第１の状態および前記第２の状態の両方が最終状態であり、かつ前記第１の状態および前記第２の状態の両方が、同じ外部状態を駆動することと
に基づいて、前記オートマトンの前記第１の状態および前記オートマトンの前記第２の状態がペア形成できるかどうかを判断することを含む、請求項３１に記載のシステム。
【請求項３４】
未使用の第１のインスタンスの数に基づいて、前記オートマトンの状態を共にグループインスタンス内にグループ化することが、
前記状態をグラフとしてモデル化することであって、前記グラフのバーテックスが状態に対応し、かつ前記グラフのエッジが前記状態の可能なペア形成に対応する、前記状態をグラフとしてモデル化することと、
前記グラフに対して一致するバーテックスを決定することと、
前記一致するバーテックスに対応する状態をペア形成することと
を含む、請求項３１に記載のシステム。
【請求項３５】
未使用の第１のインスタンスの数に基づいて、前記オートマトンの状態を共にグループインスタンス内にグループ化することが、
前記グラフに対して最大マッチングを決定すること
を含む、請求項３４に記載のシステム。
【請求項３６】
未使用の第１のインスタンスの数に基づいて、前記オートマトンの状態を共にグループインスタンス内にグループ化することが、
一致するバーテックスに対応する前記オートマトンの状態の各セットをペア形成することと、
一致しないバーテックスに対応する各状態をＧＯＴインスタンスにマッピングすることであって、前記ＧＯＴインスタンス内の１つのＳＭＥインスタンスが使用されない、一致しないバーテックスに対応する各状態をＧＯＴインスタンスにマッピングすることと
を含む、請求項３５に記載のシステム。
【請求項３７】
前記装置が、前記オートマトンの状態の各ペアを、前記並列マシン内の２つのハードウェア要素のグループとして実装するように構成されている、請求項３１に記載のシステム。
【請求項３８】
請求項１の前記プロセスによって生成されたイメージによってプログラム化された並列マシン。