(57)【要約】  本方法は、命令スレッドを実行するための少なくとも１つの計算コア（１１６）を備えるＩＴシステム（１００）を構成するためのものであり、各計算コア（１１６）は、一度に少なくとも２つの命令スレッドを交互に組み合わせた形で実行でき、ＩＴシステム（１００）上で実行中のオペレーティングシステム（１２０）が、各計算コア（１１６）に命令スレッドを提供できる。本方法は、各計算コア（１１６）に、一度に最大１つの命令スレッドを提供するモードで実行中のオペレーティングシステム（１２０）を構成するステップを含む。【選択図】図１
2013522710.tif 000002
【特許請求の範囲】
【請求項１】
命令スレッドを実行するための少なくとも１つの計算コア（１１６）を備えるＩＴシステム（１００）の構成方法であって、各計算コア（１１６）は、一度に少なくとも２つの命令スレッドを交互に組み合わせた形で実行でき、前記ＩＴシステム（１００）上で実行中のオペレーティングシステム（１２０）が、各計算コア（１１６）に命令スレッドを提供できる方法において、前記計算コアが依然として一度に少なくとも２つの命令スレッドを交互に組み合わせた形で実行できる間に、各計算コア（１１６）に、一度に最大１つの命令スレッドを提供するモードで実行中のオペレーティングシステム（１２０）を構成するステップ（２１６）を含むことを特徴とする方法。
【請求項２】
実行中の前記オペレーティングシステム（１２０）が、各計算コア（１１６）に一度に最大１つの命令スレッドを提供する、第１のモードと称するモードで構成される間に、各計算コア（１１６）に一度に２つ以上の命令スレッドを提供できる、前記第１のモードとは異なる第２のモードで実行中の前記オペレーティングシステム（１２０）を構成するステップをさらに含む、請求項１に記載のＩＴシステム（１００）の構成方法。
【請求項３】
各計算コア（１１６）は、実行中の前記オペレーティングシステム（１２０）に、交互に組み合わせた形で一度に実行できる命令スレッドと同数の論理プロセッサを提供するように設計され、実行中の前記オペレーティングシステム（１２０）は、前記命令スレッドのスケジューリングに利用可能な論理プロセッサのリストを備え、該リストには、各計算コア（１１６）のすべての前記論理プロセッサが示される方法であって、各計算コア（１１６）に一度に最大１つの命令スレッドを提供するように実行中の前記オペレーティングシステム（１２０）を構成する（２１６）ために、スケジューリングに利用可能な論理プロセッサの前記リストから、各計算コア（１１６）のうちの１つを除くすべての前記論理プロセッサを削除する命令を、実行中の前記オペレーティングシステム（１２０）に送信するステップをさらに含む、請求項１または２に記載のＩＴシステム（１００）の構成方法。
【請求項４】
各計算コアに一度に２つ以上の命令スレッドを提供するように実行中の前記オペレーティングシステム（１２０）を構成するために、スケジューリングに利用可能な論理プロセッサの前記リストに、該リストから削除されたすべての前記論理プロセッサを追加する命令を、実行中の前記オペレーティングシステム（１２０）に送信するステップをさらに含む、請求項２および３に記載のＩＴシステム（１００）の構成方法。
【請求項５】
前記ＩＴシステムは、一度に少なくとも２つの命令スレッドを交互に組み合わせた形で実行できる１つ以上の計算コア（１１６）のみを計算コアとして備える、請求項１から４のうちいずれか一項に記載のＩＴシステムの構成方法。
【請求項６】
各計算コア（１１６）は、一度に厳密に２つの命令スレッドを交互に組み合わせた形で実行できる、請求項１から５のうちいずれか一項に記載のＩＴシステムの構成方法。
【請求項７】
通信ネットワークからダウンロードでき、かつ／またはコンピュータで再生可能な媒体に記録でき、かつ／またはプロセッサが実行することができるコンピュータプログラムであって、前記プログラムがコンピュータ（１００）上で実行される際に、請求項１から６のうちいずれか一項に記載の構成方法のステップを実行するための命令を含むことを特徴とするコンピュータプログラム（１２２）。
【請求項８】
シェルスクリプトの形態である、請求項７に記載のコンピュータプログラム（１２２）。
【請求項９】
別のプログラムに呼び出されるようになっているＩＴライブラリの少なくとも１つの関数の形態である、請求項７に記載のコンピュータプログラム。
【請求項１０】
ＩＴシステムであって、
−  命令スレッドを実行するための少なくとも１つの計算コアであって、各計算コア（１１６）は、一度に少なくとも２つの命令スレッドを交互に組み合わせた形で実行できる計算コア（１１６）と、
−  オペレーティングシステムが記録されたメモリであって、前記ＩＴシステム（１００）によって実行される際に、命令スレッドを各計算コア（１１６）に提供できるメモリと
を備えるＩＴシステムにおいて、
−  コンピュータプログラム（１２２）が記録されたメモリであって、前記オペレーティングシステム（１２０）が前記ＩＴシステム（１００）によって実行されている間に前記ＩＴシステム（１００）によって実行される際に、前記計算コアが依然として一度に少なくとも２つの命令スレッドを交互に組み合わせた形で実行できる間に、各計算コア（１１６）に一度に最大１つの命令スレッドを提供するモードで実行中の前記オペレーティングシステム（１２０）を構成するための命令を含むメモリ（１１４）
を備えることを特徴とするＩＴシステム（１００）。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＩＴシステムの構成方法、ならびにそのコンピュータプログラムおよびＩＴシステムに関する。
【０００２】
本発明は、さらに詳細には、少なくとも１つのプロセッサを備えるコンピュータシステムに適用され、このプロセッサ自体は、例えばＩｎｔｅｌ社の「ハイパースレッディング」（登録商標）技術など、ＳＭＴ（Ｓｉｍｕｌｔａｎｅｏｕｓ  Ｍｕｌｔｉ−Ｔｈｒｅａｄｉｎｇ、同時マルチスレッディング）技術と呼ばれる複数の命令スレッドを一度に実行するための技術を実装する少なくとも１つの計算コアを備える。
【０００３】
以下の用語は、本明細書においても特許請求の範囲においても使用するものである。
【背景技術】
【０００４】
「ＩＴシステム」とは、コンピュータプログラムの命令を実行するために設計されたシステムであり、この目的ために、ＩＴシステムは、プロセッサまたはＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）とも呼ばれる少なくとも１つの中央処理装置を備える。本発明によるＩＴシステムは、複雑性が増す順に、１つ以上の計算コアを有する１つ以上のマイクロプロセッサを備える単純なマイクロコンピュータ、または複数のマイクロコンピュータがデータ転送ネットワークを介して相互接続されている、より複雑なアセンブリで構成できる。本発明を実装することができるＩＴシステムの複雑性は、主に意図する使用によって異なる。
【０００５】
「マイクロプロセッサ」とは、極めて限定数（一般に１つのみ）の集積回路に実装されたプロセッサである。マイクロプロセッサは非常に広く普及しているため、一般にプロセッサまたはＣＰＵと呼ばれる。
【０００６】
プロセッサは、１つ以上の計算コアを備えることができることに注意されたい。そのため、「シングルコアプロセッサ」とは、１つの計算コアを備えるプロセッサ（マイクロプロセッサ）であり、「マルチコアプロセッサ」とは、特定の素子、一般に例えばいわゆるレベル２（Ｌ２）キャッシュなどのキャッシュメモリを共有する複数の計算コアを備えるプロセッサ（マイクロプロセッサ）である。
【０００７】
計算コアとは、実行された命令に対応する計算を実施するプロセッサ（マイクロプロセッサ）部分である。計算コアは、一般に、１つ以上の制御ユニットならびに１つ以上の整数演算ユニットおよび１つ以上の浮動小数点演算ユニットを備える。
【０００８】
「コンピュータプログラム」、またはより単純に「プログラム」とは、プロセッサが実行するようになっている命令セットである。
【０００９】
「プロセス」とは、実行中のプログラムである。プロセスは、命令スレッドを１つのみ備えるか（この場合のプロセスは、「重量プロセス」と呼ばれることがある）、または共通リソース（一般にメモリ）を共有し、非同期で実行することができる多数の命令スレッド（このスレッドは「軽量プロセス」と呼ばれることがある）を備えることができる。
【００１０】
「命令スレッド」（またはスレッド）とは、計算コアが１つずつ順次実行する一連の命令である。
【００１１】
「ＢＩＯＳ」（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）とは、オペレーティングシステムが起動される前に、ＩＴシステムの開始時に起動されるプログラムである。
【００１２】
「オペレーティングシステム」とは、ＩＴシステム上で実行され、ＩＴシステムとこのＩＴシステム上で実行されるその他のプログラムとの間のインターフェースを生成するプログラムであり、一般に「アプリケーションプログラム」と呼ばれ、すなわち、ユーザが制御するようになっているプログラムであり、一般にこのユーザが起動するようになっているプログラムである。
【００１３】
「デーモン」とは、背後で実行されるようになっているプロセス、すなわちユーザの直接制御下に置かれてはいないプロセスである。デーモンは、オペレーティングシステムによって起動されることが多い。
【００１４】
デーモンとは逆に、「アプリケーションプロセス」とは、実行中のアプリケーションプログラムである。
【００１５】
「シェル」とは、オペレーティングシステムから供給されるサービスにアクセスするために、ユーザにインターフェースを提供するプログラムである。
【００１６】
「スクリプト」とは、解釈されたプログラム、すなわちプロセッサ用の命令に変換する別のブログラムが解釈する命令を含むプログラムである。
【００１７】
したがって、「シェルスクリプト」とは、シェルが解釈するようになっている命令を含むスクリプトである。
【００１８】
「論理プロセッサ」とは、オペレーティングシステムから見たプロセッサである。そのため、物理的に存在するプロセッサは、そのアーキテクチャおよび／またはその構成に応じて、オペレーティングシステムには１つ以上の論理プロセッサの形態に見える。特に、一度に１つの命令スレッドを処理することができるシングルスレッディングモードにおけるシングルコアプロセッサは、１つの論理プロセッサのように見え、各コアが一度に１つの命令スレッドを処理することができるマルチコアプロセッサは、コア数と同数の論理プロセッサの形態に見える。
【００１９】
現在、一度に少なくとも２つの命令スレッドを交互に組み合わせた形で実行することができるように、各計算コアがＳＭＴ技術を実装しているシングルコアまたはマルチコアのプロセッサがある。
【００２０】
例えば、Ｉｎｔｅｌ社は、各計算コアが一度に２つの命令スレッドを交互に組み合わせた形で実行できる「ハイパースレッディング」モード、または各計算コアが一度に１つの命令スレッドのみを実行できる「シングルスレッディング」モードを、選択して演算することができるプロセッサを販売している。
【００２１】
このほか、現代のオペレーティングシステムのほとんどは、複数の論理プロセッサを管理するように設計されているため、物理的に存在する各計算コアに命令スレッドを提供することができる。
【００２２】
このようなオペレーティングシステムが、システムを修正する必要なくハイパースレッディングモードを利用できるようにするため、ハイパースレッディングモードの各コアは、オペレーティングシステムには２つの論理プロセッサの形態に見える。したがって、オペレーティングシステムは、論理プロセッサを管理するための通常の機構を使用して、ハイパースレッディングモードの各計算コアに２つのプロセスを提供できる。
【００２３】
プログラムのなかには、ハイパースレッディングモードを利用するように設計されたものがある。これは特に、計算コアの異なるリソースを使用する２つの命令スレッドを含むマルチプログラムされたプロセスを、実行中に生成するプログラムの場合である。
【００２４】
特定のプログラムは、あるモードでは最大のパフォーマンスを有するが、別のモードではパフォーマンスが劣ることがわかってきた。
【００２５】
そのため、実行されるプログラムの種類に応じて、プロセッサの計算コアの動作モード（シングルスレッディングまたはハイパースレッディングもしくはより一般にはＳＭＴ）を適合させることが望ましい。
【００２６】
しかしながら、現在、あるモードから別のモードへ移行するための唯一の公知手段は、ＢＩＯＳのパラメータを修正することである。これには、ＢＩＯＳにアクセスしてこれを構成するために、ＩＴシステムの１回目の再起動が必要であり、このようにして構成されたＢＩＯＳが実行されるように２回目の再起動が必要である。ＩＴシステムを制御した状態で、ＢＩＯＳのパラメータを修正することができるＩＴツールがある。しかしながら、システムの２回目の再起動は依然として必要である。そのため、これらの解決策は、多大な時間のロスを伴い、実際には重すぎて有用ではない。
【発明の概要】
【発明が解決しようとする課題】
【００２７】
そのため、前述した問題および制約の少なくともいくつかを克服できるＩＴシステムの構成方法を提供することが望まれる。
【課題を解決するための手段】
【００２８】
そのため、本発明は、命令スレッドを実行するための少なくとも１つの計算コアを備えるＩＴシステムの構成方法であって、各計算コアは、一度に少なくとも２つの命令スレッドを交互に組み合わせた形で実行でき、ＩＴシステム上で実行中のオペレーティングシステムが、各計算コアに命令スレッドを提供できる方法において、各計算コアに、一度に最大１つの命令スレッドを提供するモードで実行中のオペレーティングシステムを構成するステップを含むことを特徴とする方法に関する。
【００２９】
本発明により、ハイパースレッディングモードまたはより一般にＳＭＴモードの構成であっても、各計算コアが一度に１つのみの命令スレッドを処理するように動的に要求することが可能である。そのため、オペレーティングシステムを直接制御する状態で、再起動の必要もなく、ＳＭＴモードから各コアが一度に最大１つの命令スレッドを処理するモードに動的に移行することが可能である。そのため、ＩＴシステムは、通常はシングルスレッディングモードの計算コアで実行する際に最適なパフォーマンスを有するプログラムを、ＳＭＴモードの計算コアで高パフォーマンスで実行することができる。本発明は、１つの命令スレッドが実行されている状態で、計算コアがシングルスレッディングモードとＳＭＴモードとで実質的に同じ能力を有すると、特に効果的である。
【００３０】
任意に、本方法はさらに、実行中のオペレーティングシステムが、各計算コアに一度に最大１つの命令スレッドを提供する、第１のモードと称するモードで構成される一方で、各計算コアに一度に２つ以上の命令スレッドを提供できる、第１のモードとは異なる第２のモードで実行中のオペレーティングシステムを構成するステップを含む。
【００３１】
そのため、通常はＳＭＴモードの計算コアで実行される際に最適なパフォーマンスを有するプログラムを効果的に実行することも可能である。
【００３２】
同じく任意に、各計算コアは、実行中のオペレーティングシステムに、交互に組み合わせた形で一度に実行できる命令スレッドと同数の論理プロセッサを提供するように設計され、実行中のオペレーティングシステムは、命令スレッドのスケジューリングに利用可能な論理プロセッサのリストを備え、このリストには、各計算コアのすべての論理プロセッサが示され、本方法はさらに、各計算コアに一度に最大１つの命令スレッドを提供するように実行中のオペレーティングシステムを構成するために、スケジューリングに利用可能な論理プロセッサのリストから、各計算コアのうちの１つを除くすべての論理プロセッサを削除する命令を、実行中のオペレーティングシステムに送信するステップを含む。
【００３３】
そのため、オペレーティングシステムは、最大１つの命令スレッドのみを各計算コアに提供するように、極めて単純に構成される。
【００３４】
同じく任意に、本方法はさらに、各計算コアに一度に２つ以上の命令スレッドを提供するように実行中のオペレーティングシステムを構成するために、削除されたすべての論理プロセッサを、スケジューリングに利用可能な論理プロセッサのリストに追加する命令を、実行中のオペレーティングシステムに送信するステップを含む。
【００３５】
そのため、オペレーティングシステムは、２つ以上の命令スレッドを各計算コアに提供できるように、極めて単純に構成される。
【００３６】
同じく任意に、ＩＴシステムは、一度に少なくとも２つの命令スレッドを交互に組み合わせた形で実行できる１つ以上の計算コアのみを、計算コアとして備える。
【００３７】
同じく任意に、各計算コアは、一度に厳密に２つの命令スレッドを交互に組み合わせた形で実行できる。
【００３８】
そのため、プロセスは、ハイパースレッディングの特定のケースに適している。
【００３９】
本発明はまた、通信ネットワークからダウンロードでき、かつ／またはコンピュータで再生可能な媒体に記録でき、かつ／またはプロセッサが実行することができるコンピュータプログラムであって、前記プログラムがコンピュータ上で実行される際に、本発明による構成方法のステップを実行するための命令を含むことを特徴とするコンピュータプログラムにも係る。
【００４０】
任意に、本コンピュータプログラムは、シェルスクリプトの形態である。
【００４１】
同じく任意に、本コンピュータプログラムは、別のプログラムに呼び出されるようになっているＩＴライブラリの少なくとも１つの関数の形態である。
【００４２】
本発明はまた、ＩＴシステムであって、
−命令スレッドを実行するための少なくとも１つの計算コアであって、各計算コアは、一度に少なくとも２つの命令スレッドを交互に組み合わせた形で実行できる計算コアと、
−オペレーティングシステムが記録されたメモリであって、ＩＴシステムによって実行される際に、命令スレッドを各計算コアに提供できるメモリと
を備えるＩＴシステムにおいて、
−コンピュータプログラムが記録されたメモリであって、オペレーティングシステムがＩＴシステムによって実行されている間にＩＴシステムによって実行される際に、各計算コアに一度に最大１つの命令スレッドを提供するモードで実行中のオペレーティングシステムを構成するための命令を含むメモリ
を備えるＩＴシステムにも係る。
【００４３】
本発明は、例のみを目的として、添付の図面を参照して記載した以下の説明を読めばより理解しやすいであろう。
【図面の簡単な説明】
【００４４】
【図１】本発明の一実施形態によるＩＴシステムを示す図である。
【図２】本発明の一実施形態による、図１のＩＴシステムの構成方法の一連のステップを示すフローチャートである。
【発明を実施するための形態】
【００４５】
図１は、コンピュータ１００の形態をした本発明の一実施形態の一例を示す。
【００４６】
コンピュータ１００は、中央装置１０２、ならびに例えばスクリーン、キーボードおよびマウスなどのマンマシンインターフェース１０４を備える。
【００４７】
中央装置１０２は、マザーボード１０６、このマザーボード１０６に接続された２つのＸｅｏｎ  Ｘ５５７０（登録商標）プロセッサ１０８、ＢＩＯＳメモリ１１０、ＲＡＭ１１２およびハードディスクなどの記憶装置１１４を備える。そのため、プロセッサ１０８は、ＢＩＯＳメモリ１１０およびＲＡＭ１１２に記録された命令を実行することができ、記憶装置１１４に記録されたデータの読み出しまたは書き込みができる。
【００４８】
図１に示した例では、各プロセッサ１０８は、命令スレッドを実行するための４つの計算コア１１６を備える。各プロセッサ１０８は、各計算コア１１６が一度に１つの命令スレッドを実行でき、特にオペレーティングシステムには１つの論理プロセッサの形態に見えるシングルスレッディングモード、または各計算コア１１６が一度に２つの命令スレッドを交互に組み合わせた形で実行でき、特にオペレーティングシステムには２つの論理プロセッサの形態に見えるハイパースレッディングモードを、選択して動作することができる。
【００４９】
ＢＩＯＳメモリ１１０には、ＢＩＯＳ１１８が記録される。ＢＩＯＳ１１８は、シングルスレッディングモードまたはハイパースレッディングモードでプロセッサ１０８を開始するために、所定の構成パラメータを用いて構成することができる。ハイパースレッディングモードの場合、ＢＩＯＳ１１８は、各計算コア１１６に対して２つの論理プロセッサを開始するように構成され、この２つをそれぞれ第１の論理プロセッサおよび第２の論理プロセッサと呼ぶ。シングルスレッディングモードでは、ＢＩＯＳ１１８は、第１の論理プロセッサのみを開始する。
【００５０】
このほか、ＢＩＯＳ１１８は、ＡＣＰＩ（「Ａｄｖａｎｃｅｄ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  ａｎｄ  Ｐｏｗｅｒ  Ｉｎｔｅｒｆａｃｅ」）規格でコンパイルする。この規格は、特に、ＢＩＯＳ１１８の実行により、存在する論理プロセッサ、すなわち開始されたプロセッサのリストが作成されなければならないことを明記している。このリストは、ＭＡＤＴテーブル（「Ｍｕｌｔｉｐｌｅ  ＡＰＩＣ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｔａｂｌｅ」）と呼ばれるテーブルに作成され、このテーブルは、ＲＡＭ１１２に記録され、オペレーティングシステムが実行されている際にこのオペレーティングシステムが読み出すようになっており、これによって存在する論理プロセッサを認識する。ＭＡＤＴテーブルはさらに、各論理プロセッサに対し、論理プロセッサがシングルコアプロセッサのコア、マルチコアプロセッサのコアのうちの１つ、および／またはハイパースレッディングモードの物理的コアの論理コアのうちの１つに対応しているかどうかを表示する。このように、ＭＡＤＴテーブルは、コンピュータ１００のプロセッサの構成を表示する。最近のＩｎｔｅｌ（登録商標）プロセッサでは、この情報は、「ＣＰＵＩＤ」命令によって提供される。
【００５１】
ＡＣＰＩ規格はさらに、すべての計算コア１１６の第２の論理プロセッサは、リスト内で、すべての計算コア１１６の第１の論理プロセッサの後に置かれなければならないことを明記している。そのため、リストは、計算コア１１６の第１の論理プロセッサをまとめた前半部分、および計算コア１１６の第２の論理プロセッサをまとめた後半部分を含む。
【００５２】
記憶装置１１４には、オペレーティングシステム１２０が記録される。オペレーティングシステム１２０は、特に、コンピュータ１００によって実行される際に、命令スレッドを各計算コア１１６に提供するように設計される。記載した例では、オペレーティングシステム１２０は、Ｕｎｉｘ（登録商標）規格でコンパイルする。これは、例えば、Ｌｉｎｕｘ（登録商標）オペレーティングシステムである。
【００５３】
記憶装置１１４には、本明細書の最後にコードを記載したシェルスクリプト１２２も記録される。シェルスクリプト１２２は、ハイパースレッディングモード、またはより一般にはＳＭＴモードから「同時シングルスレッディング」モードへ移行するためのオペレーティングシステム１２０を構成するようになっており、これについては以下に説明する。
【００５４】
次に、図２を参照して、コンピュータ１００の動作を記載する。簡略化のため、実行中の前述のプログラム１１８、１２０および１２２、つまりプロセスには、本来のプログラムの符号を付し、同じように設計する。すなわち、それぞれＢＩＯＳ１１８、オペレーティングシステム１２０およびシェルスクリプト１２２である。
【００５５】
ステップ２００では、コンピュータ１００をオンにする。
【００５６】
ステップ２０２では、ＢＩＯＳ１１８はコンピュータ１００が実行し、ＢＩＯＳ１１８は、各計算コア１１６をハイパースレッディングモードで開始するように構成される。
【００５７】
そのため、ステップ２０４では、ＢＩＯＳ１１８は各計算コア１１６に対して２つの論理プロセッサを開始し、これによってコンピュータ１００は、記載した例では１６個の論理プロセッサを有する。
【００５８】
ステップ２０６では、ＢＩＯＳ１１８は、ＭＡＤＴテーブルに、存在する論理プロセッサ、すなわちこの場合は開始された１６個の論理プロセッサのリストを作成する。
【００５９】
ステップ２０８では、ＢＩＯＳ１１８は、オペレーティングシステム１２０を起動する。
【００６０】
ステップ２１０では、オペレーティングシステム１２０は、ＭＡＤＴテーブルに、存在する論理プロセッサのリストを読み出す。
【００６１】
ステップ２１２では、オペレーティングシステム１２０は、存在する論理プロセッサすべてを、スケジューリングに利用可能、すなわちこのリストのプロセッサ間への命令スレッドの配信に利用可能な論理プロセッサのリストに置く。
【００６２】
「スケジューリングに利用可能な論理プロセッサのリスト」は、ＭＡＤＴのリストにある各論理プロセッサに対し、この論理プロセッサをスケジューリングに使用すべきかどうかを示す任意のデータセットという意味に解釈すべきである。したがって、このデータセットのフォーマットは、必ずしも「リスト」にあるデータ構造のフォーマットではない。
【００６３】
そのため、このステップ２１２の後、コンピュータ１００は、デフォルトとして、オペレーティングシステム１２０がすべての存在する論理プロセッサ間、すなわちプロセッサ１０８のすべての計算コア１１６のすべての論理プロセッサ間で命令スレッドをスケジューリングするハイパースレッディングモードに構成される。
【００６４】
命令スレッドは、例えばオペレーティングシステム１２０が開始するデーモン、またはユーザがマンマシンインターフェース１０４を介して開始するアプリケーションプログラムから来るものである。
【００６５】
コンピュータ１００は、特に、ハイパースレッディングモード用に最適化されたプログラムを最適な形で実行することができる。
【００６６】
ここで、ユーザが、例えば、記憶装置１１４に記録された、ハイパースレッディングモードではなくシングルスレッディングモード用に最適化されたプログラムを起動したいと思うとする。
【００６７】
この場合、ステップ２１４で、ユーザは、マンマシンインターフェース１０４を用いてシェルスクリプト１２２を起動し、いわゆる「同時シングルスレッディング」モードに移行する。例えば、このユーザは、シェルプロンプトに応答して「ｈｔ  ｏｆｆ」とタイプする。
【００６８】
ステップ２１６では、ＢＩＯＳ１１８によるハイパースレッディング構成モードにより、計算コア１１６は一度に２つの命令スレッドを実行できるにもかかわらず、シェルスクリプト１２２は、各計算コア１１６に一度に最大１つの命令スレッドを提供するように、実行中のオペレーティングシステム１２０を構成する。これは、本明細書で「同時シングルスレッディング」と呼ぶものである。
【００６９】
この目的のため、シェルスクリプト１２２は、実行中のオペレーティングシステム１２０に、スケジューリングに利用可能な論理プロセッサのリストから各計算コア１１６のうちの１つを除くすべての論理プロセッサを削除する命令を出す。
【００７０】
この場合、ＡＣＰＩ規格は、各計算コア１１６の第１の論理プロセッサは、存在するプロセッサのリストの最初に現れなければならないと明記しているため、シェルスクリプト１２２は、オペレーティングシステム１２０に、スケジューリングに利用可能な論理プロセッサのリストから、存在する論理プロセッサのリスト内の位置がコンピュータ１００の計算コア１１６の数を上回る論理プロセッサを削除する命令を出すことによって、ステップ２１６を実行する。ハイパースレッディングの場合、これは存在する論理プロセッサリストの後半部分にある論理プロセッサに関わる。
【００７１】
記載した例では、シェルスクリプト１２２は、連続するスケジューリングに利用可能なプロセッサのリストから、存在するプロセッサのリストの後半部分にある各プロセッサを削除する命令を出す。
【００７２】
シェルスクリプト１２２は、これらの計算コア１１６のそれぞれがＢＩＯＳ１１８を基にハイパースレッディングモードで構成されると直ちに、いくつの計算コアに対しても使用できる（記載した例のように８個にかぎらない）ことに注意されたい。
【００７３】
シェルスクリプト１２２は、論理プロセッサを削除する命令を出す。Ｌｉｎｕｘオペレーティングシステムの場合、これは、番号Ｘのプロセッサに特有のファイル：／ｓｙｓ／ｄｅｖｉｃｅｓ／ｓｙｓｔｅｍ／ｃｐｕ／ｃｐｕＸ／ｏｎｌｉｎｅに値０を書き込むことによって実行される。
【００７４】
これに応答して、オペレーティングシステム１２０は、スケジューリングに利用可能な論理プロセッサのリストから削除されるはずの論理プロセッサそれぞれに対し、一連のステップ２１８、２２０および２２２を順次実行する。
【００７５】
ステップ２１８では、オペレーティングシステム１２０は、スケジューリングに利用可能な論理プロセッサのリストから削除されるはずの論理プロセッサが実行する命令およびプロセスを、このリストの他の論理プロセッサに移行させる。
【００７６】
ステップ２２０では、オペレーティングシステム１２０は、削除されるはずの論理プロセッサに特有のデーモンを停止する。
【００７７】
ステップ２２２では、オペレーティングシステム１２０は、この論理プロセッサをスケジューリングに利用可能なプロセッサのリストから削除するため、オペレーティングシステム１２０からこのプロセッサに提供される命令スレッドはなくなる。
【００７８】
ステップ２１８、２２０および２２２が、削除されるはずのすべての論理プロセッサに対して実行されると、コンピュータ１００は同時シングルスレッディングモードで構成され、その結果、オペレーティングシステム１２０はすべての命令スレッドを、存在する論理プロセッサのリストの前半部分にある論理プロセッサで、すなわち各計算コア１１６の第１の論理プロセッサのみでスケジューリングする。そのため、各計算コア１１６は、一度に最大１つの命令スレッドのみを実行する。
【００７９】
そのためユーザは、計算コア１１６がハイパースレッディングモードで構成されていても、ステップ２２６で高パフォーマンスで実行されるシングルスレッディングモード用に最適化されたプログラムをステップ２２４で起動できる。
【００８０】
次に、ユーザが例えば記憶装置１１４に記録されているプログラムを起動したいと思った場合、このプログラムはシングルスレッディングモードではなくハイパースレッディングモード用に最適化されているため、このプログラムはステップ２２８で、「ハイパースレッディング」モードに戻るためにマンマシンインターフェース１０４を介してシェルスクリプト１２２を起動する。例えば、このユーザは、シェルプロンプトで「ｈｔ  ｏｎ」とタイプする。
【００８１】
次に、ステップ２３０で、シェルスクリプト１２２は、各計算コア１１６に一度に２つ以上の命令スレッドを提供できるように、実行中のオペレーティングシステム１２０を構成する。
【００８２】
この目的のため、シェルスクリプト１２２は、実行中のオペレーティングシステム１２０に、ステップ２１６の後に削除されたすべての論理プロセッサを、利用可能な論理プロセッサのリストに追加する命令を出す。
【００８３】
さらに詳細には、記載した例では、シェルスクリプト１２２は、存在する論理プロセッサのリストの後半部分に現れる論理プロセッサをそれぞれ順次追加する命令を出す。
【００８４】
記載した例では、シェルスクリプト１２２は、論理プロセッサを追加する命令を出す。Ｌｉｎｕｘオペレーティングシステムの場合、これは、番号Ｘのプロセッサに特有のファイル：／ｓｙｓ／ｄｅｖｉｃｅｓ／ｓｙｓｔｅｍ／ｃｐｕ／ｃｐｕＸ／ｏｎｌｉｎｅに値１を書き込むことによって行われる。
【００８５】
これに応答して、オペレーティングシステム１２０は、スケジューリング可能なプロセッサのリストに追加されるはずの各論理プロセッサに対し、一連のステップ２３２および２３４を順次実行する。
【００８６】
ステップ２３２では、オペレーティングシステム１２０は、ステップ２１６の後に削除された論理プロセッサを、スケジューリング可能なプロセッサのリストに追加する。
【００８７】
ステップ２３４では、オペレーティングシステム１２０は、前のステップに追加された論理プロセッサに特定のデーモンを開始する。
【００８８】
ステップ２３２および２３４が、追加されるはずのすべての論理プロセッサに対して実行されると、コンピュータ１００は、ハイパースレッディングモードで構成され、その結果、オペレーティングシステム１２０は、プロセッサ１０８のすべての計算コア１１６のすべての論理プロセッサ間で新たな命令スレッドをスケジューリングする。
【００８９】
そのため、ユーザは、ステップ２３６で、ハイパースレッディングモード用に最適化されたプログラムを起動することができ、このプログラムはステップ２３８で高パフォーマンスで実行される。
【００９０】
利用可能な論理プロセッサの数を動的に計算に入れるアプリケーションおよびサービスは、自動的に新たな状況に適合される。その他のものは、ユーザによって手動で再起動されるか、再起動するためのシェルスクリプト１２２に命令を出すことによって再起動されるかのいずれかである。
【００９１】
より一般的に、図２に示した実施形態では、コンピュータ１００がハイパースレッディングモードで構成された場合、同時シングルスレッディングモードで構成するためにステップ２１４から２２２が実行されなければならず、コンピュータ１００が同時シングルスレッディングモードで構成された場合、ハイパースレッディングモードで構成するためにステップ２２８から２３４が実行されなければならない。
【００９２】
本発明は、異なるモードに対して最適化された２つのプログラムを、コンピュータ１００を再起動する必要なしに順次効果的に実行することができるという利点があることが明らかになる。
【００９３】
本発明は、上記に記載した実施形態に限定されるものではないことに注意されたい。実際、上に開示した教示に照らし合わせて、上に記載した実施形態にさまざまな修正を加えてもよいことは当業者には明らかであろう。
【００９４】
特に、オペレーティングシステムは、デフォルトで同時シングルスレッディングモードで開始するように設計してもよい。
【００９５】
このようにするための第１の方法は、ステップ２１２で、オペレーティングシステムが存在するすべての論理プロセッサを追加せずに、１つのみを各計算コア１１６に追加し、例えば、存在するプロセッサのリストの前半部分にある論理プロセッサのみを追加することによって、オペレーティングシステムを修正することであろう。
【００９６】
このようにするための第２の方法は、例えばユーザが制御する前、すなわちユーザがプログラムを起動できる前、またはオペレーティングシステムの関数を使用できる前に、シェルスクリプト１２２が自動的にオペレーティングシステム１２０によって実行されるようにすることであろう。
【００９７】
最後に、選択したモードをオンにする機能を持つ新たなシステムサービスを実装することを検討することができる。これは、システムのランレベルが変化するたびに、手動または自動のいずれかで開始または停止される。
【００９８】
このほか、本発明により、シェルスクリプト以外のプログラムタイプがステップ２１６から２２２および／または２３０から２３４を実装できる。特に、これらのステップは、実行可能な２進プログラムを実行することで実装してもよい。そのため、このプログラムは、ユーザに前のステップの実装を可能にするコマンドを構成する。このほか、前のステップは、例えばいわゆるＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ、アプリケーションプログラミングインタフェース）を介するアプリケーションプログラムなど、プログラムが呼び出すライブラリの関数によって実装されることができる。そのため、２つのモードのうちの１つで最適化されたプログラムを設計することができ、このモードは、起動されると直ちにこの関数を呼び出し、その実行を促進するモードでコンピュータ１００を構成する。
【００９９】
このほか、ステップ２１６では、シェルスクリプト１２２は、スケジューリング可能なプロセッサのリストから、存在するプロセッサのリストの前半部分にあるプロセッサを削除する命令を出することもできる。しかしながら、第１の論理プロセッサが依然として利用可能であると考える特定のプログラムは、動作しなくなるおそれがある。
【０１００】
このほか、ステップ２１６から２２２および／または２３０から２４３を実装しているプログラムは、論理プロセッサの番号付けを使用する代わりに、マルチスレッディングモードでのコアの第２の論理プロセッサにどれが相当するかを検出し、それをオンにする、またはオフにしてもよい。この検出は、例えば、ＭＡＤＴテーブルの表示を使用して実施できる。この動作方法は、例えばＭＡＤＴテーブル内の論理プロセッサの番号付けがＡＰＩＣ規格に従っていない場合、またはオペレーティングシステムがそれを計算に入れていない場合に有利である。
【０１０１】
以下の特許請求の範囲では、使用した用語が請求項を本明細書で明らかにした実施形態に限定するものと解釈してはならず、本文の記載およびそこから予見される内容は、ここに開示した教示の実装に一般知識を応用することによって当業者が到達しうる範囲内であることから、請求項が範囲に含めると想定するあらゆる均等物も含まれると解釈すべきである。
【０１０２】
付録: シェルスクリプトコード122
#ht: ハイパースレッディングモードから同時シングルスレッディングモード
# およびこの逆に移行するためのスクリプト 
usage() {
echo "Usage: ht [on | off]"
echo "ht on     # ハイパースレッディングモードをオンにする"
echo "ht off    # ハイパースレッディングモードをオフにする"
}
set_ht() {
# 存在するプロセッサの数を
# NBに記録する
cd /sys/devices/system/cpu
NB=‘ls -d cpu* | wc -w’
# 存在するプロセッサの前半部分の
# 最後のプロセッサの番号を
# NCORESに記録する
NCORES=‘expr $NB / 2’
# 存在するプロセッサを走査する 
ls -d cpu* | while read i
do
# 存在する実行中のプロセッサの番号を
# Nに記録する
N=‘echo $i | sed s/cpu//’
# 存在する実行中のプロセッサが 
# 存在するプロセッサのリストの 
# 前半部分にあれば、
# 存在する次のプロセッサに移行する 
if [ "$N" -lt "$NCORES" ]
then
continue
# ない場合、"ht on"が起動されれば
# 存在する実行中のプロセッサに特有のファイルに
# 値１を記録し、
# "ht off"が起動されれば値０を記録する
fi
echo $1 > $i/online
done
}
if [ "$1" = "on" ]
then
set_ht 1
else
if [  "$1" = "off" ]
then
set_ht 0
else
usage
exit 2
fi
fi
【図１】
2013522710.tif 000003
【図２】
2013522710.tif 000004
【国際調査報告】
2013522710.tif 000005
2013522710.tif 000006
2013522710.tif 000007
2013522710.tif 000008
2013522710.tif 000009
2013522710.tif 000010