JP2014078072A - 情報処理装置、情報処理方法およびプログラム - Google Patents

情報処理装置、情報処理方法およびプログラム Download PDF

Info

Publication number
JP2014078072A
JP2014078072A JP2012224237A JP2012224237A JP2014078072A JP 2014078072 A JP2014078072 A JP 2014078072A JP 2012224237 A JP2012224237 A JP 2012224237A JP 2012224237 A JP2012224237 A JP 2012224237A JP 2014078072 A JP2014078072 A JP 2014078072A
Authority
JP
Japan
Prior art keywords
task
coprocessor
processor
fpu
information 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.)
Granted
Application number
JP2012224237A
Other languages
English (en)
Other versions
JP6214142B2 (ja
Inventor
Shusuke Kobayashi
秀典 小林
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.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Priority to JP2012224237A priority Critical patent/JP6214142B2/ja
Priority to US14/045,525 priority patent/US20140101671A1/en
Publication of JP2014078072A publication Critical patent/JP2014078072A/ja
Application granted granted Critical
Publication of JP6214142B2 publication Critical patent/JP6214142B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/483Multiproc

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】コプロセッサを有するマルチプロセッサ上でタスクがプロセッサを移動するタスクスイッチ時に、コプロセッサのコンテキスト転送を削減する。
【解決手段】タスクスイッチを判定する場合に、タスクスイッチによるコプロセッサのレジスタ退避を抑制するように制御する。
【選択図】図5

Description

本発明はコンテキストを管理する情報処理装置、情報処理方法およびプログラムに関する。
プロセッサ(processor)を機能的に拡張、あるいは補助するための処理を実現する従属的な処理装置としてコプロセッサ(co processor)がある。例えばプロセッサに、基本的な処理を実施するプロセッサコア(processor core)とは別に、浮動小数点演算、ベクトル演算、画像処理、デバッグ機構制御、システム制御機能などの少なくとも1つを割り当てたコプロセッサを実装することが多い。
コプロセッサは、コプロセッサ毎にレジスタと対応づけられており、レジスタに保持されている設定値やコプロセッサの演算で利用されるレジスタの中間値はコプロセッサコンテキストと呼ばれ、プロセッサコアに対応づけられているレジスタに保持されているコンテキストとは区別される。また、コプロセッサコンテキストはタスク毎に管理する場合がある。例えば、複数のタスクの処理に関して同一の浮動小数点演算器を利用する場合に、浮動小数点演算器のコプロセッサコンテキストはタスク毎に管理されていることが好ましい。
そのため、一般的にタスク毎のコプロセッサコンテキストはオペレーティングシステムが管理する。単純な管理方法ではタスクスイッチ時に、それまで実行していたタスクのコプロセッサコンテキストをレジスタからメモリへ一時退避させ、次に実行するタスクのコプロセッサコンテキストがあればメモリ上からプロセッサ内のレジスタに復帰させる。このような動作をコンテキストスイッチ(またはプリエンプション)と呼ぶ。
しかし、コプロセッサのコンテキストスイッチは必ずしもタスクスイッチ毎に行う必要がない。そこで、特許文献1は、タスクスイッチ時にコプロセッサを無効化しておき、コプロセッサアクセスによる例外通知時にコプロセッサの有効化とコプロセッサコンテキストのスイッチを行う方法を開示している。
特開平3−94362号公報
しかし、例えば、タスクに対するプロセッサの再割り当てが生じる構成において特許文献1で示される方式を行うと、あるタスクのコプロセッサコンテキストと関連付けられているコプロセッサとは別のコプロセッサに、このタスクのコプロセッサ用の演算処理が割り当てられてしまうことがある。ここで、一般的に、コプロセッサに対して、そのコプロセッサが属するプロセッサ外からのアクセスは、プロセッサ内からのアクセスに比べてレイテンシが大きい。詳細には、コプロセッサコンテキストを共有メモリなどに移して、タスクを実行しようとするプロセッサがアクセスしたとしても、コプロセッサコンテキストを共有メモリに移動させるのに要する時間だけシステムの処理効率が低下してしまう。
上記課題を達成するために本発明に係る情報処理装置は、割り当てられたタスクを第1レジスタの内容に基づいて処理を実行する第1処理部と、当該タスクを第2レジスタの内容に基づいて処理を実行する第2処理部と、を含むプロセッサを複数備えるマルチプロセッサを有する情報処理装置であって、前記マルチプロセッサの備えるプロセッサの1つを着目プロセッサとし、当該着目プロセッサに割り当てるタスクを変更する際に、当該着目プロセッサの第1レジスタおよび当該着目プロセッサの第2レジスタが保持している内容をメモリに転送する転送手段と、前記着目プロセッサに割り当てられたタスクが、当該着目プロセッサの第2処理部によって処理を開始されることに応じて、当該第2処理部に対応する第2レジスタの内容を前記転送手段によって前記メモリに転送することを抑制する制御手段とを有することを特徴とすることを特徴とする。
本発明によれば、コンテキストの転送回数を低減させ、システムの処理効率を向上させることができる。
情報処理装置の全体構成を示すブロック図である。 システム構成の概略を示すブロック図である。 タスクスイッチ時の処理を示すフローチャートである。 タスク終了時処理を示すフローチャートである。 FPU例外時の処理を示すフローチャートである。 従来技術のスケジューリング例を示す概念図である。 本発明によるスケジューリング例を示す概念図である。 システムコールFPStartの処理を示すフローチャートである。 システムコールFPFinishの処理を示すフローチャートである。 システムコールを用いた疑似コードによるタスクプログラムの例である。 本発明によるスケジューリング例を示す概念図である。 情報処理装置100の概略動作を示すフローチャートである。 (a)FPU制御ブロックの概略図であり、(b)プロセッサ割り当て情報の概略図であり、(c)タスク毎に退避させたメインコンテキストとサブコンテキストの概略図である。
<実施形態1>
まず、図1を参照して、本発明の実施形態1に係る情報処理装置100の概略構成を示す。マルチプロセッサチップ101は、プロセッサコア(第1処理部、主処理ユニット)111と、コプロセッサ(第2処理部、副処理ユニット)としてFPU(浮動小数点演算ユニット:Floating Point number processing Unit)110と、を備えるn個のプロセッサ109を複数備える(ここで、nは2以上の整数)。プロセッサコア111とFPU110とはそれぞれ、デコーダー論理、演算回路を備えている。ここでFPU110は、単精度および倍精度の浮動小数点形式において、加算、減算、乗算除算、積和演算、平方根演算が可能であり、ダイサイズやゲート数および平均消費電力がプロセッサコア111よりも小さい。そして、FPU110は、IEEE 754(IEEE:The Institute of Electrical and Electronics Engineers、 IEEE754は浮動小数点数演算標準)で定義されている浮動小数点例外(無効操作、0による除算、オーバフロー、アンダーフロー、不正確)をサポートしているものとする。
また、本実施形態では、FPU110は無効、有効の状態を、自身の属するプロセッサ109のプロセッサコア111によって制御される。例えば、FPU110が無効状態である場合は、FPU110に供給するクロックを下げたり、FPU110に供給する電圧をさげたり、FPU110への演算命令を無視する設定をしたりする等しているため、有効状態に切り替えるまでFPU110は演算命令を受け付けて処理しない。そこで、FPU110が無効状態のときにFPU110の機能を利用しようとすると、FPU110を利用可能な有効の状態に設定し直す必要が有る。例えば、無効状態のFPU110に浮動小数点演算命令が発行されると、FPU110は例外を自身の属するプロセッサ109のプロセッサコア111に通知する、そして通知を受けたプロセッサコア111が例外通知を発行したFPU110を有効状態に切り替える。有効状態と無効状態とを切り替える詳細な状況については後述する。
各プロセッサコア111はバス108を介してROM(Read Only Memory)102およびRAM(Random Access Memory)103にアクセスできる。ROM102にはOSプログラム104およびタスクプログラム105が製品出荷時などに保持される。また、情報処理装置100は起動時にマルチプロセッサ101などによってROM102やHDDが保持している圧縮データを解凍してRAM上に、後述の処理を実現するためのプログラム(OSプログラム104やタスクプログラム105)を配置する。また、タスク制御ブロック106およびFPU制御ブロック107を保持するための領域をRAM上に確保する。なお、オペレーションシステムとは、OSプログラム104に属するバイナリコードがプロセッサコア111の少なくとも1つで実行することで実現される。微視的にはOSプログラム104のバイナリコードとタスクプログラム105のバイナリコードは、時分割的にプロセッサコア111によって実行されるが、巨視的にはタスクプログラムの実行中もOSは起動状態にあるとされる。
なお、各プロセッサ109はコンテキストを保持するためのレジスタセット112(第2レジスタ)およびレジスタセット113(第1レジスタ)を備えている。レジスタセット113は、32ビットのレジスタを複数含む。この複数のレジスタには、汎用レジスタや、プログラムカウンタ(1命令毎に1ワードずつインクリメントした値を格納する)、状態レジスタ(論理演算装置のステータスフラグのコピー、現在のプロセッサモード、割込み無効化フラグ等を格納する)が含まれる。
また、レジスタセット112は、64ビットのレジスタを16本備えるものとする。こ16本のレジスタのうちには、単精度浮動小数点数値や64ビット整数をそれぞれ保持できる複数のFPU汎用レジスタと、FPU110のモード(ユーザアクセス、特権アクセス)などを保持するFPUシステムレジスタと、を少なくとも含む。
図に示すように、レジスタセットのうち、FPU110と対応づけられFPU110が主に利用するレジスタ群(通常は浮動小数点レジスタなど)と、プロセッサコア111と対応づけられプロセッサコア111が主に利用するレジスタ群(汎用レジスタなど)は区別されている。ここで、プロセッサコア111は、同一のプロセッサ109内のFPU110のレジスタセット112には直接アクセス(読出した内容を自レジスタにコピー、書込み、読出した内容を用いて演算)できる。同様に、FPU110についても同一のプロセッサ109内のプロセッサコア111のレジスタセット113には直接アクセスできる。
レジスタセット112やレジスタセット113で保持するコンテキストは、設定値(プログラムカウンタの内容、プロセスのステータス、ポインタ等の状態や設定を示す値、OS固有の情報)や中間値(タスクプログラム105でアクセスする値、中間処理結果、条件コード)を含むデータ構造体である。なお、以降の説明では、プロセッサコア111が実行するタスクに関するコンテキストをメインコンテキスト、FPU110が実行するタスクに関するコンテキストをサブコンテキスト(またはFPUコンテキスト)と呼称する。
タスク制御ブロック106は、タスクを割り当て可能(移動可能)なプロセッサの識別情報を保持するプロセッサ割り当て情報(図13b参照)と、退避させたメインコンテキストと退避させたサブコンテキスト(図13c参照)と、を含む。FPUコンテキストはタスク制御ブロック106内ではなくタスク毎のスタック領域内に設けてもよい。FPU制御ブロック107は、FPU110を利用中のタスク(FPU110が処理中のタスク)を識別するためのFPU利用タスク識別情報(図13a参照)を保持する。図13(a)〜(c)の詳細は後述する。
本実施形態では、起動時にFPU110を無効状態にしておくことでFPUが処理を開始することをFPU例外によって検出する。そして検出に応じて、後述のオペレーティングシステムがFPUを利用しているタスクの識別情報をFPUの識別情報と対応づけてFPU制御ブロック107に登録する。このようにすることで、例えば、FPUを利用するタスクからFPUを利用しないタスクにスイッチ(変更)する時に、FPUコンテキストを転送しないようにすることができる。
図2を参照して、本実施形態に係るオペレーティングシステム201の機能構成の模式図を示す。m個のタスクは、前述のタスクプログラム105に複数含まれるプログラム単位であり、実行待ちのタスクは優先度の高い順にオペレーティングシステム201によって、各プロセッサ109に割り当てられる。オペレーティングシステム201は、予め記憶されている「タスクの種類と優先度との対応」を参照し、各タスクの優先度を判断する。
オペレーティングシステム(以下、OSと称す)201はプロセッサ109の少なくとも1つで実行され、コンテキスト管理機能203、プロセッサ割り当て管理機能204およびコプロセッサコンテキスト管理機能205を実現する(これらの機能は理解がし易いようにOSの機能を分類し、抽象化したものである。各機能を実現するための詳細は後述する)。
好ましくは、OS201を実現するためのバイナリコードは複数のプロセッサ109の各々が実行する。各プロセッサ109のプロセッサコア111は、タスク処理の合間などにOSのコードを実行し、コンテキスト管理機能203、プロセッサ割り当て管理機能204およびコプロセッサコンテキスト管理機能205を実現する。ここで、プロセッサ割り当て管理機能204はいわゆる一般的なスケジューラである。ここで、スケジューラが起動されるタイミングとしては、プロセッサコア111のキュー(不図示)の状態が変化したときや、スケジューリングの禁止が解除されたとき、プロセッサコア111が割込み処理から復帰するときなどがある。また、スケジューラは各プロセッサ109で独立的に動作することもできるし、プロセッサ0のスケジューラがプロセッサ間割込みをプロセッサ1、3に発行してプロセッサ1、3のスケジューラを起動することもできる。
図2の例では、OS201が、タスク0をプロセッサ0に割り当て、タスク1をプロセッサ1に、そしてタスクmをプロセッサnに割り当てている。
次に、図12のフローチャートを参照して情報処理装置100の概略動作を説明する。
情報処理装置100の電源がONになると、ハードウェアレベルで情報処理装置100の各構成を初期化する。この時点で、OSプログラム104のバイナリコードをROM102やHDDなどの不揮発性記憶媒体から揮発性媒体のRAM103へ転送する。また、プロセッサコア111およびFPU110を初期化し、さらに各FPU110を無効状態に設定する。プロセッサコア111とFPU110の初期化に際して、レジスタセット112およびレジスタセット113も初期化する。
次にステップS1202において、マルチプロセッサ101のプロセッサ109がRAM103に転送されたOSプログラム104のバイナリコードを実行してOSを起動する。さらにOSプログラム104を実行するマルチプロセッサ101の処理によって、タスク制御ブロック106およびFPU制御ブロック107を保持するための領域をRAM上に確保する。次に、タスクプログラム105のバイナリコードをROM102やHDDなどの不揮発性記憶媒体から揮発性媒体のRAM103へ転送する。
そして、OS201によって、スケジューリングする対象の複数のタスク202をマルチプロセッサ101のプロセッサ109に割り当てる。
次にステップS1203において、マルチプロセッサ101のプロセッサコア111は、FPU例外が発生したかどうかを判断する。タスクスイッチの発生は不図示のタイマからの割込みや、スケジューラからの通知、
FPU例外が発生していれば、ステップS1207において、コプロセッサコンテキスト管理機能205が、後述の「FPU例外時処理」を実施する。
FPU例外が発生していなければ、ステップS1204において、プロセッサ109に割り当てているタスクが終了したかどうかをマルチプロセッサ101が判断する。タスクが終了したかどうかの判断は、タスクを実行しているプロセッサコア111が実行中のタスクの最後の命令まで処理したかどうかで自律的に判断できる。
タスクが終了していれば、ステップS1208において、コプロセッサコンテキスト管理機能205が、後述の「タスク終了時処理」を実施する。
タスクが終了していなければ、ステップS1205において、タスクスイッチを発生させるかどうかをマルチプロセッサ101で実現されるプロセッサ割り当て管理機能204が、判断する。
タスクスイッチさせるかどうかは不図示のタイマからの割込みや、実行中のタスクがブロックされたことや、ユーザやアプリからのタスク切り替え指示の有無によって判断できる。タスクのブロックとは、タスクがI/O待ちや、タスク間の同期や、タスク間のメッセージ受信待ちに起因して、タスクの処理が進められない状態である。
タスクスイッチさせる場合は、ステップS1209において、コプロセッサコンテキスト管理機能205が、後述の「タスクスイッチ時処理」を実施する。
タスクスイッチさせない場合、ステップS1206において、マルチプロセッサ101が情報処理装置101の終了を判断する。例えば、マルチプロセッサ101で実施しているタスクのうちOS201以外の全てのタスクの処理が完了したことに応じてシャットダウンするように設定されている条件下でOS201以外のタスクが完了したり、ユーザからの強制シャットダウン指示を受けたりすれば、シャットダウンする。
終了すべきでなければ、ステップS1210でOS201が、スケジューラの他の機能を実施する。例えば、新しいタスクが発生すれば、その新しいタスクをステップS1202と同様にしてプロセッサ109に割り当てる。
なお、図12についてステップS1202〜S1210は各プロセッサ109で独立して並行的に処理されることが好ましい。このとき、各プロセッサ109は自プロセッサを着目プロセッサとして処理を実施する。また、ステップS1203〜ステップS1205(ステップS1207〜S1210)は並列的な関係であり、どの順に処理してもよい。
(タスク割り当て)
次に、ステップS1202やステップS1210における、OS201のプロセッサ割り当て管理機能204によるタスク202の割り当て処理について詳細を説明する。ここで、複数のタスク202は、FPU110を利用する浮動所数点演算命令を含むタスク(図10参照)や、含まないタスクが混在しているプロセッサ割り当て管理機能204は「Fixed−priority pre−emptive scheduling」と呼ばれる方式でレディ状態(実行可能な待ち状態)のタスク202をプロセッサ109に割り当てる。
コンテキスト管理機能203はプロセッサコア111のコンテキストをタスク毎にタスク制御ブロック106上で管理し、プロセッサ割り当て管理機能204は予め設定されている情報から定まる優先度に基づいてタスク202−0〜mを割り当てるプロセッサ109を決定する。例えば、コンテキスト管理機能203が図10に示すタスクAをプロセッサ0に割り当てると、プロセッサコア0がタスクAのバイナリコードを解釈し、所定単位毎のバイナリコードを転送命令によってRAM103からプロセッサ0のプロセッサコア0へ転送する。プロセッサコア0のフェッチ論理、デコーダー論理によってプロセッサコア0へ読み込んだ命令の中に浮動小数点演算命令があれば、プロセッサコア0は浮動小数点演算命令を含むFPU用の命令をFPU0に転送して、FPU0で処理させる。
FPU0は浮動小数点演算の結果をレジスタセット112に格納し、FPU0かプロセッサコア0がレジスタセット112の演算結果をレジスタセット113に転送する。レジスタセット113に保持した浮動小数点演算結果を利用した処理が、プロセッサコア0に残っていればプロセッサコア0はさらに処理を行う。プロセッサコア0で処理が残っていなければ、プロセッサコア0は演算結果をRAM103へ出力する。
そして、コンテキスト管理機能203は、プロセッサ割り当て管理機能204が割り当てを決定したタスクの識別情報(タスクID)と、割り当て先のプロセッサ109の識別情報(プロセッサID)とを関連づけて、タスク制御ブロック106に保持させる。また、コンテキスト管理機能203は、タスク制御ブロック106のプロセッサ割り当て情報を更新する。ここで、情報処理装置100が起動してから1回もタスクスイッチが発生していない段階では、メインコンテキストおよびFPUコンテキストはタスク制御ブロック106に退避されていない。
そして、コプロセッサコンテキスト管理機能205は、プロセッサ割り当て管理機能204が割り当てを決定したタスクの識別情報と、割り当て先のFPU110の識別情報(FPU_ID)とを関連づけて、FPU制御ブロック107に保持させる。
(FPU例外時処理)
次に、ステップS1207における、OS201のFPU例外時処理について詳細を説明する。図5はFPU110からの例外通知を用いる場合のコプロセッサコンテキスト管理機能205によるFPU例外時の動作を示すフローチャートである。本フローチャートの説明では例外通知を発行したFPU110を含むプロセッサ109の動作に着目して説明する。
まず、ステップS501において例外通知を発行したFPU110と同じプロセッサ109に属するプロセッサコア111が、例外通知を発行したFPU110を有効化する。
コプロセッサコンテキスト管理機能205はステップS502においてFPU制御ブロック107を参照し、例外通知を発行したFPU110を利用中のタスクが存在するかどうかを確認する。
例外通知を発行したFPU110を利用中のタスクとは、例外通知を発行したFPU110についてFPUコンテキストがタスク制御ブロック106に退避されずにFPU110に残っているタスクのことである。従って、ステップS502は、例外通知を発行したFPU110と同じプロセッサ109に属するプロセッサコア111が、例外通知を発行したFPU110のFPUコンテキストがレジスタセット112に残っているかどうかを判定していることに相当する。
ステップS502で例外通知を発行したFPU110を利用中のタスクが存在した場合は、ステップS503において、ステップS502で確認したFPU利用中のタスクの識別情報と実行中のタスクの識別情報が一致するかどうかを確認し、一致した場合は処理を終了する。一致した場合は、例外通知を発行したFPU110のレジスタセット112に残っているFPUコンテキストに沿ってそのまま処理を再開すればよいためである。
一方で、ステップS503において一致しなかった場合は、ステップS504において例外通知を発行したFPU110を利用中のタスクのFPUコンテキストを、例外通知を発行したFPU110と同じプロセッサに属するプロセッサコア111が、タスク制御ブロック106内の当該タスク用の領域に退避(転送)する。これは、プロセッサ109がスイッチ前のタスク(第2タスク)からスイッチ後のタスク(第1タスク)へタスクスイッチしたことに起因することが多い。
そして、ステップS505では例外通知を発行したFPU110を利用中のタスク(FPUコンテキストを退避したタスク)についてプロセッサ間移動を許可する。FPU110を利用中のタスクが存在しなかった場合は、ステップS503〜S505を実行しない。
ステップS506では、実行中タスクのFPUコンテキストとして、タスク制御ブロック106内に退避していたFPUコンテキストをFPU110のレジスタセット112に転送することでFPUコンテキストを復帰する。
ステップS507では、例外が通知されたプロセッサ109について実行中のタスクの識別情報をFPU利用タスクの識別情報としてFPU制御ブロック107に設定する。
ステップS508では、この実行中タスクのプロセッサ間移動を禁止し、FPU例外時処理を終了する。
プロセッサ間のタスクの移動の許可や禁止は、コプロセッサコンテキスト管理機能205が、タスク制御ブロック106内に割り当て可能なプロセッサ109の識別情報(プロセッサID)だけを保持させることにより行う。
つまり、タスクをプロセッサ109に割り当てる場合(割り当て直す場合)は、タスク制御ブロック106を参照し、タスク制御ブロック106に識別情報が登録されているプロセッサ109の中からタスクを割り当てるプロセッサを決定する。従って、タスク制御ブロック106に識別情報が登録されていないプロセッサへのタスク割り当てを制限することで、登録されていないプロセッサへのタスクの移動を抑制する。仮に、すべてのプロセッサ109の識別情報をタスク制御ブロック106に登録すると、どのプロセッサ間についてもタスクの移動が許可(抑制が解除)されることになる。
(タスクスイッチ時処理)
次に、図3のフローチャートを参照して、ステップS1209における、コプロセッサコンテキスト管理機能205によるタスクスイッチを発生させる際の処理について説明する。なお、タスクスイッチにともなうプロセッサコアのメインコンテキストについてのコンテキストスイッチの詳細な説明は省略する。
ステップS301において、コプロセッサコンテキスト管理機能205はFPU制御ブロック107を参照し、タスクスイッチを発生させるプロセッサ109について、FPU110を利用中のタスクが存在するかどうかを確認する。FPU110を利用中のタスクが存在しなかった場合は処理を終了する。FPU110を利用中のタスクとは、FPUコンテキストがタスクスイッチを発生させるプロセッサのレジスタセット112に残っているタスクに相当する。
一方で、FPU110を利用中のタスクが存在した場合は、ステップS302に遷移し、FPU110を利用中のタスクの識別情報と次に実行するタスク(スイッチ直後に実行するタスク)の識別情報とが等しいかどうかを確認する。
FPUを利用中のタスクの識別情報と次に実行するタスクの識別情報とが等しくなかった場合は、ステップS303に遷移してタスクスイッチを発生させるプロセッサ109のFPU110を無効化する(無効化したFPU110が保持するコプロセッサコンテキストは、別タスクがFPU110を利用開始する際に例外によって、メモリに退避する)。一方で、等しかった場合は、スイッチ直後にFPU110で浮動小数点演算を含む処理を実施する可能性があるためステップS304においてタスクスイッチの発生したプロセッサ109のFPU110を有効化し、タスクスイッチ時の処理を終了する。なお、FPU利用中タスクの確認のオーバヘッドが大きい場合などは、タスクスイッチ時に一旦、FPUを常に無効化するように制御してもよい。その場合であっても、実際に無効状態のFPU110に浮動小数点演算命令が発行されると、FPU例外によってFPU110が有効状態に設定される。
(タスク終了時処理)
図4はコプロセッサコンテキスト管理機能205によるタスク終了時の動作を示すフローチャートである。タスク終了時にはFPU制御ブロック107からこのタスクに関するエントリ(FPU利用タスク情報保持領域)をクリア(破棄)し、終了したタスクが利用していたFPU110を無効化する。
ステップS401においてコプロセッサコンテキスト管理機能205は、終了したタスクに関するFPU利用タスク情報保持領をクリアする。さらにコプロセッサコンテキスト管理機能205は、ステップS402において終了したタスクに関わるFPU110を無効化し、タスク終了時処理を終了する。
(タスク制御ブロックとFPU制御ブロック)
図13(a)は、FPU110を利用中のタスク(FPU110が処理中のタスク)を識別するためのFPU利用タスク識別情報である。ここでは理解の簡便のためテーブルで示しているが、プロセッサコア111で解釈できる形式であれば単純なデータ列であってもよい。また、プロセッサ109の識別情報など、FPU110を抽象的に指摘できるその他の情報をFPU利用タスク識別情報として用いてもよい。
図13(b)は、プロセッサ割り当て情報であり、タスク毎にそのタスクを割り当て可能(移動可能)なプロセッサの識別情報を保持する。プロセッサ1〜nが同等の機能を備えるプロセッサで、タスク1について移動が制限されていない場合は、タスク1について全てのプロセッサの識別情報をプロセッサ割り当て情報として保持する。
図13(c)は、タスク毎に、退避させたメインコンテキストと退避させたサブコンテキストとである。図中のメインコンテキストとサブコンテキストの番号はプロセッサコア111の番号やFPU110の番号である。この例であると、タスクIDが3のタスクについて、プロセッサコア1のメインコンテキスト1と、FPU1のサブコンテキスト1と、を保持している。また、タスクIDが4のタスクと8のタスクについて、プロセッサコア2のメインコンテキスト2と、FPU1のサブコンテキスト2と、を保持している。ここで、タスクIDが異なれば実施する処理が異なることが多いので、同じプロセッサコア111やFPU110に関するコンテキストであっても、その内容が異なる場合が殆どである。
(スケジューリングの例)
次に、従来技術によるスケジューリングと本実施形態によるスケジューリングを比較し、本実施形態におけるFPUコンテキストの扱いを説明する。
図6はマルチプロセッサのひとつのプロセッサに着目し、着目したプロセッサについて複数のタスク(タスク0、タスク1)が実行される様子を示す。横軸は実行時間の遷移を示し、図6の例であるとタスク0の実行から開始され、3回のタスクスイッチが行われる。なお、FPUは常に有効状態にあり、図中のタスクにおいてFPUを利用する箇所を両矢印で表記する。FPUを利用するかどうかは、タスクのプログラムにFPUで実行する命令が含まれているかどうかによって判別すればよい。
従来技術によるスケジューリングでは、各タスクでFPUを利用するかどうかを考慮しておらず、タスクスイッチの度にメインコンテキストと一緒にFPUコンテキストが転送(退避、復帰)される。例えば、FPUコンテキストとして8バイト(64ビット)のレジスタが16本ある場合を考えると、例として挙げたスケジュールでは、3回のタスクスイッチにより合計で768バイトのFPUコンテキストに相当するデータの転送が行われていることになる。しかし、図6の例においてタスク0からタスク1にタスクスイッチを行ってから次のタスクスイッチが発生するまでの間、タスク0はFPUの利用が中断されている状態であるが、タスク1ではFPUを利用していない。従って、タスク0からタスク1にタスクスイッチを行う際に、タスク0に関するFPUコンテキストを退避させる処理が無駄になってしまっている。
図7は、マルチプロセッサのひとつのプロセッサ(第1プロセッサ)上でふたつのタスク(タスク0、タスク1)が実行される場合(図6と同様)の本実施形態によってスケジューリングし処理させた例である。図7では、FPUが無効状態でシステムを開始するので、タスク0がFPUの利用を開始した時点でFPU例外がプロセッサコア111に通知される。
そして、本実施形態では、このFPU例外によりFPUの利用開始(処理開始)を検出し、FPU110を有効化(有効状態に変更)する。そして、図7の三回のタスクスイッチでは、FPU110は順に「無効化、有効化、無効化」と設定されるが、このタスクスイッチではFPUコンテキストの転送(退避、復帰)は行われない。そのため、FPUコンテキストの退避、復帰を行わないタスクスイッチにおいては、FPUコンテキストの内容を転送する時間を削減できる。
FPUコンテキストの退避、復帰が行われるのは、三回目のタスクスイッチの後にタスク1がFPU演算を行ったことにより発生したFPU例外時の処理のタイミングだけである。従って、FPUコンテキストとして8バイトのレジスタが16本ある場合を考えると、図7の例では、FPUコンテキストの管理において256バイトのFPUコンテキストに相当するデータの転送だけですむ。
以上のように、実施形態1によれば、タスクスイッチ毎に転送するFPUコンテキストの転送回数を低減し、コプロセッサのコンテキストスイッチに伴うオーバヘッドを低減できる。
なお、図1の例ではコプロセッサとしてFPUを図示しているが、本発明におけるコプロセッサはFPUに限定されるものではなく、ベクトル演算器、画像処理器(Graphics Processing Unitなど)、デバッグ機構制御器、IO処理装置、メモリ管理装置(MMU)、DMA(ダイレクトメモリアセクス制御装置)として機能するコプロセッサであってもよい。また、プロセッサ109毎に複数のコプロセッサを備えてもよいし、プロセッサ109毎に機能の異なるコプロセッサを備えてもよい。
なお、上述の説明では、説明の簡便のためタスク制御ブロック106が、タスクを割り当て可能なプロセッサ109の識別番号のみを保持する例について説明したが、各プロセッサの識別番号と割り当て可否(移動可否)とを対応づけたテーブルを、プロセッサ割り当て情報として保持させてもよい。
なお、上述の説明では説明の簡便のため、ROM102がOSプログラム104とタスクプログラム105だけを保持している例を説明したが、ROM102には情報処理装置100が立ちあがった時にハードウェアレベルの初期設定を実施するBIOS(Basic Input/Output System)やファームウェアを保持させてもよい。また、ROM102としてはマスクロムであってもよいし、フラッシュメモリであってもよい。また、その場合は、ステップS1201において、マルチプロセッサ101がブートローダを読み込み、BIOSまたはファームウェアの処理によって、起動時にハードウェアレベルで情報処理装置100の各構成を初期化(プロセッサコア111およびFPU110を初期化し、FPU110を無効状態に設定することを含む)するようにすればよい。なお、組込みOSなどでは、BIOSとファームウェアとOSとが一体的なデータ構造であることがあり、ステップS1201とステップS1202の境界が不明瞭なこともある。
<実施形態2>
実施形態2では、実施形態1について例外処理の代わりにシステムコールを用いる。具体的には、プロセッサコア111が、FPU110の利用開始を通知するシステムコールと、利用終了を通知するシステムコールとを、FPU110の開始検出または終了検出に利用する。実施形態1と同一機能を有する構成や工程には同一符号を付すとともに、構成的、機能的にかわらないものについてはその説明を省略する。
まず、図8のフローチャートを参照して、本実施形態の動作を説明する。
図8はコプロセッサコンテキスト管理機能205によるFPUの利用開始を通知するためのシステムコールFPStart発行時の動作を示すフローチャートである。ステップS801においてコプロセッサコンテキスト管理機能はFPUが無効かどうかを確認する。FPUが有効であった場合は、処理を終了する。一方で、FPUが無効であった場合は、ステップS802においてFPUを有効化する。ステップS803においてはFPU利用タスク識別情報保持領域を参照し、FPUを利用中のタスクが存在するかどうか確認する。
FPU利用中タスクが存在した場合は、ステップS804においてそのタスクのFPUコンテキストをタスク制御ブロック106に退避し、ステップS805においてプロセッサ間移動を許可する。プロセッサ間の移動制御は実施形態1と同様であるため詳細を省略する。一方で、FPU利用中タスクが存在しなかった場合は、ステップS804およびステップS805を実行しない。ステップS806においてはFPU利用タスク識別情報保持領域にシステムコールFPStartを発行したタスクを設定し、ステップS807においてこのタスク(発行タスク)のプロセッサ間移動を禁止し、システムコールFPStart発行時処理を終了する。
図9はコプロセッサコンテキスト管理機能205によるFPUの利用終了を通知するためのシステムコールFPFinish発行時の動作を示すフローチャートである。ステップS901においてコプロセッサコンテキスト管理機能はFPUが有効かどうかを確認する。FPUが無効であった場合、処理を終了する。一方で、FPUが有効であった場合、ステップS902においてFPUを無効化する。ステップ903においてFPU利用タスク識別情報保持領域をクリアする。ステップS904においてシステムコールを発行したタスクのプロセッサ間移動を許可し、システムコールFPFinish発行時処理を終了する。
次に、図10の疑似コードを参照して実施形態2によるオペレーティングシステムのシステムコールを利用したタスクプログラムの記述例を説明する。タスクプログラムでは、浮動小数点演算範囲をシステムコール「FPStart();」とシステムコール「FPFinish();」により囲む(以降これらのシステムコールを、単にFPStart、FPFinishと表記する)。タスクがFPStartを発行するよりも前に仮にFPUを利用した場合には、FPU例外が発生し、プロセッサコア111によりFPUが有効化される。一方、タスクがシステムコールFPFinishを発行した時点よりも後にFPUを利用した場合、FPUコンテキストが破壊される可能性がある。したがって、本実施形態では、FPUの利用が確実に完了してからシステムコールFPFinishを発行するようにタスクプログラムを構成している。
次に、実施形態1と実施形態2によるスケジューリングを比較し、実施形態2におけるFPUコンテキストの扱いを説明する。
図11は、図7と同等のタスクを本実施形態による情報処理装置でスケジューリングさせた例である。図11では浮動小数点演算が行われる前にシステムコールFPStartが発行される。実施形態2では、このシステムコールによりコプロセッサ利用開始が検出され、FPU例外を発生させずにFPUが有効化される。そして、タスク0による浮動小数点演算が終了した後にシステムコールFPFinishが発行される。このシステムコールによりコプロセッサ利用終了が検出される。そのため、三回目のタスクスイッチ後にもFPUコンテキストの転送(退避、復帰)が行われていない。従って、図11の例では、FPUコンテキストの管理においてFPUコンテキストに相当するデータを全く転送しなくてすむ。
以上のように、実施形態2によれば、システムコールをプログラムに埋め込むことにより、タスクスイッチ毎に転送するFPUコンテキストの転送回数をさらに少なくできる。また、一般的に、組込みオペレーティングシステムではシステムコールは関数コールとして実現され、例外処理を用いる場合よりもオーバヘッドを軽減できる。さらに、システムコールFPFinishは、確実にコンテキストの退避が不要になったことを通知するので、その直後のFPU利用開始時に必要となっていたFPUコンテキストの退避をしなくてすむ。また、システムコールFPFinishの発行タスクは発行時にプロセッサ間を移動可能になるので、システムとしてのスケジュール生成における制約をより短時間で排除できる。
<その他の実施形態>
なお、上述の実施形態ではコンテキストスイッチに従って、メインコンテキストやサブコンテキストをメモリ(RAM103)に退避させる例について説明したが、プロセッサ109内に退避させるコンテキストを保持するシャドーレジスタセット(裏レジスタとも呼称する)を配置してもよい。
シャドーレジスタセットは、レジスタセット112とレジスタセット113との其々について同等のサイズのものを複数、プロセッサ109毎に設けることが好ましい。同等のサイズであれば、ハード的なスイッチングによってコンテキストスイッチが可能となる。例えば、レジスタセット112(表レジスタ)とシャドーレジスタセット(裏レジスタ)とをセレクタで物理的に切り替えることで、コンテキストの退避のためのデータ転送を発生させずに、ハードコンテキストスイッチが可能となる。ハードコンテキストスイッチをするためには、マルチコアプロセッサ101について、ハードコンテキストスイッチ命令を解釈して、セレクタを動作させることで表レジスタと裏レジスタとを切り替えることができる。ハードコンテキストスイッチ自体はザイログ(ZILOG)社のZ80(1976年発表)などのプロセッサにおいて古くから実装されている機能であり、その詳細は省略する。
また、上述の実施形態ではプロセッサコア111の方がFPU110よりダイサイズが大きいと説明しているが、複数のコアと1つのコプロセッサとを1つのプロセッサ109とする構成などでは、必ずしも、FPU110のダイサイズの方が小さくなるわけではない。
また、上述の実施形態では、OSプログラム104や図12のステップS1202〜S1210の処理を各プロセッサ109において並行的に処理されることも説明したが、プロセッサコア111の少なくとも1つで他のプロセッサコア111についての処理を実行してもよい。Windows(登録商標)系のOSのように、複数のプロセッサの負荷に応じて、OSプログラム104のバイナリコードを次に実行させる1つ以上のプロセッサを選択して処理をさせてもよい。
また上述の実施形態では、典型的な例として、全プロセッサが同等であるホモジニアスなマルチプロセッサを例として説明したが、一部のプロセッサのみがコプロセッサを有するヘテロジニアスなマルチプロセッサについても本発明は適用可能である。ここで、少なくとも2つ以上のプロセッサが同等なコプロセッサを備えている方が本発明の効果をより顕著にえることができる。
ヘテロジニアスなマルチプロセッサを対象にする場合、ひとつの方法としては、タスクプログラムにおいて、コプロセッサを利用するかどうかを記述し、プロセッサ割り当て管理装置がコプロセッサを備えるプロセッサを、コプロセッサを利用するタスクに割り当てるようにする。別の方法としては、コプロセッサの利用開始を検出した時点で、コプロセッサを必要とするタスクにコプロセッサを備えないプロセッサが割り当てられていた場合、コプロセッサを備えるプロセッサにそのタスクを移動する。これらの方法によれば、本発明は、ヘテロジニアスなマルチプロセッサにも適用可能である。
また、上述の実施形態ではコプロセッサコンテキストの移動を制限するように説明しているが、単純にコアを複数そなえるプロセッサ109を複数有するマルチプロセッサ101について、コアの1つのコンテキストを他のプロセッサに移動させないようにすることもできる。例えば、汎用的に用意されているマルチコアの1つをFPU等として設定して使うプロセッサを複数備えるマルチプロセッサ101についても、本発明を適用して上述の効果を得ることができる。
また、上述の実施形態ではプロセッサコアやコプロセッサの備えるレジスタセットの内容について一例を説明したが、MビットのレジスタをK本備えるレジスタセットであればよい(ここでM、Kの其々は2のべき乗でなくてもよい)。
また、前述の実施形態の構成を成すコンピュータが読取り可能なプログラムコードを外部記憶装置や機能拡張ユニット、記憶媒体から読み込みシステムあるいは装置のコンピュータが実行する形態も考えられる。
上述の実施形態ではOSプログラム104とタスクプログラム105について説明を補足する。OSプログラム104とは一般的にOS提供メーカーがOS提供するもので、更新差分(メーカーにより提供されるアップデート部分)も含む。タスクプログラム105とは、情報処理装置100のユーザがOSプログラム104インストール後に、OSプログラム104よりも自由にインストール・アンインストールすることができるものを含む。タスクプログラム105とは情報処理装置100を製造するメーカーが、情報処理装置100をユーザに提供する前にプリインストールするものであってもよい。

Claims (21)

  1. 割り当てられたタスクを第1レジスタの内容に基づいて処理を実行する第1処理部と、当該タスクを第2レジスタの内容に基づいて処理を実行する第2処理部と、を含むプロセッサを複数備えるマルチプロセッサを有する情報処理装置であって、
    前記マルチプロセッサの備えるプロセッサの1つを着目プロセッサとし、当該着目プロセッサに割り当てるタスクを変更する際に、当該着目プロセッサの第1レジスタおよび当該着目プロセッサの第2レジスタが保持している内容をメモリに転送する転送手段と、
    前記着目プロセッサに割り当てられたタスクが、当該着目プロセッサの第2処理部によって処理を開始されることに応じて、当該第2処理部に対応する第2レジスタの内容を前記転送手段によって前記メモリに転送することを抑制する制御手段とを有することを特徴とする情報処理装置。
  2. プロセッサコアとコプロセッサとを備えている複数のプロセッサを有するマルチプロセッサにおいて、前記プロセッサコアまたは前記コプロセッサに実行させるタスクを割り当てる情報処理装置であって、
    前記コプロセッサによる前記タスクの処理の開始を検出すると、前記コプロセッサが利用するコプロセッサコンテキストをメモリに転送することを抑制する制御手段を備えることを特徴とする情報処理装置。
  3. 前記制御手段は、タスクスイッチ後に前記コプロセッサによる前記タスクの処理開始を検出する開始検出手段と、当該開始検出手段が前記コプロセッサの処理開始を検出すると、処理を開始したタスクについて前記プロセッサ間を移動することを制限する制限手段とを備えることを特徴とする請求項2に記載の情報処理装置。
  4. 前記コプロセッサが第1タスクについて処理を開始する際に、当該コプロセッサが第2タスクについてのコプロセッサコンテキストを保持していると、当該第2タスクのコプロセッサコンテキストをメモリに退避する転送手段を更に備える請求項2または3に記載の情報処理装置。
  5. 前記コプロセッサが第1タスクについて処理を開始する際に、当該第1タスクのコプロセッサコンテキストが前記メモリに存在すると、当該第1タスクのコプロセッサコンテキストを前記メモリから前記第1タスクを処理するコプロセッサコンテキストに復帰させる転送手段をさらに備えることを特徴とする請求項2乃至4のいずれか1項に記載の情報処理装置。
  6. 前記制御手段は、前記コプロセッサによって処理が開始されるタスクの識別情報を、前記メモリにコプロセッサ毎に保持させることを特徴とする請求項2乃至記載の5のいずれか1項に記載の情報処理装置。
  7. 前記制御手段は、前記コプロセッサが処理するタスクの変更が前記プロセッサコアに通知されるように前記コプロセッサを制御することを特徴とする請求項2乃至6のいずれか1項に記載の情報処理装置。
  8. 前記制御手段は、タスクスイッチをする際に前記コプロセッサが処理中のタスクとスイッチ後のタスクとが異なると、当該タスクスイッチが行われるプロセッサのコプロセッサを無効化し、タスクスイッチ後に前記コプロセッサを利用する命令が発行された際に例外が前記プロセッサコアに通知されるように前記コプロセッサを制御することを特徴とする請求項2乃至7のいずれか1項に記載の情報処理装置。
  9. 前記制御手段は、前記コプロセッサによる処理の開始を、前記タスクを実行するプロセッサコアからのシステムコールにより検出することを特徴とする請求項2乃至8のいずれか1項に記載の情報処理装置。
  10. 前記制御手段は、前記タスクを割り当て可能なプロセッサの識別情報をプロセッサ割り当て情報として前記メモリに保持させ、移動が制限されるタスクに関するプロセッサ割り当て情報について、当該タスクを処理中のコプロセッサを有するプロセッサの識別情報のみが当該プロセッサ割り当て情報に保持されるように変更することを特徴とする請求項2乃至9のいずれか1項に記載の情報処理装置。
  11. 前記制御手段は、前記タスクについて前記コプロセッサによる処理の終了を検出する終了検出手段と、当該終了検出手段の検出に応じて当該タスクのプロセッサ間の移動を許可する許可手段と、を備えることを特徴とする請求項2乃至10のいずれか1項に記載の情報処理装置。
  12. 前記制御手段は、前記タスクについて前記コプロセッサによる処理の終了を検出する終了検出手段と、当該終了検出手段の検出に応じて当該タスクのプロセッサ間の移動を許可する許可手段と、当該タスクについて前記メモリに保持されているコプロセッサコンテキストを破棄するクリア手段と、をさらに備えることを特徴とする請求項2乃至11のいずれか1項に記載の情報処理装置。
  13. 前記クリア手段は、前記終了検出手段により利用終了が検出されたコプロセッサが処理していた前記タスクの識別情報を前記メモリからクリアすることを特徴とする請求項12に記載の情報処理装置。
  14. 前記終了検出手段は、前記コプロセッサによるタスクの処理の終了を、前記コプロセッサの利用終了として検出することを特徴とする請求項11乃至13のいずれか1項に記載の情報処理装置。
  15. 前記終了検出手段は、前記コプロセッサによるタスクの処理の終了を、前記タスクを実行するプロセッサコアからのシステムコールにより検出することを特徴とする請求項11乃至13のいずれか1項に記載の情報処理装置。
  16. 前記許可手段は、移動が許可されるタスクのプロセッサ割り当て情報を、当該該タスクの移動が制限される前の状態に復帰することを特徴とする請求項11乃至15のいずれか1項に記載の情報処理装置。
  17. 前記コプロセッサコンテキストは、前記コプロセッサのレジスタが保持する値であり、前記タスクの移動とは、当該タスクに関わるコプロセッサコンテキストを前記メモリに退避させ、退避したコプロセッサコンテキストを別のプロセッサのコプロセッサのレジスタに復帰させる処理を示すことを特徴とする請求項2乃至16のいずれか1項に記載の情報処理装置。
  18. 割り当てられたタスクを第1レジスタの内容に基づいて処理を実行する第1処理部と、当該タスクを第2レジスタの内容に基づいて処理を実行する第2処理部と、を含むプロセッサを複数備えるマルチプロセッサを有する情報処理装置による情報処理方法であって、
    前記マルチプロセッサの備えるプロセッサの1つを着目プロセッサとし、当該着目プロセッサに割り当てるタスクを変更する際に、当該着目プロセッサの第1レジスタおよび当該着目プロセッサの第2レジスタが保持している内容をメモリに転送する転送工程と、
    前記着目プロセッサに割り当てられたタスクが、当該着目プロセッサの第2処理部によって処理を開始されることに応じて、当該第2処理部に対応する第2レジスタの内容を前記メモリに転送することを抑制する制御工程とを有することを特徴とする情報処理方法。
  19. プロセッサコアとコプロセッサとを備えている複数のプロセッサを有するマルチプロセッサにおいて、前記プロセッサコアまたは前記コプロセッサに実行させるタスクを割り当てる情報処理装置による情報処理方法であって、
    前記コプロセッサによる前記タスクの処理の開始を検出すると、前記コプロセッサが利用するコプロセッサコンテキストをメモリに転送することを抑制する制御工程を有することを特徴とする情報処理方法。
  20. 割り当てられたタスクを第1レジスタの内容に基づいて処理を実行する第1処理部と、当該タスクを第2レジスタの内容に基づいて処理を実行する第2処理部と、を含むプロセッサを複数備えるマルチプロセッサを有する情報処理装置を、
    前記マルチプロセッサの備えるプロセッサの1つを着目プロセッサとし、当該着目プロセッサに割り当てるタスクを変更する際に、当該着目プロセッサの第1レジスタおよび当該着目プロセッサの第2レジスタが保持している内容をメモリに転送する転送手段と、
    前記着目プロセッサに割り当てられたタスクが、当該着目プロセッサの第2処理部によって処理を開始されることに応じて、当該第2処理部に対応する第2レジスタの内容を前記転送手段によって前記メモリに転送することを抑制する制御手段として機能させることを特徴とするコンピュータが読取り可能なプログラム。
  21. プロセッサコアとコプロセッサとを備えている複数のプロセッサを有するマルチプロセッサにおいて、前記プロセッサコアまたは前記コプロセッサに実行させるタスクを割り当てる情報処理装置を、
    前記コプロセッサによる前記タスクの処理の開始を検出すると、前記コプロセッサが利用するコプロセッサコンテキストをメモリに転送することを抑制する制御手段として機能させることを特徴とするコンピュータが読取り可能なプログラム。
JP2012224237A 2012-10-09 2012-10-09 情報処理装置、情報処理方法およびプログラム Active JP6214142B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012224237A JP6214142B2 (ja) 2012-10-09 2012-10-09 情報処理装置、情報処理方法およびプログラム
US14/045,525 US20140101671A1 (en) 2012-10-09 2013-10-03 Information processing apparatus and information processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012224237A JP6214142B2 (ja) 2012-10-09 2012-10-09 情報処理装置、情報処理方法およびプログラム

Publications (2)

Publication Number Publication Date
JP2014078072A true JP2014078072A (ja) 2014-05-01
JP6214142B2 JP6214142B2 (ja) 2017-10-18

Family

ID=50433809

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012224237A Active JP6214142B2 (ja) 2012-10-09 2012-10-09 情報処理装置、情報処理方法およびプログラム

Country Status (2)

Country Link
US (1) US20140101671A1 (ja)
JP (1) JP6214142B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016091076A (ja) * 2014-10-30 2016-05-23 日本電気株式会社 情報処理装置
JP2019179415A (ja) * 2018-03-30 2019-10-17 株式会社デンソー マルチコアシステム

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10120716B2 (en) * 2014-10-02 2018-11-06 International Business Machines Corporation Task pooling and work affinity in data processing
US9720733B1 (en) * 2015-04-28 2017-08-01 Qlogic Corporation Methods and systems for control block routing

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6159539A (ja) * 1984-08-30 1986-03-27 Nec Corp サブプロセツサのレジスタ退避/復帰方式
JPS6473452A (en) * 1987-09-14 1989-03-17 Matsushita Electric Ind Co Ltd Context switching controlled for co-processor
JPH03172937A (ja) * 1989-11-30 1991-07-26 Nec Corp 非同期事象処理ハンドリング装置
JPH0484335A (ja) * 1990-07-27 1992-03-17 Fujitsu Ltd 仮想計算機制御方式
JPH05165652A (ja) * 1991-12-16 1993-07-02 Fujitsu Ltd タスク切替え制御方法
JP2009506410A (ja) * 2005-08-10 2009-02-12 シンビアン ソフトウェア リミテッド コンピュータ装置におけるコプロセッサ支援
WO2010097847A1 (ja) * 2009-02-24 2010-09-02 パナソニック株式会社 プロセッサ装置、マルチスレッドプロセッサ装置
JP2012064086A (ja) * 2010-09-17 2012-03-29 Fujitsu Ltd 情報処理装置、情報処理装置の制御方法及び制御プログラム

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5727211A (en) * 1995-11-09 1998-03-10 Chromatic Research, Inc. System and method for fast context switching between tasks
US6792523B1 (en) * 1995-12-19 2004-09-14 Intel Corporation Processor with instructions that operate on different data types stored in the same single logical register file
US6219779B1 (en) * 1997-06-16 2001-04-17 Matsushita Electric Industrial Co., Ltd. Constant reconstructing processor which supports reductions in code size
US7093260B1 (en) * 2000-05-04 2006-08-15 International Business Machines Corporation Method, system, and program for saving a state of a task and executing the task by a processor in a multiprocessor system
JP4226816B2 (ja) * 2001-09-28 2009-02-18 株式会社東芝 マイクロプロセッサ
US7523455B2 (en) * 2002-05-03 2009-04-21 Hewlett-Packard Development Company, L.P. Method and system for application managed context switching
US7373646B1 (en) * 2003-04-04 2008-05-13 Nortel Network Limited Method and apparatus for sharing stack space between multiple processes in a network device
WO2008023427A1 (fr) * 2006-08-24 2008-02-28 Netcleus Systems Corporation Dispositif de traitement de tâche
DE102007015507B4 (de) * 2007-03-30 2010-09-02 Advanced Micro Devices, Inc., Sunnyvale Prozessor mit einem ersten und einem zweiten Betriebsmodus und Verfahren zu seinem Betrieb
US7979683B1 (en) * 2007-04-05 2011-07-12 Nvidia Corporation Multiple simultaneous context architecture
WO2009123492A1 (en) * 2008-03-31 2009-10-08 Intel Corporation Optimizing memory copy routine selection for message passing in a multicore architecture
JP5225003B2 (ja) * 2008-10-01 2013-07-03 キヤノン株式会社 メモリ保護方法、情報処理装置、メモリ保護プログラム及びメモリ保護プログラムを記録した記録媒体
GB2471138B (en) * 2009-06-19 2014-08-13 Advanced Risc Mach Ltd Handling integer and floating point registers during a context switch

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6159539A (ja) * 1984-08-30 1986-03-27 Nec Corp サブプロセツサのレジスタ退避/復帰方式
JPS6473452A (en) * 1987-09-14 1989-03-17 Matsushita Electric Ind Co Ltd Context switching controlled for co-processor
JPH03172937A (ja) * 1989-11-30 1991-07-26 Nec Corp 非同期事象処理ハンドリング装置
JPH0484335A (ja) * 1990-07-27 1992-03-17 Fujitsu Ltd 仮想計算機制御方式
JPH05165652A (ja) * 1991-12-16 1993-07-02 Fujitsu Ltd タスク切替え制御方法
JP2009506410A (ja) * 2005-08-10 2009-02-12 シンビアン ソフトウェア リミテッド コンピュータ装置におけるコプロセッサ支援
WO2010097847A1 (ja) * 2009-02-24 2010-09-02 パナソニック株式会社 プロセッサ装置、マルチスレッドプロセッサ装置
JP2012064086A (ja) * 2010-09-17 2012-03-29 Fujitsu Ltd 情報処理装置、情報処理装置の制御方法及び制御プログラム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016091076A (ja) * 2014-10-30 2016-05-23 日本電気株式会社 情報処理装置
JP2019179415A (ja) * 2018-03-30 2019-10-17 株式会社デンソー マルチコアシステム

Also Published As

Publication number Publication date
JP6214142B2 (ja) 2017-10-18
US20140101671A1 (en) 2014-04-10

Similar Documents

Publication Publication Date Title
TWI529620B (zh) 推理執行和回復
US10740152B2 (en) Technologies for dynamic acceleration of general-purpose code using binary translation targeted to hardware accelerators with runtime execution offload
KR101673435B1 (ko) 공동 설계 프로세서에서 격리된 실행 환경의 생성
JP5945292B2 (ja) 異種システムをブートし、コアの対称的なビューを表示する方法
US8924624B2 (en) Information processing device
CN106170768B (zh) 在计算机中分派多个线程
TWI516937B (zh) 用於資料讀取/寫入延伸分頁表違例之處理的決策動作決定技術之方法、裝置及非暫態機器可讀媒體
CN106663072B (zh) 用于配置中断的集合的装置和方法
JP5673672B2 (ja) マルチコアプロセッサシステム、制御プログラム、および制御方法
JP2007531167A (ja) ユーザーレベルのマルチスレッドを提供する方法およびシステム
JP2010020803A (ja) コプロセッサの性能を強化するシステムおよび方法
JP6556747B2 (ja) コンピュータ内の複数のスレッドをエグジットするための方法、システム、およびコンピュータ・プログラム
US8407701B2 (en) Facilitating quiesce operations within a logically partitioned computer system
JP2017037370A (ja) 計算機、プロセス制御方法およびプロセス制御プログラム
TW201339971A (zh) 虛擬機器控制結構陰影化技術
JP6214142B2 (ja) 情報処理装置、情報処理方法およびプログラム
US10095542B2 (en) Cooperative thread array granularity context switch during trap handling
US9678792B2 (en) Shared resources in a docked mobile environment
TWI507991B (zh) 多核心處理器及其相關控制方法與電腦系統
CN105474174B (zh) 控制时间密集的指令
JP5328410B2 (ja) 被起動オペレーティングシステム(os)動作計算機、計算機のos起動方法およびos起動プログラム
JP6920286B2 (ja) 例外処理
US20160011895A1 (en) Virtual machine context management
CN112416821A (zh) 在计算系统中定义存储器信息泄漏区域的装置、系统和方法
JP2009175960A (ja) 仮想マルチプロセッサシステム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151009

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160615

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160719

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160914

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170131

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170329

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: 20170822

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170919

R151 Written notification of patent or utility model registration

Ref document number: 6214142

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151