[go: up one dir, main page]

JP2017037370A - 計算機、プロセス制御方法およびプロセス制御プログラム - Google Patents

計算機、プロセス制御方法およびプロセス制御プログラム Download PDF

Info

Publication number
JP2017037370A
JP2017037370A JP2015156471A JP2015156471A JP2017037370A JP 2017037370 A JP2017037370 A JP 2017037370A JP 2015156471 A JP2015156471 A JP 2015156471A JP 2015156471 A JP2015156471 A JP 2015156471A JP 2017037370 A JP2017037370 A JP 2017037370A
Authority
JP
Japan
Prior art keywords
register
information
register group
computer
unit
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
Application number
JP2015156471A
Other languages
English (en)
Inventor
高幸 岡本
Takayuki Okamoto
高幸 岡本
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2015156471A priority Critical patent/JP2017037370A/ja
Priority to EP16180539.5A priority patent/EP3128415B1/en
Priority to US15/218,106 priority patent/US20170038998A1/en
Publication of JP2017037370A publication Critical patent/JP2017037370A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/461Saving or restoring of program or task context
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/461Saving or restoring of program or task context
    • G06F9/462Saving or restoring of program or task context with multiple register sets

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Computing Systems (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Multimedia (AREA)
  • Nonlinear Science (AREA)
  • Retry When Errors Occur (AREA)
  • Executing Machine-Instructions (AREA)
  • Hardware Redundancy (AREA)

Abstract

【課題】コンテキストの切り替えにかかる時間を短縮することを課題とする。
【解決手段】計算機は、プロセスが処理の実行に使用する情報を記憶する複数のレジスタを有する。計算機は、第1のプロセスから第2のプロセスに切り替わる場合、複数のレジスタ内で、第2のプロセスが第2のレジスタを使用する予定がない場合には、第1のプロセスが使用中の第1のレジスタに記憶される情報を第2のレジスタに退避する。計算機は、第2のレジスタを使用する予定がある場合には、第1のレジスタに記憶される情報を記憶装置に退避する。
【選択図】図5

Description

本発明は、計算機、プロセス制御方法およびプロセス制御プログラムに関する。
CPU(Central Processing Unit)の多くは、FPU(Floating Point Unit:浮動小数点演算処理装置)などの演算装置を有している。例えば、このようなCPUは、FPUが使用中であるか否かを示す状態レジスタを保持し、FPUが使用中ではないコンテキストでFPUを使用する命令を実行した場合に、例外処理を実行する。
また、マルチプロセスをサポートするOS(Operating System)では、定期的に又はイベント契機によって、CPUを使用するプロセスの切り替えが発生する。OSは、プロセスの切り替えに伴って、コンテキストの切り替え(以降、コンテキストスイッチと記載する場合がある)を実行する。例えば、OSは、CPUで元々実行中であったプロセスを将来再開するために、CPUのレジスタ上に保存されている情報をメモリ上に保存し、新たに割り当てるプロセスに対して、当該プロセスが使用する情報をメモリから読み出してレジスタに復元する。
なお、コンテキストスイッチの際に、情報の退避や復元が発生するレジスタはコンテキストレジスタと呼ばれる。例えば、コンテキストレジスタとしては、FPUによる演算時に使用されるFPUレジスタやコンテキストの状態を管理する状態レジスタなどが知られている。
特表2006−502470号公報 国際公開第2009/090684号 特開2008−059455号公報
しかしながら、上記技術では、コンテキストの切り替えに時間がかかる。例えば、コンテキストレジスタの数が多いCPUアーキテクチャでは、退避や復元も多く、メモリへのアクセスが多くなるので、より顕著に時間がかかる。
1つの側面では、コンテキストの切り替えにかかる時間を短縮することができる計算機、プロセス制御方法およびプロセス制御プログラムを提供することを目的とする。
第1の案では、計算機は、プロセスが処理の実行に使用する情報を記憶する複数のレジスタを有する。計算機は、退避部を有する。退避部は、第1のプロセスから第2のプロセスに切り替わる場合、前記複数のレジスタ内で、前記第2のプロセスが第2のレジスタを使用する予定がない場合には、前記第1のプロセスが使用中の第1のレジスタに記憶される情報を前記第2のレジスタに退避する。退避部は、前記第2のレジスタを使用する予定がある場合には、前記第1のレジスタに記憶される情報を記憶装置に退避する。
一実施形態によれば、コンテキストの切り替えにかかる時間を短縮することができる。
図1は、実施例1に係る計算機の全体構成例を説明する図である。 図2は、実施例1に係る計算機のハードウェア構成例を説明する図である。 図3は、レジスタ使用予定の例を示す図である。 図4は、FPUレジスタを説明する図である。 図5は、実施例1に係る計算機の機能構成を示す機能ブロック図である。 図6は、レジスタの復元処理の流れを示すフローチャートである。 図7は、レジスタの退避処理の流れを示すフローチャートである。 図8は、退避先選択処理の流れを示すフローチャートである。 図9は、プロセス1実行時のレジスタ配置の具体例を示す図である。 図10は、プロセス1およびプロセス2のレジスタ使用予定の具体例を示す図である。 図11は、他のレジスタグループへの退避例を説明する図である。 図12は、メモリへの退避例を説明する図である。 図13は、複数プロセスの制御例を説明する図である。
以下に、本願の開示する計算機、プロセス制御方法およびプロセス制御プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。各実施例は、矛盾のない範囲内で適宜組み合わせることができる。
[全体構成]
図1は、実施例1に係る計算機の全体構成例を説明する図である。図1に示す計算機10は、メモリ12とFPUレジスタ13c(以下では単にレジスタと表記する場合がある)とを有するコンピュータの一例である。メモリ12は、各種処理の実行に使用されるデータやプログラム等を記憶する記憶装置の一例であり、FPUレジスタ13cは、浮動小数点演算に使用されるレジスタの一例である。なお、ここでは、FPUレジスタを例にして説明するが、これに限定されるものではなく、整数レジスタなど他のレジスタについても同様に処理することができる。
また、この計算機10は、マルチプロセスをサポートしており、プロセッサを複数のプロセスが共有する。したがって、計算機10は、定期的に又はイベント契機によって、CPUを使用するプロセスの切り替えを実行し、このときにコンテキストスイッチを実行する。つまり、計算機10は、プロセスの切替えに伴ってFPUレジスタ13cに記憶される情報の退避や復元を実行する。
具体的には、図1に示すように、計算機10は、A、B、C、Dの4つのFPUレジスタ13cを有する。なお、図1に示す1−Aなどの表記は、プロセスが使用するレジスタの情報を意味し、1−Aの場合は、プロセス1のレジスタAの情報を意味する。
また、計算機10は、プロセス1、プロセス2、プロセス3それぞれのレジスタ使用予定の一覧を保持する。具体的には、レジスタ使用予定の一覧には、はじめに実行されるプロセス1がレジスタAを使用し、次に実行されるプロセス2がレジスタBを使用し、次に実行されるプロセス3がレジスタAとBを使用することを特定する情報が保持される。
このような状態において、まず、計算機10は、レジスタAに記憶される情報(1−A)を使用するプロセス1を実行する。次に、計算機10は、プロセス1からプロセス2に切り替わるのに伴って、コンテキストスイッチ1−2を実行する。このとき、計算機10は、プロセス2がレジスタBを使用することから、メモリ12に記憶される情報(2−B)を読み出してレジスタBに復元する。
その後、計算機10は、プロセス2からプロセス3に切り替わるのに伴って、コンテキストスイッチ2−3を実行する。このとき、計算機10は、プロセス3がレジスタAおよびレジスタBを使用することから、レジスタAに記憶される情報(1−A)とレジスタBに記憶される情報(2−B)の退避を実行する。
そこで、計算機10は、プロセス3によって使用されないレジスタを検出し、検出されたレジスタに、レジスタAに記憶される情報(1−A)とレジスタBに記憶される情報(2−B)を退避する。
具体的には、計算機10は、レジスタAからDのうち、切り替わる対象のプロセス3が使用しないレジスタとして、レジスタCとレジスタDを検出する。そして、計算機10は、検出されたレジスタCに、レジスタAに記憶される情報(1−A)を退避し、検出されたレジスタDに、レジスタBに記憶される情報(2−B)を退避する。つまり、計算機10は、後続のプロセスで使用されないレジスタに退避する。その後、計算機10は、メモリ12に記憶される情報(3−A)を読み出してレジスタAに復元し、メモリ12に記憶される情報(3−B)を読み出してレジスタBに復元する。
このように、計算機10は、コンテキスト切替時にレジスタの情報を退避させる際、後続のプロセスが使用しないレジスタがあれば、メモリではなく当該レジスタに退避させる。したがって、計算機10は、メモリアクセスを減らし、コンテキストの切替時間を短縮することができる。
[ハードウェア構成]
図2は、実施例1に係る計算機のハードウェア構成例を説明する図である。図2に示すように、計算機10は、入出力装置11、メモリ12、プロセッサ13を有する。なお、ここで示したハードウェアは一例であり、例えばハードディスクや記憶媒体読み取り装置など他のハードウェアを有していてもよい。
入出力装置11は、各種情報の入力を受け付けたり、各種情報を出力したりする装置であり、例えばマウスやディスプレイである。メモリ12は、各種情報を記憶し、コンテキストスイッチの退避先となる記憶装置である。また、メモリ12は、構造体記憶領域12aを有する。
構造体記憶領域12aは、プロセスが実行されると生成され、プロセスが終了すると削除されるプロセス構造体を記憶するメモリ領域である。プロセス構造体は、プロセスごとに生成され、各プロセスに関する情報を保持する。具体的には、プロセス構造体は、プロセス番号、レジスタ退避領域、メモリ管理情報、ファイル管理情報、レジスタ使用予定へのポインタを含むプロセス構造体を記憶する。
ここで、プロセス番号は、プロセスを識別する情報である。レジスタ退避領域は、コンテキストスイッチに伴ってレジスタに記憶される情報の退避先となるメモリ12内の領域である。また、レジスタ退避領域には、プログラムカウンタ等も記憶される。メモリ管理情報は、メモリ12における仮想アドレスと物理アドレスの対応付けなどを記憶する。ファイル管理情報は、プロセスがオープンしているファイルの情報等を記憶する。レジスタ使用予定へのポインタは、後述する実行部22がプログラム実行時にメモリ12等に展開したレジスタ使用予定へのアクセスポインタである。
ここで、レジスタ使用予定について説明する。図3は、レジスタ使用予定の例を示す図である。図3に示すレジスタ使用予定の一例について説明すると、「関数の先頭アドレス、使用レジスタのビットマップ」を有する。
「関数の先頭アドレス」は、アーキテクチャごとに長さが決まっている、プロセスに含まれる関数の先頭の仮想アドレスである。「使用レジスタ」は、関数が使用するレジスタを特定する情報である。ここで、「使用レジスタ」は、レジスタグループごとに1ビットで表現したビットマップの使用の有無を表したものである。この例では、8ビットを割り当てているが、これもレジスタグループの数に任意に決定することができる。
図3の1行目は、「0x1000」で始まる関数がレジスタグループAおよびレジスタグループBを使用予定であることを示し、2行目は、「0x2000」で始まる関数がレジスタグループAおよびレジスタグループDを使用予定であることを示す。なお、本実施例では、説明上、関数の先頭アドレスの代わりにプロセス名を対応付けた例で説明する場合がある。
プロセッサ13は、計算機10全体を司る処理部であり、例えばCPU(Central Processing Unit)などである。プロセッサ13は、演算器13a、整数レジスタ13b、FPUレジスタ13c、キャッシュメモリ13dを有する。また、プロセッサ13は、図示したハードウェア以外にも、FPUレジスタ13cの現状態を管理するFPU状態レジスタ(図示しない)などを有する。すなわち、プロセッサ13は、FPUレジスタ13cの状態を更新するたびに、当該更新にあわせてFPU状態レジスタを更新する。このようにして、プロセッサ13は、現在のコンテキストの状況を、FPU状態レジスタを用いて管理する。
演算器13aは、整数演算や浮動小数点演算などを実行する装置である。整数レジスタ13bは、整数演算に使用されるレジスタである。FPUレジスタ13cは、浮動小数点演算に使用されるレジスタである。キャッシュメモリ13dは、使用頻度の高いデータ等を記憶する高速なメモリである。
本実施例では、プロセッサ13は、コンテキストの管理として、FPUレジスタ13c全体を使用しているか否かではなく、FPUレジスタ13cを複数のグループに分割して、そのグループごとに使用中であるか否かを管理する。なお、本実施例では、このグループをレジスタグループと記載する場合がある。
図4は、FPUレジスタ13cを説明する図である。図4に示すように、プロセッサ13は、合計128レジスタのFPUレジスタ13cを32個ずつのグループに分け、各グループをFPU状態レジスタで管理する。つまり、プロセッサ13は、32個のレジスタを有するレジスタグループA、レジスタグループB、レジスタグループC、レジスタグループDを用いて、コンテキストの管理を実行する。なお、ここで示した分割数や各数字は一例であり、これに限定されるものではない。また、FPU状態レジスタは、各レジスタグループが現在のプロセスによって使用されているか、すなわち各レジスタグループに保存される情報が現在のプロセスの情報かを保持するレジスタである。このFPU状態レジスタは、FPUレジスタ13cの利用者が変更されるたびに更新される。
また、プロセッサ13は、FP owner(Lazy FPU Switching)機能を実行し、FP owner機能を用いて各レジスタグループを管理する。FP owner機能は、コンテキストスイッチ時にFPUレジスタ13cの退避復元を行わず、実際にプログラムがFPUを使用するタイミングまで先延ばしにすることで、FPUを使用しないプログラムのコンテキスト切り替え時間を短縮する。なお、プロセッサ13で実行中のプロセスとは独立にFPUの所有者(owner)を定義する。これにより、コンテキストスイッチとは独立したタイミングでも、FPUレジスタ13cの退避先プロセスを特定することができる。なお、一例として、FP owner機能で定義される、FPUごとの所有者に対する参照情報は、メモリ等に記憶される。
[機能構成]
図5は、実施例1に係る計算機の機能構成を示す機能ブロック図である。図5に示すように、計算機10のプロセッサ13は、FPUレジスタ13c、コンパイル部21、実行部22、切替部23を有する。なお、FPUレジスタ13cは、図2等で説明したので詳細な説明は省略する。コンパイル部21、実行部22、切替部23は、プロセッサ13が実行するプロセスの一例やプロセッサ13が有する電子回路の一例である。
コンパイル部21は、各プロセスとしての実行内容が記述されるプログラムをコンパイルする処理部である。例えば、コンパイル部21は、プログラムをコンパイルして実行バイナリデータを生成する。
このとき、コンパイル部21は、各プロセスについて、関数ごとにその中で使用するレジスタグループの一覧を算出し、図3に示したレジスタ使用予定を生成する。そして、コンパイル部21は、生成したレジスタ使用予定を、実行バイナリデータのヘッダに埋め込む。なお、コンパイル部21は、生成部の一例である。
実行部22は、プロセスを実行する処理部である。具体的には、実行部22は、コンパイル部21が生成した実行バイナリデータを実行し、各プロセスの起動、停止、切替を実行する。また、実行部22は、プロセスを実行すると、当該プロセスに対応するプロセス構造体を生成する。また、実行部22は、実行バイナリデータの実行時に、実行バイナリデータのヘッダからレジスタ使用予定を読出してメモリ12に展開する。
具体的には、実行部22は、レジスタ使用予定とプログラム本体から構成される実行バイナリデータを読み込み、プログラム本体をメモリ12上に展開する。続いて、実行部22は、レジスタ使用予定を保存するための領域をメモリ12上に確保し、実行バイナリデータのヘッダから読み込んだレジスタ使用予定を、確保した領域に展開する。その後、実行部22は、レジスタ使用予定が保存される領域へのポインタを、プロセス構造体に追加する。また、実行部22は、各プロセスの実行や停止等に伴って、プロセス構造体にプログラムカウンタを格納する。
切替部23は、検出部24、退避部25、復元部26を有し、これらによって、プロセス切替に伴うコンテキストスイッチが実行される場合に、FPUレジスタ13cに記憶される情報の退避や復元を実行する処理部である。
検出部24は、プロセス切替が発生してコンテキストスイッチを実行する場合に、情報の退避先や復元先を検出する処理部である。具体的には、検出部24は、プロセスがアクセスするレジスタグループに該当する情報が記憶されていない場合に、復元対象の情報を検出して、該当情報の復元や退避等を実行させる。
例えば、検出部24は、FPU状態レジスタやFPU owner情報等を参照して、該当レジスタグループが使用中か否かを判定し、使用中ではない場合、該当レジスタグループを復元先として復元部26に復元処理の実行を要求する。このとき、検出部24は、対象となっているレジスタグループや実行中のプロセスを特定する情報を復元部26に通知することもできる。
一方、検出部24は、該当レジスタグループが使用中である場合、後続のプロセスに使用されない退避先レジスタグループの検出を実行する。具体的には、検出部24は、FPUレジスタ13cの使用状況と、現在と次のタイムスライスのプロセスディスパッチの順序と、各プロセスが次のタイムスライスで使用するレジスタのリストとを用いて、次のプロセスに使用されないレジスタグループを検出する。
なお、FPUレジスタ13cの使用状況は、実行部22がコンテキストスイッチの度に更新するFPU状態レジスタから取得することができる。また、プロセスディスパッチの順序は、OSカーネルのプロセススケジューラから取得することができる。また、レジスタのリストは、メモリ12に展開されるレジスタ使用予定である。
ここで検出処理の具体例を説明する。一例として、プロセス2、プロセス1、プロセス2がスケジューリングされている状況で、プロセス2からプロセス1に切り替わる例で説明する。また、プロセス1でレジスタグループCの情報を使用するタイミングで、レジスタグループCにプロセス2が使用する情報が記憶されており、退避対象がレジスタグループCであることとする。
(切替手法1)
例えば、検出部24は、切替後のプロセスが使用しないレジスタグループを退避先として選択し、切替後のプロセスが使用しないレジスタグループがない場合は、メモリ12を退避先に選択する。
一例を挙げると、検出部24は、プロセス1のプロセス構造体やFPU状態レジスタの情報から、切り替わるプロセス1が使用するレジスタグループがレジスタグループAとレジスタグループBとレジスタグループCであることを特定する。つまり、検出部24は、切替後のプロセス1がレジスタグループDを使用しないことを特定し、レジスタグループDを退避先に設定する。
その後、検出部24は、退避対象のレジスタグループがレジスタグループCであることと、退避先のレジスタグループがレジスタグループDであることを退避部25に通知する。このとき、検出部24は、実行対象のプロセスがプロセス1であることを退避部25に通知することもできる。
(切替手法2)
例えば、検出部24は、切替後のプロセスが使用しないレジスタグループのうち、さらに後続のプロセスが使用しないレジスタグループ退避先として選択し、該当するレジスタグループがない場合は、メモリ12を退避先に選択する。
一例を挙げると、検出部24は、プロセス1のプロセス構造体やFPU状態レジスタの情報から、切り替わるプロセス1が使用するレジスタグループがレジスタグループAとレジスタグループBとレジスタグループCであることを特定する。また、検出部24は、プロセススケジューラから、後続のプロセスがプロセス2であることを特定する。続いて、検出部24は、プロセス2に対応するプロセス構造体から、プログラムカウンタおよびレジスタ使用予定へのポインタを抽出する。
そして、検出部24は、ポインタを用いてメモリ12からプロセス2のレジスタ使用予定を読み込み、プログラムカウンタを用いて次に実行される関数および当該関数が使用するレジスタグループを特定する。
ここで、検出部24は、プロセス2が次にディスパッチされたときに使用するレジスタグループがレジスタグループAおよびレジスタグループBである場合、後続のプロセスに使用されないレジスタグループDを退避先と特定する。そして、検出部24は、退避対象のレジスタグループがレジスタグループCであることと、退避先のレジスタグループがレジスタグループDであることを退避部25に通知する。このとき、検出部24は、実行対象のプロセスがプロセス1であることを退避部25に通知することもできる。
また、検出部24は、プロセス2が次にディスパッチされたときに使用するレジスタグループがレジスタグループA、レジスタグループC、レジスタグループDである場合、退避先のレジスタグループがないと特定する。そして、検出部24は、退避対象のレジスタグループがレジスタグループCであることと、退避先レジスタグループがないことを退避部25に通知する。このとき、検出部24は、実行対象のプロセスがプロセス1であることを退避部25に通知することもできる。
退避部25は、コンテキストスイッチに伴って、FPUレジスタ13cに記憶される情報の退避を実行する処理部である。具体的には、退避部25は、新たなプロセスが使用するレジスタグループに既に記憶される情報を退避先レジスタグループまたはメモリ12に退避する。
例えば、退避部25が、検出部24から、退避対象のレジスタグループがレジスタグループCであることと、退避先のレジスタグループがレジスタグループDであることと、対象のプロセスがプロセス1であることを受信したとする。
このとき、退避部25は、FPU状態レジスタを参照して、退避先であるレジスタグループDに情報が記憶されているか否かを判定する。ここで、退避部25は、レジスタグループDに情報が記憶されていない場合、退避対象のレジスタグループCに記憶される情報をレジスタグループDに退避する。
一方、退避部25は、退避先であるレジスタグループDに情報が記憶されている場合、メモリ上のFPU owner情報を参照して、当該情報を使用するプロセスがプロセス2であることを特定する。そして、退避部25は、レジスタグループDに記憶される情報をプロセス2のプロセス構造体のレジスタ退避領域に退避する。その後、退避部25は、レジスタグループCに記憶される情報をレジスタグループDに格納する。なお、退避部25は、プロセス構造体に情報を退避する場合、どのレジスタの情報かを特定する情報を対応付けて格納することができる。
また、退避部25が、検出部24から、退避対象のレジスタグループがレジスタグループCであることと、退避先レジスタグループがないことと、実行対象のプロセスがプロセス1であることを受信したとする。
この場合、退避部25は、FPU owner情報を参照して、コンテキスト切替前のレジスタグループCに既に記憶される情報を使用するプロセスがプロセス2であることを特定する。そして、退避部25は、レジスタグループCに記憶される情報を、プロセス2に対応するプロセス構造体のレジスタ退避領域に格納する。なお、退避部25は、情報を退避する場合に、どのレジスタの情報かを特定する情報を対応付けて格納することができる。
上述した処理の後、退避部25は、情報が退避済みであるレジスタグループCへの復元指示および実行対象のプロセスがプロセス1であることを復元部26に通知する。
復元部26は、コンテキストスイッチに伴って、メモリ12からFPUレジスタ13cへの復元を実行する処理部である。具体的には、復元部26は、新たなプロセスが使用するレジスタグループに、該当する情報をメモリ12から復元させる。
上述した例で説明すると、復元部26が、実行中のプロセス1が使用する該当レジスタグループCが未使用であることを示す通知を検出部24から受信したとする。この場合、復元部26は、通知された該当プロセス1のプロセス構造体とFPU owner情報およびFPU状態レジスタを参照して、該当情報の保存先を特定する。そして、復元部26は、プロセス構造体に保存されている場合は、該当する情報をレジスタ退避領域から読み出して、通知されたレジスタグループCに復元する。また、復元部26は、他のレジスタグループに保存されている場合は、該当する情報を当該他のレジスタグループから読み出して、通知されたレジスタグループCに復元する。
また、復元部26は、退避部25からレジスタグループCへの復元指示を受信した場合、該当するプロセス1のプロセス構造体のレジスタ退避領域から該当する情報を読み出して、レジスタグループCに格納する。
[処理の流れ]
次に、計算機が実行する各処理について説明する。ここでは、復元処理、退避処理、退避先選択処理について説明する。
(復元処理の流れ)
図6は、レジスタの復元処理の流れを示すフローチャートである。図6に示すように、検出部24は、プロセス切替に伴ってコンテキストスイッチが発生した場合、復元対象であるレジスタグループが過去に使用したレジスタグループか否かを判定する(S101)。例えば、検出部24は、実行されているプロセスに対応するレジスタ使用予定等を用いて、判定する。
続いて、検出部24は、復元対象であるレジスタグループが過去に使用したレジスタグループである場合(S101:Yes)、復元対象であるレジスタグループが使用中か否かを判定する(S102)。例えば、検出部24は、FPU状態レジスタ等を用いて判定する。
そして、検出部24が復元対象であるレジスタグループが使用中であると判定した場合(S102:Yes)、検出部24と退避部25は、退避処理を実行する(S103)。
一方、検出部24が復元対象であるレジスタグループが使用中ではないと判定した場合(S102:No)、復元部26は、復元対象の情報が別のレジスタグループへ退避済みか否かを判定する(S104)。例えば、復元部26は、FPU状態レジスタ等を用いて判定する。
そして、復元対象の情報が別のレジスタグループへ退避済みである場合(S104:Yes)、復元部26は、レジスタ間で情報の復元を実行する(S105)。例えば、復元部26は、復元対象の情報が記憶されるレジスタグループから、対象のレジスタグループへ当該情報を格納して情報を復元する。その後、復元部26は、FPU状態レジスタに対して、退避元だったレジスタグループに「未使用」をマークする(S106)。
また、S104において、復元対象の情報が別のレジスタグループへ退避済みではない場合(S104:No)、復元部26は、メモリ12から該当情報を読み出して、対象のレジスタグループへ当該情報を復元する(S107)。例えば、復元部26は、該当プロセスに対応するプロセス構造体のレジスタ退避領域から該当情報を読み出して、対象のレジスタグループへ格納する。
また、S101において、復元対象であるレジスタグループが過去に使用したレジスタグループでない場合(S101:No)、検出部24は、復元対象であるレジスタグループが使用中か否かを判定する(S108)。
そして、検出部24が復元対象であるレジスタグループが使用中であると判定した場合(S108:Yes)、検出部24と退避部25は、退避処理を実行する(S109)。一方、検出部24が復元対象であるレジスタグループが使用中ではないと判定した場合(S108:No)、復元部26は、例えば0などの初期値を、該当レジスタグループに格納する(S110)。
(退避処理の流れ)
図7は、レジスタの退避処理の流れを示すフローチャートである。なお、この処理は、図6のS103やS109で実行される。
図7に示すように、検出部24は、退避処理を開始すると(S201:Yes)、退避先選択処理を実行する(S202)。
その後、退避先選択処理の結果、退避先がレジスタグループと決定された場合(S203:Yes)、退避部25は、退避先のレジスタグループに記憶される情報をメモリ12へ書き出す(S204)。例えば、退避部25は、退避先のレジスタグループに記憶される情報を、該当するプロセスのプロセス構造体へ書き出す。
その後、退避部25は、退避対象のレジスタグループに記憶される情報を、退避先として特定されたレジスタグループに退避する(S205)。
一方、退避先選択処理の結果、退避先がレジスタグループではなくメモリ12と決定された場合(S203:No)、退避部25は、退避対象のレジスタグループに記憶される情報をメモリ12に退避する(S206)。例えば、退避部25は、退避対象のレジスタグループに記憶される情報を、該当するプロセスのプロセス構造体へ書き出す。
(退避先選択処理の流れ)
図8は、退避先選択処理の流れを示すフローチャートである。なお、この処理は、図7のS202で実行される。ここでは、上述した例とは別の一例を挙げて説明する。
図8に示すように、検出部24は、実行対象のプロセス1がレジスタグループAを使用すると判定した場合(S301:Yes)、FPU状態レジスタ等を参照して、レジスタグループAが使用中か否かを判定する(S302)。
そして、検出部24は、レジスタグループAが使用中ではない場合(S302:No)、レジスタグループAをそのまま使用すると決定する(S303)。
一方、検出部24は、レジスタグループAが使用中である場合(S302:Yes)、FPU owner情報やFPU状態レジスタ等を参照して、レジスタグループAを使用しているプロセスがプロセス2であると特定する(S304)。
続いて、検出部24は、実行対象のプロセス1が使用しているレジスタグループの一覧を、該当するプロセス構造体から取得する(S305)。そして、検出部24は、取得したレジスタグループの一覧を反転させて、プロセス1の未使用レジスタグループ一覧を候補レジスタとして特定する(S306)。
その後、検出部24は、プロセス2が再度ディスパッチされるまでにスケジュールされているプロセスのリストをプロセススケジューラ等から取得する(S307)。続いて、検出部24は、取得した各プロセスのレジスタ使用予定をプロセス構造体に記憶されるポインタを用いて取得する(S308)。
そして、検出部24は、候補レジスタを1つ選択し、レジスタグループXとする(S309)。さらに、検出部24は、プロセス2がディスパッチされるまでにスケジュールされているプロセスのリストからプロセスを1つ選択し、プロセスYとする(S310)。
その後、検出部24は、レジスタ使用予定を参照して、プロセスYがレジスタグループXを使用するか否かを判定する(S311)。ここで、検出部24は、プロセスYがレジスタグループXを使用しないと判定した場合(S311:No)、S307で取得されたプロセスのうち未処理のプロセスがあるか否かを判定する(S312)。
そして、検出部24は、未処理のプロセスがある場合(S312:Yes)、S310以降を繰り返す。一方、検出部24は、未処理のプロセスがない場合(S312:No)、レジスタグループXをレジスタグループAの退避先に決定する(S313)。なお、検出部24は、レジスタグループXが複数特定されている場合は、任意のレジスタグループXを選択することができる。
その後、退避部25は、レジスタグループXに記憶される情報をメモリ12に退避し、レジスタグループAに記憶される情報をレジスタグループXに退避する(S314)。
一方、検出部24は、プロセスYがレジスタグループXを使用すると判定した場合(S311:Yes)、未処理の候補レジスタがあるか否かを判定する(S315)。
そして、検出部24は、未処理の候補レジスタがあると判定した場合(S315:Yes)、S309以降を実行する。一方、検出部24が未処理の候補レジスタがないと判定した場合(S315:No)、退避部25は、レジスタグループAに記憶される情報をメモリ12に退避する(S316)。
[具体例]
次に、図9から図12を用いて、コンテキストスイッチにおけるレジスタの退避や復元について、具体例を説明する。ここで説明する具体例は、プロセス切替後に実行されるプロセス1がレジスタグループCを使用するタイミングでコンテキストスイッチが発生した例である。また、プロセス1の後にはプロセス2が再度ディスパッチされることとする。
図9は、プロセス1実行時のレジスタ配置の具体例を示す図である。図9に示すように、FPUレジスタ13cにはレジスタグループAからレジスタグループDまでの4つのレジスタグループが存在する。プロセス1は、網掛けになっているレジスタグループA、レジスタグループB、レジスタグループCを使用する。また、レジスタグループCには、プロセス2の情報が記憶されており、レジスタグループDには、情報が記憶されていない。したがって、ここでは、レジスタグループCの退避が発生する。
なお、計算機10は、切替後のプロセス1が実行中にレジスタグループCを退避する場合、プロセス1が使用しないレジスタグループDを退避先として、退避させることもできる(上記切替手法1)。しかし、ここでは、さらに後続のプロセスのレジスタ使用予定を考慮して、より効率的な退避手法(上記切替手法2)について説明する。
メモリ12には、プロセス1がレジスタグループCで使用する情報(1−C)と、プロセス1がレジスタグループDで使用する情報(1−D)とが記憶されている。なお、ここでは便宜上、メモリ12に記憶されている図を図示したが、正確には、メモリ12上に設けられたプロセス1のプロセス構造体のレジスタ退避領域に記憶されている。
図10は、プロセス1およびプロセス2のレジスタ使用予定の具体例を示す図である。図10に示すように、各プロセスについて、関数の先頭アドレスと各レジスタグループとを対応付けて記憶する。図10における黒丸が、そのレジスタグループを使用することを表している。例えば、プロセス1の仮想アドレス「0x1000」から「0x2000」範囲の仮想アドレスで特定される関数は、レジスタグループAとCを使用することを表している。
(具体例1:レジスタへの退避)
ここで、レジスタ間の退避例について説明する。図11は、他のレジスタグループへの退避例を説明する図である。まず、図9に示すように、プロセス1がレジスタグループCを使用する際に、プロセス2の情報が記憶されていることから、コンテキストスイッチが発生する。そして、検出部24は、実行中のプロセス1が使用しないレジスタグループDを候補レジスタに設定する。
そして、検出部24は、後続のプロセス2のプロセス構造体からプロセス2のプログラムカウンタが「0x3A04」であることを特定する。続いて、図10に示すように、検出部24は、プロセス2のレジスタ使用予定とプログラムカウンタ「0x3A04」とから、プロセス2が次にディスパッチされた時の再開箇所が「P」であることを特定する。したがって、検出部24は、プロセス2が次にディスパッチされた時に使用するレジスタグループがAとBであることを特定する。
この結果、図11に示すように、検出部24は、退避先の候補レジスタであるレジスタグループDが後続のプロセス2に使用されないことから、空きのレジスタグループと判定して退避先に決定する。そして、退避部25は、退避先のレジスタグループDに情報が記憶されていないことから、退避対象のレジスタグループCの情報をレジスタグループDに退避させる。その後、復元部26は、退避済みのレジスタグループCに、メモリ12に記憶される情報(1−C)を復元する。
(具体例2:メモリへの退避)
ここで、メモリ12への退避例について説明する。図12は、メモリへの退避例を説明する図である。まず、図9に示すように、プロセス1がレジスタグループCを使用する際に、プロセス2の情報が記憶されていることから、コンテキストスイッチが発生する。そして、検出部24は、実行中のプロセス1が使用しないレジスタグループDを候補レジスタに設定する。
そして、検出部24は、後続のプロセス2のプロセス構造体からプロセス2のプログラムカウンタが「0x7220」であることを特定する。続いて、図10に示すように、検出部24は、プロセス2のレジスタ使用予定とプログラムカウンタ「0x7220」から、プロセス2が次にディスパッチされた時の再開箇所が「Q」であることを特定する。したがって、検出部24は、プロセス2が次にディスパッチされた時に使用するレジスタグループがAとCとDであることを特定する。
この結果、図12に示すように、検出部24は、候補レジスタであるレジスタグループDが後続のプロセス2に使用されることから、空きのレジスタグループがないと判定して、退避先をメモリ12に決定する。そして、退避部25は、退避対象のレジスタグループCの情報をメモリ12に退避させる。その後、復元部26は、退避済みのレジスタグループCに、メモリ12に記憶される情報(1−C)を復元する。
[効果]
上述したように、計算機10は、大規模なコンテキストレジスタを有する場合であっても、レジスタ情報のメモリ12への転送量を減らすことができる。この結果、計算機10は、複数のプロセス間のコンテキストスイッチの時間を短縮することができる。
また、退避用のレジスタを予め用意しておく手法も考えられるが、ハードウェアが多くなり、コスト等の観点から好ましい手法とは言い難い。これに対して、実施例1に係る計算機10は、退避用のレジスタを設けることなく、通常時はプロセスによって共有して使用されるレジスタグループの中から、使用頻度の少ないレジスタグループを検出して、退避用として設定することができる。つまり、計算機10は、退避用のレジスタグループをプロセススケジュール等によって動的に変更することができる。この結果、計算機10は、ハードウェアの数を削減し、コストの削減を実現できるとともに、レジスタグループの有効使用を実現できる。また、計算機10は、プロセッサの処理負荷も軽減できる。
また、計算機10は、レジスタ使用予定を動的に生成して、レジスタグループの使用予定を検出することができるので、プログラムに依存することなく、退避先のレジスタグループを検出することができる。
一般に、コンパイラでは翻訳時に、関数ごとにその中で使用するレジスタグループの一覧を算出する。このため、コンパイラは、翻訳中のプログラムについてレジスタと変数とのマッピングやレジスタの使用や未使用を管理しており、関数内で使用するレジスタを列挙することができる。また、計算機10は、実行バイナリデータのヘッダに、レジスタ使用予定を保存するので、プロセス実行時に、レジスタ使用予定を容易に読み込むことができる。
また、計算機10は、プログラム構造体にレジスタ使用予定を紐付ることができるので、プロセスが終了するとレジスタ使用予定もメモリ12上から削減することができ、メモリ使用量の削減を実現できる。
また、計算機10は、切替後のプロセスが使用しないレジスタグループに、情報を退避することができるので、退避にかかる時間を短縮できる。また、計算機10は、切替後のプロセスが使用しないレジスタグループのうち、さらに後続のプロセスが使用しないレジスタグループに情報を退避することができるので、レジスタグループを効率的に使用することができ、メモリアクセスをさらに削減できる。
上記実施例では、プロセス1とプロセス2の2つのプロセスについて説明したが、これに限定されるものではなく、3つ以上のプロセスであっても同様に処理することができる。図13は、複数プロセスの制御例を説明する図である。図13は、プロセススケジュールと使用するレジスタグループの関係、および、各レジスタグループの保持内容を示す。
図13に示すように、計算機10は、プロセス1に切り替える場合、レジスタグループAに保持されるプロセス2の情報を、プロセス1が使用しないレジスタグループDに退避させる。その後、計算機10は、レジスタグループCに保持される情報をレジスタグループAに復元する。
続いて、計算機10は、プロセス1からプロセス2に切り替える場合、プロセス2が使用するレジスタグループAおよびBに保持されるプロセス1の情報を、プロセス2が使用しないレジスタグループCとDにそれぞれ退避させる。その後、計算機10は、レジスタグループDに記憶されるプロセス2の情報とメモリ12に保持されるプロセス2の情報をレジスタグループAとBのそれぞれに復元する。
続いて、計算機10は、プロセス2からプロセス3に切り替える場合、プロセス3が使用しないレジスタグループAとBを退避先の候補レジスタに設定する。しかし、計算機10は、後に実行されるプロセス2がレジスタグループAを使用するとともに、現在のレジスタグループAに保持される情報がプロセス2のレジスタグループAの情報であることを特定する。この結果、計算機10は、レジスタグループBを退避可能なレジスタに設定する。
さらに、計算機10は、プロセス3が使用するレジスタグループC、Dを退避対象と特定するが、後続のプロセス1が現在のレジスタグループDに記憶される情報を使用することを特定する。このため、計算機10は、レジスタグループDに記憶される情報をレジスタ内に留めることを優先し、レジスタグループBおよびCに保持される内容をメモリ12に退避する。続いて、計算機10は、プロセス1のレジスタグループBの情報を保持するレジスタグループDの情報をレジスタグループBに退避する。その後、計算機10は、メモリ12に保持されるプロセス3の情報をレジスタグループCとDのそれぞれに復元する。
続いて、計算機10は、プロセス3からプロセス1に切り替える場合、プロセス1に使用されないレジスタグループAとDを退避先の候補レジスタに設定する。そして、計算機10は、レジスタグループAに記憶される情報が後続のプロセス1が使用予定であることから、レジスタグループDのみを退避先に決定する。
また、計算機10は、プロセス1が使用予定であるレジスタグループCにはプロセス3の情報が保持されていることから、レジスタグループCを退避対象に決定する。そして、計算機10は、候補レジスタであるレジスタグループDに保持される情報をメモリ12に退避させた後、レジスタグループCに保持されるプロセス3の情報をレジスタグループDに退避させる。その後、計算機10は、メモリ12に保持されるプロセス1の情報をレジスタグループCに復元する。
続いて、計算機10は、プロセス1からプロセス2に切り替える場合、プロセス2に使用されないレジスタグループC、Dを退避先の候補レジスタに設定する。そして、計算機10は、プロセス2が使用予定であるレジスタグループBにはプロセス1の情報が保持されていることから、レジスタグループBを退避対象に決定する。
通常であれば、計算機10は、候補レジスタであるレジスタグループCまたはDに保持される情報をメモリ12に退避させた後、レジスタグループBに保持されるプロセス1の情報をレジスタグループCまたはDに退避させる。しかし、計算機10は、レジスタグループCおよびDに保持される情報が後続のプロセスで使用される情報であることを特定する。
この結果、計算機10は、候補レジスタであるレジスタグループDに記憶される情報をレジスタ内に保持しておいた方がその後に実行されるプロセス3の切替時に、切替時間を短縮できると判定する。したがって、計算機10は、退避対象であるレジスタグループBの情報をメモリ12に退避させた後、メモリ12に保持されるプロセス2の情報をレジスタグループBに復元する。
このように、計算機10は、3つ以上のプロセッサであっても、実施例1と同様に処理することができる。また、計算機10は、後続のプロセスのさらに後のプロセスの使用予定まで把握して、退避先を決定することができる。この結果、計算機10は、レジスタグループをさらに有効利用することができ、メモリアクセスの削減を実現できる。
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。
[使用予定]
上記実施例では、レジスタ使用予定やプロセススケジュールを自動的に生成する例を説明したが、これに限定されるものではない。例えば、計算機10は、プログラム開発者などが手動で生成したレジスタ使用予定やプロセススケジュールを用いることもできる。
[レジスタ]
上記実施例では、レジスタグループを用いた例で説明したが、これに限定されるものではなく、レジスタごとに実行することもできる。また、上記実施例では、FP owner機能を実行する例で説明したが、これに限定されるものではなく、通常のプロセス切替であっても同様に処理することができる。
[退避例]
上記実施例では、プロセスが切り替わったときに未使用レジスタに情報を退避する例を説明したが、さらに次のプロセスに切り替わるときにも、レジスタ退避の判定を実行することができる。例えば、プロセスの切替に伴って情報を退避させたレジスタが、次にプロセスに使用される場合には、さらに空いているレジスタまたはメモリに退避させる。
[システム]
また、図示した装置の各構成は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、任意の単位で分散または統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、切替部23が有する各処理部は任意に統合・分散することができ、検出部24が、退避部25が実行する処理をさらに実行することもできる。
また、計算機10は、プログラムを読み出して実行することでプロセス制御方法を実行する情報処理装置として動作する。つまり、計算機10は、コンパイル部21、実行部22、切替部23と同様の機能を実行するプログラムを実行する。この結果、計算機10は、コンパイル部21、実行部22、切替部23と同様の機能を実行するプロセスを実行することができる。なお、この他の実施例でいうプログラムは、計算機10によって実行されることに限定されるものではない。例えば、他のコンピュータまたはサーバがプログラムを実行する場合や、これらが協働してプログラムを実行するような場合にも、本発明を同様に適用することができる。
このプログラムは、インターネットなどのネットワークを介して配布することができる。また、このプログラムは、ハードディスク、フレキシブルディスク(FD)、CD−ROM、MO、DVDなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することができる。
10 計算機
11 入出力装置
12 メモリ
12a 構造体記憶領域
13 プロセッサ
13a 演算器
13b 整数レジスタ
13c FPUレジスタ
13d キャッシュメモリ
21 コンパイル部
22 実行部
23 切替部
24 検出部
25 退避部
26 復元部

Claims (8)

  1. プロセスが処理の実行に使用する情報を記憶する複数のレジスタと、
    第1のプロセスから第2のプロセスに切り替わる場合、前記複数のレジスタ内で、前記第2のプロセスが第2のレジスタを使用する予定がない場合には、前記第1のプロセスが使用中の第1のレジスタに記憶される情報を前記第2のレジスタに退避し、前記第2のレジスタを使用する予定がある場合には、前記第1のレジスタに記憶される情報を記憶装置に退避する退避部と
    を有することを特徴とする計算機。
  2. 前記第2のプロセスに含まれる関数の先頭アドレスと、当該関数が使用するレジスタの情報とを対応付けた予定情報を用いて、前記複数のレジスタの中から前記第2のレジスタを検出する検出部をさらに有し、
    前記退避部は、前記検出部によって前記第2のレジスタが検出された場合に、前記第1のレジスタに記憶される情報を前記第2のレジスタに退避し、前記検出部によって前記第2のレジスタが検出されない場合に、前記第1のレジスタに記憶される情報を前記記憶装置に退避することを特徴とする請求項1に記載の計算機。
  3. 前記検出部は、前記第2のプロセスの開始位置を示すプログラムカウンタに基づいて、前記予定情報から前記第2のプロセスが使用を予定する予定レジスタを抽出し、前記予定レジスタに含まれないレジスタを前記第2のレジスタとして検出することを特徴とする請求項2に記載の計算機。
  4. 各プロセスの内容が記述されるプログラムに対するコンパイル時に、関数ごとに各関数が使用するレジスタの情報を抽出して前記予定情報を生成し、前記予定情報を前記プログラムの実行バイナリデータに付加する生成部をさらに有し、
    前記検出部は、前記プログラムが実行された場合に、前記実行バイナリデータから前記予定情報を取得することを特徴とする請求項2に記載の計算機。
  5. 前記検出部は、前記第2のプロセスの後に実行される第3のプロセスに対応する前記予定情報から、前記第3のプロセスの開始位置を示すプログラムカウンタに基づいて、前記第3のプロセスが使用を予定する予定レジスタを抽出し、前記第2のプロセスに対応する前記予定レジスタのうち、前記第3のプロセスに対応する前記予定レジスタに含まれない予定レジスタを、前記第2のレジスタとして検出することを特徴とする請求項3に記載の計算機。
  6. 前記退避部は、前記第2のプロセスから前記第1のレジスタを使用する第3のプロセスに切り替わる場合、前記第3のプロセスが第3のレジスタを使用する予定がない場合には、前記第1のプロセスが使用中の第1のレジスタに記憶される情報を前記第3のレジスタに退避し、前記第3のレジスタを使用する予定がある場合には、前記第1のレジスタに記憶される情報を記憶装置に退避することを特徴とする請求項1に記載の計算機。
  7. コンピュータが、
    第1のプロセスから第2のプロセスに切り替わる場合、各プロセスが処理の実行に使用する情報を記憶する複数のレジスタ内で、前記第2のプロセスが第2のレジスタを使用する予定がない場合には、前記第1のプロセスが使用中の第1のレジスタに記憶される情報を前記第2のレジスタに退避し、
    前記第2のレジスタを使用する予定がある場合には、前記第1のレジスタに記憶される情報を記憶装置に退避する
    処理を実行することを特徴とするプロセス制御方法。
  8. コンピュータに、
    第1のプロセスから第2のプロセスに切り替わる場合、各プロセスが処理の実行に使用する情報を記憶する複数のレジスタ内で、前記第2のプロセスが第2のレジスタを使用する予定がない場合には、前記第1のプロセスが使用中の第1のレジスタに記憶される情報を前記第2のレジスタに退避し、
    前記第2のレジスタを使用する予定がある場合には、前記第1のレジスタに記憶される情報を記憶装置に退避する
    処理を実行させることを特徴とするプロセス制御プログラム。
JP2015156471A 2015-08-06 2015-08-06 計算機、プロセス制御方法およびプロセス制御プログラム Pending JP2017037370A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2015156471A JP2017037370A (ja) 2015-08-06 2015-08-06 計算機、プロセス制御方法およびプロセス制御プログラム
EP16180539.5A EP3128415B1 (en) 2015-08-06 2016-07-21 Computing device, process control method, and process control program
US15/218,106 US20170038998A1 (en) 2015-08-06 2016-07-25 Computing device, process control method, and computer-readable recording medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015156471A JP2017037370A (ja) 2015-08-06 2015-08-06 計算機、プロセス制御方法およびプロセス制御プログラム

Publications (1)

Publication Number Publication Date
JP2017037370A true JP2017037370A (ja) 2017-02-16

Family

ID=56555203

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015156471A Pending JP2017037370A (ja) 2015-08-06 2015-08-06 計算機、プロセス制御方法およびプロセス制御プログラム

Country Status (3)

Country Link
US (1) US20170038998A1 (ja)
EP (1) EP3128415B1 (ja)
JP (1) JP2017037370A (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10534719B2 (en) 2017-07-14 2020-01-14 Arm Limited Memory system for a data processing network
US10592424B2 (en) 2017-07-14 2020-03-17 Arm Limited Range-based memory system
US10565126B2 (en) 2017-07-14 2020-02-18 Arm Limited Method and apparatus for two-layer copy-on-write
US10613989B2 (en) 2017-07-14 2020-04-07 Arm Limited Fast address translation for virtual machines
US10353826B2 (en) 2017-07-14 2019-07-16 Arm Limited Method and apparatus for fast context cloning in a data processing system
US10467159B2 (en) 2017-07-14 2019-11-05 Arm Limited Memory node controller
US10489304B2 (en) 2017-07-14 2019-11-26 Arm Limited Memory address translation
US10884850B2 (en) 2018-07-24 2021-01-05 Arm Limited Fault tolerant memory system
CN110032407B (zh) * 2019-03-08 2020-12-22 创新先进技术有限公司 提升cpu并行性能的方法及装置和电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6352240A (ja) * 1986-08-22 1988-03-05 Hitachi Ltd デ−タ処理装置
JPH1011301A (ja) * 1996-06-25 1998-01-16 Masaharu Imai マルチタスク処理装置及びマルチタスク処理制御方法
JP2006092042A (ja) * 2004-09-21 2006-04-06 Sanyo Electric Co Ltd 情報処理装置及びコンテキスト切り替え方法
JP2008225710A (ja) * 2007-03-09 2008-09-25 Nec Corp コンピュータシステム及び該システムで用いられるプロセス切替え方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5008812A (en) * 1988-03-18 1991-04-16 Digital Equipment Corporation Context switching method and apparatus for use in a vector processing system
US6134653A (en) * 1998-04-22 2000-10-17 Transwitch Corp. RISC processor architecture with high performance context switching in which one context can be loaded by a co-processor while another context is being accessed by an arithmetic logic unit
US6408325B1 (en) * 1998-05-06 2002-06-18 Sun Microsystems, Inc. Context switching technique for processors with large register files
US6292888B1 (en) * 1999-01-27 2001-09-18 Clearwater Networks, Inc. Register transfer unit for electronic processor
US7117346B2 (en) 2002-05-31 2006-10-03 Freescale Semiconductor, Inc. Data processing system having multiple register contexts and method therefor
JP2008059455A (ja) 2006-09-01 2008-03-13 Kawasaki Microelectronics Kk マルチプロセッサ
JP5155336B2 (ja) 2008-01-15 2013-03-06 カーネロンシリコン株式会社 タスク処理装置
EP2972842B1 (en) * 2013-03-12 2020-05-20 Microchip Technology Incorporated Programmable cpu register hardware context swap mechanism

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6352240A (ja) * 1986-08-22 1988-03-05 Hitachi Ltd デ−タ処理装置
JPH1011301A (ja) * 1996-06-25 1998-01-16 Masaharu Imai マルチタスク処理装置及びマルチタスク処理制御方法
JP2006092042A (ja) * 2004-09-21 2006-04-06 Sanyo Electric Co Ltd 情報処理装置及びコンテキスト切り替え方法
JP2008225710A (ja) * 2007-03-09 2008-09-25 Nec Corp コンピュータシステム及び該システムで用いられるプロセス切替え方法

Also Published As

Publication number Publication date
EP3128415A2 (en) 2017-02-08
US20170038998A1 (en) 2017-02-09
EP3128415A3 (en) 2017-02-22
EP3128415B1 (en) 2017-11-29

Similar Documents

Publication Publication Date Title
JP2017037370A (ja) 計算機、プロセス制御方法およびプロセス制御プログラム
KR101025354B1 (ko) 가상 트랜잭션 메모리를 위한 글로벌 오버플로우 방법
JP4871948B2 (ja) 仮想計算機システム、仮想計算機システムにおけるハイパバイザ、及び仮想計算機システムにおけるスケジューリング方法
CN101730881B (zh) 包括多个处理器的系统以及操作该系统的方法及设备
US9043806B2 (en) Information processing device and task switching method
JP2009157542A (ja) 情報処理装置及びそのスタックポインタ更新方法
JP4873423B2 (ja) 仮想化プログラム、シミュレーション装置、仮想化方法
CN103430145A (zh) 页面错误应对机制
CN107735791B (zh) 安全模式状态的数据访问追踪
US20130311751A1 (en) System and data loading method
US8732441B2 (en) Multiprocessing system
JP2009175960A (ja) 仮想マルチプロセッサシステム
JP2007041837A (ja) 命令プリフェッチ装置及び命令プリフェッチ方法
JP4170364B2 (ja) プロセッサ
JP2014078072A (ja) 情報処理装置、情報処理方法およびプログラム
CN109960567B (zh) 半导体设备
US9058207B2 (en) Simulation apparatus, method, and computer-readable recording medium
JP4594889B2 (ja) 複数の処理装置を備えたシステム上で実行されるプログラムのトレース方法、および、複数の処理装置を備えたシステム
US20080072009A1 (en) Apparatus and method for handling interrupt disabled section and page pinning apparatus and method
JP5376042B2 (ja) マルチコアプロセッサシステム、スレッド切り替え制御方法、およびスレッド切り替え制御プログラム
US11681527B2 (en) Electronic device and multiplexing method of spatial
JP6973856B2 (ja) 情報処理装置、実行方法及びプログラムの修正方法
JP2004127154A (ja) 情報処理装置及び命令エミュレーション装置及び命令エミュレーション処理実行方法
JP3988740B2 (ja) 並列処理装置、命令再試行方法、およびプログラム
JP5577518B2 (ja) メモリ管理方法、計算機及びメモリ管理プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180413

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190123

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190205

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190408

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20190514