JP2013522710A - Itシステムの構成方法、そのコンピュータプログラムおよびitシステム - Google Patents

Itシステムの構成方法、そのコンピュータプログラムおよびitシステム Download PDF

Info

Publication number
JP2013522710A
JP2013522710A JP2012556570A JP2012556570A JP2013522710A JP 2013522710 A JP2013522710 A JP 2013522710A JP 2012556570 A JP2012556570 A JP 2012556570A JP 2012556570 A JP2012556570 A JP 2012556570A JP 2013522710 A JP2013522710 A JP 2013522710A
Authority
JP
Japan
Prior art keywords
operating system
instruction
computing core
time
mode
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2012556570A
Other languages
English (en)
Other versions
JP5678347B2 (ja
Inventor
ブル,シャビエル
ガッリーグス,フィリッペ
ウェルターレン,ベノイット
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Bull SA
Original Assignee
Bull SA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Bull SA filed Critical Bull SA
Publication of JP2013522710A publication Critical patent/JP2013522710A/ja
Application granted granted Critical
Publication of JP5678347B2 publication Critical patent/JP5678347B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44568Immediately runnable code

Abstract

本方法は、命令スレッドを実行するための少なくとも1つの計算コア(116)を備えるITシステム(100)を構成するためのものであり、各計算コア(116)は、一度に少なくとも2つの命令スレッドを交互に組み合わせた形で実行でき、ITシステム(100)上で実行中のオペレーティングシステム(120)が、各計算コア(116)に命令スレッドを提供できる。本方法は、各計算コア(116)に、一度に最大1つの命令スレッドを提供するモードで実行中のオペレーティングシステム(120)を構成するステップを含む。
【選択図】図1

Description

本発明は、ITシステムの構成方法、ならびにそのコンピュータプログラムおよびITシステムに関する。
本発明は、さらに詳細には、少なくとも1つのプロセッサを備えるコンピュータシステムに適用され、このプロセッサ自体は、例えばIntel社の「ハイパースレッディング」(登録商標)技術など、SMT(Simultaneous Multi−Threading、同時マルチスレッディング)技術と呼ばれる複数の命令スレッドを一度に実行するための技術を実装する少なくとも1つの計算コアを備える。
以下の用語は、本明細書においても特許請求の範囲においても使用するものである。
「ITシステム」とは、コンピュータプログラムの命令を実行するために設計されたシステムであり、この目的ために、ITシステムは、プロセッサまたはCPU(Central Processing Unit)とも呼ばれる少なくとも1つの中央処理装置を備える。本発明によるITシステムは、複雑性が増す順に、1つ以上の計算コアを有する1つ以上のマイクロプロセッサを備える単純なマイクロコンピュータ、または複数のマイクロコンピュータがデータ転送ネットワークを介して相互接続されている、より複雑なアセンブリで構成できる。本発明を実装することができるITシステムの複雑性は、主に意図する使用によって異なる。
「マイクロプロセッサ」とは、極めて限定数(一般に1つのみ)の集積回路に実装されたプロセッサである。マイクロプロセッサは非常に広く普及しているため、一般にプロセッサまたはCPUと呼ばれる。
プロセッサは、1つ以上の計算コアを備えることができることに注意されたい。そのため、「シングルコアプロセッサ」とは、1つの計算コアを備えるプロセッサ(マイクロプロセッサ)であり、「マルチコアプロセッサ」とは、特定の素子、一般に例えばいわゆるレベル2(L2)キャッシュなどのキャッシュメモリを共有する複数の計算コアを備えるプロセッサ(マイクロプロセッサ)である。
計算コアとは、実行された命令に対応する計算を実施するプロセッサ(マイクロプロセッサ)部分である。計算コアは、一般に、1つ以上の制御ユニットならびに1つ以上の整数演算ユニットおよび1つ以上の浮動小数点演算ユニットを備える。
「コンピュータプログラム」、またはより単純に「プログラム」とは、プロセッサが実行するようになっている命令セットである。
「プロセス」とは、実行中のプログラムである。プロセスは、命令スレッドを1つのみ備えるか(この場合のプロセスは、「重量プロセス」と呼ばれることがある)、または共通リソース(一般にメモリ)を共有し、非同期で実行することができる多数の命令スレッド(このスレッドは「軽量プロセス」と呼ばれることがある)を備えることができる。
「命令スレッド」(またはスレッド)とは、計算コアが1つずつ順次実行する一連の命令である。
「BIOS」(Basic Input Output System)とは、オペレーティングシステムが起動される前に、ITシステムの開始時に起動されるプログラムである。
「オペレーティングシステム」とは、ITシステム上で実行され、ITシステムとこのITシステム上で実行されるその他のプログラムとの間のインターフェースを生成するプログラムであり、一般に「アプリケーションプログラム」と呼ばれ、すなわち、ユーザが制御するようになっているプログラムであり、一般にこのユーザが起動するようになっているプログラムである。
「デーモン」とは、背後で実行されるようになっているプロセス、すなわちユーザの直接制御下に置かれてはいないプロセスである。デーモンは、オペレーティングシステムによって起動されることが多い。
デーモンとは逆に、「アプリケーションプロセス」とは、実行中のアプリケーションプログラムである。
「シェル」とは、オペレーティングシステムから供給されるサービスにアクセスするために、ユーザにインターフェースを提供するプログラムである。
「スクリプト」とは、解釈されたプログラム、すなわちプロセッサ用の命令に変換する別のブログラムが解釈する命令を含むプログラムである。
したがって、「シェルスクリプト」とは、シェルが解釈するようになっている命令を含むスクリプトである。
「論理プロセッサ」とは、オペレーティングシステムから見たプロセッサである。そのため、物理的に存在するプロセッサは、そのアーキテクチャおよび/またはその構成に応じて、オペレーティングシステムには1つ以上の論理プロセッサの形態に見える。特に、一度に1つの命令スレッドを処理することができるシングルスレッディングモードにおけるシングルコアプロセッサは、1つの論理プロセッサのように見え、各コアが一度に1つの命令スレッドを処理することができるマルチコアプロセッサは、コア数と同数の論理プロセッサの形態に見える。
現在、一度に少なくとも2つの命令スレッドを交互に組み合わせた形で実行することができるように、各計算コアがSMT技術を実装しているシングルコアまたはマルチコアのプロセッサがある。
例えば、Intel社は、各計算コアが一度に2つの命令スレッドを交互に組み合わせた形で実行できる「ハイパースレッディング」モード、または各計算コアが一度に1つの命令スレッドのみを実行できる「シングルスレッディング」モードを、選択して演算することができるプロセッサを販売している。
このほか、現代のオペレーティングシステムのほとんどは、複数の論理プロセッサを管理するように設計されているため、物理的に存在する各計算コアに命令スレッドを提供することができる。
このようなオペレーティングシステムが、システムを修正する必要なくハイパースレッディングモードを利用できるようにするため、ハイパースレッディングモードの各コアは、オペレーティングシステムには2つの論理プロセッサの形態に見える。したがって、オペレーティングシステムは、論理プロセッサを管理するための通常の機構を使用して、ハイパースレッディングモードの各計算コアに2つのプロセスを提供できる。
プログラムのなかには、ハイパースレッディングモードを利用するように設計されたものがある。これは特に、計算コアの異なるリソースを使用する2つの命令スレッドを含むマルチプログラムされたプロセスを、実行中に生成するプログラムの場合である。
特定のプログラムは、あるモードでは最大のパフォーマンスを有するが、別のモードではパフォーマンスが劣ることがわかってきた。
そのため、実行されるプログラムの種類に応じて、プロセッサの計算コアの動作モード(シングルスレッディングまたはハイパースレッディングもしくはより一般にはSMT)を適合させることが望ましい。
しかしながら、現在、あるモードから別のモードへ移行するための唯一の公知手段は、BIOSのパラメータを修正することである。これには、BIOSにアクセスしてこれを構成するために、ITシステムの1回目の再起動が必要であり、このようにして構成されたBIOSが実行されるように2回目の再起動が必要である。ITシステムを制御した状態で、BIOSのパラメータを修正することができるITツールがある。しかしながら、システムの2回目の再起動は依然として必要である。そのため、これらの解決策は、多大な時間のロスを伴い、実際には重すぎて有用ではない。
そのため、前述した問題および制約の少なくともいくつかを克服できるITシステムの構成方法を提供することが望まれる。
そのため、本発明は、命令スレッドを実行するための少なくとも1つの計算コアを備えるITシステムの構成方法であって、各計算コアは、一度に少なくとも2つの命令スレッドを交互に組み合わせた形で実行でき、ITシステム上で実行中のオペレーティングシステムが、各計算コアに命令スレッドを提供できる方法において、各計算コアに、一度に最大1つの命令スレッドを提供するモードで実行中のオペレーティングシステムを構成するステップを含むことを特徴とする方法に関する。
本発明により、ハイパースレッディングモードまたはより一般にSMTモードの構成であっても、各計算コアが一度に1つのみの命令スレッドを処理するように動的に要求することが可能である。そのため、オペレーティングシステムを直接制御する状態で、再起動の必要もなく、SMTモードから各コアが一度に最大1つの命令スレッドを処理するモードに動的に移行することが可能である。そのため、ITシステムは、通常はシングルスレッディングモードの計算コアで実行する際に最適なパフォーマンスを有するプログラムを、SMTモードの計算コアで高パフォーマンスで実行することができる。本発明は、1つの命令スレッドが実行されている状態で、計算コアがシングルスレッディングモードとSMTモードとで実質的に同じ能力を有すると、特に効果的である。
任意に、本方法はさらに、実行中のオペレーティングシステムが、各計算コアに一度に最大1つの命令スレッドを提供する、第1のモードと称するモードで構成される一方で、各計算コアに一度に2つ以上の命令スレッドを提供できる、第1のモードとは異なる第2のモードで実行中のオペレーティングシステムを構成するステップを含む。
そのため、通常はSMTモードの計算コアで実行される際に最適なパフォーマンスを有するプログラムを効果的に実行することも可能である。
同じく任意に、各計算コアは、実行中のオペレーティングシステムに、交互に組み合わせた形で一度に実行できる命令スレッドと同数の論理プロセッサを提供するように設計され、実行中のオペレーティングシステムは、命令スレッドのスケジューリングに利用可能な論理プロセッサのリストを備え、このリストには、各計算コアのすべての論理プロセッサが示され、本方法はさらに、各計算コアに一度に最大1つの命令スレッドを提供するように実行中のオペレーティングシステムを構成するために、スケジューリングに利用可能な論理プロセッサのリストから、各計算コアのうちの1つを除くすべての論理プロセッサを削除する命令を、実行中のオペレーティングシステムに送信するステップを含む。
そのため、オペレーティングシステムは、最大1つの命令スレッドのみを各計算コアに提供するように、極めて単純に構成される。
同じく任意に、本方法はさらに、各計算コアに一度に2つ以上の命令スレッドを提供するように実行中のオペレーティングシステムを構成するために、削除されたすべての論理プロセッサを、スケジューリングに利用可能な論理プロセッサのリストに追加する命令を、実行中のオペレーティングシステムに送信するステップを含む。
そのため、オペレーティングシステムは、2つ以上の命令スレッドを各計算コアに提供できるように、極めて単純に構成される。
同じく任意に、ITシステムは、一度に少なくとも2つの命令スレッドを交互に組み合わせた形で実行できる1つ以上の計算コアのみを、計算コアとして備える。
同じく任意に、各計算コアは、一度に厳密に2つの命令スレッドを交互に組み合わせた形で実行できる。
そのため、プロセスは、ハイパースレッディングの特定のケースに適している。
本発明はまた、通信ネットワークからダウンロードでき、かつ/またはコンピュータで再生可能な媒体に記録でき、かつ/またはプロセッサが実行することができるコンピュータプログラムであって、前記プログラムがコンピュータ上で実行される際に、本発明による構成方法のステップを実行するための命令を含むことを特徴とするコンピュータプログラムにも係る。
任意に、本コンピュータプログラムは、シェルスクリプトの形態である。
同じく任意に、本コンピュータプログラムは、別のプログラムに呼び出されるようになっているITライブラリの少なくとも1つの関数の形態である。
本発明はまた、ITシステムであって、
−命令スレッドを実行するための少なくとも1つの計算コアであって、各計算コアは、一度に少なくとも2つの命令スレッドを交互に組み合わせた形で実行できる計算コアと、
−オペレーティングシステムが記録されたメモリであって、ITシステムによって実行される際に、命令スレッドを各計算コアに提供できるメモリと
を備えるITシステムにおいて、
−コンピュータプログラムが記録されたメモリであって、オペレーティングシステムがITシステムによって実行されている間にITシステムによって実行される際に、各計算コアに一度に最大1つの命令スレッドを提供するモードで実行中のオペレーティングシステムを構成するための命令を含むメモリ
を備えるITシステムにも係る。
本発明は、例のみを目的として、添付の図面を参照して記載した以下の説明を読めばより理解しやすいであろう。
本発明の一実施形態によるITシステムを示す図である。 本発明の一実施形態による、図1のITシステムの構成方法の一連のステップを示すフローチャートである。
図1は、コンピュータ100の形態をした本発明の一実施形態の一例を示す。
コンピュータ100は、中央装置102、ならびに例えばスクリーン、キーボードおよびマウスなどのマンマシンインターフェース104を備える。
中央装置102は、マザーボード106、このマザーボード106に接続された2つのXeon X5570(登録商標)プロセッサ108、BIOSメモリ110、RAM112およびハードディスクなどの記憶装置114を備える。そのため、プロセッサ108は、BIOSメモリ110およびRAM112に記録された命令を実行することができ、記憶装置114に記録されたデータの読み出しまたは書き込みができる。
図1に示した例では、各プロセッサ108は、命令スレッドを実行するための4つの計算コア116を備える。各プロセッサ108は、各計算コア116が一度に1つの命令スレッドを実行でき、特にオペレーティングシステムには1つの論理プロセッサの形態に見えるシングルスレッディングモード、または各計算コア116が一度に2つの命令スレッドを交互に組み合わせた形で実行でき、特にオペレーティングシステムには2つの論理プロセッサの形態に見えるハイパースレッディングモードを、選択して動作することができる。
BIOSメモリ110には、BIOS118が記録される。BIOS118は、シングルスレッディングモードまたはハイパースレッディングモードでプロセッサ108を開始するために、所定の構成パラメータを用いて構成することができる。ハイパースレッディングモードの場合、BIOS118は、各計算コア116に対して2つの論理プロセッサを開始するように構成され、この2つをそれぞれ第1の論理プロセッサおよび第2の論理プロセッサと呼ぶ。シングルスレッディングモードでは、BIOS118は、第1の論理プロセッサのみを開始する。
このほか、BIOS118は、ACPI(「Advanced Configuration and Power Interface」)規格でコンパイルする。この規格は、特に、BIOS118の実行により、存在する論理プロセッサ、すなわち開始されたプロセッサのリストが作成されなければならないことを明記している。このリストは、MADTテーブル(「Multiple APIC Description Table」)と呼ばれるテーブルに作成され、このテーブルは、RAM112に記録され、オペレーティングシステムが実行されている際にこのオペレーティングシステムが読み出すようになっており、これによって存在する論理プロセッサを認識する。MADTテーブルはさらに、各論理プロセッサに対し、論理プロセッサがシングルコアプロセッサのコア、マルチコアプロセッサのコアのうちの1つ、および/またはハイパースレッディングモードの物理的コアの論理コアのうちの1つに対応しているかどうかを表示する。このように、MADTテーブルは、コンピュータ100のプロセッサの構成を表示する。最近のIntel(登録商標)プロセッサでは、この情報は、「CPUID」命令によって提供される。
ACPI規格はさらに、すべての計算コア116の第2の論理プロセッサは、リスト内で、すべての計算コア116の第1の論理プロセッサの後に置かれなければならないことを明記している。そのため、リストは、計算コア116の第1の論理プロセッサをまとめた前半部分、および計算コア116の第2の論理プロセッサをまとめた後半部分を含む。
記憶装置114には、オペレーティングシステム120が記録される。オペレーティングシステム120は、特に、コンピュータ100によって実行される際に、命令スレッドを各計算コア116に提供するように設計される。記載した例では、オペレーティングシステム120は、Unix(登録商標)規格でコンパイルする。これは、例えば、Linux(登録商標)オペレーティングシステムである。
記憶装置114には、本明細書の最後にコードを記載したシェルスクリプト122も記録される。シェルスクリプト122は、ハイパースレッディングモード、またはより一般にはSMTモードから「同時シングルスレッディング」モードへ移行するためのオペレーティングシステム120を構成するようになっており、これについては以下に説明する。
次に、図2を参照して、コンピュータ100の動作を記載する。簡略化のため、実行中の前述のプログラム118、120および122、つまりプロセスには、本来のプログラムの符号を付し、同じように設計する。すなわち、それぞれBIOS118、オペレーティングシステム120およびシェルスクリプト122である。
ステップ200では、コンピュータ100をオンにする。
ステップ202では、BIOS118はコンピュータ100が実行し、BIOS118は、各計算コア116をハイパースレッディングモードで開始するように構成される。
そのため、ステップ204では、BIOS118は各計算コア116に対して2つの論理プロセッサを開始し、これによってコンピュータ100は、記載した例では16個の論理プロセッサを有する。
ステップ206では、BIOS118は、MADTテーブルに、存在する論理プロセッサ、すなわちこの場合は開始された16個の論理プロセッサのリストを作成する。
ステップ208では、BIOS118は、オペレーティングシステム120を起動する。
ステップ210では、オペレーティングシステム120は、MADTテーブルに、存在する論理プロセッサのリストを読み出す。
ステップ212では、オペレーティングシステム120は、存在する論理プロセッサすべてを、スケジューリングに利用可能、すなわちこのリストのプロセッサ間への命令スレッドの配信に利用可能な論理プロセッサのリストに置く。
「スケジューリングに利用可能な論理プロセッサのリスト」は、MADTのリストにある各論理プロセッサに対し、この論理プロセッサをスケジューリングに使用すべきかどうかを示す任意のデータセットという意味に解釈すべきである。したがって、このデータセットのフォーマットは、必ずしも「リスト」にあるデータ構造のフォーマットではない。
そのため、このステップ212の後、コンピュータ100は、デフォルトとして、オペレーティングシステム120がすべての存在する論理プロセッサ間、すなわちプロセッサ108のすべての計算コア116のすべての論理プロセッサ間で命令スレッドをスケジューリングするハイパースレッディングモードに構成される。
命令スレッドは、例えばオペレーティングシステム120が開始するデーモン、またはユーザがマンマシンインターフェース104を介して開始するアプリケーションプログラムから来るものである。
コンピュータ100は、特に、ハイパースレッディングモード用に最適化されたプログラムを最適な形で実行することができる。
ここで、ユーザが、例えば、記憶装置114に記録された、ハイパースレッディングモードではなくシングルスレッディングモード用に最適化されたプログラムを起動したいと思うとする。
この場合、ステップ214で、ユーザは、マンマシンインターフェース104を用いてシェルスクリプト122を起動し、いわゆる「同時シングルスレッディング」モードに移行する。例えば、このユーザは、シェルプロンプトに応答して「ht off」とタイプする。
ステップ216では、BIOS118によるハイパースレッディング構成モードにより、計算コア116は一度に2つの命令スレッドを実行できるにもかかわらず、シェルスクリプト122は、各計算コア116に一度に最大1つの命令スレッドを提供するように、実行中のオペレーティングシステム120を構成する。これは、本明細書で「同時シングルスレッディング」と呼ぶものである。
この目的のため、シェルスクリプト122は、実行中のオペレーティングシステム120に、スケジューリングに利用可能な論理プロセッサのリストから各計算コア116のうちの1つを除くすべての論理プロセッサを削除する命令を出す。
この場合、ACPI規格は、各計算コア116の第1の論理プロセッサは、存在するプロセッサのリストの最初に現れなければならないと明記しているため、シェルスクリプト122は、オペレーティングシステム120に、スケジューリングに利用可能な論理プロセッサのリストから、存在する論理プロセッサのリスト内の位置がコンピュータ100の計算コア116の数を上回る論理プロセッサを削除する命令を出すことによって、ステップ216を実行する。ハイパースレッディングの場合、これは存在する論理プロセッサリストの後半部分にある論理プロセッサに関わる。
記載した例では、シェルスクリプト122は、連続するスケジューリングに利用可能なプロセッサのリストから、存在するプロセッサのリストの後半部分にある各プロセッサを削除する命令を出す。
シェルスクリプト122は、これらの計算コア116のそれぞれがBIOS118を基にハイパースレッディングモードで構成されると直ちに、いくつの計算コアに対しても使用できる(記載した例のように8個にかぎらない)ことに注意されたい。
シェルスクリプト122は、論理プロセッサを削除する命令を出す。Linuxオペレーティングシステムの場合、これは、番号Xのプロセッサに特有のファイル:/sys/devices/system/cpu/cpuX/onlineに値0を書き込むことによって実行される。
これに応答して、オペレーティングシステム120は、スケジューリングに利用可能な論理プロセッサのリストから削除されるはずの論理プロセッサそれぞれに対し、一連のステップ218、220および222を順次実行する。
ステップ218では、オペレーティングシステム120は、スケジューリングに利用可能な論理プロセッサのリストから削除されるはずの論理プロセッサが実行する命令およびプロセスを、このリストの他の論理プロセッサに移行させる。
ステップ220では、オペレーティングシステム120は、削除されるはずの論理プロセッサに特有のデーモンを停止する。
ステップ222では、オペレーティングシステム120は、この論理プロセッサをスケジューリングに利用可能なプロセッサのリストから削除するため、オペレーティングシステム120からこのプロセッサに提供される命令スレッドはなくなる。
ステップ218、220および222が、削除されるはずのすべての論理プロセッサに対して実行されると、コンピュータ100は同時シングルスレッディングモードで構成され、その結果、オペレーティングシステム120はすべての命令スレッドを、存在する論理プロセッサのリストの前半部分にある論理プロセッサで、すなわち各計算コア116の第1の論理プロセッサのみでスケジューリングする。そのため、各計算コア116は、一度に最大1つの命令スレッドのみを実行する。
そのためユーザは、計算コア116がハイパースレッディングモードで構成されていても、ステップ226で高パフォーマンスで実行されるシングルスレッディングモード用に最適化されたプログラムをステップ224で起動できる。
次に、ユーザが例えば記憶装置114に記録されているプログラムを起動したいと思った場合、このプログラムはシングルスレッディングモードではなくハイパースレッディングモード用に最適化されているため、このプログラムはステップ228で、「ハイパースレッディング」モードに戻るためにマンマシンインターフェース104を介してシェルスクリプト122を起動する。例えば、このユーザは、シェルプロンプトで「ht on」とタイプする。
次に、ステップ230で、シェルスクリプト122は、各計算コア116に一度に2つ以上の命令スレッドを提供できるように、実行中のオペレーティングシステム120を構成する。
この目的のため、シェルスクリプト122は、実行中のオペレーティングシステム120に、ステップ216の後に削除されたすべての論理プロセッサを、利用可能な論理プロセッサのリストに追加する命令を出す。
さらに詳細には、記載した例では、シェルスクリプト122は、存在する論理プロセッサのリストの後半部分に現れる論理プロセッサをそれぞれ順次追加する命令を出す。
記載した例では、シェルスクリプト122は、論理プロセッサを追加する命令を出す。Linuxオペレーティングシステムの場合、これは、番号Xのプロセッサに特有のファイル:/sys/devices/system/cpu/cpuX/onlineに値1を書き込むことによって行われる。
これに応答して、オペレーティングシステム120は、スケジューリング可能なプロセッサのリストに追加されるはずの各論理プロセッサに対し、一連のステップ232および234を順次実行する。
ステップ232では、オペレーティングシステム120は、ステップ216の後に削除された論理プロセッサを、スケジューリング可能なプロセッサのリストに追加する。
ステップ234では、オペレーティングシステム120は、前のステップに追加された論理プロセッサに特定のデーモンを開始する。
ステップ232および234が、追加されるはずのすべての論理プロセッサに対して実行されると、コンピュータ100は、ハイパースレッディングモードで構成され、その結果、オペレーティングシステム120は、プロセッサ108のすべての計算コア116のすべての論理プロセッサ間で新たな命令スレッドをスケジューリングする。
そのため、ユーザは、ステップ236で、ハイパースレッディングモード用に最適化されたプログラムを起動することができ、このプログラムはステップ238で高パフォーマンスで実行される。
利用可能な論理プロセッサの数を動的に計算に入れるアプリケーションおよびサービスは、自動的に新たな状況に適合される。その他のものは、ユーザによって手動で再起動されるか、再起動するためのシェルスクリプト122に命令を出すことによって再起動されるかのいずれかである。
より一般的に、図2に示した実施形態では、コンピュータ100がハイパースレッディングモードで構成された場合、同時シングルスレッディングモードで構成するためにステップ214から222が実行されなければならず、コンピュータ100が同時シングルスレッディングモードで構成された場合、ハイパースレッディングモードで構成するためにステップ228から234が実行されなければならない。
本発明は、異なるモードに対して最適化された2つのプログラムを、コンピュータ100を再起動する必要なしに順次効果的に実行することができるという利点があることが明らかになる。
本発明は、上記に記載した実施形態に限定されるものではないことに注意されたい。実際、上に開示した教示に照らし合わせて、上に記載した実施形態にさまざまな修正を加えてもよいことは当業者には明らかであろう。
特に、オペレーティングシステムは、デフォルトで同時シングルスレッディングモードで開始するように設計してもよい。
このようにするための第1の方法は、ステップ212で、オペレーティングシステムが存在するすべての論理プロセッサを追加せずに、1つのみを各計算コア116に追加し、例えば、存在するプロセッサのリストの前半部分にある論理プロセッサのみを追加することによって、オペレーティングシステムを修正することであろう。
このようにするための第2の方法は、例えばユーザが制御する前、すなわちユーザがプログラムを起動できる前、またはオペレーティングシステムの関数を使用できる前に、シェルスクリプト122が自動的にオペレーティングシステム120によって実行されるようにすることであろう。
最後に、選択したモードをオンにする機能を持つ新たなシステムサービスを実装することを検討することができる。これは、システムのランレベルが変化するたびに、手動または自動のいずれかで開始または停止される。
このほか、本発明により、シェルスクリプト以外のプログラムタイプがステップ216から222および/または230から234を実装できる。特に、これらのステップは、実行可能な2進プログラムを実行することで実装してもよい。そのため、このプログラムは、ユーザに前のステップの実装を可能にするコマンドを構成する。このほか、前のステップは、例えばいわゆるAPI(Application Programming Interface、アプリケーションプログラミングインタフェース)を介するアプリケーションプログラムなど、プログラムが呼び出すライブラリの関数によって実装されることができる。そのため、2つのモードのうちの1つで最適化されたプログラムを設計することができ、このモードは、起動されると直ちにこの関数を呼び出し、その実行を促進するモードでコンピュータ100を構成する。
このほか、ステップ216では、シェルスクリプト122は、スケジューリング可能なプロセッサのリストから、存在するプロセッサのリストの前半部分にあるプロセッサを削除する命令を出することもできる。しかしながら、第1の論理プロセッサが依然として利用可能であると考える特定のプログラムは、動作しなくなるおそれがある。
このほか、ステップ216から222および/または230から243を実装しているプログラムは、論理プロセッサの番号付けを使用する代わりに、マルチスレッディングモードでのコアの第2の論理プロセッサにどれが相当するかを検出し、それをオンにする、またはオフにしてもよい。この検出は、例えば、MADTテーブルの表示を使用して実施できる。この動作方法は、例えばMADTテーブル内の論理プロセッサの番号付けがAPIC規格に従っていない場合、またはオペレーティングシステムがそれを計算に入れていない場合に有利である。
以下の特許請求の範囲では、使用した用語が請求項を本明細書で明らかにした実施形態に限定するものと解釈してはならず、本文の記載およびそこから予見される内容は、ここに開示した教示の実装に一般知識を応用することによって当業者が到達しうる範囲内であることから、請求項が範囲に含めると想定するあらゆる均等物も含まれると解釈すべきである。
付録: シェルスクリプトコード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"が起動されれば
# 存在する実行中のプロセッサに特有のファイルに
# 値1を記録し、
# "ht off"が起動されれば値0を記録する
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

Claims (10)

  1. 命令スレッドを実行するための少なくとも1つの計算コア(116)を備えるITシステム(100)の構成方法であって、各計算コア(116)は、一度に少なくとも2つの命令スレッドを交互に組み合わせた形で実行でき、前記ITシステム(100)上で実行中のオペレーティングシステム(120)が、各計算コア(116)に命令スレッドを提供できる方法において、前記計算コアが依然として一度に少なくとも2つの命令スレッドを交互に組み合わせた形で実行できる間に、各計算コア(116)に、一度に最大1つの命令スレッドを提供するモードで実行中のオペレーティングシステム(120)を構成するステップ(216)を含むことを特徴とする方法。
  2. 実行中の前記オペレーティングシステム(120)が、各計算コア(116)に一度に最大1つの命令スレッドを提供する、第1のモードと称するモードで構成される間に、各計算コア(116)に一度に2つ以上の命令スレッドを提供できる、前記第1のモードとは異なる第2のモードで実行中の前記オペレーティングシステム(120)を構成するステップをさらに含む、請求項1に記載のITシステム(100)の構成方法。
  3. 各計算コア(116)は、実行中の前記オペレーティングシステム(120)に、交互に組み合わせた形で一度に実行できる命令スレッドと同数の論理プロセッサを提供するように設計され、実行中の前記オペレーティングシステム(120)は、前記命令スレッドのスケジューリングに利用可能な論理プロセッサのリストを備え、該リストには、各計算コア(116)のすべての前記論理プロセッサが示される方法であって、各計算コア(116)に一度に最大1つの命令スレッドを提供するように実行中の前記オペレーティングシステム(120)を構成する(216)ために、スケジューリングに利用可能な論理プロセッサの前記リストから、各計算コア(116)のうちの1つを除くすべての前記論理プロセッサを削除する命令を、実行中の前記オペレーティングシステム(120)に送信するステップをさらに含む、請求項1または2に記載のITシステム(100)の構成方法。
  4. 各計算コアに一度に2つ以上の命令スレッドを提供するように実行中の前記オペレーティングシステム(120)を構成するために、スケジューリングに利用可能な論理プロセッサの前記リストに、該リストから削除されたすべての前記論理プロセッサを追加する命令を、実行中の前記オペレーティングシステム(120)に送信するステップをさらに含む、請求項2および3に記載のITシステム(100)の構成方法。
  5. 前記ITシステムは、一度に少なくとも2つの命令スレッドを交互に組み合わせた形で実行できる1つ以上の計算コア(116)のみを計算コアとして備える、請求項1から4のうちいずれか一項に記載のITシステムの構成方法。
  6. 各計算コア(116)は、一度に厳密に2つの命令スレッドを交互に組み合わせた形で実行できる、請求項1から5のうちいずれか一項に記載のITシステムの構成方法。
  7. 通信ネットワークからダウンロードでき、かつ/またはコンピュータで再生可能な媒体に記録でき、かつ/またはプロセッサが実行することができるコンピュータプログラムであって、前記プログラムがコンピュータ(100)上で実行される際に、請求項1から6のうちいずれか一項に記載の構成方法のステップを実行するための命令を含むことを特徴とするコンピュータプログラム(122)。
  8. シェルスクリプトの形態である、請求項7に記載のコンピュータプログラム(122)。
  9. 別のプログラムに呼び出されるようになっているITライブラリの少なくとも1つの関数の形態である、請求項7に記載のコンピュータプログラム。
  10. ITシステムであって、
    − 命令スレッドを実行するための少なくとも1つの計算コアであって、各計算コア(116)は、一度に少なくとも2つの命令スレッドを交互に組み合わせた形で実行できる計算コア(116)と、
    − オペレーティングシステムが記録されたメモリであって、前記ITシステム(100)によって実行される際に、命令スレッドを各計算コア(116)に提供できるメモリと
    を備えるITシステムにおいて、
    − コンピュータプログラム(122)が記録されたメモリであって、前記オペレーティングシステム(120)が前記ITシステム(100)によって実行されている間に前記ITシステム(100)によって実行される際に、前記計算コアが依然として一度に少なくとも2つの命令スレッドを交互に組み合わせた形で実行できる間に、各計算コア(116)に一度に最大1つの命令スレッドを提供するモードで実行中の前記オペレーティングシステム(120)を構成するための命令を含むメモリ(114)
    を備えることを特徴とするITシステム(100)。
JP2012556570A 2010-03-11 2011-03-10 Itシステムの構成方法、そのコンピュータプログラムおよびitシステム Expired - Fee Related JP5678347B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
FR1051758 2010-03-11
FR1051758A FR2957433B1 (fr) 2010-03-11 2010-03-11 Procede de configuration d'un systeme informatique, programme d'ordinateur et systeme informatique correspondants
PCT/FR2011/050489 WO2011110790A1 (fr) 2010-03-11 2011-03-10 Procédé de configuration d'un système informatique, programme d'ordinateur et système informatique correspondants

Publications (2)

Publication Number Publication Date
JP2013522710A true JP2013522710A (ja) 2013-06-13
JP5678347B2 JP5678347B2 (ja) 2015-03-04

Family

ID=42830798

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012556570A Expired - Fee Related JP5678347B2 (ja) 2010-03-11 2011-03-10 Itシステムの構成方法、そのコンピュータプログラムおよびitシステム

Country Status (6)

Country Link
US (2) US10007553B2 (ja)
EP (1) EP2545449B1 (ja)
JP (1) JP5678347B2 (ja)
BR (1) BR112012021892A2 (ja)
FR (1) FR2957433B1 (ja)
WO (1) WO2011110790A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013232150A (ja) * 2012-05-01 2013-11-14 Renesas Electronics Corp 半導体装置

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11579944B2 (en) * 2018-11-14 2023-02-14 Intel Corporation System, apparatus and method for configurable control of asymmetric multi-threading (SMT) on a per core basis
US11055094B2 (en) * 2019-06-26 2021-07-06 Intel Corporation Heterogeneous CPUID spoofing for remote processors

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003241980A (ja) * 2002-02-06 2003-08-29 Internatl Business Mach Corp <Ibm> マルチプロセッサ・コンピュータ・システムのためのスレッド・ディスパッチ機構及び方法
JP2004326749A (ja) * 2003-04-24 2004-11-18 Internatl Business Mach Corp <Ibm> マルチスレッド・プロセッサを単一スレッド・モード及び同時マルチスレッド・モードの間で動的に切り替える装置及び方法
JP2006524380A (ja) * 2003-04-23 2006-10-26 インターナショナル・ビジネス・マシーンズ・コーポレーション 同時マルチスレッド(smt)プロセッサにおいてスレッドごとのプロセッサ・リソース使用率を決定するためのアカウンティング方法および論理
JP2007526534A (ja) * 2003-06-04 2007-09-13 ザ・トラスティーズ・オブ・ザ・ユニバーシティ・オブ・ペンシルベニア ロード・バランシング、独立処理及びレコード問合せのためのndmaスケーラブル・アーカイブのハードウェア/ソフトウェア・アーキテクチャ
JP2007317171A (ja) * 2006-04-27 2007-12-06 Matsushita Electric Ind Co Ltd マルチスレッド計算機システム、マルチスレッド実行制御方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6886081B2 (en) * 2002-09-17 2005-04-26 Sun Microsystems, Inc. Method and tool for determining ownership of a multiple owner lock in multithreading environments
US20040123078A1 (en) * 2002-12-24 2004-06-24 Hum Herbert H Method and apparatus for processing a load-lock instruction using a scoreboard mechanism
US7543294B2 (en) * 2002-12-26 2009-06-02 Nokia Corporation Dynamic priority inheritance algorithm for scheduling dynamic configurable devices
US7512826B2 (en) * 2005-04-20 2009-03-31 International Business Machines Corporation Method, apparatus, and product for an efficient virtualized time base in a scaleable multi-processor computer
US7971205B2 (en) * 2005-12-01 2011-06-28 International Business Machines Corporation Handling of user mode thread using no context switch attribute to designate near interrupt disabled priority status
DE102006020178A1 (de) * 2006-05-02 2007-11-08 Fujitsu Siemens Computers Gmbh Verfahren und Computerprogrammprodukt zur Ausführung eines Programms auf einem Prozessor mit Multithreading-Architektur
US7600109B2 (en) * 2006-06-01 2009-10-06 Dell Products L.P. Method and system for initializing application processors in a multi-processor system prior to the initialization of main memory
US8032737B2 (en) * 2006-08-14 2011-10-04 Marvell World Trade Ltd. Methods and apparatus for handling switching among threads within a multithread processor
US9715411B2 (en) * 2014-02-05 2017-07-25 International Business Machines Corporation Techniques for mapping logical threads to physical threads in a simultaneous multithreading data processing system

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003241980A (ja) * 2002-02-06 2003-08-29 Internatl Business Mach Corp <Ibm> マルチプロセッサ・コンピュータ・システムのためのスレッド・ディスパッチ機構及び方法
JP2006524380A (ja) * 2003-04-23 2006-10-26 インターナショナル・ビジネス・マシーンズ・コーポレーション 同時マルチスレッド(smt)プロセッサにおいてスレッドごとのプロセッサ・リソース使用率を決定するためのアカウンティング方法および論理
JP2004326749A (ja) * 2003-04-24 2004-11-18 Internatl Business Mach Corp <Ibm> マルチスレッド・プロセッサを単一スレッド・モード及び同時マルチスレッド・モードの間で動的に切り替える装置及び方法
JP2007526534A (ja) * 2003-06-04 2007-09-13 ザ・トラスティーズ・オブ・ザ・ユニバーシティ・オブ・ペンシルベニア ロード・バランシング、独立処理及びレコード問合せのためのndmaスケーラブル・アーカイブのハードウェア/ソフトウェア・アーキテクチャ
JP2007317171A (ja) * 2006-04-27 2007-12-06 Matsushita Electric Ind Co Ltd マルチスレッド計算機システム、マルチスレッド実行制御方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013232150A (ja) * 2012-05-01 2013-11-14 Renesas Electronics Corp 半導体装置

Also Published As

Publication number Publication date
US20180267829A1 (en) 2018-09-20
US20130067482A1 (en) 2013-03-14
WO2011110790A1 (fr) 2011-09-15
EP2545449B1 (fr) 2020-08-12
FR2957433A1 (fr) 2011-09-16
JP5678347B2 (ja) 2015-03-04
EP2545449A1 (fr) 2013-01-16
FR2957433B1 (fr) 2016-01-15
BR112012021892A2 (pt) 2023-11-21
US10007553B2 (en) 2018-06-26

Similar Documents

Publication Publication Date Title
JP6359069B2 (ja) オペレーティングシステムと切り離される異種計算
EP3039540B1 (en) Virtual machine monitor configured to support latency sensitive virtual machines
US8935698B2 (en) Management of migrating threads within a computing environment to transform multiple threading mode processors to single thread mode processors
US7698540B2 (en) Dynamic hardware multithreading and partitioned hardware multithreading
JP6089349B2 (ja) マルチコアアーキテクチャでのリソース分離を支援するための方法およびシステム
JP5583837B2 (ja) コンピュータ・システム内でタスクを開始するためのコンピュータ実装方法、システム及びコンピュータ・プログラム
EP1465063A2 (en) Enhanced runtime hosting
CN102567090B (zh) 在计算机处理器中创建执行线程的方法和系统
JP2016508647A5 (ja)
JP2013506179A (ja) 命令スレッドを組み合わせた実行の管理システムおよび管理方法
US20220004420A1 (en) Optimizing Host CPU Usage Based on Virtual Machine Guest OS Power and Performance Management
US20120284720A1 (en) Hardware assisted scheduling in computer system
JP2010079622A (ja) マルチコアプロセッサシステム、および、そのタスク制御方法
US11537429B2 (en) Sub-idle thread priority class
JP2004288162A (ja) 同期タスクを利用したオペレーティングシステムアーキテクチャ
JP2008522277A (ja) 優先度の付けられたタスク間の効率的な切り換え
US20180267829A1 (en) Method for configuring an it system, corresponding computer program and it system
CN113918336A (zh) 基于多核CPU的FreeRTOS运行任务方法及装置
KR20130051076A (ko) 응용프로그램 스케줄링 방법 및 장치
JP2002297556A (ja) マルチプロセッサシステム,マルチプロセッサ制御方法,マルチプロセッサ制御プログラムおよび同プログラムを記録したコンピュータ読取可能な記録媒体
JP2010152733A (ja) マルチコアシステム
CN115098230A (zh) 管理线程的方法及装置
US9619277B2 (en) Computer with plurality of processors sharing process queue, and process dispatch processing method
JP2010026575A (ja) スケジューリング方法およびスケジューリング装置並びにマルチプロセッサシステム
CN114443255A (zh) 一种线程调用方法和装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131216

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131224

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140324

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140408

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140424

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140502

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140523

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140603

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140612

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20141118

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141215

R150 Certificate of patent or registration of utility model

Ref document number: 5678347

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees