JPWO2009150815A1 - マルチプロセッサシステム - Google Patents

マルチプロセッサシステム Download PDF

Info

Publication number
JPWO2009150815A1
JPWO2009150815A1 JP2010516746A JP2010516746A JPWO2009150815A1 JP WO2009150815 A1 JPWO2009150815 A1 JP WO2009150815A1 JP 2010516746 A JP2010516746 A JP 2010516746A JP 2010516746 A JP2010516746 A JP 2010516746A JP WO2009150815 A1 JPWO2009150815 A1 JP WO2009150815A1
Authority
JP
Japan
Prior art keywords
program
processor
executed
execution
processors
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.)
Withdrawn
Application number
JP2010516746A
Other languages
English (en)
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.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co 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 Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Publication of JPWO2009150815A1 publication Critical patent/JPWO2009150815A1/ja
Withdrawn legal-status Critical Current

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/461Saving or restoring of program or task context

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)

Abstract

イベント処理等の、非定常的に実行されるプログラムが実行されるプロセッサが偏ることを抑制して、マルチプロセッサシステムの性能を向上する。このため、マルチプロセッサシステム(100)は、複数のプロセッサのいずれかで非定常的に実行されるプログラムのコンテキストデータを格納し、共有される第一のコンテキストメモリ(110)と、前記複数のプロセッサの個数と同じ個数設けられ、それぞれ、対応するプロセッサにプログラムの実行要求があった場合に、当該プログラムが前記非定常的に実行されるプログラムであれば前記第一のコンテキストメモリとの間でのコンテキストデータの退避及び復帰を行う退避復帰制御部(103)と、前記非定常的に実行されるプログラムの実行要求が発生するごとに、選択したプロセッサに対して当該プログラムの実行要求を行う選択要求部(109)とを備える。

Description

本発明は、マルチプロセッサシステムにおいて、効率的に複数のプログラムを並列的に実行する技術に関する。
従来のマルチプロセッサシステムでは、プログラムまたはタスクの切り替えはOS(Operating System)で実行し、タスクに固有の情報であり、タスクを実行するのに必要となるプログラムカウンタやスタックなどのコンテキストの切り替えはOSが管理する方法があった(例えば、特許文献1参照)。
また、プロセッサにおいて、ハードウェアによってコンテキストの切り替えを行っているものもある(例えば、特許文献2参照)。
特開2005−043959号公報 特開2003−271399号公報
しかしながら、OSでコンテキストの切り替えを実行する場合、コンテキストの退避および復帰によるオーバヘッドが発生し、性能劣化の原因となる。また、複数のプロセッサごとにハードウェアによるコンテキスト切り替えを実行する場合、非定常的に実行されるプログラムの実行要求による割込みを特定のプロセッサに対して行うと、当該プロセッサのみに非定常的に実行されるプログラムの割込みによるスケジューリングの阻害が発生する。このため、複数のプロセッサ間のバランスがとれず、特定のプロセッサの定常的に実行される複数のプログラムの必要性能に、単純に非定常的に実行されるプログラムの必要性能(に発生頻度を加味したもの)がプロセッサの要求性能となってしまう。
そこで、上記の課題を解決し、コンテキスト退避復帰によるオーバヘッドを発生することなく、かつ複数のプロセッサでの性能バランスをとることで、各プロセッサでの必要性能を最小としつつ、システム全体として高い性能を得ることを目的とする。
上記の課題を解決するために本発明に係るマルチプロセッサシステムは、複数のプログラムを切り替えながら実行する複数のプロセッサと、前記複数のプロセッサのいずれかで、非定常的に実行されるプログラムのコンテキストデータを格納し、前記複数のプロセッサで共有される第一のコンテキストメモリと、前記複数のプロセッサの個数と同じ個数設けられ、それぞれ、対応する前記プロセッサが定常的に実行するプログラムのコンテキストデータを格納し、当該プロセッサにより専有される第二のコンテキストメモリと、同じく前記複数のプロセッサの個数と同じ個数設けられ、それぞれ、対応する前記プロセッサに対してプログラムの実行要求があった場合に、当該プログラムが前記非定常的に実行されるプログラムであれば前記第一のコンテキストメモリを選択すると共に、前記定常的に実行するプログラムであれば前記第二のコンテキストメモリを選択して、選択したコンテキストメモリと当該プロセッサとの間で当該プログラムのコンテキストデータの退避及び復帰を行い、当該プロセッサが専有する退避復帰制御部と、前記非定常的に実行されるプログラムの実行要求が発生するごとに、前記複数のプロセッサのいずれかを選択し、選択したプロセッサに対して当該プログラムの実行要求を行う選択要求部と、を備える。なお、「複数のAのうちのそれぞれのAが、Bする(Bである)」ことは、「複数のAは、それぞれ、Bする(Bである)」と呼ばれる。複数の第二のコンテキストメモリのうちのそれぞれの第二のコンテキストメモリは、その第二のコンテキストメモリに対応するプロセッサが定常的に実行するプログラムのコンテキストデータを格納する。その第二のコンテキストメモリは、そのプロセッサにより専有される。
この構成により、複数のプロセッサは、それぞれ、当該プロセッサが専有する第二のコンテキストメモリを用いて、他のプロセッサの動作にかかわりなく、自由に、定常的に実行するプログラムを実行できる。例えば、定常的に実行する複数のプログラムのうちで、いずれを実行するかを選ぶスケジューリングを、他のプロセッサの動作に阻害されずに自由にできたり、他のプロセッサからの当該プログラムのデータ転送などの大きなデータ転送が必要なくなったりする。一方で、例えば、ユーザ入力による割込みなどの非定常的な割込みにより複数のプロセッサの何れかにより非定常的に実行されるプログラムなどの、複数のプロセッサの何れかにより非定常的に実行されるプログラムは、当該プログラムを実行するプロセッサにより第二のコンテキストメモリが用いられることにより、何れのプロセッサでも実行できる。これにより、実行要求が発生するごとに、当該発生に際して選択されたプロセッサにより実行されて、実行されるプロセッサが例えば1つのプロセッサなどの少数のプロセッサに偏ってしまってマルチプロセッサシステムの性能が低下してしまうことを防ぐことができる。また、非定常的に実行されるプログラムを実行するプロセッサが、複数のプロセッサに十分に分散されることで、例えば、非定常的に実行されるプログラムの実行により、上記した、定常的に実行されるプログラムの実行が阻害されてしまうことを少なくしたり、逆に、定常的に実行されるプログラムの実行により、非定常的に実行されるプログラムの実行が阻害されてしまったりするのが防がれる。このため、マルチプロセッサシステムの性能が低下してしまうことを防ぎ、マルチプロセッサシステムの性能を向上できる。
なお、定常的に実行されるプログラムは、例えば、いわゆるサービスプログラムであってもよいし、いわゆるデーモンプログラムであってもよいし、HTTP(HyperText Transfer Protocol)サーバ等のサーバ用のプログラムであってもよいし、対象を常時監視する監視プログラムであってもよい。
他方、非定常的に実行されるプログラムは、例えば、キー入力などのユーザ入力や、通信による入力、0による除算の発生などの各種のイベントを処理するイベント処理用のプログラムであってもよい。
ここで、当該マルチプロセッサは、前記複数のプロセッサに共有される主記憶メモリを備え、前記複数のプロセッサは、それぞれ、当該主記憶メモリを用いて、前記非定常的に実行されるプログラム及び前記定常的に実行されるプログラムをそれぞれ実行するものとしてもよい。
この構成により、例えば、前記複数のプロセッサが、それぞれ、当該プロセッサが専有する専有メモリを用いてプログラムを実行する。これにより、選択されたプロセッサが、当該プロセッサ以外の他のプロセッサの当該専有メモリから、非定常的に実行されるプログラムによる処理の途中の中間データ等のデータを長い時間をかけて取得する場合などと比べて、非定常的に実行されるプログラムによる処理の途中のデータの取得の遅延をなくして、マルチプロセッサシステムがより高速に動作できる。
ここで、当該マルチプロセッサは、前記複数のプロセッサが、それぞれ、複数のレジスタ群と、前記複数のレジスタ群のうちで何れかのレジスタ群を、プログラムの実行に当該プロセッサが利用する実行用のレジスタ群として選択すると共に、選択したレジスタ群以外の他の何れかのレジスタ群をコンテキストデータの退避復帰用のレジスタ群として選択するレジスタ群選択部とを備え、前記複数のプロセッサは、それぞれ、当該プロセッサの当該レジスタ群選択部が前記実行用のレジスタとして選択するレジスタ群を使用してプログラムを実行し、前記退避復帰制御部は、当該プロセッサが、選択された前記実行用のレジスタ群を使用してプログラムを実行するのと同時に、選択された前記退避復帰用のレジスタ群に対し、コンテキストデータの退避及び復帰を行うものとしてもよい。
この構成により、例えば、実行用レジスタ群が使用されたプログラムの実行と並列にコンテキストデータの退避復帰が行われるなどして、当該実行と同時にコンテキストデータの退避復帰が行われることにより、退避及び復帰の処理や、プログラムの実行の処理にオーバヘッド(遅延時間)が生じるのを防ぎ、マルチプロセッサシステムを高速化できる。
ここで、当該マルチプロセッサシステムは、前記複数のプロセッサがそれぞれローカルキャッシュメモリを有する共有メモリ型マルチプロセッサシステムであるものとしてもよい。
この構成により、定常的に実行されるプログラムの処理が、当該プログラムを実行するプロセッサの外部で無駄な動作を生じさせることを回避したり、外部の動作により当該プログラムの処理のために当該プロセッサで無駄な動作が生じることを防いだりでき、マルチプロセッサシステムの動作を高速化できる。
ここで、前記選択要求部は、前記非定常的に実行されるプログラムの実行要求が発生するごとに、前記複数のプロセッサのうちで、前回の前記非定常的に実行されるプログラムの実行要求の発生に際して選択したプロセッサとは別のプロセッサを選択するものとしてもよい。
この構成により、何れのプロセッサも、非定常的に実行されるプログラムの処理を同じ処理の量ずつ行うようにでき、確実かつ十分に、非定常的に実行されるプログラムの処理が複数のプロセッサに分散され、十分かつ確実にマルチプロセッサシステムの性能を向上できる。
なお、例えば、選択要求部は、複数のプロセッサのうちの1つを特定する特定データを保持し、保持する特定データにより特定されるプロセッサを選択すると共に、当該選択のたびに、保持する特定データを、選択した前記プロセッサ以外の他のプロセッサを特定する特定データに更新するものであってもよい。
ここで、前記選択要求部は、前記複数のプロセッサの動作状態を検出し、検出された動作状態に対して予め定められた対応関係を有するプロセッサを選択するものとしてもよい。
この構成であれば、例えば、各プロセッサのうちで何れがスリープ状態(空き状態)であるかなどの動作状態、つまり、何れのプロセッサが、非定常的に実行されるプログラムを実行するための余裕がある予め定められた状態であるかなどの各プロセッサの動作状態が検出される。そして、この検出に基づいて、スリープ状態であるプロセッサが選択されるなど、動作状態に対応する適切なプロセッサが選択でき、選択時の動作状態の実情に適するプロセッサを的確に選択し、十分かつ確実にマルチプロセッサシステムの性能を向上できる。
また、前記課題を解決するにあたり、本発明に係る他のマルチプロセッサシステムは、次の構成を採ってもよい。すなわち、(a)複数のプログラムを切替えながら実行する複数のプロセッサと、前記複数のプロセッサに共有される主記憶メモリと、前記複数のプロセッサのそれぞれが専有し、定常的に実行される1つ以上のプログラムのコンテキストデータを格納するための第二のコンテキストメモリと、前記複数のプロセッサで共有され、前記複数のプロセッサのいずれかで、非定常的に実行される1つ以上のプログラムのコンテキストデータを格納するための第一のコンテキストメモリと、前記非定常的に実行される1つ以上のプログラムの実行要求が発生するごとに、前記複数のプロセッサのいずれかを選択するかを決定し、前記実行要求を選択したプロセッサに対し実行を要求する選択先切り替え手段と、前記複数のプロセッサのそれぞれが専有し、所定のプログラム切り替えタイミングまたは、前記選択先切り替え手段からの前記実行要求に応じて、前記第二のコンテキストメモリまたは前記第一のコンテキストメモリのいずれかを選択して、接続されるプロセッサに対しコンテキストデータの退避復帰を行う処理制御手段と、を有することとする。
これによって、非定常的に実行されるプログラムの処理を複数のプロセッサに分散させることが可能となり、かつ定常的に実行されるプログラムはプロセッサごとにローカルタスクとして独立にスケジューリングすることが可能となる。これにより、スケジューリングの容易性を維持しつつ、効率的なプログラム実行により、プロセッサシステムの性能向上に寄与する。
さらに、(b)前記複数のプロセッサそれぞれは、複数のレジスタ群と、複数のレジスタ群のいずれかをプログラム実行対象として選択し、前記プログラム実行対象として選択されていないレジスタ群のいずれかをコンテキスト退避復帰対象として選択するレジスタ群選択手段とを備え、前記プロセッサは、前期レジスタ群選択手段が選択するレジスタ群を使用してプログラムを実行し、前記コンテキスト退避復帰対象として選択されたレジスタ群に対し、プログラムの実行と平行してコンテキストデータの退避復帰を行うこととしてもよい。
これによって、退避復帰による処理のオーバヘッドなく、スケジューリングの容易性を維持しつつ、効率的なプログラム実行に寄与する。
さらに、(c)前記マルチプロセッサシステムは、複数のプロセッサのそれぞれがローカルキャッシュメモリを有する共有メモリ型マルチプロセッサシステムであるとしてもよい。
これによって、定常的に実行されるプログラムは、プロセッサ間を移動することがないため、ローカルキャッシュに乗せられたプログラムの命令およびデータの一貫性を保つための、スヌープ動作等によるオーバヘッドを発生させることなくプログラムの実行が可能となり、プロセッサシステムの性能向上に寄与する。
さらに、(d)前記選択先切り替え手段は、予め定められた順序に従って、前記非定常的に実行される1つ以上のプログラムの実行要求が発生するごとに、前記複数のプロセッサの選択先を切り替えるとしてもよい。
これによって、非定常的に実行されるプログラムのプロセッサの割当て回数を均等化することができ、効率的なプログラム実行が可能となり、プロセッサシステムの性能向上に寄与する。
または、(e)前期選択先切り替え手段は、前記複数のプロセッサの動作状態に基づいて選択先を決定するとしてもよい。
これによって、非定常的に実行されるプログラムのプロセッサの割当てを、その時点で空き状態等の余裕のあるプロセッサに配分することが可能となり、プロセッサシステムの性能向上に寄与する。
または、(f)前記複数のプロセッサのそれぞれは、前記定常的に実行される1つ以上のプログラムの実行を中断する事由の発生および中断する事由が解消したことを検出してプログラム実行の停止・再開を制御するイベント検出手段を備え、前記選択先切り替え手段は前記イベント検出手段からのイベント情報に基づいて選択先を決定するとしてもよい。
これによって、非定常的に実行されるプログラムのプロセッサの割当てを、各プロセッサのイベント情報に従って柔軟にプロセッサに配分することが可能となり、プロセッサシステムの性能向上に寄与する。
または、(g)前記複数のプロセッサのそれぞれは、前記定常的に実行される1つ以上のプログラムの実行を中断する事由の発生および中断する事由が解消したことを検出してプログラム実行の停止・再開を制御するイベント検出手段を備え、前記選択先切り替え手段は前記イベント検出手段からのイベント情報の所定の期間内での履歴に基づいて選択先を決定するとしてもよい。
これによって、非定常的に実行されるプログラムのプロセッサの割当てを、各プロセッサの過去のイベント情報も含め柔軟にプロセッサに配分することが可能となり、プロセッサシステムの性能向上に寄与する。
なお、次の構成を採ってもよい。すなわち、マルチプロセッサシステムであって、複数のプロセッサがそれぞれ専有し、定常的に実行されるプログラムのコンテキストデータを格納するローカルコンテキストメモリと、複数のプロセッサが共有し、非定常的に実行されるプログラムのコンテキストデータを格納する共有コンテキストメモリを持ち、定常実行されるプログラムはプロセッサごとのローカルスレッドとして実行し、非定常実行されるプログラムは、複数のプロセッサのいずれかに分配して実行することにより、リアルタイム性を維持しつつ、高速にイベント処理を実行可能なマルチプロセッサシステムの構成を採ってもよい。
本発明によれば、定常的に実行されるプログラムは特定のプロセッサで実行することで、キャッシュの一貫性保持のためのオーバヘッドを生じることなく、かつ非定常的に実行されるプログラムは複数のプロセッサに配分可能であることにより、非定常的に実行されるプログラムが要求する性能分を複数のプロセッサに分散させることが可能となり、プロセッサシステムの性能向上に寄与する。
図1は、実施の形態1におけるマルチプロセッサシステムの構成を示すブロック図である。 図2は、実施の形態1における処理制御部の構成を示すブロック図である。 図3は、実施の形態1における選択先切替部の構成を示すブロック図である。 図4は、実施の形態1におけるコンテキスト切り替えを説明するタイミングチャートである。 図5は、実施の形態1におけるプログラムの実行を説明するタイミングチャートである。 図6は、実施の形態1におけるプログラムの実行を説明するタイミングチャートである。 図7は、実施の形態2におけるマルチプロセッサシステムの構成を示すブロック図である。 図8は、実施の形態2における選択先切替部の構成を示すブロック図である。 図9は、実施の形態2における選択先切替部の構成を示すブロック図である。 図10は、実施の形態2におけるプログラムの実行を説明するタイミングチャートである。 図11は、実施の形態3におけるマルチプロセッサシステムの構成を示すブロック図である。 図12は、実施の形態3における選択先切替部の構成を示すブロック図である。 図13は、実施の形態3におけるプログラムの実行を説明するタイミングチャートである。
(実施の形態1)
以下、本発明に係る実施の形態1について、図面を参照しながら説明する。
図1は、本発明に係る実施の形態1におけるマルチプロセッサシステム100の構成を示すブロック図である。
マルチプロセッサシステム100は、図1に示されるように、2個のプロセッサエレメント101と、選択先切替部109と、共有コンテキストメモリ110と、コンテキストデータセレクタ111と、共有バス150と、メインメモリ151とを備える。
2個のプロセッサエレメント101は、それぞれ、CPU102と、処理制御部103と、ローカルコンテキストメモリ104と、レジスタ群105と、レジスタ群106と、コンテキストデータセレクタ107と、コンテキストデータセレクタ108と、ローカルキャッシュメモリ152とを備える。なお、「複数のAのうちのそれぞれのAが、Bである(Bする)」ことは、「複数のAは、それぞれ、Bである(Bする)」と呼ばれる。それぞれのプロセッサエレメント101は、そのプロセッサエレメント101のCPU102を備える(図1参照)。複数のプロセッサエレメント101は、複数のプロセッサエレメント101のなかに含まれるプロセッサエレメント101の個数(2個)と同じ個数(2個)だけのCPU102を備える。
以下、図1で左側のプロセッサエレメント101を、左側のプロセッサエレメント101と呼び、図1で右側のプロセッサエレメント101を、右側のプロセッサエレメント101と呼ぶ。
図2は、本発明に係る実施の形態1における各処理制御部103(図1)の内部構成を示すブロック図である。以下で説明する処理制御部103の内部構成は、例えば、左側のプロセッサエレメント101の内部構成であり、他方の右側のプロセッサエレメント101は、以下で説明する左側のプロセッサエレメント101の内部構成と同じ内部構成を有する。
処理制御部103は、図2に示されるように、コンテキスト切替制御部120と、サイクルカウンタ121と、ローカルイベント検出部122とを備える。
図3は、本発明に係る実施の形態1における選択先切替部109(図1)の内部構成を示すブロック図である。
選択先切替部109は、図3に示されるように、CPU選択ステート123と、実行要求先選択部124とを備える。
図4は、プロセッサエレメント101における、レジスタ群105およびレジスタ群106のいずれかのデータを選択するコンテキストデータセレクタ107およびコンテキストデータセレクタ108から構成されるセレクタの動作と、当該セレクタにより選択されたデータが用いられた、CPU102でのプログラムA〜Cの実行の処理について説明するタイミングチャートである。
なお、図4の説明においては、プログラムA〜Cは、例えば、左側のプロセッサエレメント101のCPU102により実行される複数のプログラムであり、他方の、右側のプロセッサエレメント101のCPU102は、図4の説明と同様における複数のプログラムの実行の処理と同様の処理により、複数のプログラムを実行する。
時刻t3までの期間の間、CPU102は、プログラムAを実行する。
図4において、時刻t3までの期間、コンテキストデータセレクタ107およびコンテキストデータセレクタ108から構成されるセレクタは、CPU102でのプログラム実行による読出しおよび書込みアクセスについては、図1において上側に示されるレジスタ群105を、プログラム実行対象のレジスタ群として選択し、処理制御部103によるコンテキストデータの読出し(退避)および書込み(復帰)アクセスについては、他方の下側のレジスタ群106を、コンテキスト退避復帰対象レジスタ群として選択する。なお、当該レジスタは、図1に示されるようにマルチプロセッサシステム100が、レジスタ群105とレジスタ群106との2つだけのレジスタ群を有するのでなく、3つ以上のレジスタ群を有する場合には、各レジスタ群のうちから、プログラム実行対象となっているレジスタ群以外の他のレジスタ群を、コンテキスト退避復帰対象レジスタ群として選択する。
時刻t3までの期間の間、CPU102は、コンテキストデータセレクタ107およびコンテキストデータセレクタ108が実行対象のレジスタ群として選択しているレジスタ群105に保持された、プログラムAのコンテキストを使用して、プログラムAを実行する。
そして、時刻t1から時刻t2までの期間の間、処理制御部103は、スケジューリングによってCPU102が次に実行予定となったプログラムBのコンテキストデータを復帰するため、時刻t1から時刻t2までの期間において、セレクタによってコンテキスト退避復帰対象レジスタ群として選択されている、プログラム実行対象となっていない、下側のレジスタ群106に対し、CPU102でのプログラム実行と並行して、当該退避復帰対象レジスタ群に格納された、既存のプログラムNのコンテキストデータの退避および、当該退避復帰対象レジスタ群への、プログラムBのコンテキストデータの復帰を行う。
時刻t3において、コンテキストデータセレクタ107およびコンテキストデータセレクタ108は、CPU102からのアクセスについては下側のレジスタ群106を選択し、処理制御部からのアクセスについては上側のレジスタ群105を選択するように選択先を切り替える。
これにより、CPU102は、コンテキストの退避および復帰の処理によるオーバヘッドを発生させることなく、迅速に、時刻t3からプログラムBの実行を開始する。
図5は、定常的に実行される複数のプログラムをCPU102が実行する場合のマルチプロセッサシステム100の動作を説明するタイミングチャートである。
図5に示されるように、各CPU102は、それぞれ、非定常的に実行されるプログラムの実行要求がマルチプロセッサシステム100にない場合は、2つあるローカルコンテキストメモリ104のうちで、当該CPU102に対応するローカルコンテキストメモリ104に格納されている、定常的に実行される複数のプログラムを実行し、独立したスケジュール周期で、実行するプログラムを、それら定常的に実行される複数のプログラムのうちで切り替える。
ここでの例としては、一方のCPU102(例えば、左側のプロセッサエレメント101のCPU102)では定常的に実行されるプログラムA、B、Cを順次切り替えながら擬似並列的に実行し、他方のCPU102(例えば、右側のプロセッサエレメント101のCPU102)では定常的に実行されるプログラムD、E、Fを順次切り替えながら擬似並列的に実行する場合を示している。
コンテキスト切替制御部120は、実行されるプログラムが、実行中のプログラムから別のプログラムに切り替えられるタイミングとなると、ローカルコンテキストメモリ104に格納されている各プログラムのコンテキストデータに含まれるスケジューリング順序に基づき、次の実行対象プログラム(例えばプログラムB)を決定し、コンテキストデータの退避復帰を開始する。
そして、処理制御部103は、この退避復帰の完了後、コンテキストデータセレクタ107およびコンテキストデータセレクタ108から構成されるセレクタの選択先を切り替える。処理制御部103は、具体的には、上述した、プログラム実行対象のレジスタ群として、その切り替えの直前にコンテキストデータの退避復帰がされたレジスタ群、つまり直前にコンテキスト退避復帰対象レジスタ群として選択されていたレジスタ群を選択させ、これにより、直前に退避復帰がされたコンテキストデータのプログラム(プログラムB)の実行をCPU102に開始させる。
そして、コンテキスト切替制御部120(図2)は、このような、実行されるプログラムの切り替えが発生した時に、切り替えにより新たに実行が開始されるプログラム(例えばプログラムB)のコンテキストデータに含まれるカウンタ初期値を、サイクルカウンタ121(図2)へ通知する。
サイクルカウンタ121は、この通知がされると、通知されたカウンタ初期値を自己に設定すると共に、設定の後、クロックサイクルごとにダウンカウントし、カウンタ値が0となれば、0となったことをコンテキスト切替制御部120に通知することで、次のプログラム(例えばプログラムC)への切り替えをコンテキスト切替制御部120(処理制御部103)に開始させる。上述した、例えば、プログラムAからプログラムBへの切り替えや、プログラムBからプログラムCへの切り替えなどの、実行されるプログラムの切り替えのタイミングは、この通知があったタイミングである。処理制御部103は、この通知があると、実行されるプログラムを切り替える。
なお、上記に説明した、コンテキストデータの退避復帰をプログラム実行と並列的に実行することで、退避復帰のオーバヘッドなくプログラム実行を可能とすることや、さまざまなスケジューリング方法の技術についての様々な公知の技術をマルチプロセッサシステム100に適用するものとしてもよい。公知の技術に関係する点に関しては、説明の便宜上、詳しい説明を省略する。
図6は、非定常的に実行されるプログラムの実行要求が発生した場合のCPU102の動作を説明するタイミングチャートである。
図6では、一方のCPU102(例えば左側のプロセッサエレメント101のCPU102)では定常的に実行されるプログラムA、B、Cを順次切り替えながら擬似並列的に実行し、他方のCPU102(例えば右側のプロセッサエレメント101のCPU102)では定常的に実行されるプログラムD、E、Fを順次切り替えながら擬似並列的に実行しているものとし、非定常的に実行されるプログラムの実行要求の要因として、各プログラムに依存しない共通の割込み要求が発生した場合の例を示す。例えば、この、共有の割り込み要求は、ユーザ入力によって発生する割込み要求や、通信の着信により発生する割込み要求が含まれる。
時刻t1において、共有の割込み要求(図1の共通割込み要求信号112)が発生する時刻が示される。
実行要求先選択部124は、時刻t1で共有の割込み要求が発生すると、CPU選択ステート123(図3)の選択情報に基づいて、複数のCPU102のうちのひとつに対して、非定常的に実行されるプログラムの実行をするよう、対応する処理制御部103にプログラム実行要求を渡す。
ここで、CPU選択ステート123は、レジスタ群105、レジスタ群106の何れか一方を、選択先切替部109による選択の選択先として特定するデータを保持するレジスタにより構成され、共通割込み要求を受けるごとに、保持するデータが特定する、CPU102の選択先を更新し、各CPU102を順次指定するように更新される。なお、例えば、CPU選択ステート123は、共通割込み要求を受けると、更新を行う更新用の回路を有し、この更新用の回路を用いるなどして、共通割込み要求を受けた場合に、更新を行う。
処理制御部103は、プログラム実行用要求を受けると、つまり、上述した共有割り込みが発生して、選択先切替部109が当該処理制御部103に実行要求を行うと、定常的に実行しているプログラムのスケジューリングに割込んで、非定常的に実行されるプログラムIを、次に実行するプログラムとして、既存の、定常的に実行されるプログラムのコンテキストデータをプログラム実行対象のレジスタ群からローカルコンテキストメモリ104に退避し、共有コンテキストメモリ110から、その、次に実行するプログラムの、非定常的に実行されるプログラムのコンテキストデータをコンテキスト退避復帰対象レジスタ群に復帰する。
コンテキスト切替制御部120(図2)は、上記のようにして処理制御部103によりコンテキストデータが、共有コンテキストメモリ110から復帰された後、コンテキストデータセレクタ107およびコンテキストデータセレクタ108の選択先を切り替え、この切り替えがされることにより、復帰されたコンテキストデータが書き込まれたレジスタ群がプログラム実行対象のレジスタ群として選択されて、CPU102は、当該コンテキストデータを用いて、プログラムIの実行を開始する。こうして、CPU102は、図6の「I実行」の記号により示される期間の間、プログラムIを実行する。
なお、サイクルカウンタ121は、こうして非定常的に実行されるプログラムが実行される途中は停止し、つまり、ダウンカウントを行わずに同じカウンタ値を維持し、次の切り替えタイミングは、プログラムIの実行終了によって決定される。すなわち、本実施の形態の例では、割り込まれたプログラムCは、プログラムIが終了後、次のCPU102の実行対象として割り当てられることとしている(図6における「I実行」の後の「C実行」を参照)。
処理制御部103は、プログラムIの実行が終了した後、プログラム実行対象外となったレジスタ群、つまりコンテキスト退避復帰対象レジスタ群に格納されているプログラムIのコンテキストデータを復帰する場合は、共有コンテキストメモリ110へ復帰する。
2個のプロセッサエレメント101は、それぞれ、何れも、以上に説明したような処理を行う。これにより、t2の時刻で共通割込み要求が発生した場合は、CPU選択ステート123が、t1の時刻に発生した共通割込み要求に基づくプログラム実行に際して、予め、当該プログラム実行を行ったCPU102(例えば、図1における左側のCPU102)とは異なる他方のCPU102(例えば、図1における右側のCPU102)に更新されていることから、当該他方のCPU102、つまり時刻t1での実行に係るCPU102とは別のCPU102により、非定常的に実行されるプログラムの実行が行われる。
以上、本実施の形態におけるマルチプロセッサシステム100によれば、定常的に実行されるプログラムは各プロセッサ(図1における左側のプロセッサエレメント101および右側のプロセッサエレメント101)で、それぞれ、個別にスケジューリングして実行される。このため、プロセッサごとに独立したスケジューリングが可能となる上、プロセッサ間での定常的に実行されるプログラムの移動(データ)がない。このため、共有バス150を介したキャッシュの一貫性保持のためのキャッシュスヌープ動作などによるオーバヘッドもなく、効率的なプログラム実行が可能となる。さらに、イベント処理等の非定常的に実行されるプログラムの実行については、複数のCPUにその処理負荷を分散平均化させることができ、特定のプロセッサにイベント処理をさせる場合に比べ、プロセッサの必要最大処理性能を低減することが可能となる。
なお、本実施の形態では、2個のプロセッサの構成を示したが、本発明は2個のプロセッサを有するマルチプロセッサシステムに限定されるものではなく、3個以上のプロセッサを有するマルチプロセッサシステムにも適用可能である。
また、本実施の形態では、2つのレジスタ群(レジスタ群105、レジスタ群106:図1参照)の構成を示したが、複数のプログラムを切り替えて実行するスケジューリング方法などによっては、3個以上のレジスタ群で構成するほうが退避復帰の回数を減らすことができるような場合についても、本発明の適用は可能である。
こうして、複数のプログラムを切り替えながら実行する複数のプロセッサ(左側のプロセッサエレメント101、右側のプロセッサエレメント101:図1)と、前記複数のプロセッサのいずれかで、非定常的に実行されるプログラムのコンテキストデータを格納し、前記複数のプロセッサで共有される第一のコンテキストメモリ(共有コンテキストメモリ110)と、前記複数のプロセッサの個数と同じ個数設けられ、それぞれ、対応する前記プロセッサが定常的に実行するプログラムのコンテキストデータを格納し、当該プロセッサにより専有される第二のコンテキストメモリ(左側のプロセッサエレメント101が有するローカルコンテキストメモリ104、及び、右側のプロセッサエレメント101が有するローカルコンテキストメモリ104)と、同じく前記複数のプロセッサの個数と同じ個数設けられ、それぞれ、対応する前記プロセッサに対してプログラムの実行要求があった場合に、当該プログラムが前記非定常的に実行されるプログラムであれば前記第一のコンテキストメモリを選択すると共に、前記定常的に実行するプログラムであれば前記第二のコンテキストメモリを選択して、選択したコンテキストメモリと当該プロセッサとの間で当該プログラムのコンテキストデータの退避及び復帰を行い、当該プロセッサが専有する退避復帰制御部(左側のプロセッサエレメント101が有する処理制御部103、及び、右側のプロセッサエレメント101が有する処理制御部103)と、前記非定常的に実行されるプログラムの実行要求が発生するごとに、前記複数のプロセッサのいずれかを選択し、選択したプロセッサに対して当該プログラムの実行要求を行う選択要求部(選択先切替部109)と、を備えるマルチプロセッサシステム(マルチプロセッサシステム100)が構成される。
これにより、複数のプロセッサは、それぞれ、自由に、定常的に実行するプログラムを実行でき、複数のプロセッサの何れかにより非定常的に実行されるプログラムは、何れのプロセッサでも実行できて、非定常的に実行されるプログラムを実行するプロセッサが、複数のプロセッサに十分に分散され、例えば、非定常的に実行されるプログラムの実行により、定常的に実行されるプログラムの実行が阻害されてしまうことを少なくしたり、逆に、定常的に実行されるプログラムの実行により、非定常的に実行されるプログラムの実行が阻害されてしまったりすることを防ぎ、性能を向上できる。
ここで、当該マルチプロセッサは、前記複数のプロセッサに共有される主記憶メモリ(メインメモリ151)を備え、前記複数のプロセッサは、それぞれ、当該主記憶メモリを用いて、前記非定常的に実行されるプログラム及び前記定常的に実行されるプログラムをそれぞれ実行する。
ここで、当該マルチプロセッサは、前記複数のプロセッサは、それぞれ、複数のレジスタ群(レジスタ群105と、レジスタ群106)と、前記複数のレジスタ群のうちで何れかのレジスタ群を、プログラムの実行に当該プロセッサが利用する実行用のレジスタ群として選択すると共に、選択したレジスタ群以外の他の何れかのレジスタ群をコンテキストデータの退避復帰用のレジスタ群として選択するレジスタ群選択部(コンテキストデータセレクタ107およびコンテキストデータセレクタ108から構成されるセレクタ)とを備え、前記複数のプロセッサは、それぞれ、当該プロセッサの当該レジスタ群選択部が前記実行用のレジスタとして選択するレジスタ群を使用してプログラムを実行し、前記退避復帰制御部は、当該プロセッサが、選択された前記実行用のレジスタ群を使用してプログラムを実行するのと同時に、選択された前記退避復帰用のレジスタ群に対し、コンテキストデータの退避及び復帰を行うものである。
ここで、当該マルチプロセッサシステムは、前記複数のプロセッサがそれぞれローカルキャッシュメモリ(左側のプロセッサエレメント101が有するローカルキャッシュメモリ152、及び、右側のプロセッサエレメント101が有するローカルキャッシュメモリ152)を有する共有メモリ型マルチプロセッサシステムである。
ここで、前記選択要求部は、前記非定常的に実行されるプログラムの実行要求が発生するごとに、前記複数のプロセッサのうちで、前回の前記非定常的に実行されるプログラムの実行要求の発生に際して選択したプロセッサとは別のプロセッサを選択する。
なお、選択要求部は、複数のプロセッサのうちの1つを特定する特定データ(CPU選択ステート123(図3)の選択情報)を保持し、保持する特定データにより特定されるプロセッサ(例えば、図6の時刻t1で選択される図6上段の方のプロセッサエレメント101)を選択すると共に、当該選択のたびに、保持する特定データを、選択した前記プロセッサ以外の他のプロセッサ(例えば、図6の時刻t2で選択される図6下段の方のプロセッサエレメント101)を特定する特定データに更新するものである。
(実施の形態2)
以下、本発明に係る実施の形態2について、図面を参照しながら説明する。
図7は、本発明に係る実施の形態2におけるマルチプロセッサシステム200の構成を示すブロック図である。なお、本発明に係る実施の形態1と同一の構成については、同一の番号を付与して説明を省略する。
マルチプロセッサシステム200は、図7に示されるように、2個のプロセッサエレメント201と、選択先切替部209と、共有コンテキストメモリ110と、コンテキストデータセレクタ111と、共有バス150と、メインメモリ151とを備える。
そして、プロセッサエレメント201は、CPU102と、処理制御部203と、ローカルコンテキストメモリ104と、レジスタ群105と、レジスタ群106と、コンテキストデータセレクタ107と、コンテキストデータセレクタ108と、ローカルキャッシュメモリ152とを備える。
図8は、本発明に係る実施の形態2における処理制御部203(図7)の内部構成を示すブロック図である。
処理制御部203は、図8に示されるように、コンテキスト切替制御部120と、サイクルカウンタ121と、ローカルイベント検出部222とを備える。
図9は、本発明に係る実施の形態2における選択先切替部209(図7参照)の構成を示すブロック図である。
選択先切替部209は、図9に示されるように、CPU選択ステート223と、実行要求先選択部224とを備える。
図10は、非定常的に実行されるプログラムの実行要求が発生した場合のCPU102の動作を説明するタイミングチャートである。
図10では、一方のCPU102(例えば、図7における左側のプロセッサエレメント201)では定常的に実行されるプログラムA、B、Cを順次切り替えながら擬似並列的に実行し、他方のCPU102(例えば、図7における右側のプロセッサエレメント201)では定常的に実行されるプログラムD、E、Fを順次切り替えながら擬似並列的に実行しているものとし、非定常的に実行されるプログラムの実行要求の要因として、各プログラムに依存しない共通の割込み要求が発生した場合の例を示す。
ここで、各CPU102は、それぞれ、プログラムを実行しているときに、実行しているプログラムがスリープ状態となると、そのプログラム実行で設定されたカウンタ値の残り分空き状態とし、カウンタ値が0となるまで、スリープ状態となったプログラム以外の他のプログラムのスケジューリングをしないこととする。例えば、図10に示されるプログラムAの実行で設定されたカウンタ値の残り分空き状態とし、カウンタ値が0となるまで他のプログラムのスケジューリングをしない。
時刻t1は、共有の割込み要求が発生した第1の時刻を示す。また、時刻t2は、共有の割込み要求が発生した第2の時刻を示す。
時刻t1は、2つのCPU102の何れもスリープ状態ではない間において、共有の割込み要求が発生した時刻である。
実行要求先選択部224は、時刻t1において、共有の割込み要求が発生すると、CPU選択ステート223の選択情報に基づいて、複数のCPU102のうちの1つに対して、非定常的に実行されるプログラムの実行をするよう、当該CPU102に対応する処理制御部203にプログラム実行要求を渡す。
なお、CPU選択ステート223は、共通割込み要求を受けるごとにCPU102の選択先を更新し、各CPU102を順次指定するように更新される。
処理制御部203は、プログラム実行用要求を受けると、定常的に実行しているプログラムのスケジューリングに割込んで、非定常的に実行されるプログラムIを次に実行するプログラムとして、既存の定常的に実行されるプログラムのコンテキストデータをローカルコンテキストメモリ104に退避し、共有コンテキストメモリ110からコンテキストデータを復帰する。
コンテキスト切替制御部120は、共有コンテキストメモリ110からのコンテキストデータ復帰後、コンテキストデータセレクタ107およびコンテキストデータセレクタ108の選択先を切り替え、これにより、CPU102は、プログラムIの実行を開始する。
なお、非定常的に実行されるプログラムの実行中、サイクルカウンタ121は停止し、次の切り替えタイミングはプログラムIの実行終了によって決定する。すなわち、本実施の形態の例では、割り込まれたプログラムCは、プログラムIが終了後、次のCPU102実行対象として割り当てられることとしている。
処理制御部103は、プログラムIの実行が終了した後、プログラム実行対象外となったレジスタ群に格納されているプログラムIのコンテキストデータを復帰する場合は、共有コンテキストメモリ110へ復帰する。
一方、時刻t2は、一方のCPU102がスリープ状態となっている間において、共有の割込み要求が発生した時刻である。
t2の時刻に共通割込み要求においては、その時点で一方のCPU102がスリープ状態となっており、ローカルイベント検出部222(図8)からスリープ状態を含むイベント検出信号(図8参照)を通知される実行要求先選択部224(図9参照)は、CPU選択ステート123の状態より優先して、イベント検出に基づき、スリープ状態のCPU102で非定常的に実行されるプログラムの実行をするよう、スリープ状態である当該CPU102に対応する処理制御部203に、プログラム実行要求を渡す。なお、CPU選択ステート223は、実行要求先選択部224がイベント検出信号を受けて、イベント検出信号により特定されるCPU102に実行要求が渡された場合は、更新されない。
以上、本実施の形態におけるマルチプロセッサシステム200によれば、定常的に実行されるプログラムは各プロセッサ個別にスケジューリングして実行されるため、プロセッサごとに独立したスケジューリングが可能となる上、プロセッサ間での定常的に実行されるプログラムの移動がないため、共有バス150を介したキャッシュの一貫性保持のためのキャッシュスヌープ動作などによるオーバヘッドもなく、効率的なプログラム実行が可能となる。さらに、イベント処理等の非定常的に実行されるプログラムの実行については、複数のCPUにその処理負荷を分散平均化させることができ、特定のプロセッサにイベント処理をさせる場合に比べ、プロセッサの必要最大処理性能を低減することが可能となる。
しかも、複数のCPUのいずれかに空き状態があるような場合、当該CPUでイベント処理を実行させることにより、さらに効率的なプログラム実行が可能となる。
こうして、選択要求部(選択先切替部209)は、複数のプロセッサの動作状態を検出し、検出された動作状態に対して予め定められた対応関係を有するプロセッサを選択するマルチプロセッサシステム200が構成される。
ここで、複数のプロセッサは、それぞれ、定常的に実行されるプログラムの、当該プロセッサによる実行を中断する事由が発生したこと、および、当該事由が解消したことを各々検出して、前記発生が検出された場合には当該実行を停止させ、前記解消が検出された場合には、停止された当該実行を再開させる停止再開制御部(処理制御部203)を備え、前記選択要求部は、前記停止再開制御部から前記停止および再開の情報を取得し、取得された情報により、当該停止再開制御部を備えるプロセッサが前記実行を停止させた後であり、かつ、当該実行を再開させる前であることが示される場合に、当該プロセッサを選択するマルチプロセッサシステムが構成される。
(実施の形態3)
以下、本発明に係る実施の形態3について、図面を参照しながら説明する。
図11は、本発明に係る実施の形態3におけるマルチプロセッサシステム300の構成を示すブロック図である。なお、本発明に係る実施の形態1または本発明に係る実施の形態2と同一の構成については、同一の番号を付与して説明を省略する。
マルチプロセッサシステム300は、図11に示されるように、2個のプロセッサエレメント201と、選択先切替部309と、共有コンテキストメモリ110と、コンテキストデータセレクタ111と、共有バス150と、メインメモリ151とを備える。
図12は、本発明に係る実施の形態3における選択先切替部309の構成を示すブロック図である。
選択先切替部309は、図12に示されるように、実行要求先選択部324と、2個のイベントカウンタ325と、タイマ326とを備える。
イベントカウンタ325は、それぞれ、各処理制御部203がそれぞれ備える各ローカルイベント検出部(図8のローカルイベント検出部222を参照)のうちで、当該イベントカウンタ325に接続されるローカルイベント検出部からのイベント検出信号をカウントアップし、また、タイマ326からのオーバーフロー通知もしくは共通割込み要求によりカウント値をリセットする。
図13は、非定常的に実行されるプログラムの実行要求が発生した場合のCPU102の動作を説明するタイミングチャートである。
図13では、一方のCPU102(例えば、図11における左側のプロセッサエレメント201)では定常的に実行されるプログラムA、B、C、Gを順次切り替えながら擬似並列的に実行する。そして、図13では、他方のCPU102(例えば、図11における右側のプロセッサエレメント201)では、定常的に実行されるプログラムD、E、F、Hを順次切り替えながら擬似並列的に実行している。そして、図13では、非定常的に実行されるプログラムの実行要求の要因として、各プログラムに依存しない共通の割込み要求が発生した場合の例を示す。
ここで、プログラムがスリープ状態となると、当該プログラムを実行していたCPU102は、実行していた当該プログラム以外の他のプログラムのスケジューリングを開始し、次のプログラム実行へ遷移することとする。例えば、図13では、一方のCPU102が、プログラムAがスリープ状態となった場合に、他のプログラムであるプログラムB、C、Gのスケジューリングを開始し、プログラムBの実行へと遷移する等の動作が生じることを示している。
時刻t1は、共有の割込み要求が発生した時刻である。
イベントカウンタ325は、各CPU102のイベント検出の履歴をカウントアップし、時刻t1までのイベント検出信号により通知されたスリープ状態への遷移をカウントしている。
そして、実行要求先選択部324は、時刻t1で共有の割込み要求が発生すると、その、イベントカウンタ325でのカウントされた値の大小に従って、複数のCPU102のうちのひとつに対し非定常的に実行されるプログラムの実行をするよう、対応する処理制御部203にプログラム実行要求を渡す。ここでの例では、実行要求先選択部324は、カウント値の大きいイベントカウンタ325に対応する処理制御部203に対し、プログラム実行要求を渡すこととしている。
以上、本実施の形態におけるマルチプロセッサシステム300によれば、定常的に実行されるプログラムは各プロセッサ個別にスケジューリングして実行される。このため、プロセッサごとに独立したスケジューリングが可能となる上、プロセッサ間での定常的に実行されるプログラムの移動がないため、共有バス150を介したキャッシュの一貫性保持のためのキャッシュスヌープ動作などによるオーバヘッドもなく、効率的なプログラム実行が可能となる。さらに、イベント処理等の非定常的に実行されるプログラムの実行については、複数のCPUの状況に応じてさらに柔軟にその処理負荷を配分することが可能となる。
しかも、非定常的に実行されるプログラムのプロセッサの割当てを、各プロセッサの過去のイベント情報も含め柔軟にプロセッサに配分することが可能となる。
なお、本実施の形態では、プロセッサのローカルイベントのカウント値の大きいプロセッサを選択する例を示したが、ローカルイベントの種類によってはカウント値の小さいほうや、場合による組み合わせによってイベント処理を配分するプロセッサを決定するとしてもよい。
(他の態様)
以下で説明する他の態様のマルチプロセッサシステムを構成してもよい。上記の各実施の形態のうちの何れかの実施の形態のマルチプロセッサシステムに対して、他の態様のマルチプロセッサシステムの一部が付加されてもよいし、他の態様のマルチプロセッサシステムに対して、上記の実施の形態のうちの何れかのマルチプロセッサシステムの一部が付加されてもよい。
(1)他の態様のマルチプロセッサシステムは、第1のプロセッサおよび第2のプロセッサ(左側のプロセッサエレメント101、右側のプロセッサエレメント101:図1)と、例えばユーザ入力による割込みなどの非定常的な割込みにより、前記第1のプロセッサおよび第2のプロセッサのうちの何れかにより実行されるプログラムなどの、非定常的に実行されるプログラムのコンテキストデータを格納し、前記第1のプロセッサおよび第2のプロセッサが共有する共有のコンテキストデータ格納部(共有コンテキストメモリ110)とを備え、前記第1のプロセッサおよび第2のプロセッサにそれぞれ対応し、対応する前記プロセッサが定常的に実行するプログラムのコンテキストデータを格納する、対応する当該プロセッサにより専有される、2つのコンテキストデータ格納部(左側のプロセッサエレメント101が有するローカルコンテキストメモリ104、及び、右側のプロセッサエレメント101が有するローカルコンテキストメモリ104)と、前記第1のプロセッサおよび第2のプロセッサにそれぞれ対応し、対応する前記プロセッサと、前記共有のコンテキストデータ格納部との間で、前記非定常的に実行されるプログラムのコンテキストデータを退避及び復帰させると共に、対応する当該プロセッサの前記定常的に実行されるプログラムのコンテキストデータを、当該プロセッサと当該プロセッサに対応する前記専有のコンテキストデータ格納部との間で退避及び復帰させる退避復帰制御部(左側のプロセッサエレメント101が有する処理制御部103、及び、右側のプロセッサエレメント101が有する処理制御部103)と、予め定められた条件が満たされれば、前記非定常的に実行されるプログラムを前記第1のプロセッサに実行させる一方で、当該条件が満たされなければ当該非定常的に実行されるプログラムを前記第2のプロセッサに実行させる非定常的実行プロセッサ選択部(選択先切替部109)とを備えるマルチプロセッサシステム(マルチプロセッサシステム100)である。
なお、定常的に実行されるプログラムは、いわゆるサービスプログラムであってもよいし、いわゆるデーモンプログラムであってもよいし、HTTP(HyperText Transfer Protocol)サーバ等のサーバ用プログラムであってもよい。
他方、非定常的に実行されるプログラムは、キー入力などのユーザ入力や、通信による入力、0による除算の発生などの各種の例外の発生などの、各種のイベントを処理するイベント処理用のプログラムであってもよい。
(2)そして、他の態様のマルチプロセッサシステムは、前記退避復帰制御部は、それぞれ、当該退避復帰制御部に対応するプロセッサにより実行されるプログラムが前記非定常的に実行されるプログラムであれば、当該非定常的に実行されるプログラムの実行が開始される際に、前記共有のコンテキストデータ格納部により格納される、当該非定常的に実行されるプログラムのコンテキストデータを、当該プロセッサが実行するプログラムのコンテキストデータが格納される予め定められた実行時格納部(レジスタ群105と、レジスタ群106とのうちでプログラム実行対象のレジスタ群)に復帰すると共に、当該実行が終了する際には、当該実行が終了した後における、当該非定常的に実行されるプログラムのコンテキストデータを、当該実行時格納部から、前記共有のコンテキストデータ格納部に退避し、実行されるプログラムが前記定常的に実行されるプログラムであれば、当該定常的に実行されるプログラムの実行が開始される際に、当該プロセッサの前記専有のコンテキストデータ格納部により格納される、当該定常的に実行されるプログラムのコンテキストデータを前記実行時格納部に復帰すると共に、当該実行が終了する際には、当該実行が終了した後における、当該定常的に実行されるプログラムのコンテキストデータを当該実行時格納部から前記コンテキストデータ格納部に退避するマルチプロセッサシステムである。
本発明は、リアルタイム処理およびイベント処理の両方を実行する、複数のプロセッサから構成されるマルチプロセッサシステムなどとして、利用することができる。
100、200、300 マルチプロセッサシステム
101、201 プロセッサエレメント
102 CPU
103、203 処理制御部
104 ローカルコンテキストメモリ
105、106 レジスタ群
107、108 コンテキストデータセレクタ
109、209 選択先切替部
110 共有コンテキストメモリ
111 コンテキストデータセレクタ
112 共通割込み要求信号
113 プログラム実行要求信号
120 コンテキスト切替制御部
121 サイクルカウンタ
122 ローカルイベント検出部
123 CPU選択ステート
124 実行要求先選択部
150 共有バス
151 メインメモリ
213、214 信号
325 イベントカウンタ
326 タイマ
本発明は、マルチプロセッサシステムにおいて、効率的に複数のプログラムを並列的に実行する技術に関する。
従来のマルチプロセッサシステムでは、プログラムまたはタスクの切り替えはOS(Operating System)で実行し、タスクに固有の情報であり、タスクを実行するのに必要となるプログラムカウンタやスタックなどのコンテキストの切り替えはOSが管理する方法があった(例えば、特許文献1参照)。
また、プロセッサにおいて、ハードウェアによってコンテキストの切り替えを行っているものもある(例えば、特許文献2参照)。
特開2005−043959号公報 特開2003−271399号公報
しかしながら、OSでコンテキストの切り替えを実行する場合、コンテキストの退避および復帰によるオーバヘッドが発生し、性能劣化の原因となる。また、複数のプロセッサごとにハードウェアによるコンテキスト切り替えを実行する場合、非定常的に実行されるプログラムの実行要求による割込みを特定のプロセッサに対して行うと、当該プロセッサのみに非定常的に実行されるプログラムの割込みによるスケジューリングの阻害が発生する。このため、複数のプロセッサ間のバランスがとれず、特定のプロセッサの定常的に実行される複数のプログラムの必要性能に、単純に非定常的に実行されるプログラムの必要性能(に発生頻度を加味したもの)がプロセッサの要求性能となってしまう。
そこで、上記の課題を解決し、コンテキスト退避復帰によるオーバヘッドを発生することなく、かつ複数のプロセッサでの性能バランスをとることで、各プロセッサでの必要性能を最小としつつ、システム全体として高い性能を得ることを目的とする。
上記の課題を解決するために本発明に係るマルチプロセッサシステムは、複数のプログラムを切り替えながら実行する複数のプロセッサと、前記複数のプロセッサのいずれかで、非定常的に実行されるプログラムのコンテキストデータを格納し、前記複数のプロセッサで共有される第一のコンテキストメモリと、前記複数のプロセッサの個数と同じ個数設けられ、それぞれ、対応する前記プロセッサが定常的に実行するプログラムのコンテキストデータを格納し、当該プロセッサにより専有される第二のコンテキストメモリと、同じく前記複数のプロセッサの個数と同じ個数設けられ、それぞれ、対応する前記プロセッサに対してプログラムの実行要求があった場合に、当該プログラムが前記非定常的に実行されるプログラムであれば前記第一のコンテキストメモリを選択すると共に、前記定常的に実行するプログラムであれば前記第二のコンテキストメモリを選択して、選択したコンテキストメモリと当該プロセッサとの間で当該プログラムのコンテキストデータの退避及び復帰を行い、当該プロセッサが専有する退避復帰制御部と、前記非定常的に実行されるプログラムの実行要求が発生するごとに、前記複数のプロセッサのいずれかを選択し、選択したプロセッサに対して当該プログラムの実行要求を行う選択要求部と、を備える。なお、「複数のAのうちのそれぞれのAが、Bする(Bである)」ことは、「複数のAは、それぞれ、Bする(Bである)」と呼ばれる。複数の第二のコンテキストメモリのうちのそれぞれの第二のコンテキストメモリは、その第二のコンテキストメモリに対応するプロセッサが定常的に実行するプログラムのコンテキストデータを格納する。その第二のコンテキストメモリは、そのプロセッサにより専有される。
この構成により、複数のプロセッサは、それぞれ、当該プロセッサが専有する第二のコンテキストメモリを用いて、他のプロセッサの動作にかかわりなく、自由に、定常的に実行するプログラムを実行できる。例えば、定常的に実行する複数のプログラムのうちで、いずれを実行するかを選ぶスケジューリングを、他のプロセッサの動作に阻害されずに自由にできたり、他のプロセッサからの当該プログラムのデータ転送などの大きなデータ転送が必要なくなったりする。一方で、例えば、ユーザ入力による割込みなどの非定常的な割込みにより複数のプロセッサの何れかにより非定常的に実行されるプログラムなどの、複数のプロセッサの何れかにより非定常的に実行されるプログラムは、当該プログラムを実行するプロセッサにより第二のコンテキストメモリが用いられることにより、何れのプロセッサでも実行できる。これにより、実行要求が発生するごとに、当該発生に際して選択されたプロセッサにより実行されて、実行されるプロセッサが例えば1つのプロセッサなどの少数のプロセッサに偏ってしまってマルチプロセッサシステムの性能が低下してしまうことを防ぐことができる。また、非定常的に実行されるプログラムを実行するプロセッサが、複数のプロセッサに十分に分散されることで、例えば、非定常的に実行されるプログラムの実行により、上記した、定常的に実行されるプログラムの実行が阻害されてしまうことを少なくしたり、逆に、定常的に実行されるプログラムの実行により、非定常的に実行されるプログラムの実行が阻害されてしまったりするのが防がれる。このため、マルチプロセッサシステムの性能が低下してしまうことを防ぎ、マルチプロセッサシステムの性能を向上できる。
なお、定常的に実行されるプログラムは、例えば、いわゆるサービスプログラムであってもよいし、いわゆるデーモンプログラムであってもよいし、HTTP(HyperText Transfer Protocol)サーバ等のサーバ用のプログラムであってもよいし、対象を常時監視する監視プログラムであってもよい。
他方、非定常的に実行されるプログラムは、例えば、キー入力などのユーザ入力や、通信による入力、0による除算の発生などの各種のイベントを処理するイベント処理用のプログラムであってもよい。
ここで、当該マルチプロセッサは、前記複数のプロセッサに共有される主記憶メモリを備え、前記複数のプロセッサは、それぞれ、当該主記憶メモリを用いて、前記非定常的に実行されるプログラム及び前記定常的に実行されるプログラムをそれぞれ実行するものとしてもよい。
この構成により、例えば、前記複数のプロセッサが、それぞれ、当該プロセッサが専有する専有メモリを用いてプログラムを実行する。これにより、選択されたプロセッサが、当該プロセッサ以外の他のプロセッサの当該専有メモリから、非定常的に実行されるプログラムによる処理の途中の中間データ等のデータを長い時間をかけて取得する場合などと比べて、非定常的に実行されるプログラムによる処理の途中のデータの取得の遅延をなくして、マルチプロセッサシステムがより高速に動作できる。
ここで、当該マルチプロセッサは、前記複数のプロセッサが、それぞれ、複数のレジスタ群と、前記複数のレジスタ群のうちで何れかのレジスタ群を、プログラムの実行に当該プロセッサが利用する実行用のレジスタ群として選択すると共に、選択したレジスタ群以外の他の何れかのレジスタ群をコンテキストデータの退避復帰用のレジスタ群として選択するレジスタ群選択部とを備え、前記複数のプロセッサは、それぞれ、当該プロセッサの当該レジスタ群選択部が前記実行用のレジスタとして選択するレジスタ群を使用してプログラムを実行し、前記退避復帰制御部は、当該プロセッサが、選択された前記実行用のレジスタ群を使用してプログラムを実行するのと同時に、選択された前記退避復帰用のレジスタ群に対し、コンテキストデータの退避及び復帰を行うものとしてもよい。
この構成により、例えば、実行用レジスタ群が使用されたプログラムの実行と並列にコンテキストデータの退避復帰が行われるなどして、当該実行と同時にコンテキストデータの退避復帰が行われることにより、退避及び復帰の処理や、プログラムの実行の処理にオーバヘッド(遅延時間)が生じるのを防ぎ、マルチプロセッサシステムを高速化できる。
ここで、当該マルチプロセッサシステムは、前記複数のプロセッサがそれぞれローカルキャッシュメモリを有する共有メモリ型マルチプロセッサシステムであるものとしてもよい。
この構成により、定常的に実行されるプログラムの処理が、当該プログラムを実行するプロセッサの外部で無駄な動作を生じさせることを回避したり、外部の動作により当該プログラムの処理のために当該プロセッサで無駄な動作が生じることを防いだりでき、マルチプロセッサシステムの動作を高速化できる。
ここで、前記選択要求部は、前記非定常的に実行されるプログラムの実行要求が発生するごとに、前記複数のプロセッサのうちで、前回の前記非定常的に実行されるプログラムの実行要求の発生に際して選択したプロセッサとは別のプロセッサを選択するものとしてもよい。
この構成により、何れのプロセッサも、非定常的に実行されるプログラムの処理を同じ処理の量ずつ行うようにでき、確実かつ十分に、非定常的に実行されるプログラムの処理が複数のプロセッサに分散され、十分かつ確実にマルチプロセッサシステムの性能を向上できる。
なお、例えば、選択要求部は、複数のプロセッサのうちの1つを特定する特定データを保持し、保持する特定データにより特定されるプロセッサを選択すると共に、当該選択のたびに、保持する特定データを、選択した前記プロセッサ以外の他のプロセッサを特定する特定データに更新するものであってもよい。
ここで、前記選択要求部は、前記複数のプロセッサの動作状態を検出し、検出された動作状態に対して予め定められた対応関係を有するプロセッサを選択するものとしてもよい。
この構成であれば、例えば、各プロセッサのうちで何れがスリープ状態(空き状態)であるかなどの動作状態、つまり、何れのプロセッサが、非定常的に実行されるプログラムを実行するための余裕がある予め定められた状態であるかなどの各プロセッサの動作状態が検出される。そして、この検出に基づいて、スリープ状態であるプロセッサが選択されるなど、動作状態に対応する適切なプロセッサが選択でき、選択時の動作状態の実情に適するプロセッサを的確に選択し、十分かつ確実にマルチプロセッサシステムの性能を向上できる。
また、前記課題を解決するにあたり、本発明に係る他のマルチプロセッサシステムは、次の構成を採ってもよい。すなわち、(a)複数のプログラムを切替えながら実行する複数のプロセッサと、前記複数のプロセッサに共有される主記憶メモリと、前記複数のプロセッサのそれぞれが専有し、定常的に実行される1つ以上のプログラムのコンテキストデータを格納するための第二のコンテキストメモリと、前記複数のプロセッサで共有され、前記複数のプロセッサのいずれかで、非定常的に実行される1つ以上のプログラムのコンテキストデータを格納するための第一のコンテキストメモリと、前記非定常的に実行される1つ以上のプログラムの実行要求が発生するごとに、前記複数のプロセッサのいずれかを選択するかを決定し、前記実行要求を選択したプロセッサに対し実行を要求する選択先切り替え手段と、前記複数のプロセッサのそれぞれが専有し、所定のプログラム切り替えタイミングまたは、前記選択先切り替え手段からの前記実行要求に応じて、前記第二のコンテキストメモリまたは前記第一のコンテキストメモリのいずれかを選択して、接続されるプロセッサに対しコンテキストデータの退避復帰を行う処理制御手段と、を有することとする。
これによって、非定常的に実行されるプログラムの処理を複数のプロセッサに分散させることが可能となり、かつ定常的に実行されるプログラムはプロセッサごとにローカルタスクとして独立にスケジューリングすることが可能となる。これにより、スケジューリングの容易性を維持しつつ、効率的なプログラム実行により、プロセッサシステムの性能向上に寄与する。
さらに、(b)前記複数のプロセッサそれぞれは、複数のレジスタ群と、複数のレジスタ群のいずれかをプログラム実行対象として選択し、前記プログラム実行対象として選択されていないレジスタ群のいずれかをコンテキスト退避復帰対象として選択するレジスタ群選択手段とを備え、前記プロセッサは、前期レジスタ群選択手段が選択するレジスタ群を使用してプログラムを実行し、前記コンテキスト退避復帰対象として選択されたレジスタ群に対し、プログラムの実行と平行してコンテキストデータの退避復帰を行うこととしてもよい。
これによって、退避復帰による処理のオーバヘッドなく、スケジューリングの容易性を維持しつつ、効率的なプログラム実行に寄与する。
さらに、(c)前記マルチプロセッサシステムは、複数のプロセッサのそれぞれがローカルキャッシュメモリを有する共有メモリ型マルチプロセッサシステムであるとしてもよい。
これによって、定常的に実行されるプログラムは、プロセッサ間を移動することがないため、ローカルキャッシュに乗せられたプログラムの命令およびデータの一貫性を保つための、スヌープ動作等によるオーバヘッドを発生させることなくプログラムの実行が可能となり、プロセッサシステムの性能向上に寄与する。
さらに、(d)前記選択先切り替え手段は、予め定められた順序に従って、前記非定常的に実行される1つ以上のプログラムの実行要求が発生するごとに、前記複数のプロセッサの選択先を切り替えるとしてもよい。
これによって、非定常的に実行されるプログラムのプロセッサの割当て回数を均等化することができ、効率的なプログラム実行が可能となり、プロセッサシステムの性能向上に寄与する。
または、(e)前期選択先切り替え手段は、前記複数のプロセッサの動作状態に基づいて選択先を決定するとしてもよい。
これによって、非定常的に実行されるプログラムのプロセッサの割当てを、その時点で空き状態等の余裕のあるプロセッサに配分することが可能となり、プロセッサシステムの性能向上に寄与する。
または、(f)前記複数のプロセッサのそれぞれは、前記定常的に実行される1つ以上のプログラムの実行を中断する事由の発生および中断する事由が解消したことを検出してプログラム実行の停止・再開を制御するイベント検出手段を備え、前記選択先切り替え手段は前記イベント検出手段からのイベント情報に基づいて選択先を決定するとしてもよい。
これによって、非定常的に実行されるプログラムのプロセッサの割当てを、各プロセッサのイベント情報に従って柔軟にプロセッサに配分することが可能となり、プロセッサシステムの性能向上に寄与する。
または、(g)前記複数のプロセッサのそれぞれは、前記定常的に実行される1つ以上のプログラムの実行を中断する事由の発生および中断する事由が解消したことを検出してプログラム実行の停止・再開を制御するイベント検出手段を備え、前記選択先切り替え手段は前記イベント検出手段からのイベント情報の所定の期間内での履歴に基づいて選択先を決定するとしてもよい。
これによって、非定常的に実行されるプログラムのプロセッサの割当てを、各プロセッサの過去のイベント情報も含め柔軟にプロセッサに配分することが可能となり、プロセッサシステムの性能向上に寄与する。
なお、次の構成を採ってもよい。すなわち、マルチプロセッサシステムであって、複数のプロセッサがそれぞれ専有し、定常的に実行されるプログラムのコンテキストデータを格納するローカルコンテキストメモリと、複数のプロセッサが共有し、非定常的に実行されるプログラムのコンテキストデータを格納する共有コンテキストメモリを持ち、定常実行されるプログラムはプロセッサごとのローカルスレッドとして実行し、非定常実行されるプログラムは、複数のプロセッサのいずれかに分配して実行することにより、リアルタイム性を維持しつつ、高速にイベント処理を実行可能なマルチプロセッサシステムの構成を採ってもよい。
本発明によれば、定常的に実行されるプログラムは特定のプロセッサで実行することで、キャッシュの一貫性保持のためのオーバヘッドを生じることなく、かつ非定常的に実行されるプログラムは複数のプロセッサに配分可能であることにより、非定常的に実行されるプログラムが要求する性能分を複数のプロセッサに分散させることが可能となり、プロセッサシステムの性能向上に寄与する。
図1は、実施の形態1におけるマルチプロセッサシステムの構成を示すブロック図である。 図2は、実施の形態1における処理制御部の構成を示すブロック図である。 図3は、実施の形態1における選択先切替部の構成を示すブロック図である。 図4は、実施の形態1におけるコンテキスト切り替えを説明するタイミングチャートである。 図5は、実施の形態1におけるプログラムの実行を説明するタイミングチャートである。 図6は、実施の形態1におけるプログラムの実行を説明するタイミングチャートである。 図7は、実施の形態2におけるマルチプロセッサシステムの構成を示すブロック図である。 図8は、実施の形態2における選択先切替部の構成を示すブロック図である。 図9は、実施の形態2における選択先切替部の構成を示すブロック図である。 図10は、実施の形態2におけるプログラムの実行を説明するタイミングチャートである。 図11は、実施の形態3におけるマルチプロセッサシステムの構成を示すブロック図である。 図12は、実施の形態3における選択先切替部の構成を示すブロック図である。 図13は、実施の形態3におけるプログラムの実行を説明するタイミングチャートである。
(実施の形態1)
以下、本発明に係る実施の形態1について、図面を参照しながら説明する。
図1は、本発明に係る実施の形態1におけるマルチプロセッサシステム100の構成を示すブロック図である。
マルチプロセッサシステム100は、図1に示されるように、2個のプロセッサエレメント101と、選択先切替部109と、共有コンテキストメモリ110と、コンテキストデータセレクタ111と、共有バス150と、メインメモリ151とを備える。
2個のプロセッサエレメント101は、それぞれ、CPU102と、処理制御部103と、ローカルコンテキストメモリ104と、レジスタ群105と、レジスタ群106と、コンテキストデータセレクタ107と、コンテキストデータセレクタ108と、ローカルキャッシュメモリ152とを備える。なお、「複数のAのうちのそれぞれのAが、Bである(Bする)」ことは、「複数のAは、それぞれ、Bである(Bする)」と呼ばれる。それぞれのプロセッサエレメント101は、そのプロセッサエレメント101のCPU102を備える(図1参照)。複数のプロセッサエレメント101は、複数のプロセッサエレメント101のなかに含まれるプロセッサエレメント101の個数(2個)と同じ個数(2個)だけのCPU102を備える。
以下、図1で左側のプロセッサエレメント101を、左側のプロセッサエレメント101と呼び、図1で右側のプロセッサエレメント101を、右側のプロセッサエレメント101と呼ぶ。
図2は、本発明に係る実施の形態1における各処理制御部103(図1)の内部構成を示すブロック図である。以下で説明する処理制御部103の内部構成は、例えば、左側のプロセッサエレメント101の内部構成であり、他方の右側のプロセッサエレメント101は、以下で説明する左側のプロセッサエレメント101の内部構成と同じ内部構成を有する。
処理制御部103は、図2に示されるように、コンテキスト切替制御部120と、サイクルカウンタ121と、ローカルイベント検出部122とを備える。
図3は、本発明に係る実施の形態1における選択先切替部109(図1)の内部構成を示すブロック図である。
選択先切替部109は、図3に示されるように、CPU選択ステート123と、実行要求先選択部124とを備える。
図4は、プロセッサエレメント101における、レジスタ群105およびレジスタ群106のいずれかのデータを選択するコンテキストデータセレクタ107およびコンテキストデータセレクタ108から構成されるセレクタの動作と、当該セレクタにより選択されたデータが用いられた、CPU102でのプログラムA〜Cの実行の処理について説明するタイミングチャートである。
なお、図4の説明においては、プログラムA〜Cは、例えば、左側のプロセッサエレメント101のCPU102により実行される複数のプログラムであり、他方の、右側のプロセッサエレメント101のCPU102は、図4の説明と同様における複数のプログラムの実行の処理と同様の処理により、複数のプログラムを実行する。
時刻t3までの期間の間、CPU102は、プログラムAを実行する。
図4において、時刻t3までの期間、コンテキストデータセレクタ107およびコンテキストデータセレクタ108から構成されるセレクタは、CPU102でのプログラム実行による読出しおよび書込みアクセスについては、図1において上側に示されるレジスタ群105を、プログラム実行対象のレジスタ群として選択し、処理制御部103によるコンテキストデータの読出し(退避)および書込み(復帰)アクセスについては、他方の下側のレジスタ群106を、コンテキスト退避復帰対象レジスタ群として選択する。なお、当該レジスタは、図1に示されるようにマルチプロセッサシステム100が、レジスタ群105とレジスタ群106との2つだけのレジスタ群を有するのでなく、3つ以上のレジスタ群を有する場合には、各レジスタ群のうちから、プログラム実行対象となっているレジスタ群以外の他のレジスタ群を、コンテキスト退避復帰対象レジスタ群として選択する。
時刻t3までの期間の間、CPU102は、コンテキストデータセレクタ107およびコンテキストデータセレクタ108が実行対象のレジスタ群として選択しているレジスタ群105に保持された、プログラムAのコンテキストを使用して、プログラムAを実行する。
そして、時刻t1から時刻t2までの期間の間、処理制御部103は、スケジューリングによってCPU102が次に実行予定となったプログラムBのコンテキストデータを復帰するため、時刻t1から時刻t2までの期間において、セレクタによってコンテキスト退避復帰対象レジスタ群として選択されている、プログラム実行対象となっていない、下側のレジスタ群106に対し、CPU102でのプログラム実行と並行して、当該退避復帰対象レジスタ群に格納された、既存のプログラムNのコンテキストデータの退避および、当該退避復帰対象レジスタ群への、プログラムBのコンテキストデータの復帰を行う。
時刻t3において、コンテキストデータセレクタ107およびコンテキストデータセレクタ108は、CPU102からのアクセスについては下側のレジスタ群106を選択し、処理制御部からのアクセスについては上側のレジスタ群105を選択するように選択先を切り替える。
これにより、CPU102は、コンテキストの退避および復帰の処理によるオーバヘッドを発生させることなく、迅速に、時刻t3からプログラムBの実行を開始する。
図5は、定常的に実行される複数のプログラムをCPU102が実行する場合のマルチプロセッサシステム100の動作を説明するタイミングチャートである。
図5に示されるように、各CPU102は、それぞれ、非定常的に実行されるプログラムの実行要求がマルチプロセッサシステム100にない場合は、2つあるローカルコンテキストメモリ104のうちで、当該CPU102に対応するローカルコンテキストメモリ104に格納されている、定常的に実行される複数のプログラムを実行し、独立したスケジュール周期で、実行するプログラムを、それら定常的に実行される複数のプログラムのうちで切り替える。
ここでの例としては、一方のCPU102(例えば、左側のプロセッサエレメント101のCPU102)では定常的に実行されるプログラムA、B、Cを順次切り替えながら擬似並列的に実行し、他方のCPU102(例えば、右側のプロセッサエレメント101のCPU102)では定常的に実行されるプログラムD、E、Fを順次切り替えながら擬似並列的に実行する場合を示している。
コンテキスト切替制御部120は、実行されるプログラムが、実行中のプログラムから別のプログラムに切り替えられるタイミングとなると、ローカルコンテキストメモリ104に格納されている各プログラムのコンテキストデータに含まれるスケジューリング順序に基づき、次の実行対象プログラム(例えばプログラムB)を決定し、コンテキストデータの退避復帰を開始する。
そして、処理制御部103は、この退避復帰の完了後、コンテキストデータセレクタ107およびコンテキストデータセレクタ108から構成されるセレクタの選択先を切り替える。処理制御部103は、具体的には、上述した、プログラム実行対象のレジスタ群として、その切り替えの直前にコンテキストデータの退避復帰がされたレジスタ群、つまり直前にコンテキスト退避復帰対象レジスタ群として選択されていたレジスタ群を選択させ、これにより、直前に退避復帰がされたコンテキストデータのプログラム(プログラムB)の実行をCPU102に開始させる。
そして、コンテキスト切替制御部120(図2)は、このような、実行されるプログラムの切り替えが発生した時に、切り替えにより新たに実行が開始されるプログラム(例えばプログラムB)のコンテキストデータに含まれるカウンタ初期値を、サイクルカウンタ121(図2)へ通知する。
サイクルカウンタ121は、この通知がされると、通知されたカウンタ初期値を自己に設定すると共に、設定の後、クロックサイクルごとにダウンカウントし、カウンタ値が0となれば、0となったことをコンテキスト切替制御部120に通知することで、次のプログラム(例えばプログラムC)への切り替えをコンテキスト切替制御部120(処理制御部103)に開始させる。上述した、例えば、プログラムAからプログラムBへの切り替えや、プログラムBからプログラムCへの切り替えなどの、実行されるプログラムの切り替えのタイミングは、この通知があったタイミングである。処理制御部103は、この通知があると、実行されるプログラムを切り替える。
なお、上記に説明した、コンテキストデータの退避復帰をプログラム実行と並列的に実行することで、退避復帰のオーバヘッドなくプログラム実行を可能とすることや、さまざまなスケジューリング方法の技術についての様々な公知の技術をマルチプロセッサシステム100に適用するものとしてもよい。公知の技術に関係する点に関しては、説明の便宜上、詳しい説明を省略する。
図6は、非定常的に実行されるプログラムの実行要求が発生した場合のCPU102の動作を説明するタイミングチャートである。
図6では、一方のCPU102(例えば左側のプロセッサエレメント101のCPU102)では定常的に実行されるプログラムA、B、Cを順次切り替えながら擬似並列的に実行し、他方のCPU102(例えば右側のプロセッサエレメント101のCPU102)では定常的に実行されるプログラムD、E、Fを順次切り替えながら擬似並列的に実行しているものとし、非定常的に実行されるプログラムの実行要求の要因として、各プログラムに依存しない共通の割込み要求が発生した場合の例を示す。例えば、この、共有の割り込み要求は、ユーザ入力によって発生する割込み要求や、通信の着信により発生する割込み要求が含まれる。
時刻t1において、共有の割込み要求(図1の共通割込み要求信号112)が発生する時刻が示される。
実行要求先選択部124は、時刻t1で共有の割込み要求が発生すると、CPU選択ステート123(図3)の選択情報に基づいて、複数のCPU102のうちのひとつに対して、非定常的に実行されるプログラムの実行をするよう、対応する処理制御部103にプログラム実行要求を渡す。
ここで、CPU選択ステート123は、レジスタ群105、レジスタ群106の何れか一方を、選択先切替部109による選択の選択先として特定するデータを保持するレジスタにより構成され、共通割込み要求を受けるごとに、保持するデータが特定する、CPU102の選択先を更新し、各CPU102を順次指定するように更新される。なお、例えば、CPU選択ステート123は、共通割込み要求を受けると、更新を行う更新用の回路を有し、この更新用の回路を用いるなどして、共通割込み要求を受けた場合に、更新を行う。
処理制御部103は、プログラム実行用要求を受けると、つまり、上述した共有割り込みが発生して、選択先切替部109が当該処理制御部103に実行要求を行うと、定常的に実行しているプログラムのスケジューリングに割込んで、非定常的に実行されるプログラムIを、次に実行するプログラムとして、既存の、定常的に実行されるプログラムのコンテキストデータをプログラム実行対象のレジスタ群からローカルコンテキストメモリ104に退避し、共有コンテキストメモリ110から、その、次に実行するプログラムの、非定常的に実行されるプログラムのコンテキストデータをコンテキスト退避復帰対象レジスタ群に復帰する。
コンテキスト切替制御部120(図2)は、上記のようにして処理制御部103によりコンテキストデータが、共有コンテキストメモリ110から復帰された後、コンテキストデータセレクタ107およびコンテキストデータセレクタ108の選択先を切り替え、この切り替えがされることにより、復帰されたコンテキストデータが書き込まれたレジスタ群がプログラム実行対象のレジスタ群として選択されて、CPU102は、当該コンテキストデータを用いて、プログラムIの実行を開始する。こうして、CPU102は、図6の「I実行」の記号により示される期間の間、プログラムIを実行する。
なお、サイクルカウンタ121は、こうして非定常的に実行されるプログラムが実行される途中は停止し、つまり、ダウンカウントを行わずに同じカウンタ値を維持し、次の切り替えタイミングは、プログラムIの実行終了によって決定される。すなわち、本実施の形態の例では、割り込まれたプログラムCは、プログラムIが終了後、次のCPU102の実行対象として割り当てられることとしている(図6における「I実行」の後の「C実行」を参照)。
処理制御部103は、プログラムIの実行が終了した後、プログラム実行対象外となったレジスタ群、つまりコンテキスト退避復帰対象レジスタ群に格納されているプログラムIのコンテキストデータを復帰する場合は、共有コンテキストメモリ110へ復帰する。
2個のプロセッサエレメント101は、それぞれ、何れも、以上に説明したような処理を行う。これにより、t2の時刻で共通割込み要求が発生した場合は、CPU選択ステート123が、t1の時刻に発生した共通割込み要求に基づくプログラム実行に際して、予め、当該プログラム実行を行ったCPU102(例えば、図1における左側のCPU102)とは異なる他方のCPU102(例えば、図1における右側のCPU102)に更新されていることから、当該他方のCPU102、つまり時刻t1での実行に係るCPU102とは別のCPU102により、非定常的に実行されるプログラムの実行が行われる。
以上、本実施の形態におけるマルチプロセッサシステム100によれば、定常的に実行されるプログラムは各プロセッサ(図1における左側のプロセッサエレメント101および右側のプロセッサエレメント101)で、それぞれ、個別にスケジューリングして実行される。このため、プロセッサごとに独立したスケジューリングが可能となる上、プロセッサ間での定常的に実行されるプログラムの移動(データ)がない。このため、共有バス150を介したキャッシュの一貫性保持のためのキャッシュスヌープ動作などによるオーバヘッドもなく、効率的なプログラム実行が可能となる。さらに、イベント処理等の非定常的に実行されるプログラムの実行については、複数のCPUにその処理負荷を分散平均化させることができ、特定のプロセッサにイベント処理をさせる場合に比べ、プロセッサの必要最大処理性能を低減することが可能となる。
なお、本実施の形態では、2個のプロセッサの構成を示したが、本発明は2個のプロセッサを有するマルチプロセッサシステムに限定されるものではなく、3個以上のプロセッサを有するマルチプロセッサシステムにも適用可能である。
また、本実施の形態では、2つのレジスタ群(レジスタ群105、レジスタ群106:図1参照)の構成を示したが、複数のプログラムを切り替えて実行するスケジューリング方法などによっては、3個以上のレジスタ群で構成するほうが退避復帰の回数を減らすことができるような場合についても、本発明の適用は可能である。
こうして、複数のプログラムを切り替えながら実行する複数のプロセッサ(左側のプロセッサエレメント101、右側のプロセッサエレメント101:図1)と、前記複数のプロセッサのいずれかで、非定常的に実行されるプログラムのコンテキストデータを格納し、前記複数のプロセッサで共有される第一のコンテキストメモリ(共有コンテキストメモリ110)と、前記複数のプロセッサの個数と同じ個数設けられ、それぞれ、対応する前記プロセッサが定常的に実行するプログラムのコンテキストデータを格納し、当該プロセッサにより専有される第二のコンテキストメモリ(左側のプロセッサエレメント101が有するローカルコンテキストメモリ104、及び、右側のプロセッサエレメント101が有するローカルコンテキストメモリ104)と、同じく前記複数のプロセッサの個数と同じ個数設けられ、それぞれ、対応する前記プロセッサに対してプログラムの実行要求があった場合に、当該プログラムが前記非定常的に実行されるプログラムであれば前記第一のコンテキストメモリを選択すると共に、前記定常的に実行するプログラムであれば前記第二のコンテキストメモリを選択して、選択したコンテキストメモリと当該プロセッサとの間で当該プログラムのコンテキストデータの退避及び復帰を行い、当該プロセッサが専有する退避復帰制御部(左側のプロセッサエレメント101が有する処理制御部103、及び、右側のプロセッサエレメント101が有する処理制御部103)と、前記非定常的に実行されるプログラムの実行要求が発生するごとに、前記複数のプロセッサのいずれかを選択し、選択したプロセッサに対して当該プログラムの実行要求を行う選択要求部(選択先切替部109)と、を備えるマルチプロセッサシステム(マルチプロセッサシステム100)が構成される。
これにより、複数のプロセッサは、それぞれ、自由に、定常的に実行するプログラムを実行でき、複数のプロセッサの何れかにより非定常的に実行されるプログラムは、何れのプロセッサでも実行できて、非定常的に実行されるプログラムを実行するプロセッサが、複数のプロセッサに十分に分散され、例えば、非定常的に実行されるプログラムの実行により、定常的に実行されるプログラムの実行が阻害されてしまうことを少なくしたり、逆に、定常的に実行されるプログラムの実行により、非定常的に実行されるプログラムの実行が阻害されてしまったりすることを防ぎ、性能を向上できる。
ここで、当該マルチプロセッサは、前記複数のプロセッサに共有される主記憶メモリ(メインメモリ151)を備え、前記複数のプロセッサは、それぞれ、当該主記憶メモリを用いて、前記非定常的に実行されるプログラム及び前記定常的に実行されるプログラムをそれぞれ実行する。
ここで、当該マルチプロセッサは、前記複数のプロセッサは、それぞれ、複数のレジスタ群(レジスタ群105と、レジスタ群106)と、前記複数のレジスタ群のうちで何れかのレジスタ群を、プログラムの実行に当該プロセッサが利用する実行用のレジスタ群として選択すると共に、選択したレジスタ群以外の他の何れかのレジスタ群をコンテキストデータの退避復帰用のレジスタ群として選択するレジスタ群選択部(コンテキストデータセレクタ107およびコンテキストデータセレクタ108から構成されるセレクタ)とを備え、前記複数のプロセッサは、それぞれ、当該プロセッサの当該レジスタ群選択部が前記実行用のレジスタとして選択するレジスタ群を使用してプログラムを実行し、前記退避復帰制御部は、当該プロセッサが、選択された前記実行用のレジスタ群を使用してプログラムを実行するのと同時に、選択された前記退避復帰用のレジスタ群に対し、コンテキストデータの退避及び復帰を行うものである。
ここで、当該マルチプロセッサシステムは、前記複数のプロセッサがそれぞれローカルキャッシュメモリ(左側のプロセッサエレメント101が有するローカルキャッシュメモリ152、及び、右側のプロセッサエレメント101が有するローカルキャッシュメモリ152)を有する共有メモリ型マルチプロセッサシステムである。
ここで、前記選択要求部は、前記非定常的に実行されるプログラムの実行要求が発生するごとに、前記複数のプロセッサのうちで、前回の前記非定常的に実行されるプログラムの実行要求の発生に際して選択したプロセッサとは別のプロセッサを選択する。
なお、選択要求部は、複数のプロセッサのうちの1つを特定する特定データ(CPU選択ステート123(図3)の選択情報)を保持し、保持する特定データにより特定されるプロセッサ(例えば、図6の時刻t1で選択される図6上段の方のプロセッサエレメント101)を選択すると共に、当該選択のたびに、保持する特定データを、選択した前記プロセッサ以外の他のプロセッサ(例えば、図6の時刻t2で選択される図6下段の方のプロセッサエレメント101)を特定する特定データに更新するものである。
(実施の形態2)
以下、本発明に係る実施の形態2について、図面を参照しながら説明する。
図7は、本発明に係る実施の形態2におけるマルチプロセッサシステム200の構成を示すブロック図である。なお、本発明に係る実施の形態1と同一の構成については、同一の番号を付与して説明を省略する。
マルチプロセッサシステム200は、図7に示されるように、2個のプロセッサエレメント201と、選択先切替部209と、共有コンテキストメモリ110と、コンテキストデータセレクタ111と、共有バス150と、メインメモリ151とを備える。
そして、プロセッサエレメント201は、CPU102と、処理制御部203と、ローカルコンテキストメモリ104と、レジスタ群105と、レジスタ群106と、コンテキストデータセレクタ107と、コンテキストデータセレクタ108と、ローカルキャッシュメモリ152とを備える。
図8は、本発明に係る実施の形態2における処理制御部203(図7)の内部構成を示すブロック図である。
処理制御部203は、図8に示されるように、コンテキスト切替制御部120と、サイクルカウンタ121と、ローカルイベント検出部222とを備える。
図9は、本発明に係る実施の形態2における選択先切替部209(図7参照)の構成を示すブロック図である。
選択先切替部209は、図9に示されるように、CPU選択ステート223と、実行要求先選択部224とを備える。
図10は、非定常的に実行されるプログラムの実行要求が発生した場合のCPU102の動作を説明するタイミングチャートである。
図10では、一方のCPU102(例えば、図7における左側のプロセッサエレメント201)では定常的に実行されるプログラムA、B、Cを順次切り替えながら擬似並列的に実行し、他方のCPU102(例えば、図7における右側のプロセッサエレメント201)では定常的に実行されるプログラムD、E、Fを順次切り替えながら擬似並列的に実行しているものとし、非定常的に実行されるプログラムの実行要求の要因として、各プログラムに依存しない共通の割込み要求が発生した場合の例を示す。
ここで、各CPU102は、それぞれ、プログラムを実行しているときに、実行しているプログラムがスリープ状態となると、そのプログラム実行で設定されたカウンタ値の残り分空き状態とし、カウンタ値が0となるまで、スリープ状態となったプログラム以外の他のプログラムのスケジューリングをしないこととする。例えば、図10に示されるプログラムAの実行で設定されたカウンタ値の残り分空き状態とし、カウンタ値が0となるまで他のプログラムのスケジューリングをしない。
時刻t1は、共有の割込み要求が発生した第1の時刻を示す。また、時刻t2は、共有の割込み要求が発生した第2の時刻を示す。
時刻t1は、2つのCPU102の何れもスリープ状態ではない間において、共有の割込み要求が発生した時刻である。
実行要求先選択部224は、時刻t1において、共有の割込み要求が発生すると、CPU選択ステート223の選択情報に基づいて、複数のCPU102のうちの1つに対して、非定常的に実行されるプログラムの実行をするよう、当該CPU102に対応する処理制御部203にプログラム実行要求を渡す。
なお、CPU選択ステート223は、共通割込み要求を受けるごとにCPU102の選択先を更新し、各CPU102を順次指定するように更新される。
処理制御部203は、プログラム実行用要求を受けると、定常的に実行しているプログラムのスケジューリングに割込んで、非定常的に実行されるプログラムIを次に実行するプログラムとして、既存の定常的に実行されるプログラムのコンテキストデータをローカルコンテキストメモリ104に退避し、共有コンテキストメモリ110からコンテキストデータを復帰する。
コンテキスト切替制御部120は、共有コンテキストメモリ110からのコンテキストデータ復帰後、コンテキストデータセレクタ107およびコンテキストデータセレクタ108の選択先を切り替え、これにより、CPU102は、プログラムIの実行を開始する。
なお、非定常的に実行されるプログラムの実行中、サイクルカウンタ121は停止し、次の切り替えタイミングはプログラムIの実行終了によって決定する。すなわち、本実施の形態の例では、割り込まれたプログラムCは、プログラムIが終了後、次のCPU102実行対象として割り当てられることとしている。
処理制御部103は、プログラムIの実行が終了した後、プログラム実行対象外となったレジスタ群に格納されているプログラムIのコンテキストデータを復帰する場合は、共有コンテキストメモリ110へ復帰する。
一方、時刻t2は、一方のCPU102がスリープ状態となっている間において、共有の割込み要求が発生した時刻である。
t2の時刻に共通割込み要求においては、その時点で一方のCPU102がスリープ状態となっており、ローカルイベント検出部222(図8)からスリープ状態を含むイベント検出信号(図8参照)を通知される実行要求先選択部224(図9参照)は、CPU選択ステート123の状態より優先して、イベント検出に基づき、スリープ状態のCPU102で非定常的に実行されるプログラムの実行をするよう、スリープ状態である当該CPU102に対応する処理制御部203に、プログラム実行要求を渡す。なお、CPU選択ステート223は、実行要求先選択部224がイベント検出信号を受けて、イベント検出信号により特定されるCPU102に実行要求が渡された場合は、更新されない。
以上、本実施の形態におけるマルチプロセッサシステム200によれば、定常的に実行されるプログラムは各プロセッサ個別にスケジューリングして実行されるため、プロセッサごとに独立したスケジューリングが可能となる上、プロセッサ間での定常的に実行されるプログラムの移動がないため、共有バス150を介したキャッシュの一貫性保持のためのキャッシュスヌープ動作などによるオーバヘッドもなく、効率的なプログラム実行が可能となる。さらに、イベント処理等の非定常的に実行されるプログラムの実行については、複数のCPUにその処理負荷を分散平均化させることができ、特定のプロセッサにイベント処理をさせる場合に比べ、プロセッサの必要最大処理性能を低減することが可能となる。
しかも、複数のCPUのいずれかに空き状態があるような場合、当該CPUでイベント処理を実行させることにより、さらに効率的なプログラム実行が可能となる。
こうして、選択要求部(選択先切替部209)は、複数のプロセッサの動作状態を検出し、検出された動作状態に対して予め定められた対応関係を有するプロセッサを選択するマルチプロセッサシステム200が構成される。
ここで、複数のプロセッサは、それぞれ、定常的に実行されるプログラムの、当該プロセッサによる実行を中断する事由が発生したこと、および、当該事由が解消したことを各々検出して、前記発生が検出された場合には当該実行を停止させ、前記解消が検出された場合には、停止された当該実行を再開させる停止再開制御部(処理制御部203)を備え、前記選択要求部は、前記停止再開制御部から前記停止および再開の情報を取得し、取得された情報により、当該停止再開制御部を備えるプロセッサが前記実行を停止させた後であり、かつ、当該実行を再開させる前であることが示される場合に、当該プロセッサを選択するマルチプロセッサシステムが構成される。
(実施の形態3)
以下、本発明に係る実施の形態3について、図面を参照しながら説明する。
図11は、本発明に係る実施の形態3におけるマルチプロセッサシステム300の構成を示すブロック図である。なお、本発明に係る実施の形態1または本発明に係る実施の形態2と同一の構成については、同一の番号を付与して説明を省略する。
マルチプロセッサシステム300は、図11に示されるように、2個のプロセッサエレメント201と、選択先切替部309と、共有コンテキストメモリ110と、コンテキストデータセレクタ111と、共有バス150と、メインメモリ151とを備える。
図12は、本発明に係る実施の形態3における選択先切替部309の構成を示すブロック図である。
選択先切替部309は、図12に示されるように、実行要求先選択部324と、2個のイベントカウンタ325と、タイマ326とを備える。
イベントカウンタ325は、それぞれ、各処理制御部203がそれぞれ備える各ローカルイベント検出部(図8のローカルイベント検出部222を参照)のうちで、当該イベントカウンタ325に接続されるローカルイベント検出部からのイベント検出信号をカウントアップし、また、タイマ326からのオーバーフロー通知もしくは共通割込み要求によりカウント値をリセットする。
図13は、非定常的に実行されるプログラムの実行要求が発生した場合のCPU102の動作を説明するタイミングチャートである。
図13では、一方のCPU102(例えば、図11における左側のプロセッサエレメント201)では定常的に実行されるプログラムA、B、C、Gを順次切り替えながら擬似並列的に実行する。そして、図13では、他方のCPU102(例えば、図11における右側のプロセッサエレメント201)では、定常的に実行されるプログラムD、E、F、Hを順次切り替えながら擬似並列的に実行している。そして、図13では、非定常的に実行されるプログラムの実行要求の要因として、各プログラムに依存しない共通の割込み要求が発生した場合の例を示す。
ここで、プログラムがスリープ状態となると、当該プログラムを実行していたCPU102は、実行していた当該プログラム以外の他のプログラムのスケジューリングを開始し、次のプログラム実行へ遷移することとする。例えば、図13では、一方のCPU102が、プログラムAがスリープ状態となった場合に、他のプログラムであるプログラムB、C、Gのスケジューリングを開始し、プログラムBの実行へと遷移する等の動作が生じることを示している。
時刻t1は、共有の割込み要求が発生した時刻である。
イベントカウンタ325は、各CPU102のイベント検出の履歴をカウントアップし、時刻t1までのイベント検出信号により通知されたスリープ状態への遷移をカウントしている。
そして、実行要求先選択部324は、時刻t1で共有の割込み要求が発生すると、その、イベントカウンタ325でのカウントされた値の大小に従って、複数のCPU102のうちのひとつに対し非定常的に実行されるプログラムの実行をするよう、対応する処理制御部203にプログラム実行要求を渡す。ここでの例では、実行要求先選択部324は、カウント値の大きいイベントカウンタ325に対応する処理制御部203に対し、プログラム実行要求を渡すこととしている。
以上、本実施の形態におけるマルチプロセッサシステム300によれば、定常的に実行されるプログラムは各プロセッサ個別にスケジューリングして実行される。このため、プロセッサごとに独立したスケジューリングが可能となる上、プロセッサ間での定常的に実行されるプログラムの移動がないため、共有バス150を介したキャッシュの一貫性保持のためのキャッシュスヌープ動作などによるオーバヘッドもなく、効率的なプログラム実行が可能となる。さらに、イベント処理等の非定常的に実行されるプログラムの実行については、複数のCPUの状況に応じてさらに柔軟にその処理負荷を配分することが可能となる。
しかも、非定常的に実行されるプログラムのプロセッサの割当てを、各プロセッサの過去のイベント情報も含め柔軟にプロセッサに配分することが可能となる。
なお、本実施の形態では、プロセッサのローカルイベントのカウント値の大きいプロセッサを選択する例を示したが、ローカルイベントの種類によってはカウント値の小さいほうや、場合による組み合わせによってイベント処理を配分するプロセッサを決定するとしてもよい。
(他の態様)
以下で説明する他の態様のマルチプロセッサシステムを構成してもよい。上記の各実施の形態のうちの何れかの実施の形態のマルチプロセッサシステムに対して、他の態様のマルチプロセッサシステムの一部が付加されてもよいし、他の態様のマルチプロセッサシステムに対して、上記の実施の形態のうちの何れかのマルチプロセッサシステムの一部が付加されてもよい。
(1)他の態様のマルチプロセッサシステムは、第1のプロセッサおよび第2のプロセッサ(左側のプロセッサエレメント101、右側のプロセッサエレメント101:図1)と、例えばユーザ入力による割込みなどの非定常的な割込みにより、前記第1のプロセッサおよび第2のプロセッサのうちの何れかにより実行されるプログラムなどの、非定常的に実行されるプログラムのコンテキストデータを格納し、前記第1のプロセッサおよび第2のプロセッサが共有する共有のコンテキストデータ格納部(共有コンテキストメモリ110)とを備え、前記第1のプロセッサおよび第2のプロセッサにそれぞれ対応し、対応する前記プロセッサが定常的に実行するプログラムのコンテキストデータを格納する、対応する当該プロセッサにより専有される、2つのコンテキストデータ格納部(左側のプロセッサエレメント101が有するローカルコンテキストメモリ104、及び、右側のプロセッサエレメント101が有するローカルコンテキストメモリ104)と、前記第1のプロセッサおよび第2のプロセッサにそれぞれ対応し、対応する前記プロセッサと、前記共有のコンテキストデータ格納部との間で、前記非定常的に実行されるプログラムのコンテキストデータを退避及び復帰させると共に、対応する当該プロセッサの前記定常的に実行されるプログラムのコンテキストデータを、当該プロセッサと当該プロセッサに対応する前記専有のコンテキストデータ格納部との間で退避及び復帰させる退避復帰制御部(左側のプロセッサエレメント101が有する処理制御部103、及び、右側のプロセッサエレメント101が有する処理制御部103)と、予め定められた条件が満たされれば、前記非定常的に実行されるプログラムを前記第1のプロセッサに実行させる一方で、当該条件が満たされなければ当該非定常的に実行されるプログラムを前記第2のプロセッサに実行させる非定常的実行プロセッサ選択部(選択先切替部109)とを備えるマルチプロセッサシステム(マルチプロセッサシステム100)である。
なお、定常的に実行されるプログラムは、いわゆるサービスプログラムであってもよいし、いわゆるデーモンプログラムであってもよいし、HTTP(HyperText Transfer Protocol)サーバ等のサーバ用プログラムであってもよい。
他方、非定常的に実行されるプログラムは、キー入力などのユーザ入力や、通信による入力、0による除算の発生などの各種の例外の発生などの、各種のイベントを処理するイベント処理用のプログラムであってもよい。
(2)そして、他の態様のマルチプロセッサシステムは、前記退避復帰制御部は、それぞれ、当該退避復帰制御部に対応するプロセッサにより実行されるプログラムが前記非定常的に実行されるプログラムであれば、当該非定常的に実行されるプログラムの実行が開始される際に、前記共有のコンテキストデータ格納部により格納される、当該非定常的に実行されるプログラムのコンテキストデータを、当該プロセッサが実行するプログラムのコンテキストデータが格納される予め定められた実行時格納部(レジスタ群105と、レジスタ群106とのうちでプログラム実行対象のレジスタ群)に復帰すると共に、当該実行が終了する際には、当該実行が終了した後における、当該非定常的に実行されるプログラムのコンテキストデータを、当該実行時格納部から、前記共有のコンテキストデータ格納部に退避し、実行されるプログラムが前記定常的に実行されるプログラムであれば、当該定常的に実行されるプログラムの実行が開始される際に、当該プロセッサの前記専有のコンテキストデータ格納部により格納される、当該定常的に実行されるプログラムのコンテキストデータを前記実行時格納部に復帰すると共に、当該実行が終了する際には、当該実行が終了した後における、当該定常的に実行されるプログラムのコンテキストデータを当該実行時格納部から前記コンテキストデータ格納部に退避するマルチプロセッサシステムである。
本発明は、リアルタイム処理およびイベント処理の両方を実行する、複数のプロセッサから構成されるマルチプロセッサシステムなどとして、利用することができる。
100、200、300 マルチプロセッサシステム
101、201 プロセッサエレメント
102 CPU
103、203 処理制御部
104 ローカルコンテキストメモリ
105、106 レジスタ群
107、108 コンテキストデータセレクタ
109、209 選択先切替部
110 共有コンテキストメモリ
111 コンテキストデータセレクタ
112 共通割込み要求信号
113 プログラム実行要求信号
120 コンテキスト切替制御部
121 サイクルカウンタ
122 ローカルイベント検出部
123 CPU選択ステート
124 実行要求先選択部
150 共有バス
151 メインメモリ
213、214 信号
325 イベントカウンタ
326 タイマ

Claims (8)

  1. 複数のプログラムを切り替えながら実行する複数のプロセッサと、
    前記複数のプロセッサのいずれかにより非定常的に実行されるプログラムのコンテキストデータを格納し、前記複数のプロセッサにより共有される第一のコンテキストメモリと、
    前記複数のプロセッサの個数と同じ個数設けられ、それぞれ、対応する前記プロセッサが定常的に実行するプログラムのコンテキストデータを格納し、当該プロセッサにより専有される第二のコンテキストメモリと、
    同じく前記複数のプロセッサの個数と同じ個数設けられ、それぞれ、対応する前記プロセッサに対してプログラムの実行要求があった場合に、当該プログラムが前記非定常的に実行されるプログラムであれば前記第一のコンテキストメモリを選択すると共に、前記定常的に実行するプログラムであれば前記第二のコンテキストメモリを選択して、選択したコンテキストメモリと当該プロセッサとの間で当該プログラムのコンテキストデータの退避及び復帰を行い、当該プロセッサにより専有される退避復帰制御部と、
    前記非定常的に実行されるプログラムの実行要求が発生するごとに、前記複数のプロセッサのいずれかを選択し、選択したプロセッサに対して当該プログラムの実行要求を行う選択要求部と、
    を備えるマルチプロセッサシステム。
  2. 前記複数のプロセッサに共有される主記憶メモリを備え、
    前記複数のプロセッサは、それぞれ、当該主記憶メモリを用いて、前記非定常的に実行されるプログラム及び前記定常的に実行されるプログラムをそれぞれ実行する請求項1記載のマルチプロセッサシステム。
  3. 前記複数のプロセッサは、それぞれ、
    複数のレジスタ群と、
    前記複数のレジスタ群のうちで何れかのレジスタ群を、プログラムの実行に当該プロセッサが利用する実行用のレジスタ群として選択すると共に、選択したレジスタ群以外の他の何れかのレジスタ群をコンテキストデータの退避復帰用のレジスタ群として選択するレジスタ群選択部と
    を備え、
    前記複数のプロセッサは、それぞれ、当該プロセッサの当該レジスタ群選択部が前記実行用のレジスタとして選択するレジスタ群を使用してプログラムを実行し、
    前記退避復帰制御部は、当該プロセッサが、選択された前記実行用のレジスタ群を使用してプログラムを実行するのと同時に、選択された前記退避復帰用のレジスタ群に対し、コンテキストデータの退避及び復帰を行う請求項2に記載のマルチプロセッサシステム。
  4. 当該マルチプロセッサシステムは、前記複数のプロセッサがそれぞれローカルキャッシュメモリを有する共有メモリ型マルチプロセッサシステムである請求項2に記載のマルチプロセッサシステム。
  5. 前記選択要求部は、前記非定常的に実行されるプログラムの実行要求が発生するごとに、前記複数のプロセッサのうちで、前回の前記非定常的に実行されるプログラムの実行要求の発生に際して選択したプロセッサとは別のプロセッサを選択する請求項2に記載のマルチプロセッサシステム。
  6. 前記選択要求部は、前記複数のプロセッサの動作状態を検出し、検出された動作状態に対して予め定められた対応関係を有するプロセッサを選択する請求項2に記載のマルチプロセッサシステム。
  7. 前記複数のプロセッサは、それぞれ、
    前記定常的に実行されるプログラムの、当該プロセッサによる実行を中断する事由が発生したこと、および、当該事由が解消したことを各々検出して、前記発生が検出された場合には当該実行を停止させ、前記解消が検出された場合には、停止された当該実行を再開させる停止再開制御部を備え、
    前記選択要求部は、前記停止再開制御部から前記停止および再開の情報を取得し、取得された情報により、当該停止再開制御部を備えるプロセッサが前記実行を停止させた後であり、かつ、当該実行を再開させる前であることが示される場合に、当該プロセッサを選択する請求項6に記載のマルチプロセッサシステム。
  8. 前記複数のプロセッサは、それぞれ、
    前記定常的に実行されるプログラムの、当該プロセッサによる実行を中断する事由が発生したこと、および、当該事由が解消したことを各々検出して、前記発生が検出された場合には当該プログラムの実行を停止させ、前記解消が検出された場合には、停止された当該実行を再開させる停止再開制御部を備え、
    前記選択要求部は、前記停止再開制御部から前記停止および再開の情報を取得し、取得された前記情報の履歴に基づいて、当該情報の取得された前記プロセッサを選択するか否かを決定する請求項6に記載のマルチプロセッサシステム。
JP2010516746A 2008-06-11 2009-06-08 マルチプロセッサシステム Withdrawn JPWO2009150815A1 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2008153199 2008-06-11
JP2008153199 2008-06-11
PCT/JP2009/002571 WO2009150815A1 (ja) 2008-06-11 2009-06-08 マルチプロセッサシステム

Publications (1)

Publication Number Publication Date
JPWO2009150815A1 true JPWO2009150815A1 (ja) 2011-11-10

Family

ID=41416528

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010516746A Withdrawn JPWO2009150815A1 (ja) 2008-06-11 2009-06-08 マルチプロセッサシステム

Country Status (4)

Country Link
US (1) US20110078702A1 (ja)
JP (1) JPWO2009150815A1 (ja)
CN (1) CN102057357A (ja)
WO (1) WO2009150815A1 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8340942B2 (en) * 2010-04-26 2012-12-25 International Business Machines Corporation Identifying opportunities to improve multiprocess system performance
US20120192200A1 (en) * 2011-01-21 2012-07-26 Rao Jayanth N Load Balancing in Heterogeneous Computing Environments
TWI561995B (en) * 2011-04-26 2016-12-11 Intel Corp Load balancing in heterogeneous computing environments
US9652282B2 (en) * 2011-11-08 2017-05-16 Nvidia Corporation Software-assisted instruction level execution preemption
US9400545B2 (en) 2011-12-22 2016-07-26 Intel Corporation Method, apparatus, and system for energy efficiency and energy conservation including autonomous hardware-based deep power down in devices
US9569223B2 (en) * 2013-02-13 2017-02-14 Red Hat Israel, Ltd. Mixed shared/non-shared memory transport for virtual machines
US9921982B2 (en) * 2014-06-05 2018-03-20 Microchip Technology Incorporated Device and method to assign device pin ownership for multi-processor core devices
US10606714B2 (en) * 2017-09-05 2020-03-31 International Business Machines Corporation Stopping central processing units for data collection based on event categories of events
US10740030B2 (en) * 2017-09-06 2020-08-11 International Business Machines Corporation Stopping a plurality of central processing units for data collection based on attributes of tasks
JP7448830B2 (ja) * 2019-06-07 2024-03-13 ダイキン工業株式会社 機器制御システム、機器の制御方法

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5979332A (ja) * 1982-10-29 1984-05-08 Toshiba Corp 割込み受付け制御方式
JPS63223860A (ja) * 1987-03-12 1988-09-19 Matsushita Electric Ind Co Ltd 複数プロセツサ構成装置
US5179702A (en) * 1989-12-29 1993-01-12 Supercomputer Systems Limited Partnership System and method for controlling a highly parallel multiprocessor using an anarchy based scheduler for parallel execution thread scheduling
JPH04268642A (ja) * 1991-02-25 1992-09-24 Nec Corp 非同期事象処理制御監視方式
JP3008896B2 (ja) * 1997-06-16 2000-02-14 日本電気株式会社 共有バス型マルチプロセッサシステムの割り込み負荷分散システム
US6128728A (en) * 1997-08-01 2000-10-03 Micron Technology, Inc. Virtual shadow registers and virtual register windows
US6128641A (en) * 1997-09-12 2000-10-03 Siemens Aktiengesellschaft Data processing unit with hardware assisted context switching capability
US6836838B1 (en) * 1998-06-29 2004-12-28 Cisco Technology, Inc. Architecture for a processor complex of an arrayed pipelined processing engine
US6804815B1 (en) * 2000-09-18 2004-10-12 Cisco Technology, Inc. Sequence control mechanism for enabling out of order context processing
US6915414B2 (en) * 2001-07-20 2005-07-05 Zilog, Inc. Context switching pipelined microprocessor
JP3813930B2 (ja) * 2002-01-09 2006-08-23 松下電器産業株式会社 プロセッサ及びプログラム実行方法
US7174394B1 (en) * 2002-06-14 2007-02-06 Cisco Technology, Inc. Multi processor enqueue packet circuit
JP3920818B2 (ja) * 2003-07-22 2007-05-30 株式会社東芝 スケジューリング方法および情報処理システム
US7849297B2 (en) * 2003-08-28 2010-12-07 Mips Technologies, Inc. Software emulation of directed exceptions in a multithreading processor
DE10353268B3 (de) * 2003-11-14 2005-07-28 Infineon Technologies Ag Paralleler Multithread-Prozessor (PMT) mit geteilten Kontexten
DE10353267B3 (de) * 2003-11-14 2005-07-28 Infineon Technologies Ag Multithread-Prozessorarchitektur zum getriggerten Thread-Umschalten ohne Zykluszeitverlust und ohne Umschalt-Programmbefehl
DE102004009610B4 (de) * 2004-02-27 2007-08-16 Infineon Technologies Ag Heterogener paralleler Multithread-Prozessor (HPMT) mit geteilten Kontexten
US8001549B2 (en) * 2006-04-27 2011-08-16 Panasonic Corporation Multithreaded computer system and multithread execution control method

Also Published As

Publication number Publication date
WO2009150815A1 (ja) 2009-12-17
US20110078702A1 (en) 2011-03-31
CN102057357A (zh) 2011-05-11

Similar Documents

Publication Publication Date Title
WO2009150815A1 (ja) マルチプロセッサシステム
JP4072271B2 (ja) 複数のオペレーティングシステムを実行する計算機
US7996593B2 (en) Interrupt handling using simultaneous multi-threading
JP5405320B2 (ja) 仮想計算機制御装置、仮想計算機制御方法及び仮想計算機制御プログラム
KR100864964B1 (ko) 연산처리시스템 및 연산처리 제어방법, 업무관리시스템 및업무관리방법과 기억매체
JP5469940B2 (ja) 計算機システム、仮想計算機モニタ及び仮想計算機モニタのスケジューリング方法
US8397236B2 (en) Credit based performance managment of computer systems
CN109997112B (zh) 数据处理
US10922138B2 (en) Resource conservation for containerized systems
US9632842B2 (en) Exclusive access control method prohibiting attempt to access a shared resource based on average number of attempts and predetermined threshold
JP5347451B2 (ja) マルチプロセッサシステム、競合回避プログラム及び競合回避方法
US9354934B2 (en) Partitioned shared processor interrupt-intensive task segregator
WO2006076853A1 (fr) Procede de traitement multifiliere/multitache/multiprocesseur
US20130097382A1 (en) Multi-core processor system, computer product, and control method
US8042116B2 (en) Task switching based on the execution control information held in register groups
JP6955163B2 (ja) 情報処理装置、情報処理方法及びプログラム
US20130125131A1 (en) Multi-core processor system, thread control method, and computer product
EP3084603B1 (en) System and method for supporting adaptive busy wait in a computing environment
WO2012101759A1 (ja) プロセッサ処理方法、およびプロセッサシステム
KR100728899B1 (ko) 복수의 레지스터 집합과 하드웨어 작업 관리자를 가진고성능 멀티쓰레드 임베디드 프로세서
JP7124592B2 (ja) ジョブ実行システムおよびジョブ実行方法
JP2007323256A (ja) 割込制御方法および情報処理装置
JP2015064861A (ja) マルチスレッドプロセッサ
JP2010205046A (ja) 情報処理装置
JP2004038715A (ja) 並列計算処理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120119

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20121005