JP4605191B2 - 割込み処理同期装置、割込み処理同期方法及びプログラム - Google Patents

割込み処理同期装置、割込み処理同期方法及びプログラム Download PDF

Info

Publication number
JP4605191B2
JP4605191B2 JP2007188022A JP2007188022A JP4605191B2 JP 4605191 B2 JP4605191 B2 JP 4605191B2 JP 2007188022 A JP2007188022 A JP 2007188022A JP 2007188022 A JP2007188022 A JP 2007188022A JP 4605191 B2 JP4605191 B2 JP 4605191B2
Authority
JP
Japan
Prior art keywords
interrupt
slot
interrupt processing
time
processor
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
JP2007188022A
Other languages
English (en)
Other versions
JP2009026035A (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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP2007188022A priority Critical patent/JP4605191B2/ja
Publication of JP2009026035A publication Critical patent/JP2009026035A/ja
Application granted granted Critical
Publication of JP4605191B2 publication Critical patent/JP4605191B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、マルチプロセッサ計算機において、周期的に発生する割込み処理を同期させる割込み処理同期装置及び方法に関する。
マルチプロセッサ計算機システム上で並列プログラムを実行する場合、プログラム中のスレッド間のインバランスが性能劣化の大きな要因となる。このため、仕事量の同じスレッドを同期してディスパッチする必要がある。例えば、特許文献1にユーザプログラムを同期させる方式が開示されている。特許文献1に開示された技術では、非常に大規模なマルチプロセッサ計算機システム上で巨大な並列プログラムを実行する場合、オペレーティングシステム(OS)自身の動作(割込み処理)が並列プログラムにとって外乱となる。このため、結果的にスレッドのインバランスを引き起こして、バリア同期の遅延が拡大し、性能を劣化させてしまっていた。これを解決するためには、オペレーティングシステムの割込み処理を、同じタイミングで実行する必要がある。
また、特許文献2には、割込み処理を特別なハードウェア機構によってプロセッサ間の同期的な手続きを利用し、割込み処理が発生する度に同期させる技術が開示されている。あるいは各プロセッサ上で同時に割込みを実行させるような専用のスケジューリング機構を導入して、割込み処理を動作させるなどの方式がとられていた。この他にも、同時に実行できる並列プログラムの制限方法(特許文献3)、周期的に実行されるプロセスの間隔を一定に保つ方式(特許文献4)、及びマルチプロセッサ上でのプロセスの移動の制御方式(特許文献5)などの技術が開示されている。
さらに、オペレーティングシステムが発生させる割込み処理には、(1)非同期的に発生する間欠的な割込み処理と(2)定期的に発生する周期的な割込み処理の2種類が存在している。(1)の間欠的な割込み処理はオペレーティングシステム外に起因する処理で、例えば、I/O(Input/Output)割込みや例外処理などの実行の即時性が重要な割込みである。これに対して(2)の周期的な割込みはオペレーティングシステム内に起因する処理であり、システムの維持や監視などのために必要な間隔が一定である事が重要な割込みである。並列プログラムの性能に影響を与えるのは(1)の間欠的な割込み処理ではなく(2)の周期的な割込み処理である。このうち、並列プログラムのバリア同期待ちを遅延させる主な原因としては、オペレーティングシステムの割込み処理が大きく影響していると考えられる。
特開2002−258980号公報 特表昭61−501661号公報 特開平08−328880号公報 特開平09−319597号公報 特開2000−215072号公報
しかしながら、従来の方式では、割込み処理を間欠的な割込みと周期的な割込みとに区別せず、全ての割込み処理について同期させる方式を取ろうとしていた。このため、プロセッサ間で同期を取るためのオーバーヘッドが生じたり、特別なハードウェア機構が必要になったりしていた。また、同期を取る事により割込み処理自体が遅延してしまうなどの問題があった。さらに、特別なハードウェア機構のようなコストの高いプロセッサ間の同期的な手続きを導入する必要が生じたりしていた。
本発明は、このような事情に鑑みてなされたものであり、オペレーティングシステム内に起因する周期的な割込みの同期をとる割込み同期装置及び方法を提供することを目的とする。
本発明に係る割込み処理同期装置の一態様は、タイマーカウンタを有する複数のプロセッサが実行する割込み処理を同期させる割込み処理同期装置であって、任意のプロセッサから呼び出され、前記複数のプロセッサが有するタイマーカウンタを初期化させるタイマー同期部と、割込み処理を保存する割込みテーブルと、前記タイマーカウンタが発生させる割込みによって各プロセッサが実行する割込み処理を受け付け、前記割込みテーブルへ登録する登録部と、前記タイマーカウンタが発生させる割込みに基づいて、前記割込みテーブルに登録された割込み処理を各プロセッサに実行させる実行部と、を備える。
本発明に係る割込み処理同期方法の一態様は、タイマーカウンタを有する複数のプロセッサが実行する割込み処理を同期させる割込み処理同期方法であって、所定のタイミングで、前記複数のプロセッサが有するタイマーカウンタを初期化させ、前記タイマーカウンタが発生させる割込みによって各プロセッサが実行する割込み処理を受け付け、受け付けた割込み処理を割込みテーブルへ登録し、前記タイマーカウンタが発生させる割込みに基づいて、前記割込みテーブルに登録された割込み処理を各プロセッサに実行させる。
本発明に係る割込み処理同期装置方式を実現するプログラムの一態様は、タイマーカウンタを有する複数のプロセッサが実行する割込み処理を同期させるプログラムであって、所定のタイミングで、前記複数のプロセッサが有するタイマーカウンタを初期化させる手順と、前記タイマーカウンタが発生させる割込みによって各プロセッサが実行する割込み処理を受け付け、受け付けた割込み処理を割込みテーブルへ登録する手順と、前記タイマーカウンタが発生させる割込みに基づいて、前記割込みテーブルに登録された割込み処理を各プロセッサに実行させる手順と、を計算機に実行させる、を計算機に実行させる。
本発明によれば、オペレーティングシステム内に起因する周期的な割込みの同期をとる割込み同期装置及び方法を提供することが可能となる。
以下、本発明の実施形態について、図面を参照しながら説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。各図面において同一の構成または機能を有する構成要素および相当部分には、同一の符号を付し、その説明は省略する。
また、本明細書では、同じ構成要素が複数存在し、それぞれを区別する場合に、符号に"−n"(n>0の整数)付加して、複数の構成要素それぞれを区別するものとする。例えば、図1では、複数のCPU120−1、120−2・・・120−Nを示している。例えば、図1を用いて説明する場合、CPU120は、複数のCPU120−1〜120−Nのいずれか一つまたは複数を示すものとし、CPU120−1(あるいは、CPU120−2など)は、複数のCPUそれぞれを区別して示すものとする。
本発明では、まず、オペレーティングシステムが発生させる割込み処理を(1)非同期的に発生する間欠的な割込み処理と(2)定期的に発生する周期的な割込み処理の2種類に分類する。そして、(1)は頻度が少なく即時性が求められる不可避な割込み処理であるため、(2)の周期的な割込み処理に着目し、周期的な割込み処理を同期させる手段を提供する。具体的には、プロセッサに内蔵されたタイマーレジスタを利用する。そして、この周期的な割込み処理の要求が発生した際に、最初の一回目の割込みが発生するタイミングを補正して割込み処理を同期して実行させる。以下、図面を参照して実施例を説明する。
図1の構成図を参照して本発明の実施例1の割込み処理同期方式について詳細に説明する。図1に示す計算機システム100は、主記憶(MM)110、プロセッサ(CPU)120、タイマーレジスタ(TM)121、及びプロセッサ間通信装置(IPC)130を備えた、共有メモリ型マルチプロセッサ計算機システムである。オペレーティングシステムは、主記憶110に記憶され、CPU120によって、オペレーティングシステムの各命令がフェッチされ、実行される。オペレーティングシステムは、本実施例の割込み同期装置を含む。
計算機システム100は、一つの主記憶110と一つのプロセッサ間通信装置130と複数(N台)のプロセッサ120(CPU120−1〜CPU120−N)から構成され、主記憶110とプロセッサ間通信装置130は複数のプロセッサ120から共有されている。また、各プロセッサにはタイマーレジスタ121(TM121−1〜TM121−N)が内蔵されている。
タイマーレジスタ121は一定間隔でインクリメントされながら同時に自プロセッサに割込みを発生させる。本明細書では、タイマーレジスタ121が発生させる割込みをタイマー割込みと呼び、タイマー割込みの間隔をティック(tick)と表記する。すなわちタイマー割込みはティック単位の一定間隔で発生する。これに対して、プロセッサ間通信装置130は全てのプロセッサ120に同時に割込みを発生させる。プロセッサ間通信装置130が発生させる割込みをブロードキャスト割込みと呼び、任意の時点で任意のプロセッサにより発生させる事が出来る。
本計算機システム100上で動作するオペレーティングシステムは、各タイマーレジスタ121を同期させるタイマー同期部200と、指定時間(etime)経過後に指定処理(efunc)を起動するコールアウト部300とを有している。ここで、指定時間は、割込み処理を実行させる周期を指定する時間である。本実施例では、タイマー同期部200とコールアウト部300とによって、割込み処理同期装置400を実現する。
コールアウト部300は、一組の指定時間と指定処理{etime,efunc}で構成された構造体を要素とする配列のコールアウトテーブル(割込みテーブル)310と、指定時間と指定処理{etime、efunc}をコールアウトテーブルに登録するためのコールアウト登録部(登録部)320と、タイマー割込みの延長で動作し登録された処理(efunc)を実行するコールアウト実行部(実行部)330の、3つから構成されている。また、コールアウト登録部320は、指定時間を補正するコールアウト時間補正部(補正部)321を含んでいる。
コールアウトテーブル310は、一組の指定時間と指定処理を一つのスロットに保存する記録領域である。コールアウトテーブル310は、システムが同時に要求し得るコールアウト部300の最大数を登録するのに十分な大きさのスロットの配列を備え、溢れる事はない。図1では、0〜MまでのM+1個のスロットを有するコールアウトテーブル310の例を示している。また、コールアウトテーブル310には指定時間etimeが小さな値から順番に登録されている。なにも登録されていない空きスロットは時間etimeが0となっている。以降の説明では、スロットの配列の番号をS(S≧0)で表す。[S]は、S番目のスロットであり、[S].etime、[S].efuncはそれぞれS番目のスロットの指定時間と指定処理を表す。
次に、図2から図4を用いて、割込み処理同期装置の動作について説明する。割込み処理同期装置400は、システム立ち上げ時にタイマー同期部200を実行し、その後割込み処理が発生したときにコールアウト部300を実行する。図2は、実施例1のタイマー同期部の動作例を示すフローチャートである。タイマー同期部200は、システム立上げ時に任意のプロセッサ120から一度だけ呼び出され、プロセッサ間通信装置130を使用して全てのプロセッサ120にブロードキャスト割込みを発生させる(S11)。各プロセッサ120はブロードキャスト割込みを受信する(S12)。各プロセッサ120はブロードキャスト割込み処理によって、各タイマーレジスタ121を0に設定する(S13)。点線で囲んだ処理はブロードキャスト割込みである。これにより、以後全てのプロセッサ120で同時刻にタイマーレジスタ121のインクリメントとタイマー割込みの発生が、ティック間隔で定期的に発生し続ける状態となる。
このように、タイマー同期部200によれば、システムのある基準時刻(通常は立ち上げ時)にプロセッサ間の同期手続きを利用して一度だけタイマーレジスタ121の同期をとる。以後、タイマーレジスタ121の値を基準として動作する割込みは自動的に同じタイミングで動作する。これにより、各プロセッサ120間で割込み処理を同期して動作させる事が可能になる。従って、特別なハードウェア機構などによるコストの高いプロセッサ間の同期手続きをすることなく、プロセッサ120間の同期をとることができる。
次にコールアウト部300の動作について説明する。コールアウト部300は、オペレーティングシステムにより一定時間後に実行したい処理が発生した場合に任意のプロセッサ120上から呼び出される。コールアウト部300は、コールアウト登録部320によって、オペレーティングシステムから指定された指定時間(etime)と関数へのポインタ(efunc)をコールアウトテーブル310に登録する。また、コールアウト部300は、コールアウト実行部330を利用して、指定された指定時間経過後に指定された関数を起動する。図2において、点線で囲んだ処理はブロードキャスト割込みによって実施される。
図3は、実施例1のコールアウト登録部の動作例を示すフローチャートである。コールアウト登録部320は、指定時間etime(ティック単位)と指定処理efunc(関数へのポインタ)をオペレーティングシステムから通知される。コールアウト登録部320は、コールアウト時間補正部321を使用して指定時間etimeを予め補正し(S21)、スロットの配列の番号を示すSを初期化する(S22)。具体的には、コールアウト時間補正部321は指定時間etimeを以下の補正式(1)を用いて補正する。TRは、タイマーカウンタ121がカウントしている経過時間である。左辺のetimeは、補正後のetimeである。
etime=etime−(TR%etime)・・・補正式(1)
次に、コールアウト登録部320は、コールアウトテーブル310を先頭から探索し、これから登録しようとしている時間etimeよりも大きな時間が登録されているスロット([S].etime>etime)又は空きスロット([S].etime=0)の位置に、指定された{etime,efunc}を挿入する。具体的には、S番目のスロットに登録された指定時間と今回通知された割込み処理の指定時間とを比較する(S23)。S番目のスロットの時間のほうが大きいかまたは空きスロットである場合(S23でYes)、コールアウト登録部320は、S番目のスロットの位置に今回通知された割込み処理を挿入する(S24)。S番目のスロットの時間のほうが小さいかまたはスロットが空いてない場合(S23でNo)、Sをカウントアップし(S25)、ステップS23からの処理を繰り返す。コールアウト登録部320は、登録するスロットが検出できるまで、ステップS23、S25の処理を繰り返す。
図4は、実施例1のコールアウト実行部の動作例を示すフローチャートである。コールアウト実行部330は、各プロセッサ上からタイマー割込みの延長で呼び出され(S31)、変数Sに自プロセッサ番号prcnを設定する(S32)。スロットSに指定時間が登録されている場合、すなわち、[S].etime≠0の場合(S33でYes)、etimeを1デクリメントする(S34)。この結果etimeが0になったスロットは(S35でYes)削除し、対応するefuncを実行する(S36)。プロセッサ台数Nと自プロセッサ番号prcnとコールアウトテーブルのスロット番号Sの各値を元に、Sの値を更新する(S37)。このように、プロセッサ台数Nと自プロセッサ番号prcnとコールアウトテーブルのスロット番号Sの各値を元に、S%N=prcnを満たす各スロットに関してステップS33からS37を繰り返す。すなわち、各プロセッサに付与されている識別番号(自プロセッサ番号)に基づいてコールアウトテーブル310から読み出す指定時間及びポインタを決定している。これにより、各プロセッサ120が、[自プロセッサの番号+(プロセッサ台数の倍数)]、に一致するスロットの指定時間を検索することになる。従って、一つのプロセッサ120に割込み処理が集中することもなくなる。
また、スロットSに指定時間が登録されてない場合(S33でNo)、処理を終了する。これは、コールアウト登録部320が指定時間の小さい順にコールアウトテーブル310に割込み処理を登録するため、指定時間が0になるまで検索すれば登録されている全割込み処理を検索することになるからである。なお、図4において、点線で囲んだ処理は、タイマー割込みによって実施される。
なお、コールアウト登録部320とコールアウト実行部330による、コールアウトテーブル310への一連のアクセス、{etime,efune}の参照と登録/参照と削除は、排他制御により逐次的に動作する事が保障される。以上がコールアウト部300の動作例の概略説明である。
例えば、処理Eを周期Tで定期的に実行したい場合、オペレーティングシステムは、コールアウト登録部320を{etime,efunc}={T,E}で呼び出す。指定時間経過後コールアウト実行部330によって処理Eが起動される。起動された処理Eの延長で再度コールアウト登録部320を{etime,efunc}={T,E}で呼び出す。これにより、同じ周期の同じ処理が再度コールアウトテーブル310に登録される。コールアウト登録部320は、処理Eが起動される度に再度コールアウトテーブル310へ処理Eを登録することを繰り返す。このようにして、一定の周期Tで処理Eが繰り返し実行されることになる。更に補正式(1)を導入する事により、周期Tの処理EはTMがTの整数倍となるタイマー割込みの延長でしか実行されないようになり、同一周期の処理は同一時刻に実行され、異なる周期の処理は各周期の最小公倍数の整数倍の間隔で同一時刻に実行される事になる。
なお、再度コールアウト登録部320を{etime,efunc}={T,E}で呼び出す場合、指定時間Tと指定処理Eとは、呼び出された割込み処理を構成する命令列自体に記述されており、この記述された値が使用される。あるいは、指定時間Tと指定処理Eとは、予めコールアウト部300のいずれかに備えられる記録領域に保存していてもよいし、コールアウトテーブル310にデクリメントする指定時間etime以外に周期Tを保存し、スロットのデータを削除する際に、コールアウト実行部330が周期Tと指定処理Eとを一時的に保持しておき、コールアウト登録部を呼び出してもよい。また、本実施例では、コールアウト実行部330が割込み処理を実行した後、指定時間を更新するのではなく、再度コールアウト登録部320を呼び出して割込み処理をコールアウトテーブル310に登録する。これにより、登録するタイミングが遅れ、割込み処理の実行から1ティックより長い時間が経ってから登録された場合であっても、割込み処理に指定された周期以内の期間に登録すれば、補正式(1)によって、時刻0から周期の倍数のタイミングで割込み処理が実行されることになる。
このように、タイマーレジスタ121の値である経過時間TRと、周期的に発生させる割込み処理の周期Tに着目し、コールアウト部300によって、経過時間TRが周期Tの整数倍に一致する時刻に限定して割込み処理が行われるように予め設定する。これにより、同一周期の割込み処理が同一時刻に発生する事、異なる周期の割込み処理が各周期の最小公倍数の整数倍の間隔で同時に発生する事が保障される。この結果、様々な異なる周期の割込み処理が可能な限り同一の時刻で発生する事となり、並列プログラムのバリア同期待ちへの影響を最小限に抑える事ができる。
次に、割込み処理同期装置の動作を図2から図6を用いて説明する。図5は、割込み同期処理の具体例を示すタイムチャートであり、図6は、図5のタイムチャートの動作に伴うコールアウトテーブル310の遷移を示す図である。まず、システムの立上げ時に任意のプロセッサ120上でタイマー同期部200が実行される(S11)。タイマー同期部200では、全てのプロセッサ120のタイマーレジスタ121が同時刻に0に設定される(S12、S13)。以下この状態を前提として動作例を説明する。なお以下では「タイマーレジスタの値がH」のときの時刻を「時刻H」と表記する。図5のTMの数値は、時刻Hがとる各時刻を示している。また、点線の○印は、登録時のタイミングを示し、実線の○、△、□の印は、実行及びその後の登録時のタイミングを示す。また、図5では、周期の違いを、○(周期2)、△(周期3)、□(周期4)の形状を用いて表している。図6では、上段から、コールアウト実行時、コールアウト再登録時、コールアウト初登録時それぞれのタイミングのコールアウトテーブル310の状態を示している。各タイミングにおいて太枠で囲んだ割込み処理がそれぞれ実行または登録の対象となっているものである。
次に、時刻0以上1未満(タイマーレジスタの値が0になった時点から1になる直前まで)の時点で周期2ティックの処理E1が発生したと仮定する。すると、時刻0以上1未満の時点でコールアウト登録部320が{2、E1}で呼び出される。コールアウト登録部320はコールアウト時間補正部321において指定時間2ティックを2−(0%2)=2で2ティックに補正し(S21)、コールアウトテーブル310に{2、E1}を登録する(S22〜S25)。時刻1の時点でコールアウト実行部330が呼び出され(S33)、コールアウト実行部330がスロットのetimeを1デクリメントすることによりコールアウトテーブル310が{1、E1}となる(S34、S35でNo)。次に、時刻2の時点でコールアウト実行部330が呼び出され(S33)、コールアウト実行部330がスロットのetimeを1デクリメントする(S34)。
これによりコールアウトテーブル310が{0、E1}となるため(S35でYes)、{0、E1}が削除されて関数E1が実行される(S36)。関数E1の延長でコールアウト登録部320が再度{2、E1}で呼び出される。コールアウト登録部320はコールアウト時間補正部321において補正式(1)を用いて2ティックを2−(2%2)=2で2ティックに補正して(S21)、コールアウトテーブル310に{2、E1}を登録する(S22からS25)。以降、上記処理の繰り返しで関数E1が時刻2、4、6、8、10、12、14、16、・・・と周期2ティックの整数倍の時刻に定期的に起動され続ける。
次に、時刻3以上4未満の時点で周期2ティックの処理E2が発生したと仮定する。すると、時刻3以上4未満の時点でコールアウト登録部320が{2、E2}で呼び出される。コールアウト登録部320はコールアウト時間補正部321において指定時間2ティックを2−(3%2)=1で1ティックに補正して(S21)、コールアウトテーブル310に{1、E2}を登録する(S22からS25)。この結果コールアウトテーブル310は{1、E1}{1、E2}となる。時刻4の時点でコールアウト実行部330が二つのプロセッサから呼び出され(S33)、コールアウト実行部330がスロットのetimeを1デクリメントすることによりコールアウトテーブル310が{0、E1}{0、E2}となる(S34、S35でYes)。このため{0、E1}と{0、E2}が削除されて関数E1と関数E2が異なるプロセッサ上で同時に実行される(S36)。関数E1と関数E2の延長でコールアウト登録部320が再度{2、E1}{2、E2}で呼び出される。以降、上記の繰り返しで関数E1とE2が時刻4、6、8、10、12、14、16、・・・と周期2ティックの整数倍の時刻に定期的に起動され続ける。
次に、時刻4以上5未満の時点で周期3ティックの処理E3が発生したと仮定する。すると、時刻4以上5未満の時点でコールアウト登録部320が{3、E3}で呼び出される。コールアウト登録部320はコールアウト時間補正部321において指定時間3ティックを3−(4%3)=2ティックに補正し(S21)、コールアウトテーブル310に{2、E3}を登録する(S22〜S25)。この結果コールアウトテーブル310は{2、E1}{2、E2}{2、E3}となる。時刻5の時点でコールアウト実行部330が呼び出され(S33)、コールアウトテーブル310が{1、E1}{1、E2}{1、E3}となる(S34、S35でNo)。時刻6の時点でコールアウト実行部330が呼び出され(S33)、コールアウトテーブル310が{0、E1}{0、E2}{0、E3}となるため(S35でYes)、{0、E1}{0、E2}{0、E3}が削除されて関数E1、E2、E3が異なるプロセッサ上で同時に実行される(S36)。関数E1、E2、E3の延長でコールアウト登録部320が再度{2、E2}{2、E2}{3、E3}で呼び出される。この結果コールアウトテーブル310が{2、E1}{2、E2}{3、E3}となる(S21〜S25)。以降、上記の処理の繰り返しで関数E3が時刻6、9、12、15、・・・と周期3ティックの整数倍の時刻に定期的に起動され続ける。
次に、時刻6以上7未満の時点で周期4ティックの処理E4が発生したと仮定する。すると、時刻6以上7未満の時点でコールアウト登録部320が{4、E4}で呼び出される。コールアウト登録部320はコールアウト時間補正部321において指定時間4ティックを4−(6%4)=2で2ティックに補正し(S21)、{2、E4}をコールアウトテーブルに登録する(S22〜S25)。この結果コールアウトテーブル310は{2、E1}{2、E2}{2、E4}{3、E3}となる。時刻7の時点でコールアウトテーブル310が{1、E1}{1、E2}{1、E4}{2、E3}となる。時刻8の時点でコールアウトテーブル310が{0、E1}{0、E2}{0、E4}{1、E3}となるため{0、E1}{0、E2}{0、E4}が削除されて関数E1、E2、E4が実行される(S36)。関数E1、関数E2、関数E4の延長でコールアウト登録部320が再度{2、E1}{2、E2}{4、E4}で呼ばれる。この結果コールアウトテーブル310が{1、E3}{2、E1}{2、E2}{4、E4}となる(S21〜S25)。以降、上記の処理の繰り返しで関数E4が時刻8、12、16、・・・と周期4ティックの整数倍の時刻に定期的に起動され続ける。
次に、時刻8以上9未満の時点で周期5ティックの処理E5が発生したと仮定する。すると、前記で述べたアルゴリズムにしたがって、図5に示すとおりにコールアウトテーブル310が遷移し、関数E5が時刻10、15、・・・と周期5ティックの整数倍の時刻に定期的に起動され続ける。
図7は、割込み処理の具体例を示す図であり、(a)は本発明を適用した場合、(b)は本発明を適用しない場合を示している。図7では、周期の違いを、○(周期2)、△(周期3)、□(周期4)の形状を用いて表している図7(a)に示すように、本発明を適用した場合、割込みが周期の整数倍の時刻で発生している。これに対して、図7(b)に示すように、本発明を適用しない場合、様々な割込みが無秩序に発生している。
本実施例で説明したように、任意の時刻に発生した周期Tの間隔で実行することを前提とした処理は、プロセッサ間の同期的な手続きを必要とせずに、全て周期Tの整数倍の時刻に実行されるようになる。この結果、同一周期の処理は同一時刻に実行され、異なる周期の処理は各周期の最小公倍数の整数倍の間隔で同一時刻に実行されるようになる。以上の動作により、オペレーティングシステムの周期的な割込み処理が、並列プログラムのバリア同期遅延に与える影響を最小限に抑える事ができる。
実施例1で説明した割込み処理同期装置は、プログラムによって実現することが可能である。プログラムは、実施例1で説明した各処理が複数の命令によって実現されるものであり、プロセッサ120によって命令がフェッチされ実行される。また、プログラムは、計算機が読み取り可能な記録媒体に記録することが可能である。例えば、タイマーレジスタ121を有する複数のプロセッサ120を備える計算機において、次の手順を計算機に実行させる。(1)所定のタイミングで、複数のプロセッサが有するタイマーカウンタを初期化させる手順、(2)タイマーカウンタ121が発生させる割込みによって各プロセッサ120が実行する割込み処理を受け付け、受け付けた割込み処理をコールアウトテーブル310へ登録する手順、(3)タイマーカウンタ121が発生させる割込みに基づいて、コールアウトテーブル310に登録された割込み処理を各プロセッサ120に実行させる手順。
以上説明したように、本発明の好適な実施例によれば、一般的なマルチプロセッサ計算機システムとそのオペレーティングシステムにおいて、特別なハードウェア機構などによるコストの高いプロセッサ間の同期的な手続きという手段を使用せずに、周期的な割込みを同じタイミングで発生させる事で、並列プログラムのバリア同期遅延に与える影響を抑えられる。このように出来る理由は、各プロセッサに内蔵されたタイマーレジスタの同期を行うタイマー同期部200を導入し、これをシステム立上げ時に一度だけ呼び出すことで、その後の各プロセッサ上のタイマー割込みを契機とする動作が自動的に同期するからである。
また、一般的なマルチプロセッサ計算機システムとそのオペレーティングシステムにおいて、同一周期の割込み処理は同一時刻に実行され、異なる周期の割込み処理は各周期の最小公倍数の整数倍の間隔で同一時刻に実行される事で、並列プログラムのバリア同期遅延に与える影響を最小限に抑えられる。このように出来る理由は、コールアウト時間補正部321を導入することで、周期Tの割込み処理が、周期Tの整数倍の時刻でのみ実行されるからである。
本発明は、共有メモリ型マルチプロセッサ計算機システム上で、オペレーティングシステム起因の様々な周期的動作を、コールアウト部を利用して同期させる用途に適用できる。また分散メモリ型のマルチプロセッサ計算機システム上で、オペレーティングシステム起因の様々な周期的動作をコールアウト部を利用して同期させる用途に適用できる。また、共有メモリ型及び分散メモリ型のマルチプロセッサ計算機システム上で、ユーザプロセス起因の様々な周期的動作を、オペレーティングシステムが提供するコールアウト部を利用することで同期させる用途に適用できる。
なお、本発明は上記に示す実施形態に限定されるものではない。本発明の範囲において、上記実施形態の各要素を、当業者であれば容易に考えうる内容に変更、追加、変換することが可能である。
本発明の実施例1に係る割込み処理同期方式を適用した計算機システムの構成例を示すブロック図である。 実施例1のタイマー同期部の動作例を示すフローチャートである。 実施例1のコールアウト登録部の動作例を示すフローチャートである。 実施例1のコールアウト実行部の動作例を示すフローチャートである。 割込み同期処理の具体例を示すタイムチャートである。 図5のタイムチャートの動作に伴うコールアウトテーブルの遷移を示す図である。 割込み処理の具体例を示す図であり、(a)は本発明を適用した場合、(b)は本発明を適用しない場合を示している。
符号の説明
100 計算機システム、110 主記憶、120 プロセッサ(CPU120−1〜CPU120−N)、121 タイマーレジスタ(TM121−1〜TM121−N)、130 プロセッサ間通信装置、200 タイマー同期部、300 コールアウト部、310 コールアウトテーブル、320 コールアウト登録部、321 コールアウト時間補正部、330 コールアウト実行部

Claims (5)

  1. タイマーカウンタを有する複数のプロセッサが実行する割込み処理を同期させる割込み処理同期装置であって、
    任意のプロセッサから呼び出され、前記複数のプロセッサが有するタイマーカウンタを初期化させるタイマー同期部と、
    前記割込み処理を実行させる周期を指定した指定時間と、前記割込み処理を指定する指定処理との複数の組み合わせを複数のスロットへ保存する割込みテーブルと、
    前記指定時間と前記指定処理とがオペレーティングシステムから通知され、前記割込みテーブルの複数のスロットへ前記指定時間が小さい順にスロット番号の小さいスロットに保存されるように、指定時間と前記指定処理との組み合わせを登録する登録部と、
    前記タイマーカウンタが発生させる一定間隔の割込みに応じて各プロセッサによって呼び出され、前記割込みテーブルに登録された割込み処理のうち、呼び出されたプロセッサの識別番号と一致するスロット番号のスロット、または、前記プロセッサの識別番号に前記複数のプロセッサの台数の倍数を加算した値のスロット番号のスロットを選択し、選択したスロットの前記指定時間が割込み処理の実行を示す場合に、前記選択したスロットの指定処理を、前記呼び出されたプロセッサに実行させる実行部と、を備える割込み処理同期装置。
  2. 前記タイマー同期部は、前記複数のプロセッサそれぞれが有するタイマーカウンタの値をゼロに初期化させ、
    前記登録部は、前記指定時間をetime、タイマーカウンタがカウントしている経過時間をTRとすると、補正後の指定時間=etime−(TR%etime)の補正式で補正後の指定時間を算出し、前記補正後の指定時間を前記指定時間として、前記割込みテーブルへ登録することを特徴とする請求項1記載の割込み処理同期装置。
  3. 前記実行部は、前記各プロセッサから呼び出されると、前記選択されたスロットの前記指定時間を1デクリメントし、前記指定時間が0になった指定処理を前記呼び出されたプロセッサに実行させることを特徴とする請求項1または2に記載の割込み処理同期装置。
  4. タイマーカウンタを有する複数のプロセッサが実行する割込み処理を同期させる割込み同期装置が実施する割込み処理同期方法であって、
    所定のタイミングで、前記複数のプロセッサが有するタイマーカウンタを初期化させ、
    前記割込み処理を実行させる周期を指定した指定時間と、前記割込み処理を指定する指定処理との複数の組み合わせとがオペレーティングシステムから通知されると、割込みテーブルの複数のスロットへ前記指定時間が小さい順にスロット番号の小さいスロットに保存されるように、指定時間と前記指定処理との組み合わせを登録し、
    前記タイマーカウンタが発生させる一定間隔の割込みに応じて、前記割込み同期装置が各プロセッサから呼び出されると、前記割込みテーブルに登録された割込み処理のうち、前記呼び出しをしたプロセッサの識別番号と一致するスロット番号のスロット、または、前記プロセッサの識別番号に前記複数のプロセッサの台数の倍数を加算した値のスロット番号のスロットを選択し、選択したスロットの前記指定時間が割込み処理の実行を示す場合に、前記選択したスロットの指定処理を、前記呼び出しをしたプロセッサに実行させる割込み処理同期方法。
  5. タイマーカウンタを有する複数のプロセッサが実行する割込み処理を同期させる割込み同期装置が実施する手順を計算機に実行させるプログラムであって、
    所定のタイミングで、前記複数のプロセッサが有するタイマーカウンタを初期化させる手順と、
    前記割込み処理実行させる周期を指定した指定時間と、前記割込み処理を指定する指定処理との複数の組み合わせとがオペレーティングシステムから通知されると、割込みテーブルの複数のスロットへ前記指定時間が小さい順にスロット番号の小さいスロットに保存されるように、指定時間と前記指定処理との組み合わせを登録する手順と、
    前記タイマーカウンタが発生させる一定間隔の割込みに応じて、前記割込み同期装置が各プロセッサから呼び出されると、前記割込みテーブルに登録された割込み処理のうち、前記呼び出しをしたプロセッサの識別番号と一致するスロット番号のスロット、または、前記プロセッサの識別番号に前記複数のプロセッサの台数の倍数を加算した値のスロット番号のスロットを選択し、選択したスロットの前記指定時間が割込み処理の実行を示す場合に、前記選択したスロットの指定処理を、前記呼び出しをしたプロセッサに実行させる手順と、を備えるプログラム。
JP2007188022A 2007-07-19 2007-07-19 割込み処理同期装置、割込み処理同期方法及びプログラム Expired - Fee Related JP4605191B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007188022A JP4605191B2 (ja) 2007-07-19 2007-07-19 割込み処理同期装置、割込み処理同期方法及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007188022A JP4605191B2 (ja) 2007-07-19 2007-07-19 割込み処理同期装置、割込み処理同期方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2009026035A JP2009026035A (ja) 2009-02-05
JP4605191B2 true JP4605191B2 (ja) 2011-01-05

Family

ID=40397793

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007188022A Expired - Fee Related JP4605191B2 (ja) 2007-07-19 2007-07-19 割込み処理同期装置、割込み処理同期方法及びプログラム

Country Status (1)

Country Link
JP (1) JP4605191B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011186591A (ja) * 2010-03-05 2011-09-22 Renesas Electronics Corp プロセッサ及びその制御方法
JP5910538B2 (ja) * 2013-02-25 2016-04-27 株式会社デンソー 電池監視装置
CN107045425B (zh) * 2017-03-07 2020-01-10 记忆科技(深圳)有限公司 一种高精度计时子系统的实现方法
CN108563557B (zh) * 2018-02-08 2020-01-21 北京东土科技股份有限公司 一种多通道计算机的通道同步方法及装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62113260A (ja) * 1985-11-12 1987-05-25 Fujitsu Ltd マルチcpuシステムにおけるタイマ監視制御方式
JPH09288528A (ja) * 1996-04-19 1997-11-04 Matsushita Electric Ind Co Ltd 情報処理システムにおけるタイマ管理装置及びタイマ管理方法
JPH10269185A (ja) * 1997-03-25 1998-10-09 Hitachi Ltd バリア同期方法

Also Published As

Publication number Publication date
JP2009026035A (ja) 2009-02-05

Similar Documents

Publication Publication Date Title
Beckman et al. Benchmarking the effects of operating system interference on extreme-scale parallel machines
JP2007058601A (ja) タスク実行装置および方法
JP2010286898A (ja) マルチスレッド実行装置、マルチスレッド実行方法
JP4605191B2 (ja) 割込み処理同期装置、割込み処理同期方法及びプログラム
JP2002049605A (ja) タイマ調整システム
JP2010182101A (ja) フィールド制御システム
JP2019125350A5 (ja)
US10281892B2 (en) Pipelining for cyclic control systems
JP4836903B2 (ja) マイクロプロセッサ制御装置並びにその方法およびプログラム
JP2002342114A (ja) トレースデータ採取可能なプロセッサ
EP2159691A1 (en) Simultaneous multithreaded instruction completion controller
US8196146B2 (en) Information processing apparatus, parallel processing optimization method, and program
US20080256542A1 (en) Processor
US10402510B2 (en) Calculating device, calculation method, and calculation program
JP4168281B2 (ja) 並列処理システム、インタコネクションネットワーク、ノード及びネットワーク制御プログラム
JP2006146758A (ja) コンピュータシステム
JP2011186591A (ja) プロセッサ及びその制御方法
JP2011108140A (ja) データ処理装置
JP3876818B2 (ja) マルチプロセッサ計算機及びプログラム
JP2708172B2 (ja) 並列処理方法
JP5493880B2 (ja) 並列コンピュータシステム、プロセッサ、同期装置、通信方法および通信支援方法
JP2007193744A (ja) 情報処理装置、プログラム、およびスケジューリング方法
CN112445587A (zh) 一种任务处理的方法以及任务处理装置
JP2004127154A (ja) 情報処理装置及び命令エミュレーション装置及び命令エミュレーション処理実行方法
JP5483258B2 (ja) 割り込み処理装置、割り込み処理方法、及び割り込み処理プログラム

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100201

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100406

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100531

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100622

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100818

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100920

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131015

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees