(57)【要約】【課題】従来のシングルプロセッサに使用されていたオペレーティングシステムをマルチプロセッサに流用し、マルチプロセッサに含まれるプロセッサを複数のオペレーティングシステムによって並列に動作させることができるプロセッサを提供する。【解決手段】ＯＳ部によってタスクを実行する単位プロセッサＰ０、Ｐ３及びマルチプロセッサ対応ＯＳによってタスクを実行する単位プロセッサＰ１、Ｐ２と、単位プロセッサＰ０、Ｐ３によって実行されるタスク、単位プロセッサＰ１、Ｐ２によって実行されるタスクにかかるタスク情報を他のタスクとの間で授受するためのタスク調停部２１０及びインターフェイスエリア２２０とを設けてプロセッサを構成する。【選択図】図２
2007172311.tif 000002
【特許請求の範囲】
【請求項１】
第１オペレーティングシステムによってタスクを実行する第１プロセッサ及び第２オペレーティングシステムによってタスクを実行する第２プロセッサと、
前記第１プロセッサによって実行されるタスク、前記第２プロセッサによって実行されるタスクにかかるタスク情報を他のタスクとの間で授受するタスク情報通信手段と、
を備えることを特徴とするプロセッサ。
【請求項２】
前記タスク情報通信手段は、前記第１オペレーティングシステムによって実行されるタスク間、前記第２オペレーティングシステムによって実行されるタスク間でタスク情報を授受することを特徴とする請求項１に記載のプロセッサ。
【請求項３】
前記タスク情報通信手段は、前記第１オペレーティングシステムによって実行されるタスクと前記第２オペレーティングシステムによって実行されるタスクとの間でタスク情報を授受することを特徴とする請求項１に記載のプロセッサ。
【請求項４】
前記タスク情報通信手段は、前記第１オペレーティングシステム、前記第２オペレーティングシステムを識別する識別情報を前記タスク情報に付与することによってタスク情報が授受されるタスクの範囲を設定することを特徴とする請求項１から３のいずれか１項に記載のプロセッサ。
【請求項５】
前記タスク情報通信手段は、前記第１プロセッサ、前記第２プロセッサのいずれもが情報の読み取り及び書込みが可能な記憶領域を備えることを特徴とする請求項１に記載のプロセッサ。
【請求項６】
前記第１プロセッサ、第２プロセッサのうちのいずれかが対称型マルチプロセッサであって、他方が機能分散型プロセッサを構成することを特徴とする請求項１から５のいずれか１項に記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサにかかり、特に複数のプロセッサが複数のオペレーティングシステムによって動作するマルチプ方式のプロセッサに関する。
【背景技術】
【０００２】
特定の装置に用いられるプロセッサは、組込みシステムと呼ばれている。近年では、組込みシステムにマルチプロセッサやマルチスレッドプロセッサが採用されることも多い。マルチプロセッサの採用は、装置の低クロック化や応答性の向上に有利である。また、特に携帯型の装置では、消費電力を低減することにも有利であるためマルチプロセッサを採用することが望まれている。
【０００３】
ところで、新たに開発したプロセッサが正常に動作するか否かの判断に時間及びコストがかかる。このため、ソフトウェアの分野では、使用した結果実績のあるプロセッサが流用可能であるならば、これを流用することが望ましいとされている。したがって、組込みシステムをマルチプロセッサ化する場合、先に使用されていたシングルプロセッサのソフトウェアを流用する要求がある。
【０００４】
シングルプロセッサをマルチプロセッサに流用する従来技術として、例えば、特許文献１がある。特許文献１の発明は、μＩＴＲＯＮ（登録商標）をベースにしたシングルプロセッサ用のオペレーティングシステムをマルチプロセッサに移植するものである。
【特許文献１】特開平８−２９７５８１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記した特許文献１の発明は、マルチプロセッサのシステムをＳＭＰ（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）１０３と、レジスタファイル１０４と、プログラム制御部１０５とを含んで構成される。フェッチ部１０１は、後述するプログラム制御部１０５のプログラムカウンタが示すメモリアドレスから命令コードを読み出し、デコード部１０２に出力する。
【００２２】
デコード部１０２は、フェッチ部１０１によって入力された命令コードをデコードし、デコード結果（命令内容及びソースレジスタ、デスティネーションレジスタのアドレス等）をＡＬＵ１０３に出力する。
ＡＬＵ１０３は、デコード部１０２によって入力されたデコード結果に応じて、所定の演算を行い、演算結果をレジスタファイル１０４に書き込む、あるいは分岐命令等の演算結果であるブランチ先のアドレスをプログラム制御部１０５に出力する。
【００２３】
レジスタファイル１０４は、ロード命令によってメモリ３０から読み出されたデータや、ＡＬＵ１０３の演算結果であるデータを記憶するレジスタ群である。
プログラム制御部１０５は、単位プロセッサＰ０全体を制御するものであり、単位プロセッサＰ０のステータス（例えば、割込みの可否状態、単位プロセッサＰ０におけるオーバーフローの発生状態等）を記憶するステータスレジスタ（ＰＳＲ）と、単位プロセッサＰ０が次に実行するべき命令が格納されたメモリアドレスを記憶するプログラムカウンタ（ＰＣ）とを含んで構成される。そして、プログラム制御部１０５は、単位プロセッサＰ０が割込み処理に移行する時点で、ＰＳＲの値を割込み処理の禁止状態に変更したり、分岐命令が実行された場合に、プログラムカウンタの値を分岐先のアドレスに変更したりする。
【００２４】
また、プログラム制御部１０５は、実行中のタスクによってハードウェアセマフォの取得要求が出力された場合、先ず、ハードウェアセマフォの取得結果を受け取り、ステータスレジスタにおけるハードウェアセマフォの取得結果を示す領域（以下、「セマフォ取得結果レジスタ」という。）に取得に成功したことを示すフラグ（ＯＳへの移行が許可されたことを示すフラグ）を更新する。一方、セマフォ取得に失敗した場合、取得に失敗したことを示すフラグ（ＯＳへの移行が拒否されたことを示すフラグ）が書き込まれた場合、ハードウェアセマフォの取得を一旦停止し、待機状態から離脱する。
【００２５】
さらに、プログラム制御部１０５は、追出し禁止フラグ１０６を備えている。追出し禁止フラグ１０６は、指定された単位プロセッサにおいてタスクの切替えや外部割込みが起こり、タスクが単位プロセッサから追出されることを禁止するための機構である。追出し禁止フラグ１０６を１にすることによって現在単位プロセッサにあるタスクが他のタスクに切替えられることが禁止される。単位プロセッサにおけるタスクの追出しが禁止された状態を以降ロック状態とも記す。
【００２６】
割込み制御部１１は、無線部５０等の周辺チップから割込み信号が入力された場合に、割込み信号を調停した上で、所定の割込み信号を単位プロセッサＰ０に出力する。メモリ制御部１２は、ＣＰＵ１０とメモリ３０との間に備えられ、ＣＰＵ１０からメモリ３０に対するデータの読み出し及び書込みが行われる場合に、メモリ３０を制御してデータの入出力を行う。
【００２７】
ハードウェアセマフォ部１３は、排他制御を実現する機構を有し、単位プロセッサＰ０〜Ｐ３からセマフォ取得要求があったとき、既にセマフォが獲得されている状態であれば新たな要求に対して、セマフォの獲得失敗を通知する。一方、それ以前にセマフォが獲得された状態でなければ、セマフォ取得成功の通知を単位プロセッサに返答する機能を有している。
【００２８】
すなわち、本実施形態では、ハードウェアセマフォを取得した単位プロセッサだけがＯＳを占有してタスクの処理を実行する権利を得る。このため、単位プロセッサＰ０〜Ｐ３のうちのいずれか１つだけがＯＳに移行できるので、ＯＳ同士の競合を防止する排他制御を実現できる。そして、ＯＳによって使用されるメモリ３０の所定の領域が同時にアクセスされたために処理が中断する等の不具合を防ぐことができる。
また、本実施形態では、追出し禁止フラグ１０６によってタスクが追出されることをＯＳのサービスコール終了まで禁止することができる。
【００２９】
さらに、本実施形態では、排他制御の実行中、プロセッサによる割込み処理の実行を禁止する。本実施形態では、割込み処理の実行禁止を割込み制御部１１によって行っている。すなわち、割込み制御部１１は、単位プロセッサＰ０〜Ｐ３のステータスが書き込まれるステータスレジスタ（図示せず）を備えている。ステータスレジスタのステータスを「割込み否」に設定することにより、割込み制御部１１は、所望の単位プロセッサに対する割込み処理を禁止することができる。
【００３０】
図３は、本実施形態でいうＳＭＰにおける単位プロセッサの結合を例示した図である。図３（ａ）、（ｂ）に示したＳＭＰは、いずれも複数の単位プロセッサＰｕを、メモリを共有するように結合して構成されている。（ａ）に示した構成は、マルチプロセッサと呼ばれている構成であって、（ｂ）に示した構成はマルチスレッドプロセッサと呼ばれている。マルチスレッドプロセッサは、マルチプロセッサよりも演算器を共有している点で単位プロセッサＰｕは密に結合しているという。なお、本実施形態のプロセッサは、ＳＭＰとしてマルチプロセッサ、マルチスレッドプロセッサのいずれを採用しても構成可能である。
【００３１】
図４（ａ）に示すように、ＳＭＰは、マルチプロセッサに対応するマルチプロセッサ対応ＯＳ４０１によって複数のユーザタスクｔ１〜ｔ３を並列に処理する。また、機能分散型プロセッサでは、（ｂ）に示すように、個々のプロセッサがＯＳ部によって複数のタスク（タスク群）を割込みによって処理している（例えばＯＳ部４０３ａが割込ハンドラ４０２を使ってユーザタスク群ｔ１１に含まれる複数のタスクを処理する）。
【００３２】
本実施形態のプロセッサは、複数の単位プロセッサの一部を結合してマルチプロセッサを構成している。このため、プロセッサ内でＳＭＰと機能分散型プロセッサとが混在することになり、ＳＭＰはマルチプロセッサ対応ＯＳ４０１によって動作する。機能分散プロセッサは、ＯＳ部４０３ａ等によって動作する。したがって、本実施形態のプロセッサ上では、複数のＯＳが動作することになる。プロセッサが複数のＯＳによって動作する状態を図５に示す。
【００３３】
このような本実施形態では、単位プロセッサ０及び単位プロセッサ３が第１オペレーティングシステムであるＯＳ部４０３ａ、４０３ｃによってタスクを実行する第１プロセッサに相当する。また、ＳＭＰ５を構成する単位プロセッサ１、単位プロセッサ２が第２オペレーティングシステムであるマルチプロセッサ対応ＯＳ４０１によってタスクを実行する第２プロセッサに相当する。
また、前記したように、本実施形態では、タスク調停部２１０が、単位プロセッサ０、単位プロセッサ３によって実行されるタスク、単位プロセッサ１、単位プロセッサ２によって実行されるタスクにかかるタスク情報を他のタスクとの間で授受している。
【００３４】
次に、本実施形態のプロセッサのタスク調停について説明する。
本実施形態のプロセッサは、タスク間通信によってタスク情報を他のプロセッサと授受し、タスクを調停する。タスク間通信は、一般的にイベントフラグ、セマフォ、メッセージキュー、メールボックス等によって実行される。なお、本実施形態のプロセッサは、上記した手法のうちイベントフラグによってタスク間通信をするものとする。ただし、本実施形態は、このような構成に限定されるものでなく、いずれのタスク間通信の方法を採用しても実現可能である。
【００３５】
イベントフラグによるタスク間通信は、タスク情報の送信元となるプロセッサが、処理の要求先となるプロセッサへの命令（コマンド）、要求先プロセッサを特定するためのＩＤ情報、命令を実行するためのデータ等をタスク情報としてインタフェースエリアに書き込みを行う事で送信する。一方、タスク情報を受け取ったプロセッサは、コマンドの実行結果を示すデータ、終了コードをタスク情報としてインタフェースエリアに書き込みを行う事で返信する。なお、要求元のプロセッサは、要求先のプロセッサが書き込みを行うインタフェースエリアの状態フラグが終了状態になるまでポーリング等によって待機する。
【００３６】
本実施形態では、ＯＳの識別情報を付与することによってタスク情報が授受されるタスクの範囲を設定している。すなわち、タスク間通信は、従来よりサービスコール内でタスクのＩＤを指定して行われている。本実施形態は、タスクのＩＤを拡張し、タスクに加えてタスクを処理するプロセッサが使用するＯＳをも指定するＩＤを設定する。ＩＤを受け取ったプロセッサ内のＯＳ部は、ＩＤに基づいて他のＯＳを使用するプロセッサ宛に情報を送信すると判断した場合にのみインタフェースエリアに情報を書込み、プロセッサ割込みを発生させる。
【００３７】
このようなＩＤの設定は、例えば、ＩＤを上位１６ビット、下位１６ビットに分け、下位１６ビットによって従来通りタスクを識別する番号を表す。また、上位１６ビットによってクラス名（タスクを処理するプロセッサが使用するＯＳの識別番号）を表すことによって実現可能である。
ＯＳの識別情報は、例えば、ＯＳ部４０３ａ、４０３ｃ、マルチプロセッサ対応ＯＳ４０１固有の数字によって表すことができる。本実施形態では、ＯＳ部４０３ａに「１」、ＯＳ部４０３ｃに「３」、マルチプロセッサ対応ＯＳ４０１に「２」の数字を割り当てる。なお、ＯＳ識別番号の定義は、システム初期のパラメータの設定によって可能である。パラメータの設定は、例えば、ブート処理によって可能である。
【００３８】
クラス名に識別情報「１」が付与されていた場合、タスク情報は、ＯＳ部４０３ａを使って動作する単位プロセッサＰ０で実行されるタスク間で通信される。また、クラス名に識別情報「２」が付与されていた場合、タスク情報は、マルチプロセッサ対応ＯＳ４０１を使って動作する単位プロセッサＰ１、Ｐ２で実行されるタスク間で通信される。さらに、クラス名に識別情報「３」が付与されていた場合、タスク情報は、ＯＳ部４０３ｃを使って動作する単位プロセッサＰ３で実行されるタスク間で通信される。
【００３９】
このような識別情報の指定は、タスクの種別によって決定する。すなわち、本実施形態のプロセッサで実行されるタスクには、プロセッサ上で動作するＯＳ以外のＯＳからメッセージを受信できないタスクと、他のＯＳからのメッセージを受信できるタスクとがある。他のＯＳからメッセージを受信可能なタスクをＯＳ間ネットワークタスク、他のＯＳからメッセージを受信できるタスクをＯＳ内ローカルタスクと記す。
【００４０】
ＯＳ間ネットワークタスクは、ＳＭＰ、機能分散型プロセッサにおいていずれの単位プロセッサとも通信可能である。ＯＳ内ローカルタスクは、ＳＭＰにおいて単位プロセッサＰ１、Ｐ２間でのみ通信可能であって、機能分散型プロセッサにおいては各プロセッサで実行されるタスク同士でのみ通信ができる。
上記した条件の下、本実施形態は、ＯＳ間ネットワークタスクのタスク情報に対し、通信したいプロセッサが使用するＯＳを示す任意の識別情報を付与する。また、ＯＳ内ローカルタスクのタスク情報には、通信可能なプロセッサが使用するＯＳを示す識別情報を付与し、通信の範囲を指定する。
【００４１】
図６は、本実施形態のタスク情報が授受されるインターフェイスエリア２２０を説明するための図である。図示したエリアには、状態フラグを書き込むための状態フラグエリア６０１、コマンドを書き込むためのコマンドエリア６０２、通信が終了したことを示す終了情報エリア６０６がある。このうち、状態フラグエリア６０１が、インターフェイスエリア２２０を表している。状態フラグエリアに設定される内容として、例えば、次のものが挙げられる。
【００４２】
・アイドリング中（ＩＤＬＥ中）  初期状態を示すものであって、要求元タスクが終了状態を認識したとき設定する。
・要求中：処理の要求元タスク（ＯＳ）が処理を要求時に設定する。
・実行中：処理の実行先タスク（ＯＳ）が処理を受付け時に設定する。
・終了状態：処理を実行したタスク（ＯＳ）が処理を終了時に設定する。
【００４３】
コマンドエリア６０２には、コマンドＩＤが書き込まれるエリア６０３、リソースＩＤが書き込まれるエリア６０４、データエリア６０５がある。コマンドＩＤとは、例えば、書込み要求や読み込み要求等をコード化して示す情報である。リソースＩＤは、コマンドＩＤが何の要求のＩＤかを特定する情報であって、例えば、イベントフラグの発生、セマフォの取得、メッセージキュー等をコード化して示している。また、データエリア６０５は、コマンドに必要なデータを補足するためのエリアであって、例えば、書込みエリアポインタや書込みエリアポインタが書き込まれる。
【００４４】
終了情報エリア６０６は、実行先タスク（ＯＳ）でコマンド実行した際の情報を示すためのエリアであって、例えば、正常終了したことやエラーコード等が書き込まれる。
以上の構成により、本実施形態のタスク調停部２１０、インターフェイスエリア２２０は、ＯＳ部４０３ａ、４０３ｃ、マルチプロセッサ対応ＯＳ４０１によって実行されるタスク間でタスク情報を授受することができる。また、タスク調停部２１０、インターフェイスエリア２２０は、ＯＳ部４０３ａ、４０３ｃ間、さらにはＯＳ部４０３ａ、４０３ｃによって実行されるタスクとマルチプロセッサ対応ＯＳ４０１によって実行されるタスクとの間でタスク情報を授受することができる。
【００４５】
また、本実施形態は、１、２、３の識別情報を付すことに限定されるものでない。他の識別情報として、例えば、識別情報０を設定してもよい。識別情報０は、いずれのタスクのタスク情報にあっても、タスクを実行した単位プロセッサが使用するＯＳ内で通信することを示すものである。このように構成すれば、単位プロセッサは、タスク情報に付与された識別情報から指定されたＯＳや単位プロセッサＰ０〜Ｐ３を判別することなく、短時間のうちに通信の範囲を判定することができる。
【００４６】
図７は、要求先の単位プロセッサに対する割込みについて説明するための図である。図７において、タスク間通信によってタスク情報を送信する（処理を要求する）単位プロセッサを要求元プロセッサと記す。また、処理を要求された単位プロセッサを要求先プロセッサと記す。
要求元プロセッサは、インターフェイスエリア２２０にタスク情報を書き込むことによってタスク通信をする。そして、要求先プロセッサに対する割込み処理を実行する。要求先プロセッサは、割込み要求を受け付けるか否かを判定し、受け付ける場合には現在実行されているタスクを一時的に終了する。そして、タスクを終了したことを示すタスク情報をインターフェイスエリアに書き込む。
【００４７】
図８、図９は、以上述べた本実施形態のプロセッサの動作のうち、タスク間通信にかかる動作を説明するためのフローチャートである。このうち、図８は、要求元プロセッサの動作を示したフローチャートである。また、図９は、要求先のプロセッサの動作を説明するためのフローチャートである。
図８に示すように、要求元プロセッサは、要求先プロセッサで行われているタスクに対する要求をインターフェイスエリア２２０に設定する。設定は、インターフェイスエリア２２０にタスク情報を書き込むことによって行われる（Ｓ７０１）。そして、要求先のプロセッサに割込み要求をし（Ｓ７０２）、インターフェイスエリア２２０に書き込まれているタスク情報がタスクの終了を示すものになったか否かをポーリングして判断する（Ｓ７０３）。
【００４８】
タスク情報が終了を示す状態になったと判断された場合（Ｓ７０３：Ｙｅｓ）、要求元プロセッサは、インターフェイスエリア２２０の終了情報エリアに自身のタスク通信が終了したことを示すタスク情報を書き込む（Ｓ７０４）。
なお、要求元プロセッサは、インターフェイスエリア２２０に設定した要求が自装置のＯＳに対応するタスクに宛てたものである場合、ローカルタスク宛の通信として扱うために割込みが発生しない。
【００４９】
一方、要求先プロセッサは、割込みの要求を受けた場合、図９に  示したように、割込みから復帰時のために、割込み発生時のレジスタを退避させる（Ｓ９０１）。そして、タスク情報に含まれるコマンドやタスクＩＤ等をチェックし（Ｓ９０２）この結果、適正に受け付けられないものであった場合（Ｓ９０２：ＮＧ）、インターフェイスエリア２２０にエラーが発生したことを書き込む（Ｓ９０９）。そして、退避したレジスタのデータを、割込みが発生する以前の状態に復元し（Ｓ９１０）、割込み発生以前に実行されていたタスクの処理を続行する（Ｓ９１１）。
【００５０】
また、ステップＳ９０２において、コマンドやタスクＩＤ等が適正に受け付けられたと判断された場合（Ｓ９０２：ＯＫ）、要求先プロセッサは、要求されたタスクをコマンドキュー及びＲＥＡＤＹキューに登録する（Ｓ９０３）。そして、タスクスイッチを発生するか否かを判定する判定処理を実行する（Ｓ９０４）。
ステップＳ９０５の判定の結果、タスクスイッチする場合（Ｓ９０５：Ｙｅｓ）、割込み発生前に実行されていたタスクのコンテキストを退避させる（Ｓ９１２）。また、タスクの終了が正常に終了したことをインターフェイスエリア２２０に書き込むことによって設定する（Ｓ９１３）。さらに、ＲＥＡＤＹキューに登録したタスクのコンテキストを取り出し（Ｓ９１４）、タスクコンテキストを切替える（Ｓ９１５）。
【００５１】
このような本実施形態によれば、ＳＭＰ及び機能分散プロセッサを任意に組み合わせて１つのマルチプロセッサを構成することができる。そして、この際、ＳＭＰ、機能分散型プロセッサを、それぞれ従来から使用されていたＯＳによって動作させることができる。このため、ＳＭＰ、機能分散プロセッサを組み合わせたマルチプロセッサに特化した新たなアプリケーションを構築する必要がない。したがって、本実施形態は、プロセッサの信頼性を高めると共に、開発にかかるコストを抑えてプロセッサの普及に寄与することができる。
【図面の簡単な説明】
【００５２】
【図１】本発明にかかる携帯電話の機能構成を示すブロック図である。
【図２】図１に示したＣＰＵの内部構成を示すブロック図である。
【図３】本発明の一実施形態でいうＳＭＰにおける単位プロセッサの結合を例示した図である。
【図４】一般的なＳＭＰのＯＳと機能分散型のプロセッサのＯＳとを説明するための図である。
【図５】本発明の一実施形態のプロセッサが複数のＯＳによって動作する状態を示した図である。
【図６】本発明の一実施形態のタスク情報が授受されるインターフェイスエリアを説明するための図である。
【図７】本発明の一実施形態のタスク間通信における割込み処理を説明するための図である。
【図８】本発明の一実施形態の要求元プロセッサの動作を示したフローチャートである。
【図９】本発明の一実施形態の要求先のプロセッサの動作を説明するためのフローチャートである。
【符号の説明】
【００５３】
５  ＳＭＰ  １１  割込み制御部、１２  メモリ制御部、１３  ハードウェアセマフォ部、３０  メモリ、２１０  タスク調停部、２２０  インターフェイスエリア、４０１  マルチプロセッサ対応ＯＳ、４０３ａ，４０３ｂ，４０３ｃ  ＯＳ部、６０１  状態フラグエリア、６０２  コマンドエリア、６０３、６０４、６０５  エリア、６０６  終了情報エリア、Ｐ０，Ｐ１，Ｐ２，Ｐ３  単位プロセッサ
【図１】
2007172311.tif 000003
【図２】
2007172311.tif 000004
【図３】
2007172311.tif 000005
【図４】
2007172311.tif 000006
【図５】
2007172311.tif 000007
【図６】
2007172311.tif 000008
【図７】
2007172311.tif 000009
【図８】
2007172311.tif 000010
【図９】
2007172311.tif 000011