JP4797422B2 - プロセッサおよびディスパッチ制御方法 - Google Patents

プロセッサおよびディスパッチ制御方法 Download PDF

Info

Publication number
JP4797422B2
JP4797422B2 JP2005105748A JP2005105748A JP4797422B2 JP 4797422 B2 JP4797422 B2 JP 4797422B2 JP 2005105748 A JP2005105748 A JP 2005105748A JP 2005105748 A JP2005105748 A JP 2005105748A JP 4797422 B2 JP4797422 B2 JP 4797422B2
Authority
JP
Japan
Prior art keywords
processor
unit
dispatch
prohibition
processing
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.)
Expired - Fee Related
Application number
JP2005105748A
Other languages
English (en)
Other versions
JP2006285718A (ja
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.)
Seiko Epson Corp
Original Assignee
Seiko Epson Corp
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 Seiko Epson Corp filed Critical Seiko Epson Corp
Priority to JP2005105748A priority Critical patent/JP4797422B2/ja
Publication of JP2006285718A publication Critical patent/JP2006285718A/ja
Application granted granted Critical
Publication of JP4797422B2 publication Critical patent/JP4797422B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Multi Processors (AREA)

Description

本発明は、プロセッサに係り、特に単位プロセッサを複数含んでタスク等を並列に実行可能であり、さらに割込み要求を受け付けて処理するプロセッサおよびこのプロセッサの割込み制御方法に関する。
近年、組込み機器等において、複数のタスクあるいはスレッドを並列的に処理可能なマルチタスクプロセッサあるいはマルチスレッドプロセッサと呼ばれるプロセッサ(以下、これらを総称して「マルチプロセッサ」と言う。)が利用されつつある。
従来の携帯機器では、シングルプロセッサによる処理が行われていたところ、携帯機器の高機能化に伴い処理が複雑化し、シングルプロセッサによる処理が困難となっている。
即ち、シングルプロセッサによって高機能を実現しようとした場合、高いクロック周波数で動作させる必要があり、それに伴い消費電力も増大する。また、例えば携帯電話において動画の再生中に電話の着信があった場合の処理等、リアルタイムに応答する必要がある場合の対応が困難となる。
一方、マルチプロセッサを利用することにより、装置を低クロック化することが可能となり、それにより低消費電力化を実現することができる。さらに、複数のタスク等を並列に処理できることから、リアルタイムな応答性の観点からも有効なものとなる。
ところで、このような組込み機器のプロセッサでは、組込み機器に接続される周辺装置から比較的頻繁に割込み処理の要求がなされるものがある。割込み要求がなされた場合、プロセッサによって実行されていたタスク処理を中断し、要求された処理を実行する割込み処理がなされる。割込み処理にあっては、割込み処理とタスク処理との切替えを円滑に行うため、タスク処理と割込み処理との間で排他制御を行っている。
従来のタスク処理と割込み処理との間で行われる排他制御の従来技術としては、例えば、特許文献1が挙げられる。特許文献1に記載された発明は、シングルプロセッサにおける排他制御に関するものであり、シングルプロセッサにおいてOSを呼び出すシステムコールが発行される処理の間にもシステムコールを発行しない割込み処理を受け付ける。特許文献1の発明は、このような動作により、緊急性の高い割込み処理が待たされることを少なくしている。
特開平8−297581号公報
しかしながら、上記した従来技術は、シングルプロセッサに関するものであって、タスク処理と割込み処理とを排他制御する場合、タスク処理の側でプロセッサにおける処理の切替えをタスク、割込み処理の別なく禁止している。このため、シングルプロセッサでは、割込み処理とタスク処理間とばかりでなく、タスク処理同士もが排他的に動作することになる。
また、シングルプロセッサでは、一のタスク処理において切替えが起こることを禁止するディスパッチ禁止がなされた場合、このタスク処理のみが実行されて他のタスク処理は当然のことながらディスパッチ禁止が解除されるまで待機することになる。
このような従来技術をそのままマルチプロセッサに適用すると、複数のプロセッサを備えるにも関わらず、一のタスクを実行するプロセッサが割込み禁止、あるいはディスパッチ禁止になったとき、他のプロセッサにおいてタスクが処理できずにマルチプロセッサの特性を生かした高い処理効率を得ることができなくなる。
本発明は、このような点に鑑みてなされたものであって、マルチプロセッサにおいて割込み処理とタスク処理、あるいはタスク処理同士を効率的に排他制御して高い処理効率を得ることができるプロセッサおよびディスパッチ制御方法を提供することを目的とする。
以上の課題を解決するため、本発明のプロセッサは、複数の単位プロセッサを含み、複数の単位プロセッサにおいてタスクあるいはスレッドを切替えながら処理するプロセッサであって、複数の前記単位プロセッサのうち少なくとも一部が、自プロセッサにおけるタスクあるいはスレッドが切替えられるディスパッチ処理を禁止するディスパッチ禁止手段と、前記ディスパッチ禁止手段によるディスパッチ処理の禁止状態に基づいて複数の前記単位プロセッサ間のディスパッチを制御する操作制御部を備え、前記操作制御部は、前記単位プロセッサのうちのいずれかがディスパッチ禁止を要求した場合、先にディスパッチが禁止されている他の単位プロセッサがない場合には要求されたディスパッチ禁止を許可する一方、先にディスパッチが禁止されている他の単位プロセッサがある場合には該単位プロセッサのディスパッチ禁止が解除されるまで要求されたディスパッチ禁止を待機させることを特徴とする。
このような発明によれば、複数の単位プロセッサにおけるディスパッチ禁止を独立に制御することができる。このため、シングルプロセッサのように、割込み禁止に伴ってディスパッチが禁止されることをなくし、マルチプロセッサに含まれる単位プロセッサの停止時間を短縮してマルチタイプのプロセッサを効率的に動作させることができる。
また、一の単位プロセッサのみにおけるディスパッチを禁止し、この間に他の単位プロセッサにおけるディスパッチ禁止を待機させることができる。このため、一の単位プロセッサがディスパッチを禁止している間、他の単位プロセッサは他のタスクを実行することができ、単位プロセッサの停止時間を短縮してマルチタイプのプロセッサを効率的に動作させることができる。このような本発明は、マルチプロセッサにおいて割込み処理とタスク処理、あるいはタスク処理同士を効率的に排他制御して高い処理効率を得ることができるプロセッサを提供することができる。
また、本発明のプロセッサは、さらに、複数の前記単位プロセッサの少なくとも1つが割込み禁止処理を要求した場合、前記操作制御部は、単位プロセッサのいずれかにおいて実行中の割込み処理を検出し、要求された割込み禁止処理を、検出された割込み処理の完了後に許可することを特徴とする。
このような発明によれば、割込み処理のタイミングが重なったためにハードウェアセマフォの取得やメモリに対するOSのアクセスが重複するといった不具合を防ぎ、マルチプロセッサを円滑に動作させることができる。
また、本発明のプロセッサは、前記操作制御部が、要求された割込み禁止処理中に他のプロセッサから処理を要求された場合、該割込み禁止処理が完了するまで他のプロセッサの処理要求を待機させることを特徴とする。
このような発明によれば、操作制御部として機能するOS等に要求する以外の処理を割込み禁止の処理中にも実行することができる。このため、マルチプロセッサに含まれる単位プロセッサが停止する時間を短縮し、マルチプロセッサにおいて割込み処理とタスク処理同士を効率的に排他制御することができる。
また、本発明のディスパッチ制御方法は、複数の単位プロセッサを含み、複数の単位プロセッサにおいてタスクあるいはスレッドを切替えながら該タスクあるいはスレッドを実行するプロセッサにおいてディスパッチを制御するディスパッチ制御方法であって、複数の前記単位プロセッサのうち少なくとも一部においてタスクあるいはスレッドが切替えられるディスパッチ処理を禁止するディスパッチ禁止ステップと、前記ディスパッチ禁止ステップにおいて前記単位プロセッサのうちのいずれかがディスパッチ禁止を要求した場合、先にディスパッチが禁止されている他の単位プロセッサがない場合には要求されたディスパッチ禁止を許可する一方、先にディスパッチが禁止されている他の単位プロセッサがある場合には該単位プロセッサのディスパッチ禁止が解除されるまで要求されたディスパッチ禁止を待機させる操作制御ステップを含むことを特徴とする。
このような発明によれば、複数の単位プロセッサにおけるディスパッチ禁止を独立に制御することができる。このため、シングルプロセッサのように、割込み禁止に伴ってディスパッチが禁止されることをなくし、マルチプロセッサに含まれる単位プロセッサの停止時間を短縮してマルチタイプのプロセッサを効率的に動作させることができる。
また、一の単位プロセッサのみにおけるディスパッチを禁止し、この間に他の単位プロセッサにおけるディスパッチ禁止を待機させることができる。このため、一の単位プロセッサがディスパッチを禁止している間、他の単位プロセッサは他のタスクを実行することができ、単位プロセッサの停止時間を短縮してマルチタイプのプロセッサを効率的に動作させることができる。このような本発明は、マルチプロセッサにおいて割込み処理とタスク処理、あるいはタスク処理同士を効率的に排他制御して高い処理効率を得ることができるディスパッチ制御方法を提供することができる。
以下、図を参照して本発明に係るプロセッサの実施の形態を説明する。
本発明に係るプロセッサは、タスクあるいはスレッド等、プログラムをその実行単位で並列的に処理するものであり、本発明に係るプロセッサ内に、タスクを実行するプロセッサ(以下、「単位プロセッサ」と言う。)が複数備えられたハードウェア構成を有している。
本実施形態では、本実施形態のプロセッサを携帯電話に組み込んだ場合を例に挙げて説明する。なお、以下の説明において、スレッド等、プログラムの実行単位を総称して「タスク」と言う。
図1は、本発明に係る携帯電話1の機能構成を示すブロック図である。
図1において、携帯電話1は、CPU(Central Processing Unit)10と、フラッシュROM20と、メモリ30と、バッファ40と、無線部50と、IrDA(Infrared Data Association)部60と、オーディオ(Audio)部70と、タイマ(Timer)80と、USB(Universal Serial Bus)インターフェース部90と、キー(KEY)操作部100と、LCD(Liquid Crystal Display)110と、カメラ(Camera)部120とを含んで構成され、CPU10、フラッシュROM20、メモリ30およびバッファ40は、バスによって接続されている。また、無線部50、IrDA部60、オーディオ部70、タイマ80、USBインターフェース部90、キー操作部100、LCD110およびカメラ部120は、CPU10と直接接続されている。
CPU10は、本発明のプロセッサに相当し、複数のタスクを並列的に処理しながら携帯電話1全体を制御するもので、キー操作部100から入力される各種の指示信号に応じて、フラッシュROM30に記憶されたオペレーティングシステムプログラム(OS)や各種アプリケーションプログラムを読み出して実行したり、無線部50、オーディオ部70あるいはカメラ部120等の周辺チップから入力される割込み信号に応じて、割込みハンドラを実行したりする。
例えば、CPU10は、アプリケーションにより生成されたタスクを並行して処理し、さらに、周辺チップから割込み信号が入力された場合、割込みハンドラを実行することにより、割込みに対応するプログラムを実行する。なお、アプリケーションによる処理は、OSのタスクスケジューラによって管理されるタスクとして実行されるため、OSのサービスコールを呼び出すことができ、一方、割込み処理は、タスクスケジューラによって管理されない処理(非タスク処理)である。
また、CPU10は、各種処理結果をフラッシュROM20あるいはメモリ30に格納する。
図2は、CPU10の内部構成を示すブロック図である。
図2において、CPU10は、複数の単位プロセッサP0〜P3と、割込み制御部11と、メモリ制御部12と、ハードウェアセマフォ部13とを含んで構成される。
単位プロセッサP0〜P3は、それぞれが並列してタスクを処理可能なプロセッサであり、単位プロセッサP0〜P3のうち、本実施の形態においては、単位プロセッサP0が割込み処理を実行する専用のプロセッサとされている。そのため、周辺チップにおいて割込み信号が発生した場合、割込み信号は単位プロセッP0に入力される。
なお、単位プロセッサP0〜P3の内部構成としては同様のものとなるため、代表として、単位プロセッサP0の内部構成について説明する。
単位プロセッサP0は、フェッチ部101と、デコード部102と、ALU(Arithmetic and Logical Unit)103と、レジスタファイル104と、プログラム制御部105とをさらに含んで構成される。
フェッチ部101は、後述するプログラム制御部105のプログラムカウンタが示すメモリアドレスから命令コードを読み出し、デコード部102に出力する。
デコード部102は、フェッチ部101によって入力された命令コードをデコードし、デコード結果(命令内容およびソースレジスタ、デスティネーションレジスタのアドレス等)をALU103に出力する。
ALU103は、デコード部102によって入力されたデコード結果に応じて、所定の演算を行い、演算結果をレジスタファイル104に書き込んだり、分岐命令等の演算結果であるブランチ先のアドレスをプログラム制御部105に出力したりする。
レジスタファイル104は、ロード命令によってメモリ30から読み出されたデータや、ALU103の演算結果であるデータを記憶するレジスタ群である。
プログラム制御部105は、単位プロセッサP0が割込み処理に移行する時点で、ステータスレジスタの値を割込み処理の禁止状態に変更する、また、分岐命令が実行された場合にはプログラムカウンタの値を分岐先のアドレスに変更する。
また、プロセッサ制御部105は、実行中のタスクによってハードウェアセマフォの取得要求が出力された場合、まず、ハードウェアセマフォの取得結果を受け取り、ステータスレジスタにおけるハードウェアセマフォの取得結果を示す領域(以下、「セマフォ取得結果レジスタ」と言う。)に取得に成功したことを示すフラグを更新する。一方、セマフォ取得に失敗した場合、取得に失敗したことを示す状態にフラグを更新する。
さらに、プロセッサ制御部105は、ディスパッチ禁止フラグ106を備えている。ディスパッチ禁止フラグ106は、各単位プロセッサP0〜P3の各々においてタスクが切替えられるディスパッチ処理がなされることを禁止するためのフラグであって、本実施形態のディスパッチ禁止手段として機能する。
OSは、本実施形態の操作制御部として機能する。すなわち、OSは、ディスパッチ禁止フラグ106に基づいて単位プロセッサP0〜P3がディスパッチ禁止状態にあることを検出する。そして、単位プロセッサP0〜P3間のディスパッチを制御する。
割込み制御部11は、無線部50等の周辺チップから割込み信号が入力された場合に、割込み信号を調停した上で、所定の割込み信号を単位プロセッサP0に出力する。
メモリ制御部12は、CPU10とメモリ30との間に備えられ、CPU10からメモリ30に対するデータの読み出しおよび書き込みが行われる場合に、メモリ30を制御してデータの入出力を行う。
ハードウェアセマフォ部13は、排他制御を実現する機構を有し、単位プロセッサP0-P3からセマフォ取得要求があったとき、すでにセマフォが獲得されている状態であれば新たな要求に対して、セマフォの獲得失敗を通知する。一方、それ以前にセマフォが獲得された状態でなければ、セマフォ取得成功の通知を単位プロセッサに返答する機能を有している。
すなわち、本実施形態では、ハードウェアセマフォ部13を取得した単位プロセッサだけがOSを占有してタスク処理、あるいはディスパッチを実行する権利を得る。このため、単位プロセッサP0〜P3のうちのいずれか1つだけがOSを使用できるので、OS同士の競合を防止する排他制御を実現できる。そして、OSによって使用されるメモリ30の所定の領域が同時にアクセスされたために処理が中断する等の不具合を防ぐことができる。
また、本実施形態では、ディスパッチ禁止フラグ106によって一のプロセッサのディスパッチが禁止された場合、この禁止状態をタスク処理まで維持することができる。このため、本実施形態は、ディスパッチ禁止状態の単位プロセッサにおけるタスク処理は、ディスパッチ禁止解除を要求するまで他の単位プロセッサがセマフォを取得することを禁止し、確実に排他制御を実行することができる。
次に、以上述べた動作を説明する。
図3は、本実施形態のプロセッサの動作を説明するための図である。図中には、単位プロセッサP1、単位プロセッサP2、単位プロセッサP3で行われる処理が示されていて、単位プロセッP1がディスパッチ禁止フラグ106をオンにしてディスパッチを禁止したものとする。単位プロセッサP2は、すでに単位プロセッサP1がディスパッチを禁止した後でディスパッチ禁止を要求し、単位プロセッサP3は、ディスパッチすることなくタスクを一連の処理として実行している。
OSは、単位プロセッサP1〜P3のうちのいずれかがディスパッチ禁止を要求した場合、先にディスパッチが禁止されている他の単位プロセッサがない場合には要求されたディスパッチ禁止を許可する。また、先にディスパッチが禁止されている他の単位プロセッサがある場合には、この単位プロセッサのディスパッチ禁止が解除されるまで要求されたディスパッチ禁止を待機させる。
図3に示した例では、まず、単位プロセッサP1がディスパッチ禁止を要求している。ディスパッチ禁止の要求は、単位プロセッサP1がOSにdis_dspをコールすることによってなされる。dis_dspや後述するloc_cpuは、タスク間あるいは割込み処理とタスク処理との排他を定義するサービスコールであって、μITRON(商標)のサービスコールに準拠して定められたものである。
ディスパッチが禁止された単位プロセッサP1では、要求したタスクが実行状態からREADY状態に遷移することが禁止される。単位プロセッサP1のRUN状態は、他にHALT状態の単位プロセッサがなく、処理の優先度がより高いタスクが発生した場合にも保持される。このため、単位プロセッサP1は、一時的には最も高い優先度を持つタスクを処理しているように動作する。
また、図3では、単位プロセッサP1がdis_dspをコールした後、単位プロセッサP2は、タスクを処理するためにdis_dspをコールしている。単位プロセッサP2のdis_dspは、単位プロセッサP1のdis_dspに対する後発のコールであるので、dis_dspをコールして処理しようとしたタスクがRUN状態に遷移することを禁止する。RUN状態に遷移することは禁止されたタスクを、本明細書では、ディスパッチ解除待ちタスクとも記す。
単位プロセッサP1のディスパッチ禁止解除後、ディスパッチ解除待ちタスクは、単位プロセッサP2がdis_dspをコールして単位プロセッサP2をディスパッチ禁止状態に設定する。ディスパッチ禁止状態の設定により、待機していたタスク処理がRUN状態になる。
この間、単位プロセッサP3は、単位プロセッサP1、単位プロセッサP2でなされるタスク処理と並列してタスク処理を実行することができる。ディスパッチ禁止の状態は、loc_cpuのようにハードウェアセマフォを取り続けない。このため、一部例外を除き、他のプロセッサで発行されるサービスコールは基本的に許可される。ただし、単位プロセッサP1よりも優先度の高いタスクへサービスコールが要求された場合、単位プロセッサP1で実行中のタスクは追い出されずに、優先度の高いタスクがREADY状態にとどまることがある。
次に、以上述べた処理をより具体的に説明する。
単位プロセッサP2は、ディスパッチ禁止を要求する場合、ハードウェアセマフォ13を取得してOSとなる。そして、各単位プロセッサP0〜P3のディスパッチ禁止フラグ106を参照し、ディスパッチ禁止フラグがオンしている単位プロセッサがあるか否か判断する。図3に示した場合、単位プロセッサP1のディスパッチ禁止フラグ106はすでにオンしている。このため、単位プロセッサP2は、処理を開始すべきタスク(現タスク)のコンテキストをメモリ30等に退避させると共に、TCB内のディスパッチフラグを解除待ち状態にする。
さらに、単位プロセッサP2は、ハードウェアセマフォ13を解除してREADY状態に遷移する。なお、READY状態へ遷移したタスクは、単位プロセッサP1で動作しているタスクがena_dspをコールしたときにRUN状態へ復帰する。
なお、本実施形態では、単位プロセッサP2は、READY状態に遷移するにあたり、ディスパッチ禁止解除待ち状態でなく、かつREADY状態のタスクが存在した場合、ディスパッチを実行してREADY状態のタスクを処理する。このようなタスクが存在しない場合、単位プロセッサP2は、ハードウェアセマフォ13を解放した後にHALT状態になる。
一方、ディスパッチ禁止フラグ106がオン状態にある単位プロセッサがない場合、単位プロセッサP2は、自身のディスパッチ禁止フラグ106をオンする。ディスパッチ禁止フラグ106のオンにより、単位プロセッサP2では、現在処理されているタスクがディスパッチによって追い出されることが禁止される。
次に、ディスパッチ禁止解除(ena_dsp)の具体的な手順について説明する。例えば単位プロセッサP1が、ディスパッチ禁止解除をする場合、まず、ハードウェアセマフォ13を取得する。そして、自身のディスパッチ禁止フラグ106を初期の状態(オフ)にする。この時点で、単位プロセッサP1におけるディスパッチ禁止が解除される。
単位プロセッサP1は、ディスパッチ禁止の解除後、READYキューよってREADY状態にあるタスクを検出する。READY状態のタスク(READYタスク)が検出された場合、検出されたタスクの優先度を判定する。判定の結果、ディスパッチ禁止解除を行ったタスクよりも、タスク優先度の高いREADYタスクが存在した場合は、ディスパッチ禁止解除を行ったタスクとREADYタスクとの間でコンテキストの入れ替えが発生する。
またこの時、ディスパッチ禁止要求で待たされているタスク(図3においては単位プロセッサP2)が存在し、そのタスクがディスパッチ禁止解除を要求したタスクよりも優先度が高い場合は、ディスパッチ禁止要求で待たされていたタスクがRUN状態に遷移すると共に、単位プロセッサP2がディスパッチ禁止状態に設定される。
一方、READYタスクが存在しない場合、単位プロセッサP1は、ハードウェアセマフォ13を解放する。そして、ディスパッチ禁止解除の処理から復帰する。
なお、以上の処理の間、単位プロセッサP3は、単位プロセッサP1、単位プロセッサP2の処理と並行にタスクを処理することが可能である。ただし、単位プロセッサP3で処理中のタスクよりも高い優先度を持つタスクが発生し、かつ、他にタスクを処理可能な単位プロセッサがない場合、単位プロセッサP3が実行しているタスクからディスパッチが要求され、ディスパッチが発生する。
ただし、発生したタスクが単位プロセッサP1で実行されているタスクよりも優先度が高い場合、単位プロセッサP1で実行されているタスクはRUN状態を維持する。
以上述べた本実施形態のプロセッサは、さらに、複数の単位プロセッサの少なくとも1つが割込み禁止処理を要求した場合、OSが、単位プロセッサのいずれかにおいて実行中の割込み処理を検出し、要求された割込み禁止処理を、検出された割込み処理の完了後に許可するものとしている。なお、このような割込み処理の制御は、前述したディスパッチ禁止処理とは独立して実行される。
図4は、本実施形態の割込み処理の制御を説明するための図である。図示した例では、単位プロセッサP0が割込み処理の実行中(割込みハンドラ処理中)にタスクの処理を排他制御する。このため、単位プロセッサP0では、タスク側からloc_cpuがコールされる。loc_cpuをコールした場合は、安全に割込みハンドラと排他を行うため、単位プロセッサP0は、現在実行中の割込みハンドラ処理が完全に終了したのを確認した後に、割込み禁止を行い、サービスコールからリターンする。割込み禁止の解除は、サービスコールであるunl_cpuによって行われる。
以下、loc_cpuがコールされた場合の各単位プロセッサの動作をより詳細に説明する。loc_cpuは、タスク処理と割込みハンドラとを排他する。すなわち、例えば単位プロセッサP1においてタスク側がloc_cpuをコールされると、単位プロセッサP1は、他の単位プロセッサで実行中の割込みハンドラが終了するのを待ち、割込みを禁止してロック状態を獲得する。さらに、単位プロセッサP1は、より安全にロック状態を確保するため、サービスコールをする他タスクを排他の対象とし、他タスクであってもサービスコールを行わない限り排他しない。
上記動作を実行するため、図4に示した単位プロセッサP1は、ハードウェアセマフォ13を獲得することによってOSになる。続いて、他の単位プロセッサに対する外部割込みを禁止する。なお、単位プロセッサP1は、単位プロセッサP0で割込みハンドラが実行中であった場合、ロック状態へ遷移する処理を割込みハンドラが完了するまで待つ。
処理を待機する場合、単位プロセッサP1は、他の単位プロセッサにおける外部割込みを許可し、いったん取得したハードウェアセマフォ13を解放する。そして、単位プロセッサP0で実行されている割込みハンドラの終了を待つ。割込みハンドラが終了すると、再びハードウェアセマフォ13を取得して割込み禁止処理を開始する。
なお、本実施形態では、単位プロセッサP1は、単位プロセッサP0における割込みハンドラ終了までの待機中、要求された割込み処理をloc_cpuのコールより先に実行する。このため、割込み禁止をするにも関わらず、割込みハンドラの高いレスポンスを得ることができる。また、単位プロセッサP1は、loc_cpuのコールからunl_cpuがコールされるまで、他の単位プロセッサに対する割込みを禁止し、かつハードウェアセマフォ13を獲得した状態で動作する。このため、単位プロセッサP1においてなされる処理は、他の単位プロセッサでサービスコールを要求する処理とも排他される。
以上述べた本実施形態は、dis_dspがタスク同士を排他するが、dis_dspをコールしないタスク、および割込みハンドラに関しては、影響を及ぼさない。また、loc_cpuは、前記したディスパッチ禁止のようにタスク同士を排他するものではない。すなわち、loc_cpuでは、OSは、要求された割込み禁止処理中に他のプロセッサから処理を要求された場合、この割込み禁止処理が完了するまで他のプロセッサの処理要求を待機させる。
換言すれば、本実施形態は、割込み禁止の処理中にもサービスコールを行わないタスク処理であれば処理することができる。このため、本実施形態は、OSの呼び出しを伴わずに並行して実行可能な処理については並行して実行させ、単位プロセッサの停止時間をより短縮してマルチプロセッサの処理効率を高めることができる。
また、以上述べた本実施形態は、複数の単位プロセッサにおけるディスパッチ禁止を独立に制御することができる。このため、マルチスレッドプロセッサ等、マルチタイプのプロセッサにあって割込み禁止に伴いディスパッチが禁止されることをなくし、プロセッサに含まれる単位プロセッサP0〜P3の停止時間を短縮してCPU10を効率的に動作させることができる。
また、単位プロセッサP0〜P3のうちの1つのみをディスパッチ禁止とし、この間に他の単位プロセッサにおけるディスパッチ禁止を待機させることができる。このため、一の単位プロセッサがディスパッチを禁止している間に他の単位プロセッサが他のタスクを実行することができ、単位プロセッサの停止時間を短縮してマルチタイプのプロセッサを効率的に動作させることができる。
さらに、ディスパッチ禁止をすることにより、1つの単位プロセッサにフェッチされたタスクがディスパッチ禁止解除まで追い出されることをなくすことができる。
なお、タスク間の排他制御は、本来セマフォ制御(wai_sem/sig_sem)で行うことも可能である。しかし、シングルプロセッサ配下では、dis_dspを多用してタスク同士を排他するものも多く、dis_dspの仕様から排他制御を削除することは、シングルプロセッサからマルチプロセッサへの移植作業に多大な影響を及ぼすと考えられる。本実施形態は、dis_dspによってタスク間の排他を制御することにより、本実施形態をシングルプロセッサからマルチプロセッサへ移植しやすいものとすることができる。
さらに、本実施形態は、割込みに使用される単位プロセッサを固定とした構成について説明している。しかしながら、本発明は、このような構成に限定されるものでなく、単位プロセッサのいずれをも割込み処理に使用可能な構成に適用することも可能である。また、本実施形態では、単位プロセッサのすべてがディスパッチ禁止フラグを備え、ディスパッチ禁止可能に構成されている。しかし、本発明は、このような構成に限定されるものでなく、マルチプロセッサに含まれる複数の単位プロセッサの少なくとも一部がディスパッチを禁止する手段を備えていればよいものとする。
なお、本発明は、マルチスレッドプロセッサあるいはマルチタスクプロセッサと呼ばれる各種実装形態のプロセッサに適用可能であるが、例えば、1チップ上に複数のプロセッサコアが実装され、プロセッサの構成要素の少なくとも一部をこれら複数のプロセッサコアが共用する形態のマルチプロセッサ(いわゆる密結合型のマルチタスクプロセッサ)において、特に有効となる。
図5は、本発明の適用対象となるマルチプロセッサの構成例を示す図である。
図5に示すマルチプロセッサは、メモリ制御部およびALUを複数のプロセッサコアが共用する形態であり、それぞれのプロセッサコアにプログラムカウンタおよびステータスレジスタ等の制御用レジスタが備えられていると共に、マルチプロセッサ全体を制御するためのプログラム制御部および制御用レジスタも別途備えられている。なお、図5に示すように、各プロセッサコアで共用するコンテキストキャッシュ等を備えても良い。
このような構成のマルチプロセッサの場合、各プロセッサコアが本実施の形態における単位プロセッサの機能を実現するものとなり、マルチプロセッサ全体を制御するプログラム制御部において、ハードウェアセマフォ13の機能を実現するものとなる。
また、本実施の形態においては、メモリ30のシステム領域に対するアクセスが競合する可能性があることに鑑み、複数の単位プロセッサがOSへ移行することを排他制御する例について説明したが、同一のハードウェアにアクセスする可能性がある場合、例えば、CPUとDMA(Direct Memory Access)コントローラとの間における排他制御や、アプリケーション間における排他制御(共有メモリへのアクセスあるいは共通処理の実行)等に適用することも可能である。
本発明に係る携帯電話の機能構成を示すブロック図である。 CPUの内部構成を示すブロック図である。 携帯電話のCPUにおけるディスパッチ禁止動作を説明するための図である。 携帯電話1のCPUにおける割込み禁止動作を説明するための図である。 本発明の適用対象となるマルチプロセッサの構成例を示す図である。
符号の説明
1 携帯電話、10 CPU、11 割込み制御部、12 メモリ制御部、13 ハードウェアセマフォ部、20 フラッシュROM、30 メモリ、40 バッファ、50 無線部、60 IrDA部、70 オーディオ、80 タイマ、90 USBインターフェース部、100 キー操作部、110 LCD、120 カメラ部、P0〜P3 単位プロセッサ、101 フェッチ部、102 デコード部、103 ALU、104 レジスタファイル、105 プログラム制御部、106 ディスパッチ禁止フラグ

Claims (3)

  1. 複数の単位プロセッサを含み、複数の前記単位プロセッサにおいてタスクあるいはスレッドを切替えながら処理するプロセッサであって、
    複数の前記単位プロセッサのうち少なくとも一部が、自プロセッサにおけるタスクあるいはスレッドが切替えられるディスパッチ処理を禁止するディスパッチ禁止手段を備え、
    前記単位プロセッサのうちオペレーティングシステムプログラムを実行する単位プロセッサである実行単位プロセッサは、ディスパッチ処理の禁止及び割り込み処理の禁止を要求することが可能になり、
    前記実行単位プロセッサは、ディスパッチ禁止を要求する場合、第1のサービスコールをすることによって先にディスパッチが禁止されている他の単位プロセッサの有無を前記ディスパッチ禁止手段によるディスパッチ処理の禁止状態に基づいて判断し、先にディスパッチが禁止されている他の単位プロセッサがない場合には要求されたディスパッチ禁止を実行する一方、先にディスパッチが禁止されている他の前記単位プロセッサがある場合には該単位プロセッサのディスパッチ禁止が解除されるまで要求したディスパッチ禁止を待機させ、
    前記実行単位プロセッサは、割込み処の禁止を要求する場合、第2のサービスコールをすることによって前記単位プロセッサのいずれかにおいて実行中の割込み処理を検出し、要求した割込み処の禁止を、検出された割込み処理の完了後に実行することを特徴とするプロセッサ。
  2. 前記実行単位プロセッサは、割込み処理の禁止の求中に他の前記単位プロセッサから処理が要求された場合、該割込み処理の禁止が完了するまで他の前記単位プロセッサの処理要求を待機させることを特徴とする請求項1に記載のプロセッサ。
  3. 複数の単位プロセッサを含み、複数の前記単位プロセッサのいずれかがオペレーティングシステムプログラムを実行することによってタスクあるいはスレッドを切替えながら処理するプロセッサのディスパッチを制御するディスパッチ制御方法であって、
    複数の前記単位プロセッサのうちのいずれかにおいて、自プロセッサにおけるタスクあるいはスレッドが切替えられるディスパッチ処理を禁止するディスパッチ禁止ステップを含み、
    前記単位プロセッサのうちオペレーティングシステムプログラムを実行する単位プロセッサである実行単位プロセッサによりディスパッチ処理の禁止が要求される場合、前記実行単位プロセッサが、第1のサービスコールをすることによって先にディスパッチが禁止されている他の前記単位プロセッサの有無を前記ディスパッチ禁止ステップによるディスパッチ処理の禁止状態に基づいて判断し、先にディスパッチが禁止されている他の前記単位プロセッサがない場合には要求されたディスパッチ禁止を実行する一方、先にディスパッチが禁止されている他の前記単位プロセッサがある場合には該単位プロセッサのディスパッチ禁止が解除されるまで要求されたディスパッチ禁止を待機させるステップと、
    前記実行単位プロセッサにより割込み処の禁止が要求される場合、前記実行単位プロセッサが、第2のサービスコールをすることによって前記単位プロセッサのいずれかにおいて実行中の割込み処理を検出し、要求された割込み処理の禁止を、検出された割込み処理の完了後に実行するステップと、を含むことを特徴とするディスパッチ制御方法。
JP2005105748A 2005-04-01 2005-04-01 プロセッサおよびディスパッチ制御方法 Expired - Fee Related JP4797422B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005105748A JP4797422B2 (ja) 2005-04-01 2005-04-01 プロセッサおよびディスパッチ制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005105748A JP4797422B2 (ja) 2005-04-01 2005-04-01 プロセッサおよびディスパッチ制御方法

Publications (2)

Publication Number Publication Date
JP2006285718A JP2006285718A (ja) 2006-10-19
JP4797422B2 true JP4797422B2 (ja) 2011-10-19

Family

ID=37407569

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005105748A Expired - Fee Related JP4797422B2 (ja) 2005-04-01 2005-04-01 プロセッサおよびディスパッチ制御方法

Country Status (1)

Country Link
JP (1) JP4797422B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4033215B2 (ja) * 2006-01-31 2008-01-16 セイコーエプソン株式会社 マルチプロセッサシステム及びマルチプロセッサシステムの制御方法をコンピュータに実行させるためのプログラム
JP2008107267A (ja) * 2006-10-27 2008-05-08 Matsushita Electric Ind Co Ltd ガス遮断装置
JP4930078B2 (ja) * 2007-01-31 2012-05-09 富士通株式会社 情報処理方法、情報処理装置、情報処理プログラムおよび該プログラムを記録した記録媒体

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07319716A (ja) * 1994-05-23 1995-12-08 Hitachi Ltd 計算機システムの資源の排他制御方式
JPH09244905A (ja) * 1996-03-13 1997-09-19 Toshiba Corp マルチタスクosのスケジューリング方法
JPH10312296A (ja) * 1997-05-12 1998-11-24 Nec Corp プロセス切替え制御方式
JP2002229805A (ja) * 2001-01-30 2002-08-16 Canon Inc 組み込み用リアルタイムオペレーティングシステムの再構築方式および記憶媒体

Also Published As

Publication number Publication date
JP2006285718A (ja) 2006-10-19

Similar Documents

Publication Publication Date Title
JP4148223B2 (ja) プロセッサおよび情報処理方法
JP3976065B2 (ja) マルチプロセッサシステム及びマルチプロセッサシステムの割込み制御方法をコンピュータに実行させるためのプログラム
CN108920267B (zh) 任务处理装置
EP2423808B1 (en) Arithmetic device
JP2006243865A (ja) プロセッサおよび情報処理方法
JP5243711B2 (ja) プロセッサ
WO2009157178A1 (ja) 仮想計算機制御装置、仮想計算機制御プログラム及び仮想計算機制御回路
WO2011121730A1 (ja) マルチコアプロセッサシステム、制御プログラム、および制御方法
US20130298136A1 (en) Multiprocessor system
US7797515B2 (en) System and method for limiting the number of unit processors for which suspension of processing is prohibited
JP4797422B2 (ja) プロセッサおよびディスパッチ制御方法
JP2006243864A (ja) プロセッサおよび情報処理方法
JP2006260377A (ja) 並列処理装置および情報処理方法
JP4441592B2 (ja) 並列処理装置及び排他制御方法
JP2006146758A (ja) コンピュータシステム
JP2013152636A (ja) 情報処理装置、タスクスケジューリング方法
JP4389797B2 (ja) プロセッサおよび情報処理方法
JP5017784B2 (ja) プロセッサ及びこのプロセッサ適用される割込み処理制御方法
van Gend Real time linux patches: history and usage
JP2006139496A (ja) 演算処理装置
JPH06236288A (ja) コンピュータシステム用消費電力制御装置

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20070404

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080327

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20080327

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100708

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100713

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100913

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110412

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110610

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110705

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110718

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140812

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees