【手続補正書】
【提出日】平成27年5月11日(2015.5.11)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１の計算カーネルが第１の閾値以下の数の分岐命令を含むことを示すランタイム前静的情報であって、前記第１の計算カーネルのコンパイル中に判定されたランタイム前静的情報の少なくとも一部に基づいて、前記第１の計算カーネルを、複数のプロセッサコアのうち第１のマイクロアーキテクチャを有する第１のプロセッサコアにスケジューリングするステップと、
前記第１の閾値よりも大きい数の分岐命令を含むことを示すランタイム前静的情報の少なくとも一部に基づいて、前記第１の計算カーネルを、複数のプロセッサコアのうち第２のマイクロアーキテクチャを有する第２のプロセッサコアにスケジューリングするステップと、
前記第１のプロセッサコアまたは前記第２のプロセッサコアでの前記第１の計算カーネルのランタイム挙動に対応する、測定されたランタイム情報を受信するステップと、
実行された分岐命令の数が第２の閾値よりも大きいことを示す前記測定されたランタイム情報の少なくとも一部に基づいて、前記第１の計算カーネルのスケジュールを、前記第１のプロセッサコアから、前記複数のプロセッサコアのうち前記第２のプロセッサコアに変更するステップと、
を含む、異種マルチコアアーキテクチャにおいて作業単位をスケジューリングするための方法。
【請求項２】
前記第１の計算カーネルのコンパイル中に、前記第１のプロセッサおよび第２のプロセッサコアの各々に対して、前記第１の計算カーネルの異なるバージョンのバイナリコードを生成するステップをさらに含む、請求項１に記載の方法。
【請求項３】
前記第１のマイクロアーキテクチャは、単一命令複数データ（ＳＩＭＤ）マイクロアーキテクチャである、請求項１に記載の方法。
【請求項４】
前記スケジューリングするステップは、
第２の計算カーネルが第１の数の命令を含むことを、散乱または間接的メモリアクセスを用いて判定するステップと、
前記第２の計算カーネルが第２の数の命令を含むことを、順次またはストライドメモリアクセスを用いて判定するステップと、
命令の前記第１の数が命令の前記第２の数よりも大きいという判定に応じて、前記第２の計算カーネルを前記第２のプロセッサコアにスケジューリングするステップと、
命令の前記第１の数が命令の前記第２の数よりも大きくないという判定に応じて、前記第２の計算カーネルを前記第１のプロセッサコアにスケジューリングするステップと、
をさらに含む、請求項１に記載の方法。
【請求項５】
前記第２の計算カーネルが第３の閾値以下の数の第２の種類の命令を含むことを示すランタイム前静的情報であって、前記第２の計算カーネルのコンパイル中に判定されたランタイム前静的情報の少なくとも一部に基づいて、第２の計算カーネルを、前記複数のプロセッサコアのうち前記第２のプロセッサコアにスケジューリングするステップであって、前記第２の種類は、暗号、浮動小数点、ガーベジコレクションおよびビデオグラフィックスのうち少なくとも１つに対応する、ステップと、
実行された前記第２の種類の命令の数が少なくとも第４の閾値であることを示す、測定されたランタイム情報の少なくとも一部に基づいて、前記第２の計算カーネルのスケジュールを、前記第２のプロセッサコアから前記第１のプロセッサコアに変更するステップであって、前記第１のマイクロアーキテクチャは、単一命令複数データ（ＳＩＭＤ）マイクロアーキテクチャである、ステップと、をさらに含む、請求項１に記載の方法。
【請求項６】
前記スケジューリングするステップは、
前記第１の計算カーネルに含まれるメモリアクセスの少なくとも一部に基づいて、前記第１の計算カーネルを、前記第１のプロセッサコアにスケジューリングするステップを含む、請求項５に記載の方法。
【請求項７】
第１のマイクロアーキテクチャを備える第１のプロセッサコアと、
前記第１のマイクロアーキテクチャとは異なる第２のマイクロアーキテクチャを備える第２のプロセッサコアと、
スケジューラを備えるオペレーティングシステムと、を備え、
前記スケジューラは、
第１の計算カーネルが第１の閾値以下の数の分岐命令を含むことを示すランタイム前静的情報であって、第１の計算カーネルのコンパイル中に判定されたランタイム前静的情報の少なくとも一部に基づいて、前記第１の計算カーネルを前記第１のプロセッサコアにスケジューリングし、
分岐命令の数が前記第１の閾値よりも大きいことを示すランタイム前静的情報の少なくとも一部に基づいて、前記第１の計算カーネルを、複数のプロセッサコアのうち第２のプロセッサコアにスケジューリングし、
前記第１のプロセッサコアまたは前記第２のプロセッサコアでの前記第１の計算カーネルのランタイム挙動に対応する、測定されたランタイム情報を受信し、
実行された分岐命令の数が第２の閾値よりも大きいことを示す前記測定されたランタイム情報の少なくとも一部に基づいて、前記第１の計算カーネルのスケジュールを、前記第１のプロセッサコアから前記第２のプロセッサコアに変更するように構成されている、
異種マルチコアアーキテクチャを含むコンピュータシステム。
【請求項８】
コンパイラは、前記第１の計算カーネルのコンパイル中に、前記第１のプロセッサおよび第２のプロセッサコアの各々に対して、前記第１の計算カーネルの異なるバージョンのバイナリコードを生成するように構成されている、請求項７に記載のコンピュータシステム。
【請求項９】
前記第１のマイクロアーキテクチャは、単一命令複数データ（ＳＩＭＤ）マイクロアーキテクチャである、請求項７に記載のコンピュータシステム。
【請求項１０】
前記スケジューラは、前記スケジューリングすることを実行するために、
第２の計算カーネルが第１の数の命令を含むことを、散乱または間接的メモリアクセスを用いて判定し、
前記第２の計算カーネルが第２の数の命令を含むことを、順次またはストライドメモリアクセスを用いて判定し、
命令の前記第１の数が命令の前記第２の数よりも大きいという判定に応じて、前記第２の計算カーネルを前記第２のプロセッサコアにスケジューリングし、
命令の前記第１の数が命令の前記第２の数よりも大きくないという判定に応じて、前記第２の計算カーネルを前記第１のプロセッサコアにスケジューリングするように構成されている、
請求項９に記載のコンピュータシステム。
【請求項１１】
前記スケジューラは、
前記第２の計算カーネルが第３の閾値以下の数の第２の種類の命令を含むことを示すランタイム前静的情報であって、前記第２の計算カーネルのコンパイル中に判定されたランタイム前静的情報の少なくとも一部に基づいて、第２の計算カーネルを、前記複数のプロセッサコアのうち前記第２のプロセッサコアにスケジューリングすることであって、前記第２の種類は、暗号、浮動小数点、ガーベジコレクションおよびビデオグラフィックスのうち少なくとも１つに対応する、ことと、
実行された前記第２の種類の命令の数が少なくとも第４の閾値であることを示す、測定されたランタイム情報の少なくとも一部に基づいて、前記第２の計算カーネルのスケジュールを、前記第２のプロセッサコアから前記第１のプロセッサコアに変更することであって、前記第１のマイクロアーキテクチャは、単一命令複数データ（ＳＩＭＤ）マイクロアーキテクチャである、ことと、
を行うように構成されている、請求項７に記載のコンピュータシステム。
【請求項１２】
前記スケジューリングすることは、
前記第１の計算カーネルに含まれるメモリアクセスの少なくとも一部に基づいて、前記第１の計算カーネルを、前記第１のプロセッサコアにスケジューリングすることを含む、請求項１１に記載のコンピュータシステム。
【請求項１３】
異種マルチコアアーキテクチャにおいて計算カーネルをスケジューリングするように構成されたプログラム命令を記憶するコンピュータ可読記憶媒体であって、
前記プログラム命令は、
第１の計算カーネルが第１の閾値以下の数の分岐命令を含むことを示すランタイム前静的情報であって、前記第１の計算カーネルのコンパイル中に判定されたランタイム前静的情報の少なくとも一部に基づいて、前記第１の計算カーネルを、複数のプロセッサコアのうち第１のマイクロアーキテクチャを有する第１のプロセッサコアにスケジューリングすることと、
前記第１の閾値よりも大きい数の分岐命令を含むことを示すランタイム前静的情報の少なくとも一部に基づいて、前記第１の計算カーネルを、複数のプロセッサコアのうち第２のマイクロアーキテクチャを有する第２のプロセッサコアにスケジューリングすることと、
前記第１のプロセッサコアまたは前記第２のプロセッサコアでの前記第１の計算カーネルのランタイム挙動に対応する、測定されたランタイム情報を受信することと、
実行された分岐命令の数が第２の閾値よりも大きいことを示す前記測定されたランタイム情報の少なくとも一部に基づいて、前記第１の計算カーネルのスケジュールを、前記第１のプロセッサコアから、前記複数のプロセッサコアのうち前記第２のプロセッサコアに変更することと、
を行うように実行可能である、
コンピュータ可読記憶媒体。
【請求項１４】
前記第１のマイクロアーキテクチャは、単一命令複数データ（ＳＩＭＤ）マイクロアーキテクチャである、請求項１３に記載のコンピュータ可読記憶媒体。
【請求項１５】
前記プログラム命令は、前記スケジューリングすることを実行するために、
第２の計算カーネルが第１の数の命令を含むことを、散乱または間接的メモリアクセスを用いて判定し、
前記第２の計算カーネルが第２の数の命令を含むことを、順次またはストライドメモリアクセスを用いて判定し、
命令の前記第１の数が命令の前記第２の数よりも大きいという判定に応じて、前記第２の計算カーネルを前記第２のプロセッサコアにスケジューリングし、
命令の前記第１の数が命令の前記第２の数よりも大きくないという判定に応じて、前記第２の計算カーネルを前記第１のプロセッサコアにスケジューリングするように実行可能である、
請求項１４に記載のコンピュータ可読記憶媒体。