(57)【要約】  オンチップネットワークにより相互接続したプロセッサユニット、インタフェースブロック及び機能ブロックを有するCMP内で専用スレッド管理を行う方法及び装置。種々の実施態様において、スレッド管理はどの演算処理ユニットからも独立しているので、短い待ち時間で高速にスレッドを切り替えるとともに、ソフトウェアベースのスレッド管理スレッドのオーバーヘッドを生じさせない。
2009519513.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサコアを有する機器においてマルチコアを仮想化する方法であって、少なくとも一つのスケジューリング命令を受け取る工程と、少なくとも一つの実行命令を受け取る工程と、前記少なくとも一つのスケジューリング命令に応じて、少なくとも一つの実行命令を実行するプロセッサコアに割り当てる工程とを有することを特徴とする方法。
【請求項２】
請求項１に記載の方法において、前記少なくとも一つの実行命令の割り当てを帯域外で行うことを特徴とする方法。
【請求項３】
請求項１に記載の方法において、複数のプロセッサコアから実行するプロセッサコアを選択し、前記選択したプロセッサコアに少なくとも一つの実行命令を割り当てることを特徴とする方法。
【請求項４】
請求項３に記載の方法において、複数の同種のプロセッサコアから実行するプロセッサコアを選択することを特徴とする方法。
【請求項５】
請求項１に記載の方法において、前記少なくとも一つの実行命令に関連するスレッドを特定し、前記特定されたスレッドに関連するプロセッサコアに少なくとも一つの実行命令を割り当てることを特徴とする方法。
【請求項６】
請求項１に記載の方法において、プロセッサコアの電力状態を変化させる工程をさらに有することを特徴とする方法。
【請求項７】
請求項１に記載の方法において、複数のプロセッサコアから電力及び熱分布の少なくとも一方を考慮して実行するプロセッサコアを選択し、前記選択されたプロセッサコアに少なくとも一つの実行命令を割り当てることを特徴とする方法。
【請求項８】
請求項１に記載の方法において、前記割り当てられた少なくとも一つの命令を実行した旨のメッセージを前記プロセッサコアから受け取る工程をさらに有することを特徴とする方法。
【請求項９】
請求項１に記載の方法において、前記プロセッサコアの状態を記憶する工程をさらに有することを特徴とする方法。
【請求項１０】
請求項１に記載の方法において、前記スレッドの状態及び情報を記憶する工程をさらに有することを特徴とする方法。
【請求項１１】
請求項９に記載の方法において、複数のプロセッサコアからプロセッサの状態に関する記憶情報を用いて実行するプロセッサコアを選択し、前記選択されたプロセッサコアに少なくとも一つの実行命令を割り当てることを特徴とする方法。
【請求項１２】
請求項１に記載の方法において、少なくとも一つの実行命令を有する複数の実行スレッドを受け取り、前記受け取った複数の中からスレッドを選択し、前記選択されたスレッドから少なくとも一つの実行命令を受け取ることを特徴とする方法。
【請求項１３】
請求項１に記載の方法において、プロセッサコアが第一の割当命令を実行した後にスレッド間の依存関係を検出し、前記実行された命令を第二の割当命令を実行した後に再割り当てする方法であって、前記第二の割当命令を実行することにより、スレッド間の依存関係なしに前記第一の命令を再実行することができることを特徴とする方法。
【請求項１４】
複数のプロセッサコアとスレッド管理ユニットとを有する機器であって、前記スレッド管理ユニットが実行命令及びスケジューリング命令を受け取り、前記スケジューリング命令に応じて前記実行命令をプロセッサコアに割り当てることを特徴とする機器。
【請求項１５】
請求項14に記載の機器において、前記複数のプロセッサコアが同種であることを特徴とする機器。
【請求項１６】
請求項14に記載の機器において、前記スレッド管理ユニットがハードウェアにのみ実装されていることを特徴とする機器。
【請求項１７】
請求項14に記載の機器において、前記スレッド管理ユニットがハードウェア及びソフトウェアに実装されていることを特徴とする機器。
【請求項１８】
請求項14に記載の機器において、前記プロセッサコアがネットワーク内で相互接続していることを特徴とする機器。
【請求項１９】
請求項14に記載の機器において、前記プロセッサコアがネットワークにより接続されていることを特徴とする機器。
【請求項２０】
請求項14に記載の機器において、前記プロセッサコアが光ネットワーク内で相互接続していることを特徴とする機器。
【請求項２１】
請求項14に記載の機器において、前記スレッド管理ユニットがステートマシンを有することを特徴とする機器。
【請求項２２】
請求項14に記載の機器において、前記スレッド管理ユニットが一つ以上のスケジューリング、スレッド管理及び資源割り当てを行うためのマイクロプロセッサを有することを特徴とする機器。
【請求項２３】
請求項14に記載の機器において、前記スレッド管理ユニットがスレッド及び資源の情報を記憶するための専用メモリを有することを特徴とする機器。
【請求項２４】
請求項14に記載の機器において、少なくとも一つの周辺機器を有することを特徴とする機器。
【請求項２５】
請求項14に記載の機器において、前記複数のプロセッサコアの少なくとも二つが異なる速度で動作することを特徴とする機器。
【請求項２６】
ソフトウェアプログラムをコンパイルする方法であって、コンパイル可能なソースコードステートメントを受け取る工程と、前記ソースコードステートメントに応じた機械可読なオブジェクトコードステートメントを作成する工程と、前記オブジェクトコードステートメントをプロセッサコアに割り当てるようにスレッド管理ユニットに通知する機械可読なオブジェクトコードステートメントを追加する工程とを有することを特徴とする方法。
【請求項２７】
請求項26に記載の方法において、機械可読なオブジェクトコードステートメントを繰り返し作成し、前記作成された複数のステートメントを境界により一対に分割された複数のスレッド内に組織する工程をさらに有することを特徴とする方法。
【請求項２８】
請求項27に記載の方法において、スレッド管理ユニットに通知するための機械可読なオブジェクトコードステートメントをスレッド間の境界に追加することを特徴とする方法。
【請求項２９】
請求項26に記載の方法において、スレッド間の境界を示すコンパイラ可能なソースコードステートメントに応じてスレッド管理ユニットに通知する機械可読なオブジェクトコードステートメントを追加することを特徴とする方法。
【発明の詳細な説明】
【関連出願の相互参照】
【０００１】
本出願は、2005年12月６日に出願した同時係属中の米国仮出願第60/742,674号に基づく優先権を主張し、これらの内容は本明細書の一部を構成する。
【技術分野】
【０００２】
本発明は、複数のプロセッサコアによりコンピュータ命令を実行する方法及び装置に関し、特に複数のプロセッサコアによりコンピュータ命令を実行するための専用スレッド管理の使用に関する。
【背景技術】
【０００３】
マルチメディア、ネットワーキング、高性能コンピューティング等のアプリケーションに求められる演算処理能力は、複雑化及び処理データ量の増加に伴い増大してきている。同時に、消費電力及び浪費熱の増加に対する性能向上率は収穫逓減の法則の域に達しており、単にクロックスピードを上げても性能を向上させることは難しい。そのため、マイクロプロセッサの性能向上には並列処理が有望であると考えられている。
【０００４】
スレッドレベル並列処理（TLP）は複数のプログラムスレッドを同時に走らせ、アプリケーションの処理能力を向上させる並列処理方法である。TLPは同時マルチスレッド（SMT）とチップマルチプロセッサ（CMP）とに大別される。
【０００５】
SMTは一つの処理ユニット内にレジスタ及びプログラムカウンタを複製するので、一度に複数のスレッドの状態を記憶できる。これらのスレッドをSMTプロセッサ内で一つずつ部分的に実行し、プロセッサによりスレッド間で高速に切り替えることにより、仮想並列を実現させる。しかしながら、処理装置が複雑であるとともに、レジスタ及びプログラムカウンタを複製するための外部ハードウェアが必要である。さらに、この並列性はあくまでも仮想であり、スレッドを高速に切り替えても実際に実行されるスレッドは常に一つのみである。
【０００６】
CMPは少なくとも二つの処理ユニットを有し、各処理ユニットは自身のスレッドを実行する。CMPはSMTプロセッサと比べて本物の並列性を有するが、処理ユニットで実行されているスレッドを切り替える際の待ち時間により性能が悪い。CMPの問題点は一つ以上の処理ユニット内でスレッド管理タスクをソフトウェアにより実行している点と、スレッド管理に必要なデータを格納するために外部メモリにアクセスすることが多い点である。そのためスレッドの実行に利用できる処理ユニット数やメモリ帯域幅が制限される。またスレッド管理タスク自体も実行されるスレッドであるので、処理ユニットの割当管理、スレッド実行のスケジューリング及びリアルタイムでのオブジェクト同期の機能が制限される。
【０００７】
最近、SMTマルチプロセッサを一チップに集積したハイブリッド実装にSMT及びCMPを組み込むことにより、膨大な量の仮想及び現実の並列処理を行っている。しかしながら、帯域内でのスレッド管理により生じる問題については言及していない。
【０００８】
従って、先行技術の欠点を解消してマイクロプロセッサの性能を向上させるために、マルチコアプロセッサに専用スレッド管理ユニットを内蔵する方法及び装置が求められている。
【発明の開示】
【０００９】
本発明は、オンチップネットワークにより相互接続した演算処理ユニット、インタフェースブロック及び機能ブロックを有するCMPに専用スレッド管理を内蔵することにより、従来のSMTプロセッサ及びCMPの欠点を解消することを目的とする。このアーキテクチャではスレッド管理を帯域外で行うので、短い待ち時間で高速にスレッドを切り替えるとともに、ソフトウェアベースのスレッド管理スレッドのオーバーヘッドを生じさせない。
【００１０】
本発明の一側面は、複数のプロセッサコアを有する機器においてマルチコアを仮想化する方法である。少なくとも一つのスケジューリング命令と少なくとも一つの実行命令とを受け取り、少なくとも一つのスケジューリング命令に応じて、少なくとも一つの実行命令を実行するプロセッサコアに割り当てる。一実施態様では、命令の割り当ては帯域外で行う。複数のプロセッサコアから実行するプロセッサコアを選択し、前記選択したプロセッサコアに少なくとも一つの実行命令を割り当てても良い。プロセッサコアは複数の同種のプロセッサコアから選んでも良い。プロセッサコアの電力状態を変化させても良い。
【００１１】
別の実施態様では、前記少なくとも一つの実行命令に関連するスレッドを特定し、前記特定されたスレッドに関連するプロセッサコアに少なくとも一つの実行命令を割り当てる。さらに別の実施態様では、複数のプロセッサコアから電力及び熱分布の少なくとも一方を考慮して実行するプロセッサコアを選択し、前記選択されたプロセッサコアに少なくとも一つの実行命令を割り当てる。さらに別の実施態様では、複数のプロセッサコアからプロセッサの状態に関する記憶情報を用いて実行するプロセッサコアを選択し、前記選択されたプロセッサコアに少なくとも一つの実行命令を割り当てる。
【００１２】
一実施態様では、少なくとも一つの実行命令を有する複数の実行スレッドを受け取り、前記受け取った複数の中からスレッドを選択し、前記選択されたスレッドから少なくとも一つの実行命令を受け取る。
【００１３】
種々の実施態様において、本発明の方法は任意の工程を含んでも良い。本発明の方法は、前記割り当てられた少なくとも一つの命令を実行した旨のメッセージを前記プロセッサコアから受け取る工程をさらに有する。前記スレッドの状態及び情報又は前記プロセッサコアの状態を記憶しても良い。プロセッサコアが第一の割当命令を実行した後にスレッド間の依存関係が検出された場合、前記実行された命令を第二の割当命令を実行した後に再割り当てすることにより、スレッド間の依存関係なしに前記第一の命令を再実行することができる。
【００１４】
本発明の別の側面は、複数のプロセッサコアとスレッド管理ユニットとを有する機器であって、前記スレッド管理ユニットが実行命令及びスケジューリング命令を受け取り、前記スケジューリング命令に応じて前記実行命令をプロセッサコアに割り当てる機器である。前記複数のプロセッサコアは同種であっても良く、前記スレッド管理ユニットがハードウェアにのみ実装されているか、ハードウェア及びソフトウェアに実装されていても良い。前記プロセッサコアは異なる速度で動作しても良く、ネットワーク内で相互接続しているか、ネットワークにより接続されていても良く、ネットワークは光ネットワークでも良い。本発明の装置は少なくとも一つの周辺機器を有しても良い。
【００１５】
前記スレッド管理ユニットは一つ以上のステートマシン、マイクロプロセッサ及び専用メモリを有しても良い。マイクロプロセッサは一つ以上のスケジューリング、スレッド管理及び資源割り当てを行うためのものでも良い。スレッド管理ユニットはスレッド及び資源の情報を記憶するためのものでも良い。
【００１６】
本発明のさらに別の側面は、ソフトウェアプログラムをコンパイルする方法である。コンパイル可能なソースコードステートメントを受け取り、前記ソースコードステートメントに応じた機械可読なオブジェクトコードステートメントを作成する。前記オブジェクトコードステートメントをプロセッサコアに割り当てるようにスレッド管理ユニットに通知する機械可読なオブジェクトコードステートメントを追加する。
【００１７】
本発明の方法は、機械可読なオブジェクトコードステートメントを繰り返し作成し、前記作成された複数のステートメントを境界により分割された複数のスレッドに構成する工程をさらに有しても良い。この実施態様では、スレッド管理ユニットに通知するための機械可読なオブジェクトコードステートメントをスレッド間の境界に追加する。別の実施態様では、スレッド間の境界を示すコンパイラ可能なソースコードステートメントに応じてスレッド管理ユニットに通知する機械可読なオブジェクトコードステートメントを追加する。
【００１８】
本発明の特徴及び効果を明細書、図及び特許請求の範囲により以下詳述する。
【図面の簡単な説明】
【００１９】
本発明の特徴をより理解するために、以下の図を参照する。
【００２０】
【図１】図１はマルチコア環境において専用スレッド管理を有する本発明の一実施態様を示すブロック図である。
【図２】図２は本発明による複数のプロセッサコアを有する機器においてマルチコアを仮想化する方法を示すフローチャートである。
【図３】図３はスレッド管理ユニットの一例を示すブロック図である。
【図４】図４は本発明の実施態様に用いるソフトウェアプログラムのコンパイル方法を示すフローチャートである。
【００２１】
全図を通して同一の参照番号は同一の部分を表す。図は本発明の原理及び概念を拡大縮小・強調するものではない。
【発明の詳細な説明】
【００２２】
本発明の実施態様は、相互接続した演算処理ユニット、インタフェースブロック及び機能ブロックを有するCMPに専用スレッド管理を内蔵することにより、従来のマルチコア方式の欠点を解消するものである。スレッド管理がハードウェアにのみ実装されているか、ハードウェア及びソフトウェアに実装されているので、ソフトウェアベースのスレッド管理スレッドのオーバーヘッドを生じさせることなくスレッドを切り替えることができる。
【００２３】
本発明のハードウェア実施態様は、SMTのようにレジスタ及びプログラムカウンタを複製する必要がないので、SMTよりも単純で安価である。また本発明の方法及び装置とSMTとを組み合わせることによりさらなる効果が得られる。管理ユニット自体を有するシステムブロックをオンチップネットワークにより接続すると、面積効率が良くなり、相互接続の拡張が可能になるので、多数の演算処理ユニット及び機能ブロックを使用できるとともに消費電力管理を柔軟に行える。スレッド管理ユニットは機能ブロックと通信して、演算処理ユニット及び資源の割り当て、スレッドのスケジューリング及びオブジェクトの同期化を行う。
【００２４】
本発明の実施態様は、多数の演算処理ユニットが内蔵されたオンチップネットワークアーキテクチャを帯域外で動作する（どのプロセッサユニットからも独立した）専用スレッド管理ユニットを有する一つの集積回路に組み込むことにより、低コストでスレッドレベルの並列性を向上させる。一実施態様によれば、スレッド管理ユニットはハードウェアに完全に実装されており、専用メモリを有し、他の機能ブロックと全域でアクセス可能である。別の実施態様によれば、スレッド管理ユニットはハードウェアに大部分又は一部実装されている。
【００２５】
演算処理ユニットのオンチップネットワーク内で専用スレッド管理ユニットを用いることにより、ソフトウェアによりスレッド管理を行う従来のSMT及びCMPに固有のオーバーヘッドを除去でき、全体の性能が改善される。本発明の実施態様は、特定の演算処理ユニットに対して局所的にスレッド管理を行うのではなく包括的にスレッド管理を行うので、従来のSMTよりも高い並列実行性が得られる。包括的にスレッド管理を行うことにより、資源の割り当てを改善でき、プロセッサ利用率が向上し、かつ包括的に電力管理を行うことができる。
【００２６】
アーキテクチャ
図１に示すように、本発明の典型的な実施態様は少なくとも二つの演算処理ユニット100と、スレッド管理ユニット104と、オンチップネットワークインタコネクト108と、複数の任意ユニットとを有する。任意ユニットには、例えばネットワークインタフェースユニット（図示せず）を有する外部インタフェース等の機能ブロック112及び外部メモリインタフェース116が含まれる。
【００２７】
各演算処理ユニット100は、例えばマイクロプロセッサコア、データ及び命令キャッシュ、及びネットワークインタフェースユニットである。図２に示すように、スレッド管理ユニット104は、具体例にはマイクロプロセッサコア又はステートマシン200、専用メモリ204及びネットワークインタフェースユニット208である。ネットワークインタコネクト108は、例えば少なくとも一つのルータ120及びルータ120を演算処理ユニット100又は機能ブロック112のネットワークインタフェースユニットに接続する信号ラインである。
【００２８】
オンチップネットワーク構造108により、プロセッサ100及び機能ブロック112等のノードは他のノードと通信することができる。このアーキテクチャによれば、多数のノードを１チップ内に構成することができ、図１に示す実施態様では演算処理ユニットが16個配置されている。各演算処理ユニット100はローカルキャッシュメモリを有するマイクロプロセッサコアとネットワークインタフェースユニットとを有する。多数の演算処理ユニットにより高水準の並列演算処理能力が得られる。オンチップネットワークアーキテクチャ108と帯域外で動作する専用スレッド管理ユニット104とを組み合わせることにより、多数の演算処理ユニットを一つの集積回路に実装することができる。
【００２９】
ネットワーク108によるノード間の通信は、コマンド，データ又はその両方を含むメッセージ形式のパケット通信である。
【００３０】
スレッド管理ユニット
動作中にプロセッサを初期化した後、スレッド管理ユニットはメモリからプログラム命令を取り出して実行する演算処理ユニットを割り当てる。例えば図３に示すように、スレッド管理ユニットは少なくとも一つのスケジューリング命令を受け取り（工程300）、少なくとも一つのプログラム命令を受け取り（工程304）、スケジューリング命令に応じて実行するプログラム命令を割り当てる（工程308）。
【００３１】
演算処理ユニットが割り当てられた命令を実行している際に新しいスレッドを作り出すプログラム命令を受けた場合、そのメッセージがネットワークを介してスレッド管理ユニットに送られる。スレッド管理ユニットはメッセージを受信した後（工程300'）、演算処理ユニットがまだあると想定して、新しいスレッドの命令を取り出して実行するために別の演算処理ユニットを割り当てる（工程308'）。この方法では、スレッド管理ユニット又は余分な演算処理ユニットにより割り当てられる係属中のスレッドがなくなるまで、複数のスレッドが複数の演算処理ユニット上で同時に実行される。割り当てるための余分な演算処理ユニットがなくなると、スレッド管理ユニットは追加のスレッドをメモリ内の待ち行列に格納する。
【００３２】
スレッド管理ユニット内のスケジューリングロジックが実行中のスレッドに割り込み、優先度の高いスレッドと置き換えても良い。この場合、割り込まれたスレッドは待ち行列に加えられ、演算処理ユニットが空いたときに再開される。
【００３３】
演算処理ユニットは割り当てられたスレッドに関連する命令を実行し終わると、スレッド管理ユニットに自分がフリーになった旨のメッセージを送り（工程300"）、スレッド管理ユニットから新たなスレッドを割り当てられる（工程308"）。実行されるスレッドがある限りこのプロセスを繰り返す。スレッド管理ユニットは全体の消費電力を減らすためにフリーの演算処理ユニットをアイドル状態にしても良い。電力負荷及び熱浪費を分散させるために、実行中のスレッドを一つの物理的な演算処理ユニットから別のユニットに移しても良い。
【００３４】
スレッド管理ユニットは、演算処理ユニットが他の演算処理ユニット又は機能ブロックが命令を実行するのを待っている停止状態を検出するために、チップ内の演算処理ユニット及び機能ブロックの状態を監視する。スレッド管理ユニットはさらに、実行中，休止中，待機中等の個々のスレッド状態も追跡する。スレッド状態の情報は管理ユニット内にあるローカルメモリに記憶され、管理ユニットが実行するスレッドをスケジューリングする際に用いられる。
【００３５】
既知のスレッド状態と優先度，親和性，公平性等のスケジューリング規則とを用いて、スレッド管理ユニットはメモリ内の指定場所から特定の演算処理ユニットに命令を実行するようメッセージを送る。そのため僅かな待ち時間で演算処理ユニットの動作変更ができる。スケジューリング規則は起動時等に設定できる。
【００３６】
図２に示すように、スレッド管理ユニット104は割り込みコントローラ208及びシステムタイマ／カウンタ212を有しても良い。この実施態様では、スレッド管理ユニット104はまず全ての割り込みを受け取り、割り込みの演算処理を行うのに適当な演算処理ユニット100又は機能ブロック112にメッセージを送る。
【００３７】
スレッドと機能ブロック，外部インタフェース等のシステム資源との間の親和性、及びスレッド間の親和性をスレッド管理ユニットにより設定しても良い。例えばコンパイラ又はエンドユーザにより特定の演算処理ユニット，機能ブロック等のスレッドに関連するスレッドを指定しても良い。スレッド親和性を考慮して演算処理ユニットの割り当てを最適化すると、例えば特定のスレッドを最初に実行する演算処理ユニットとそれと親和性を有する演算処理ユニット又はシステム資源との物理的距離を縮めることができる。
【００３８】
スレッド管理ユニットは特定の演算処理ユニットと関連せずオンチップネットワーク上で独立したノードであるので、帯域外で動作する。この方法はソフトウェアスレッド又は特定の演算処理ユニットに関連するハードウェアにより帯域内でスレッド管理を行う従来のスレッド管理方式より優れている。第一に、帯域外でスレッド管理を行うことにより、どの演算処理ユニットにおいてもオーバーヘッドが生じず、コンピュータ処理を行う演算処理ユニットをフリーの状態にすることができる。第二に、スレッド及びオンチップ資源を局所的に管理するのではなくネットワーク全体で管理するので、資源の割り当て及び利用を効率良く行うことができ、効率及び性能が向上する。第三に、オンチップネットワークと集中型のスケジューリング及び同期機構とを組み合わせることにより、数千の演算処理ユニットを有するマルチコアアーキテクチャが得られる。最後に、消費電力を削減するためにシステム資源をアイドル状態にすることもできる。
【００３９】
図３に示すように、スレッド管理ユニット104はスケジューリング及びスレッド管理を行うための情報を記憶する専用メモリ204を有する。専用メモリ204は実行予定のスレッドの待ち行列、プロセッサユニット及び機能ユニットの状態、実行中のスレッドの状態、ロック，相互排除又は共有するオブジェクトの所有権及びアクセス権、及びセマフォ等を記憶する。専用メモリ204はスレッド管理ユニット104内でマイクロプロセッサ又はステートマシン200と直接結合しているので、スレッド管理ユニット104は共有メモリ又はオンチップメモリにアクセスしなくて済む。この結果、スケジュール及び管理タスクの実行が速くなるとともに、スケジュール又は管理動作に必要なクロック周期数を保証する。
【００４０】
ソフトウェアの開発方法
演算処理ユニットのオンチップネットと専用スレッド管理ユニットとを組み合わせることにより、ソフトウェア開発者の明確な指示が無くてもスレッド管理プロセスを効率的に行うことができる。従って、ソフトウェア開発者は新規又は既存のマルチスレッドソフトウェアプリケーションを、ソースコードを変更・修正することなく、専用のコンパイラ，リンカ又はその両方を用いて実行できる。
【００４１】
図４に示すように、専用のコンパイラ又はリンカにより、コンパイル可能なソースコードステートメントを変換し（工程400）、オンチップネットワーク内のプロセッサユニットによりスレッドとして実行可能な一つ以上の機械可読なオブジェクトコードステートメントにする（工程404）。専用のコンパイラ又はリンカはさらに、新たなスレッドに関連する命令の実行開始を演算処理ユニットに通知する機械可読な特殊オブジェクトコードステートメントを追加する（工程408）。これらの特殊ステートメントは例えばコンパイラ又はリンカにより自動的に特定されたスレッド間の境界に配置されるか、開発者により指定されたスレッド間の境界に配置される。
【００４２】
開発者が並列性をさらに強化できるように、コンパイラ又はプリプロセッサによる静的コード分析を行っても良い。JAVA等の高級言語用ランタイム仮想マシンを実装することにより、並列性の強化が可能になる。
【００４３】
上述したように、専用スレッド管理を用いたマルチコア演算処理において優れた効果が得られる。使用された用語及び表現は説明するためのものであって限定するものではなく、描写及び記述された特徴と同等のもの又はその一部を排除する意図はない。本発明の範囲内において種々の修正が可能である。
【図１】
2009519513.tif 000003
【図２】
2009519513.tif 000004
【図３】
2009519513.tif 000005
【図４】
2009519513.tif 000006
【手続補正書】
【提出日】平成20年8月7日(2008.8.7)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００１５
【補正方法】変更
【補正の内容】
【００１５】
前記スレッド管理ユニットは一つ以上のステートマシン、マイクロプロセッサ及び専用メモリを有しても良い。マイクロプロセッサは一つ以上のスケジューリング、スレッド管理及び資源割り当てを行うためのものでも良い。専用メモリはスレッド及び資源の情報を記憶するためのものでも良い。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００２０
【補正方法】変更
【補正の内容】
【００２０】
【図１】図１はマルチコア環境において専用スレッド管理を有する本発明の一実施態様を示すブロック図である。
【図２】図２はスレッド管理ユニットの一例を示すブロック図である。
【図３】図３は本発明による複数のプロセッサコアを有する機器においてマルチコアを仮想化する方法を示すフローチャートである。
【図４】図４は本発明の実施態様に用いるソフトウェアプログラムのコンパイル方法を示すフローチャートである。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００４２
【補正方法】変更
【補正の内容】
【００４２】
開発者が並列性をさらに強化できるように、コンパイラ又はプリプロセッサによる静的コード分析を行っても良い。JAVA（登録商標）等の高級言語用ランタイム仮想マシンを実装することにより、並列性の強化が可能になる。
【国際調査報告】
2009519513.tif 000007
2009519513.tif 000008
2009519513.tif 000009
2009519513.tif 000010
2009519513.tif 000011