(57)【要約】【課題】  マルチプロセッサにあってもタスク処理と割込み処理とを適切に排他制御して高い処理効率を得ることが可能なプロセッサを提供する。【解決手段】  複数の単位プロセッサの各々が、自身においてタスクあるいはスレッドが切替えられるディスパッチ処理を禁止するディスパッチ禁止フラグ１０６を備える。また、プロセッサで動作するＯＳが、ディスパッチ禁止フラグ１０６のオン、オフ状態に基づいて単位プロセッサＰ０〜Ｐ３間のディスパッチを制御する。この際、ＯＳは、単位プロセッサのうちのいずれかがディスパッチ禁止を要求した場合、先にディスパッチが禁止されている他の単位プロセッサがない場合には要求されたディスパッチ禁止を許可する。また、先にディスパッチが禁止されている他の単位プロセッサがある場合、この単位プロセッサのディスパッチ禁止が解除されるまで要求されたディスパッチ禁止を待機させる。【選択図】  図２
2006285718.tif 000002
【特許請求の範囲】
【請求項１】
複数の単位プロセッサを含み、複数の前記単位プロセッサにおいてタスクあるいはスレッドを切替えながら処理するプロセッサであって、
複数の前記単位プロセッサのうち少なくとも一部が、自プロセッサにおけるタスクあるいはスレッドが切替えられるディスパッチ処理を禁止するディスパッチ禁止手段と、
前記ディスパッチ禁止手段によるディスパッチ処理の禁止状態に基づいて複数の前記単位プロセッサ間のディスパッチを制御する操作制御部を備え、
前記操作制御部は、
前記単位プロセッサのうちのいずれかがディスパッチ禁止を要求した場合、先にディスパッチが禁止されている他の単位プロセッサがない場合には要求されたディスパッチ禁止を許可する一方、先にディスパッチが禁止されている他の単位プロセッサがある場合には該単位プロセッサのディスパッチ禁止が解除されるまで要求されたディスパッチ禁止を待機させることを特徴とするプロセッサ。
【請求項２】
さらに、複数の前記単位プロセッサの少なくとも１つが割込み禁止処理を要求した場合、前記操作制御部は、単位プロセッサのいずれかにおいて実行中の割込み処理を検出し、要求された割込み禁止処理を、検出された割込み処理の完了後に許可することを特徴とする請求項１に記載のプロセッサ。
【請求項３】
前記操作制御部は、要求された割込み禁止処理中に他のプロセッサから処理を要求された場合、該割込み禁止処理が完了するまで他のプロセッサの処理要求を待機させることを特徴とする請求項２に記載のプロセッサ。
【請求項４】
複数の単位プロセッサを含み、複数の単位プロセッサにおいてタスクあるいはスレッドを切替えながら処理するプロセッサのディスパッチを制御するディスパッチ制御方法であって、
複数の前記単位プロセッサのうち少なくとも一部においてタスクあるいはスレッドが切替えられるディスパッチ処理を禁止するディスパッチ禁止ステップと、
前記ディスパッチ禁止ステップにおいて前記単位プロセッサのうちのいずれかがディスパッチ禁止を要求した場合、先にディスパッチが禁止されている他の単位プロセッサがない場合には要求されたディスパッチ禁止を許可する一方、先にディスパッチが禁止されている他の単位プロセッサがある場合には該単位プロセッサのディスパッチ禁止が解除されるまで要求されたディスパッチ禁止を待機させる操作制御ステップを含むことを特徴とするディスパッチ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサに係り、特に単位プロセッサを複数含んでタスク等を並列に実行可能であり、さらに割込み要求を受け付けて処理するプロセッサおよびこのプロセッサの割込み制御方法に関する。
【背景技術】
【０００２】
近年、組込み機器等において、複数のタスクあるいはスレッドを並列的に処理可能なマルチタスクプロセッサあるいはマルチスレッドプロセッサと呼ばれるプロセッサ（以下、これらを総称して「マルチプロセッサ」と言う。）が利用されつつある。
従来の携帯機器では、シングルプロセッサによる処理が行われていたところ、携帯機器の高機能化に伴い処理が複雑化し、シングルプロセッサによる処理が困難となっている。
【０００３】
即ち、シングルプロセッサによって高機能を実現しようとした場合、高いクロック周波数で動作させる必要があり、それに伴い消費電力も増大する。また、例えば携帯電話において動画の再生中に電話の着信があった場合の処理等、リアルタイムに応答する必要がある場合の対応が困難となる。
一方、マルチプロセッサを利用することにより、装置を低クロック化することが可能となり、それにより低消費電力化を実現することができる。さらに、複数のタスク等を並列に処理できることから、リアルタイムな応答性の観点からも有効なものとなる。
【０００４】
ところで、このような組込み機器のプロセッサでは、組込み機器に接続される周辺装置から比較的頻繁に割込み処理の要求がなされるものがある。割込み要求がなされた場合、プロセッサによって実行されていたタスク処理を中断し、要求された処理を実行する割込み処理がなされる。割込み処理にあっては、割込み処理とタスク処理との切替えを円滑に行うため、タスク処理と割込み処理との間で排他制御を行っている。
【０００５】
従来のタスク処理と割込み処理との間で行われる排他制御の従来技術としては、例えば、特許文献１が挙げられる。特許文献１に記載された発明は、シングルプロセッサにおける排他制御に関するものであり、シングルプロセッサにおいてＯＳを呼び出すシステムコールが発行される処理の間にもシステムコールを発行しない割込み処理を受け付ける。特許文献１の発明は、このような動作により、緊急性の高い割込み処理が待たされることを少なくしている。
【特許文献１】特開平８−２９７５８１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記した従来技術は、シングルプロセッサに関するものであって、タスク処理と割込み処理とを排他制御する場合、タスク処理の側でプロセッサにおける処理の切替えをタスク、割込み処理の別なく禁止している。このため、シングルプロセッサでは、割込み処理とタスク処理間とばかりでなく、タスク処理同士もが排他的に動作することになる。
【０００７】
また、シングルプロセッサでは、一のタスク処理において切替えが起こることを禁止するディスパッチ禁止がなされた場合、このタスク処理のみが実行されて他のタスク処理は当然のことながらディスパッチ禁止が解除されるまで待機することになる。
このような従来技術をそのままマルチプロセッサに適用すると、複数のプロセッサを備えるにも関わらず、一のタスクを実行するプロセッサが割込み禁止、あるいはディスパッチ禁止になったとき、他のプロセッサにおいてタスクが処理できずにマルチプロセッサの特性を生かした高い処理効率を得ることができなくなる。
【０００８】
本発明は、このような点に鑑みてなされたものであって、マルチプロセッサにおいて割込み処理とタスク処理、あるいはタスク処理同士を効率的に排他制御して高い処理効率を得ることができるプロセッサおよびディスパッチ制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
以上の課題を解決するため、本発明のプロセッサは、複数の単位プロセッサを含み、複数の単位プロセッサにおいてタスクあるいはスレッドを切替えながら処理するプロセッサであって、複数の前記単位プロセッサのうち少なくとも一部が、自プロセッサにおけるタスクあるいはスレッドが切替えられるディスパッチ処理を禁止するディスパッチ禁止手段と、前記ディスパッチ禁止手段によるディスパッチ処理の禁止状態に基づいて複数の前記単位プロセッサ間のディスパッチを制御する操作制御部を備え、前記操作制御部は、前記単位プロセッサのうちのいずれかがディスパッチ禁止を要求した場合、先にディスパッチが禁止されている他の単位プロセッサがない場合には要求されたディスパッチ禁止を許可する一方、先にディスパッチが禁止されている他の単位プロセッサがある場合には該単位プロセッサのディスパッチ禁止が解除されるまで要求されたディスパッチ禁止を待機させることを特徴とする。
【００１０】
このような発明によれば、複数の単位プロセッサにおけるディスパッチ禁止を独立に制御することができる。このため、シングルプロセッサのように、割込み禁止に伴ってディスパッチが禁止されることをなくし、マルチプロセッサに含まれる単位プロセッサの停止時間を短縮してマルチタイプのプロセッサを効率的に動作させることができる。
また、一の単位プロセッサのみにおけるディスパッチを禁止し、この間に他の単位プロセッサにおけるディスパッチ禁止を待機させることができる。このため、一の単位プロセッサがディスパッチを禁止している間、他の単位プロセッサは他のタスクを実行することができ、単位プロセッサの停止時間を短縮してマルチタイプのプロセッサを効率的に動作させることができる。このような本発明は、マルチプロセッサにおいて割込み処理とタスク処理、あるいはタスク処理同士を効率的に排他制御して高い処理効率を得ることができるプロセッサを提供することができる。
【００１１】
また、本発明のプロセッサは、さらに、複数の前記単位プロセッサの少なくとも１つが割込み禁止処理を要求した場合、前記操作制御部は、単位プロセッサのいずれかにおいて実行中の割込み処理を検出し、要求された割込み禁止処理を、検出された割込み処理の完了後に許可することを特徴とする。
このような発明によれば、割込み処理のタイミングが重なったためにハードウェアセマフォの取得やメモリに対するＯＳのアクセスが重複するといった不具合を防ぎ、マルチプロセッサを円滑に動作させることができる。
【００１２】
また、本発明のプロセッサは、前記操作制御部が、要求された割込み禁止処理中に他のプロセッサから処理を要求された場合、該割込み禁止処理が完了するまで他のプロセッサの処理要求を待機させることを特徴とする。
このような発明によれば、操作制御部として機能するＯＳ等に要求する以外の処理を割込み禁止の処理中にも実行することができる。このため、マルチプロセッサに含まれる単位プロセッサが停止する時間を短縮し、マルチプロセッサにおいて割込み処理とタスク処理同士を効率的に排他制御することができる。
【００１３】
また、本発明のディスパッチ制御方法は、複数の単位プロセッサを含み、複数の単位プロセッサにおいてタスクあるいはスレッドを切替えながら該タスクあるいはスレッドを実行するプロセッサにおいてディスパッチを制御するディスパッチ制御方法であって、複数の前記単位プロセッサのうち少なくとも一部においてタスクあるいはスレッドが切替えられるディスパッチ処理を禁止するディスパッチ禁止ステップと、前記ディスパッチ禁止ステップにおいて前記単位プロセッサのうちのいずれかがディスパッチ禁止を要求した場合、先にディスパッチが禁止されている他の単位プロセッサがない場合には要求されたディスパッチ禁止を許可する一方、先にディスパッチが禁止されている他の単位プロセッサがある場合には該単位プロセッサのディスパッチ禁止が解除されるまで要求されたディスパッチ禁止を待機させる操作制御ステップを含むことを特徴とする。
【００１４】
このような発明によれば、複数の単位プロセッサにおけるディスパッチ禁止を独立に制御することができる。このため、シングルプロセッサのように、割込み禁止に伴ってディスパッチが禁止されることをなくし、マルチプロセッサに含まれる単位プロセッサの停止時間を短縮してマルチタイプのプロセッサを効率的に動作させることができる。
また、一の単位プロセッサのみにおけるディスパッチを禁止し、この間に他の単位プロセッサにおけるディスパッチ禁止を待機させることができる。このため、一の単位プロセッサがディスパッチを禁止している間、他の単位プロセッサは他のタスクを実行することができ、単位プロセッサの停止時間を短縮してマルチタイプのプロセッサを効率的に動作させることができる。このような本発明は、マルチプロセッサにおいて割込み処理とタスク処理、あるいはタスク処理同士を効率的に排他制御して高い処理効率を得ることができるディスパッチ制御方法を提供することができる。
【発明を実施するための最良の形態】
【００１５】
以下、図を参照して本発明に係るプロセッサの実施の形態を説明する。
本発明に係るプロセッサは、タスクあるいはスレッド等、プログラムをその実行単位で並列的に処理するものであり、本発明に係るプロセッサ内に、タスクを実行するプロセッサ（以下、「単位プロセッサ」と言う。）が複数備えられたハードウェア構成を有している。
【００１６】
本実施形態では、本実施形態のプロセッサを携帯電話に組み込んだ場合を例に挙げて説明する。なお、以下の説明において、スレッド等、プログラムの実行単位を総称して「タスク」と言う。
図１は、本発明に係る携帯電話１の機能構成を示すブロック図である。
図１において、携帯電話１は、ＣＰＵ（Central Processing Unit）１０と、フラッシュＲＯＭ２０と、メモリ３０と、バッファ４０と、無線部５０と、ＩｒＤＡ（Infrared Data Association）部６０と、オーディオ（Audio）部７０と、タイマ（Timer）８０と、ＵＳＢ（Universal Serial Bus）インターフェース部９０と、キー（KEY）操作部１００と、ＬＣＤ（Liquid Crystal Display）１１０と、カメラ（Camera）部１２０とを含んで構成され、ＣＰＵ１０、フラッシュＲＯＭ２０、メモリ３０およびバッファ４０は、バスによって接続されている。また、無線部５０、ＩｒＤＡ部６０、オーディオ部７０、タイマ８０、ＵＳＢインターフェース部９０、キー操作部１００、ＬＣＤ１１０およびカメラ部１２０は、ＣＰＵ１０と直接接続されている。
【００１７】
ＣＰＵ１０は、本発明のプロセッサに相当し、複数のタスクを並列的に処理しながら携帯電話１全体を制御するもので、キー操作部１００から入力される各種の指示信号に応じて、フラッシュＲＯＭ３０に記憶されたオペレーティングシステムプログラム（ＯＳ）や各種アプリケーションプログラムを読み出して実行したり、無線部５０、オーディオ部７０あるいはカメラ部１２０等の周辺チップから入力される割込み信号に応じて、割込みハンドラを実行したりする。
【００１８】
例えば、ＣＰＵ１０は、アプリケーションにより生成されたタスクを並行して処理し、さらに、周辺チップから割込み信号が入力された場合、割込みハンドラを実行することにより、割込みに対応するプログラムを実行する。なお、アプリケーションによる処理は、ＯＳのタスクスケジューラによって管理されるタスクとして実行されるため、ＯＳのサービスコールを呼び出すことができ、一方、割込み処理は、タスクスケジューラによって管理されない処理（非タスク処理）である。
【００１９】
また、ＣＰＵ１０は、各種処理結果をフラッシュＲＯＭ２０あるいはメモリ３０に格納する。
図２は、ＣＰＵ１０の内部構成を示すブロック図である。
図２において、ＣＰＵ１０は、複数の単位プロセッサＰ０〜Ｐ３と、割込み制御部１１と、メモリ制御部１２と、ハードウェアセマフォ部１３とを含んで構成される。
【００２０】
単位プロセッサＰ０〜Ｐ３は、それぞれが並列してタスクを処理可能なプロセッサであり、単位プロセッサＰ０〜Ｐ３のうち、本実施の形態においては、単位プロセッサＰ０が割込み処理を実行する専用のプロセッサとされている。そのため、周辺チップにおいて割込み信号が発生した場合、割込み信号は単位プロセッＰ０に入力される。
なお、単位プロセッサＰ０〜Ｐ３の内部構成としては同様のものとなるため、代表として、単位プロセッサＰ０の内部構成について説明する。
【００２１】
単位プロセッサＰ０は、フェッチ部１０１と、デコード部１０２と、ＡＬＵ（Arithmetic and Logical Unit）１０３と、レジスタファイル１０４と、プログラム制御部１０５とをさらに含んで構成される。
フェッチ部１０１は、後述するプログラム制御部１０５のプログラムカウンタが示すメモリアドレスから命令コードを読み出し、デコード部１０２に出力する。
【００２２】
デコード部１０２は、フェッチ部１０１によって入力された命令コードをデコードし、デコード結果（命令内容およびソースレジスタ、デスティネーションレジスタのアドレス等）をＡＬＵ１０３に出力する。
ＡＬＵ１０３は、デコード部１０２によって入力されたデコード結果に応じて、所定の演算を行い、演算結果をレジスタファイル１０４に書き込んだり、分岐命令等の演算結果であるブランチ先のアドレスをプログラム制御部１０５に出力したりする。
【００２３】
レジスタファイル１０４は、ロード命令によってメモリ３０から読み出されたデータや、ＡＬＵ１０３の演算結果であるデータを記憶するレジスタ群である。
プログラム制御部１０５は、単位プロセッサＰ０が割込み処理に移行する時点で、ステータスレジスタの値を割込み処理の禁止状態に変更する、また、分岐命令が実行された場合にはプログラムカウンタの値を分岐先のアドレスに変更する。
【００２４】
また、プロセッサ制御部１０５は、実行中のタスクによってハードウェアセマフォの取得要求が出力された場合、まず、ハードウェアセマフォの取得結果を受け取り、ステータスレジスタにおけるハードウェアセマフォの取得結果を示す領域（以下、「セマフォ取得結果レジスタ」と言う。）に取得に成功したことを示すフラグを更新する。一方、セマフォ取得に失敗した場合、取得に失敗したことを示す状態にフラグを更新する。
【００２５】
さらに、プロセッサ制御部１０５は、ディスパッチ禁止フラグ１０６を備えている。ディスパッチ禁止フラグ１０６は、各単位プロセッサＰ０〜Ｐ３の各々においてタスクが切替えられるディスパッチ処理がなされることを禁止するためのフラグであって、本実施形態のディスパッチ禁止手段として機能する。
ＯＳは、本実施形態の操作制御部として機能する。すなわち、ＯＳは、ディスパッチ禁止フラグ１０６に基づいて単位プロセッサＰ０〜Ｐ３がディスパッチ禁止状態にあることを検出する。そして、単位プロセッサＰ０〜Ｐ３間のディスパッチを制御する。
【００２６】
割込み制御部１１は、無線部５０等の周辺チップから割込み信号が入力された場合に、割込み信号を調停した上で、所定の割込み信号を単位プロセッサＰ０に出力する。
メモリ制御部１２は、ＣＰＵ１０とメモリ３０との間に備えられ、ＣＰＵ１０からメモリ３０に対するデータの読み出しおよび書き込みが行われる場合に、メモリ３０を制御してデータの入出力を行う。
【００２７】
ハードウェアセマフォ部１３は、排他制御を実現する機構を有し、単位プロセッサP0-P3からセマフォ取得要求があったとき、すでにセマフォが獲得されている状態であれば新たな要求に対して、セマフォの獲得失敗を通知する。一方、それ以前にセマフォが獲得された状態でなければ、セマフォ取得成功の通知を単位プロセッサに返答する機能を有している。
【００２８】
すなわち、本実施形態では、ハードウェアセマフォ部１３を取得した単位プロセッサだけがＯＳを占有してタスク処理、あるいはディスパッチを実行する権利を得る。このため、単位プロセッサＰ０〜Ｐ３のうちのいずれか１つだけがＯＳを使用できるので、ＯＳ同士の競合を防止する排他制御を実現できる。そして、ＯＳによって使用されるメモリ３０の所定の領域が同時にアクセスされたために処理が中断する等の不具合を防ぐことができる。
【００２９】
また、本実施形態では、ディスパッチ禁止フラグ１０６によって一のプロセッサのディスパッチが禁止された場合、この禁止状態をタスク処理まで維持することができる。このため、本実施形態は、ディスパッチ禁止状態の単位プロセッサにおけるタスク処理は、ディスパッチ禁止解除を要求するまで他の単位プロセッサがセマフォを取得することを禁止し、確実に排他制御を実行することができる。
【００３０】
次に、以上述べた動作を説明する。
図３は、本実施形態のプロセッサの動作を説明するための図である。図中には、単位プロセッサＰ１、単位プロセッサＰ２、単位プロセッサＰ３で行われる処理が示されていて、単位プロセッＰ１がディスパッチ禁止フラグ１０６をオンにしてディスパッチを禁止したものとする。単位プロセッサＰ２は、すでに単位プロセッサＰ１がディスパッチを禁止した後でディスパッチ禁止を要求し、単位プロセッサＰ３は、ディスパッチすることなくタスクを一連の処理として実行している。
【００３１】
ＯＳは、単位プロセッサＰ１〜Ｐ３のうちのいずれかがディスパッチ禁止を要求した場合、先にディスパッチが禁止されている他の単位プロセッサがない場合には要求されたディスパッチ禁止を許可する。また、先にディスパッチが禁止されている他の単位プロセッサがある場合には、この単位プロセッサのディスパッチ禁止が解除されるまで要求されたディスパッチ禁止を待機させる。
【００３２】
図３に示した例では、まず、単位プロセッサＰ１がディスパッチ禁止を要求している。ディスパッチ禁止の要求は、単位プロセッサＰ１がＯＳにｄｉｓ＿ｄｓｐをコールすることによってなされる。ｄｉｓ＿ｄｓｐや後述するｌｏｃ＿ｃｐｕは、タスク間あるいは割込み処理とタスク処理との排他を定義するサービスコールであって、μＩＴＲＯＮ（商標）のサービスコールに準拠して定められたものである。
【００３３】
ディスパッチが禁止された単位プロセッサＰ１では、要求したタスクが実行状態からＲＥＡＤＹ状態に遷移することが禁止される。単位プロセッサＰ１のＲＵＮ状態は、他にＨＡＬＴ状態の単位プロセッサがなく、処理の優先度がより高いタスクが発生した場合にも保持される。このため、単位プロセッサＰ１は、一時的には最も高い優先度を持つタスクを処理しているように動作する。
【００３４】
また、図３では、単位プロセッサＰ１がｄｉｓ＿ｄｓｐをコールした後、単位プロセッサＰ２は、タスクを処理するためにｄｉｓ＿ｄｓｐをコールしている。単位プロセッサＰ２のｄｉｓ＿ｄｓｐは、単位プロセッサＰ１のｄｉｓ＿ｄｓｐに対する後発のコールであるので、ｄｉｓ＿ｄｓｐをコールして処理しようとしたタスクがＲＵＮ状態に遷移することを禁止する。ＲＵＮ状態に遷移することは禁止されたタスクを、本明細書では、ディスパッチ解除待ちタスクとも記す。
【００３５】
単位プロセッサＰ１のディスパッチ禁止解除後、ディスパッチ解除待ちタスクは、単位プロセッサＰ２がｄｉｓ＿ｄｓｐをコールして単位プロセッサＰ２をディスパッチ禁止状態に設定する。ディスパッチ禁止状態の設定により、待機していたタスク処理がＲＵＮ状態になる。
この間、単位プロセッサＰ３は、単位プロセッサＰ１、単位プロセッサＰ２でなされるタスク処理と並列してタスク処理を実行することができる。ディスパッチ禁止の状態は、ｌｏｃ＿ｃｐｕのようにハードウェアセマフォを取り続けない。このため、一部例外を除き、他のプロセッサで発行されるサービスコールは基本的に許可される。ただし、単位プロセッサP１よりも優先度の高いタスクへサービスコールが要求された場合、単位プロセッサＰ１で実行中のタスクは追い出されずに、優先度の高いタスクがＲＥＡＤＹ状態にとどまることがある。
【００３６】
次に、以上述べた処理をより具体的に説明する。
単位プロセッサＰ２は、ディスパッチ禁止を要求する場合、ハードウェアセマフォ１３を取得してＯＳとなる。そして、各単位プロセッサＰ０〜Ｐ３のディスパッチ禁止フラグ１０６を参照し、ディスパッチ禁止フラグがオンしている単位プロセッサがあるか否か判断する。図３に示した場合、単位プロセッサＰ１のディスパッチ禁止フラグ１０６はすでにオンしている。このため、単位プロセッサＰ２は、処理を開始すべきタスク（現タスク）のコンテキストをメモリ３０等に退避させると共に、ＴＣＢ内のディスパッチフラグを解除待ち状態にする。
【００３７】
さらに、単位プロセッサＰ２は、ハードウェアセマフォ１３を解除してＲＥＡＤＹ状態に遷移する。なお、ＲＥＡＤＹ状態へ遷移したタスクは、単位プロセッサＰ１で動作しているタスクがｅｎａ＿ｄｓｐをコールしたときにＲＵＮ状態へ復帰する。
なお、本実施形態では、単位プロセッサＰ２は、ＲＥＡＤＹ状態に遷移するにあたり、ディスパッチ禁止解除待ち状態でなく、かつＲＥＡＤＹ状態のタスクが存在した場合、ディスパッチを実行してＲＥＡＤＹ状態のタスクを処理する。このようなタスクが存在しない場合、単位プロセッサＰ２は、ハードウェアセマフォ１３を解放した後にＨＡＬＴ状態になる。
【００３８】
一方、ディスパッチ禁止フラグ１０６がオン状態にある単位プロセッサがない場合、単位プロセッサＰ２は、自身のディスパッチ禁止フラグ１０６をオンする。ディスパッチ禁止フラグ１０６のオンにより、単位プロセッサＰ２では、現在処理されているタスクがディスパッチによって追い出されることが禁止される。
次に、ディスパッチ禁止解除（ｅｎａ＿ｄｓｐ）の具体的な手順について説明する。例えば単位プロセッサＰ１が、ディスパッチ禁止解除をする場合、まず、ハードウェアセマフォ１３を取得する。そして、自身のディスパッチ禁止フラグ１０６を初期の状態（オフ）にする。この時点で、単位プロセッサＰ１におけるディスパッチ禁止が解除される。
【００３９】
単位プロセッサＰ１は、ディスパッチ禁止の解除後、ＲＥＡＤＹキューよってＲＥＡＤＹ状態にあるタスクを検出する。ＲＥＡＤＹ状態のタスク（ＲＥＡＤＹタスク）が検出された場合、検出されたタスクの優先度を判定する。判定の結果、ディスパッチ禁止解除を行ったタスクよりも、タスク優先度の高いＲＥＡＤＹタスクが存在した場合は、ディスパッチ禁止解除を行ったタスクとＲＥＡＤＹタスクとの間でコンテキストの入れ替えが発生する。
【００４０】
またこの時、ディスパッチ禁止要求で待たされているタスク（図3においては単位プロセッサＰ２）が存在し、そのタスクがディスパッチ禁止解除を要求したタスクよりも優先度が高い場合は、ディスパッチ禁止要求で待たされていたタスクがＲＵＮ状態に遷移すると共に、単位プロセッサＰ２がディスパッチ禁止状態に設定される。
一方、ＲＥＡＤＹタスクが存在しない場合、単位プロセッサＰ１は、ハードウェアセマフォ１３を解放する。そして、ディスパッチ禁止解除の処理から復帰する。
【００４１】
なお、以上の処理の間、単位プロセッサＰ３は、単位プロセッサＰ１、単位プロセッサＰ２の処理と並行にタスクを処理することが可能である。ただし、単位プロセッサＰ３で処理中のタスクよりも高い優先度を持つタスクが発生し、かつ、他にタスクを処理可能な単位プロセッサがない場合、単位プロセッサＰ３が実行しているタスクからディスパッチが要求され、ディスパッチが発生する。
【００４２】
ただし、発生したタスクが単位プロセッサＰ１で実行されているタスクよりも優先度が高い場合、単位プロセッサＰ１で実行されているタスクはＲＵＮ状態を維持する。
以上述べた本実施形態のプロセッサは、さらに、複数の単位プロセッサの少なくとも１つが割込み禁止処理を要求した場合、ＯＳが、単位プロセッサのいずれかにおいて実行中の割込み処理を検出し、要求された割込み禁止処理を、検出された割込み処理の完了後に許可するものとしている。なお、このような割込み処理の制御は、前述したディスパッチ禁止処理とは独立して実行される。
【００４３】
図４は、本実施形態の割込み処理の制御を説明するための図である。図示した例では、単位プロセッサＰ０が割込み処理の実行中（割込みハンドラ処理中）にタスクの処理を排他制御する。このため、単位プロセッサＰ０では、タスク側からｌｏｃ＿ｃｐｕがコールされる。ｌｏｃ＿ｃｐｕをコールした場合は、安全に割込みハンドラと排他を行うため、単位プロセッサＰ０は、現在実行中の割込みハンドラ処理が完全に終了したのを確認した後に、割込み禁止を行い、サービスコールからリターンする。割込み禁止の解除は、サービスコールであるｕｎｌ＿ｃｐｕによって行われる。
【００４４】
以下、ｌｏｃ＿ｃｐｕがコールされた場合の各単位プロセッサの動作をより詳細に説明する。ｌｏｃ＿ｃｐｕは、タスク処理と割込みハンドラとを排他する。すなわち、例えば単位プロセッサＰ１においてタスク側がｌｏｃ＿ｃｐｕをコールされると、単位プロセッサＰ１は、他の単位プロセッサで実行中の割込みハンドラが終了するのを待ち、割込みを禁止してロック状態を獲得する。さらに、単位プロセッサＰ１は、より安全にロック状態を確保するため、サービスコールをする他タスクを排他の対象とし、他タスクであってもサービスコールを行わない限り排他しない。
【００４５】
上記動作を実行するため、図４に示した単位プロセッサＰ１は、ハードウェアセマフォ１３を獲得することによってＯＳになる。続いて、他の単位プロセッサに対する外部割込みを禁止する。なお、単位プロセッサＰ１は、単位プロセッサＰ０で割込みハンドラが実行中であった場合、ロック状態へ遷移する処理を割込みハンドラが完了するまで待つ。
処理を待機する場合、単位プロセッサＰ１は、他の単位プロセッサにおける外部割込みを許可し、いったん取得したハードウェアセマフォ１３を解放する。そして、単位プロセッサＰ０で実行されている割込みハンドラの終了を待つ。割込みハンドラが終了すると、再びハードウェアセマフォ１３を取得して割込み禁止処理を開始する。
【００４６】
なお、本実施形態では、単位プロセッサＰ１は、単位プロセッサＰ０における割込みハンドラ終了までの待機中、要求された割込み処理をｌｏｃ＿ｃｐｕのコールより先に実行する。このため、割込み禁止をするにも関わらず、割込みハンドラの高いレスポンスを得ることができる。また、単位プロセッサＰ１は、ｌｏｃ＿ｃｐｕのコールからｕｎｌ＿ｃｐｕがコールされるまで、他の単位プロセッサに対する割込みを禁止し、かつハードウェアセマフォ１３を獲得した状態で動作する。このため、単位プロセッサＰ１においてなされる処理は、他の単位プロセッサでサービスコールを要求する処理とも排他される。
【００４７】
以上述べた本実施形態は、ｄｉｓ＿ｄｓｐがタスク同士を排他するが、ｄｉｓ＿ｄｓｐをコールしないタスク、および割込みハンドラに関しては、影響を及ぼさない。また、ｌｏｃ＿ｃｐｕは、前記したディスパッチ禁止のようにタスク同士を排他するものではない。すなわち、ｌｏｃ＿ｃｐｕでは、ＯＳは、要求された割込み禁止処理中に他のプロセッサから処理を要求された場合、この割込み禁止処理が完了するまで他のプロセッサの処理要求を待機させる。
【００４８】
換言すれば、本実施形態は、割込み禁止の処理中にもサービスコールを行わないタスク処理であれば処理することができる。このため、本実施形態は、ＯＳの呼び出しを伴わずに並行して実行可能な処理については並行して実行させ、単位プロセッサの停止時間をより短縮してマルチプロセッサの処理効率を高めることができる。
また、以上述べた本実施形態は、複数の単位プロセッサにおけるディスパッチ禁止を独立に制御することができる。このため、マルチスレッドプロセッサ等、マルチタイプのプロセッサにあって割込み禁止に伴いディスパッチが禁止されることをなくし、プロセッサに含まれる単位プロセッサＰ０〜Ｐ３の停止時間を短縮してＣＰＵ１０を効率的に動作させることができる。
【００４９】
また、単位プロセッサＰ０〜Ｐ３のうちの１つのみをディスパッチ禁止とし、この間に他の単位プロセッサにおけるディスパッチ禁止を待機させることができる。このため、一の単位プロセッサがディスパッチを禁止している間に他の単位プロセッサが他のタスクを実行することができ、単位プロセッサの停止時間を短縮してマルチタイプのプロセッサを効率的に動作させることができる。
【００５０】
さらに、ディスパッチ禁止をすることにより、１つの単位プロセッサにフェッチされたタスクがディスパッチ禁止解除まで追い出されることをなくすことができる。
なお、タスク間の排他制御は、本来セマフォ制御（ｗａｉ＿ｓｅｍ／ｓｉｇ＿ｓｅｍ）で行うことも可能である。しかし、シングルプロセッサ配下では、ｄｉｓ＿ｄｓｐを多用してタスク同士を排他するものも多く、ｄｉｓ＿ｄｓｐの仕様から排他制御を削除することは、シングルプロセッサからマルチプロセッサへの移植作業に多大な影響を及ぼすと考えられる。本実施形態は、ｄｉｓ＿ｄｓｐによってタスク間の排他を制御することにより、本実施形態をシングルプロセッサからマルチプロセッサへ移植しやすいものとすることができる。
【００５１】
さらに、本実施形態は、割込みに使用される単位プロセッサを固定とした構成について説明している。しかしながら、本発明は、このような構成に限定されるものでなく、単位プロセッサのいずれをも割込み処理に使用可能な構成に適用することも可能である。また、本実施形態では、単位プロセッサのすべてがディスパッチ禁止フラグを備え、ディスパッチ禁止可能に構成されている。しかし、本発明は、このような構成に限定されるものでなく、マルチプロセッサに含まれる複数の単位プロセッサの少なくとも一部がディスパッチを禁止する手段を備えていればよいものとする。
【００５２】
なお、本発明は、マルチスレッドプロセッサあるいはマルチタスクプロセッサと呼ばれる各種実装形態のプロセッサに適用可能であるが、例えば、１チップ上に複数のプロセッサコアが実装され、プロセッサの構成要素の少なくとも一部をこれら複数のプロセッサコアが共用する形態のマルチプロセッサ（いわゆる密結合型のマルチタスクプロセッサ）において、特に有効となる。
【００５３】
図５は、本発明の適用対象となるマルチプロセッサの構成例を示す図である。
図５に示すマルチプロセッサは、メモリ制御部およびＡＬＵを複数のプロセッサコアが共用する形態であり、それぞれのプロセッサコアにプログラムカウンタおよびステータスレジスタ等の制御用レジスタが備えられていると共に、マルチプロセッサ全体を制御するためのプログラム制御部および制御用レジスタも別途備えられている。なお、図５に示すように、各プロセッサコアで共用するコンテキストキャッシュ等を備えても良い。
【００５４】
このような構成のマルチプロセッサの場合、各プロセッサコアが本実施の形態における単位プロセッサの機能を実現するものとなり、マルチプロセッサ全体を制御するプログラム制御部において、ハードウェアセマフォ１３の機能を実現するものとなる。
また、本実施の形態においては、メモリ３０のシステム領域に対するアクセスが競合する可能性があることに鑑み、複数の単位プロセッサがＯＳへ移行することを排他制御する例について説明したが、同一のハードウェアにアクセスする可能性がある場合、例えば、ＣＰＵとＤＭＡ（Direct Memory Access）コントローラとの間における排他制御や、アプリケーション間における排他制御（共有メモリへのアクセスあるいは共通処理の実行）等に適用することも可能である。
【図面の簡単な説明】
【００５５】
【図１】本発明に係る携帯電話の機能構成を示すブロック図である。
【図２】ＣＰＵの内部構成を示すブロック図である。
【図３】携帯電話のＣＰＵにおけるディスパッチ禁止動作を説明するための図である。
【図４】携帯電話１のＣＰＵにおける割込み禁止動作を説明するための図である。
【図５】本発明の適用対象となるマルチプロセッサの構成例を示す図である。
【符号の説明】
【００５６】
１  携帯電話、１０  ＣＰＵ、１１  割込み制御部、１２  メモリ制御部、１３  ハードウェアセマフォ部、２０  フラッシュＲＯＭ、３０  メモリ、４０  バッファ、５０  無線部、６０  ＩｒＤＡ部、７０  オーディオ、８０  タイマ、９０  ＵＳＢインターフェース部、１００  キー操作部、１１０  ＬＣＤ、１２０  カメラ部、Ｐ０〜Ｐ３  単位プロセッサ、１０１  フェッチ部、１０２  デコード部、１０３  ＡＬＵ、１０４  レジスタファイル、１０５  プログラム制御部、１０６  ディスパッチ禁止フラグ
【図１】
2006285718.tif 000003
【図２】
2006285718.tif 000004
【図３】
2006285718.tif 000005
【図４】
2006285718.tif 000006
【図５】
2006285718.tif 000007