JP5376042B2 - マルチコアプロセッサシステム、スレッド切り替え制御方法、およびスレッド切り替え制御プログラム - Google Patents

マルチコアプロセッサシステム、スレッド切り替え制御方法、およびスレッド切り替え制御プログラム Download PDF

Info

Publication number
JP5376042B2
JP5376042B2 JP2012505398A JP2012505398A JP5376042B2 JP 5376042 B2 JP5376042 B2 JP 5376042B2 JP 2012505398 A JP2012505398 A JP 2012505398A JP 2012505398 A JP2012505398 A JP 2012505398A JP 5376042 B2 JP5376042 B2 JP 5376042B2
Authority
JP
Japan
Prior art keywords
switching time
cpu
time
core
predetermined
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.)
Expired - Fee Related
Application number
JP2012505398A
Other languages
English (en)
Other versions
JPWO2011114495A1 (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2011114495A1 publication Critical patent/JPWO2011114495A1/ja
Application granted granted Critical
Publication of JP5376042B2 publication Critical patent/JP5376042B2/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
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4825Interrupt from clock, e.g. time of day
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/486Scheduler internals

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Hardware Redundancy (AREA)

Description

本発明は、スレッド切り替えを制御するマルチコアプロセッサシステム、スレッド切り替え制御方法、およびスレッド切り替え制御プログラムに関する。
従来から、1つのCPU(Central Processing Unit)に対して、複数のプログラムを動作させるマルチプログラミング技術が存在する。具体的には、OS(Operating System)は、CPUの処理時間を分割する機能を有し、分割された時間にプロセスやスレッドを割り当てることにより、CPUが同時に複数のプロセスやスレッドを動作する。ここで、プロセスやスレッドはプログラムの実行単位である。ソフトウェアは、プロセスやスレッドの集まりにて構成されている。また一般的に、プロセス間ではメモリ空間が独立しており、スレッド間ではメモリ空間を共有する。
スレッドの切り替え時間の変更を使用する技術として、スレッド数が多いときに切り替え時間を短くするように変更することで、各スレッドの処理回数を増やし、CPUのリソースを各スレッドに配分するという技術が開示されている(たとえば、下記特許文献1を参照。)。
また、コンピュータシステムに複数のCPUを搭載するマルチコアプロセッサシステムの技術も開示されている。これにより、前述のマルチプログラミング技術において、OSは複数のプログラムを複数のCPUに対して割り当てることができる。また、マルチコアプロセッサシステムの構成として、各CPUが専用のメモリを保持し、それ以外のデータが必要の場合には、共有メモリにアクセスを行うことを特徴とする、分散システムの構造を持ったマルチコアプロセッサシステムが開示されている。また、各CPUがキャッシュメモリのみを保持し、必要なデータは共有メモリに格納することを特徴とする、集中共用システムの構造を持ったマルチコアプロセッサシステムも開示されている。
マルチコアプロセッサシステムでのスレッドの切り替え技術として、タイムスライスで実行する特定のプロセスと高優先プロセスとの衝突後、再開した際に遅延分をタイムスライスに加算して特定のプロセスを再開するという技術が開示されている(たとえば、下記特許文献2を参照。)。
特開平3−019036号公報 特開平8−314740号公報
しかしながら、上述した従来技術において、集中共用システムの構造を持つマルチコアプロセッサシステムは、アクセス競合によるコンテンション状態となると、リアルタイム処理の完了時間が決められた時間を超過するという問題があった。リアルタイム処理とは、設計上あらかじめ決められた時刻に処理を終了しなければならない処理、および割り込み動作における、割り込みイベント発生から割り込み処理本体の開始時間までの許容されるインターバル時間が定められた処理をさす。
特許文献1および2にかかる技術を適用しても、アクセス競合によるコンテンション状態の判断をしておらず、コンテンション状態ではリアルタイム処理の応答性能が破たんするという問題があった。
本発明は、上述した従来技術による問題点を解消するため、リアルタイム処理の応答性能を保証するマルチコアプロセッサシステム、スレッド切り替え制御方法、およびスレッド切り替え制御プログラムを提供することを目的とする。
上述した課題を解決し、目的を達成するため、開示のマルチコアプロセッサシステムは、複数のコアのおのおのに割り当てた複数のスレッドを所定の切り替え時間で切り替え、切り替えによって所定の切り替え時間を越えて複数のスレッドの切り替えを行ったコアを特定し、特定されたコアにおいて複数のスレッドの切り替えを行った実切り替え時間と所定の切り替え時間との差分に基づいて、所定の切り替え時間が短縮するように補正し、補正された切り替え時間を所定の切り替え時間に設定することを要件とする。
本マルチコアプロセッサシステム、スレッド切り替え制御方法、およびスレッド切り替え制御プログラムによれば、リアルタイム処理の応答性能を保証できるという効果を奏する。
本実施の形態にかかるマルチコアプロセッサシステム100のハードウェア構成を示すブロック図である。 マルチコアプロセッサシステム100の各CPUのハードウェア構成とソフトウェア構成を示すブロック図である。 マルチコアプロセッサシステム100の機能的構成を示すブロック図である。 単一のCPUで実行している場合のソフトウェアのディスパッチ状態を示す説明図である。 従来例におけるマルチコアプロセッサシステム100にて、コンテンション状態によるリアルタイム応答の遅延を示す説明図である。 本実施の形態におけるマルチコアプロセッサシステム100にて、タイムスライスを補正した後の状態を示す説明図である。 ソフトウェアテーブル310の記憶内容の一例を示す説明図である。 リアルタイム処理の一例を示す説明図である。 マルチコアプロセッサシステム100でのスレッド切り替えを含むタイムスライス設定処理を示すフローチャートである。 ハイパーバイザによるタイムスライス補正処理を示すフローチャートである。
以下に添付図面を参照して、本発明にかかるマルチコアプロセッサシステム、スレッド切り替え制御方法、およびスレッド切り替え制御プログラムの好適な実施の形態を詳細に説明する。
(マルチコアプロセッサシステムのハードウェア構成)
図1は、本実施の形態にかかるマルチコアプロセッサシステム100のハードウェア構成を示すブロック図である。マルチコアプロセッサシステムとは、コアが複数搭載されたプロセッサを含むコンピュータのシステムである。コアが複数搭載されていれば、複数のコアが搭載された単一のプロセッサでもよく、シングルコアのプロセッサが並列されているプロセッサ群でもよい。なお、本実施の形態では、説明を単純化するため、シングルコアのプロセッサであるCPUが並列されているプロセッサ群を例にあげて説明する。
マルチコアプロセッサシステム100は、CPUを複数搭載するCPUs101と、ROM(Read‐Only Memory)102と、RAM(Random Access Memory)103と、フラッシュROM104と、を備えている。また、マルチコアプロセッサシステム100は、ユーザやその他の機器との入出力装置として、ディスプレイ105と、I/F(Interface)106と、を備えている。また、各構成部はバス108によってそれぞれ接続されている。本実施の形態にかかるハードウェアの構成は、集中共用システムを適用した構成となっている。
ここで、CPUs101は、マルチコアプロセッサシステム100の全体の制御を司る。また、CPUs101は、シングルコアのプロセッサを並列して接続したすべてのCPUを指している。詳細は、図2にて後述する。ROM102は、ブートプログラムなどのプログラムを記憶している。RAM103は、CPUs101のワークエリアとして使用される。
フラッシュROM104は、書き換えが可能であり、電源を切ってもデータが消えないという特徴を持つ不揮発性の半導体メモリである。フラッシュROM104は、ソフトウェアプログラムや、データを記憶している。フラッシュROM104の代わりに、磁気ディスクであるHDD(ハードディスクドライブ)にて記憶してもよいが、フラッシュROM104を使用することにより、機械的に動作するHDDに比べて振動に強くすることができる。たとえば、マルチコアプロセッサシステム100で構成する装置に対し、強い振動があった場合でも、フラッシュROM104であればデータが消える可能性を低くすることができる。
ディスプレイ105は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。ディスプレイ105は、たとえば、TFT液晶ディスプレイなどを採用することができる。また、ディスプレイ105は、タッチパネル式で入力する形態でもよい。
I/F106は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワーク107に接続され、このネットワーク107を介して他の装置に接続される。そして、I/F106は、ネットワーク107と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F106には、たとえばモデムやLANアダプタなどを採用することができる。
図2は、マルチコアプロセッサシステム100の各CPUのハードウェア構成とソフトウェア構成を示すブロック図である。マルチコアプロセッサシステム100のハードウェア構成は、CPUs101と、共有メモリ203で構成される。CPUs101は、複数のCPUとしてCPU201−1、CPU201−2、・・・、CPU201−nで構成される。
CPU201−1、CPU201−2、・・・、CPU201−nは、それぞれ、キャッシュメモリ202−1、キャッシュメモリ202−2、・・・、キャッシュメモリ202−nを保持している。各CPUと共有メモリ203は、バス108によってそれぞれ接続されている。以下の記述では、CPU201−1、CPU201−2について記述する。
また、マルチコアプロセッサシステム100のソフトウェア構成として、CPU201−1は、ハイパーバイザ204−1、OS205−1を実行する。CPU201−1は、OS205−1の制御により、ディスパッチャ206を実行する。同様に、CPU201−1は、OS205−1の制御により、ソフトウェア207−1〜ソフトウェア207−mを実行する。同様にCPU201−2も、ハイパーバイザ204−2、OS205−2を実行する。CPU201−1は、OS205−1の制御により、ディスパッチャ206を実行する。また、ハイパーバイザ204−1も、ディスパッチャ206の結果を用いて、本実施の形態での特徴である、タイムスライス補正処理を行う。CPU201−2は、OS205−2の制御により、高優先度ソフトウェア209を実行する。
CPU201−1がソフトウェア207−1〜ソフトウェア207−mを実行する際には、データへのアクセス先が2通りあり、アクセス経路210とアクセス経路211である。同様に、CPU201−2が高優先度ソフトウェア209を実行する際にも、データへのアクセス先が2通りあり、アクセス経路212とアクセス経路213である。また、ハイパーバイザ204−1とハイパーバイザ204−2と、他のCPU上で動作しているハイパーバイザは、ハイパーバイザ間通信214を行う。
CPU201−1、CPU201−2、・・・、CPU201−nは、マルチコアプロセッサシステム100の制御を司る。CPU201−1、CPU201−2、・・・、CPU201−nは、対称的、均一的に処理が割り付けられたSMP(Symmetric
Multi−processing)でもよい。また、CPU201−1、CPU201−2、・・・、CPU201−nは、処理内容によって分担するCPUを決めておくASMP(Asymmetric Multi−Processing)でもよい。ASMPの例として、本実施の形態にかかるマルチコアプロセッサシステム100では、CPU201−1にて決められた時間以内に処理を行う必要があるリアルタイム処理208を割り当てている。
共有メモリ203は、CPU201−1、CPU201−2、・・・、CPU201−nからアクセス可能な記憶領域である。記憶領域とは、具体的には、たとえば、ROM102、RAM103、フラッシュROM104である。また、たとえば、CPU201−1が、ディスプレイ105に画像データの表示を要求する場合、RAM103に含まれるVRAM(Video RAM)にアクセスし、画像データをVRAMに書き込むことになる。したがって、CPU201−1が、ディスプレイ105へアクセスする場合も、共有メモリ203にアクセスすることに含める。
また、たとえば、CPU201−1が、I/F106にアクセスする場合も同様である。たとえば、I/F106の具体例がLANアダプタとして、LANアダプタにあるバッファにアクセスする形式か、RAM103にアクセスし、その後LANアダプタに転送する形式かのどちらかになる。どちらの場合であっても、CPU201−1、CPU201−2からみると共有メモリ203にアクセスしていることとなるため、CPU201−1、CPU201−2が、I/F106へアクセスする場合も、共有メモリ203にアクセスすることに含める。同様に、CPU201−1が、I/F106にアクセスする場合も、I/F106を制御するデバイスドライバが用意する共有の記憶領域にアクセスすることになるため、結果、共有メモリ203にアクセスすることになる。
ハイパーバイザ204−1、ハイパーバイザ204−2は、それぞれCPU201−1、CPU201−2にて動作するプログラムである。ハイパーバイザの機能は、OSとCPUの間にて位置し、OSの監視を行い、OSがハングアップした際にリセットをする他、OSが何もスレッドを実行していない場合に、省電力設定にする。また、ハイパーバイザは、一般のプログラムでは操作できないプロセッサのキャッシュ制御やI/O操作を行うような特殊レジスタを操作する。また、ハイパーバイザは、一般のプログラムでは読み書きできないメモリ上の空間を用いて動作を行う。
OS205−1、OS205−2は、それぞれ、CPU201−1、CPU201−2にて動作するプログラムであり、ハイパーバイザ204−1、ハイパーバイザ204−2上で動作する。たとえば、OS205−1は、次に実行するソフトウェアを決めるスケジューラの機能を有する。
ディスパッチャ206は、現在動作中のソフトウェアに対して、スケジューラによって決定した次のソフトウェアに切り替える機能を有する。具体的には、たとえば、スケジューラは、ソフトウェア207−1からソフトウェア207−2に切り替える場合、CPU201−1は、ソフトウェア207−1のプログラムカウンタ等を含むレジスタ情報を退避する。退避後、CPU201−1は退避されてあったソフトウェア207−2のレジスタ情報を復帰する。復帰後、CPU201−1は、ソフトウェア207−2の処理を前回の切り替えられた時点から継続することができる。
ソフトウェア207−1、・・・、ソフトウェア207−mは、実行コードをCPUが実行することによりある機能を実現する。ソフトウェアは、1つ以上のスレッドで構成される。ソフトウェア207−1、・・・、ソフトウェア207−mは、終了時間に関係なく、処理を実行する。
リアルタイム処理208は、割り込み信号を受信した際に行う処理となる割り込みハンドラである。割り込みにはハードウェア割り込みとソフトウェア割り込みとがあり、たとえば、ハードウェア割り込みでは、通信デバイスがデータの受信を割り込み信号としてCPUに通知する。通知を受けたCPUは、通信デバイスのデータ受信に対応した割り込みハンドラを実行する。具体的な割り込みハンドラの処理内容としては、受信したデータを通信デバイスの記憶領域からRAM103、フラッシュROM104に転送する処理である。割り込み信号を受信したCPUは、割り込み禁止区間でなければ現在のスレッドの処理を退避し、割り込みハンドラを実行する。
高優先度ソフトウェア209は、ソフトウェアのうち高優先度属性が付与されているソフトウェアである。高優先度のソフトウェアは、ディスパッチ頻度が他のソフトウェアよりも高くなるといった特徴を持つ。また、メモリアクセスなどでリソース競合が起きたときに高優先度でアクセス権を獲得できるといった特徴を持つ。
本実施の形態では、ソフトウェア207−1、・・・、ソフトウェア207−mとリアルタイム処理208はCPU201−1にて実行され、高優先度ソフトウェア209はCPU201−2にて実行される。ソフトウェア207−1〜ソフトウェア207−m、高優先度ソフトウェア209の具体例については、図7にて後述する。同様に、リアルタイム処理208の具体例については、図8にて後述する。
アクセス経路210は、CPU201−1がキャッシュメモリ202−1にアクセスする経路である。アクセス経路211は、CPU201−1が共有メモリ203にアクセスする経路である。アクセス経路210とアクセス経路211の違いとして、たとえば、ソフトウェア207−1がアクセスしたいデータがキャッシュメモリ202−1にあればアクセス経路210、なければアクセス経路211となる。アクセス経路212、アクセス経路213も同様で、アクセス経路212は、CPU201−2がキャッシュメモリ202−2にアクセスする経路である。アクセス経路213は、CPU201−2が共有メモリ203にアクセスする経路である。
アクセス競合によるコンテンションは、複数のCPUが共有メモリ203にアクセスすることで発生する。たとえば、CPU201−1のアクセス経路がアクセス経路211、CPU201−2のアクセス経路がアクセス経路213であるときに、共有メモリ203へのアクセス競合によるコンテンションが発生する。
コンテンションが発生すると、ソフトウェアの処理が遅延することになり、ソフトウェアの処理内に存在する割り込み禁止区間も初期状態よりも長くなってしまう。割り込み禁止区間時に割り込み信号がCPUに通知されても、割り込みハンドラであるリアルタイム処理208を実行できないため、リアルタイム処理208の応答性能の保証を行えない状態となる。コンテンション状態となり、リアルタイム処理208の応答時間の保証が行えない状態を後述する図5にて示す。
(マルチコアプロセッサシステム100の機能的構成)
次に、マルチコアプロセッサシステム100の機能的構成について説明する。図3は、マルチコアプロセッサシステム100の機能的構成を示すブロック図である。マルチコアプロセッサシステム100は、検出部303と、特定部304と、補正部305と、設定通知部306と、判断部307と、切替部308と、設定部309と、を含む構成である。この制御部となる機能(検出部303〜設定部309)は、具体的には、たとえば、図1に示したROM102、RAM103、フラッシュROM104などの記憶装置に記憶されたプログラムをCPUs101が実行することにより、その機能を実現する。または、I/F106を経由して他のCPUが実行することにより、その機能を実現してもよい。
また、マルチコアプロセッサシステム100は、ソフトウェアの優先度を判断するために、ソフトウェアテーブル310にアクセスする。ソフトウェアテーブル310は共有メモリ203に格納されており、たとえばCPU201−1がアクセスする。
また、CPU201−1、CPU201−2、・・・、CPU201−nは、ハイパーバイザとOS/ソフトウェアを実行する。さらに、一点破線で分割された領域のうち、領域301に図示している検出部303〜判断部307は、CPU201−1がハイパーバイザ204−1の機能の一部として実行することにより実現する。同様に、領域302内に図示している切替部308、設定部309は、CPU201−1が、OS205−1の機能の一部として実行することにより実現する。また、図示していないが、CPU201−1以外のコアにも、検出部303〜設定部309の機能を有している。
検出部303は、複数のコアのうち、任意のスレッドが割り当てられたコアを検出する機能を有する。複数のコアとは、CPU201−1〜CPU201−nである。具体的には、たとえば、検出部303は、CPU201−2に高優先度ソフトウェア209が割り当てられたことをハイパーバイザ間通信214によって検出する。なお、検出されたコアの情報は、キャッシュメモリ202−1、または、CPU201−1の汎用レジスタなどの記憶領域に記憶される。
特定部304は、複数のコアのうち、切替部308によって所定の切り替え時間を越えて複数のスレッドの切り替えを行ったコアを特定する機能を有する。所定の切り替え時間とは、タイムスライスのことであり、スレッドを切り替える切替時間Δtのことである。複数のスレッドとは、CPU201−1上で実行されるソフトウェア207−1〜ソフトウェア207−mである。
また、特定部304は、検出部303によってコアが検出されたことをトリガーとしてコアを特定してもよい。また、特定部304は、検出部303によってコアが検出されたことをトリガーとし、切替部308によって切り替えられた後のスレッドの優先度より検出部303によって検出されたコアに割り当てられたスレッドの優先度が高い場合に、コアを特定してもよい。
具体的には、たとえば、特定部304は、切替部308によってCPU201−1に割り当てるソフトウェアをソフトウェア207−1〜ソフトウェア207−mに切り替えた場合を想定する。このとき、ソフトウェア207−1に割り当てられた時間ΔCがΔtを越えた場合に、所定の切り替え時間を越えて複数のスレッドの切り替えを行ったCPUとして特定する。
また、ソフトウェア207−1に割り当てられた時間ΔCの取得方法は、ソフトウェア207−1が割り当てられた時点でのクロックカウンタと、ソフトウェア207−2が割り当てられた時点でのクロックカウンタの差分から取得することができる。なお、特定されたコアの情報は、キャッシュメモリ202−1、または、CPU201−1の汎用レジスタなどの記憶領域に記憶される。
補正部305は、特定部304によって特定されたコアにおいて複数のスレッドの切り替えを行った実切り替え時間と所定の切り替え時間との差分に基づいて、所定の切り替え時間が短縮するように補正する機能を有する。また、補正部305は、差分が所定の割り込み禁止時間を越えた場合に、差分に基づいて所定の切り替え時間が短縮するように補正してもよい。所定の割り込み禁止時間とは、実装規約で設定される禁止区間の最長パス時間lck(Locked Critical Kidnapping−period)である。lckの詳細については、図4にて後述する。
差分に基づいて、短縮するように補正された切り替え時間の算出式の適用例としては、下記(1)式を適用してもよい。
補正された切り替え時間=所定の切り替え時間−(実切り替え時間−所定の切り替え時間) …(1)
(1)式では、コンテンション中となり遅延した時間をスレッド切り替えの短縮分に設定することになる。遅延した時間分が割り込みイベントの検出間隔の減少となり、割り込みイベントの検出頻度が増加した結果、リアルタイム処理の応答性能の保証ができるようになる。また、算出式は、差分が所定の割り込み禁止時間を越えた場合に、下記(2)式を適用してもよい。
補正された切り替え時間=所定の切り替え時間−((実切り替え時間−所定の切り替え時間)−所定の割り込み禁止時間) …(2)
(2)式では、遅延時間が所定の割り込み禁止時間を越えなければ、実装規約によって、リアルタイム処理の応答性能を保証できることから、補正された切り替え時間の減少分を(1)式よりも抑えている。スレッドの切り替え時間を小さくしすぎると、スレッドのディスパッチオーバーヘッドによる性能劣化を伴うため、リアルタイム処理の応答性能を満たすことが可能ならば、(2)式を使用してもよい。算出式は、(1)式、(2)式に限らず、補正された切り替え時間が減少すればよい。
具体的には、たとえば、実切り替え時間が13[マイクロ秒]であり、所定の切り替え時間が10[マイクロ秒]であった場合、差分は3[マイクロ秒]となり、補正された切り替え時間は(1)式から、7[マイクロ秒]となる。なお、補正された切り替え時間は、キャッシュメモリ202−1、または、CPU201−1の汎用レジスタなどの記憶領域に記憶される。
設定通知部306は、補正部305によって補正された切り替え時間をOSに通知する機能を有する。また、設定通知部306は、判断部307によって、アクセス競合中でないと判断された場合、補正された切り替え時間を補正前の切り替え時間に設定するように通知してもよい。また、通知内容の具体的として、設定通知部306は、(実切り替え時間−所定の切り替え時間)である差分を通知してもよい。また、判断部307によってアクセス競合中でないと判断された場合に、設定通知部306は、補正前の切り替え時間を通知してもよい。
具体的には、たとえば、設定通知部306は、補正部305によって補正された切り替え時間7[マイクロ秒]をOSに送信する。なお、通知された切り替え時間は、キャッシュメモリ202−1、または、CPU201−1の汎用レジスタなどの記憶領域に記憶される。
判断部307は、特定部304によって特定されたコアがアクセスするメモリに関してアクセス競合中か否かを判断する機能を有する。具体的には、たとえば、CPU201−1は、一定期間のCPUが発行した発行命令数とクロックカウンタの記録を元にクロックカウンタ/発行命令数を算出する。CPU201−1は、算出された値が一定値より大きい場合にアクセス競合中であると判断する。
具体的には、たとえば、(クロックカウンタ/発行命令数)>1000となった場合、1つの命令に1000クロック消費していることになりアクセス競合を発生していると判断する。なお、判断結果は、キャッシュメモリ202−1、または、CPU201−1の汎用レジスタなどの記憶領域に記憶される。
切替部308は、複数のコアのおのおのに割り当てた複数のスレッドを所定の切り替え時間で切り替える機能を有する。具体的には、たとえば、切替部308は、ソフトウェア207−1〜ソフトウェア207−mを所定の切り替え時間Δtで切り替える。また、設定部309によって切り替え時間がΔtからΔt’に短縮した場合、切替部308は、Δt’にてソフトウェア207−1〜ソフトウェア207−mを切り替える。なお、切り替えたソフトウェアの情報は、共有メモリ203などの記憶領域に記憶されてもよい。
設定部309は、設定通知部306によって通知された、補正された切り替え時間をスレッドの切り替え時間に設定する機能を有する。また、設定部309は、設定通知部306によって補正前の切り替え時間が通知されてきた場合に、補正前となる所定の切り替え時間に設定してもよい。
具体的には、たとえば、設定通知部306によって補正された切り替え時間Δt’が通知されてきた場合、設定部309は、スレッドの切り替え時間として補正された切り替え時間Δt’を設定する。なお、設定されたスレッドの切り替え時間は、共有メモリ203などの記憶領域に記憶されてもよい。
図4は、単一のCPUで実行している場合のソフトウェアのディスパッチ状態を示す説明図である。図4では、マルチコアプロセッサシステム100の中でCPU201−1が実行中であり、CPU201−1は、ソフトウェア207−1〜ソフトウェア207−mを実行する。CPU201−1は、スレッドの切り替え時間Δtでソフトウェア207−1〜ソフトウェア207−mを順次実行しつつ、リアルタイム割り込みを受信したら割込みハンドラとしてリアルタイム処理208を実行する。
また、マルチコアプロセッサシステム100がリアルタイム処理の応答性能を保証するには、以下の2つの時間以内にリアルタイム処理を行う必要がある。1つ目の条件として、割り込みイベントが発生後、CPU201−1はリアルタイム割り込み間隔以内に割り込みイベントに対応したリアルタイム処理を実行する必要がある。2つ目の条件として、CPU201−1はリアルタイム応答時間内に少なくとも1回リアルタイム処理を行う必要がある。割り込みイベントとは、割り込み信号を受信したイベントである。また、割り込みイベントが発生しても、CPUが割り込み禁止区間であるときはすぐにリアルタイム処理を実行することができず、割り込み禁止区間が終了した後に、CPUはリアルタイム処理が行えるようになる。
具体的に、図4の状態では、割り込みイベントの発生から現在時刻が割り込みイベントを拾うタイミング401となりリアルタイム処理208を行うまでの時間402が、リアルタイム割り込み間隔以内である必要がある。さらに、リアルタイム処理208を行う間隔となる時間403が、リアルタイム応答時間である必要がある。一般的にリアルタイム割り込み間隔はマイクロ秒オーダであり、リアルタイム応答時間は数ミリ秒である。数値例としては、リアルタイム割り込み間隔=10[マイクロ秒]、リアルタイム応答時間=10[ミリ秒]である。
また、ソフトウェア207−1〜ソフトウェア207−mの処理の中には、割り込み禁止区間が埋め込まれている。割込み禁止区間を埋め込む理由としては、たとえば、意図的なキャッシュ操作やレジスタの退避復元処理などは、他の処理が割り込まない状態で連続して処理を行う必要があるためである。割り込み禁止区間中のCPUは、コンテキストスイッチなどのプリエンプションが実行できなくなる。割り込み禁止区間の設定については、システム設計の段階で、実装規約という形で禁止区間の最長パス時間lckを設定し、実装者は、割り込み禁止区間がlckを越えないようにソフトウェアの実装を行う。
割り込み禁止区間がlckを越えない限り、割り込み禁止区間にて割り込みが発生したとしても、リアルタイム割り込み間隔、および、リアルタイム応答時間内でのリアルタイム処理を保証するように実装者はlckを設定する。したがって、単一のCPUで実行している場合には、割り込み禁止区間中に割り込みイベントが発生しても、リアルタイム処理の応答性能を保証することができる。
図5は、従来例におけるマルチコアプロセッサシステム100にて、コンテンション状態によるリアルタイム応答の遅延を示す説明図である。図5では、マルチコアプロセッサシステム100の中でCPU201−1とCPU201−2が実行中であり、CPU201−1は、ソフトウェア207−1〜ソフトウェア207−mを実行する。CPU201−1は、スレッドの切り替え時間Δtでソフトウェア207−1〜ソフトウェア207−mを順次実行しつつ、リアルタイム割り込みを受信したら割込みハンドラとしてリアルタイム処理208を実行する。CPU201−2は、高優先度ソフトウェア209を実行する。
CPU201−2にて、高優先度ソフトウェア209を実行しているため、マルチコアプロセッサシステム100は、各種リソースを高優先度ソフトウェア209に優先的に割り当てる。具体的には、たとえば、CPU201−1とCPU201−2が同時に共有メモリ203にアクセスした場合を想定する。このときマルチコアプロセッサシステム100は、高優先度ソフトウェア209を実行しているCPU201−2が優先的に共有メモリ203にアクセスするように制御する。
したがって、CPU201−1は、CPU201−2のアクセス完了を待つことになり、アクセス競合におけるコンテンション状態となる。コンテンション状態となったCPU201−1は、処理が遅延することになる。処理が遅延すると、割り込み禁止区間も遅延することになる。遅延した結果、割り込み禁止区間がlckを越えた場合に、リアルタイム処理の応答性能を保証することができなくなる。
図5の例では、割り込みイベントが発生し、現在時刻が割り込みイベントを拾うタイミング501となった際、CPU201−1は割り込み禁止区間となっている。したがって、CPU201−1は、リアルタイム処理208をすぐに実行できず、割り込み禁止区間の終了後にリアルタイム処理208を実行する。
結果、割り込みイベント発生からリアルタイム処理208実行までの時間502がリアルタイム割り込み間隔を越えた場合に、マルチコアプロセッサシステム100はリアルタイム処理の応答性能を保証できなくなる。また、リアルタイム処理208を行う間隔となる時間503がリアルタイム応答時間を越えた場合にも、マルチコアプロセッサシステム100はリアルタイム処理の応答性能を保証できなくなる。
図6は、本実施の形態におけるマルチコアプロセッサシステム100にて、タイムスライスを補正した後の状態を示す説明図である。図6では、ハードウェアとソフトウェアの実行状態は図5と等しいが、CPU201−1にて、ΔtからΔt’へと、スレッドの切り替え時間が短縮するように補正されている。
スレッドの切り替え時間が短縮された結果、マルチコアプロセッサシステム100がリアルタイム処理の応答性能を保証しやすくなる。応答性能の保証を満たすには、図4にて前述したように、リアルタイム割り込み間隔以内にリアルタイム処理を行うことと、リアルタイム応答時間内にリアルタイム処理を行うことである。
リアルタイム割り込み間隔以内にリアルタイム処理を行えるようになる理由は、スレッドの切り替え時間が短縮することにより、割り込みイベントを検出する間隔が短くなり、割り込みイベントを検出する頻度があがるためである。したがって割り込みイベントの発生から、現在時刻が割り込みイベントを拾うタイミング601となり、リアルタイム処理208を実行するまでの時間602が短くなり、リアルタイム割り込み間隔より小さくすることができる。
リアルタイム応答時間以内にリアルタイム処理を行えるようになる理由は、スレッドの切り替え時間が短縮することにより、CPU内で実行しているスレッドの処理回数が増えるためである。具体的には、たとえば、スレッドを200個実行しているCPUが存在し、スレッド1回の処理時間が10[マイクロ秒]であったと想定する。また、リアルタイム処理を実行する契機となる割り込みイベントは、200個のスレッドのうちの特定のスレッドの実行によって発生するものとする。
この場合、スレッドの優先度がすべて等しい場合、2[ミリ秒]に1回は、どのスレッドも処理を行えることになる。スレッド1回の処理時間がコンテンション状態により長くなった場合に、スレッドの切り替え時間が短縮することにより、特定のスレッドの処理が行われる回数が増えることになる。結果、リアルタイム処理208を行う間隔となる時間603はリアルタイム応答時間より小さくすることができる。
図7は、ソフトウェアテーブル310の記憶内容の一例を示す説明図である。ソフトウェアテーブル310はマルチコアプロセッサシステム100にて実行されるソフトウェアの一覧を格納する。ソフトウェアテーブル310は、ソフトウェア名称と、優先度という2つのフィールドで構成する。
ソフトウェア名称フィールドは、ソフトウェアの名称を記述している。実際には、処理内容を記述したプログラムがROM102、RAM103、フラッシュROM104のいずれかに存在し、たとえば、CPU201−1は、プログラムをロードし、スレッドとして実行する。優先度フィールドは、対応するソフトウェアを実行する際の優先度を設定している。優先度が高いソフトウェアを検出すると、マルチコアプロセッサシステム100は、バス108のアクセス権などを優先度が高いソフトウェアに優先的に渡す。
具体的には、たとえば、“動画像再生ソフトウェア”は、ユーザによって起動され、フォアグラウンドで実行している場合には、高優先度となる。また、“Webブラウザ”は低優先度となる。また、別のパターンとして、カメラユニットを持つマルチコアプロセッサシステム100が連続して撮影を行うことを想定する。連続して撮影を行うため、カメラの画像を保存する“カメラ画像保存ソフトウェア”は高優先度となる。また、“カメラ撮影ソフトウェア”は低優先度となる。
図8は、リアルタイム処理の一例を示す説明図である。“通信割り込み処理”は、通信を司るハードウェア、たとえばI/F106からの割り込みイベントに対して実行されるリアルタイム処理である。また、通信は、たとえば“Webブラウザ”等のソフトウェアによって引き起こされる。I/F106はデータを受信した場合、データのプロトコルによっては受信したという応答通知を一定時間内にデータを送信した機器に送信する必要がある。一定時間内に処理を行わないと、データを送信した機器はタイムアウトと判断するため、マルチコアプロセッサシステム100は、一定時間内に処理を行う必要がある。
また、“カメラユニット割り込み処理”は、カメラユニットにより実行されるリアルタイム処理である。カメラユニット割り込み処理は“カメラ撮影ソフトウェア”によって画像データを撮影し、バッファに格納する。CPU201−1が、格納された映像データをバッファからたとえば共有メモリ203に転送しないと、データオーバーフローが発生し、画像データをとりこぼすことになる。
前述した“通信割り込み処理”、“カメラユニット割り込み処理”は、シングルコアでタスクスイッチしながら動作するシステムでは問題なく動作する。しかし、従来例におけるマルチコアプロセッサシステム100では、リアルタイム処理を1つのCPUが実行し、別のCPUが高優先度ソフトウェアを実行している場合、アクセス競合によるコンテンション状態となり、リアルタイム処理の応答性能を保証できない。
図9は、マルチコアプロセッサシステム100でのスレッド切り替えを含むタイムスライス設定処理を示すフローチャートである。CPUs101は、スレッドを次々と切り替えている。初期状態として、CPU201−1は、OS205−1によって、スレッドの切り替え時間をΔtに設定する(ステップS901)。図示していないが、CPU201−2も同様にスレッドの切り替え時間をΔtに設定する。
次に、CPU201−1は、ハイパーバイザ204−1を起動する(ステップS902)。ハイパーバイザ204−1は一定周期で起動される。同様に、CPU201−2も、ハイパーバイザ204−2を起動する(ステップS903)。スレッドの切り替え時間が経過した後に、CPU201−1は、OS205−1によってスレッドを切り替える(ステップS904)。図示していないが、CPU201−2も同様にスレッドを切り替える。
スレッドを切り替えると、CPU201−1は、ハイパーバイザ204−1の機能によって、スレッド起動を検出する(ステップS905)。また、CPU201−2では、高優先度ソフトウェア209が起動されることを想定する。高優先度ソフトウェア209の起動後、CPU201−2は、ハイパーバイザ204−2の機能によって、高優先度スレッド起動を検出する(ステップS906)。検出後、CPU201−2は、ハイパーバイザ間通信によって、高優先度スレッドの起動を検出したことをハイパーバイザ204−1を含むすべてのハイパーバイザに通知する(ステップS907)。CPU201−1も同様に、ハイパーバイザ間通信によって、スレッドの起動を検出したことをハイパーバイザ204−2に通知する(ステップS908)。
通知後、CPU201−1は、ハイパーバイザ204−1によってタイムスライス補正処理を実行する(ステップS909)。タイムスライス補正処理の詳細は、図10にて後述する。ここで、CPU201−1は、CPU201−1以外のCPUにて高優先度スレッドが起動しているため、コンテンション状態となる可能性がある。コンテンション状態となっていた場合、CPU201−1は、タイムスライス補正処理内で、OS205−1に差分τを通知する。タイムスライス補正処理後、CPU201−1は、ハイパーバイザ204−1によって通常のハイパーバイザ処理を実行し(ステップS911)、ハイパーバイザ204−1を実行終了する(ステップS913)。実行終了後、CPU201−1は、一定周期後にステップS902の処理に移行する。
CPU201−2も同様に、ハイパーバイザ204−2によってタイムスライス補正処理を実行する(ステップS910)。CPU201−2は、CPU201−2以外のCPUにて高優先度スレッドが起動していないため、コンテンション状態とはならず、OS205−2に通知は行わない。タイムスライス補正処理後、CPU201−2は、ハイパーバイザ204−2によって通常のハイパーバイザ処理を実行し(ステップS912)、ハイパーバイザ204−2を実行終了する(ステップS914)。実行終了後、CPU201−2は、一定周期後にステップS903の処理に移行する。
CPU201−1がハイパーバイザ204−1によって差分τを通知後、CPU201−1は、OS・ハイパーバイザ間通信によって差分τを受信する(ステップS915)。続けて、CPU201−1は、補正値Δt’=Δt−τを算出する(ステップS916)。ステップS916での算出式は、(1)式を適用しているが、(2)式を適用してもよい。算出後、CPU201−1は、OS205−1によってスレッドの切り替え時間を補正値Δt’に設定する(ステップS917)。Δt’時間経過後、CPU201−1は、ステップS904の処理に移行する。
図10は、ハイパーバイザによるタイムスライス補正処理を示すフローチャートである。タイムスライス補正処理は、CPUs101に属するどのCPUでも実行されるが、図10では、CPU201−1にて実行される状態を説明する。また、タイムスライス補正処理は、ハイパーバイザの機能によって実行される。
CPU201−1は、別CPUでスレッドが起動されたかを判断する(ステップS1001)。スレッド起動の検出としては、CPU201−1は、タイムスライス補正処理の前に行われたステップS908の処理であるハイパーバイザ間通信によって検出する。別CPUでスレッドが起動されたと判断された場合(ステップS1001:Yes)、CPU201−1は続けて、別CPUで起動されたスレッドの優先度が、本CPUのスレッドの優先度より高いかを判断する(ステップS1002)。本CPUとは、実行主体となるCPUのことで、図10の説明ではCPU201−1に相当する。
別CPUで起動されたスレッドの優先度が本CPUのスレッドより高い場合(ステップS1002:Yes)、CPU201−1は、クロックカウンタから取得した処理時間ΔCを取得する(ステップS1003)。ΔCを取得後、所定のスレッド切り替え時間Δtが処理時間ΔCより大きいかを判断する(ステップS1004)。ΔtがΔC以下の場合(ステップS1004:No)、CPU201−1は、差分τ=ΔC−Δtを算出する(ステップS1006)。なお、ステップS1004:Noとなった場合が、CPU201−1にてアクセス競合によるコンテンション状態となった状態である。
別CPUでスレッドが起動していない場合(ステップS1001:No)、CPU201−1は、コンテンション状態が解消したかを判断する(ステップS1005)。コンテンション状態が解消した場合(ステップS1005:Yes)、CPU201−1は、差分τに0を設定する(ステップS1008)。アクセス競合によるコンテンション状態が解消したか否かの判断方法として、CPUは、一定期間のCPUの発行命令数とクロックカウンタを記録しておく。続けて、CPUはクロックカウンタ/発行命令数を算出し、算出された値が一定値より大きい場合にコンテンション状態が継続中であると判断し、算出された値が一定値以下の場合にコンテンション状態が解消したと判断する。
別CPUで起動されたスレッドの優先度が本CPUのスレッドより高くない場合、または、ΔtがΔCより大きい場合(ステップS1002:No、ステップS1004:Yes)、CPU201−1は、ステップS1005の処理に移行する。
ステップS1006の処理後、CPU201−1は、算出した差分τが割り込み禁止区間の最長パス時間lckより大きいかを判断する(ステップS1007)。差分τがlckより大きい場合(ステップS1007:Yes)、またはステップS1007の処理終了後、CPU201−1は、OSに差分τを通知する(ステップS1009)。差分τを通知後、CPU201−1はタイムスライス補正処理を終了する。また、差分τがlck以下である場合(ステップS1007:No)、またはコンテンション状態が解消していない場合(ステップS1005:No)、CPU201−1は、タイムスライス補正処理を終了する。
本実施の形態におけるマルチコアプロセッサシステム100の性能向上を測定するには、たとえば、プロファイラ、または、デバッガがあれば動作ログを解析して判別してもよい。また、プロファイラかデバッガがない場合、ソフトウェアを個別実行させた場合と、同時実行させた場合の実行性能を解析することにより判別してもよい。
以上説明したように、マルチコアプロセッサシステム、スレッド切り替え制御方法、およびスレッド切り替え制御プログラムによれば、所定の切り替え時間を越えて複数のスレッドの切り替えを行ったCPUを特定する。特定後、マルチコアプロセッサシステムは、スレッドの切り替えを行った実切り替え時間と所定の切り替え時間の差分によってスレッドの切り替え時間を設定する。これにより、割り込みイベントの検出間隔が減少する分検出頻度が増加するため、リアルタイム処理の応答性能を保証できる。
また、マルチコアプロセッサシステムは、任意のスレッドが割り当てられたCPUの検出をトリガーにして、所定の切り替え時間を越えて複数のスレッドの切り替えを行ったCPUを特定してもよい。アクセス競合によるコンテンションは、複数のCPUでスレッドが割り当てられたときに発生するため、スレッドの割り当てをトリガーにすることにより、タイムスライスの補正を行う最もよいタイミングで実行することができる。
また、マルチコアプロセッサシステムは、任意のスレッドが割り当てられたCPUの検出をトリガーにする。その後、マルチコアプロセッサシステムは、切り替えを行ったCPUの切り替え後のスレッドの優先度より、検出されたCPUに割り当てられたスレッドの優先度が高い場合、所定の切り替え時間を越えて複数のスレッドの切り替えを行ったCPUを特定してもよい。
アクセス競合によるコンテンションは、複数のCPUでスレッドが割り当てられており、さらに、一つのCPUで高優先度のスレッドが割り当てられ、もう一方のCPUでは低優先度のスレッドが割り当てられた場合に発生する。したがって、切り替えを行ったCPUの切り替え後のスレッドの優先度より、検出されたCPUに割り当てられたスレッドの優先度が高いかを確認することにより、タイムスライスの補正を行う対象のCPUを最小限に絞ることができる。
また、マルチコアプロセッサシステムは、実切り替え時間と所定の切り替え時間との差分が所定の割り込み禁止時間を越えた場合に、所定の切り替え時間が短縮するように補正してもよい。マルチコアプロセッサシステムは、実切り替え時間と所定の切り替え時間との差分が所定の割り込み禁止時間を越えない限り、リアルタイム処理の応答性能を保証するように設計されている。したがって、差分が所定の割り込み禁止時間を越えた場合にタイムスライスの補正を行うことにより、リアルタイム処理の応答性能が破たんする可能性があるときに絞って、タイムスライスの補正を行うことができる。
また、マルチコアプロセッサシステムは、タイムスライスを補正したCPUに対して、アクセス競合中でない場合に、補正された切り替え時間を補正前の切り替え時間に設定してもよい。これにより、実切り替え時間を取得し所定の切り替え時間との比較を行わなくとも、アクセス競合か否かを判断することで、タイムスライスの補正を解除することができる。
なお、本実施の形態で説明したスレッド切り替え制御方法は、あらかじめ用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本スレッド切り替え制御プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本スレッド切り替え制御プログラムは、インターネット等のネットワークを介して配布してもよい。
108 バス
201−1 CPU
201−2 CPU
207−1〜207−m ソフトウェア
209 高優先度ソフトウェア
301 領域
302 領域
303 検出部
304 特定部
305 補正部
306 設定通知部
307 判断部
308 切替部
309 設定部
310 ソフトウェアテーブル

Claims (7)

  1. 複数のコアのおのおのに割り当てた複数のスレッドを所定の切り替え時間で切り替えるか、または前記所定の切り替え時間が経過した際に割り込み禁止区間であれば前記割り込み禁止区間が終了した後に切り替える切替手段と、
    前記複数のコアのうち、前記切替手段によって前記所定の切り替え時間を越えて前記複数のスレッドの切り替えを行ったコアを特定する特定手段と、
    前記特定手段によって特定されたコアにおいて前記複数のスレッドの切り替えを行った実切り替え時間と前記所定の切り替え時間との差分に基づいて、前記所定の切り替え時間が短縮するように補正する補正手段と、
    前記補正手段によって補正された切り替え時間を前記所定の切り替え時間に設定する設定手段と、
    を備えることを特徴とするマルチコアプロセッサシステム。
  2. 前記複数のコアのうち、任意のスレッドが割り当てられたコアを検出する検出手段をさらに備え、
    前記特定手段は、
    前記検出手段によって検出された場合、前記複数のコアのうち、前記検出手段によって検出されたコアとは別であり、前記切替手段によって前記所定の切り替え時間を越えて前記複数のスレッドの切り替えを行ったコアを特定することを特徴とする請求項1に記載のマルチコアプロセッサシステム。
  3. 前記特定手段は、
    前記検出手段によって検出され、前記複数のコアのうち、前記検出手段によって検出されたコアとは別であり、前記検出手段によって検出されたコアに割り当てられた前記任意のスレッドの優先度より低い優先度となるスレッドを前記所定の切り替え時間を越えて切り替えたコアを特定することを特徴とする請求項2に記載のマルチコアプロセッサシステム。
  4. 前記補正手段は、
    前記特定手段によって特定されたコアにおいて前記複数のスレッドの切り替えを行った実切り替え時間と前記所定の切り替え時間との差分が所定の割り込み禁止時間を越えた場合に、前記差分に基づいて、前記所定の切り替え時間が短縮するように補正することを特徴とする請求項3に記載のマルチコアプロセッサシステム。
  5. 前記特定手段によって特定されたコアがアクセスするメモリに関してアクセス競合中か否かを判断する判断手段をさらに備え、
    前記設定手段は、
    前記判断手段によってアクセス競合中でないと判断された場合、前記補正された切り替え時間を補正前の切り替え時間に設定することを特徴とする請求項4に記載のマルチコアプロセッサシステム。
  6. 複数のコアのうち、当該コアに割り当てた複数のスレッドを所定の切り替え時間で切り替えた後か、または前記所定の切り替え時間が経過した際に割り込み禁止区間であれば前記割り込み禁止区間が終了した後に切り替えた後に前記所定の切り替え時間を越えて前記複数のスレッドの切り替えを行ったコアを特定する特定工程と、
    前記特定工程によって特定されたコアにおいて前記複数のスレッドの切り替えを行った実切り替え時間と前記所定の切り替え時間との差分に基づいて、前記所定の切り替え時間が短縮するように補正する補正工程と、
    前記補正工程によって補正された切り替え時間を通知する通知工程と、
    を前記コアが実行することを特徴とするスレッド切り替え制御方法。
  7. 複数のコアのうち、当該コアに割り当てた複数のスレッドを所定の切り替え時間で切り替えた後か、または前記所定の切り替え時間が経過した際に割り込み禁止区間であれば前記割り込み禁止区間が終了した後に切り替えた後に前記所定の切り替え時間を越えて前記複数のスレッドの切り替えを行ったコアを特定する特定工程と、
    前記特定工程によって特定されたコアにおいて前記複数のスレッドの切り替えを行った実切り替え時間と前記所定の切り替え時間との差分に基づいて、前記所定の切り替え時間が短縮するように補正する補正工程と、
    前記補正工程によって補正された切り替え時間を通知する通知工程と、
    を前記コアに実行させることを特徴とするスレッド切り替え制御プログラム。
JP2012505398A 2010-03-18 2010-03-18 マルチコアプロセッサシステム、スレッド切り替え制御方法、およびスレッド切り替え制御プログラム Expired - Fee Related JP5376042B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2010/054708 WO2011114495A1 (ja) 2010-03-18 2010-03-18 マルチコアプロセッサシステム、スレッド切り替え制御方法、およびスレッド切り替え制御プログラム

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2013200455A Division JP5582241B2 (ja) 2013-09-26 2013-09-26 マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラム

Publications (2)

Publication Number Publication Date
JPWO2011114495A1 JPWO2011114495A1 (ja) 2013-06-27
JP5376042B2 true JP5376042B2 (ja) 2013-12-25

Family

ID=44648623

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012505398A Expired - Fee Related JP5376042B2 (ja) 2010-03-18 2010-03-18 マルチコアプロセッサシステム、スレッド切り替え制御方法、およびスレッド切り替え制御プログラム

Country Status (3)

Country Link
US (1) US20130007758A1 (ja)
JP (1) JP5376042B2 (ja)
WO (1) WO2011114495A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016200230A1 (en) * 2015-06-11 2016-12-15 Lg Electronics Inc. Method and apparatus for transmitting system information for celluar internet-of-things in wireless communication system
WO2018227614A1 (en) * 2017-06-16 2018-12-20 Qualcomm Incorporated Channel state information feedback for flexible uplink control signaling

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6211941A (ja) * 1985-07-10 1987-01-20 Nec Corp 多重処理制御方式
JPH0449427A (ja) * 1990-06-19 1992-02-18 Fujitsu Ltd 周期起動制御方式
JPH05158717A (ja) * 1991-12-03 1993-06-25 Nec Corp ディスパッチング制御装置
JPH07281909A (ja) * 1994-04-05 1995-10-27 Mitsubishi Heavy Ind Ltd リアルタイム・タスク周期実行管理システム
JP2002259139A (ja) * 2001-03-05 2002-09-13 Denso Corp マイクロコンピュータ、プログラム及び記録媒体
JP2008305351A (ja) * 2007-06-11 2008-12-18 Renesas Technology Corp ディスパッチ装置

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5826081A (en) * 1996-05-06 1998-10-20 Sun Microsystems, Inc. Real time thread dispatcher for multiprocessor applications
US6567839B1 (en) * 1997-10-23 2003-05-20 International Business Machines Corporation Thread switch control in a multithreaded processor system
US6076157A (en) * 1997-10-23 2000-06-13 International Business Machines Corporation Method and apparatus to force a thread switch in a multithreaded processor
US6018759A (en) * 1997-12-22 2000-01-25 International Business Machines Corporation Thread switch tuning tool for optimal performance in a computer processor
US6542921B1 (en) * 1999-07-08 2003-04-01 Intel Corporation Method and apparatus for controlling the processing priority between multiple threads in a multithreaded processor
US6834386B1 (en) * 1999-07-16 2004-12-21 Microsoft Corporation Method and system for regulating background tasks using performance measurements
US7234143B2 (en) * 2002-06-20 2007-06-19 Hewlett-Packard Development Company, L.P. Spin-yielding in multi-threaded systems
AU2003300948A1 (en) * 2002-12-16 2004-07-22 Globespanvirata Incorporated System and method for scheduling thread execution
US8484643B2 (en) * 2003-03-31 2013-07-09 Fujitsu Limited CPU usage time counting method and job control system using this CPU usage time
US7594234B1 (en) * 2004-06-04 2009-09-22 Sun Microsystems, Inc. Adaptive spin-then-block mutual exclusion in multi-threaded processing
US9753754B2 (en) * 2004-12-22 2017-09-05 Microsoft Technology Licensing, Llc Enforcing deterministic execution of threads of guest operating systems running in a virtual machine hosted on a multiprocessor machine
JP2007026095A (ja) * 2005-07-15 2007-02-01 Matsushita Electric Ind Co Ltd 並列演算装置
JP4580845B2 (ja) * 2005-08-24 2010-11-17 パナソニック株式会社 タスク実行装置
US7370331B2 (en) * 2005-09-08 2008-05-06 International Business Machines Corporation Time slicing in a shared partition
JP2007133723A (ja) * 2005-11-11 2007-05-31 Hitachi Ltd マルチプロセッサ、タスクスケジューリング方法、及びコンパイラ
US7865895B2 (en) * 2006-05-18 2011-01-04 International Business Machines Corporation Heuristic based affinity dispatching for shared processor partition dispatching
US7844970B2 (en) * 2006-08-22 2010-11-30 International Business Machines Corporation Method and apparatus to control priority preemption of tasks
US8069444B2 (en) * 2006-08-29 2011-11-29 Oracle America, Inc. Method and apparatus for achieving fair cache sharing on multi-threaded chip multiprocessors
US7673113B2 (en) * 2006-12-29 2010-03-02 Intel Corporation Method for dynamic load balancing on partitioned systems
US20090031314A1 (en) * 2007-07-25 2009-01-29 Microsoft Corporation Fairness in memory systems
US8584138B2 (en) * 2007-07-30 2013-11-12 Hewlett-Packard Development Company, L.P. Direct switching of software threads by selectively bypassing run queue based on selection criteria
US8055822B2 (en) * 2007-08-21 2011-11-08 International Business Machines Corporation Multicore processor having storage for core-specific operational data
US20090089792A1 (en) * 2007-09-27 2009-04-02 Sun Microsystems, Inc. Method and system for managing thermal asymmetries in a multi-core processor
US8117618B2 (en) * 2007-10-12 2012-02-14 Freescale Semiconductor, Inc. Forward progress mechanism for a multithreaded processor
US8245236B2 (en) * 2008-02-27 2012-08-14 International Business Machines Corporation Lock based moving of threads in a shared processor partitioning environment
US8166480B2 (en) * 2008-07-29 2012-04-24 International Business Machines Corporation Reducing lock contention by adding a time slice to an active thread holding a lock
US9244732B2 (en) * 2009-08-28 2016-01-26 Vmware, Inc. Compensating threads for microarchitectural resource contentions by prioritizing scheduling and execution
US8904399B2 (en) * 2010-03-15 2014-12-02 Qualcomm Incorporated System and method of executing threads at a processor
KR101699770B1 (ko) * 2010-09-06 2017-02-13 삼성전자주식회사 가상화 시스템 및 그 가상화 시스템에서 자원 할당 방법

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6211941A (ja) * 1985-07-10 1987-01-20 Nec Corp 多重処理制御方式
JPH0449427A (ja) * 1990-06-19 1992-02-18 Fujitsu Ltd 周期起動制御方式
JPH05158717A (ja) * 1991-12-03 1993-06-25 Nec Corp ディスパッチング制御装置
JPH07281909A (ja) * 1994-04-05 1995-10-27 Mitsubishi Heavy Ind Ltd リアルタイム・タスク周期実行管理システム
JP2002259139A (ja) * 2001-03-05 2002-09-13 Denso Corp マイクロコンピュータ、プログラム及び記録媒体
JP2008305351A (ja) * 2007-06-11 2008-12-18 Renesas Technology Corp ディスパッチ装置

Also Published As

Publication number Publication date
US20130007758A1 (en) 2013-01-03
WO2011114495A1 (ja) 2011-09-22
JPWO2011114495A1 (ja) 2013-06-27

Similar Documents

Publication Publication Date Title
US11550627B2 (en) Hardware accelerated dynamic work creation on a graphics processing unit
JP5673672B2 (ja) マルチコアプロセッサシステム、制御プログラム、および制御方法
JP5498505B2 (ja) データバースト間の競合の解決
US9715407B2 (en) Computer product, multicore processor system, and scheduling method
US9043520B2 (en) Interrupt control method and multicore processor system
US20140019738A1 (en) Multicore processor system and branch predicting method
US9311142B2 (en) Controlling memory access conflict of threads on multi-core processor with set of highest priority processor cores based on a threshold value of issued-instruction efficiency
US20140026143A1 (en) Exclusive access control method and computer product
US20130125131A1 (en) Multi-core processor system, thread control method, and computer product
JP5376042B2 (ja) マルチコアプロセッサシステム、スレッド切り替え制御方法、およびスレッド切り替え制御プログラム
US9690619B2 (en) Thread processing method and thread processing system for setting for each thread priority level of access right to access shared memory
US9483101B2 (en) Multicore processor system and power control method
JP2009175960A (ja) 仮想マルチプロセッサシステム
US11481250B2 (en) Cooperative workgroup scheduling and context prefetching based on predicted modification of signal values
JP5582241B2 (ja) マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラム
JP2010140239A (ja) 割り込みレイテンシーを短縮する装置及び方法
US20130318310A1 (en) Processor processing method and processor system
JP4441592B2 (ja) 並列処理装置及び排他制御方法
US20130239113A1 (en) Information processing apparatus, computer product, and information processing method
JP5601414B2 (ja) マルチコアプロセッサシステム、制御方法、および制御プログラム
EP2798455A1 (en) Direct ring 3 submission of processing jobs to adjunct processors

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130521

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130722

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: 20130827

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130909

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees