(57)【要約】【課題】マルチプロセッサシステムにおける並列処理が円滑にでき、資源を有効に活用することによって高い処理効率が得られるマルプロセッサシステムを提供することを目的とする。【解決手段】複数の単位プロセッサＰ０〜Ｐ３を備え、単位プロセッサＰ０〜Ｐ３が並列に動作し得るマルチプロセッサを構成する。このマルチプロセッサに対し、ＯＳ及びプログラム制御部１０５が、単位プロセッサＰ０〜Ｐ３の少なくとも一部の要求により、要求があった単位プロセッサにおいてのみ単位プロセッサで実行されている処理を中断させる中断処理を禁止する。【選択図】図３
2007206784.tif 000002
【特許請求の範囲】
【請求項１】
複数の単位プロセッサを備え、単位プロセッサが並列に動作し得るマルチプロセッサシステムであって、
前記単位プロセッサの少なくとも一部の要求に応じ、前記単位プロセッサで実行されている処理を中断させる中断処理を、要求があった前記単位プロセッサにおいてのみ禁止する中断処理禁止手段を備えることを特徴とするマルチプロセッサシステム。
【請求項２】
前記中断処理禁止手段は、単位プロセッサに対する外部割込み、プロセッサ割込み、タスクスイッチを少なくとも含む処理を禁止することを特徴とする請求項１に記載のマルチプロセッサシステム。
【請求項３】
前記中断処理禁止手段によって中断処理が禁止される区間である占有区間は、前記処理が禁止されている間に該単位プロセッサで実行される処理を基準にプログラム上で定義されることを特徴とする請求項１または２に記載のマルチプロセッサシステム。
【請求項４】
前記中断処理禁止手段は、同時に前記中断処理が禁止される単位プロセッサの数を一定の数である制限数以内に制限することを特徴とする請求項１から３のいずれか１項に記載のマルチプロセッサシステム。
【請求項５】
前記中断処理禁止手段は、中断処理の禁止を要求する要求単位プロセッサの数が制限数を超えた場合、より後にされた中断処理禁止の要求を前記要求単位プロセッサの数が制限数以下になるまで待たせることを特徴とする請求項３に記載のマルチプロセッサシステム。
【請求項６】
前記中断処理禁止手段は、中断処理の禁止を要求する要求単位プロセッサの数が制限数を超えた場合、より後に中断処理禁止の要求をした単位プロセッサに要求単位プロセッサが制限数を超えていることを通知することを特徴とする請求項３に記載のマルチプロセッサシステム。
【請求項７】
前記中断処理禁止手段によって中断処理が禁止された単位プロセッサの要求により、要求があった単位プロセッサについてのみ中断処理の禁止を解除する中断禁止処理解除手段を備えることを特徴とする請求項１から５のいずれか１項に記載のマルチプロセッサシステム。
【請求項８】
複数の単位プロセッサを備え、単位プロセッサが並列に動作し得るマルチプロセッサシステムに適用されるマルチプロセッサシステムの制御方法をコンピュータに実行させるためのプログラムであって、
前記単位プロセッサの少なくとも一部の要求により、要求のあった単位プロセッサについてのみ該単位プロセッサにおいて実行されている処理を中断する中断処理を禁止する中断処理禁止ステップを含むことを特徴とするマルチプロセッサシステムの制御方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセッサシステム及びマルチプロセッサシステムの制御方法をコンピュータに実行させるためのプログラムに係り、特に複数のプロセッサを活用して処理効率を高めるマルチプロセッサシステム及びマルチプロセッサシステムの制御方法をコンピュータに実行させるためのプログラムに関する。
【背景技術】
【０００２】
特定の装置に用いられるプロセッサは、組込みシステムと呼ばれている。近年では、組込みシステムにマルチプロセッサやマルチスレッドプロセッサが採用されることも多い。マルチプロセッサの採用は、装置の低クロック化や応答性の向上に有利である。また、特に携帯型の装置では、消費電力を低減することにも有利であるためマルチプロセッサを採用することが望まれている。
【０００３】
ところで、新たに開発したプロセッサが正常に動作するか否かの判断に時間及びコストがかかる。このため、ソフトウェアの分野では、使用した結果実績のあるプロセッサが流用可能であるならば、これを流用することが望ましいとされている。したがって、組込みシステムをマルチプロセッサ化する場合、先に使用されていたシングルプロセッサのソフトウェアを流用する要求がある。
【０００４】
シングルプロセッサをマルチプロセッサに流用する従来技術として、例えば、特許文献１がある。特許文献１の発明は、μＩＴＲＯＮ（登録商標）をベースにしたシングルプロセッサ用のオペレーティングシステム（ＯＳ：Operating System）をマルチプロセッサに移植するものである。
【特許文献１】特開平８−２９７５８１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、プロセッサでは、ＯＳの機能を呼び出す機構の１つにサービスコールと呼ばれるものがある。サービスコールによれば、プロセッサに対する割込みやプロセッサにおけるタスクスイッチ等を制御することができる。なお、サービスコールの呼称は、μＩＴＲＯＮ（登録商標）で使用されるものであって、システムコールとも呼ばれることもある。
【０００６】
しかしながら、シングルプロセッサで使用されるシステムコールをマルチプロセッサシステムにそのまま流用した場合、マルチプロセッサシステムの資源が充分活用できない可能性がある。
すなわち、シングルプロセッサのタスクスイッチを禁止するサービスコール（ｄｉｓ＿ｄｓｐ）は、当然のことながらタスクが並列に動作することを想定していない。このため、タスクスイッチが要求され、ｄｉｓ＿ｄｓｐによってタスクスイッチが禁止されていた場合には先のタスクの処理が完了するまでタスクスイッチは起こらない。
【０００７】
また、シングルプロセッサの割込み処理を禁止するサービスコール（ｌｏｃ＿ｃｐｕ）は、唯一のプロセッサを占有する。このため、割込み処理が要求され、ｌｏｃ＿ｃｐｕによって割込みが禁止されていた場合には先の処理が完了するまで割込みは実行されることがない。
並列動作可能なマルチプロセッサシステムは、上記したｄｉｓ＿ｄｓｐやｌｏｃ＿ｃｐｕといったサービスコールがそのまま適用されるとすると、並列動作が妨げられてシステムの資源を充分活用することができない。
【０００８】
本発明は、このような点に鑑みてなされたものであって、マルチプロセッサシステムにおける並列処理が円滑にでき、資源を有効に活用することによって高い処理効率が得られるマルチプロセッサシステム及びマルチプロセッサシステムの制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
以上の課題を解決するため、本発明のマルチプロセッサシステムは、複数の単位プロセッサを備え、単位プロセッサが並列に動作し得るマルチプロセッサシステムであって、前記単位プロセッサの少なくとも一部の要求に応じ、前記単位プロセッサで実行されている処理を中断させる中断処理を、要求があった前記単位プロセッサにおいてのみ禁止する中断処理禁止手段を備えることを特徴とする。
【００１０】
このような発明によれば、複数の単位プロセッサのうち要求があった単位プロセッサにおいてのみ単位プロセッサで実行されている処理の中断を禁止することができる。このため、優先度の高い処理を最優先で処理する一方、他のプロセッサで割込みを受け付けることができる。
このため、本発明は、マルチプロセッサシステムにおける並列処理が円滑にでき、資源を有効に活用することによって高い処理効率が得られるマルチプロセッサシステムを提供することができる。
【００１１】
また、本発明のマルチプロセッサシステムは、前記中断処理禁止手段が、単位プロセッサに対する外部割込み、プロセッサ割込み、タスクスイッチを少なくとも含む処理を禁止することを特徴とする。
このような発明によれば、単位プロセッサにおけるタスク及び割込み処理の中断を有効に防ぐことができる。
【００１２】
また、本発明のマルチプロセッサシステムは、前記中断処理禁止手段によって中断処理が禁止される区間である占有区間が、前記処理が禁止されている間に該単位プロセッサで実行される処理を基準にプログラム上で定義されることを特徴とする。
このような発明によれば、処理にかかる時間によらず所望の処理が中断されることを確実に防ぎ、円滑に並列処理を実行することができる。
【００１３】
また、本発明のマルチプロセッサシステムは、前記中断処理禁止手段が、同時に前記中断処理が禁止される単位プロセッサの数を一定の数である制限数以内に制限することを特徴とする。
このような発明によれば、必要な処理を確実に実行しながら全体の処理効率の低下をも防ぐことができる。
【００１４】
また、本発明のマルチプロセッサシステムは、前記中断処理禁止手段が、中断処理の禁止を要求する要求単位プロセッサの数が制限数を超えた場合、より後にされた中断処理禁止の要求を前記要求単位プロセッサの数が制限数以下になるまで待たせることを特徴とする。
このような発明によれば、中断処理の禁止の必要性の高い処理を、優先的に中断処理禁止の状態に設定することができる。
【００１５】
また、本発明のマルチプロセッサシステムは、前記中断処理禁止手段が、中断処理の禁止を要求する要求単位プロセッサの数が制限数を超えた場合、より後に中断処理禁止の要求をした単位プロセッサに要求単位プロセッサが制限数を超えていることを通知することを特徴とする。
このような発明によれば、中断処理の禁止状態になれなかった単位プロセッサの後の処理を単位プロセッサ側にさせることができる。このため、ＯＳの処理の負荷が軽減できると共に単位プロセッサの処理についての自由度を高めることができる。
【００１６】
また、本実施形態のマルチプロセッサシステムは、前記中断処理禁止手段によって中断処理が禁止された単位プロセッサの要求により、要求があった単位プロセッサについてのみ中断処理の禁止を解除する中断禁止処理解除手段を備えることを特徴とする。
このような発明によれば、中断処理が禁止された単位プロセッサのうち要求があった単位プロセッサについてのみ中断処理の禁止を解除することができる。このため、単位プロセッサ側で確実に中断処理が禁止される区間を確保することができる。
【００１７】
また、本発明のマルチプロセッサシステムの制御方法をコンピュータに実行させるためのプログラムは、複数の単位プロセッサを備え、単位プロセッサが並列に動作し得るマルチプロセッサシステムに適用されるマルチプロセッサシステムの制御方法をコンピュータに実行させるためのプログラムであって、前記単位プロセッサの少なくとも一部の要求により、要求のあった単位プロセッサについてのみ該単位プロセッサにおいて実行されている処理を中断する中断処理を禁止する中断処理禁止ステップを含むことを特徴とする。
【００１８】
このような発明によれば、複数の単位プロセッサのうち要求があった単位プロセッサにおいてのみ単位プロセッサで実行されている処理の中断を禁止することができる。このため、優先度の高い処理を最優先で処理する一方、他のプロセッサで割込みを受け付けることができる。
このため、本発明は、マルチプロセッサシステムにおける並列処理が円滑にでき、資源を有効に活用することによって高い処理効率が得られるマルチプロセッサシステムの制御方法をコンピュータに実行させるためのプログラムを提供することができる。
【発明を実施するための最良の形態】
【００１９】
以下、図を参照して本発明に係るマルチプロセッサシステム、及びマルチプロセッサシステムの制御方法をコンピュータに実行させるためのプログラムの一実施の形態を説明する。
本実施形態は、本実施形態のマルチプロセッサシステムを、携帯電話に適用される組込みシステムとして構成したものとする。マルチプロセッサシステムは、複数のプロセッサ（単位プロセッサ）を結合して構成される。一般的なマルチプロセッサシステムにおける単位プロセッサの結合の例を図１に示す。
【００２０】
図１（ａ）、（ｂ）に示したマルチプロセッサは、いずれも対称型マルチプロセッサ（ＳＭＰ：symmetric multi-processor）と呼ばれる構成であって、複数の単位プロセッサＰｕを、メモリを共有するように結合して構成されている。（ａ）に示した構成は、マルチプロセッサと呼ばれている。また、（ｂ）に示した構成は、マルチスレッドプロセッサと呼ばれている。マルチスレッドプロセッサは、マルチプロセッサよりも演算器を共有している点で単位プロセッサＰｕは密に結合しているという。
【００２１】
本実施形態では、マルチプロセッサシステムをマルチプロセッサとして構成した例を挙げて説明するものとする。なお、本実施形態は、マルチプロセッサ、マルチスレッドプロセッサのいずれとしても構成可能である。
図２は、本発明の一実施形態のマルチプロセッサシステムが適用される携帯電話の機能構成を示すブロック図である。図２において、携帯電話は、ＣＰＵ（Central Processing Unit）１０と、フラッシュＲＯＭ２０と、メモリ３０と、バッファ４０と、無線部５０と、ＩｒＤＡ（Infrared Data Association）部６０と、オーディオ（Audio）部７０と、タイマ（Timer）８０と、ＵＳＢ（Universal Serial Bus）インターフェース部９０と、キー（KEY）操作部１００と、ＬＣＤ（Liquid Crystal Display）１１０と、カメラ（Camera）部１２０を含んで構成され、ＣＰＵ１０、フラッシュＲＯＭ２０、メモリ３０及びバッファ４０は、バスによって接続されている。また、無線部５０、ＩｒＤＡ部６０、オーディオ部７０、タイマ８０、ＵＳＢインターフェース部９０、キー操作部１００、ＬＣＤ１１０及びカメラ部１２０は、ＣＰＵ１０と直接接続されている。
【００２２】
ＣＰＵ１０は、複数のタスクを並列的に処理しながら携帯電話全体を制御するもので、キー操作部１００から入力される各種の指示信号に応じて、メモリ３０に記憶されたオペレーティングシステムプログラム（ＯＳ：Operating System）や各種アプリケーションプログラムを読み出して実行し、無線部５０、オーディオ部７０あるいはカメラ部１２０等の周辺チップから入力される割込み信号に応じて割込みハンドラを実行する。なお、ＯＳは、マルチプロセッサに対応するＯＳである。ＯＳは、マルチプロセッサに含まれる単位プロセッサに共通のメモリ３０に保存されている。また、ＣＰＵ１０は、各種処理結果をフラッシュＲＯＭ２０あるいはメモリ３０に格納する。
【００２３】
図３は、図２中にＣＰＵ１０として示した本実施形態のマルチプロセッサを説明するための図である。本実施形態のマルチプロセッサは、複数の単位プロセッサＰ０、Ｐ１、Ｐ２、Ｐ３を組み合わせて１つのオペレーティングシステムで並列動作させるマルチプロセッサである。図３に示したように、マルチプロセッサは、複数の単位プロセッサＰ０〜Ｐ３と、割込み制御部１１と、メモリ制御部１２と、ハードウェアセマフォ（以下ＨＷセマフォ）部１３とを含んで構成される。
【００２４】
また、マルチプロセッサは、単位プロセッサＰ０〜Ｐ３に共通のメモリ３０を備え、メモリ３０にはＯＳ１が保存されている。ＯＳ１は、マルチプロセッサを統括に制御するものであって、サービスコール等によって読み出され、サービスコールの種別に応じて単位プロセッサの状態を設定する。
ＨＷセマフォ部１３は、いずれかの単位プロセッサにＯＳ処理する権利であるセマフォ（本実施形態ではＨＷセマフォと記す）を付与する構成である。割込み制御部１１は、無線部５０等の周辺チップから外部割込みの割込み信号が入力された場合に、割込み信号を調停した上で、所定の割込み信号を単位プロセッサＰ０〜Ｐ３のうち指定された単位プロセッサに出力する。メモリ制御部１２は、ＣＰＵ１０とメモリ３０との間に備えられ、ＣＰＵ１０からメモリ３０に対するデータの読み出し及び書込みが行われる場合に、メモリ３０を制御してデータの入出力を行っている。メモリ制御部１２は、単位プロセッサＰ０〜Ｐ３の共有エリアとなるメモリ３０を制御する構成である。
【００２５】
次に、各単位プロセッサＰ０〜Ｐ３の内部構成について説明する。なお、単位プロセッサＰ０〜Ｐ３は、同様に構成されているため、単位プロセッサＰ０の内部構成についてのみ説明し、他の単位プロセッサの説明に代えるものとする。
単位プロセッサＰ０は、フェッチ部１０１と、デコード部１０２と、ＡＬＵ（Arithmetic and Logical Unit）１０３と、レジスタファイル１０４と、プログラム制御部１０５とを含んで構成される。フェッチ部１０１は、後述するプログラム制御部１０５のプログラムカウンタが示すメモリアドレスから命令コードを読み出し、デコード部１０２に出力する。
【００２６】
デコード部１０２は、フェッチ部１０１によって入力された命令コードをデコードし、デコード結果（命令内容及びソースレジスタ、デスティネーションレジスタのアドレス等）をＡＬＵ１０３に出力する。
ＡＬＵ１０３は、デコード部１０２によって入力されたデコード結果に応じて、所定の演算を行い、演算結果をレジスタファイル１０４に書き込む、あるいは分岐命令等の演算結果であるブランチ先のアドレスをプログラム制御部１０５に出力する。
【００２７】
レジスタファイル１０４は、ロード命令によってメモリ３０から読み出されたデータや、ＡＬＵ１０３の演算結果であるデータを記憶するレジスタ群である。後述するように、レジスタファイル１０３は、汎用レジスタ群と特殊レジスタ群とを含んでいて、特殊レジスタ群は、本実施形態のブート処理のためのアドレスが書き込まれる領域である。
プログラム制御部１０５は、単位プロセッサＰ０全体を制御するものであり、単位プロセッサＰ０のステータス（例えば、割込みの可否状態、単位プロセッサＰ０におけるオーバーフローの発生状態等）を記憶するステータスレジスタ（ＰＳＲ）３０５と、単位プロセッサＰ０が次に実行するべき命令が格納されたメモリアドレスを記憶するプログラムカウンタおい（ＰＣ）２３０とを含んで構成される。そして、プログラム制御部１０５は、単位プロセッサＰ０が割込み処理に移行する時点で、ＰＳＲ３０５の値を割込み処理の禁止状態に変更したり、分岐命令が実行された場合に、プログラムカウンタの値を分岐先のアドレスに変更したりする。
【００２８】
また、プログラム制御部１０５は、追出し禁止フラグ１０６を備えている。追出し禁止フラグ１０６は、自単位プロセッサにおいてタスクの切替えや外部割込みが起こり、現在実行されている処理が単位プロセッサから追出されることを禁止するための機構である。
すなわち、単位プロセッサは、タスクの処理やタスクで管理される割込み（プロセッサ割込み）非タスクの外部割込みを実行している。ＯＳ１は、各単位プロセッサの追出し禁止フラグ１０６を１にすることによって現在単位プロセッサにあるタスクや割込み処理が他のタスクや割込み処理に切替えられることを禁止する。単位プロセッサにおけるタスクの追出しが禁止された状態をロック状態という。
【００２９】
また、本実施形態のプログラム制御部１０５は、サービスコールを発行し、ＯＳ１を呼び出す構成である。本実施形態では、単位プロセッサＰ０〜Ｐ３の少なくとも一部がプログラム制御部１０５によってサービスコールを発行する。サービスコールによってＯＳ１が呼び出され、呼び出されたＯＳは、ＯＳを呼び出した単位プロセッサについてのみこの単位プロセッサで実行されている処理を中断させる中断処理を禁止する。このようなＯＳ１は、本実施形態の中断処理禁止手段となる。
【００３０】
本実施形態では、ＯＳ１に中断処理禁止を要求するサービスコールをｏｃｐ＿ｃｐｕと記す。また、ｏｃｐ＿ｃｐｕによって中断処理が禁止された単位プロセッサの要求により、要求があった単位プロセッサについてのみ中断処理の禁止を解除する。ＯＳ１に中断処理禁止解除を要求するサービスコールをｕｎｌ＿ｏｃｐと記す。
次に、ｏｃｐ＿ｃｐｕ、ｕｎｌ＿ｏｃｐについて詳述する。
【００３１】
（ｏｃｐ＿ｃｐｕ）
ｏｃｐ＿ｃｐｕは、発行した単位プロセッサにおける次の処理を中断処理として禁止するサービスコールである。中断処理が禁止された単位プロセッサの状態を、以降ｏｃｐ＿ｃｐｕ状態とも記す。
・外部割込み
・タスクスイッチを行うためのプロセッサ割込み（内部割込み）
・プロセッサ内のタスクスイッチ
外部割込みとは、図１に示したカメラ部１２０やキー操作部１００等によって要求される割込みである。また、プロセッサ割込みとはタスクの優先度とに応じてマルチプロセッサの内部で起こる割込みである。プロセッサ内のタスクスイッチは、原因によらず単位プロセッサにおいて実行されているタスクが切り替わることをいう。本明細書では、タスクをマルチプロセッサ内部で発生したイベントによって実行されるプログラムの単位とする。
【００３２】
ｏｃｐ＿ｃｐｕは、単位プロセッサにおいてタスクを優先的に処理するために定義されたサービスコールであって、タスクにＲＵＮ状態を維持させ続けることを目的として設定されている。このため、ｏｃｐ＿ｃｐｕは、ｏｃｐ＿ｃｐｕのサービスコールを発行した単位プロセッサにおいてのみ中断処理を禁止する一方、他の単位プロセッサに対してはなんら影響を及ぼすものではない。
【００３３】
ｏｃｐ＿ｃｐｕの状態は、ｏｃｐ＿ｃｐｕの状態にある単位プロセッサがｕｎｌ＿ｏｃｐを発行するまで有効である。ｏｃｐ＿ｃｐｕからｕｎｌ＿ｏｃｐまでの区間は、ｏｃｐ＿ｃｐｕを発行した単位プロセッサが、中断処理が禁止されている間に実行する処理を基準にプログラム上で定義されている。
このため、本実施形態は、処理に係る時間に関わらず、中断されたくない処理が終了するまで確実に中断処理を禁止することができる。また、本実施形態は、プログラマがｏｃｐ＿ｃｐｕからｕｎｌ＿ｏｃｐまでの区間を任意に設定し、単位プロセッサの占有区間を任意に設定することができる。
【００３４】
なお、本実施形態では、ｏｃｐ＿ｃｐｕ、ｕｎｌ＿ｏｃｐをサービスコールとして定義しているため、ユーザプログラムが自由に使用できる。
また、本実施形態では、プログラム制御部１０５及びＯＳ１が、ｏｃｐ＿ｃｐｕによって同時に中断処理が禁止される単位プロセッサの数を一定の数（制限数以内）に制限する。制限数は、プログラマによって初期パラメータとして指定される。本実施形態では、ｏｃｐ＿ｃｐｕ状態にあるＣＰＵの数が既に制限数達しているタイミングでｏｃｐ＿ｃｐｕを発行した単位プロセッサに対処するため、同期型のサービスコールとポーリング型のサービスコールとを定義している。
【００３５】
同期型のサービスコールは、中断処理の禁止を要求する単位プロセッサ（要求単位プロセッサ）の数が制限数を超えた場合、より後にされた中断処理禁止の要求を、要求単位プロセッサの数が制限数以下になるまで待たせるものである。
また、ポーリング型のサービスコールは、中断処理の禁止を要求する要求単位プロセッサの数が制限数を超えた場合、より後に中断処理禁止の要求をした単位プロセッサに要求単位プロセッサが制限数を超えていることを通知するものである。
【００３６】
図４は、ｏｃｐ＿ｃｐｕの発行によってＯＳ１が実行するマ−ルチプロセッサシステムの制御方法をコンピュータに実行させるためのプログラムを説明するためのフローチャートである。
プログラム制御部１０５によるｏｃｐ＿ｃｐｕの発行によって呼び出されたＯＳ１は、先ず、現在ｏｃｐ＿ｃｐｕ状態にある単位プロセッサの数が制限数以内であるか否か判断する（Ｓ４０１）。判断の結果、制限数以内であった場合（Ｓ４０１：Ｙｅｓ）、ｏｃｐ＿ｃｐｕを発行した単位プロセッサを、このプロセッサにおける全ての割込み禁止（追出し禁止フラグをたてる）に設定する（Ｓ４０９）。
【００３７】
次に、ＯＳ１は、ｏｃｐ＿ｃｐｕを発行した単位プロセッサをｏｃｐ＿ｃｐｕ状態に設定し、ｏｃｐ＿ｃｐｕ状態を確保したことをリターン値にＯＫを設定することによってプログラム制御部１０５に通知する（Ｓ４１１）。
また、ＯＳ１は、ステップＳ４０１においてｏｃｐ＿ｃｐｕ状態の単位プロセッサが制限値を超えていると判断した場合（Ｓ４０１：Ｎｏ）、ｏｃｐ＿ｃｐｕを発行した単位プロセッサが同期型のサービスコールを発行したか否か判断する（Ｓ４０２）。単位プロセッサが発行したサービスコールが同期型のサービスコールであって、かつタスクが要求したものである場合（Ｓ４０２：Ｙｅｓ）、サービスコール内でこの単位プロセッサをＷＡＩＴ状態に遷移させる。また、ＯＳ１は、ＷＡＩＴ状態解除時の分岐先を図中に示す分岐Ａに設定する（Ｓ４０４）。ステップＳ４０４によって単位プロセッサは、ＷＡＩＴ状態解除時、直ちにｏｃｐ＿ｃｐｕ状態になることができる。
【００３８】
また、ＯＳ１は、単位プロセッサをＷＡＩＴ状態にした後、ＲＥＡＤＹキューを検索して実行待ちのタスクが存在するか否か判断する（Ｓ４０５）。存在する場合（Ｓ４０６：Ｙｅｓ）、単位プロセッサをＨＡＬＴ状態に遷移し（Ｓ４０８）、タスクの実行が可能な状態にする。また、実行待ちのタスクが存在しない場合（Ｓ４０６：Ｎｏ）、単位プロセッサのタスクコンテキストを変更する（Ｓ４０７）。
【００３９】
一方、ステップＳ４０２において、単位プロセッサが同期型サービスコールを発行しないと判断された場合（Ｓ４０２：Ｎｏ）、本実施形態では、ＯＳ１は、リターン値をプログラム制御部１０５に返して要求単位プロセッサの数が制限値を超えていることを通知する（Ｓ４０３）。その後の処理は、プログラム制御部１０５の側で決定する。このような場合、プログラム制御部１０５は、ポーリング型サービスコールを発行してもよい。ポーリングによって要求元単位プロセッサが制限値以内になったことが検出された場合、単位プロセッサは、ｏｃｐ＿ｃｐｕ状態に移行することができる。
【００４０】
（ｕｎｌ＿ｏｃｐ）
ｕｎｌ＿ｏｃｐは、ｏｃｐ＿ｃｐｕ状態にあるプロセッサのユーザプログラムが発行するサービスコールである。単位プロセッサは、ｕｎｌ＿ｃｐｕを発行することによってｏｃｐ＿ｃｐｕ状態から復帰する。また、要求単位プロセッサが制限数以上ある場合にｕｎｌ＿ｏｃｐが発行された場合、ｏｃｐ＿ｃｐｕ状態になることを待っている単位プロセッサのうち最先にｏｃｐ＿ｃｐｕを発行した単位プロセッサがｏｃｐ＿ｃｐｕ状態になる。
【００４１】
このような処理により、本実施形態は、ｏｃｐ＿ｃｐｕ状態の単位プロセッサの数を常に制限数以下にすることができる。このため、中断したくない処理については確実に実行すると共に、単位プロセッサの多くが割込みを受け付けない状態になってマルチプロセッサ全体の処理効率が低下することを防ぐことができる。
図５、図６は、ｕｎｌ＿ｏｃｐの発行によってＯＳ１が実行するマルチプロセッサシステムの制御方法をコンピュータに実行させるためのプログラムである。なお、図５のフローチャートは、タスクの要求によってｕｎｌ＿ｏｃｐが発行された場合のＯＳ１の動作を示す。また、図６のフローチャートは、割込みハンドラの要求によってｕｎｌ＿ｏｃｐが発行された場合のＯＳ１の動作を示す。
【００４２】
タスクの要求により発行されたｕｎｌ＿ｏｃｐによって呼び出されたＯＳ１は、図５に示したように、ｏｃｐ＿ｃｐｕを発行した単位プロセッサのｏｃｐ＿ｃｐｕ状態を解除する（Ｓ５０１）。そして、単位プロセッサに対するプロセッサ割込み禁止を解除し（Ｓ５０２）、ｏｃｐ＿ｃｐｕ状態になることを待っているタスクがあるか否かチェックする（Ｓ５０３）。
【００４３】
チェックの結果、このようなタスクがある場合（Ｓ５０４：Ｙｅｓ）、これに該当するタスクを検出する（Ｓ５１０）。取り出されたタスクをＲＥＡＤＹ状態に遷移させ（Ｓ５１１）、検出されたタスクをｏｃｐ＿ｃｐｕ状態に切替える（Ｓ５１２）。
また、ステップＳ５０４において、ｏｃｐ＿ｃｐｕ状態になることを待っているタスクがないと判断された場合（Ｓ５０４：Ｎｏ）、ＲＥＡＤＹキューを検索し、マルチプロセッサにおいて現在実行されているタスクより優先度の高いタスクがあるか否か判断する（Ｓ５０５）。より優先度が高いタスクがある場合（Ｓ５０６：Ｙｅｓ）、このタスクを検出し、現在実行中のタスクをＲＥＡＤＹ状態に遷移させる（Ｓ５０８）。そして、復帰した単位プロセッサを検出されたタスクのコンテキストへスイッチする（Ｓ５０９）。
【００４４】
また、図６に示したように、割込みハンドラの要求により発行されたｕｎｌ＿ｏｃｐによって呼び出されたＯＳ１は、ｏｃｐ＿ｃｐｕを発行した単位プロセッサのｏｃｐ＿ｃｐｕ状態を解除する（Ｓ６０１）。そして、単位プロセッサに対するプロセッサ割込み禁止を解除し（Ｓ６０２）、ｕｎｌ＿ｏｃｐ発行前の状態にリターンする。単位プロセッサにおける以降の処理は、割込みハンドラの側で制御される。
【００４５】
なお、割込みハンドラによるｕｎｌ＿ｏｃｐの発行は、同時にｕｎｌ＿ｏｃｐ状態になる単位プロセッサの数が予め定められた所定の数を超えないように制限される。所定の数以上のｕｎｌ＿ｏｃｐが発行された場合、後に発行されたｕｎｌ＿ｏｃｐは、エラーとしてプログラム制御部１０５に受付られることがない。
なお、図４、図５、図６で述べた本実施形態のマルチプロセッサシステムの制御方法をコンピュータに実行させるためのプログラムは、インストール可能な形式または実行可能な形式のファイルでＣＤ−ＲＯＭ、フロッピー（登録商標）ディスク（ＦＤ）、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録されて提供される。また、本実施形態のマルチプロセッサシステムの制御方法をコンピュータに実行させるためのプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。
【００４６】
さらに、以上述べた本実施形態のマルチプロセッサシステムの制御方法をコンピュータに実行させるためのプログラムは、コンピュータで読み取り可能なＲＯＭ、フラッシュメモリ、メモリカード、ＵＳＢ接続型フラッシュメモリ等のメモリデバイスに記録されて提供してもよい。
以上述べたように、本実施形態は、マルチプロセッサに含まれる複数の単位プロセッサＰ０〜Ｐ３のうち要求があった単位プロセッサにおいてのみ単位プロセッサで実行されている処理の中断を禁止することができる。このため、優先度の高い処理を最優先で確実に処理することができる一方、他のプロセッサで割込みを受け付けることができる。このため、本発明は、マルチプロセッサシステムにおける並列処理が円滑にでき、マルチプロセッサの資源を有効に活用することにできる。このため、高い処理効率が得られるマルチプロセッサ及びこのマルチプロセッサの制御方法をコンピュータに実行させるためのプログラムを提供することができる。
【図面の簡単な説明】
【００４７】
【図１】一般的なマルチプロセッサシステムにおける単位プロセッサの結合の例を示した図である。
【図２】本発明の一実施形態のマルチプロセッサシステムが適用される携帯電話の機能構成を示すブロック図である。
【図３】図２中にＣＰＵ１０として示した本発明の一実施形態のマルチプロセッサを説明するための図である。
【図４】本発明の一実施形態のｏｃｐ＿ｃｐｕの発行によって実行されるプログラムを説明するためのフローチャートである。
【図５】本発明の一実施形態のｕｎｌ＿ｏｃｐの発行によって実行されるプログラムを説明するためのフローチャートである。
【図６】本発明の一実施形態のｕｎｌ＿ｏｃｐの発行によって実行されるプログラムを説明するための他のフローチャートである。
【符号の説明】
【００４８】
１  ＯＳ、１１  割込み制御部、１２  メモリ制御部、１３  セマフォ部、３０  メモリ、１０１  フェッチ部、１０２  デコード部、１０３  ＡＬＵ、１０４  レジスタファイル、１０５  プログラム制御部、１０６  追出し禁止フラグ
【図１】
2007206784.tif 000003
【図２】
2007206784.tif 000004
【図３】
2007206784.tif 000005
【図４】
2007206784.tif 000006
【図５】
2007206784.tif 000007
【図６】
2007206784.tif 000008
【手続補正書】
【提出日】平成19年5月7日(2007.5.7)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の単位プロセッサが並列に動作し得るマルチプロセッサシステムであって、 
前記単位プロセッサの少なくとも一部の要求に応じ、前記単位プロセッサで実行されている処理を中断させる中断処理を、要求があった前記単位プロセッサにおいてのみ禁止する中断処理禁止手段を備え、
前記中断処理禁止手段が、同時に前記中断処理が禁止される単位プロセッサの数を一定の数である制限数以内に制限することを特徴とするマルチプロセッサシステム。 
【請求項２】
前記中断処理禁止手段は、単位プロセッサに対する外部割込み、プロセッサ割込み、タスクスイッチを少なくとも含む処理を禁止することを特徴とする請求項１に記載のマルチプロセッサシステム。 
【請求項３】
前記中断処理禁止手段によって中断処理が禁止される区間である占有区間は、前記処理が禁止されている間に該単位プロセッサで実行される処理を基準にプログラム上で定義されることを特徴とする請求項１または２に記載のマルチプロセッサシステム。 
【請求項４】
前記中断処理禁止手段は、中断処理の禁止を要求する要求単位プロセッサの数が制限数を超えた場合、より後にされた中断処理禁止の要求を前記要求単位プロセッサの数が制限数以下になるまで待たせることを特徴とする請求項１から３のいずれか１項に記載のマルチプロセッサシステム。 
【請求項５】
前記中断処理禁止手段は、中断処理の禁止を要求する要求単位プロセッサの数が制限数を超えた場合、より後に中断処理禁止の要求をした単位プロセッサに要求単位プロセッサが制限数を超えていることを通知することを特徴とする請求項１から３のいずれか１項に記載のマルチプロセッサシステム。 
【請求項６】
前記中断処理禁止手段によって中断処理が禁止された単位プロセッサの要求により、要求があった単位プロセッサについてのみ中断処理の禁止を解除する中断禁止処理解除手段を備えることを特徴とする請求項１から５のいずれか１項に記載のマルチプロセッサシステム。 
【請求項７】
複数の単位プロセッサを備え、単位プロセッサが並列に動作し得るマルチプロセッサシステムに適用されるマルチプロセッサシステムの制御方法をコンピュータに実行させるためのプログラムであって、 
前記単位プロセッサの少なくとも一部の要求により、要求のあった単位プロセッサについてのみ該単位プロセッサにおいて実行されている処理を中断する中断処理を禁止する中断処理禁止ステップを含み、
前記中断処理禁止ステップにおいて、同時に前記中断処理が禁止される単位プロセッサの数が一定の数である制限数以内に制限されることを特徴とするマルチプロセッサシステムの制御方法をコンピュータに実行させるためのプログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００９
【補正方法】変更
【補正の内容】
【０００９】
以上の課題を解決するため、本発明のマルチプロセッサシステムは、複数の単位プロセッサが並列に動作し得るマルチプロセッサシステムであって、前記単位プロセッサの少なくとも一部の要求に応じ、前記単位プロセッサで実行されている処理を中断させる中断処理を、要求があった前記単位プロセッサにおいてのみ禁止する中断処理禁止手段を備え、前記中断処理禁止手段が、同時に前記中断処理が禁止される単位プロセッサの数を一定の数である制限数以内に制限することを特徴とする。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００１０
【補正方法】変更
【補正の内容】
【００１０】
このような発明によれば、複数の単位プロセッサのうち要求があった単位プロセッサにおいてのみ単位プロセッサで実行されている処理の中断を禁止することができる。このため、優先度の高い処理を最優先で処理する一方、他のプロセッサで割込みを受け付けることができる。このため、本発明は、マルチプロセッサシステムにおける並列処理が円滑にでき、資源を有効に活用することによって高い処理効率が得られるマルチプロセッサシステムを提供することができる。
また、前記中断処理禁止手段が、同時に前記中断処理が禁止される単位プロセッサの数を一定の数である制限数以内に制限することにより、必要な処理を確実に実行しながら全体の処理効率の低下をも防ぐことができる。 
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００１３
【補正方法】削除
【補正の内容】
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００１７
【補正方法】変更
【補正の内容】
【００１７】
また、本発明のマルチプロセッサシステムの制御方法をコンピュータに実行させるためのプログラムは、複数の単位プロセッサを備え、単位プロセッサが並列に動作し得るマルチプロセッサシステムに適用されるマルチプロセッサシステムの制御方法をコンピュータに実行させるためのプログラムであって、前記単位プロセッサの少なくとも一部の要求により、要求のあった単位プロセッサについてのみ該単位プロセッサにおいて実行されている処理を中断する中断処理を禁止する中断処理禁止ステップを含み、前記中断処理禁止ステップにおいて、同時に前記中断処理が禁止される単位プロセッサの数が一定の数である制限数以内に制限されることを特徴とする。 
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００１８
【補正方法】変更
【補正の内容】
【００１８】
このような発明によれば、複数の単位プロセッサのうち要求があった単位プロセッサにおいてのみ単位プロセッサで実行されている処理の中断を禁止することができる。このため、優先度の高い処理を最優先で処理する一方、他のプロセッサで割込みを受け付けることができる。 
このため、本発明は、マルチプロセッサシステムにおける並列処理が円滑にでき、資源を有効に活用することによって高い処理効率が得られるマルチプロセッサシステムの制御方法をコンピュータに実行させるためのプログラムを提供することができる。 
また、同時に前記中断処理が禁止される単位プロセッサの数を一定の数である制限数以内に制限されることにより、必要な処理を確実に実行しながら全体の処理効率の低下をも防ぐことができる。