JP2019169081A - 情報処理装置、情報処理方法、プログラム - Google Patents

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

Info

Publication number
JP2019169081A
JP2019169081A JP2018058317A JP2018058317A JP2019169081A JP 2019169081 A JP2019169081 A JP 2019169081A JP 2018058317 A JP2018058317 A JP 2018058317A JP 2018058317 A JP2018058317 A JP 2018058317A JP 2019169081 A JP2019169081 A JP 2019169081A
Authority
JP
Japan
Prior art keywords
processor core
instruction
page fault
unit
processor
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
JP2018058317A
Other languages
English (en)
Other versions
JP6508382B1 (ja
Inventor
山田 洋平
Yohei Yamada
洋平 山田
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.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2018058317A priority Critical patent/JP6508382B1/ja
Priority to US16/361,336 priority patent/US11055132B2/en
Application granted granted Critical
Publication of JP6508382B1 publication Critical patent/JP6508382B1/ja
Publication of JP2019169081A publication Critical patent/JP2019169081A/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/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1008Correctness of operation, e.g. memory ordering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1056Simplification

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Mathematical Physics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

【課題】ベクトルプロセッサなどの並列演算を行うプロセッサにおいて、再開可能なページフォルトを実装することが難しいという課題を解決すること。【解決手段】オペレーティングシステムが組み込まれた第1のプロセッサコアと、第1のプロセッサコアにより制御され、並列演算処理を実行可能な第2のプロセッサコアと、を有し、第2のプロセッサコアは、ページフォルトを検出すると、新たな命令発行を停止し、発行済み未完了な命令を再開可能な状態として静止するとともに、ページフォルトを検出した旨の通知を第1のプロセッサコアに対して送信するよう構成され、第1のプロセッサコアは、通知の受信に応じて、ページフォルトが許容可能であるか否か判断する許容性判断部と、許容性判断部による判断の結果に応じて、第2のプロセッサコアが有するページテーブルを更新するページテーブル更新部と、許容性判断部による判断の結果に応じた指示を前記第2のプロセッサコアに対して送信する指示部と、を有する。【選択図】図8

Description

本発明は、情報処理装置、情報処理方法、プログラムに関する。
命令を同時に複数のデータに適用して並列処理を行うベクトル演算など、並列演算や大規模演算を行うことが可能なプロセッサが知られている。
例えば、上記のような並列処理を実行する演算装置に関する技術として、特許文献1がある。特許文献1には、単一の命令を実行中に例外の発生を検出すると、例外を配信する前に、保留されているトラップ又は割込を例外ハンドラに配信する演算実行部を有するプロセッサが記載されている。
国際公開第2011/102294号
上記のような並列演算、大規模演算を行うプロセッサにおいて、再開可能なページフォルトを実装しようとすると、メモリにアクセスする全ての命令に対して、その命令がページフォルトを発生させるか否かを確定するまで、それより後続の命令の実行を保留するか、キャンセル可能な状態で実行することが必要になる。しかしながら、並列演算、大規模演算を行うプロセッサの場合、1つのベクトル命令が操作するデータの容量が大きい。そのため、命令をキャンセル可能な状態で実行するためには、大きなサイズの過渡的な情報を保持しなければならない、という問題があった。
また、並列処理であるベクトル演算を行うプロセッサの実行効率を上げるためには、多数の命令を先行して実行させる必要がある。そのため、ある時点での発行済みで未完了な命令の数(インフライト命令数)が多くなりがちである。その結果、ベクトル演算を行うプロセッサにおいては、ある命令のページフォルトの発生有無が確定するまでにキャンセル可能な状態で実行しなければならない後続命令の数が大きくなる可能性があり、この面からも過渡状態で保持しなければならないデータのサイズが増大する、という問題があった。
また、上記のような問題は、ベクトルプロセッサにおいて実行されるベクトルギャザー/スキャタ命令を実行する際には特に顕著となる。これは、ベクトルギャザー/スキャタ命令では、ページフォルトが判明するタイミングが遅いためである。
以上のような理由により、プロセッサの中には、再開可能なページフォルトを実装することが難しいものがあった。このようなプロセッサの場合、未割り当てページアクセス、権限外アクセス等のページフォルトを検出可能ではあるものの、再開可能ではなく、ページフォルトを発生させたプロセスはそのまま終了させるしかなかった。
そこで、本発明の目的は、再開可能なページフォルトを実現することが難しいプロセッサがある、という問題を解決する情報処理装置、情報処理方法、プログラムを提供することにある。
かかる目的を達成するため本発明の一形態である情報処理装置は、
オペレーティングシステムが組み込まれた第1のプロセッサコアと、前記第1のプロセッサコアにより制御され、並列演算処理を実行可能な第2のプロセッサコアと、を有し、
前記第2のプロセッサコアは、ページフォルトを検出すると、新たな命令発行を停止し、発行済み未完了な命令を再開可能な状態として静止するとともに、ページフォルトを検出した旨の通知を前記第1のプロセッサコアに対して送信するよう構成され、
前記第1のプロセッサコアは、
前記通知の受信に応じて、ページフォルトが許容可能であるか否か判断する許容性判断部と、
前記許容性判断部による判断の結果に応じて、前記第2のプロセッサコアが有するページテーブルを更新するページテーブル更新部と、
前記許容性判断部による判断の結果に応じた指示を前記第2のプロセッサコアに対して送信する指示部と、
を有する
という構成をとる。
また、本発明の他の形態である情報処理方法は、
オペレーティングシステムが組み込まれた第1のプロセッサコアと、前記第1のプロセッサコアにより制御され、並列演算処理を実行可能な第2のプロセッサコアと、を有する情報処理装置により行われる情報処理方法であって、
前記第2のプロセッサコアは、ページフォルトを検出すると、新たな命令発行を停止し、発行済み未完了な命令を再開可能な状態として静止するとともに、ページフォルトを検出した旨の通知を前記第1のプロセッサコアに対して送信し、
前記第1のプロセッサコアは、
前記通知の受信に応じて、ページフォルトが許容可能であるか否か判断し、
判断の結果に応じて、前記第2のプロセッサコアが有するページテーブルを更新し、
判断の結果に応じた指示を前記第2のプロセッサコアに対して送信する
という構成をとる。
また、本発明の他の形態であるプログラムは、
オペレーティングシステムが組み込まれた第1のプロセッサコアと、前記第1のプロセッサコアにより制御され、並列演算処理を実行可能な第2のプロセッサコアと、を有する情報処理装置のうち、
前記第2のプロセッサコアに、ページフォルトを検出すると、新たな命令発行を停止し、発行済み未完了な命令を再開可能な状態として静止するとともに、ページフォルトを検出した旨の通知を前記第1のプロセッサコアに対して送信する処理を実現させ、
前記第1のプロセッサコアに、
前記通知の受信に応じて、ページフォルトが許容可能であるか否か判断する許容性判断部と、
前記許容性判断部による判断の結果に応じて、前記第2のプロセッサコアが有するページテーブルを更新するページテーブル更新部と、
前記許容性判断部による判断の結果に応じた指示を前記第2のプロセッサコアに対して送信する指示部と、
を実現させるためのプログラムである。
本発明は、以上のように構成されることにより、再開可能なページフォルトを実現することが難しいプロセッサがある、という問題を解決する情報処理装置、情報処理方法、プログラムを提供することが可能となる。
本発明の第1の実施形態にかかるホストサーバの構成の一例を示すブロック図である。 図1で示す制御コアの機能の一例を示すブロック図である。 図1で示す計算コアの構成の一例を示すブロック図である。 図3で示すスカラ処理部の構成の一例を示すブロック図である。 図4で示す状態制御レジスタを説明するための図である。 図3で示すベクトル処理部の構成の一例を示すブロック図である。 図3で示すアドレス処理部の構成の一例を示すブロック図である。 第1の実施形態において、ページフォルトを検出した際の制御コアと計算コアの動作の一例を示すシーケンス図である。 本発明の第2の実施形態にかかる情報処理装置の構成の一例を示すブロック図である。 本発明の第3の実施形態にかかる状態制御レジスタを説明するための図である。 第3の実施形態において、ページフォルトを検出した際の制御コアと計算コアの動作の一例を示すシーケンス図である。 第4の実施形態における第1のプロセッサコアと第2のプロセッサコアの構成の一例を示すブロック図である。
[第1の実施形態]
本発明の第1の実施形態を図1から図8を参照して説明する。図1は、ホストサーバ1の構成の一例を示すブロック図である。図2は、制御コア21の機能の一例を示すブロック図である。図3は、計算コア51の構成の一例を示すブロック図である。図4は、スカラ処理部511の構成の一例を示すブロック図である。図5は、状態制御レジスタ5111を説明するための図である。図6は、ベクトル処理部512の構成の一例を示すブロック図である。図7は、アドレス処理部513の構成の一例を示すブロック図である。図8は、ページフォルトを検出した際の制御コア21と計算コア51の動作の一例を示すシーケンス図である。
第1の実施形態では、アプリケーションを実行するベクトルプロセッサ5を有するホストサーバ1について説明する。後述するように、本実施形態においては、OS機能を提供する制御プロセッサであるホストプロセッサ2と、実際に計算を行うベクトルプロセッサ5と、を分離したアーキテクチャを採用する。また、本実施形態におけるベクトルプロセッサ5は、ページテーブル5131内に変換対象の論理アドレスに対応するエントリが存在しない、またはエントリは存在するが必要なアクセス権限が与えられていない等の理由によるページフォルトを検出すると、コンテキストの内容が確定していない過渡状態で仕掛かり中の命令を中断または一旦キャンセルする。そして、ベクトルプロセッサ5は、ページフォルトが発生した旨をホストプロセッサ2に通知する。また、ホストプロセッサ2は、上記通知を受信すると、例えば、ベクトルプロセッサ5にアクセスして、ページフォルトを発生させたアクセス先アドレスを確認する。そして、ホストプロセッサ2は、確認の結果に基づいてアクセスが許容されるものであるか否か確認した後、ページフォルトを解消するための情報をページテーブル5131に書き込む。その後、ホストプロセッサ2は、ベクトルプロセッサ5に対して命令の実行再開を指示する。これにより、ベクトルプロセッサ5は、ページフォルトが解消した状態で命令を再開する。
図1は、第1のプロセッサコアである制御コア21と第2のプロセッサコアである計算コア51とが組み合わされたアーキテクチャを有する情報処理装置であるホストサーバ1の構成の一例を示している。図1を参照すると、ホストサーバ1は、ホストプロセッサ2と、主にホストプロセッサ2が使用するメモリ3と、を有している。また、ホストプロセッサ2には拡張バスを通じて拡張カード4が接続されている。拡張カード4は、ベクトルプロセッサ5と、主にベクトルプロセッサ5が用いるメモリ6と、を有している。
また、ホストプロセッサ2とベクトルプロセッサ5はコアを有している。ホストプロセッサ2が有するコアは、OS機能を提供する制御コア21として動作する。また、ベクトルプロセッサ5が有するコアは、アプリケーションを実行する計算コア51として動作する。
なお、ホストサーバ1の構成は、図1で例示する場合に限定されない。例えば、ホストサーバ1は、複数のホストプロセッサ2や複数の拡張カード4を有しても構わない。また、1つの拡張カード4が複数の計算コア51を有しても構わない。
ホストプロセッサ2内の制御コア21では、ベクトルプロセッサ5内の計算コア51で動作するプログラムに対してオペレーティングシステムの機能を提供するソフトウェア(以下、単にOS(Operating System)と称する)が動作する。例えば、制御コア21は、図示しない演算装置と記憶装置とを有している。例えば、制御コア21は、図示しない記憶装置に格納されたプログラムを上記演算装置が実行することで、上記オペレーティングシステムの機能を提供するソフトウェアの動作を実現する。
制御コア21が提供するオペレーティングシステムの機能には、例えば、プログラムのロード、コンテキストスイッチ等のプロセス管理、メモリ管理、システムコール機能の提供などが含まれる。例えば、制御コア21は、拡張バスおよび後述するレジスタアクセスI/F(interface)を通じて計算コア51内の各種レジスタまたは、メモリ6へのデータの読み書きを行ったり、計算コア51に対する動作開始指示または停止指示を行ったりすることで、上記各種機能の提供を実現する。
また、制御コア21が提供するオペレーティングシステムの機能には、計算コア51で検出されたページフォルトを解消するための処理を実行する機能が含まれる。図2は、上記機能の一例を示している。図2を参照すると、制御コア21で実行するオペレーティングシステムには、上記機能を実現するための処理部として、例えば、許容性判断部211と、ページテーブル更新部212と、指示部213と、が含まれている。
許容性判断部211は、割り込みの原因がページフォルトであるか否か確認するとともに、割り込みの原因がページフォルトであった場合、ページフォルトの原因となるアクセスが許容されうるものであるか否かを判断する。
例えば、ホストプロセッサ2がベクトルプロセッサ5から割り込み信号を受信すると、許容性判断部211は、拡張バスおよび図3で示すレジスタアクセスI/Fを通じて、後述する状態制御レジスタ5111およびフォルトアドレス5132の値を読み出す。これにより、許容性判断部211は、計算コア51からページフォルト情報を取得する。
許容性判断部211は、状態制御レジスタ5111のうち、ページフォルトの発生を示すFフィールドを確認する。例えば、許容性判断部211は、状態制御レジスタ5111のうちFフィールドが1である場合、割り込みの原因がページフォルトであると認知する。一方、状態制御レジスタ5111のうちFフィールドが0である場合、割り込みの原因がページフォルトでないと認知する。
また、許容性判断部211は、割り込みの原因がページフォルトであった場合、フォルトアドレス5132の値に基づいて、ページフォルトの原因となるアクセスが許容されうるものであるか否かを判断する。例えば、許容性判断部211は、ページフォルトの原因がデマンドページングに基づく物理アドレス未割り当てページへのアクセスであった場合、許容可能なアクセスであると判断する。一方、許容性判断部211は、ページフォルトの原因が未割り当て論理アドレスへのアクセスなどであった場合、許容されないアクセスであると判断する。
以上のように、許容性判断部211は、状態制御レジスタ5111およびフォルトアドレス5132を確認することで、割り込みの原因がページフォルトであるか否か確認するとともに、ページフォルトの原因となるアクセスが許容されうるものであるか否かを判断する。
ページテーブル更新部212は、許容性判断部211が許容可能なアクセスであると判断した場合に、計算コア51が有するページテーブル5131の更新を行う。例えば、ページテーブル更新部212は、ページフォルトが解消されるように、論理アドレスと対応する物理アドレスの情報などをページテーブル5131に書き込むことで、ページテーブル5131の更新を行う。
指示部213は、許容性判断部211の判断結果に応じた処理を行うよう計算コア51に指示する。例えば、指示部213は、許容性判断部211が許容可能なアクセスであると判断した場合、ページテーブル更新部212によるページテーブル5131の更新の後、計算コア51に対して実行開始指示(再開指示)を送信する。これにより、計算コア51は中断していた処理を再開する。一方、許容性判断部211が許容可能なアクセスでないと判断した場合、指示部213は、計算コア51で実行中のプロセスを終了するよう計算コア51に対して指示する。
計算コア51は、アプリケーションを実行するとともに、必要に応じてホストプロセッサ2に対して割り込みを上げる。また、計算コア51は、ページフォルトを検出すると、コンテキストの内容が確定していない過渡状態で停止することが出来るよう構成されている。図3は、計算コア51の構成の一例を示している。図3を参照すると、計算コア51は、例えば、スカラ処理部511と、ベクトル処理部512と、アドレス処理部513と、を有する。なお、上記各処理部は、例えば、ハードウェアで実現できる。上記各処理部が実行する機能などは、図示しない記憶装置に格納されたプログラムを演算装置が実行することで実現しても構わない。
スカラ処理部511は命令カウンタ5112やスカラレジスタ5113を有する。スカラ処理部511は、命令のフェッチ、デコード、スケジューリング、及び一部命令の実行を行う。また、スカラ処理部511は、アドレス処理部513やベクトル処理部512に各種命令を発行するためのインタフェースをもつ。さらに、スカラ処理部511は、計算コア51全体の動作状態を管理するための状態制御レジスタ5111を備える。
ベクトル処理部512は、ベクトルデータを保持するベクトルレジスタ5121を有する。ベクトル処理部512は、スカラ処理部511からの指示に基づいて、演算等の各種処理を行う。また、ベクトル処理部512は、インタフェースを通じて、アドレス処理部513とベクトルロード/ストアデータの送受信を行う。
アドレス処理部513は、ページテーブル5131およびフォルトアドレス5132を有する。アドレス処理部513は、ベクトルロード/ストア命令のアドレス計算や仮想アドレスから物理アドレスへのアドレス変換、およびスカラ処理部511やベクトル処理部512とメモリI/Fの間のデータ転送を行う。
なお、スカラ処理部511、ベクトル処理部512、アドレス処理部513が有する各種レジスタにはアドレスが割り振られている。スカラ処理部511、ベクトル処理部512、アドレス処理部513が有する各種レジスタには、レジスタアクセスI/Fを介して読み書きを行うことが出来る。また、レジスタアクセスI/Fは図1で示す拡張バスに接続している。このような構成により、スカラ処理部511、ベクトル処理部512、アドレス処理部513が有する各種レジスタには、ホストプロセッサ2から任意のアクセスを行うことも出来る。
続いて、スカラ処理部511、ベクトル処理部512、アドレス処理部513のより詳細な構成の一例について、図4から図7までを参照して説明する。
まず、スカラ処理部511の詳細な構成の一例について説明する。図4は、スカラ処理部511のより詳細な構成の一例を示している。図4を参照すると、スカラ処理部511は、上述した状態制御レジスタ5111、命令カウンタ5112、スカラレジスタ5113を有するとともに、例えば、フェッチ処理部5114と、デコード処理部5115と、スケジューラー5116と、実行部5117と、を有している。
状態制御レジスタ5111は、計算コア51全体の動作状態を管理するための一時記憶装置である。図5は、状態制御レジスタ5111の構成の一例を示している。図5を参照すると、状態制御レジスタ5111は、プロセッサの実行状態(動作中、停止中)を示すStateフィールドと、ページフォルトの発生を示すFフィールドを有する。このように、状態制御レジスタ5111は、プロセッサの実行状態を示す情報を有するとともに、ページフォルトの発生有無を示す情報を有している。また、命令カウンタ5112は、次に実行する命令が格納されたメモリ6上のアドレスを保存している。命令カウンタ5112は、フェッチ処理部5114により参照される。また、スカラレジスタ5113には、実行部5117による処理の過程で読み書きが必要となるデータが格納される。
フェッチ処理部5114およびデコード処理部5115はそれぞれ命令のフェッチおよびデコードを行う。例えば、フェッチ処理部5114は、命令カウンタ5112を参照して、次に実行すべき命令のデータをロードする。また、デコード処理部5115は、フェッチ処理部5114がフェッチした命令を解釈して、独自形式の内部命令に変換したり、複数の内部命令に分割したりする。そして、デコード処理部5115は、デコードした結果をスケジューラー5116に引き渡す。
スケジューラー5116は、デコード処理部5115によるデコード後の命令の依存関係を解釈する。そして、スケジューラー5116は、実行部5117の空き状況を考慮しながら、実行可能な命令の実行を実行部5117に指示する。
実行部5117は、スケジューラー5116からの指示に基づいて、各種演算、メモリアクセス命令のアドレス処理部513への発行、ベクトル命令のベクトル処理部512への発行等を行う。また、実行部5117は、上記各処理を実行する過程で、スカラレジスタ5113の読み書きを行う。
次に、ベクトル処理部512の詳細な構成の一例について説明する。図6は、ベクトル処理部512のより詳細な構成の一例を示している。図6を参照すると、ベクトル処理部512は、上述したベクトルレジスタ5121を有するとともに、例えば、命令バッファ5122と、スケジューラー5123と、実行部5124と、を有する。
ベクトルレジスタ5121には、実行部5124が各種処理を実行する過程で読み書きする各種データが格納される。
命令バッファ5122は、はスカラ処理部511から発行された命令を一旦格納するバッファである。命令バッファ5122に格納された情報は、例えば、命令の実行完了が保証されるまで保持される。
スケジューラー5123は、命令バッファ5122に格納された各命令の依存関係を解釈する。そして、スケジューラー5123は、実行部5124の空き状況を考慮しながら、実行可能な命令の実行を実行部5124に指示する。なお、命令間の依存関係がない限り、実行指示は必ずしも命令の入力順に行われなくてよい。また、スケジューラー5123は、実行部5124に対する指示を行うと同時に、該当する命令を命令バッファ5122から削除することが出来る。
実行部5124は、スケジューラー5123からの指示に基づいて各種演算、アドレス情報のアドレス処理部513への発行等を行う。また、実行部5124は、上記各処理を実行する過程で、ベクトルレジスタ5121の読み書きを行う。
続いて、アドレス処理部513の詳細な構成の一例について説明する。図7は、アドレス処理部513のより詳細な構成の一例を示している。図7を参照すると、アドレス処理部513は、上述したページテーブル5131、フォルトアドレス5132を有するとともに、例えば、命令バッファ5133と、スケジューラー5134と、アドレス計算部5135と、アドレス変換部5136と、メモリリクエスト発行部5137と、を有する。
ページテーブル5131は、仮想アドレスと物理アドレスとを対応付けたエントリを複数有している。ページテーブル5131に格納された情報は、アドレス変換部5136などにより参照される。また、フォルトアドレス5132は、ページフォルトが発生したアドレスを記憶するレジスタである。フォルトアドレス5132には、アドレス変換部5136がページフォルトを検出した際に、アドレス変換部5136により、ページフォルトを発生させたアクセス先アドレスを示す情報が格納される。
命令バッファ5133は、スカラ処理部から発行された命令を一旦格納するバッファである。命令バッファ5133に格納された情報は、例えば、命令の実行完了が保証されるまで保持される。
スケジューラー5134は、命令バッファ5133に格納された各命令の依存関係を解釈する。そして、スケジューラー5134は、アドレス計算部5135の空き状況を考慮しながら、実行可能な命令の処理をアドレス計算部5135に指示する。なお、命令間の依存関係がない限り、実行指示は必ずしも命令の入力順に行われなくてよい。また、スケジューラー5134は、アドレス計算部5135に対する指示を行うと同時に、該当する命令を命令バッファ5133から削除することが出来る。
アドレス計算部5135は、スケジューラー5134からの指示に応じて、必要な場合、アドレスの計算を行う。例えば、アドレス計算部5135は、スケジューラー5134からの指示がベクトルロード/ストア命令であった場合、指示された命令に附随する各種情報から実際にアクセスを行うアドレスを計算する。
例えば、アドレス計算部5135は、ベクトルロード/ストア命令に対して、命令に付随するベースアドレス、ディスタンスアドレス、ベクトル長等から実際にアクセスを行うアドレスを計算する。なお、スケジューラー5134からの指示がスカラロード/ストア命令であった場合、アクセス先のアドレスは既に命令の情報に含まれている。そのため、アドレス計算部5135は、特に新たな計算をする必要はない。また、スケジューラー5134からの指示がベクトルギャザー/スキャタ命令であった場合、アドレス計算部5135は、ベクトル処理部I/Fを通じて、アクセス先のアドレスをベクトル処理部512から受け取る。
アドレス変換部5136は、ページテーブル5131を参照して、アドレス計算部5135で求められたアクセス先の論理アドレスを物理アドレスに変換する。
また、アドレス変換部5136は、上記変換を行う際に、ページフォルトを検出する。例えば、アドレス変換部5136は、ページテーブル5131内に変換対象の論理アドレスに対応するエントリが存在しなかった場合や、エントリの属性により権限外のアクセスを試みようとしていると判断される場合、ページフォルトを検出する。このように、アドレス変換部5136は、物理アドレス未割り当てや権限外アクセスといったページフォルト要因を検出するページフォルト検出手段としても機能する。
また、ページフォルトを検出した場合、アドレス変換部5136は、ページフォルトを発生させたアクセス先アドレスをフォルトアドレス5132に格納する。そして、アドレス変換部5136は、アドレス処理部513の各処理部およびスカラ処理部511、ベクトル処理部512にページフォルトを検出したことを通知する。以下、この通知をページフォルト通知と呼ぶ。
メモリリクエスト発行部5137は、アドレス変換部5136によるアドレスの変換が成功した場合、つまり、ページフォルトが検出されなかった場合、アクセス先の物理アドレスやアクセス先までのルーティング情報等をメモリアクセスリクエストの形式に整形する。そして、メモリリクエスト発行部5137は、整形した情報をメモリI/Fに発行する。
以上が、スカラ処理部511、ベクトル処理部512、アドレス処理部513のより詳細な構成の一例である。続いて、上述した各構成を有する計算コア51においてアプリケーションプログラムを動作させる際の動作の一例について説明する。
まず、初期状態として、ベクトルプロセッサ5内の計算コア51が有する状態制御レジスタ5111のStateフィールドの値は「停止中」を示すものであるとする。また、Fフィールドの値は0とする。
ユーザがホストプロセッサ2の制御コア21で動作するOSに対して、アプリケーションプログラムの実行開始を指示する。すると、OSは、各種レジスタの初期値イメージ及びメモリの実行イメージを生成する。そして、OSは、拡張バスを通じて、生成したイメージをベクトルプロセッサ5内の計算コア51およびメモリ6に書き込む。
その後、OSがあらかじめ定められた特定のアドレスへの書き込み等を通じて計算コア51に実行開始指示を行う。これにより、計算コア51は、状態制御レジスタ5111のStateフィールドを「実行中」を表す値に更新し、動作を開始する。
続いて、アプリケーションプログラムの実行中の計算コア51の動作の一例について説明する。
計算コア51が動作を開始すると、スカラ処理部511内のフェッチ処理部5114は命令カウンタ5112を参照する。そして、フェッチ処理部5114は、次に実行すべき命令のデータをロードする。
デコード処理部305は、フェッチ処理部5114がロードした命令を解釈して、独自形式の内部命令に変換したり、複数の内部命令に分割したりする。そして、デコード処理部305は、その結果をスケジューラー5116に引き渡す。
スケジューラー5116は、デコード処理部305によるデコード後の内部命令の依存関係を解釈する。そして、スケジューラー5116は、実行部5117の空き状況を考慮しながら、実行可能な命令の実行を実行部5117に指示する。
実行部5117は、スケジューラー5116からの指示に基づいて各種演算、メモリアクセス命令のアドレス処理部513への発行、ベクトル命令のベクトル処理部512への発行等を行う。また、実行部5117は、上記処理を実行する過程で、スカラレジスタ5113の読み書きを行う。
ベクトル処理部512内はスカラ処理部511から発行された命令を受け取ると、一旦それを命令バッファ5122に格納する。命令バッファ5122に格納された情報は命令の実行完了が保証されるまで、保持される。
スケジューラー5123は、命令バッファ5122に登録された各命令の依存関係を解釈する。そして、スケジューラー5123は、実行部5124の空き状況を考慮しながら、実行可能な命令の実行を実行部5124に指示する。この際、命令間の依存関係がない限り、実行指示は必ずしも命令の入力順に行われなくてよい。また、スケジューラー5123は、上記指示と同時に該当する命令を命令バッファ5122から削除することが出来る。
実行部5124は、スケジューラー5123からの指示に基づいて各種演算、アドレス情報のアドレス処理部への発行等を行う。実行部5124は、上記処理を実行する過程で、ベクトルレジスタ5121の読み書きを行う。
また、アドレス処理部513は、スカラ処理部511から発行された命令を受け取ると、一旦それを命令バッファ5133に格納する。命令バッファ5133に格納された情報は命令の実行完了が保証されるまで、保持される。
スケジューラー5134は、命令バッファ5133に格納された各命令の依存関係を解釈する。そして、スケジューラー5134は、アドレス計算部5135の空き状況を考慮しながら、実行可能な命令の処理をアドレス計算部5135に指示する。この際、命令間の依存関係がない限り、実行指示は必ずしも命令の入力順に行われなくてよい。また、スケジューラー5134は、上記指示と同時に該当する命令を命令バッファ5133から削除することが出来る。
アドレス計算部5135は、スケジューラー5134からの指示がベクトルロード/ストア命令であった場合、命令に付随するベースアドレス、ディスタンスアドレス、ベクトル長等から実際にアクセスを行うアドレスを計算する。なお、スケジューラー5134からの指示がスカラロード/ストア命令であった場合はアクセス先のアドレスは既に命令の情報に含まれている。そのため、特に計算する必要はない。また、スケジューラー5134からの指示がベクトルギャザー/スキャタ命令であった場合、アドレス計算部5135は、ベクトル処理部I/Fを通じて、アクセス先のアドレスをベクトル処理部512から受け取る。
アドレス変換部5136は、ページテーブル5131を参照する。そして、アドレス変換部5136は、アドレス計算部5135で求められたアクセス先の論理アドレスを物理アドレスに変換する。この際、ページテーブル5131内に変換対象の論理アドレスに対応するエントリが存在しなかった場合、又は、エントリの属性により権限外のアクセスを試みようとしていた場合、アドレス変換部5136は、ページフォルトを検出する。
ページフォルトが検出されず、アドレス変換部5136によるアドレス変換に成功した場合には、メモリリクエスト発行部5137は、アクセス先の物理アドレスやアクセス先までのルーティング情報等をメモリアクセスリクエストの形式に整形する。そして、メモリリクエスト発行部5137は、整形した情報をメモリI/Fに発行する。
次に、計算コア51でアプリケーションプログラムの実行中にページフォルトが発生したことをアドレス変換部5136が検出した場合の動作の一例について説明する。本動作の説明は、図8を参照しつつ行う。
上述したように、ページフォルトは、アドレス処理部513内のアドレス変換部5136によって検出される(図8のページフォルト検出)。例えば、アドレス変換部5136は、ページテーブル5131内に変換対象の論理アドレスに対応するエントリが存在しなかった場合やエントリの属性により権限外のアクセスを試みようとしていた場合にページフォルトを検出する。
ページフォルトを検出すると、アドレス変換部5136は、動作を停止すると共にページフォルトを発生させたアクセス先アドレスをフォルトアドレス5132に保存する。また、アドレス変換部5136は、アドレス処理部513の各処理部およびスカラ処理部511、ベクトル処理部512にページフォルトを検出したことを通知する。つまり、アドレス変換部5136は、アドレス処理部513内の各処理部、スカラ処理部511、ベクトル処理部512にページフォルト通知を通知する。なお、この際、アドレス処理部513は、ページフォルトを発生させた命令の情報を再開可能な状態で保持し続けるものとする。
ページフォルト通知を受信すると、命令バッファ5133は、それ以後の命令発行を停止する。また、スケジューラー5134およびアドレス計算部5135は、アドレス変換部5136と同様に動作を停止して、処理中の命令および各種制御情報を再開可能な状態で保持し続ける。アドレス処理部513内の全ての処理部の停止が確認された後、アドレス処理部513は、スカラ処理部511に停止通知を送信する。なお、停止後もベクトル処理部I/Fよりアドレス情報が入力され続ける可能性がある。この情報は、処理の再開時に使用できるようアドレス計算部5135内で保持する。
ベクトル処理部512は、ページフォルト通知を受信すると、命令バッファ5122およびスケジューラー5123からの新たな命令発行を停止する。その後、ベクトル処理部512は、実行部5124で実行中の全ての命令の処理が完了するのを待つ。そして、実行部5124で実行中の全ての処理が完了した後、ベクトル処理部512は、スカラ処理部511に停止通知を送信する。
スカラ処理部511は、ページフォルト通知を受信すると、フェッチ処理部5114、デコード処理部5115、およびスケジューラー5116からの新たな命令発行を停止する。また、スカラ処理部511は、状態制御レジスタ5111のFフィールドの値を1とする。その後、スカラ処理部511は、実行部5117で実行中の全ての命令の処理が完了するのを待つ。
アドレス処理部513およびベクトル処理部512からの停止通知を受信するとともに、実行部5117で実行中の全ての命令の処理が完了することで、スカラ処理部511は、計算コア51内の全ての構成要素が静止していることを確認する。すると、スカラ処理部511は、状態制御レジスタ5111のStateフィールドの値を「停止中」を示す値に変更する。そして、スカラ処理部511は、ホストプロセッサ2に対して割り込み信号を送出する。つまり、スカラ処理部511は、図8で示すコア静止(計算コア51が有する各構成が静止していること)を確認した後、ホストプロセッサ2の制御コア21に対してページフォルト通知を送信する。
なお、上記静止している状態では、計算コア51は静止しているもの、発行済みで未完了の命令が残っている。つまり、コンテキストの値は定まっていない状態である。
また、以上説明したように、計算コア51の静止は、ページフォルトの検出後即座でなくて構わない。計算コア51は、例えば、一部発行済み命令の実行完了やメモリ等からのリプライの到着を待ったり、再開に必要な情報の保存等の処理を行ったりした後で静止することが出来る。
ホストプロセッサ2が割り込み信号を受信すると、ホストプロセッサ2内で動作しているOSの許容性判断部211は、拡張バスおよびレジスタアクセスI/Fを通じて状態制御レジスタ5111およびフォルトアドレス5132の値を読み出す。つまり、制御コア21の許容性判断部211は、図8で示すページフォルト情報取得処理を実行する。
OSの許容性判断部211は、状態制御レジスタ5111のうちFフィールドが1であることから、割り込みの原因がページフォルトであることを認知する。続いて、許容性判断部211は、フォルトアドレス5132より取得したアドレスへのアクセスが許容されうるものであるか否かを判断する。
例えば、ページフォルトの原因がデマンドページングに基づく物理アドレス未割り当てページへのアクセスであった場合など、許容されるべきものであった場合、許容性判断部211は、許容可能なアクセスであると判断する。この場合、ページテーブル更新部212は、ページフォルトが解消されるように、適切な情報をページテーブル5131に書き込む。つまり、ページテーブル更新部212は、図8で示すページテーブル更新処理を実行する。その後、OSの指示部213は、計算コア51に実行開始指示(図8中の再開指示)を行う。
一方、ページフォルトの原因が未割り当て論理アドレスへのアクセス等許容されないものであった場合には、許容性判断部211は、許容可能なアクセスでないと判断する。この場合、指示部213は、計算コア51で実行中のプロセスを終了するよう、計算コア51に指示する。
実行開始指示を受信すると、計算コア51は、状態制御レジスタ5111のFフィールドの値を0とすると共にStateフィールドを「実行中」を表す値に更新する。そして、計算コア51は、動作を再開する。動作再開時、スカラ処理部511、ベクトル処理部512、アドレス処理部513内のそれぞれ停止していた処理部は保持していた情報をもとに動作を再開する。また、スカラ処理部511、ベクトル処理部512、アドレス処理部513内の新規命令発行を停止していた処理部は新規命令発行を再開する。
以上が、計算コア51でアプリケーションプログラムの実行中にページフォルトが発生したことをアドレス変換部5136が検出した場合の動作の一例である。
このように、本実施形態におけるホストサーバ1は、制御コア21と計算コア51とを分離したアーキテクチャを採用している。また、計算コア51は、ページフォルトを検出すると、発行済み未完了の命令が残ったままのコンテキストの内容が確定していない過渡状態で停止することが出来るよう構成されているさらに、制御コア21は、許容性判断部211とページテーブル更新部212と指示部213とを有している。このような構成により、許容性判断部211による判断の結果、許容可能なアクセスによりページフォルトが生じていると判断される場合、ページテーブル更新部212により計算コア51のページテーブル5131を更新した後、指示部213により実行開始指示を行うことが出来る。これにより、計算コア51は、中断したアプリケーションの実行を不整合なく再開させることが可能となる。つまり、上記構成によると、ベクトルプロセッサ5などの従来再開可能なページフォルトの実装が困難であったプロセッサに対しても、再開可能なページフォルトを実現することが可能となる。
また、本実施形態で説明した方法によると、再開可能なページフォルトを実装することが可能となるため、再開可能なページフォルトを実装しないプロセッサ上では実装困難であった、デマンドページングや動作中のプロセスに対するページスワップなども実装することが出来るようになる。これにより、物理メモリを効率的に使用できるようになる。さらには、従来必要とされていたメモリ確保時に全ての割り当て済み仮想アドレスに対して予め物理メモリを引当てる、プロセスをフォークさせる際に割り当て済みの全ての書き込み可能な領域をコピーする、全ての関数呼び出し時にスタック領域のメモリが使用可能か予め確認するといったページフォルトを発生させないようにするための処理を不要とすることが出来る。これにより、プロセッサの実行性能を向上させることができる。
なお、本実施形態においては、ベクトルプロセッサ5に再開可能なページフォルトを実装する場合について例示した。しかしながら、本発明の適用は、ベクトルプロセッサ5に限定されない。本発明は、従来再開可能なページフォルトを実装困難であったアーキテクチャを有する様々なプロセッサに適応可能である。上記のような再開可能なページフォルトの実装が困難であったプロセッサとは、例えば、アーキテクチャで定義されたレジスタのサイズが大きい、レジスタに格納された複数のアドレスに対して間接参照によるアクセスを行う命令(例えば、ギャザー命令やスキャター命令)などを行う、などの特徴を有するプロセッサである。
また、本実施形態では、ページフォルト検出時、アドレス処理部513内のスケジューラー5134、アドレス計算部5135、アドレス変換部5136は動作を停止し、処理中の命令および各種制御情報を再開可能な状態で保持し続けるものとした。しかしながら、スケジューラー5134、アドレス計算部5135、アドレス変換部5136は、処理中の命令の処理を一旦キャンセルした後、再開時に再度命令バッファ5133から未完了命令を発行しなおす方式によって、命令を再開するよう構成しても構わない。この場合、命令バッファ5133からの命令の削除を、スケジューラー5134から命令発行した段階ではなく、アドレス変換部5136にてその命令に関わる全てのアドレス変換が完了し、全てのアドレスでページフォルトが発生しないことを確認できた段階で行うよう構成する。
また、計算コア51は、命令の発行済み部分と未発行部分を識別する情報を記憶して再開時に参照できる機能を有することも出来る。上記構成を有することで、計算コア51は、ページフォルトを発生させた命令が複数のアドレスへのアクセスを引き起こすベクトル命令であって、アクセスの一部が既にメモリリクエスト発行部5137に発行されていた場合、動作再開時に発行済みアクセスを再度発行しないよう動作することが可能となる。上記のような機能は、例えば、アドレス計算部5135およびアドレス変換部5136がベクトル命令を必ずベクトル要素番号順に処理するよう構成し、発行済み部分の要素番号をアドレス処理部513が記憶しておくことによって実装可能である。
[第2の実施形態]
次に、図9を参照して、本発明の第2の実施形態について説明する。図9は、本発明の第2の実施形態にかかる情報処理装置の構成の一例を示すブロック図である。
図9を参照すると、情報処理装置は、第1の実施形態において説明したホストプロセッサ2とベクトルプロセッサ5とを有する構成に代えて、制御コア701としての管理プロセッサ700と計算コア711としての実行プロセッサ710とを有している。制御コア701としての管理プロセッサ700と計算コア711としての実行プロセッサ710とは、例えば、同一のLSI内、LSIパッケージ内、またはボード内に置かれている。
本実施形態において説明する情報処理装置のように、制御コア701と計算コア711を近傍に置き、拡張バスよりレイテンシの短い広帯域のインタフェースを用いて制御コア701と計算コア711を接続することで、両者間の通信にかかる時間を低減し、計算コア711で実行されるアプリケーションの実効性能を高めることができる。
なお、図9では、メモリ720は管理プロセッサ700および実行プロセッサ710に接続され、両者で共有されるものとした。しかしながら、メモリ720は、両者で共有していてもよいし、それぞれが独立した専用のメモリを備えていても良い。再開可能なページフォルトを実現するための動作に関しては、第一の実施形態と同じである。
[第3の実施形態]
次に、図10、図11を参照して、本発明の第3の実施形態について説明する。図10は、第3の実施形態にかかる状態制御レジスタ5111を説明するための図である。図11は、ページフォルトを検出した際の制御コア21と計算コア51の動作の一例を示すシーケンス図である。
第3の実施形態では、第1の実施形態で説明した状態制御レジスタ5111にEフィールドを追加した構成について説明する。図10で示すように、本実施形態における状態制御レジスタ5111においては、第1の実施形態で説明した構成にEフィールドが追加されている。
Eフィールドの値は、ページフォルト発生時に発行済みで未完了の命令が存在するコンテキストの値が定まっていない状態で計算コア51が停止することを許容するか否かを表している。例えば、Eフィールドの値が0の場合、コンテキストの値が定まっていない状態でコアが停止することが許容される。そのため、Eフィールドの値が0の状態でページフォルトが発生すると、第1の実施形態で説明したように、計算コア51は再開に必要な情報を保持しつつ、発行済みで未完了の命令を残したまま停止する。一方、Eフィールドの値が1の場合、コンテキストの値が定まっていない状態でコアが停止することは許されない。そのため、このような状態でページフォルトが発生した場合、スカラ処理部511内のデコード処理部5115は新規命令の発行を停止するが、その他の構成要素は動作を継続する。そして、全ての発行済み命令の実行が完了した後に、計算コア51が停止する。このように、状態制御レジスタ5111にEフィールドを設けることで、発行済みの命令の実行が全て完了した後に、計算コア51を静止させることが可能となる。
このように、状態制御レジスタ5111にEフィールドを設けることで、第1の実施形態において発生する次のような課題を解決することができる。第1の実施形態においては、ページフォルトが発生し、その原因が未割り当て論理アドレスへのアクセスなど許容されないものであった場合には計算コア51で実行中のプロセスは終了させるとした。しかしながら、終了させる時点において、ベクトル処理部512の命令バッファ5122やアドレス処理部513の命令バッファ5133などには、命令再開のための発行済み未完了命令の情報が残っている。ここで、発行済み未完了命令の情報をそのままにしておくと、計算コア51に新たなプロセスを実行させる際に、意図しない例外やメモリアクセス等を発生させる恐れがある。そのため、第1の実施形態においては、上記ベクトル処理部512やアドレス処理部513に残っている発行済み未完了命令の情報を何らかの方法で消去する必要があった。
一方、本実施形態の場合、状態制御レジスタ5111にEフィールドを設けているため、必要に応じてEフィールドを1に設定することで、容易な方法で発行済み未完了命令の情報を消去することが可能となる。
上記処理について、より詳細に図11を参照して説明する。図11は、許容されないページフォルトが発生した場合の動作の一例を示すシーケンス図である。なお、本シーケンスでは、初期状態としてEフィールドは0に設定されるとする。
図11を参照すると、計算コア51がページフォルトを検出した後、制御コア21に割り込みにより通知を行い制御コア21がページフォルトに関わる情報を計算コア51から取得する。ここまでの流れは、図8を参照して説明した第1の実施形態の場合と同様である。
その後、制御コア21が有するOSの許容性判断部211が、ページフォルトの原因が許容されないものであると判断したとする。すると、OSの指示部213は、Eフィールドを1に設定するよう指示するとともに、計算コア51に対して実行開始指示を行う。つまり、図11で示す再開指示を実行する。
実行開始指示を受信すると、計算コア51は、状態制御レジスタ5111のFフィールドの値を0とすると共にStateフィールドを「実行中」を表す値に更新する。そして、計算コア51は、動作を再開する。しかしながら、図11で示す場合、ページテーブル更新処理が行われておらず、ページフォルトは解消していない。そのため、計算コア51は、同じアドレスで再度ページフォルトを検出する。
再度のページフォルトを検出した際、Eフィールドの値は1である。そのため、計算コア51は、発行済みの命令の実行を全て完了させた後、停止する。これにより、計算コア51の各構成要素の内部には、未完了命令に関する情報が残っていない状態となる。
このように、本実施形態においては、状態制御レジスタ5111にEフィールドを設けている。また、制御コア21は、許容性判断部211がページフォルトの原因が許容されないと判断した場合、ページテーブル5131の更新を行わずにEフィールドの値を1に設定した上で実行開始指示を行うよう構成されている。このような構成により、ページフォルトの原因が許容されない場合、計算コア51に対して発行済みの命令の実行を全て完了させた後停止するよう動作させることが可能となる。これにより、容易な方法で計算コア51内の未完了命令に関する情報を削除することが可能となる。
なお、本実施形態において説明した構成は、第2の実施形態で説明した構成が有しても構わない。
[第4の実施形態]
次に、図12を参照して、本発明の第4の実施形態について説明する。第2の実施形態では、情報処理装置8の構成の概要について説明する。
図12を参照すると、情報処理装置8は、第1のプロセッサコア81と、第2のプロセッサコア82と、を有している。図12で示すように、第1のプロセッサコア81と第2のプロセッサコア82とは、互いに通信可能なよう接続されている。
第2のプロセッサコア82は、第1のプロセッサコア81により制御されてアプリケーションを実行する。第2のプロセッサコア82は、ページフォルトを検出すると、新たな命令発行を停止する。また、第2のプロセッサコア82は、発行済み未完了な命令を再開可能な状態として静止する。そして、第2のプロセッサコア82は、ページフォルトを検出した旨の通知を前記第1のプロセッサコアに対して送信する。
第1のプロセッサコア81は、オペレーティングシステムが組み込まれており、第2のプロセッサコア82を制御する。図12を参照すると、第1のプロセッサコア81は、例えば、許容性判断部811と、ページテーブル更新部812と、指示部813と、を有している。なお、第1のプロセッサコア81は、例えば、図示しない演算装置と図示しない記憶装置とを有している。例えば、第1のプロセッサコア81は、記憶装置が有するプログラムを演算装置が実行することで、上記各処理部を実現する。
許容性判断部811は、第2のプロセッサコア82からの通知の受信に応じて、ページフォルトが許容可能であるか否か判断する。
ページテーブル更新部812は、許容性判断部811による判断の結果に応じて、第2のプロセッサコア82が有するページテーブルを更新する。
指示部813は、許容性判断部811による判断の結果に応じた指示を第2のプロセッサコア82に対して送信する。
このように、本実施形態における第2のプロセッサコア82は、ページフォルトを検出すると、新たな命令発行を停止し、発行済み未完了な命令を再開可能な状態として静止するとともに、ページフォルトを検出した旨の通知を第1のプロセッサコア81に対して送信するよう構成されている。また、第1のプロセッサコア81は、許容性判断部811と、ページテーブル更新部812と、指示部813と、を有している。このような構成により、ページテーブル更新部812は、許容性判断部811による判断の結果に応じて、第2のプロセッサコア82が有するページテーブルを更新することが出来る。また、指示部813は、許容性判断部811による判断の結果に応じた指示を第2のプロセッサコア82に対して送信することが出来る。これにより、第2のプロセッサコア82は、中断したアプリケーションの実行を再開させることが可能となる。つまり、上記構成によると、第2のプロセッサコア82において、再開可能なページフォルトを実現することが可能となる。
また、上述した情報処理装置8は、当該情報処理装置8に所定のプログラムが組み込まれることで実現できる。具体的に、本発明の他の形態であるプログラムは、オペレーティングシステムが組み込まれた第1のプロセッサコアと、第1のプロセッサコアにより制御され、並列演算処理を実行可能な第2のプロセッサコアと、を有する情報処理装置のうち、第2のプロセッサコアに、ページフォルトを検出すると、新たな命令発行を停止し、発行済み未完了な命令を再開可能な状態として静止するとともに、ページフォルトを検出した旨の通知を第1のプロセッサコアに対して送信する処理を実現させ、第1のプロセッサコアに、通知の受信に応じて、ページフォルトが許容可能であるか否か判断する許容性判断部と、許容性判断部による判断の結果に応じて、第2のプロセッサコアが有するページテーブルを更新するページテーブル更新部と、許容性判断部による判断の結果に応じた指示を第2のプロセッサコアに対して送信する指示部と、を実現させるためのプログラムである。
また、上述した情報処理装置8により実行される情報処理方法は、オペレーティングシステムが組み込まれた第1のプロセッサコアと、第1のプロセッサコアにより制御され、並列演算処理を実行可能な第2のプロセッサコアと、を有する情報処理装置により行われる情報処理方法であって、第2のプロセッサコアは、ページフォルトを検出すると、新たな命令発行を停止し、発行済み未完了な命令を再開可能な状態として静止するとともに、ページフォルトを検出した旨の通知を第1のプロセッサコアに対して送信し、第1のプロセッサコアは、通知の受信に応じて、ページフォルトが許容可能であるか否か判断し、判断の結果に応じて、前記第2のプロセッサコアが有するページテーブルを更新し、判断の結果に応じた指示を前記第2のプロセッサコアに対して送信する、という方法である。
上述した構成を有する、プログラム、又は、情報処理方法、の発明であっても、上記情報処理装置8と同様の作用を有するために、上述した本発明の目的を達成することが出来る。
<付記>
上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明における情報処理装置などの概略を説明する。但し、本発明は、以下の構成に限定されない。
(付記1)
オペレーティングシステムが組み込まれた第1のプロセッサコアと、前記第1のプロセッサコアにより制御され、並列演算処理を実行可能な第2のプロセッサコアと、を有し、
前記第2のプロセッサコアは、ページフォルトを検出すると、新たな命令発行を停止し、発行済み未完了な命令を再開可能な状態として静止するとともに、ページフォルトを検出した旨の通知を前記第1のプロセッサコアに対して送信するよう構成され、
前記第1のプロセッサコアは、
前記通知の受信に応じて、ページフォルトが許容可能であるか否か判断する許容性判断部と、
前記許容性判断部による判断の結果に応じて、前記第2のプロセッサコアが有するページテーブルを更新するページテーブル更新部と、
前記許容性判断部による判断の結果に応じた指示を前記第2のプロセッサコアに対して送信する指示部と、
を有する
情報処理装置。
(付記2)
付記1に記載の情報処理装置であって、
前記第2のプロセッサコアは、ページフォルトが発生したアドレスを記憶しており、
前記第1のプロセッサコアが有する前記許容性判断部は、前記第2のプロセッサコアが記憶するページフォルトが発生したアドレスを参照することで、ページフォルトが許容可能であるか否か判断する
情報処理装置。
(付記3)
付記1又は付記2に記載の情報処理装置であって、
前記第2のプロセッサコアは、ページフォルトの発生の有無を示す情報を記憶しており、
前記第1のプロセッサコアが有する前記許容性判断部は、前記第2のプロセッサコアが記憶するページフォルトの発生の有無を示す情報に基づいてページフォルトが発生していると認知した場合に、ページフォルトが許容可能であるか否か判断する
情報処理装置。
(付記4)
付記1から付記3までのいずれか1項に記載の情報処理装置であって、
前記第2のプロセッサコアは、前記指示部からの再開指示に応じて、発行済み未完了な命令を再開する
情報処理装置。
(付記5)
付記1から付記4までのいずれか1項に記載の情報処理装置であって、
前記第2のプロセッサコアは、命令を一時的に格納する命令バッファを有しており、前記指示部からの再開指示に応じて、前記命令バッファから未完了命令の再発行を行うことで、命令の実行を再開する
情報処理装置。
(付記6)
付記1から付記5までのいずれか1項に記載の情報処理装置であって、
前記第2のプロセッサコアは、命令の発行済み部分と未発効部分を識別する情報を記憶しており、命令の実行を再開した際に、発行済みアクセスを再度行わないよう構成されている
情報処理装置。
(付記7)
付記1から付記6までのいずれか1項に記載の情報処理装置であって、
前記第2のプロセッサコアは、発行済みの未完了命令を残したまま停止するか否かを示す情報である停止状態情報を記憶しており、ページフォルトを検出した際に前記停止状態情報に基づいて停止するよう構成されている
情報処理装置。
(付記8)
付記7に記載の情報処理装置であって、
前記第1のプロセッサコアは、ページフォルトが許容可能でないと前記許容性判断部が判断した場合、前記停止状態情報を発行済みの未完了命令を残したまま停止しない旨を示すよう変更するとともに、前記ページテーブル更新部による更新を行わずに前記指示部から再開指示を行う
情報処理装置。
(付記9)
オペレーティングシステムが組み込まれた第1のプロセッサコアと、前記第1のプロセッサコアにより制御され、並列演算処理を実行可能な第2のプロセッサコアと、を有する情報処理装置により行われる情報処理方法であって、
前記第2のプロセッサコアは、ページフォルトを検出すると、新たな命令発行を停止し、発行済み未完了な命令を再開可能な状態として静止するとともに、ページフォルトを検出した旨の通知を前記第1のプロセッサコアに対して送信し、
前記第1のプロセッサコアは、
前記通知の受信に応じて、ページフォルトが許容可能であるか否か判断し、
判断の結果に応じて、前記第2のプロセッサコアが有するページテーブルを更新し、
判断の結果に応じた指示を前記第2のプロセッサコアに対して送信する
情報処理方法。
(付記10)
オペレーティングシステムが組み込まれた第1のプロセッサコアと、前記第1のプロセッサコアにより制御され、並列演算処理を実行可能な第2のプロセッサコアと、を有する情報処理装置のうち、
前記第2のプロセッサコアに、ページフォルトを検出すると、新たな命令発行を停止し、発行済み未完了な命令を再開可能な状態として静止するとともに、ページフォルトを検出した旨の通知を前記第1のプロセッサコアに対して送信する処理を実現させ、
前記第1のプロセッサコアに、
前記通知の受信に応じて、ページフォルトが許容可能であるか否か判断する許容性判断部と、
前記許容性判断部による判断の結果に応じて、前記第2のプロセッサコアが有するページテーブルを更新するページテーブル更新部と、
前記許容性判断部による判断の結果に応じた指示を前記第2のプロセッサコアに対して送信する指示部と、
を実現させるためのプログラム。
なお、上記各実施形態及び付記において記載したプログラムは、記憶装置に記憶されていたり、コンピュータが読み取り可能な記録媒体に記録されていたりする。例えば、記録媒体は、フレキシブルディスク、光ディスク、光磁気ディスク、及び、半導体メモリ等の可搬性を有する媒体である。
以上、上記各実施形態を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明の範囲内で当業者が理解しうる様々な変更をすることが出来る。
1 ホストサーバ
2 ホストプロセッサ
21 制御コア
211 許容性判断部
212 ページテーブル更新部
213 指示部
3 メモリ
4 拡張カード
5 ベクトルプロセッサ
51 計算コア
511 スカラ処理部
5111 状態制御レジスタ
5112 命令カウンタ
5113 スカラレジスタ
5114 フェッチ処理部
5115 デコード処理部
5116 スケジューラー
5117 実行部
512 ベクトル処理部
5121 ベクトルレジスタ
5122 命令バッファ
5123 スケジューラー
5124 実行部
513 アドレス処理部
5131 ページテーブル
5132 フォルトアドレス
5133 命令バッファ
5134 スケジューラー
5135 アドレス計算部
5136 アドレス変換部
5137 メモリリクエスト発行部
6 メモリ
700 管理プロセッサ
701 制御コア
710 実行プロセッサ
711 計算コア
720 メモリ
8 情報処理装置
81 第1のプロセッサコア
811 許容性判断部
812 ページテーブル更新部
813 指示部
82 第2のプロセッサコア

Claims (10)

  1. オペレーティングシステムが組み込まれた第1のプロセッサコアと、前記第1のプロセッサコアにより制御され、並列演算処理を実行可能な第2のプロセッサコアと、を有し、
    前記第2のプロセッサコアは、ページフォルトを検出すると、新たな命令発行を停止し、発行済み未完了な命令を再開可能な状態として静止するとともに、ページフォルトを検出した旨の通知を前記第1のプロセッサコアに対して送信するよう構成され、
    前記第1のプロセッサコアは、
    前記通知の受信に応じて、ページフォルトが許容可能であるか否か判断する許容性判断部と、
    前記許容性判断部による判断の結果に応じて、前記第2のプロセッサコアが有するページテーブルを更新するページテーブル更新部と、
    前記許容性判断部による判断の結果に応じた指示を前記第2のプロセッサコアに対して送信する指示部と、
    を有する
    情報処理装置。
  2. 請求項1に記載の情報処理装置であって、
    前記第2のプロセッサコアは、ページフォルトが発生したアドレスを記憶しており、
    前記第1のプロセッサコアが有する前記許容性判断部は、前記第2のプロセッサコアが記憶するページフォルトが発生したアドレスを参照することで、ページフォルトが許容可能であるか否か判断する
    情報処理装置。
  3. 請求項1又は請求項2に記載の情報処理装置であって、
    前記第2のプロセッサコアは、ページフォルトの発生の有無を示す情報を記憶しており、
    前記第1のプロセッサコアが有する前記許容性判断部は、前記第2のプロセッサコアが記憶するページフォルトの発生の有無を示す情報に基づいてページフォルトが発生していると認知した場合に、ページフォルトが許容可能であるか否か判断する
    情報処理装置。
  4. 請求項1から請求項3までのいずれか1項に記載の情報処理装置であって、
    前記第2のプロセッサコアは、前記指示部からの再開指示に応じて、発行済み未完了な命令を再開する
    情報処理装置。
  5. 請求項1から請求項4までのいずれか1項に記載の情報処理装置であって、
    前記第2のプロセッサコアは、命令を一時的に格納する命令バッファを有しており、前記指示部からの再開指示に応じて、前記命令バッファから未完了命令の再発行を行うことで、命令の実行を再開する
    情報処理装置。
  6. 請求項1から請求項5までのいずれか1項に記載の情報処理装置であって、
    前記第2のプロセッサコアは、命令の発行済み部分と未発効部分を識別する情報を記憶しており、命令の実行を再開した際に、発行済みアクセスを再度行わないよう構成されている
    情報処理装置。
  7. 請求項1から請求項6までのいずれか1項に記載の情報処理装置であって、
    前記第2のプロセッサコアは、発行済みの未完了命令を残したまま停止するか否かを示す情報である停止状態情報を記憶しており、ページフォルトを検出した際に前記停止状態情報に基づいて停止するよう構成されている
    情報処理装置。
  8. 請求項7に記載の情報処理装置であって、
    前記第1のプロセッサコアは、ページフォルトが許容可能でないと前記許容性判断部が判断した場合、前記停止状態情報を発行済みの未完了命令を残したまま停止しない旨を示すよう変更するとともに、前記ページテーブル更新部による更新を行わずに前記指示部から再開指示を行う
    情報処理装置。
  9. オペレーティングシステムが組み込まれた第1のプロセッサコアと、前記第1のプロセッサコアにより制御され、並列演算処理を実行可能な第2のプロセッサコアと、を有する情報処理装置により行われる情報処理方法であって、
    前記第2のプロセッサコアは、ページフォルトを検出すると、新たな命令発行を停止し、発行済み未完了な命令を再開可能な状態として静止するとともに、ページフォルトを検出した旨の通知を前記第1のプロセッサコアに対して送信し、
    前記第1のプロセッサコアは、
    前記通知の受信に応じて、ページフォルトが許容可能であるか否か判断し、
    判断の結果に応じて、前記第2のプロセッサコアが有するページテーブルを更新し、
    判断の結果に応じた指示を前記第2のプロセッサコアに対して送信する
    情報処理方法。
  10. オペレーティングシステムが組み込まれた第1のプロセッサコアと、前記第1のプロセッサコアにより制御され、並列演算処理を実行可能な第2のプロセッサコアと、を有する情報処理装置のうち、
    前記第2のプロセッサコアに、ページフォルトを検出すると、新たな命令発行を停止し、発行済み未完了な命令を再開可能な状態として静止するとともに、ページフォルトを検出した旨の通知を前記第1のプロセッサコアに対して送信する処理を実現させ、
    前記第1のプロセッサコアに、
    前記通知の受信に応じて、ページフォルトが許容可能であるか否か判断する許容性判断部と、
    前記許容性判断部による判断の結果に応じて、前記第2のプロセッサコアが有するページテーブルを更新するページテーブル更新部と、
    前記許容性判断部による判断の結果に応じた指示を前記第2のプロセッサコアに対して送信する指示部と、
    を実現させるためのプログラム。

JP2018058317A 2018-03-26 2018-03-26 情報処理装置、情報処理方法、プログラム Active JP6508382B1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018058317A JP6508382B1 (ja) 2018-03-26 2018-03-26 情報処理装置、情報処理方法、プログラム
US16/361,336 US11055132B2 (en) 2018-03-26 2019-03-22 Multicore page fault processing

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018058317A JP6508382B1 (ja) 2018-03-26 2018-03-26 情報処理装置、情報処理方法、プログラム

Publications (2)

Publication Number Publication Date
JP6508382B1 JP6508382B1 (ja) 2019-05-08
JP2019169081A true JP2019169081A (ja) 2019-10-03

Family

ID=66429877

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018058317A Active JP6508382B1 (ja) 2018-03-26 2018-03-26 情報処理装置、情報処理方法、プログラム

Country Status (2)

Country Link
US (1) US11055132B2 (ja)
JP (1) JP6508382B1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10922203B1 (en) * 2018-09-21 2021-02-16 Nvidia Corporation Fault injection architecture for resilient GPU computing
US11269780B2 (en) 2019-09-17 2022-03-08 Micron Technology, Inc. Mapping non-typed memory access to typed memory access
US10963396B1 (en) 2019-09-17 2021-03-30 Micron Technology, Inc. Memory system for binding data to a memory namespace
US11650742B2 (en) 2019-09-17 2023-05-16 Micron Technology, Inc. Accessing stored metadata to identify memory devices in which data is stored
US11494311B2 (en) * 2019-09-17 2022-11-08 Micron Technology, Inc. Page table hooks to memory types
CN112540794A (zh) * 2019-09-20 2021-03-23 阿里巴巴集团控股有限公司 处理器核、处理器、装置和指令处理方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02234268A (ja) 1989-03-08 1990-09-17 Fujitsu Ltd ベクトル命令処理方式
JPH0452759A (ja) 1990-06-14 1992-02-20 Fujitsu Ltd ベクトル命令多重処理方式
JP5261661B2 (ja) * 2005-05-24 2013-08-14 ストラタス・テクノロジーズ・バミューダ・リミテッド 対称型マルチプロセッサ・フォルトトレラントコンピュータシステム
JP2008186175A (ja) * 2007-01-29 2008-08-14 Toyota Motor Corp オペレーティングシステムの起動制御方法及び情報処理装置
US9071452B2 (en) 2010-02-17 2015-06-30 Nec Corporation High-speed communication system and high-speed communication method
US9208029B2 (en) * 2010-11-12 2015-12-08 Hitachi, Ltd. Computer system to switch logical group of virtual computers
EP2798477A4 (en) * 2011-12-29 2015-08-26 Intel Corp SIGNALING AND MANAGING AGGREGATE PAGE DEFAULT
EP3311286A4 (en) * 2015-06-17 2019-01-16 Intel Corporation DATA PROCESSING DEVICE AND METHOD WITH PERSISTENT MEMORY
US10599428B2 (en) * 2016-03-23 2020-03-24 Arm Limited Relaxed execution of overlapping mixed-scalar-vector instructions
US10185564B2 (en) * 2016-04-28 2019-01-22 Oracle International Corporation Method for managing software threads dependent on condition variables
JP6776436B2 (ja) * 2017-02-24 2020-10-28 株式会社東芝 制御装置
US11169929B2 (en) * 2018-04-20 2021-11-09 Intel Corporation Pause communication from I/O devices supporting page faults

Also Published As

Publication number Publication date
JP6508382B1 (ja) 2019-05-08
US20190294467A1 (en) 2019-09-26
US11055132B2 (en) 2021-07-06

Similar Documents

Publication Publication Date Title
JP6508382B1 (ja) 情報処理装置、情報処理方法、プログラム
JP5655677B2 (ja) ハイパーバイザ置き換え方法および情報処理装置
JP3653159B2 (ja) 仮想計算機システム間の仮想計算機移動制御方法
US8453121B2 (en) Managing the tracing of the execution of a computer program
JP4345630B2 (ja) 情報処理装置、割り込み処理制御方法、並びにコンピュータ・プログラム
CN106170768B (zh) 在计算机中分派多个线程
US9811404B2 (en) Information processing system and method
KR20100036279A (ko) 복수의 프로세서들을 포함하는 시스템 및 그 동작 방법
JP2017515202A (ja) コンピュータ内の複数のスレッドをエグジットするための方法、システム、およびコンピュータ・プログラム
US10565135B2 (en) Information processing device, information processing method, main processor core, program, information processing method, and sub processor core
US9354923B2 (en) Information processing apparatus, information processing method, and computer program product
US5003468A (en) Guest machine execution control system for virutal machine system
US7953962B2 (en) Multiprocessor system and control method thereof
JP2002530736A5 (ja)
US20030014558A1 (en) Batch interrupts handling device, virtual shared memory and multiple concurrent processing device
JP2013015990A (ja) 情報処理システム、情報処理プログラム、情報処理方法
JP5557612B2 (ja) 計算機及び転送プログラム
JP6940283B2 (ja) Dma転送制御装置、dma転送制御方法、及び、dma転送制御プログラム
JP7137058B2 (ja) 演算処理装置、情報処理装置及び情報処理装置の制御方法
CN111788555B (zh) 数据处理装置和方法
JPH06242975A (ja) 多重情報処理システムの仮想計算機ディスパッチ方式
JP2022107229A (ja) 情報処理装置、制御方法及び制御プログラム
JP2020135555A (ja) 処理実行方法
JP2000353146A (ja) 入出力制御装置及びそのデータの先取り方法
KR20200125633A (ko) 외부 예외 핸들링

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180326

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190318

R150 Certificate of patent or registration of utility model

Ref document number: 6508382

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150