JP2006092042A - 情報処理装置及びコンテキスト切り替え方法 - Google Patents
情報処理装置及びコンテキスト切り替え方法 Download PDFInfo
- Publication number
- JP2006092042A JP2006092042A JP2004274219A JP2004274219A JP2006092042A JP 2006092042 A JP2006092042 A JP 2006092042A JP 2004274219 A JP2004274219 A JP 2004274219A JP 2004274219 A JP2004274219 A JP 2004274219A JP 2006092042 A JP2006092042 A JP 2006092042A
- Authority
- JP
- Japan
- Prior art keywords
- save
- restore
- context
- processor
- register
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 123
- 230000008569 process Effects 0.000 claims description 115
- 230000010365 information processing Effects 0.000 claims description 48
- 238000005192 partition Methods 0.000 claims description 4
- 230000001934 delay Effects 0.000 claims description 2
- 230000007704 transition Effects 0.000 description 17
- 230000006870 function Effects 0.000 description 10
- 230000004044 response Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 108010014173 Factor X Proteins 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000004043 responsiveness Effects 0.000 description 1
- 238000007616 round robin method Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
- G06F9/462—Saving or restoring of program or task context with multiple register sets
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
Abstract
【課題】リアルタイムシステムに適した情報処理装置及びそのコンテキスト切り替え方法を提供する。
【解決手段】プロセッサにおいて所定の処理単位を複数実行させる際に、処理単位毎に対応したコンテキストを切り替えることで複数の処理単位を前記プロセッサにおいて同時並列的に実行させる情報処理装置において、複数の処理単位毎に対応づけられたコンテキストを夫々格納する複数のレジスタバンクと、コンテキストを切り替える際、フォアグラウンド・コンテキストに対応した処理を行うプロセッサと、プロセッサにおいてフォアグラウンド・コンテキストに対応した処理が実行されるのと併行して、バックグラウンド・コンテキストをメモリへとセーブした後に、メモリからつぎに実行させる処理単位のコンテキストをバックグラウンド・レジスタバンクへとリストアするセーブ/リストア・コントローラと、を有する。
【選択図】 図1
【解決手段】プロセッサにおいて所定の処理単位を複数実行させる際に、処理単位毎に対応したコンテキストを切り替えることで複数の処理単位を前記プロセッサにおいて同時並列的に実行させる情報処理装置において、複数の処理単位毎に対応づけられたコンテキストを夫々格納する複数のレジスタバンクと、コンテキストを切り替える際、フォアグラウンド・コンテキストに対応した処理を行うプロセッサと、プロセッサにおいてフォアグラウンド・コンテキストに対応した処理が実行されるのと併行して、バックグラウンド・コンテキストをメモリへとセーブした後に、メモリからつぎに実行させる処理単位のコンテキストをバックグラウンド・レジスタバンクへとリストアするセーブ/リストア・コントローラと、を有する。
【選択図】 図1
Description
本発明は、情報処理装置及びコンテキスト切り替え方法に関する。
近年、様々な機械や機器に組み込まれて特定の機能を実現するための制御を行うコンピュータシステム、所謂組み込みシステム(Embedded System)が注目されており、その適用分野(パソコン周辺機器、AV機器、家電機器等)が急速に拡大している。また、組み込みシステムに用いられるソフトウェア(組み込みソフトウェア)は、処理要求を受け付けた後、特定の時間内に応答して処理を行う、所謂リアルタイム性が要請される。このため、組み込みシステムでは、リアルタイム・オペレーティングシステム(以下、「リアルタイムOS」と称する。)を採用する場合が多い。
リアルタイムOSでは、前述したとおり、特定の時間内での応答を保証しなければならず、マルチスレッド機能やマルチタスク機能が不可欠な技術として採用される。なお、マルチスレッド機能とは、CPUやMPU等のプロセッサにおいて、一つのアプリケーション処理をその処理単位であるスレッド毎に分割するとともに、複数のスレッドの実行権を切り替えて夫々のスレッドを同時並列的に処理するものである。また、マルチタスク機能とは、プロセッサにおいて、スレッドを更に複数の処理単位であるタスク毎に分割するとともに、複数のタスクの実行権を切り替えて夫々のタスクを同時並列的に処理するものである。
ここで、複数の処理単位(スレッド、タスク、プロセス等)が切り替えられる際には、通常、プロセッサにおける処理単位の処理に用いられる『コンテキスト』の切り替えが行われる。なお、コンテキストとは、処理単位毎に対応づけられており、レジスタセット(汎用レジスタ、ステータスレジスタ、プログラムカウンタ等)における現在のフラグ状態や、各処理単位を実行するための情報のことである。また、コンテキストの定義としては、例えば、以下に示す非特許文献1に示されるとおりである。
図9は、従来の組み込みシステムにおけるコンテキスト・スイッチングの動作を説明する図である(以下、「従来例1」と称する。)。同図に示すように、従来の組み込みシステムは、CPU10と、コンテキストを格納するレジスタバンク11と、コンテキストのセーブ/リストア処理を行うCPU10外部のメモリ12と、によって主に構成される。ここで、CPU10は、リアルタイムOSからのコンテキスト・スイッチング要求を受け付けた後(ステップ0)、レジスタバンク11において現在実行中の状態にあるコンテキストAを、ストア命令によってメモリ12へとセーブする(ステップ1)。そして、つぎのコンテキストBを、ロード命令によってメモリ12からリストアして、レジスタバンク11の内容を更新する(ステップ2)。なお、このような従来例1としては、例えば、以下に示す特許文献1に開示されるとおりである。
図10は、従来のその他の組み込みシステムにおけるコンテキスト・スイッチングの動作を説明する図である(以下、「従来例2」と称する。)。同図に示すように、組み込みシステムは、CPU10と、各タスクに対応づけられて占有される複数のレジスタバンク11と、複数のレジスタバンク11夫々に格納されたコンテキストのいずれかを選択するためのセレクタ13と、によって主に構成される。ここで、CPU10が、セレクタ13を介してレジスタバンク11(#0)に格納されたコンテキストAをもとに、タスクAを実行している場合とする(ステップ0)。この場合、CPU10は、リアルタイムOSからコンテキスト・スイッチング要求を受け付けた後、セレクタ13によって、コンテキストBが格納されたレジスタバンク11(#1)を選択する(ステップ1)。この結果、コンテキストAからコンテキストBへのコンテキスト・スイッチングが実行される(ステップ2)。すなわち、従来例2では、外部メモリへのコンテキストのセーブ/リストア処理が行われずに、レジスタバンク11の切り替えのみで、コンテキスト・スイッチングが実施される。なお、このような従来例2としては、例えば、以下に示す特許文献2に開示されるとおりである。
特開平9−212371号公報
特開平07−141208号公報
Michael Barr著「C/C++による組み込みシステムプログラミング」株式会社オーム社出版、2000年4月19日、p.180−181
図11に、図9に示したような従来例1によって、所定のタスクスケジュール(A→B→C→A→・・・)に従うタスクA〜Cの切り替えに伴って、タスクA〜C夫々に対応づけられたコンテキストA〜Cもまた同様に切り替えられる様子を示す。従来例1では、コンテキスト・スイッチングが行われる場合、CPU10が、現在実行権が与えられたコンテキストの状態を、ストア命令によってメモリ12へと保存し(セーブ)、新たに実行権を与えるコンテキストの状態を、ロード命令によってメモリ12から読み出す(リストア)必要がある。
すなわち、従来例1では、CPU10が、メモリ12へのストア命令/ロード命令を何回も繰り返すことで、コンテキストのセーブ/リストア処理を行っていた。この結果、コンテキスト・スイッチングにある程度の時間(オーバーヘッド)を要するために、その分、タスク切り替えならびにその実行の応答性、所謂リアルタイム性が悪化していた。また、CPU10は、セーブ/リストア処理の実行中に、その他のアプリケーションを実行することができず、リアルタイム性を阻害する要因となっていた。
一方、図10に示したような従来例2では、外部メモリへのコンテキストのセーブ/リストア処理を伴わないため、その分、高速なコンテキスト・スイッチングを実現することが可能となる。しかしながら、通常、レジスタバンクとして提供されるハードウェア・リソースには制限があるため、取り扱うべきコンテキストの数が少ない等、比較的小規模の組み込みシステム以外では、現実的な構成とは言い難い。
前述した課題を解決するための主たる本発明は、所定の処理単位を複数実行させる際に、処理単位毎に対応づけられたコンテキストを切り替えることで複数の処理単位を同時並列的に実行させる情報処理装置において、複数の処理単位毎に対応づけられたコンテキストを夫々格納する複数のレジスタバンクと、コンテキストを切り替える際に、前記複数のレジスタバンクのうちいずれか一つに格納されたコンテキストに対し実行権を与え、当該実行権が与えられたコンテキストに対応づけられる処理単位を実行するプロセッサと、実行権が与えられるコンテキストが格納された前記レジスタバンク以外の残りの前記レジスタバンクから、実行権が明け渡された状態にあるコンテキストを読み出して前記プロセッサがアクセス可能なメモリへと書き込むセーブ処理と、前記メモリからつぎに実行権が与えられるコンテキストを読み出して当該残りのレジスタバンクへと書き込むリストア処理と、を実行するセーブ/リストア・コントローラと、を有することとする。
本発明によれば、リアルタイムシステムに適した情報処理装置及びそのコンテキスト切り替え方法を提供することができる。
<情報処理装置の基本的な構成/動作>
===情報処理装置の構成===
図1は、本発明の一実施形態に係る情報処理装置200の構成を示す図である。なお、情報処理装置200は、近年、様々な分野(パソコン周辺機器、AV機器、家電機器等)に適用が拡大されている、リアルタイムOS(ITRON(Industrial The Real-Time Operating system Nucleus)等)を採用した組み込みシステムとし、半導体集積回路として提供されることとする。また、情報処理装置200は、特定用途向けの組み込みシステム以外にも、例えば、汎用的なパーソナルコンピュータ等としてもよい。
===情報処理装置の構成===
図1は、本発明の一実施形態に係る情報処理装置200の構成を示す図である。なお、情報処理装置200は、近年、様々な分野(パソコン周辺機器、AV機器、家電機器等)に適用が拡大されている、リアルタイムOS(ITRON(Industrial The Real-Time Operating system Nucleus)等)を採用した組み込みシステムとし、半導体集積回路として提供されることとする。また、情報処理装置200は、特定用途向けの組み込みシステム以外にも、例えば、汎用的なパーソナルコンピュータ等としてもよい。
さらに、情報処理装置200は、リアルタイムOSによって、マルチスレッド機能/マルチタスク機能を実現している場合とする。すなわち、情報処理装置200は、プロセッサ21において所定の処理単位(スレッド/タスク/プロセス)を複数実行させる際に、処理単位毎に対応づけられた『コンテキスト(レジスタセット(汎用レジスタ、ステータスレジスタ、プログラムカウンタ等)における現在のフラグ状態や、各処理単位を実行するための情報)』を切り替えることで、複数の処理単位をプロセッサ21において同時並列的に実行させる。
情報処理装置200は、プロセッサ21、2つのレジスタバンク20(#0、#1)、第1セレクタ22、第2セレクタ23、記憶素子24、インバータ素子25、セーブ領域アドレスレジスタ26、リストア領域アドレスレジスタ27、セーブ/リストア・コントローラ28、を有する。なお、メモリ29は、同図に示すように、情報処理装置200の外部に設けてもよいし、情報処理装置200に内蔵してもよい。
2つのレジスタバンク20(#0、#1)は、レジスタファイル群を一つのバンクとして管理されたものである。また、2つのレジスタバンク20(#0、#1)は、プロセッサ21において実行権が付与された状態にあるコンテキスト、又は、セーブ処理又はリストア処理の対象となるコンテキストが、夫々排他的に格納されるものである。このように、情報処理装置200は、レジスタバンク20を、単純に2つ設けた構成によって実現する。
なお、2つのレジスタバンク20(#0、#1)は、例えば、図2に示すような構造を呈する。図2に示すように、2つのレジスタバンク20(#0、#1)A、B、C、D、E、H、Lレジスタ及びフラグレジスタFによって構成される第1汎用レジスタセットと、第1汎用レジスタセットの代替となる第2汎用レジスタセットと、割り込みベクタI、メモリリフレッシュR、インデックスレジスタIX、IY、スタックポインタSP、プログラムカウンタSPによって構成される特定用途レジスタセット、によって構成される。すなわち、コンテキスト・スイッチングの際には、第1汎用レジスタセット及び第2汎用レジスタセットのうち、一方がフォアグラウンド・レジスタバンクとして選択され、他方がバックグラウンド・レジスタバンクとして選択される。なお、特定用途レジスタセットの状態は変化しない。
プロセッサ21は、命令フェッチ、命令デコード、命令実行及び当該実行結果の書き戻し、等といった一般的なCPUの基本的プロセスを担当するものである。なお、プロセッサ21は、算術/論理演算を行う演算論理ユニット(Arithmetic Logic Unit)、メモリ29から読み出された命令を解読する命令解読部(Instruction Decoder)、プロセッサ21内で現在実行中にあるコンテキストを格納するレジスタセット、メモリ29に対してストア命令/ロード命令等のアクセス制御を行うメモリアクセスユニット、ハードウェア/ソフトウェア割り込みの制御を行う割り込み制御部、を有する。
すなわち、プロセッサ21は、Z80系マイコン等といった一般的なマイクロコンピュータの構成を呈する。なお、前述したようなプロセッサ21の構成としては、例えば、『神保進一著「最新マイクロプロセサテクノロジ」日経BP社出版、1999年12月6日、p.259、図1』に開示されたとおりである。
さらに、プロセッサ21は、リアルタイムOS環境下で、マルチスレッド機能/マルチタスク機能を実現すべく、つぎのような処理を行う。すなわち、プロセッサ21は、処理単位の切り替えに伴ってコンテキスト・スイッチングを実行する際、2つのレジスタバンク20(#0、#1)のうちいずれか一つに格納されたコンテキストに対して実行権を与えるとともに、当該実行権が与えられたコンテキストに対応づけられる処理単位を実行させることとする。
また、プロセッサ21は、コンテキスト・スイッチングの際、第1セレクタ22及び第2セレクタ23に向けての選択指令や、セーブ領域アドレスレジスタ26に対してセーブ領域アドレスを、リストア領域アドレスレジスタ27に対してリストア領域アドレスを、セーブ/リストア・コントローラ28に対してセーブ/リストア開始信号を、夫々供給することとする。
以下では、プロセッサ21によって実行権を与えられており、プロセッサ21において現在使用中の状態にあるコンテキストのことを「フォアグラウンド・コンテキスト」と称し、当該フォアグランド・コンテキストが格納されたレジスタバンク20のことを「フォアグラウンド・レジスタバンク」と称することとする。また、その実行権が明け渡された状態にあり、将来的にプロセッサ21に使用されるコンテキストのことを「バックグラウンド・コンテキスト」と称し、当該バックグラウンド・コンテキストが格納されたレジスタバンク20のことを「バックグラウンド・レジスタバンク」と称することとする。
第1セレクタ22は、プロセッサ21からの選択指令をもとに生成された第1選択信号に基づいて、2つのレジスタバンク20(#0、#1)のうち、実行権を与えるフォアグラウンド・コンテキストが格納されたフォアグラウンド・レジスタバンクを選択し、当該実行権を与えるフォアグラウンド・コンテキストをプロセッサ21へと供給するものである。
第2セレクタ23は、プロセッサ21からの選択指令をもとに生成された第2選択信号に基づいて、2つのレジスタバンク20(#0、#1)のうち、セーブ/リストア処理の対象となるバックグラウンド・コンテキストが格納されたバックグラウンド・レジスタバンクを選択し、そのバックグラウンド・レジスタバンクとセーブ/リストア・コントローラ28との間におけるバックグラウンド・コンテキストの授受を行うものである。
記憶素子24は、プロセッサ21から第1セレクタ22及び第2セレクタ23に向けて生成される選択命令を、次の選択命令が生成されるまで、状態を保持すべく設けたものである。記憶素子24に保持された選択命令は、第1セレクタ22に用いられる第1選択信号となり、インバータ素子25を介して第1選択信号の論理を反転させた信号が、第2セレクタ23に用いられる第2選択信号となる。なお、記憶素子24としては、例えば、フリップフロップ素子が採用される。
インバータ素子25は、第1セレクタ22及び第2セレクタ23において、夫々のレジスタバンク20(#0、#1)の選択、すなわち、フォアグランド・レジスタバンクとバックグラウンド・レジスタバンクの選択を、排他的に実行させるべく設けたものである。すなわち、インバータ素子25を設けたことによって、第1セレクタ22及び第2セレクタ23において同一のレジスタバンク20が重複して選択される恐れを確実に回避することができる。
セーブ領域アドレスレジスタ26は、プロセッサ21から指定される、セーブ処理の対象となるコンテキストを書き込むためのメモリ29上のセーブ領域アドレスを格納するものである。
リストア領域アドレスレジスタ27は、プロセッサ21から指定される、リストア処理の対象となるコンテキストを読み出すためのメモリ29上のリストア領域アドレスを格納するものである。
このように、セーブ領域アドレスレジスタ26と、リストア領域アドレスレジスタ27と、を夫々別々に設けることによって、プロセッサ21は、メモリ29に対してセーブ領域アドレスとリストア領域アドレスを自由に指定することが可能となる。
セーブ/リストア・コントローラ28は、フォアグラウンド・コンテキストが格納されたフォアグラウンド・レジスタバンク20以外の残りのバックグラウンド・レジスタバンク20から、実行権が明け渡された状態にあるバックグラウンド・コンテキストを読み出してセーブ領域アドレスレジスタ26に格納されたセーブ領域アドレスに基づいてメモリ29へと書き込んだ後(セーブ処理)、メモリ29から、つぎに実行権が与えられるコンテキストをリストア領域アドレスレジスタ27に格納されたリストア領域アドレスに基づいて読み出してバックグラウンド・レジスタバンク20へと書き込むものである(リストア処理)。
なお、セーブ/リストア・コントローラ28は、プロセッサ21からセーブ/リストア開始信号の受信を契機として、第2セレクタ23において選択されたバックグラウンド・レジスタバンクとメモリ29との間で、バックグラウンド・コンテキストのセーブ処理及び/又はリストア処理を実行することとする。
さらに、セーブ/リストア・コントローラ28は、プロセッサ21においてフォアグラウンド・コンテキストに対応づけられた処理単位が実行されるのと併行して、セーブ処理及び/又はリストア処理を実行することとする。例えば、セーブ/リストア・コントローラ28は、プロセッサ21においてコンテキストAのタスクAが実行される期間において、前の期間に実行されたタスクCのコンテキストCをセーブする処理と、次の期間において実行すべきタスクBのコンテキストをリストアする処理と、を実行するのである。
ところで、セーブ/リストア・コントローラ28は、セーブ処理のみを実行するセーブ・コントローラと、リストア処理のみを実行するリストア・コントローラと、に分割された実施形態としてもよい。すなわち、セーブ処理とリストア処理が夫々専属のコントローラで実施されることにより、セーブ処理とリストア処理夫々の自由度が向上することとなる。
メモリ29としては、例えば、プロセッサ21が直接アクセス可能な主記憶装置(SDRAM、DRAM等)を採用する。すなわち、メモリ29は、レジスタバンク20と比較して、書き込み/読み出し速度が低速であり、記憶容量が大きいことが特徴である。なお、メモリ29としては、プロセッサ21と主記憶装置との間に設けたキャッシュメモリを採用してもよい。
なお、メモリ29が提供する記憶領域は、複数の処理単位毎に対応づけられたコンテキスト夫々を記憶する領域毎に区画されることとする。また、プロセッサ21は、メモリ29上に区画された領域のアドレス管理を担当しており、当該アドレスに基づいて、セーブ領域アドレス及びリストア領域アドレスを指定することができる。この結果、セーブ/リストア・コントローラ28によって、メモリ29へのコンテキストのセーブ/リストア処理が無造作に行われなくなる。また、セーブ/リストア・コントローラ28は、メモリ29のアドレス管理を行う必要がなくなり、その分、セーブ/リストア処理に専念することができる。
===情報処理装置の基本的な動作===
図3、図4をもとに、情報処理装置200の基本的な動作を説明する。なお、図3、図4は、一つのプロセッサ21において、タスクA、B、Cがラウンドロビン方式に従って、所定の周期、所定の順番(A→B→C→A→・・・)で実行される場合である。
図3、図4をもとに、情報処理装置200の基本的な動作を説明する。なお、図3、図4は、一つのプロセッサ21において、タスクA、B、Cがラウンドロビン方式に従って、所定の周期、所定の順番(A→B→C→A→・・・)で実行される場合である。
図3をもとに説明する。まず、レジスタバンク20(#0)がフォアグラウンド・レジスタバンク20(#0)、レジスタバンク20(#1)がバックグラウンド・レジスタバンク20(#1)として選定されており、プロセッサ21がレジスタバンク20(#0)に格納されたコンテキストAを用いてタスクAの処理を実行する場合とする(ステップ1)。
つぎに、プロセッサ21は、マルチタスクOSからのコンテキスト・スイッチング指令(コンテキストA→B)に応じて、レジスタバンク20(#1)をフォアグラウンド・レジスタバンク20(#1)として選択して、コンテキストBを格納する。すなわち、プロセッサ21は、レジスタバンク20(#1)に格納されたコンテキストBを用いてタスクBの処理を実行する。また、プロセッサ21は、タスクBの処理の実行と併行して、セーブ領域アドレスレジスタ26にメモリ29上でのコンテキストAのセーブ領域を指定するアドレスAを供給する。この結果、セーブ/リストア・コントローラ28は、バックグラウンド・レジスタバンク20(#0)として切り替わったレジスタバンク20(#0)からコンテキストAを読み出し、セーブ領域アドレスレジスタ26に格納されたアドレスAに基づいて、メモリ29のコンテキストAに係るセーブ領域へと書き込む(ステップ2)。
同様に、プロセッサ21は、マルチタスクOSからのつぎのコンテキスト・スイッチング指令(コンテキストB→C)に応じて、レジスタバンク20(#0)をフォアグラウンド・レジスタバンク20(#0)として選択してコンテキストCを格納する。すなわち、プロセッサ21は、レジスタバンク20(#0)に格納されたコンテキストCを用いてタスクCの処理を実行する。また、プロセッサ21は、タスクCの処理の実行と併行して、セーブ領域アドレスレジスタ26にメモリ29上でのコンテキストBのセーブ領域を指定するアドレスBを供給する。この結果、セーブ/リストア・コントローラ28は、バックグラウンド・レジスタバンク20(#1)として切り替わったレジスタバンク20(#1)からコンテキストBを読み出して、セーブ領域アドレスレジスタ26に格納されたアドレスBに基づいて、メモリ29のコンテキストBに係るセーブ領域へと書き込む(ステップ3)。
さらに、プロセッサ21は、タスクCの処理の実行と併行して、リストア領域アドレスレジスタ27に対して、コンテキストAが書き込まれたメモリ29上のアドレスAを供給する。この結果、セーブ/リストア・コントローラ28は、リストア領域アドレスレジスタ27に格納されたアドレスAに基づいて、メモリ29からコンテキストAを読み出して、レジスタバンク20(#1)の状態をコンテキストAに更新する(ステップ4)。
プロセッサ21は、マルチタスクOSからのつぎのコンテキスト・スイッチング指令(コンテキストC→A)に応じて、プロセッサ21においてタスクAの処理が実行されるのと併行して、セーブ/リストア・コントローラ28によってコンテキストCがメモリ29へセーブされ(ステップ5)、さらに、セーブ/リストア・コントローラ28によってメモリ29からコンテキストBがリストアされる(ステップ6)。
プロセッサ21は、マルチタスクOSからのつぎのコンテキスト・スイッチング指令(コンテキストA→B)に応じて、プロセッサ21においてタスクBの処理が実行されるのと併行して、セーブ/リストア・コントローラ28によって、コンテキストAがメモリ29へセーブされるとともに(ステップ7)、コンテキストCがメモリ29からリストアされる(ステップ8)。
図4をもとに説明する。ここで、図4(a)はタスク切り替えポイント*、図4(b)はプロセッサ21において現在使用中にあるフォアグラウンド・コンテキストの状態(タスク)の推移、図4(c)はレジスタバンク20(#0)の状態(タスク)の推移、図4(d)はレジスタバンク20(#1)の状態(タスク)の推移、図4(e)は第1選択信号の推移、図4(f)はセーブ/リストア処理の対象となるバックグラウンド・コンテキストの状態(タスク)の推移、図4(g)はセーブ/リストア・コントローラ28のメモリ29へのアクセス状況(Write/Read)、を夫々示したものである。
例えば、タスク切り替えポイント*(1)と*(2)との間の期間では(図4(a)参照)、第1選択信号(図4(e)参照)に応じてレジスタバンク20(#0)がフォアグラウンド・レジスタバンク20(#0)として、また、第1選択信号を論理反転させた第2選択信号(不図示)に応じてレジスタバンク20(#1)がバックグラウンド・レジスタバンク20(#1)として夫々選定される。当該期間では、レジスタバンク20(#0)にはタスクCに対応したコンテキストCが格納されており、プロセッサ21は、コンテキストCを用いてタスクCの処理を実行することとなる(図4(c)参照)。
また、当該期間において、セーブ/リストア・コントローラ28は、プロセッサ21において前期間のタスクBに対応したコンテキストBを、レジスタバンク20(#1)からメモリ29へと書き込んだ後、メモリ29からつぎに実行すべきタスクAのコンテキストAを読み出して、レジスタバンク20(#1)の状態を更新する(図4(f)、(g)参照)。
その後、タスク切り替えポイント*(2)では、タスクCからタスクAへの切り替えが行われる。このとき、レジスタバンク20(#1)がフォアグラウンド・レジスタバンク(#1)として、レジスタバンク20(#0)がバックグラウンド・レジスタバンク20(#0)として夫々切り替えられる。
そこで、レジスタバンク20(#1)にはタスクAに対応したコンテキストAが格納されており、プロセッサ21は、コンテキストAを用いてタスクAの処理を実行する(図4(c)参照)。また、プロセッサ21におけるタスクAの処理の実行と併行して、セーブ/リストア・コントローラ28は、プロセッサ21で前期間で処理されたタスクCに対応したコンテキストCを、レジスタバンク20(#0)からメモリ29へと書き込んだ後、メモリ29からつぎに実行すべきタスクBのコンテキストBを読み出して、レジスタバンク20(#0)の状態を更新する(図4(f)、(g)参照)。
===情報処理装置の詳細な動作===
図5をもとに、情報処理装置200のより詳細な動作を説明する。
まず、プロセッサ21は、フォアグラウンド・レジスタバンク20(#0)に格納されたタスクAのコンテキストを使用して、タスクAの処理を実行している場合であり、さらに、バックグラウンド・レジスタバンク20(#1)にはつぎに実行すべきタスクBのコンテキストB1及びスタックポインタSP(B)が格納されている場合とする(ステップ1)。
図5をもとに、情報処理装置200のより詳細な動作を説明する。
まず、プロセッサ21は、フォアグラウンド・レジスタバンク20(#0)に格納されたタスクAのコンテキストを使用して、タスクAの処理を実行している場合であり、さらに、バックグラウンド・レジスタバンク20(#1)にはつぎに実行すべきタスクBのコンテキストB1及びスタックポインタSP(B)が格納されている場合とする(ステップ1)。
つぎに、プロセッサ21内のタイマ(不図示)によって生成されたタイマ割り込み信号によって、プロセッサ21がタイマ割り込みを識別する。この結果、プロセッサ21は、現在実行中にあるタスクAの処理を中断し、タスクAの次に実行を再開すべきプログラムカウンタの値PC(A)とタスクAのコンテキストA0を、メモリ29中のタスクA用のスタック領域へとセーブする(ステップ2)。そして、プロセッサ21では、タイマ割り込みルーチンによって、あらかじめ設定された実行開始アドレス(割り込みベクタ)へと制御が移され、タイマ割り込み信号のクリアと、つぎのタイマ割り込みのためのタイマ再設定/起動が行われる。
プロセッサ21は、前述した状態のもとで、つぎのようなコンテキスト・スイッチングを実行する。すなわち、プロセッサ21は、メモリ29中のシステム領域から、タスクAのコンテキストをセーブ/リストアするための記憶領域のアドレス(セーブ領域アドレスSA)を取得する。そして、プロセッサ21は、取得したセーブ領域アドレスSAを、セーブ領域アドレスレジスタ26へと供給する。この結果、セーブ/リストア・コントローラ28は、セーブ領域アドレスレジスタ26に格納されたセーブ領域アドレスSAを、自身に設けたセーブポインタレジスタ281に設定する。
また、プロセッサ21は、メモリ29中のシステム領域から、タスクCのコンテキストをセーブ/リストアするための記憶領域のアドレス(リストア領域アドレスSC)を取得する。そして、プロセッサ21は、取得したリストア領域アドレスSCを、リストア領域アドレスレジスタ27へと供給する。この結果、セーブ/リストア・コントローラ28は、リストア領域アドレスレジスタ27に格納されたリストア領域アドレスSCを、自身に設けたリストアポインタレジスタ282に設定する。そして、プロセッサ21は、つぎのタスク切り替え並びにコンテキスト・スイッチングのために、メモリ29中のシステム領域に格納されたタスク管理情報を更新する(以上、ステップ3)。
つぎに、プロセッサ21は、第1セレクタ22及び第2セレクタ23に向けて選択指令を、セーブ/リストア・コントローラ28に対してセーブ/リストア開始信号を、夫々供給することとなる。この結果、第1セレクタ22及び第2セレクタ23によって、タスクAのコンテキストA1(A0の残り)が格納されたフォアグラウンド・レジスタバンク20(#0)がバックグラウンド・レジスタバンク20(#0)へと切り替わり、また、タスクBのコンテキストB1が格納されたバックグラウンド・レジスタバンク20(#1)がフォアグラウンド・レジスタバンク20(#1)へと切り替わる。
また、このとき、タスクBのスタックポインタSP(B)がリストアされて、プロセッサ21が使用するメモリ29中のスタック領域は、スタックポインタSP(B)で指定されるタスクB用のスタック領域へと切り替えられる(以上、ステップ4)。
つぎに、プロセッサ21は、RTI(Return From Interrupt)命令を実行することで、タイマ割り込みルーチンから解放される。このとき、スタックポインタSP(B)で指定されるタスクB用のスタック領域から、タスクBのコンテキストB0及びプログラムカウンタPC(B)が読み出され、フォアグラウンド・レジスタバンク20(#1)へと格納される(ステップ5)。この結果、プロセッサ21は、タスクBの処理の実行を再開することとなる(ステップ6)。
また、プロセッサ21におけるタスクBの処理の実行と併行して、セーブ/リストア・コントローラ28は、セーブポインタレジスタ281に格納されたセーブ領域アドレスSAに基づいて、バックグラウンド・レジスタバンク20(#0)に格納されたタスクAのコンテキストA1を、メモリ29中のタスクA用のセーブ領域へとセーブする。このとき、スタックポインタSP(A)も同様に、メモリ29中のタスクA用のセーブ領域へとセーブされる(以上、ステップ7)。
さらに、セーブ/リストア・コントローラ28は、プロセッサ21におけるタスクBの処理の実行と併行して、リストアポインタレジスタ282に格納されたリストア領域アドレスSCに基づいて、メモリ29中のタスクC用のリストア領域に格納されたタスクCのコンテキストC2を、バックグラウンド・レジスタバンク20(#0)へとリストアする。このとき、スタックポインタSP(C)も同様に、バックグラウンド・レジスタバンク20(#0)へとリストアされる。(以上、ステップ8)。
以上、本発明に係る情報処理装置200及びそのコンテキスト・スイッチング方法によれば、プロセッサ21とは独立したセーブ/リストア処理専用ハードウェアであるセーブ/リストア・コントローラ28によって、バックグラウンド・レジスタバンク20からメモリ29に対して実行権が明け渡された状態にあるバックグラウンド・コンテキストのセーブ処理や、メモリ29からバックグラウンド・レジスタバンク20に対してつぎに実行権が付与されるコンテキストのリストア処理を実行させる。このため、プロセッサ21においてセーブ/リストア処理に係る負荷が軽減されるとともに、セーブ/リストア処理の高速化が図られることとなる。
さらに、プロセッサ21において実行権が付与されたフォアグラウンド・コンテキストに対応づけられる処理単位が実行されるのと併行して、セーブ/リストア・コントローラ28はセーブ/リストア処理を実行することとする。このため、プロセッサ21は、コンテキスト・スイッチングに要する処理時間に阻害されずに、複数の処理単位の実行権を切り替えて同時並列的に実行することが可能となる。
このように、本発明に係る情報処理装置200によれば、複数の処理単位のトータルな処理時間の短縮化を図れるとともに、リアルタイム性に優れた高性能なリアルタイムシステムを構築することが可能となる。
<情報処理装置のその他の構成/動作>
===アドレスレジスタの統合===
前述した実施形態において、コンテキスト夫々を記憶するメモリ29中の区画領域が、例えば64番地単位で順番に配置される等、所定の規則性に従って区画される(アドレス管理される)場合とする。この場合、セーブ領域アドレスレジスタ26とリストア領域アドレスレジスタ27は別々に設ける必要がなく、一つのアドレスレジスタとして統合することができる。
===アドレスレジスタの統合===
前述した実施形態において、コンテキスト夫々を記憶するメモリ29中の区画領域が、例えば64番地単位で順番に配置される等、所定の規則性に従って区画される(アドレス管理される)場合とする。この場合、セーブ領域アドレスレジスタ26とリストア領域アドレスレジスタ27は別々に設ける必要がなく、一つのアドレスレジスタとして統合することができる。
すなわち、プロセッサ21は、当該一つのアドレスレジスタに対して、セーブ領域アドレス若しくはリストア領域アドレスのいずれか一方を供給することとする。さらに、セーブ/リストア・コントローラ28は、メモリ29中の区画領域の所定の規則性に基づいて、当該一つのアドレスレジスタに格納されたセーブ領域アドレス若しくはリストア領域アドレスのいずれか一方から他方のアドレスを算定することができる。
例えば、前述したように、メモリ29中の区画領域が64番地毎に区画される場合、セーブ/リストア・コントローラ28は、“指定されたセーブ領域アドレス+64番地”を計算することで、リストア領域アドレスを求めることができる。なお、最終のリストア領域アドレスから再び先頭のリストア領域アドレスを算定する際には、“指定されたセーブ領域アドレス+64番地”の加算結果において、桁あふれが生じた上位ビットをマスクすればよい。
このように、セーブ領域アドレスレジスタ26とリストア領域アドレスレジスタ27を一つのアドレスレジスタとして統合することによって、回路規模を小さくすることができる。さらに、プロセッサ21は、セーブ領域アドレス若しくはリストア領域アドレスのいずれか一方を、所定の順番に指定すればいいため、その分、負荷が軽減される。
===セーブ/リストア処理のモード選択===
前述した実施形態において、プロセッサ21は、セーブ処理及びリストア処理を連続して実行する第1モード、セーブ処理のみを実行する第2モード、リストア処理のみを実行する第3モード、のうちいずれかを指定するモード選択信号を、セーブ/リストア・コントローラ28へと供給することとする。また、セーブ/リストア・コントローラ28は、プロセッサ21から供給されるモード選択信号に基づいて、第1乃至第3モードのうちいずれかを選択することとする。
前述した実施形態において、プロセッサ21は、セーブ処理及びリストア処理を連続して実行する第1モード、セーブ処理のみを実行する第2モード、リストア処理のみを実行する第3モード、のうちいずれかを指定するモード選択信号を、セーブ/リストア・コントローラ28へと供給することとする。また、セーブ/リストア・コントローラ28は、プロセッサ21から供給されるモード選択信号に基づいて、第1乃至第3モードのうちいずれかを選択することとする。
すなわち、図3のステップ1、2、3に示されるように、複数の処理単位を同時並列的に実行させる初期/終了の段階では、セーブ処理のみや、リストア処理のみで済む場合がある。よって、プロセッサ21は、上記3つのモードのうちいずれかを指定可能とすることで、セーブ/リストア・コントローラ28に対して無駄な処理を実行させずに済む。
===アイドル期間中のセーブ/リストア処理===
前述した実施形態において、プロセッサ21は、自身によるメモリ29へのアクセス状況を示すステータス信号をセーブ/リストア・コントローラ28へ供給することとする。また、セーブ/リストア・コントローラ28は、プロセッサ21から供給されるステータス信号に基づいて、プロセッサ21がメモリ29へのアクセスを休止するアイドル期間を識別するとともに、当該アイドル期間においてのみセーブ処理及び前記リストア処理を実行可能とする。
前述した実施形態において、プロセッサ21は、自身によるメモリ29へのアクセス状況を示すステータス信号をセーブ/リストア・コントローラ28へ供給することとする。また、セーブ/リストア・コントローラ28は、プロセッサ21から供給されるステータス信号に基づいて、プロセッサ21がメモリ29へのアクセスを休止するアイドル期間を識別するとともに、当該アイドル期間においてのみセーブ処理及び前記リストア処理を実行可能とする。
図6は、情報処理装置200がステータス信号に基づいてアイドル期間中にセーブ/リストア処理するときの動作を示す図である。ここで、図6(a)はタスク切り替えポイント*、図6(b)はプロセッサ21において現在使用中にあるフォアグラウンド・コンテキストの状態(タスク)の推移、図6(c)はレジスタバンク20(#0)の状態(タスク)の推移、図6(d)はレジスタバンク20(#1)の状態(タスク)の推移、図6(e)は第1選択信号の推移、図6(f)はステータス信号の推移、図6(g)はセーブ/リストア処理の対象となるバックグラウンド・コンテキストの状態(タスク)の推移、図6(h)はセーブ/リストア・コントローラ28のメモリ29へのアクセス状況(Write/Read)、を夫々示したものである。
例えば、タスク切り替えポイント*(0)の前では(図6(a)参照)、タスクAのコンテキストAが格納されたレジスタバンク20(#1)がフォアグラウンド・レジスタバンク20(#1)、タスクBのコンテキストBが格納されたレジスタバンク20(#0)がバックグラウンド・レジスタバンク20(#0)として夫々選定される。すなわち、プロセッサ21は、レジスタバンク20(#1)に格納されたコンテキストAを用いてタスクAの処理を実行する(図6(b)参照)。
ここで、タスク切り替えポインタ*(0)において、タスクAからタスクBへの切り替えが行われる。このとき、レジスタバンク20(#0)がフォアグラウンド・レジスタバンク(#0)として、レジスタバンク20(#1)がバックグラウンド・レジスタバンク20(#1)として夫々切り替えられる。
このとき、レジスタバンク20(#0)にはタスクBに対応したコンテキストBが格納され、プロセッサ21はコンテキストBを用いてタスクBの処理を実行することとなる(図6(c)参照)。また、プロセッサ21におけるタスクBの処理の実行と併行して、セーブ/リストア・コントローラ28は、レジスタバンク20(#1)からプロセッサ21において前期間で処理されたタスクAに対応したコンテキストAを、メモリ29へと書き込む。さらに、セーブ/リストア・コントローラ28は、メモリ29からつぎに実行すべきタスクCのコンテキストCを読み出して、レジスタバンク20(#1)の状態の更新を行う。
ここで、セーブ/リスト・コントローラ28は、コンテキストAのメモリ29への書き込み処理(セーブ処理)の途中や、メモリ29からコンテキストCの読み出し処理(リストア処理)の途中において、プロセッサ21から供給されるステータス信号に基づいて、プロセッサ21がメモリ29へアクセス中である旨を識別した場合とする(図6(f)参照)。この場合、セーブ/リスト・コントローラ28は、プロセッサ21から供給されるステータス信号に基づいて、アイドル期間が再び識別されるまでの間、コンテキストAのメモリ29への書き込み処理を中断することとする(図6(h)参照)。
このように、セーブ/リストア・コントローラ28は、プロセッサ21がメモリ29へのアクセスを休止するアイドル期間においてセーブ/リストア処理を実行可能とする。この結果、セーブ/リストア・コントローラ28は、プロセッサ21によるメモリ29へのアクセスを阻害せずに、セーブ/リストア処理を実施することが可能となる。
===ビジー信号===
前述した実施形態において、セーブ/リストア・コントローラ28は、セーブ処理又はリストア処理の実行中に、当該実行中であることを示すビジー信号をプロセッサ29へと供給することとする。また、プロセッサ21は、セーブ/リストア・コントローラ28から供給されるビジー信号が解除されるまでの間、セーブ/リストア処理の開始を遅延させることとする。
前述した実施形態において、セーブ/リストア・コントローラ28は、セーブ処理又はリストア処理の実行中に、当該実行中であることを示すビジー信号をプロセッサ29へと供給することとする。また、プロセッサ21は、セーブ/リストア・コントローラ28から供給されるビジー信号が解除されるまでの間、セーブ/リストア処理の開始を遅延させることとする。
例えば、プロセッサ21は、ビジー信号が解除されるまで、セーブ/リストア・コントローラ28へのセーブ/リストア開始信号の供給を休止する。この結果、セーブ/リストア処理の開始を遅延させることができる。あるいは、セーブ/リストア・コントローラ28は、ビジー信号が解除されるまで、プロセッサ29から供給されたセーブ/リストア開始信号に対して何ら応答しないように設計してもよい。この場合であっても、セーブ/リストア処理の開始を遅延させることができる。
すなわち、プロセッサ21におけるフォアグラウンド・コンテキストによる処理単位の実行期間中に、バックグラウンド・コンテキストのセーブ処理及びリストア処理の処理時間が収まりきらない場合が生じうる。このため、プロセッサ21は、セーブ/リストア処理の実行中であることを示すビジー信号が解除されるまでの間、セーブ/リストア処理の開始を遅延させることによって、前述した事象を回避する。
なお、セーブ/リストア・コントローラ28は、プロセッサ21から供給されるステータス信号に基づいて、プロセッサ21がメモリ29へアクセスする期間を意図的に回避して、セーブ/リストア処理を実行することも可能である。すなわち、プロセッサ21によるメモリ29へのアクセスが、セーブ/リストア処理よりも必ず優先される場合である。この場合には、前述したビジー信号が不要となることは言うまでもない。
===タスク総数≦レジスタバンク総数の場合===
前述した実施形態において、プロセッサ21は、同時並列的に実行すべき処理単位の総数が、レジスタバンク20の総数以下となる場合、セーブ処理及びリストア処理を禁止するためのセーブ/リストア禁止信号を、セーブ/リストア・コントローラ28へと供給することとする。また、セーブ/リストア・コントローラ28は、プロセッサ21からセーブ/リストア禁止信号を受信した場合、セーブ処理及びリストア処理の実行を停止することとする。
前述した実施形態において、プロセッサ21は、同時並列的に実行すべき処理単位の総数が、レジスタバンク20の総数以下となる場合、セーブ処理及びリストア処理を禁止するためのセーブ/リストア禁止信号を、セーブ/リストア・コントローラ28へと供給することとする。また、セーブ/リストア・コントローラ28は、プロセッサ21からセーブ/リストア禁止信号を受信した場合、セーブ処理及びリストア処理の実行を停止することとする。
すなわち、同時並列的に実行すべき処理単位の総数が、レジスタバンク20の総数以下となる場合、メモリ29へのコンテキストのセーブ/リストア処理を実行する必要がなくなる。そこで、この場合、セーブ/リストア処理を禁止すれば、プロセッサ21は、レジスタバンク20の切り替え(フォアグラウンド・レジスタバンクとバックグラウンド・レジスタバンクの切り替え)だけで、コンテキスト・スイッチングを高速に行えることとなる。
===3つ以上のレジスタバンク構成===
前述した実施形態において、さらに、割り込み制御用レジスタバンク30を設けることとする。すなわち、情報処理装置200内には3つ以上のレジスタバンク(20、30)が設けられたこととなる。
前述した実施形態において、さらに、割り込み制御用レジスタバンク30を設けることとする。すなわち、情報処理装置200内には3つ以上のレジスタバンク(20、30)が設けられたこととなる。
図7は、本発明の他の実施形態に係る情報処理装置200において、2つの割り込み制御用レジスタバンク30(#0、#1)をさらに設けた場合の構成を示す図である。図8は、2つの割り込み制御用レジスタバンク30(#0、#1)をさらに設けた情報処理装置200の基本的な動作を示す図である。なお、図8において、図8(a)はタスク切り替えポイント*、図8(b)は割り込み要因Xの割り込み受付タイミング*、図8(c)は割り込み要因Yの割り込み受付タイミング*、図8(d)はプロセッサ21において現在使用中にあるフォアグラウンド・コンテキストの状態(タスク)の推移、図8(e)はレジスタバンク20(#0)の状態(タスク)の推移、図8(f)はレジスタバンク20(#1)の状態(タスク)の推移、図8(g)は割り込み制御用レジスタバンク30(#3)の状態(割り込み要因X)の推移、図8(h)は割り込み制御用レジスタバンク30(#4)の状態(割り込み要因Y)の推移、図8(i)は第1選択信号の推移、図8(j)は第2選択信号の推移、図8(k)はセーブ/リストア処理の対象となるバックグラウンド・コンテキストの状態(タスク)の推移、図8(l)はメモリ29へのアクセス状況(Write/Read)、を夫々示したものである。
例えば、タスク切り替えポイント*(2)と*(4)との間の期間では(図8(a)参照)、タスクCのコンテキストCが格納されたレジスタバンク20(#0)がフォアグラウンド・レジスタバンク20(#0)、タスクBのコンテキストBが格納されたレジスタバンク20(#1)がバックグラウンド・レジスタバンク20(#1)として夫々選定される。
すなわち、プロセッサ21は、レジスタバンク20(#0)に格納されたコンテキストCを用いてタスクCの処理を実行する(図8(d)参照)。また、プロセッサ21におけるタスクCの処理の実行と併行して、セーブ/リストア・コントローラ28は、プロセッサ21において前期間で処理されたタスクBに対応したコンテキストBを、レジスタバンク20(#1)からメモリ29へと書き込んだ後、メモリ29からつぎに実行すべきタスクAのコンテキストAを読み出して、レジスタバンク20(#1)の状態を更新する(図8(k)、(l)参照)。
ここで、割り込み受付タイミング*(3)において、プロセッサ21が、タスクCの処理の実行中に、割り込み要因Yによる割り込みを受け付けた場合とする(図8(d)参照)。このとき、レジスタバンク20(#0、#1)の状態に影響を与えることなく、割り込み制御用レジスタバンク30(#4)の状態は、割り込み要因Yに応じたコンテキストYとなる(図8(h)参照)。
すなわち、割り込み要因Yによる割り込みが生じた場合であっても、レジスタバンク20(#0)の状態はタスクCのコンテキストCに継続されたままである。さらに、セーブ/リストア・コントローラ28は、メモリ29へのコンテキストBのセーブ処理や、メモリ29からコンテキストAのリストア処理を継続することとなる。
すなわち、割り込み制御用レジスタバンク30をさらに設けておくことで、プロセッサ21内で割り込み(ハードウェア割り込み、ソフトウェア割り込み(例外、ウォッチドックタイマ等))が生じた場合であっても、セーブ/リストア・コントローラ28によるセーブ/リストア処理を継続して行えるようになる。
以上、本発明の実施形態について説明したが、この実施形態は、本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明は、その趣旨を逸脱することなく、変更/改良され得るとともに、その等価物も含まれるものである。
10 CPU
11 レジスタバンク
12 メモリ
13 セレクタ
200 情報処理装置
20 レジスタバンク
21 プロセッサ
22 第1セレクタ
23 第2セレクタ
24 記憶素子
25 インバータ素子
26 セーブ領域アドレスレジスタ
27 リストア領域アドレスレジスタ
28 セーブ/リストア・コントローラ
281 セーブポインタレジスタ
282 リストアポインタレジスタ
29 メモリ
30 割り込み制御用レジスタバンク
11 レジスタバンク
12 メモリ
13 セレクタ
200 情報処理装置
20 レジスタバンク
21 プロセッサ
22 第1セレクタ
23 第2セレクタ
24 記憶素子
25 インバータ素子
26 セーブ領域アドレスレジスタ
27 リストア領域アドレスレジスタ
28 セーブ/リストア・コントローラ
281 セーブポインタレジスタ
282 リストアポインタレジスタ
29 メモリ
30 割り込み制御用レジスタバンク
Claims (16)
- 所定の処理単位を複数実行させる際に、処理単位毎に対応づけられたコンテキストを切り替えることで複数の処理単位を同時並列的に実行させる情報処理装置において、
複数の処理単位毎に対応づけられたコンテキストを夫々格納する複数のレジスタバンクと、
コンテキストを切り替える際、前記複数のレジスタバンクのうちいずれか一つに格納されたコンテキストに対し実行権を与え、当該実行権が与えられたコンテキストに対応づけられる処理単位を実行するプロセッサと、
実行権が与えられるコンテキストが格納された前記レジスタバンク以外の残りの前記レジスタバンクから実行権が明け渡された状態にあるコンテキストを読み出して前記プロセッサがアクセス可能なメモリへと書き込むセーブ処理と、前記メモリからつぎに実行権が与えられるコンテキストを読み出して当該残りのレジスタバンクへと書き込むリストア処理と、を実行するセーブ/リストア・コントローラと、
を有することを特徴とする情報処理装置。 - 前記セーブ/リストア・コントローラは、前記プロセッサにおいて実行権が与えられたコンテキストに対応した処理単位が実行されるのと併行して、前記セーブ処理及び/又は前記リストア処理を実行すること、を特徴とする請求項1に記載の情報処理装置。
- 前記プロセッサからの選択指令に基づいて前記複数のレジスタバンクのうち実行権を与えるコンテキストが格納されたレジスタバンクを選択し、当該実行権を与えるコンテキストを前記プロセッサへと供給する第1セレクタと、
前記プロセッサからの選択指令に基づいて前記複数のレジスタバンクのうち前記セーブ処理及び/又は前記リストア処理の対象となるコンテキストが格納されたレジスタバンクを選択し、当該選択したレジスタバンクと前記セーブ/リストア・コントローラとの間におけるコンテキストの受け渡しを行う第2セレクタと、
前記プロセッサから指定される、前記セーブ処理の対象となるコンテキストを書き込むための前記メモリのセーブ領域アドレスを格納するセーブ領域アドレスレジスタと、
前記プロセッサから指定される、前記リストア処理の対象となるコンテキストを読み出すための前記メモリのリストア領域アドレスを格納するリストア領域アドレスレジスタと、を有しており、
前記プロセッサは、コンテキストを切り替える際、前記第1及び前記第2セレクタに向けて前記選択指令を、前記セーブ領域アドレスレジスタに対して前記セーブ領域アドレスを、前記リストア領域アドレスレジスタに対して前記リストア領域アドレスを、前記セーブ/リストア・コントローラに対してセーブ/リストア開始信号を、夫々供給し、
前記セーブ/リストア・コントローラは、前記プロセッサから前記セーブ/リストア開始信号を受信した際、前記第2セレクタにおいて前記選択指令に基づいて選択されたレジスタバンクと前記メモリとの間で、前記セーブ領域アドレスレジスタに格納された前記セーブ領域アドレスに基づく前記セーブ処理及び/又は前記リストア領域アドレスレジスタに格納された前記リストア領域アドレスに基づく前記リストア処理を実行すること、
を特徴とする請求項2に記載の情報処理装置。 - 前記プロセッサからの選択指令に基づいて前記複数のレジスタバンクのうち実行権を与えるコンテキストが格納されたレジスタバンクを選択し、当該実行権を与えるコンテキストを前記プロセッサへと供給する第1セレクタと、
前記プロセッサからの選択指令に基づいて前記複数のレジスタバンクのうち前記セーブ処理及び/又は前記リストア処理の対象となるコンテキストが格納されたレジスタバンクを選択し、当該選択したレジスタバンクと前記セーブ/リストア・コントローラとの間におけるコンテキストの受け渡しを行う第2セレクタと、
前記プロセッサから指定される、前記セーブ処理の対象となるコンテキストを書き込むための前記メモリのセーブ領域アドレス、又は、前記リストア処理の対象となるコンテキストを読み出すための前記メモリのリストア領域アドレスのいずれか一方を格納するアドレスレジスタと、を有しており、
前記プロセッサは、コンテキストを切り替える際、前記第1及び前記第2セレクタに向けて前記選択指令を、前記アドレスレジスタに対して前記セーブ領域アドレス又は前記リストア領域アドレスを、前記セーブ/リストア・コントローラに対してセーブ/リストア開始信号を、夫々供給し、
前記セーブ/リストア・コントローラは、前記プロセッサから前記セーブ/リストア開始信号を受信した際、前記第2セレクタにおいて前記選択指令に基づいて選択されたレジスタバンクと前記メモリとの間で、前記アドレスレジスタに格納された前記セーブ領域アドレス又は前記リストア領域アドレスに基づいて、前記セーブ処理及び/又は前記リストア処理を実行すること、
を特徴とする請求項2に記載の情報処理装置。 - 前記メモリが提供する記憶領域は、処理単位毎に対応づけられたコンテキストを記憶する領域毎に区画されており、
前記プロセッサは、前記区画された区画領域のアドレスを管理しており、当該区画領域のアドレスに基づいて、前記セーブ領域アドレス及び/又は前記リストア領域アドレスを指定すること、を特徴とする請求項3又は4に記載の情報処理装置。 - 前記第1及び前記第2セレクタは、夫々の前記レジスタバンクの選択を排他的に実行すること、を特徴とする請求項2に記載の情報処理装置。
- 前記レジスタバンクは、前記プロセッサにおいて実行権が付与されたコンテキスト、又は、前記セーブ処理もしくは前記リストア処理の対象となるコンテキスト、が夫々格納される二つのレジスタバンクによって構成されること、を特徴とする請求項3又は4に記載の情報処理装置。
- 前記プロセッサの割り込み制御に用いられるコンテキストのみを格納する、割り込み制御専用のレジスタバンクをさらに設けたこと、を特徴とする請求項7に記載の情報処理装置。
- 前記プロセッサは、前記セーブ処理及び前記リストア処理を連続して実行する第1モード、前記セーブ処理のみを実行する第2モード、又は、前記リストア処理のみを実行する第3モードのいずれかを指定するモード選択信号を、前記セーブ/リストア・コントローラへと供給し、
前記セーブ/リストア・コントローラは、前記プロセッサから供給される前記モード選択信号に基づいて、前記第1乃至前記第3モードのうちいずれかを選択すること、を特徴とする請求項3又は4に記載の情報処理装置。 - 前記プロセッサは、自身による前記メモリへのアクセス状況を示すステータス信号を前記セーブ/リストア・コントローラへ供給し、
前記セーブ/リストア・コントローラは、前記プロセッサから供給される前記ステータス信号に基づいて、前記プロセッサが前記メモリへのアクセスを休止するアイドル期間を識別するとともに、前記アイドル期間においてのみ前記セーブ処理及び/又は前記リストア処理を実行可能とすること、を特徴とする請求項3又は4に記載の情報処理装置。 - 前記セーブ/リストア・コントローラは、前記セーブ処理又は前記リストア処理の実行中に、当該実行中であることを示すビジー信号を前記プロセッサへと供給し、
前記プロセッサもしくは前記セーブ/リストア・コントローラは、前記ビジー信号が解除されるまで、前記セーブ処理及び/又は前記リストア処理の開始を遅延させること、を特徴とする請求項3又は4に記載の情報処理装置。 - 前記プロセッサは、実行すべき処理単位の数が前記レジスタバンクの数以下の場合、前記セーブ処理及び前記リストア処理を禁止するためのセーブ/リストア禁止信号を前記セーブ/リストア・コントローラへと供給することとし、
前記セーブ/リストア・コントローラは、前記プロセッサから前記セーブ/リストア禁止信号を受信した場合、前記セーブ処理及び前記リストア処理の実行を停止すること、を特徴とする請求項3又は4に記載の情報処理装置。 - 所定の処理単位を複数実行させる際に、処理単位毎に対応づけられたコンテキストを切り替えることで複数の処理単位を同時並列的に実行させる情報処理装置において、
複数の処理単位毎に対応づけられたコンテキストを夫々格納する複数のレジスタバンクと、
コンテキストを切り替える際、前記複数のレジスタバンクのうちいずれか一つに格納されたコンテキストに対し実行権を与え、当該実行権が与えられたコンテキストに対応づけられる処理単位を実行するプロセッサと、
実行権が与えられるコンテキストが格納された前記レジスタバンク以外の残りの前記レジスタバンクから実行権が明け渡された状態にあるコンテキストを読み出して前記プロセッサがアクセス可能なメモリへと書き込むセーブ処理を実行するセーブ・コントローラと、
前記メモリからつぎに実行権が与えられるコンテキストを読み出して当該残りのレジスタバンクへと書き込むリストア処理を実行するリストア・コントローラと、
を有することを特徴とする情報処理装置。 - 前記セーブ・コントローラ及び前記リストア・コントローラは、前記プロセッサにおいて実行権が与えられたコンテキストに対応した処理単位が実行されるのと併行して、前記セーブ処理及び/又は前記リストア処理を実行すること、を特徴とする請求項13に記載の情報処理装置。
- 情報処理装置において、複数の所定の処理単位を同時並列的に実行させるべく、処理単位毎に対応づけられたコンテキストを切り替えるコンテキスト切り替え方法であって、
複数のレジスタバンクに対して複数の処理単位毎に対応づけられたコンテキストを夫々格納し、
コンテキストを切り替える際、前記複数のレジスタバンクのうちいずれか一つに格納されたコンテキストに対し実行権を与え、当該実行権が与えられたコンテキストに対応づけられる処理単位をプロセッサに実行させ、
実行権が与えられるコンテキストが格納された前記レジスタバンク以外の残りの前記レジスタバンクから実行権が明け渡された状態にあるコンテキストを読み出して前記プロセッサがアクセス可能なメモリへと書き込むセーブ処理と、前記メモリからつぎに実行権が与えられるコンテキストを読み出して当該残りのレジスタバンクへと書き込むリストア処理と、を所定のセーブ/リストア・コントローラに実行させる、
ことを特徴とするコンテキスト切り替え方法。 - 実行権が与えられたコンテキストに対応した処理単位が前記プロセッサにおいて実行されるのと併行して、前記セーブ処理及び/又は前記リストア処理を前記セーブ/リストア・コントローラにおいて実行させること、を特徴とする請求項15に記載のコンテキスト切り替え方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004274219A JP2006092042A (ja) | 2004-09-21 | 2004-09-21 | 情報処理装置及びコンテキスト切り替え方法 |
US11/229,850 US7412590B2 (en) | 2004-09-21 | 2005-09-20 | Information processing apparatus and context switching method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004274219A JP2006092042A (ja) | 2004-09-21 | 2004-09-21 | 情報処理装置及びコンテキスト切り替え方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006092042A true JP2006092042A (ja) | 2006-04-06 |
Family
ID=36232978
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004274219A Pending JP2006092042A (ja) | 2004-09-21 | 2004-09-21 | 情報処理装置及びコンテキスト切り替え方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7412590B2 (ja) |
JP (1) | JP2006092042A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008217563A (ja) * | 2007-03-06 | 2008-09-18 | Nec Corp | 非同期コンテキスト切り替えシステム |
JP2013164791A (ja) * | 2012-02-13 | 2013-08-22 | Denso Corp | データ処理装置 |
JP2015534188A (ja) * | 2012-09-28 | 2015-11-26 | インテル・コーポレーション | ユーザレベルのスレッディングのために即時のコンテキスト切り替えを可能とする新規の命令および高度に効率的なマイクロアーキテクチャ |
JP2017037370A (ja) * | 2015-08-06 | 2017-02-16 | 富士通株式会社 | 計算機、プロセス制御方法およびプロセス制御プログラム |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8001549B2 (en) * | 2006-04-27 | 2011-08-16 | Panasonic Corporation | Multithreaded computer system and multithread execution control method |
US8327379B2 (en) * | 2006-08-24 | 2012-12-04 | Kernelon Silicon Inc. | Method for switching a selected task to be executed according with an output from task selecting circuit |
CN102436393B (zh) * | 2006-08-24 | 2015-03-25 | 科尼龙硅公司 | 任务处理装置 |
EP2056198A4 (en) * | 2006-08-24 | 2010-08-18 | Netcleus Systems Corp | TASK PROCESSING DEVICE |
FR2960989B1 (fr) * | 2010-06-08 | 2013-03-15 | Thales Sa | Processeur sur puce electronique comportanr un moniteur temps reel materiel |
US8707013B2 (en) * | 2010-07-13 | 2014-04-22 | Texas Instruments Incorporated | On-demand predicate registers |
US20130061239A1 (en) * | 2011-04-26 | 2013-03-07 | Elad Lahav | System and Method for Operating a Processor |
US9652282B2 (en) * | 2011-11-08 | 2017-05-16 | Nvidia Corporation | Software-assisted instruction level execution preemption |
KR20150128680A (ko) * | 2013-03-12 | 2015-11-18 | 마이크로칩 테크놀로지 인코포레이티드 | 프로그램 가능한 cpu 레지스터 하드웨어 컨텍스트 스왑 메커니즘 |
WO2016110954A1 (ja) * | 2015-01-07 | 2016-07-14 | 富士通株式会社 | タスク切替支援方法、タスク切替支援プログラム、及び情報処理装置 |
US9323575B1 (en) * | 2015-02-26 | 2016-04-26 | Freescale Semiconductor, Inc. | Systems and methods for improving data restore overhead in multi-tasking environments |
JP2019219984A (ja) * | 2018-06-21 | 2019-12-26 | ルネサスエレクトロニクス株式会社 | メモリモジュール |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5050067A (en) * | 1987-08-20 | 1991-09-17 | Davin Computer Corporation | Multiple sliding register stacks in a computer |
JP3644042B2 (ja) | 1993-11-15 | 2005-04-27 | ソニー株式会社 | マルチタスク処理装置 |
US5666523A (en) * | 1994-06-30 | 1997-09-09 | Microsoft Corporation | Method and system for distributing asynchronous input from a system input queue to reduce context switches |
JP2677202B2 (ja) * | 1994-08-12 | 1997-11-17 | 日本電気株式会社 | マイクロプロセッサ |
JPH09212371A (ja) | 1996-02-07 | 1997-08-15 | Nec Corp | レジスタ退避及び復元システム |
US6826240B1 (en) * | 2000-03-15 | 2004-11-30 | Motorola, Inc. | Method and device for multi-user channel estimation |
US7287206B2 (en) * | 2002-02-13 | 2007-10-23 | Interdigital Technology Corporation | Transport block set transmission using hybrid automatic repeat request |
KR101111515B1 (ko) * | 2005-02-02 | 2014-05-07 | 엘지전자 주식회사 | 데이터 송수신 방법 |
-
2004
- 2004-09-21 JP JP2004274219A patent/JP2006092042A/ja active Pending
-
2005
- 2005-09-20 US US11/229,850 patent/US7412590B2/en not_active Expired - Fee Related
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008217563A (ja) * | 2007-03-06 | 2008-09-18 | Nec Corp | 非同期コンテキスト切り替えシステム |
JP2013164791A (ja) * | 2012-02-13 | 2013-08-22 | Denso Corp | データ処理装置 |
JP2015534188A (ja) * | 2012-09-28 | 2015-11-26 | インテル・コーポレーション | ユーザレベルのスレッディングのために即時のコンテキスト切り替えを可能とする新規の命令および高度に効率的なマイクロアーキテクチャ |
JP2017037370A (ja) * | 2015-08-06 | 2017-02-16 | 富士通株式会社 | 計算機、プロセス制御方法およびプロセス制御プログラム |
Also Published As
Publication number | Publication date |
---|---|
US7412590B2 (en) | 2008-08-12 |
US20060101252A1 (en) | 2006-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7412590B2 (en) | Information processing apparatus and context switching method | |
US9069605B2 (en) | Mechanism to schedule threads on OS-sequestered sequencers without operating system intervention | |
US8424021B2 (en) | Event-based bandwidth allocation mode switching method and apparatus | |
JP3787167B2 (ja) | フラッシュメモリ | |
JP5091986B2 (ja) | 電力制御装置 | |
JP4119945B2 (ja) | タスク処理装置 | |
JP2008047145A (ja) | デュアルスレッドプロセッサ | |
WO2007075339A1 (en) | Data structure and management techniques for local user-level thread data | |
US9043806B2 (en) | Information processing device and task switching method | |
JP2007133456A (ja) | 半導体装置 | |
JPWO2008023427A1 (ja) | タスク処理装置 | |
US5928356A (en) | Method and apparatus for selectively controlling groups of registers | |
EP1760580B1 (en) | Processing operation information transfer control system and method | |
US7822952B2 (en) | Context switching device | |
EP1760581A1 (en) | Processing operations management systems and methods | |
EP3798826A1 (en) | Methods of hardware and software coordinated opt-in to advanced features on hetero isa platforms | |
JP5289688B2 (ja) | プロセッサシステム及びプロセッサシステムを動作させるオペレーティングシステムプログラムの処理方法 | |
JP2009175960A (ja) | 仮想マルチプロセッサシステム | |
JP2011070290A (ja) | データプロセッサ | |
JP2008059455A (ja) | マルチプロセッサ | |
WO2018138975A1 (ja) | 演算処理装置および情報処理システム | |
JP2008015638A (ja) | データ処理装置 | |
JP2012168725A (ja) | マルチスレッド・プロセッサ | |
JP2008269597A (ja) | タスク処理装置 | |
JP2006139495A (ja) | 演算処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070622 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20090422 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090707 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20091110 |