JP2009123064A - 計算機システム - Google Patents
計算機システム Download PDFInfo
- Publication number
- JP2009123064A JP2009123064A JP2007297880A JP2007297880A JP2009123064A JP 2009123064 A JP2009123064 A JP 2009123064A JP 2007297880 A JP2007297880 A JP 2007297880A JP 2007297880 A JP2007297880 A JP 2007297880A JP 2009123064 A JP2009123064 A JP 2009123064A
- Authority
- JP
- Japan
- Prior art keywords
- trap
- computer system
- function
- processor
- context
- 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.)
- Pending
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
【課題】1回あたりのコンテキストスイッチ、特にリストアの処理時間を短縮し、システム全体のパフォーマンスを効率よく引き出すことができる計算機システムを提供することである。
【解決手段】コンテキストリストア時に正しい実行コードをリストアする部分とトラップを発生する部分を決定する機能と、コンテキストリストア処理時に前記決定機能に基づいて一部の実行コードを正しくリストアし,他の部分はトラップを発生する命令を埋める機能と、サブプロセッサ実行中にトラップが発生したときに,コンテキストリストア時に埋めたトラップであることを識別し,該当する部分を主メモリからローカルメモリにリストアし実行を継続する機能とを備える。
【選択図】 図1
【解決手段】コンテキストリストア時に正しい実行コードをリストアする部分とトラップを発生する部分を決定する機能と、コンテキストリストア処理時に前記決定機能に基づいて一部の実行コードを正しくリストアし,他の部分はトラップを発生する命令を埋める機能と、サブプロセッサ実行中にトラップが発生したときに,コンテキストリストア時に埋めたトラップであることを識別し,該当する部分を主メモリからローカルメモリにリストアし実行を継続する機能とを備える。
【選択図】 図1
Description
本発明は、複数のプロセッサを搭載した計算機システムに関する。
近年、1つのICチップ内または1つの計算機内に複数のプロセッサを搭載することにより、全体の処理性能を向上した計算機システムが増えてきている。
これらの中には、同一機能のプロセッサ要素を複数並べる対称構成のシステムもあれば、1つないし少数のメインプロセッサと複数のサブプロセッサで構成する非対称型のシステムも存在する。
後者のような非対称マルチプロセッサシステムでは、例えばOSが行うタスク管理などの汎用的な処理をメインプロセッサが行い、アプリケーションが要求する高速な演算処理のタスクをサブプロセッサで行うなど、プロセッサ要素の特性を十分に生かすようにタスクを分散するのが通例である。
さらに、このような高速演算をサブプロセッサが行う構成では、サブプロセッサ内に主メモリよりも高速なローカルメモリを実装し、プログラムの実行コードをこのローカルメモリにコピーして、サブプロセッサがここから命令をフェッチして実行する方式がある。すなわち、サブプロセッサ実行時には、主メモリを使用するためのMMUなどが動かず、常に高速なローカルメモリだけをアクセスする。この方式を用いることで、命令をフェッチするたびに頻繁に低速な主メモリにアクセスする必要がなくなり、サブプロセッサの性能を十分に引き出すことができる。
一方、サブプロセッサを使用したいタスクの数が物理的なサブプロセッサよりも多くなり、かつそれぞれのタスクがある一定の処理時間内で一定量の計算を行いたい、という要求が生じる場合がある。このようなケースにおいては、サブプロセッサを時分割でタスクに割り振る必要が生じる。
例えば、4つのサブプロセッサが存在し、サブプロセッサの最大演算性能の0.5倍程度の計算量を必要とする6つの持続的タスクが存在する場合を考える。必要な演算性能は6タスク×0.5=3であり計算機システムとしてのサブプロセッサ能力は4で足りるが、タスクにサブプロセッサを割り振る機能がないと、不運な2つのタスクは他の4つのタスクのいずれかが完全に終了するまで待たされることになり、一定時間内に一定量の処理をするという要求を満たせないことになってしまう。
このようなケースにおいて、どのタスクにどのくらいのサブプロセッサ時間を割り振るかを決定したら、実際にタスクを切り替える処理が必要になる。すなわち、サブプロセッサ内の現在実行しているタスクの状態を保存し、次に実行するタスクの状態をサブプロセッサに充足する処理である。
タスクの状態は具体的にはプロセッサのレジスタの値やメモリ上のデータ構造の値で構成され、これを「コンテキスト」、コンテキストの切り換え処理を「コンテキストスイッチ」、コンテキストスイッチ処理のうち現在のコンテキストを保存する処理を「コンテキストセーブ」、次のコンテキストを充足する処理を「コンテキストリストア」と呼ぶ。
ここで、複数のプロセッサにリアルタイム処理を実行するためのスレッド群を割り当てるスケジューリング方法であって、スレッド間の結合属性を示す結合属性情報に基づいて、リアルタイム処理を実行するためのスレッド群の中から、互いに協調して動作する複数のスレッドの集合である密結合スレッドグループを選択する選択ステップと、選択ステップによって選択された密結合スレッドグループに属するスレッド群がそれぞれ別のプロセッサによって同時に実行されるように、密結合スレッドグループに属するスレッド群を当該スレッド群の個数分のプロセッサにそれぞれディスパッチするためのスケジューリング処理を実行するステップとを具備したものがある(例えば、特許文献1参照)。
特開2005−18590号公報
しかし、プログラムの実行コードをこのローカルメモリにコピーして実行する構成においては、ローカルメモリ上の実行コードもコンテキストに含める必要があり、コンテキストリストアの処理のたびにこれをローカルメモリにコピーする必要がある。一般的にローカルメモリの大きさは、レジスタの大きさなどに比して数十倍から数百倍の大きさであることが多く、またこのコピーは比較的低速な主メモリのアクセスであるため、このような構成においてはコンテキストスイッチの処理自体に相当な時間を要するようになる。
1つのサブプロセッサあたりが処理すべきタスク数が増えてくると、一定時間あたりに必要なコンテキストスイッチ回数が増える。このようなケースにおいては前記のように時間のかかるコンテキストスイッチを多数回実行するため、サブプロセッサの処理時間の対部分をコンテキスト処理に費やすことになり、システム全体のパフォーマンスにとって問題となる。
サブプロセッサのプログラム実行コードをローカルメモリにコピーして実行する構成の非対称マルチプロセッサ計算機システムにおいて、タスク数が増えてくるとコンテキストスイッチの処理自体にサブプロセッサ時間の多くを費やしてしまうという問題があった。
本発明の目的は、1回あたりのコンテキストスイッチ、特にリストアの処理時間を短縮し、システム全体のパフォーマンスを効率よく引き出すことができる計算機システムを提供することである。
本発明の計算機システムは、主メモリと、主メモリにアクセスできるメインプロセッサと、自らの中にローカルメモリを持ち実行コードはローカルメモリからのみフェッチできる1つ以上のサブプロセッサと、主メモリとローカルメモリとの間でデータをコピーするための通信路であるバスとを備えた計算機システムにおいて、主メモリとローカルメモリとの間でデータをコピーするためのDMA機能と、1つのサブプロセッサで複数のタスクを時分割で実行するために実行コードを含むコンテキストをローカルメモリから主メモリにセーブする機能と、主メモリからローカルメモリにリストアするコンテキストスイッチ機能と、コンテキストリストア時に正しい実行コードをリストアする部分とトラップを発生する部分を決定する機能と、コンテキストリストア処理時に前記決定機能に基づいて一部の実行コードを正しくリストアし、他の部分はトラップを発生する命令を埋める機能と、サブプロセッサ実行中にトラップが発生したときに、コンテキストリストア時に埋めたトラップであることを識別し、該当する部分を主メモリからローカルメモリにリストアし実行を継続する機能とを有することを特徴とする。
本発明によれば、1回あたりのコンテキストスイッチ、特にリストアの処理時間を短縮し、システム全体のパフォーマンスを効率よく引き出すことができる。
(第1の実施の形態:請求項1の発明に対応)
本発明の骨子は、サブプロセッサへ実行コードをリストアする際に、一部分は正しくリストアするが、残りの部分は本来の実行コードをリストアせず、トラップ(割り込み)を発生させるような命令で充足することにより、実行コードのコピー量を削減することにある。
本発明の骨子は、サブプロセッサへ実行コードをリストアする際に、一部分は正しくリストアするが、残りの部分は本来の実行コードをリストアせず、トラップ(割り込み)を発生させるような命令で充足することにより、実行コードのコピー量を削減することにある。
これにより、コンテキストスイッチ処理に関わる比較的低速な主メモリへのアクセスが削減され、1回あたりのコンテキストスイッチ時間を飛躍的に短縮することができる。
サブプロセッサには不完全な実行コードがリストアされ、場合によっては実行中に本当にトラップが発生する。この場合、このときにあらためて該当する部分の正しい実行コードを主メモリなどからローカルメモリにコピーして、実行を継続する。
トラップを発生する命令で埋めた領域の全てが本当にトラップを発生してしまうと、トータルのコピー量は同じことになってしまうが、次の2つの観点から、十分に効果的であるということができる。
第一に、プログラムの実行コードは一般的に、全ての部分を同一頻度で実行するわけではない。たとえばエラー処理などの、ごく稀にしか実行しないような部分や、初期化処理部分、終了処理部分などの1度しか使用しない部分が含まれているのが通常である。このような領域は毎回サブプロセッサにリストアしても、今回の時間割り当ての内に一度も実行されない可能性が高い。したがって、このような部分を明示的に指定するか、あるいは効率よく予測することにより、リストアにかかる時間を削減することができる。
第二に、コンテキストリストア処理自体はシステム全体のタスク管理に関わる処理であり、その処理時間はシステム全体に必ずかかるコストであるといえる。本発明により、あるタスクの実行中にトラップが発生してコピー処理が発生してしまっても、そのタスク単独のコストであり、そのために他のタスクの割り当て時間が少なくなってしまったりすることがない、という特徴がある。
なお、トラップを発生させる命令の種類については本提案の本質に関わらない。プロセッサによっては引数付きのtrap命令そのものがある場合もあるし、それがない場合でも特定の値の不正命令を用いて割り込みを発生させても良い。
実行コードをローカルメモリにコピーする手段についても、既存の方法で構わない。サブプロセッサまたはメインプロセッサに付随するDMAコントローラ、あるいは独立したDMAコントローラなど、いずれのコピー手段においても本提案の方法を採用可能である。
また、実行コードをリストアするかトラップ命令を埋めるかを決める単位量についても、1命令以上の大きさであればいかようにも決定することができる。ハードウエアの特性などを考慮して、適切に決定すればよい。
実際に1命令を単位にするとトラップコストが大きすぎるので、ページ(数KB程度)単位やキャッシュライン、DMAライン(数百B程度)単位などが適切と思われる。
(第2の実施の形態:請求項2、3の発明に対応)
第2の実施の形態では、第1の実施の形態に加えて、どのような手段でトラップを発生する命令を埋めるかを工夫することにより、さらに効率よくコンテキストリストアの処理を行うものである。
第2の実施の形態では、第1の実施の形態に加えて、どのような手段でトラップを発生する命令を埋めるかを工夫することにより、さらに効率よくコンテキストリストアの処理を行うものである。
第一は、実行コードのコピー手段がDMAである場合、正しい実行コードをリストアする部分のDMAの実行中はサブプロセッサ自身の演算部が動作し、トラップ命令をローカルメモリに書き込む方法である。すなわち、実行コードのDMAを起動した後はそのコピー作業はDMAコントローラが実行してくれるので、サブプロセッサ自身は並行して残りの部分にトラップ命令を書き込むことで処理を並列化することができる。
第二は、メインプロセッサに付随するキャッシュからサブプロセッサに直接コピーすることができ、かつキャッシュを部分的に固定化できる構成において、あらかじめトラップ命令を適当な量(決定の処理単位分が適当)だけキャッシュに固定化しておき、トラップ命令を埋めるべき部分についてはそこからDMAでコピーする方法である。トラップ命令の充足については低速な主メモリにアクセスする必要がないため、短時間で処理できる。
これら2つの手法は同時には実装できない。システムのハードウエアの機能と性能から、より高速に処理できる方を選べばよい。
なお、ハードウエアによっては、ローカルメモリの適当な範囲(ページなど)にトラップを発生する命令を埋める機能そのものがついている場合も考えられる。たとえば領域の0フィル機能があり、0が命令としては不正である場合など。このようなハードウエアでは、その機能そのものを使用すればよいため、前記2つの効率化は必要ないといえる。
(第3の実施の形態:請求項4、5の発明に対応)
第1の実施の形態や第2の実施の形態においては、実行コードを正しくリストアする部分とトラップを発生する命令で埋める部分をできるだけ適切に決定できるのが望ましい。すなわち、できる限り実際に使われそうな部分を正しくリストアし、使われそうにない部分をトラップ命令で埋めるように決定したい。そこで、この要求を実現する手法について説明する。
第1の実施の形態や第2の実施の形態においては、実行コードを正しくリストアする部分とトラップを発生する命令で埋める部分をできるだけ適切に決定できるのが望ましい。すなわち、できる限り実際に使われそうな部分を正しくリストアし、使われそうにない部分をトラップ命令で埋めるように決定したい。そこで、この要求を実現する手法について説明する。
第一は、サブプロセッサにタスクを要求する側のプログラム(アプリケーション)自身が、タスク生成時に実行コードをリストアする部分、または逆にトラップ命令を埋める部分を決定し、その内容をコンテキストスイッチ手段に対して指定する方法である。アプリケーションが自らが発生するタスクの実行コード内容を把握している場合、最も効率のよい決定が可能となる。
第二は、サブプロセッサがタスク実行中に実際にトラップを発生した場合に、該当部分について次回のリストア時からは正しく実行コードをリストアするように決定内容を変更する方法である。これにより、最初にトラップ命令を埋めると決定した部分について1度はトラップ処理のコストが発生することがあるが、以後のコンテキストリストア時には正しい実行コードがリストアされるため、該当部分のトラップ発生は1度だけにすることができる。これらの2つの手法を組み合わせることも容易に可能である。
(第4の実施の形態:請求項6の発明に対応)
第3の実施の形態における第二の手法を用いた場合、タスクの生存時間が半永久的または非常に長いと、ほとんどの部分が実行コードリストアの対象となってしまい、コンテキストリストア時間の短縮効果が十分に発揮できないことが考えられる。
第3の実施の形態における第二の手法を用いた場合、タスクの生存時間が半永久的または非常に長いと、ほとんどの部分が実行コードリストアの対象となってしまい、コンテキストリストア時間の短縮効果が十分に発揮できないことが考えられる。
そこで、このようなケースの回避方法としてリストアのコストとトラップのコストのバランスをとる手法について説明する。トラップ命令で埋める部分を実行コードリストアに変更した際に、別の実行コードリストア部分をトラップ命令部分に変更する。
これにより、実行コード部分とトラップ命令部分との比率は一定に保たれ、リストアコストは一定にすることができる。なお、トラップコストの最大値も決定できるが、その場合には、全部コピーすることになるので、特にメリットにはならない。
(第5の実施の形態:請求項7、8の発明に対応)
第4の実施の形態においては、実行コード→トラップ命令の変更を行う部分を決定する必要がある。そこで、下記のA手法及びB手法を採用する。A手法は、各部分ごとに実際にトラップを発生してしまった回数を記録しておき、その回数の多い部分ほど使用頻度が高いと推定し、実行コード→トラップ命令の変更優先度を下げる手法である。これにより、使用頻度の低い部分をトラップ命令部分にすることができる。
第4の実施の形態においては、実行コード→トラップ命令の変更を行う部分を決定する必要がある。そこで、下記のA手法及びB手法を採用する。A手法は、各部分ごとに実際にトラップを発生してしまった回数を記録しておき、その回数の多い部分ほど使用頻度が高いと推定し、実行コード→トラップ命令の変更優先度を下げる手法である。これにより、使用頻度の低い部分をトラップ命令部分にすることができる。
また、B手法は、各部分ごとに最後にトラップを発生した時刻を記録しておき、最も新しい時刻の部分ほど次回も使用される確率が高いと推定し、実行コード→トラップ命令の変更優先度を下げる手法である。これにより、狭い部分を繰り返し実行するような状態になったときに、他の部分をトラップ命令部分にすることができる。なお、時刻の変わりに、何回目のリストアにおいてトラップが発生したかを使用することもできる。また、記録しておく時刻は1つに限る必要はなく、直近複数回を記録しておき、適当な重み付けで優先度を決定することも容易に可能である。A手法及びB手法は、適当な重み係数をつけて組み合せて使用することもできる。
(第6の実施の形態:請求項9の発明に対応)
第6の実施の形態は、タスクスケジューリング全体からみたコンテキストスイッチのコストのバランスを改善する手法である。1つあたりのサブプロセッサが時分割で処理すべきタスクの数が多いほど、一巡させるために必要なコンテキストスイッチの回数が増加する。一定時間内に一巡させる必要があるシステムでは、1回あたりのコンテキストスイッチの処理時間がおよそ一定であるとすると、タスクの数が多いほどコンテキストスイッチ処理時間が全体に占める比率が上がっていくことになる。
第6の実施の形態は、タスクスケジューリング全体からみたコンテキストスイッチのコストのバランスを改善する手法である。1つあたりのサブプロセッサが時分割で処理すべきタスクの数が多いほど、一巡させるために必要なコンテキストスイッチの回数が増加する。一定時間内に一巡させる必要があるシステムでは、1回あたりのコンテキストスイッチの処理時間がおよそ一定であるとすると、タスクの数が多いほどコンテキストスイッチ処理時間が全体に占める比率が上がっていくことになる。
そこで、時分割で実行すべきタスク数が増えるほど、コンテキストリストア時にトラップ部分を大きくしてスイッチ時間を短縮するように制御する。コンテキストスイッチ手段はスイッチ処理に関わる処理時間のうち定数時間と実行コードリストア量に比例する処理時間のおおよその予測が可能であることが多いため、例えば一定時間内にコンテキストスイッチに費やす処理時間の比率がおよそ一定になるように近づけるなどの処理ができるようになる。これにより、サブプロセッサの処理時間のほとんどがコンテキストスイッチに費やされてしまうという事態を回避することができる。
図1は本発明の実施例に係わる計算機システムのハードウエア構成図である。図1に示すように、1つのメインプロセッサ11と、1つ以上のサブプロセッサ12a〜12nがバス13に接続されている。メインプロセッサ11は、主メモリ14から命令をフェッチしたりデータを読み書きしてプログラムを実行する。サブプロセッサ12a〜12nは、例えば、アプリケーションが要求する高速な演算処理のタスクを実行する。I/O15はユーザからの入力や計算結果の出力などに用いられる。
図2は、図1のサブプロセッサ12及び主メモリ14を詳細に示したブロック構成図である。なお、図2では説明を簡単にするため、サブプロセッサ12は1つだけ示している。サブプロセッサ12の演算ユニット16は、付随するレジスタ群17を用いて命令を実行するユニットである。ローカルメモリ18はサブプロセッサ12内だけで使用される高速なメモリであり、実行時にはプログラムの実行コード19と使用するデータ20が格納される。
演算ユニット16はこの実行コード部分から逐次命令をフェッチして実行する。演算ユニット16は主メモリ14上の命令を直接実行したり、主メモリ14上のデータを直接読み書きすることはできない。
ローカルメモリ18と主メモリ14の間の実行コード及びデータのやりとりは、サブプロセッサ12内にあるDMAコントローラ(DMAC)21を駆動し、DMAを行うことによって可能となっている。DMAの起動はレジスタ群17の中にある専用レジスタにアクセスすることで操作できる。
サブプロセッサ12のレジスタ群17は、MMIO22を用いてメインプロセッサ11からも読み書きできるようになっている。これによってメインプロセッサ11からサブプロセッサ12を停止・再開することができ、またレジスタ群17のセーブ・リストアができるようになっている。
次に、主メモリ14上には、メインプロセッサ11が実行するプログラムとして、アプリケーション群23とOS24とが存在する。OS24は計算機システム全体を管理する基本ソフトウェアであり、その機能の一部として、アプリケーション群23をどのプロセッサにどのように時分割して実行させるかを管理するスケジューラ25、スケジューラ25の決定に従って実際にプロセッサにコンテキストを割り当てて実行させるディスパッチャ26とが存在する。本発明の骨子となるコンテキストスイッチは、このディスパッチャ機能に含まれる。
ディスパッチャ26はサブプロセッサ12のコンテキストスイッチを行う際に、現在サブプロセッサ12で実行中のタスクのコンテキストをセーブする必要がある。このための領域が主メモリ14上にコンテキストセーブ領域27であり、図2では1つしか表示していないが、タスク1つにつき1つずつ用意するものである。コンテキストセーブ領域27の内容は、ディスパッチャ26などが使用する管理データ28と、サブプロセッサ12のレジスタ群17、ローカルメモリ18のコピー、つまり、レジスタ群コピー17’、データコピー20’、実行コードコピー19’が保存される。
図3は、コンテキストスイッチが必要となるタイミングについての一例を示したものである。図3(a)の一例では、スケジューラ25が2つのタスク1、2に対して、ある1つのサブプロセッサ12を均等時間割り当てている。両方のタスク1、2が一定時間内(1周期)にいくらかの処理を実行しなければならないような場合、このようなスケジューリングになる。1周期あたりにタスク1に割り当てた時間が経過すると、メインプロセッサ11にタイマ割り込みが発生しディスパッチャ26が起動され、図3(a)の網掛け部分の時間T1でコンテキストスイッチ処理を行う。 図3(a)の一例では2タスクの例なので1周期に2回の網掛け部分となっている。
これに対し、1周期内に実行したいタスク数が増えてくると網掛け部分の数が増え、例えば、図3(b)の一例のように4タスクの例では、同じ1周期中に4回が必要になり、本来実行したいタスク処理部分(網掛けなし部分の比率)が減ってくることになる。そこで、本発明では、1回のコンテキストスイッチにかかる時間(コスト)をなるべく小さくする。
図4は、主メモリ14のコンテキストセーブ領域27とローカルメモリ18との間のデータのやり取りを概念的に示した説明図である。まず、データ領域の一部にDMAテーブル29を含んでいる。このDMAテーブル29は、コンテキストリストア時に正しい実行コードをDMAでリストアするか、トラップ命令で埋めるかを決定するためのデータであり、その内容は、例えば図5に示すようになっている。図5はDMAテーブル29の内容の一例を示す説明図である。
図5の一例では、例えば、実行コード領域はアドレス0〜1FFFFの128KBで、実行コードリストアかトラップ命令かを決定する「部分」の大きさを4KBとしている。決定の要素としてアプリケーションからの指定値とトラップを起こした回数とを記録しており、その2つの値を参照してどちらにするかを決定し、その決定結果を保存している。決定の方法は例えば、ユーザ指定が1のページは必ず正しい実行コードをリストアすることとし、それ以外の部分についてカウンタ値が小さいものから最大16個をトラップ命令の部分と決定し、結果をテーブル内に保存する。
図5の一例のように決定されると、実際のコンテキストリストア時には、図4のようなデータのコピーを行うようになる。トラップ命令で埋める部分はDMAの対象とならず、DMAと平行してサブプロセッサ自身が埋めることができるので、コンテキストリストアの時間を短縮することができる。図5では1ページ(部分)しか表示していないが、例えば、これが16ページあるとすると、64KBのDMA分の時間短縮となる。
図6及び図7は、本発明の実施例によるコンテキストスイッチの具体的な処理手順を示すフローチャートである。図6に示す手順(101)〜(107)は現在実行しているタスクのコンテキストセーブ処理で、従来と同じである。なお、実行コードは実行中に変化しないことを想定しセーブの対象からは外している。
図7の手順(108)から最後の手順まで、手順(109)を除く手順がコンテキストリストア処理であり、特に手順(111)、(113)、(115)が本発明の重要な部分である。
手順(111)では、実行コードに先立ち、まずDMAテーブルを含むデータ領域をDMAでコピーする。これで手順(113)でサブプロセッサ内部でDMAテーブルを用いて実行コードをリストアする部分を識別し、DMAリスト(=DMACに渡す制御情報)を作成できるようになる。DMAリストを作成してDMAを起動したら、データ転送事態はDMACが実行してくれるので、サブプロセッサの演算ユニットは手順(115)で再びDMAリストを参照しながら自身でトラップ命令を書き込んで行く。
DMAとトラップ命令書き込みが両方終了したところで、ローカルメモリ18のリストア処理完了である。あとはメインプロセッサがサブプロセッサのレジスタを復元し、再び起動すればよい。
途中、手順(109)はオプションであり、DMAテーブルを逐次更新する実装の場合に必要になる。実行タイミングは手順(107)と手順(108)との間でも構わないが、サブプロセッサ12のリストア処理を先に開始してしまったほうが並列に処理できる。具体的な例は後述する。
図8は、タスク実行中にトラップを発生した時の処理内容を示すフローチャートである。この一例では、トラップの割り込みはサブプロセッサ12自身に入り、サブプロセッサ12内のハンドラが処理する仕組みとなっている。もちろんトラップ割り込みがメインプロセッサ11に配信されハンドラもメインプロセッサ11のものである実装もあり得る。
手順(201)、(202)、(204)が必須手順で、トラップを起こしたページをDMAでリストアしている。この後にトラップハンドラから元アドレスにもどると、今度は正しい実行コードがリストアされているので、タスクが実行を継続することができる。
手順(203)はオプションで、これもDMAテーブルを逐次更新する場合に必要になる。例えば図5のようにトラップ回数をカウントする実装であれば、該当するページのカウンタを1つインクリメントする動作をここで行う。ここではまだ実行コードDMAにするかトラップ命令にするかの決定を行わない。カウンタを更新されたDMAテーブルはコンテキストセーブの時に主メモリ上のコンテキストセーブ領域に転送される。
図7のメインプロセッサ手順(109)で、この更新されたカウンタを参照しながら、実行コードDMAにするかトラップ命令にするかの決定を行い、DMAテーブルを更新する。次回にそのタスクがリストアされるときからは、更新された決定がDMAリストの作成が実行される。
なお、サブプロセッサ12がタスク実行中にトラップを発生すると、その部分のDMAによるコピーが発生してその分タスクの実行が待たされることになる。しかし、このDMAコストは従来は直前のコンテキストリストアにおいて消費されていたコストであり、この分に関してはシステム全体として損はしていない。
実質増加する時間コストはトラップハンドラ内のDMAを除く箇所だけであり、一般的なシステムでは、低速な主メモリへのアクセスを伴うDMAに比べて十分無視できるほど小さいと考えられる。
11…メインプロセッサ、12…サブプロセッサ、13…バス、14…主メモリ、15…I/O、16…演算ユニット、17…レジスタ群、17’…レジスタ群コピー、18…ローカルメモリ、19…実行コード、19’…実行コードコピー、20…データ、20’…データコピー、21…DMAC、22…MMIO、23…アプリケーション群、24…OS、25…スケジューラ、26…ディスパッチャ、27…コンテキストセーブ領域、28…管理データ、29…DMAテーブル
Claims (9)
- 主メモリと、主メモリにアクセスできるメインプロセッサと、自らの中にローカルメモリを持ち実行コードはローカルメモリからのみフェッチできる1つ以上のサブプロセッサと、主メモリとローカルメモリとの間でデータをコピーするための通信路であるバスとを備えた計算機システムにおいて、主メモリとローカルメモリとの間でデータをコピーするためのDMA機能と、1つのサブプロセッサで複数のタスクを時分割で実行するために実行コードを含むコンテキストをローカルメモリから主メモリにセーブする機能と、主メモリからローカルメモリにリストアする機能と、コンテキストリストア時に正しい実行コードをリストアする部分とトラップを発生する部分を決定する機能と、コンテキストリストア処理時に前記決定機能に基づいて一部の実行コードを正しくリストアし、他の部分はトラップを発生する命令を埋める機能と、サブプロセッサ実行中にトラップが発生したときに、コンテキストリストア時に埋めたトラップであることを識別し、該当する部分を主メモリからローカルメモリにリストアし実行を継続する機能とを有することを特徴とする計算機システム。
- 請求項1の計算機システムにおいて、コンテキストリストア時にトラップを発生する命令で埋める処理は、正しい実行コードをコピーする処理と並行して、サブプロセッサが自らローカルメモリに書き込むことを特徴とする計算機システム。
- 請求項1の計算機システムにおいて、メインプロセッサ内にキャッシュ領域と、キャッシュの一部を消去されないように固定する機能と、キャッシュから直接サブプロセッサのローカルメモリにコピーする機能とを有し、コンテキストリストア時にトラップを発生する命令で埋める処理は、キャッシュの一部領域にトラップを発生する命令を固定しておき、この領域からローカルメモリにコピーすることを特徴とする計算機システム。
- 請求項1または2または3の計算機システムにおいて、サブプロセッサにタスクの処理を依頼するアプリケーションが実行コードをリストアする部分とトラップを発生する命令で埋める部分とを指定する機能を有し、コンテキストリストア時に正しい実行コードをリストアする部分とトラップを発生する部分を決定する方法は、前記アプリケーションの指定に従うことを特徴とする計算機システム。
- 請求項1乃至4のいずれか一の計算機システムにおいて、サブプロセッサ実行中にトラップが発生したときに、次回のコンテキストリストア処理からは該当部分について実行コードをリストアするように動作を変更することを特徴とする計算機システム。
- 請求項5の計算機システムにおいて、一部の部分をトラップを発生する命令を埋める部分から実行コードをリストアする部分に変更した際に、同時に同じ大きさの別の部分を実行コードをリストアする部分からトラップを発生する命令を埋める部分に変更することを特徴とする計算機システム。
- 請求項6の計算機システムにおいて、部分ごとにトラップを発生した回数を記録する機能を有し、その発生した回数が少ない順に、優先的に実行コードをリストアする部分からトラップを発生する命令を埋める部分に変更することを特徴とする計算機システム。
- 請求項6または7の計算機システムにおいて、部分ごとにトラップを発生した最新の時刻を記録する機能を有し、その時刻が古い順に、優先的に実行コードをリストアする部分からトラップを発生する命令を埋める部分に変更することを特徴とする計算機システム。
- 請求項6乃至8のいずれか一の計算機システムにおいて、1個あたりのサブプロセッサで処理するタスクの数に応じて、その数が多いほど実行コードをリストアする部分を少なく、トラップを発生する命令を埋める部分を多くするように決定することを特徴とする計算機システム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007297880A JP2009123064A (ja) | 2007-11-16 | 2007-11-16 | 計算機システム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007297880A JP2009123064A (ja) | 2007-11-16 | 2007-11-16 | 計算機システム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009123064A true JP2009123064A (ja) | 2009-06-04 |
Family
ID=40815129
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007297880A Pending JP2009123064A (ja) | 2007-11-16 | 2007-11-16 | 計算機システム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2009123064A (ja) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001517830A (ja) * | 1997-09-24 | 2001-10-09 | マイクロソフト コーポレイション | コンピュータ内のアプリケーションプログラム間でフォーカスが変更されたときに物理メモリの状態を復元する方法およびシステム |
JP2002521745A (ja) * | 1998-07-22 | 2002-07-16 | アプストリーム インコーポレーテッド | モジュールのストリーミング |
JP2005100034A (ja) * | 2003-09-24 | 2005-04-14 | Matsushita Electric Ind Co Ltd | 情報処理制御システム |
JP2006202252A (ja) * | 2004-12-24 | 2006-08-03 | Canon Inc | 電子機器、データ処理方法、及びコンピュータプログラム |
-
2007
- 2007-11-16 JP JP2007297880A patent/JP2009123064A/ja active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001517830A (ja) * | 1997-09-24 | 2001-10-09 | マイクロソフト コーポレイション | コンピュータ内のアプリケーションプログラム間でフォーカスが変更されたときに物理メモリの状態を復元する方法およびシステム |
JP2002521745A (ja) * | 1998-07-22 | 2002-07-16 | アプストリーム インコーポレーテッド | モジュールのストリーミング |
JP2005100034A (ja) * | 2003-09-24 | 2005-04-14 | Matsushita Electric Ind Co Ltd | 情報処理制御システム |
JP2006202252A (ja) * | 2004-12-24 | 2006-08-03 | Canon Inc | 電子機器、データ処理方法、及びコンピュータプログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10423446B2 (en) | Data processing | |
JP4896376B2 (ja) | コプロセッサの性能を強化するシステムおよび方法 | |
US9436464B2 (en) | Instruction-issuance controlling device and instruction-issuance controlling method | |
JP4979880B2 (ja) | グラフィックス処理ユニットのマルチスレッド式カーネル | |
US8898435B2 (en) | Optimizing system throughput by automatically altering thread co-execution based on operating system directives | |
EP2613269A1 (en) | Multi-core processor system, synchronisation control system, synchronisation control device, information generation method, and information generation programme | |
US20140019738A1 (en) | Multicore processor system and branch predicting method | |
US20150163324A1 (en) | Approach to adaptive allocation of shared resources in computer systems | |
JP4873423B2 (ja) | 仮想化プログラム、シミュレーション装置、仮想化方法 | |
US10095542B2 (en) | Cooperative thread array granularity context switch during trap handling | |
KR20080072457A (ko) | 재구성 가능 멀티 프로세서 시스템에서의 매핑 및 스케줄링방법 | |
US10430356B2 (en) | Low overhead copy engine fault and switch mechanism | |
US10289418B2 (en) | Cooperative thread array granularity context switch during trap handling | |
CN108733585B (zh) | 缓存系统及相关方法 | |
US20130173880A1 (en) | Dedicated large page memory pools | |
JP2019160155A (ja) | 情報処理装置、情報処理方法、及びプログラム | |
US7890740B2 (en) | Processor comprising a first and a second mode of operation and method of operating the same | |
US20130160019A1 (en) | Method for Resuming an APD Wavefront in Which a Subset of Elements Have Faulted | |
JP2009123064A (ja) | 計算機システム | |
JP5376042B2 (ja) | マルチコアプロセッサシステム、スレッド切り替え制御方法、およびスレッド切り替え制御プログラム | |
JP2014191468A (ja) | プロセスの待ち行列を共有する複数のプロセッサを有する計算機、及び、プロセスディスパッチ処理方法 | |
US11681527B2 (en) | Electronic device and multiplexing method of spatial | |
JP5582241B2 (ja) | マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラム | |
CN118093111A (zh) | 任务调度方法、装置、电子设备及介质 | |
CN114691297A (zh) | 一种信息读写方法、电子设备、分布式系统以及程序产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20100330 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20110728 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110830 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20120110 |