JP4797422B2 - プロセッサおよびディスパッチ制御方法 - Google Patents
プロセッサおよびディスパッチ制御方法 Download PDFInfo
- 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
Links
Images
Landscapes
- Multi Processors (AREA)
Description
従来の携帯機器では、シングルプロセッサによる処理が行われていたところ、携帯機器の高機能化に伴い処理が複雑化し、シングルプロセッサによる処理が困難となっている。
一方、マルチプロセッサを利用することにより、装置を低クロック化することが可能となり、それにより低消費電力化を実現することができる。さらに、複数のタスク等を並列に処理できることから、リアルタイムな応答性の観点からも有効なものとなる。
このような従来技術をそのままマルチプロセッサに適用すると、複数のプロセッサを備えるにも関わらず、一のタスクを実行するプロセッサが割込み禁止、あるいはディスパッチ禁止になったとき、他のプロセッサにおいてタスクが処理できずにマルチプロセッサの特性を生かした高い処理効率を得ることができなくなる。
また、一の単位プロセッサのみにおけるディスパッチを禁止し、この間に他の単位プロセッサにおけるディスパッチ禁止を待機させることができる。このため、一の単位プロセッサがディスパッチを禁止している間、他の単位プロセッサは他のタスクを実行することができ、単位プロセッサの停止時間を短縮してマルチタイプのプロセッサを効率的に動作させることができる。このような本発明は、マルチプロセッサにおいて割込み処理とタスク処理、あるいはタスク処理同士を効率的に排他制御して高い処理効率を得ることができるプロセッサを提供することができる。
このような発明によれば、割込み処理のタイミングが重なったためにハードウェアセマフォの取得やメモリに対する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と直接接続されている。
図2は、CPU10の内部構成を示すブロック図である。
図2において、CPU10は、複数の単位プロセッサP0〜P3と、割込み制御部11と、メモリ制御部12と、ハードウェアセマフォ部13とを含んで構成される。
なお、単位プロセッサP0〜P3の内部構成としては同様のものとなるため、代表として、単位プロセッサP0の内部構成について説明する。
フェッチ部101は、後述するプログラム制御部105のプログラムカウンタが示すメモリアドレスから命令コードを読み出し、デコード部102に出力する。
ALU103は、デコード部102によって入力されたデコード結果に応じて、所定の演算を行い、演算結果をレジスタファイル104に書き込んだり、分岐命令等の演算結果であるブランチ先のアドレスをプログラム制御部105に出力したりする。
プログラム制御部105は、単位プロセッサP0が割込み処理に移行する時点で、ステータスレジスタの値を割込み処理の禁止状態に変更する、また、分岐命令が実行された場合にはプログラムカウンタの値を分岐先のアドレスに変更する。
OSは、本実施形態の操作制御部として機能する。すなわち、OSは、ディスパッチ禁止フラグ106に基づいて単位プロセッサP0〜P3がディスパッチ禁止状態にあることを検出する。そして、単位プロセッサP0〜P3間のディスパッチを制御する。
メモリ制御部12は、CPU10とメモリ30との間に備えられ、CPU10からメモリ30に対するデータの読み出しおよび書き込みが行われる場合に、メモリ30を制御してデータの入出力を行う。
図3は、本実施形態のプロセッサの動作を説明するための図である。図中には、単位プロセッサP1、単位プロセッサP2、単位プロセッサP3で行われる処理が示されていて、単位プロセッP1がディスパッチ禁止フラグ106をオンにしてディスパッチを禁止したものとする。単位プロセッサP2は、すでに単位プロセッサP1がディスパッチを禁止した後でディスパッチ禁止を要求し、単位プロセッサP3は、ディスパッチすることなくタスクを一連の処理として実行している。
この間、単位プロセッサP3は、単位プロセッサP1、単位プロセッサP2でなされるタスク処理と並列してタスク処理を実行することができる。ディスパッチ禁止の状態は、loc_cpuのようにハードウェアセマフォを取り続けない。このため、一部例外を除き、他のプロセッサで発行されるサービスコールは基本的に許可される。ただし、単位プロセッサP1よりも優先度の高いタスクへサービスコールが要求された場合、単位プロセッサP1で実行中のタスクは追い出されずに、優先度の高いタスクがREADY状態にとどまることがある。
単位プロセッサP2は、ディスパッチ禁止を要求する場合、ハードウェアセマフォ13を取得してOSとなる。そして、各単位プロセッサP0〜P3のディスパッチ禁止フラグ106を参照し、ディスパッチ禁止フラグがオンしている単位プロセッサがあるか否か判断する。図3に示した場合、単位プロセッサP1のディスパッチ禁止フラグ106はすでにオンしている。このため、単位プロセッサP2は、処理を開始すべきタスク(現タスク)のコンテキストをメモリ30等に退避させると共に、TCB内のディスパッチフラグを解除待ち状態にする。
なお、本実施形態では、単位プロセッサP2は、READY状態に遷移するにあたり、ディスパッチ禁止解除待ち状態でなく、かつREADY状態のタスクが存在した場合、ディスパッチを実行してREADY状態のタスクを処理する。このようなタスクが存在しない場合、単位プロセッサP2は、ハードウェアセマフォ13を解放した後にHALT状態になる。
次に、ディスパッチ禁止解除(ena_dsp)の具体的な手順について説明する。例えば単位プロセッサP1が、ディスパッチ禁止解除をする場合、まず、ハードウェアセマフォ13を取得する。そして、自身のディスパッチ禁止フラグ106を初期の状態(オフ)にする。この時点で、単位プロセッサP1におけるディスパッチ禁止が解除される。
一方、READYタスクが存在しない場合、単位プロセッサP1は、ハードウェアセマフォ13を解放する。そして、ディスパッチ禁止解除の処理から復帰する。
以上述べた本実施形態のプロセッサは、さらに、複数の単位プロセッサの少なくとも1つが割込み禁止処理を要求した場合、OSが、単位プロセッサのいずれかにおいて実行中の割込み処理を検出し、要求された割込み禁止処理を、検出された割込み処理の完了後に許可するものとしている。なお、このような割込み処理の制御は、前述したディスパッチ禁止処理とは独立して実行される。
処理を待機する場合、単位プロセッサP1は、他の単位プロセッサにおける外部割込みを許可し、いったん取得したハードウェアセマフォ13を解放する。そして、単位プロセッサP0で実行されている割込みハンドラの終了を待つ。割込みハンドラが終了すると、再びハードウェアセマフォ13を取得して割込み禁止処理を開始する。
また、以上述べた本実施形態は、複数の単位プロセッサにおけるディスパッチ禁止を独立に制御することができる。このため、マルチスレッドプロセッサ等、マルチタイプのプロセッサにあって割込み禁止に伴いディスパッチが禁止されることをなくし、プロセッサに含まれる単位プロセッサP0〜P3の停止時間を短縮してCPU10を効率的に動作させることができる。
なお、タスク間の排他制御は、本来セマフォ制御(wai_sem/sig_sem)で行うことも可能である。しかし、シングルプロセッサ配下では、dis_dspを多用してタスク同士を排他するものも多く、dis_dspの仕様から排他制御を削除することは、シングルプロセッサからマルチプロセッサへの移植作業に多大な影響を及ぼすと考えられる。本実施形態は、dis_dspによってタスク間の排他を制御することにより、本実施形態をシングルプロセッサからマルチプロセッサへ移植しやすいものとすることができる。
図5に示すマルチプロセッサは、メモリ制御部およびALUを複数のプロセッサコアが共用する形態であり、それぞれのプロセッサコアにプログラムカウンタおよびステータスレジスタ等の制御用レジスタが備えられていると共に、マルチプロセッサ全体を制御するためのプログラム制御部および制御用レジスタも別途備えられている。なお、図5に示すように、各プロセッサコアで共用するコンテキストキャッシュ等を備えても良い。
また、本実施の形態においては、メモリ30のシステム領域に対するアクセスが競合する可能性があることに鑑み、複数の単位プロセッサがOSへ移行することを排他制御する例について説明したが、同一のハードウェアにアクセスする可能性がある場合、例えば、CPUとDMA(Direct Memory Access)コントローラとの間における排他制御や、アプリケーション間における排他制御(共有メモリへのアクセスあるいは共通処理の実行)等に適用することも可能である。
Claims (3)
- 複数の単位プロセッサを含み、複数の前記単位プロセッサにおいてタスクあるいはスレッドを切替えながら処理するプロセッサであって、
複数の前記単位プロセッサのうち少なくとも一部が、自プロセッサにおけるタスクあるいはスレッドが切替えられるディスパッチ処理を禁止するディスパッチ禁止手段を備え、
前記単位プロセッサのうちオペレーティングシステムプログラムを実行する単位プロセッサである実行単位プロセッサは、ディスパッチ処理の禁止及び割り込み処理の禁止を要求することが可能になり、
前記実行単位プロセッサは、ディスパッチ禁止を要求する場合、第1のサービスコールをすることによって先にディスパッチが禁止されている他の単位プロセッサの有無を前記ディスパッチ禁止手段によるディスパッチ処理の禁止状態に基づいて判断し、先にディスパッチが禁止されている他の単位プロセッサがない場合には要求されたディスパッチ禁止を実行する一方、先にディスパッチが禁止されている他の前記単位プロセッサがある場合には該単位プロセッサのディスパッチ禁止が解除されるまで要求したディスパッチ禁止を待機させ、
前記実行単位プロセッサは、割込み処理の禁止を要求する場合、第2のサービスコールをすることによって前記単位プロセッサのいずれかにおいて実行中の割込み処理を検出し、要求した割込み処理の禁止を、検出された割込み処理の完了後に実行することを特徴とするプロセッサ。 - 前記実行単位プロセッサは、割込み処理の禁止の要求中に他の前記単位プロセッサから処理が要求された場合、該割込み処理の禁止が完了するまで他の前記単位プロセッサの処理要求を待機させることを特徴とする請求項1に記載のプロセッサ。
- 複数の単位プロセッサを含み、複数の前記単位プロセッサのいずれかがオペレーティングシステムプログラムを実行することによってタスクあるいはスレッドを切替えながら処理するプロセッサのディスパッチを制御するディスパッチ制御方法であって、
複数の前記単位プロセッサのうちのいずれかにおいて、自プロセッサにおけるタスクあるいはスレッドが切替えられるディスパッチ処理を禁止するディスパッチ禁止ステップを含み、
前記単位プロセッサのうちオペレーティングシステムプログラムを実行する単位プロセッサである実行単位プロセッサによりディスパッチ処理の禁止が要求される場合、前記実行単位プロセッサが、第1のサービスコールをすることによって先にディスパッチが禁止されている他の前記単位プロセッサの有無を前記ディスパッチ禁止ステップによるディスパッチ処理の禁止状態に基づいて判断し、先にディスパッチが禁止されている他の前記単位プロセッサがない場合には要求されたディスパッチ禁止を実行する一方、先にディスパッチが禁止されている他の前記単位プロセッサがある場合には該単位プロセッサのディスパッチ禁止が解除されるまで要求されたディスパッチ禁止を待機させるステップと、
前記実行単位プロセッサにより割込み処理の禁止が要求される場合、前記実行単位プロセッサが、第2のサービスコールをすることによって前記単位プロセッサのいずれかにおいて実行中の割込み処理を検出し、要求された割込み処理の禁止を、検出された割込み処理の完了後に実行するステップと、を含むことを特徴とするディスパッチ制御方法。
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)
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)
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 | 組み込み用リアルタイムオペレーティングシステムの再構築方式および記憶媒体 |
-
2005
- 2005-04-01 JP JP2005105748A patent/JP4797422B2/ja not_active Expired - Fee Related
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) | プロセッサ | |
JP5673672B2 (ja) | マルチコアプロセッサシステム、制御プログラム、および制御方法 | |
WO2009157178A1 (ja) | 仮想計算機制御装置、仮想計算機制御プログラム及び仮想計算機制御回路 | |
CN107003896B (zh) | 具有共享事务处理资源的装置和数据处理方法 | |
US9164799B2 (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) | プロセッサおよび情報処理方法 | |
JP4441592B2 (ja) | 並列処理装置及び排他制御方法 | |
JP2013152636A (ja) | 情報処理装置、タスクスケジューリング方法 | |
JP2006146758A (ja) | コンピュータシステム | |
JP4389797B2 (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 |