(57)【要約】【課題】  スレッドバイナリコンパイラによってプログラムで幾つかのスレッドをダイナミックに抽出するコンピュータシステム、及びその同時多重スレッディング方法を提供する。【解決手段】  本発明によるコンピュータシステムは、キャッシュに所定のＴＢＣ（Thread Binary Compiler）をローディング、メインメモリにローディングされたプログラムをキャッシュにローディングする度に、所定のＴＢＣによるプログラムのリコンパイリングを通じてプログラムが多数のスレッドに分散されるリコンパイルドプログラムにローディングされるようにダイナミックに制御する。したがって、ユーザが直接容易で自由にバイナリをリコンパイリングすることによって、コンピュータシステムの性能を向上させうる。【選択図】    図１
2004240953.tif 000002
【特許請求の範囲】
【請求項１】
メインメモリと、
キャッシュと、
前記メインメモリにローディングされたプログラムを前記キャッシュにローディングする度に、所定スレッドバイナリコンパイラによる前記プログラムのリコンパイリングを通じて前記プログラムが多数のスレッドに分散されるリコンパイルドプログラムにローディングされるようにダイナミックに制御するキャッシュコントローラと、
前記スレッド各々の命令語が水平／垂直ウェーストが最小化して同時に実行されるように処理する同時多重スレッディングプロセッサと、を備えることを特徴とするコンピュータシステム。
【請求項２】
前記キャッシュは、多数のプログラムからリコンパイリングされた多数のリコンパイルドプログラムを保存することを特徴とする請求項１に記載のコンピュータシステム。
【請求項３】
前記リコンパイルドプログラムは、前記メインメモリにローディングされたプログラムと異なる構造の命令語セットアーキテクチャであることを特徴とする請求項１に記載のコンピュータシステム。
【請求項４】
前記リコンパイルドプログラムは、命令語レベルまでリコンパイリングされたことを特徴とする請求項１に記載のコンピュータシステム。
【請求項５】
前記所定スレッドバイナリコンパイラは、前記メインメモリにローディングされて常駐するソフトウェアであることを特徴とする請求項１に記載のコンピュータシステム。
【請求項６】
前記所定スレッドバイナリコンパイラは、スレッドバイナリリコンパイリング動作が発生する度に前記キャッシュにローディングされて運営されることを特徴とする請求項１に記載のコンピュータシステム。
【請求項７】
前記実行が終了した前記リコンパイルドプログラムは、削除されることを特徴とする請求項１に記載のコンピュータシステム。
【請求項８】
前記実行が終了した前記リコンパイルドプログラムは、前記メインメモリに保存されることを特徴とする請求項１に記載のコンピュータシステム。
【請求項９】
前記メインメモリに保存された前記リコンパイルドプログラムは、前記メインメモリの容量超過時に削除されることを特徴とする請求項８に記載のコンピュータシステム。
【請求項１０】
前記メインメモリに保存された前記リコンパイルドプログラムは、前記メインメモリの容量超過時にハードディスク／フラッシュメモリに保存されることを特徴とする請求項８に記載のコンピュータシステム。
【請求項１１】
メインメモリ、キャッシュ、キャッシュコントローラ、及び同時多重スレッディングプロセッサを備えるコンピュータシステムの同時多重スレッディング方法において、
前記コンピュータシステムによって、前記メインメモリにプログラムをローディングする段階と、
前記キャッシュコントローラによって、前記キャッシュに所定スレッドバイナリコンパイラをローディングする段階と、
前記キャッシュコントローラによって、前記メインメモリにローディングされたプログラムを前記キャッシュにローディングする度に、前記所定スレッドバイナリコンパイラによる前記プログラムのリコンパイリングを通じて前記プログラムが多数のスレッドに分散されるリコンパイルドプログラムにローディングされるようにダイナミックに制御する段階と、
前記同時多重スレッディングプロセッサによって、前記スレッド各々の命令語が水平／垂直ウェーストが最小化して同時に実行されるように処理する段階と、を備えることを特徴とするコンピュータシステムの同時多重スレッディング方法。
【請求項１２】
前記キャッシュは、多数のプログラムからリコンパイリングされた多数のリコンパイルドプログラムを保存することを特徴とする請求項１１に記載のコンピュータシステムの同時多重スレッディング方法。
【請求項１３】
前記リコンパイルドプログラムは、前記メインメモリにローディングされたプログラムと異なる構造の命令語アーキテクチャであることを特徴とする請求項１１に記載のコンピュータシステムの同時多重スレッディング方法。
【請求項１４】
前記リコンパイルドプログラムは、命令語レベルまでリコンパイリングされたことを特徴とする請求項１１に記載のコンピュータシステムの同時多重スレッディング方法。
【請求項１５】
前記所定スレッドバイナリコンパイラは、前記メインメモリにローディングされて常駐するソフトウェアであることを特徴とする請求項１１に記載のコンピュータシステムの同時多重スレッディング方法。
【請求項１６】
前記所定スレッドバイナリコンパイラは、スレッドバイナリリコンパイリング動作が発生する度に前記キャッシュにローディングされて運営されることを特徴とする請求項１１に記載のコンピュータシステムの同時多重スレッディング方法。
【請求項１７】
前記実行が終了した前記リコンパイルドプログラムは、削除されることを特徴とする請求項１１に記載のコンピュータシステムの同時多重スレッディング方法。
【請求項１８】
前記実行が終了した前記リコンパイルドプログラムは、前記メインメモリに保存されることを特徴とする請求項１１に記載のコンピュータシステムの同時多重スレッディング方法。
【請求項１９】
前記メインメモリに保存された前記リコンパイルドプログラムは、前記メインメモリの容量超過時に削除されることを特徴とする請求項１８に記載のコンピュータシステムの同時多重スレッディング方法。
【請求項２０】
前記メインメモリに保存された前記リコンパイルドプログラムは、前記メインメモリの容量超過時にハードディスク／フラッシュメモリに保存されることを特徴とする請求項１８に記載のコンピュータシステムの同時多重スレッディング方法。
【請求項２１】
メインメモリと、
キャッシュと、
前記メインメモリにローディングされたプログラムを前記キャッシュにローディングする度に、所定スレッドバイナリコンパイラによる前記プログラムのリコンパイリングを通じて前記プログラムが多数のスレッドに分散されるリコンパイルドプログラムにローディングされるようにダイナミックに制御するキャッシュコントローラ手段と、
前記スレッド各々の命令語が水平／垂直ウェーストが最小化して同時に実行されるように処理する同時多重スレッディングプロセッサと、を備えることを特徴とするコンピュータシステム。
【請求項２２】
メインメモリと、
キャッシュと、
前記メインメモリにローディングされたプログラムを前記キャッシュにローディングする度に、所定スレッドバイナリコンパイラによる前記プログラムのリコンパイリングを通じて前記プログラムが多数のスレッドに分散されるリコンパイルドプログラムにローディングされるようにダイナミックに制御し、同時多重スレッディングプロセッサで前記スレッドを伝送するキャッシュコントローラと、を備えることを特徴とするキャッシュコントローラシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムのＣＰＵ（中央演算処理処置）に係り、特にコンピュータシステムの同時多重スレッディング（ＳＴＭ：Ｓｉｍｕｌｔａｎｅｏｕｓ Ｍｕｌｔｉｔｈｒｅａｄｉｎｇ）に関する。
【背景技術】
【０００２】
ＣＰＵでのスーパースカラーパイプライン構造は、一クロックサイクル間に同時に幾つかの命令語を実行することによってＣＰＵの性能を高める方法である。しかし、スーパースカラーパイプライン構造では一クロックサイクル間に同時に幾つかの命令語を実行できるにもかかわらず、データ／リソース／コントロール  ディペンデンシ、キャッシュミスのような問題によって、命令語の実行が不能な区間、すなわち垂直ウェーストと水平ウェーストとが発生する。
【０００３】
一方、ＳＭＴ方法は、一クロックサイクル間に同時に色々なスレッドを同時に存在させ、スレッド各々に存在する命令語を同時に実行させ、特に前記のような垂直または水平ウェースト区間でも実行させ、ウェースト区間を最小化することによってＣＰＵの性能を向上させる方法である。スレッドは、一プロセス内の相異なるコントロールポイントや相異なる実行経路と定義され、または相異なるプログラムとも定義されうる。したがって、ＳＭＴは、色々なスレッド各々の命令語を同時に行って、命令語実行のスループットを高める方法である。ＳＭＴ方法に関する幾つのアルゴリズムについて、特許文献１によく開示されている。
【０００４】
したがって、スレッドをどのように発生させ、ＳＭＴプロセッサでスレッドをどのように処理するかは、コンピュータシステムの性能に重要な要素である。スレッドを発生させる方法は、入力されるプログラムを幾つのスレッドに分散させて供給するかの問題であって、ハードウェアまたはソフトウェア的に具現されうる。
【０００５】
ハードウェア的にスレッドを分散させる方法は、ハードウェアでプログラムシーケンスを検出して入力されるプログラムを、幾つかのスレッドにダイナミックに分散させる方法であって、ＤＭＴ（Ｄｙｎａｍｉｃ  Ｍｕｌｔｉ  Ｔｈｒｅａｄｉｎｇ）方法という。しかし、このように、ハードウェア的にスレッドを分散させる方法は非常に多く、必要なハードウェア装置によっては、回路及びロジックの複雑度が高まって、実際の具現が非常に難しいという問題点がある。
【０００６】
ソフトウェア的にスレッドを分散させる方法は、コンパイラで入力されるプログラムを幾つかのスレッドにスタティックに分散させる方法である。このような方法は、ユーザが所定の応用プログラムによってソースコードをコンパイルリングするか、または既存のバイナリを直接リコンパイリングする方法で可能である。しかし、このようにスタティックにソフトウェア的にスレッドを分散させる方法では、ユーザがバイナリを自由に使用するのに限界があり、またユーザがバイナリを分析して直接リコンパイリングするには不適であるという問題点がある。
【特許文献１】米国特許ＵＳ６４７０４４３Ｂ１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明が解決しようとする技術的課題は、スレッドバイナリコンパイラ（Ｔｈｒｅａｄ  Ｂｉｎａｒｙ  Ｃｏｍｐｉｌｅｒ、以下“ＴＢＣ”と略称）によって、プログラム、すなわちターゲットバイナリで幾つかのスレッドをダイナミックに抽出して、ネイティブバイナリを自動に作れるコンピュータシステムを提供することである。
本発明が解決しようとする他の技術的課題は、ＴＢＣによってプログラム、すなわちターゲットバイナリで幾つかのスレッドをダイナミックに抽出して、ネイティブバイナリを自動に作れるコンピュータシステムのＳＭＴ方法を提供することである。
【課題を解決するための手段】
【０００８】
前記技術的課題を達成するための本発明によるコンピュータシステムは、メインメモリ、キャッシュ、キャッシュコントローラ、及びＳＭＴプロセッサを備える。
前記キャッシュコントローラは、前記メインメモリにローディングされたプログラムを前記キャッシュにローディングする度に、所定ＴＢＣによる前記プログラムのリコンパイリングを通じて前記プログラムが多数のスレッドに分散されるリコンパイルドプログラムにローディングされるようにダイナミックに制御する。
【０００９】
前記ＳＭＴプロセッサは、前記スレッド各々の命令語が水平／垂直ウェーストが最小化して同時に実行されるように処理する。
前記キャッシュは、多数のプログラムからリコンパイリングされた多数のリコンパイルドプログラムを保存することを特徴とする。
前記リコンパイルドプログラムは、前記メインメモリにローディングされたプログラムと異なる構造の命令語アーキテクチャ（以下、“ＩＳＡ”と略称）であり、命令語レベルまでリコンパイリングされたことを特徴とする。
【００１０】
前記所定ＴＢＣは、前記メインメモリにローディングされて常駐するか、またはスレッドバイナリリコンパイリング動作が起る度に前記キャッシュにローディングされて運営されることを特徴とする。
前記実行が終了された前記リコンパイルドプログラムは、削除されるか、または前記メインメモリに保存されることを特徴とする。
前記メインメモリに保存された前記リコンパイルドプログラムは、前記メインメモリの容量超過時に削除されるか、またはリコンパイリングの必要なく再使用できるようにハードディスク／フラッシュメモリに保存されることを特徴とする。
【００１１】
前記他の技術的課題を達成するための本発明によるコンピュータシステムのＳＭＴ方法は、メインメモリ、キャッシュ、キャッシュコントローラ及びＳＭＴプロセッサを備えるコンピュータシステムのＳＭＴ方法において、次のような段階を備える。
【００１２】
すなわち、本発明によるコンピュータシステムのＳＭＴ方法では、まず、前記コンピュータシステムが前記メインメモリにプログラムをローディングする。前記キャッシュコントローラは、前記キャッシュに所定のＴＢＣをローディングし、前記メインメモリにローディングされたプログラムを前記キャッシュにローディングする度に、前記所定のＴＢＣによる前記プログラムのリコンパイリングを通じて前記プログラムが多数のスレッドに分散されるリコンパイルドプログラムにローディングされるようにダイナミックに制御する。これにより、前記ＳＭＴプロセッサは、前記スレッド各々の命令語が水平／垂直ウェーストが最小化して、同時に実行されるように処理する。
【発明の効果】
【００１３】
本発明によるコンピュータシステムでは、ＴＢＣによってランタイム間にプログラムから幾つかのスレッドをダイナミックに抽出し、ＳＭＴプロセッサに印加する。したがって、ユーザは直接認知できないが、容易で自由に既存のバイナリをリコンパイリングすることによって、コンピュータシステムの性能を向上させうる。
【発明を実施するための最良の形態】
【００１４】
本発明と本発明の動作上の利点及び本発明の実施によって達成される目的を十分に理解するためには、本発明の望ましい実施例を例示する添付図面及び添付図面に記載された内容を参照しなければならない。
以下、添付した図面を参照して本発明の望ましい実施例を説明することによって、本発明を詳細に説明する。各図面に示された同じ参照符号は同じ部材を示す。
【００１５】
図１は、本発明の一実施例によるコンピュータシステムのブロック図である。
図１を参照すれば、本発明の一実施例によるコンピュータシステムは、ハードディスク／フラッシュメモリ１１０、メインメモリ１２０、キャッシュ１３０、キャッシュコントローラ１４０及びＳＭＴプロセッサ１５０を備える。ＳＭＴプロセッサ１５０は、一般的なＣＰＵに当たる。
【００１６】
前記ハードディスク／フラッシュメモリ１１０は、一般的なコンピュータ上の大容量メモリであって、リコンパイルドプログラムを保存するリコンパイルドプログラムＤＢ１１３と基本プログラムや応用プログラムを保存するプログラムＤＢ１１５とで構成されうる。
前記メインメモリ１２０は、前記ＳＭＴプロセッサ１５０と前記ハードディスク／フラッシュメモリ１１０間に搭載される保存装置であって、前記ＳＭＴプロセッサ１５０が前記ハードディスク／フラッシュメモリ１１０からデータの読出しまたは書込み時間を短縮して、コンピュータの動作スピードを上げる。
【００１７】
前記キャッシュ１３０は、一般的に前記ＳＭＴプロセッサ１５０と前記メインメモリ１２０間に搭載される臨時保存装置であって、前記ＳＭＴプロセッサ１５０が前記メインメモリ１２０に接近してデータを読出しまたは書込みする時、その内容の写本を前記メインメモリ１２０の住所と共に保存させ、前記ＳＭＴプロセッサ１５０が前記メインメモリ１２０からデータの読出しまたは書込み時間を短縮してコンピュータの動作スピードを上げる。
【００１８】
前記キャッシュコントローラ１４０は、前記ハードディスク／フラッシュメモリ１１０から前記メインメモリ１２０にローディングされたプログラムを前記キャッシュ１３０にローディングする度に、所定ＴＢＣによる前記プログラムのリコンパイリングを通じて前記プログラムが多数のスレッドに分散されるリコンパイルドプログラムにローディングされるようにダイナミックに制御する。
【００１９】
前記ＳＭＴプロセッサ１５０は、前記スレッド各々の命令語が水平／垂直ウェーストが最小化して同時に実行されるように処理する。
前記キャッシュ１３０は、多数のプログラムからリコンパイリングされた多数のリコンパイルドプログラムを保存することを特徴とする。
前記リコンパイルドプログラムは、前記メインメモリ１２０にローディングされたプログラムと異なる構造のＩＳＡであり、命令語レベルまでリコンパイリングされたことを特徴とする。
【００２０】
前記所定ＴＢＣは、前記メインメモリ１２０にローディングされて常駐するソフトウェアであり、スレッドバイナリリコンパイリング動作が起る度に、前記キャッシュ１３０にローディングされて運営されることを特徴とする。
前記実行が終了された前記リコンパイルドプログラムは、削除されるか、または前記メインメモリ１２０に保存されることを特徴とする。
【００２１】
前記メインメモリ１２０に保存された前記リコンパイルドプログラムは、前記メインメモリ１２０の容量超過時、削除されるか、またはリコンパイリング必要なく再使用できるように、前記ハードディスク／フラッシュメモリ１１０に保存されることを特徴とする。
前記のような本発明の一実施例によるコンピュータシステムの動作を、さらに詳細に説明する。
【００２２】
図２は、図１のコンピュータシステムの動作説明のためのフローチャートである。
図２を参照すれば、ハードディスク／フラッシュメモリ１１０、メインメモリ１２０、キャッシュ１３０、キャッシュコントローラ１４０及びＳＭＴプロセッサ１５０を備える図１のコンピュータシステムのＳＭＴ動作は、次の通りである。
【００２３】
まず、前記コンピュータシステムは、前記ハードディスク／フラッシュメモリ１１０から前記メインメモリ１２０に、プログラムをローディングする（Ｓ２１０）。このようなプログラムのローディング動作は、ユーザがコンピュータをブーティングするか、またはランタイム間に実行命令をする時、前記ハードディスク／フラッシュメモリ１１０に保存される基本プログラムや応用プログラムが、前記メインメモリ１２０に移動して保存されることである。前記ハードディスク／フラッシュメモリ１１０に保存される基本プログラムや応用プログラムのソースコードは、様々なＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）で動作される相異なるＩＳＡ構造を有しうる。
【００２４】
一方、前記キャッシュコントローラ１４０は、前記キャッシュ１３０に所定のＴＢＣをローディングする（Ｓ２２０）。これにより、前記キャッシュコントローラ１４０は、前記メインメモリ１２０にローディングされたプログラムを前記キャッシュ１３０にローディングする度に、前記所定ＴＢＣによる前記プログラムのリコンパイリングを通じて、前記プログラムが多数のスレッドに分散されるリコンパイルドプログラムにローディングされるようにダイナミックに制御する（Ｓ２３０）。
【００２５】
この時、前記所定のＴＢＣは、前記メインメモリ１２０にローディングされて常駐するか、またはスレッドバイナリリコンパイリング動作が起る度に前記キャッシュ１３０にローディングされて運営される。
次いで、前記ＳＭＴプロセッサ１５０は、前記スレッド各々の命令語が水平／垂直ウェーストが最小化して同時に実行されるように処理する（Ｓ２４０）。
【００２６】
図３は、ＳＭＴプロセッサ１５０の機能説明のための図面である。
図３を参照すれば、ＳＭＴプロセッサ１５０は、最適化した前記スレッドを前記キャッシュ１３０で受けて、前記スレッド各々の命令語が水平／垂直ウェーストが最小化して同時に実行させるために、まず、前記スレッド各々に属するプログラムカウンタでアドレスをフェッチする。フェッチされたアドレスに対応する命令語は、所定の命令語キャッシュ１３０でリードされ、デコーディング、レジスタ再命令、命令語キュー段階を経て実行される。ＳＭＴプロセッサ１５０の一般的な動作については、米国特許“ＵＳ６４７０４４３Ｂ１”によく開示されている。
【００２７】
図４は、ＴＢＣのＩＳＡコンバージョン機能を説明するための図面である。
図４を参照すれば、前記ハードディスク／フラッシュメモリ１１０から前記メインメモリ１２０にローディングされた基本プログラムや応用プログラム、すなわちターゲットバイナリ（ソースコードが一般的なコンパイラによって翻訳されたマシンコード）は、様々なＯＳで動作される相異なるＩＳＡ１構造を有しうる。これにより、ターゲットバイナリは、前記キャッシュコントローラ１４０によって、本発明のＴＢＣを搭載したコンピュータのＩＳＡ２構造にリコンパイリングされ、コンバージョンされたリコンパイルドプログラムすなわちネイティブバイナリは、前記キャッシュ１３０にローディングされる（Ｓ２３０）。
【００２８】
図５は、ＴＢＣのプログラム処理機能を説明するための図面であり、図６は、ＴＢＣの多数プログラム処理機能を説明するための図面である。
図５及び図６を参照すれば、前記キャッシュコントローラ１４０は、ＴＢＣを通じて、前記メインメモリ１２０にローディングされた一つのプロセス（プログラム）や一連のプログラムをリコンパイリングして、前記キャッシュ１３０に一つのリコンパイルドプログラムや多数のリコンパイルドプログラムをローディングさせる（Ｓ２３０）。一つのリコンパイルドプログラムは多数のスレッドで構成され、一つのスレッドは多数の命令語で構成される。
【００２９】
ここで、前記ＴＢＣによるリコンパイリング作業は、前記メインメモリ１２０から入力されるプログラムのシーケンスを自体検出し、プログラムを幾つかのスレッドにダイナミックに分散させるものであって、これによって最適化した動作スピードを実現させるために、前記メインメモリ１２０から入力されるプログラムが命令語レベルまで考慮されて、リコンパイルドプログラムにコンバージョンされる（Ｓ２３０）。
【００３０】
一方、前記実行が終了された前記リコンパイルドプログラムは、削除されるか、または前記メインメモリ１２０に保存される（Ｓ２５０）。前記メインメモリ１２０に保存された前記リコンパイルドプログラムは、前記メインメモリ１２０の容量超過時、削除されるか、またはリコンパイリング必要なく再使用できるように、前記ハードディスク／フラッシュメモリ１１０のリコンパイルドＤＢ １１３に保存される（Ｓ２６０）。
【００３１】
前述したように、本発明の一実施例によるコンピュータシステムは、まず、前記ハードディスク／フラッシュメモリ１１０から前記メインメモリ１２０にプログラムをローディングする（Ｓ２１０）。これにより、前記キャッシュコントローラ１４０は、前記キャッシュ１３０に所定ＴＢＣをローディングし（Ｓ２２０）、前記メインメモリ１２０にローディングされたプログラムを前記キャッシュ１３０にローディングする度に、前記所定のＴＢＣによる前記プログラムのリコンパイリングを通じて前記プログラムが多数のスレッドに分散されるリコンパイルドプログラムにローディングされるようにダイナミックに制御する（Ｓ２３０）。前記ＳＭＴプロセッサ１５０は、同時に存在する前記スレッド各々の命令語が水平／垂直ウェーストが最小化して同時に実行されるように処理する（Ｓ２４０）。
【００３２】
以上のように図面及び明細書において最適の実施例が開示された。ここで、特定用語が使われたが、これは単に本発明を説明するための目的で使われたものであり、意味限定や特許請求の範囲に記載された本発明の範囲を制限するために使われたものではない。したがって、当業者ならば、これから多様な変形及び均等な他の実施例が可能であることが分かる。したがって、本発明の真の技術的保護範囲は、特許請求の範囲の技術的思想によって決まらなければならない。
【産業上の利用可能性】
【００３３】
本発明によってＴＢＣを利用するコンピュータシステムは、コンピュータシステム性能向上に利用できる。
【図面の簡単な説明】
【００３４】
【図１】本発明の一実施例によるコンピュータシステムのブロック図である。
【図２】図１のコンピュータシステムの動作説明のためのフローチャートである。
【図３】ＳＭＴプロセッサの機能説明のための図面である。
【図４】ＴＢＣのＩＳＡコンバージョン機能を説明するための図面である。
【図５】ＴＢＣのプログラム処理機能を説明するための図面である。
【図６】ＴＢＣの多数プログラム処理機能を説明するための図面である。
【符号の説明】
【００３５】
１１０    フラッシュメモリ
１１３    リコンパイルドプログラムＤＢ
１１５    プログラムＤＢ
１２０    メインメモリ
１３０    キャッシュ
１４０    キャッシュコントローラ
１５０    ＳＭＴプロセッサ
【図１】
2004240953.tif 000003
【図２】
2004240953.tif 000004
【図３】
2004240953.tif 000005
【図４】
2004240953.tif 000006
【図５】
2004240953.tif 000007
【図６】
2004240953.tif 000008