(57)【要約】【課題】  マルチプロセッサにおいて、各プロセッサ間での排他制御を適切に行うこと。【解決手段】  ＣＰＵ１０において、単位プロセッサ間でＯＳに移行するための排他制御が行われる際に、各単位プロセッサが同期型のセマフォ取得要求をハードウェアセマフォ部１３に出力する。また、ハードウェアセマフォ部１３は、ハードウェアセマフォの取得に失敗したことを示す信号を出力することにより、セマフォ取得要求に対して待機状態とさせた単位プロセッサを、必要に応じて動作可能な状態とする。そのため、ハードウェアセマフォの取得要求を行う単位プロセッサから取得要求が出力される回数が増大することを避けることができ、ハードウェアセマフォの取得に対して待機状態とされた単位プロセッサを必要に応じて動作させることが可能となる。即ち、各単位プロセッサ間での排他制御を適切に行うことが可能となる。【選択図】  図２
2006209480.tif 000002
【特許請求の範囲】
【請求項１】
タスクあるいはスレッドを処理するプロセッサ部を複数備えるプロセッサであって、
第１のプロセッサ部から所定ハードウェアに対するアクセス要求が出力された場合に、第１のプロセッサ部にアクセスを許可する信号を出力すると共に、第１のプロセッサ部以外の第２のプロセッサ部から後に行われる前記所定ハードウェアへのアクセス要求に対して、第１のプロセッサ部による前記所定ハードウェアへのアクセスの終了を待って、第２のプロセッサ部にアクセスを許可する信号を出力することにより、前記所定ハードウェアに対する排他制御を行う排他制御部を備え、
前記プロセッサ部は、前記所定のハードウェアに対してアクセスする場合に、前記排他制御部にアクセス要求を出力した後に待機状態に移行し、アクセスを許可する信号が入力されたことに対応して、前記所定のハードウェアに対するアクセスを実行し、
前記排他制御部は、第１のプロセッサ部による前記所定ハードウェアへのアクセス中に該所定ハードウェアへのアクセス要求を出力した前記第２のプロセッサ部に他の処理を行わせる必要が生じた場合に、該第２のプロセッサ部にアクセスの拒否を示す信号を出力することを特徴とするプロセッサ。
【請求項２】
前記プロセッサ部は、前記所定ハードウェアに対するアクセスの可否を示すフラグを記憶するアクセスフラグ用レジスタと、該プロセッサ部において次に実行する命令を指示するプログラムカウンタとを備え、
前記排他制御部は、前記第１のプロセッサ部から前記所定ハードウェアに対するアクセス要求が出力された場合、前記第１のプロセッサにおける前記アクセスフラグ用レジスタをアクセスを許可する状態に書き換え、第１のプロセッサ部による前記所定ハードウェアへのアクセス中に該所定ハードウェアへのアクセス要求を出力した前記第２のプロセッサ部に他の処理を行わせる必要が生じた場合に、該第２のプロセッサ部における前記アクセスフラグ用レジスタをアクセスを拒否する状態に書き換えると共に、該第２のプロセッサ部における前記プログラムカウンタを、該他の処理から復帰した場合に前記所定ハードウェアへのアクセス要求が実行される状態に設定した後に、該他の処理を行わせることを特徴とする請求項１記載のプロセッサ。
【請求項３】
タスクあるいはスレッドを処理するプロセッサ部を複数備えるプロセッサにおける情報処理方法であって、
第１のプロセッサ部から所定ハードウェアに対するアクセス要求が出力された場合に、第１のプロセッサ部にアクセスを許可する信号を入力すると共に、第１のプロセッサ部以外の第２のプロセッサ部から後に行われる前記所定ハードウェアへのアクセス要求に対して、第１のプロセッサ部による前記所定ハードウェアへのアクセスの終了を待って、第２のプロセッサ部にアクセスを許可する信号を入力することにより、前記所定ハードウェアに対する排他制御を行う排他制御ステップを含み、
前記プロセッサ部が、前記所定のハードウェアに対してアクセスする場合に、前記アクセス要求を出力した後に待機状態に移行し、アクセスを許可する信号が入力されたことに対応して、前記所定のハードウェアに対するアクセスを実行し、
第１のプロセッサ部による前記所定ハードウェアへのアクセス中に該所定ハードウェアへのアクセス要求を出力した前記第２のプロセッサ部に他の処理を行わせる必要が生じた場合に、該第２のプロセッサ部にアクセスの拒否を示す信号を入力することを特徴とする情報処理方法。
【請求項４】
前記プロセッサ部に、前記所定ハードウェアに対するアクセスの可否を示すフラグを記憶するアクセスフラグ用レジスタと、該プロセッサ部において次に実行する命令を指示するプログラムカウンタとを備えておき、
前記第１のプロセッサ部から前記所定ハードウェアに対するアクセス要求が出力された場合、前記第１のプロセッサにおける前記アクセスフラグ用レジスタをアクセスを許可する状態に書き換え、第１のプロセッサ部による前記所定ハードウェアへのアクセス中に該所定ハードウェアへのアクセス要求を出力した前記第２のプロセッサ部に他の処理を行わせる必要が生じた場合に、該第２のプロセッサ部における前記アクセスフラグ用レジスタをアクセスを拒否する状態に書き換えると共に、該第２のプロセッサ部における前記プログラムカウンタを、該他の処理から復帰した場合に前記所定ハードウェアへのアクセス要求が実行される状態に設定した後に、該他の処理を行わせることを特徴とする請求項３記載の情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のタスクあるいはスレッドを並列的に処理するプロセッサおよびその情報処理方法に関する。
【背景技術】
【０００２】
近年、組み込み機器等において、複数のタスクあるいはスレッドを並列的に処理可能なマルチタスクプロセッサあるいはマルチスレッドプロセッサと呼ばれるプロセッサ（以下、これらを総称して「マルチプロセッサ」と言う。）が利用されつつある。
従来の携帯機器では、シングルプロセッサによる処理が行われていたところ、携帯機器の高機能化に伴い処理が複雑化し、シングルプロセッサによる処理が困難となっている。
【０００３】
即ち、シングルプロセッサによって高機能を実現しようとした場合、高いクロック周波数で動作させる必要があり、それに伴い消費電力も増大する。また、例えば携帯電話において動画の再生中に電話の着信があった場合の処理等、リアルタイムに応答する必要がある場合の対応が困難となる。
一方、マルチプロセッサを利用することにより、装置を低クロック化することが可能となり、それにより低消費電力化を実現することができる。さらに、複数のタスク等を並列に処理できることから、リアルタイムな応答性の観点からも有効なものとなる。
【０００４】
ところで、シングルプロセッサにおいては、複数のタスク等が同時に１つのハードウェアにアクセスすることは考えられないことから、オペレーティングシステム（ＯＳ）内において排他制御を適切に行うことで、同一ハードウェアに対するアクセスの競合を回避することができる。
なお、マルチタスク処理における割り込み間の排他制御に関する技術が、特許文献１に記載されている。
【特許文献１】特開２００１−２１６１７０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に記載された技術を含め、従来の技術においては、マルチプロセッサにおける各プロセッサ間での排他制御を適切に行うことができなかった。
例えば、従来の排他制御に用いられているポーリング型の制御を行った場合、複数のプロセッサからポーリングが行われるため、バスアクセスの回数が増大することとなる。
また、従来の排他制御に用いられている同期型の制御を行った場合、他のプロセッサがアクセスしている間に同一のハードウェアに対してアクセス要求を行ったプロセッサは、先にアクセスしたプロセッサがハードウェアを解放するまで動作することができず、処理能力の低下を招くこととなる。
【０００６】
そのため、マルチプロセッサにおける複数のプロセッサ（タスク）がＯＳに移行しようとする場合に、これらを適切に排他制御したり、その他、同一のハードウェアにアクセスする可能性のあるプロセッサ（タスク）間で適切に排他制御を行ったりすることができなかった。
特に、１チップ上に複数のプロセッサコアを搭載して１つのマルチプロセッサとして機能させる、いわゆる密結合型マルチプロセッサにおいて、このような排他制御を適切に行う手段は提供されていないのが現状である。
【０００７】
本発明の課題は、マルチプロセッサにおいて、各プロセッサ間での排他制御を適切に行うことである。
【課題を解決するための手段】
【０００８】
以上の課題を解決するため、本発明は、
タスクあるいはスレッドを処理するプロセッサ部を複数備えるプロセッサであって、第１のプロセッサ部（例えば、図３に示す動作における単位プロセッサＰ０）から所定ハードウェアに対するアクセス要求が出力された場合に、第１のプロセッサ部にアクセスを許可する信号を出力すると共に、第１のプロセッサ部以外の第２のプロセッサ部（例えば、図３に示す動作における単位プロセッサＰ１）から後に行われる前記所定ハードウェアへのアクセス要求に対して、第１のプロセッサ部による前記所定ハードウェアへのアクセスの終了を待って、第２のプロセッサ部にアクセスを許可する信号を出力することにより、前記所定ハードウェアに対する排他制御を行う排他制御部（例えば、図２のハードウェアセマフォ部１３）を備え、前記プロセッサ部は、前記所定のハードウェアに対してアクセスする場合に、前記排他制御部にアクセス要求を出力した後に待機状態に移行し、アクセスを許可する信号が入力されたことに対応して、前記所定のハードウェアに対するアクセスを実行し、前記排他制御部は、第１のプロセッサ部による前記所定ハードウェアへのアクセス中に該所定ハードウェアへのアクセス要求を出力した前記第２のプロセッサ部に他の処理を行わせる必要が生じた場合に、該第２のプロセッサ部にアクセスの拒否を示す信号を出力することを特徴としている。
【０００９】
このような構成により、所定ハードウェアに対するアクセス要求を行うプロセッサ部からアクセス要求が出力される回数が増大することを避けることができると共に、アクセス要求に対して待機状態となったプロセッサ部を必要に応じて動作させることが可能となる。
したがって、マルチプロセッサにおいて、各プロセッサ間での排他制御を適切に行うことが可能となる。
【００１０】
また、前記プロセッサ部は、前記所定ハードウェアに対するアクセスの可否を示すフラグを記憶するアクセスフラグ用レジスタ（例えば、図２のＰＳＲに含まれるセマフォ取得結果レジスタ）と、該プロセッサ部において次に実行する命令を指示するプログラムカウンタ（例えば、図２のＰＣ）とを備え、前記排他制御部は、前記第１のプロセッサ部から前記所定ハードウェアに対するアクセス要求が出力された場合、前記第１のプロセッサにおける前記アクセスフラグ用レジスタをアクセスを許可する状態に書き換え、第１のプロセッサ部による前記所定ハードウェアへのアクセス中に該所定ハードウェアへのアクセス要求を出力した前記第２のプロセッサ部に他の処理を行わせる必要が生じた場合に、該第２のプロセッサ部における前記アクセスフラグ用レジスタをアクセスを拒否する状態に書き換えると共に、該第２のプロセッサ部における前記プログラムカウンタを、該他の処理から復帰した場合に前記所定ハードウェアへのアクセス要求が実行される状態に設定した後に、該他の処理を行わせることを特徴としている。
【００１１】
このような構成により、アクセス要求に対して待機状態となったプロセッサ部に他の処理を行わせる場合に、そのプロセッサ部が他の処理を終了して復帰したとき、再度所定ハードウェアへのアクセス要求を行うこととなり、待機状態となっているプロセッサ部の動作が必要な場合に、割り込み処理によって適切に処理を行わせることが可能となる。
また、本発明は、
タスクあるいはスレッドを処理するプロセッサ部を複数備えるプロセッサにおける情報処理方法であって、第１のプロセッサ部から所定ハードウェアに対するアクセス要求が出力された場合に、第１のプロセッサ部にアクセスを許可する信号を入力すると共に、第１のプロセッサ部以外の第２のプロセッサ部から後に行われる前記所定ハードウェアへのアクセス要求に対して、第１のプロセッサ部による前記所定ハードウェアへのアクセスの終了を待って、第２のプロセッサ部にアクセスを許可する信号を入力することにより、前記所定ハードウェアに対する排他制御を行う排他制御ステップを含み、前記プロセッサ部が、前記所定のハードウェアに対してアクセスする場合に、前記アクセス要求を出力した後に待機状態に移行し、アクセスを許可する信号が入力されたことに対応して、前記所定のハードウェアに対するアクセスを実行し、第１のプロセッサ部による前記所定ハードウェアへのアクセス中に該所定ハードウェアへのアクセス要求を出力した前記第２のプロセッサ部に他の処理を行わせる必要が生じた場合に、該第２のプロセッサ部にアクセスの拒否を示す信号を入力することを特徴としている。
【００１２】
また、前記プロセッサ部に、前記所定ハードウェアに対するアクセスの可否を示すフラグを記憶するアクセスフラグ用レジスタと、該プロセッサ部において次に実行する命令を指示するプログラムカウンタとを備えておき、前記第１のプロセッサ部から前記所定ハードウェアに対するアクセス要求が出力された場合、前記第１のプロセッサにおける前記アクセスフラグ用レジスタをアクセスを許可する状態に書き換え、第１のプロセッサ部による前記所定ハードウェアへのアクセス中に該所定ハードウェアへのアクセス要求を出力した前記第２のプロセッサ部に他の処理を行わせる必要が生じた場合に、該第２のプロセッサ部における前記アクセスフラグ用レジスタをアクセスを拒否する状態に書き換えると共に、該第２のプロセッサ部における前記プログラムカウンタを、該他の処理から復帰した場合に前記所定ハードウェアへのアクセス要求が実行される状態に設定した後に、該他の処理を行わせることを特徴としている。
【００１３】
このように、本発明によれば、マルチプロセッサにおいて、各プロセッサ間での排他制御を適切に行うことが可能となる。
【発明を実施するための最良の形態】
【００１４】
以下、図を参照して本発明に係るプロセッサの実施の形態を説明する。
本発明に係るプロセッサは、タスクあるいはスレッド等、プログラムをその実行単位で並列的に処理するものであり、本発明に係るプロセッサ内に、タスク等を実行するプロセッサ（以下、「単位プロセッサ」と言う。）が実質的に複数備えられたハードウェア構成を有している。
【００１５】
そして、同一のハードウェアにアクセスする可能性のあるプロセッサ（タスク）間で排他制御を行うためのハードウェアセマフォ部（排他制御部）を備え、ハードウェアセマフォ部が、複数プロセッサ間の排他制御を行うと共に、アクセス許可待ちの状態にあるプロセッサを必要に応じて動作可能な状態に戻す。
これにより、複数プロセッサ間の排他制御が実現されると共に、各プロセッサの処理能力が低下する事態を防止できる。
【００１６】
このように、本発明に係るプロセッサは、各プロセッサ間での排他制御を適切に行うことが可能なマルチプロセッサとなっている。
まず、構成を説明する。
ここでは、本発明に係るプロセッサを携帯電話に組み込んだ場合を例に挙げ、排他制御の対象としてオペレーティングシステム（ＯＳ）への移行を想定した場合について説明する。なお、以下の説明において、スレッド等、プログラムの実行単位を総称して「タスク」と言う。
【００１７】
図１は、本発明に係る携帯電話１の機能構成を示すブロック図である。
図１において、携帯電話１は、ＣＰＵ（Central Processing Unit）１０と、フラッシュＲＯＭ２０と、メモリ３０と、バッファ４０と、無線部５０と、ＩｒＤＡ（Infrared Data Association）部６０と、オーディオ（Audio）部７０と、タイマ（Timer）８０と、ＵＳＢ（Universal Serial Bus）インターフェース部９０と、キー（KEY）操作部１００と、ＬＣＤ（Liquid Crystal Display）１１０と、カメラ（Camera）部１２０とを含んで構成され、ＣＰＵ１０、フラッシュＲＯＭ２０、メモリ３０およびバッファ４０は、バスによって接続されている。また、無線部５０、ＩｒＤＡ部６０、オーディオ部７０、タイマ８０、ＵＳＢインターフェース部９０、キー操作部１００、ＬＣＤ１１０およびカメラ部１２０は、ＣＰＵ１０と直接接続されている。
【００１８】
ＣＰＵ１０は、複数のタスクを並列的に処理しつつ携帯電話１全体を制御するもので、キー操作部１００から入力される各種の指示信号に応じて、フラッシュＲＯＭ３０に記憶されたオペレーティングシステムプログラム（ＯＳ）や各種アプリケーションプログラムを読み出して実行したり、無線部５０、オーディオ部７０あるいはカメラ部１２０等の周辺チップから入力される割り込み信号に応じて、割り込みハンドラを実行したりする。
【００１９】
また、ＣＰＵ１０は、各単位プロセッサにおいて実行されている各タスクがＯＳのサービスコールを呼び出し、ＯＳの処理に移行する場合に、セマフォを取得させることにより、これらの単位プロセッサ間における排他制御を行う。このとき、ＣＰＵ１０は、同期型のセマフォ制御によりアクセスの調停を行う。さらに、ＣＰＵ１０は、排他制御により待機状態となった単位プロセッサを動作させる必要が生じた場合、待機状態となっている単位プロセッサにハードウェアセマフォの取得に失敗したことを示す信号を送信することにより、その単位プロセッサに制御を戻し、動作可能な状態とする。
【００２０】
また、ＣＰＵ１０は、各種処理結果をフラッシュＲＯＭ２０あるいはメモリ３０に格納する。
ここで、ＣＰＵ１０の内部構成について説明する。
図２は、ＣＰＵ１０の内部構成を示すブロック図である。
図２において、ＣＰＵ１０は、複数の単位プロセッサＰ０〜Ｐ３と、割り込み制御部１１と、メモリ制御部１２と、ハードウェアセマフォ部１３とを含んで構成される。
【００２１】
単位プロセッサＰ０〜Ｐ３は、それぞれが並列してタスクを処理可能なプロセッサである。
なお、単位プロセッサＰ０〜Ｐ３の内部構成としては同様のものとなるため、代表として、単位プロセッサＰ０の内部構成について説明する。
単位プロセッサＰ０は、フェッチ部１０１と、デコード部１０２と、ＡＬＵ（Arithmetic and Logical Unit）１０３と、レジスタ１０４と、プログラム制御部１０５とをさらに含んで構成される。
【００２２】
フェッチ部１０１は、後述するプログラム制御部１０５のプログラムカウンタが示すメモリアドレスから命令コードを読み出し、デコード部１０２に出力する。
デコード部１０２は、フェッチ部１０１によって入力された命令コードをデコードし、デコード結果（命令内容およびソースレジスタ、デスティネーションレジスタのアドレス等）をＡＬＵ１０３に出力する。
【００２３】
ＡＬＵ１０３は、デコード部１０２によって入力されたデコード結果に応じて、所定の演算を行い、演算結果をレジスタ１０４に書き込んだり、分岐命令等の演算結果であるブランチ先のアドレスをプログラム制御部１０５に出力したりする。
レジスタ１０４は、ロード命令によってメモリ３０から読み出されたデータや、ＡＬＵ１０３の演算結果であるデータを記憶するレジスタ群である。
【００２４】
プログラム制御部１０５は、単位プロセッサＰ０全体を制御するものであり、ハードウェアセマフォの取得結果を含む単位プロセッサＰ０の各種ステータス（割り込みの可否状態、実行されている処理がバックグラウンド処理か否かを示す状態、単位プロセッサＰ０におけるオーバーフローの発生状態等）を記憶するステータスレジスタ（ＰＳＲ）と、単位プロセッサＰ０が次に実行するべき命令が格納されたメモリアドレスを記憶するプログラムカウンタ（ＰＣ）とを含んで構成される。そして、プログラム制御部１０５は、単位プロセッサＰ０が割り込み処理を実行している間、ステータスレジスタの値を割り込み処理の禁止を示す値に変更したり、分岐命令が実行された場合に、プログラムカウンタの値を分岐先のアドレスに変更したりする。
【００２５】
また、プロセッサ制御部１０５は、実行中のタスクによってハードウェアセマフォの取得要求が出力された場合、まず、ハードウェアセマフォの取得結果を受け取るための待機状態となり、ステータスレジスタにおけるハードウェアセマフォの取得結果を示す領域（以下、「セマフォ取得結果レジスタ」と言う。）に取得に成功したことを示すフラグ（ＯＳへの移行が許可されたことを示すフラグ）が書き込まれた場合、ＯＳのサービスコールを呼び出してＯＳの処理に移行する。一方、セマフォ取得結果レジスタにセマフォの取得に失敗したことを示すフラグ（ＯＳへの移行が拒否されたことを示すフラグ）が書き込まれた場合、ハードウェアセマフォの取得を一旦停止し、待機状態から離脱する。
【００２６】
割り込み制御部１１は、無線部５０等の周辺チップから割り込み信号が入力された場合に、割り込み信号を調停した上で、空き状態である単位プロセッサあるいは最も優先度の低いタスクを実行している単位プロセッサに所定の割り込み信号を出力する。
メモリ制御部１２は、ＣＰＵ１０とメモリ３０との間に備えられ、ＣＰＵ１０からメモリ３０に対するデータの読み出しおよび書き込みが行われる場合に、メモリ３０を制御してデータの入出力を行う。
【００２７】
図１に戻り、フラッシュＲＯＭ２０は、携帯電話１において実行されるオペレーティングシステムプログラム、および、各種アプリケーションプログラムを記憶している。
メモリ３０は、ＤＲＡＭ（Dynamic Random Access Memory）、ＳＲＡＭ（Static Random Access Memory）あるいはＳＤＲＡＭ（Synchronous DRAM）といった半導体メモリによって構成され、ＣＰＵ１０が処理を実行する際にワークエリアを形成すると共に、その処理結果を記憶する。
【００２８】
バッファ４０は、外部から携帯電話１に入力されたデータあるいは携帯電話１において発生されたデータを一時的に保持するバッファである。
無線部５０は、携帯電話１と携帯電話システムの基地局との間における無線通信を行うものである。例えば、無線部５０は、基地局から携帯電話１に対する着信を示す信号を受信した場合、ＣＰＵ１０に対して割り込み信号を出力し、着信信号の受信を通知する。また、無線部５０は、ＣＰＵ１０から発信を指示する信号が入力された場合、基地局に対して発信要求を示す信号を送信する。
【００２９】
ＩｒＤＡ部６０は、ＩｒＤＡに基づく通信を行うインターフェースであり、外部からＩｒＤＡに基づく無線信号を受信した場合、ＣＰＵ１０に対して割り込み信号を出力し、ＩｒＤＡ信号の受信を通知する。
オーディオ部７０は、携帯電話１において入出力される音声信号を処理するものであり、通話におけるマイクおよびスピーカを用いた音声の入出力、あるいは、音楽等の再生といった処理を行う。
【００３０】
タイマ８０は、携帯電話１のクロック信号を基に時間を計測し、例えば１ｍｓ毎等、所定時間毎にＣＰＵ１０に対して割り込み信号を出力する。
ＵＳＢインターフェース部９０は、ＵＳＢによる通信を行うためのインターフェースであり、ＵＳＢケーブルが接続された場合やＵＳＢケーブルから信号を受信した場合等に、ＣＰＵ１０に対して割り込み信号を出力する。
【００３１】
キー操作部１００は、携帯電話１に対する指示入力を行うための各種キーを備えており、これらのキーが押下された場合に、ＣＰＵ１０に対する割り込み信号を出力する。
ＬＣＤ１１０は、ＣＰＵ１０によって入力された文字あるいは画像等の描画命令に従って、所定画面を表示する表示装置である。
カメラ部１２０は、ＣＣＤ（Charge Coupled Devices）あるいはＣＭＯＳ（Complementary Metal Oxide Semiconductor）センサ等の撮像素子を備え、画像を撮影した場合に、ＣＰＵ１０に対して割り込み信号を出力する。
【００３２】
次に、動作を説明する。
図３は、携帯電話１のＣＰＵ１０における動作シーケンスを示す図である。
なお、図３においては、ハードウェアセマフォの取得によるＯＳへの移行処理の動作を示すため、この動作に関わる単位プロセッサＰ０，Ｐ１およびハードウェアセマフォ部１３の動作についてのみ示している。また、本実施の形態においてＣＰＵ１０が実行するプログラムは、ハードウェアセマフォの取得要求を行った後に、セマフォ取得結果レジスタのフラグを確認する命令が実行されるように記述されている。
【００３３】
図３において、単位プロセッサＰ０がＯＳのサービスコール（例えばメモリ３０のシステム領域に格納された制御パラメータを読み出すためのサービスコール等）を呼び出すべく、ハードウェアセマフォ部１３に対してハードウェアセマフォの取得要求を出力すると（ステップＳ１）、単位プロセッサＰ０は、ハードウェアセマフォ部１３からの応答を待つ待機状態となる（ステップＳ２）。
【００３４】
一方、ハードウェアセマフォ部１３は、他のいずれの単位プロセッサにおいてもＯＳが実行されていないことから、ハードウェアセマフォの取得に成功したことを示す信号を単位プロセッサＰ０に出力する（ステップＳ３）。このとき、ハードウェアセマフォ部１３は、単位プロセッサＰ０のセマフォ取得結果レジスタをハードウェアセマフォの取得に成功したことを示すフラグに書き換える。
【００３５】
そして、単位プロセッサＰ０が、ハードウェアセマフォ部１３から出力されたハードウェアセマフォの取得に成功したことを示す信号を受け（ステップＳ４）、セマフォ取得結果レジスタのフラグがセマフォの取得に成功したことを示すものであることを確認すると、ＯＳのサービスコールを呼び出し、ＯＳとしての処理を実行する（ステップＳ５）。
ここで、単位プロセッサＰ０がハードウェアセマフォを取得した後、単位プロセッサＰ１がＯＳのサービスコール（例えばメモリ３０のシステム領域に制御パラメータを書き込むためのサービスコール等）を呼び出すべく、ハードウェアセマフォ部１３に対してハードウェアセマフォの取得要求を出力すると（ステップＳ６）、単位プロセッサＰ１は、ハードウェアセマフォ部１３からの応答を待つ待機状態となる（ステップＳ７）。
【００３６】
一方、ハードウェアセマフォ部１３は、単位プロセッサＰ０にハードウェアセマフォの取得を許可していることから、単位プロセッサＰ１に対して応答を行わない状態となる（ステップＳ８）。
これにより、ＣＰＵ１０が同期型のセマフォ制御を行うこととなり、ハードウェアセマフォの取得要求を行う単位プロセッサから取得要求が出力される回数が増大することを避けることが可能となる。
【００３７】
そして、単位プロセッサＰ１が待機状態である場合に、単位プロセッサＰ０において、単位プロセッサＰ１に実行させる優先度の高いタスクが発生したとする（ステップＳ９）。
このとき、単位プロセッサＰ０は、ハードウェアセマフォ部１３に単位プロセッサＰ１に対するタスクスイッチの要求を出力する（ステップＳ１０）。
【００３８】
すると、ハードウェアセマフォ部１３は、応答の待機状態にある単位プロセッサＰ１に対し、ハードウェアセマフォの取得に失敗したことを示す信号を出力する（ステップＳ１１）。このとき、ハードウェアセマフォ部１３は、単位プロセッサＰ１のセマフォ取得結果レジスタをハードウェアセマフォの取得に失敗したことを示すフラグに書き換える。
そして、単位プロセッサＰ１が、ハードウェアセマフォ部１３から出力されたハードウェアセマフォの取得に失敗したことを示す信号を受け（ステップＳ１２）、セマフォ取得結果レジスタのフラグがセマフォの取得に失敗したことを示すものであることを確認すると、単位プロセッサＰ１は、待機状態から離脱し、動作可能な状態となる（ステップＳ１３）。これにより、単位プロセッサＰ１におけるセマフォ取得要求が一旦取り消される。
【００３９】
次いで、ハードウェアセマフォ部１３が、内部割り込み処理により、単位プロセッサＰ１におけるタスクスイッチを指示し（ステップＳ１４）、単位プロセッサＰ１のコンテキストがスタックに退避されると共に、退避されたスタックを示すスタックポインタが、実行されていたタスクのスタックポインタの退避領域に格納される（ステップＳ１５）。
続いて、単位プロセッサＰ０は、単位プロセッサＰ１において実行させるタスクのコンテキストを復元させる（ステップＳ１６）。
【００４０】
その後、単位プロセッサＰ１は、単位プロセッサＰ０によって実行が指示されたタスクを処理する。
そして、そのタスクの処理が終了すると、ステップＳ１５において退避されたコンテキストを復元し、退避されたタスクが再び実行される。
このタスクが実行されると、ステータスレジスタがセマフォ取得結果レジスタを確認する命令を指示していることから、セマフォ取得結果レジスタが確認され、ハードウェアセマフォの取得に失敗したことが認識される。
【００４１】
すると、単位プロセッサＰ１は、プログラムの記述に従い、再びハードウェアセマフォの取得要求を行うことにより、ＯＳの処理への移行を試みる。
このような動作により、ハードウェアセマフォの取得に対して待機状態とされた単位プロセッサＰ１を必要に応じて動作させることが可能となり、ＣＰＵ１０を効率的に動作させることができる。即ち、排他制御における待機状態の発生に起因して、ＣＰＵ１０の処理能力が低下することを防止できる。
【００４２】
以上のように、本実施の形態に係る携帯電話１においては、ＣＰＵ１０において、単位プロセッサ間でＯＳに移行するための排他制御が行われる際に、各単位プロセッサが同期型のセマフォ取得要求をハードウェアセマフォ部１３に出力する。また、ハードウェアセマフォ部１３は、ハードウェアセマフォの取得に失敗したことを示す信号を出力することにより、セマフォ取得要求に対して待機状態とさせた単位プロセッサを、必要に応じて動作可能な状態とする。
【００４３】
そのため、ハードウェアセマフォの取得要求を行う単位プロセッサから取得要求が出力される回数が増大することを避けることができると共に、ハードウェアセマフォの取得に対して待機状態とされた単位プロセッサを必要に応じて動作させることが可能となる。
したがって、マルチプロセッサであるＣＰＵ１０において、各単位プロセッサ間での排他制御を適切に行うことが可能となる。
【００４４】
なお、本発明は、マルチスレッドプロセッサあるいはマルチタスクプロセッサと呼ばれる各種実装形態のプロセッサに適用可能であるが、例えば、１チップ上に複数のプロセッサコアが実装され、プロセッサの構成要素の少なくとも一部をこれら複数のプロセッサコアが共用する形態のマルチプロセッサ（いわゆる密結合型のマルチタスクプロセッサ）において、特に有効となる。
【００４５】
図４は、本発明の適用対象となるマルチプロセッサの構成例を示す図である。
図４に示すマルチプロセッサは、メモリ制御部およびＡＬＵを複数のプロセッサコアが共用する形態であり、それぞれのプロセッサコアにプログラムカウンタおよびステータスレジスタ等の制御用レジスタが備えられていると共に、マルチプロセッサ全体を制御するためのプログラム制御部および制御用レジスタも別途備えられている。なお、図４に示すように、各プロセッサコアで共用するコンテキストキャッシュ等を備えても良い。
【００４６】
このような構成のマルチプロセッサの場合、各プロセッサコアが本実施の形態における単位プロセッサの機能を実現するものとなり、マルチプロセッサ全体を制御するプログラム制御部において、ハードウェアセマフォ１３の機能を実現するものとなる。
また、本実施の形態においては、メモリ３０のシステム領域に対するアクセスが競合する可能性があることに鑑み、複数の単位プロセッサがＯＳへ移行することを排他制御する例について説明したが、同一のハードウェアにアクセスする可能性がある場合、例えば、ＣＰＵとＤＭＡ（Direct Memory Access）コントローラとの間における排他制御や、アプリケーション間における排他制御（共有メモリへのアクセスあるいは共通処理の実行）等に適用することも可能である。
【図面の簡単な説明】
【００４７】
【図１】本発明に係る携帯電話１の機能構成を示すブロック図である。
【図２】ＣＰＵ１０の内部構成を示すブロック図である。
【図３】携帯電話１のＣＰＵ１０における動作シーケンスを示す図である。
【図４】本発明の適用対象となるマルチプロセッサの構成例を示す図である。
【符号の説明】
【００４８】
１  携帯電話、１０  ＣＰＵ、１１  割り込み制御部、１２  メモリ制御部、１３  ハードウェアセマフォ部、２０  フラッシュＲＯＭ、３０  メモリ、４０  バッファ、５０  無線部、６０  ＩｒＤＡ部、７０  オーディオ、８０  タイマ、９０  ＵＳＢインターフェース部、１００  キー操作部、１１０  ＬＣＤ、１２０  カメラ部、Ｐ０〜Ｐ３  単位プロセッサ、１０１  フェッチ部、１０２  デコード部、１０３  ＡＬＵ、１０４  レジスタ、１０５  プログラム制御部
【図１】
2006209480.tif 000003
【図２】
2006209480.tif 000004
【図３】
2006209480.tif 000005
【図４】
2006209480.tif 000006