(57)【要約】【課題】ベクトルプロセッサなどの並列演算を行うプロセッサにおいて、再開可能なページフォルトを実装することが難しいという課題を解決すること。【解決手段】オペレーティングシステムが組み込まれた第１のプロセッサコアと、第１のプロセッサコアにより制御され、並列演算処理を実行可能な第２のプロセッサコアと、を有し、第２のプロセッサコアは、ページフォルトを検出すると、新たな命令発行を停止し、発行済み未完了な命令を再開可能な状態として静止するとともに、ページフォルトを検出した旨の通知を第１のプロセッサコアに対して送信するよう構成され、第１のプロセッサコアは、通知の受信に応じて、ページフォルトが許容可能であるか否か判断する許容性判断部と、許容性判断部による判断の結果に応じて、第２のプロセッサコアが有するページテーブルを更新するページテーブル更新部と、許容性判断部による判断の結果に応じた指示を前記第２のプロセッサコアに対して送信する指示部と、を有する。【選択図】図８
2019169081.tif 000002
【特許請求の範囲】
【請求項１】
オペレーティングシステムが組み込まれた第１のプロセッサコアと、前記第１のプロセッサコアにより制御され、並列演算処理を実行可能な第２のプロセッサコアと、を有し、
前記第２のプロセッサコアは、ページフォルトを検出すると、新たな命令発行を停止し、発行済み未完了な命令を再開可能な状態として静止するとともに、ページフォルトを検出した旨の通知を前記第１のプロセッサコアに対して送信するよう構成され、
前記第１のプロセッサコアは、
前記通知の受信に応じて、ページフォルトが許容可能であるか否か判断する許容性判断部と、
前記許容性判断部による判断の結果に応じて、前記第２のプロセッサコアが有するページテーブルを更新するページテーブル更新部と、
前記許容性判断部による判断の結果に応じた指示を前記第２のプロセッサコアに対して送信する指示部と、
を有する
情報処理装置。
【請求項２】
請求項１に記載の情報処理装置であって、
前記第２のプロセッサコアは、ページフォルトが発生したアドレスを記憶しており、
前記第１のプロセッサコアが有する前記許容性判断部は、前記第２のプロセッサコアが記憶するページフォルトが発生したアドレスを参照することで、ページフォルトが許容可能であるか否か判断する
情報処理装置。
【請求項３】
請求項１又は請求項２に記載の情報処理装置であって、
前記第２のプロセッサコアは、ページフォルトの発生の有無を示す情報を記憶しており、
前記第１のプロセッサコアが有する前記許容性判断部は、前記第２のプロセッサコアが記憶するページフォルトの発生の有無を示す情報に基づいてページフォルトが発生していると認知した場合に、ページフォルトが許容可能であるか否か判断する
情報処理装置。
【請求項４】
請求項１から請求項３までのいずれか１項に記載の情報処理装置であって、
前記第２のプロセッサコアは、前記指示部からの再開指示に応じて、発行済み未完了な命令を再開する
情報処理装置。
【請求項５】
請求項１から請求項４までのいずれか１項に記載の情報処理装置であって、
前記第２のプロセッサコアは、命令を一時的に格納する命令バッファを有しており、前記指示部からの再開指示に応じて、前記命令バッファから未完了命令の再発行を行うことで、命令の実行を再開する
情報処理装置。
【請求項６】
請求項１から請求項５までのいずれか１項に記載の情報処理装置であって、
前記第２のプロセッサコアは、命令の発行済み部分と未発効部分を識別する情報を記憶しており、命令の実行を再開した際に、発行済みアクセスを再度行わないよう構成されている
情報処理装置。
【請求項７】
請求項１から請求項６までのいずれか１項に記載の情報処理装置であって、
前記第２のプロセッサコアは、発行済みの未完了命令を残したまま停止するか否かを示す情報である停止状態情報を記憶しており、ページフォルトを検出した際に前記停止状態情報に基づいて停止するよう構成されている
情報処理装置。
【請求項８】
請求項７に記載の情報処理装置であって、
前記第１のプロセッサコアは、ページフォルトが許容可能でないと前記許容性判断部が判断した場合、前記停止状態情報を発行済みの未完了命令を残したまま停止しない旨を示すよう変更するとともに、前記ページテーブル更新部による更新を行わずに前記指示部から再開指示を行う
情報処理装置。
【請求項９】
オペレーティングシステムが組み込まれた第１のプロセッサコアと、前記第１のプロセッサコアにより制御され、並列演算処理を実行可能な第２のプロセッサコアと、を有する情報処理装置により行われる情報処理方法であって、
前記第２のプロセッサコアは、ページフォルトを検出すると、新たな命令発行を停止し、発行済み未完了な命令を再開可能な状態として静止するとともに、ページフォルトを検出した旨の通知を前記第１のプロセッサコアに対して送信し、
前記第１のプロセッサコアは、
前記通知の受信に応じて、ページフォルトが許容可能であるか否か判断し、
判断の結果に応じて、前記第２のプロセッサコアが有するページテーブルを更新し、
判断の結果に応じた指示を前記第２のプロセッサコアに対して送信する
情報処理方法。
【請求項１０】
オペレーティングシステムが組み込まれた第１のプロセッサコアと、前記第１のプロセッサコアにより制御され、並列演算処理を実行可能な第２のプロセッサコアと、を有する情報処理装置のうち、
前記第２のプロセッサコアに、ページフォルトを検出すると、新たな命令発行を停止し、発行済み未完了な命令を再開可能な状態として静止するとともに、ページフォルトを検出した旨の通知を前記第１のプロセッサコアに対して送信する処理を実現させ、
前記第１のプロセッサコアに、
前記通知の受信に応じて、ページフォルトが許容可能であるか否か判断する許容性判断部と、
前記許容性判断部による判断の結果に応じて、前記第２のプロセッサコアが有するページテーブルを更新するページテーブル更新部と、
前記許容性判断部による判断の結果に応じた指示を前記第２のプロセッサコアに対して送信する指示部と、
を実現させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法、プログラムに関する。
【背景技術】
【０００２】
命令を同時に複数のデータに適用して並列処理を行うベクトル演算など、並列演算や大規模演算を行うことが可能なプロセッサが知られている。
【０００３】
例えば、上記のような並列処理を実行する演算装置に関する技術として、特許文献１がある。特許文献１には、単一の命令を実行中に例外の発生を検出すると、例外を配信する前に、保留されているトラップ又は割込を例外ハンドラに配信する演算実行部を有するプロセッサが記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】国際公開第２０１１／１０２２９４号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記のような並列演算、大規模演算を行うプロセッサにおいて、再開可能なページフォルトを実装しようとすると、メモリにアクセスする全ての命令に対して、その命令がページフォルトを発生させるか否かを確定するまで、それより後続の命令の実行を保留するか、キャンセル可能な状態で実行することが必要になる。しかしながら、並列演算、大規模演算を行うプロセッサの場合、1つのベクトル命令が操作するデータの容量が大きい。そのため、命令をキャンセル可能な状態で実行するためには、大きなサイズの過渡的な情報を保持しなければならない、という問題があった。
【０００６】
また、並列処理であるベクトル演算を行うプロセッサの実行効率を上げるためには、多数の命令を先行して実行させる必要がある。そのため、ある時点での発行済みで未完了な命令の数(インフライト命令数)が多くなりがちである。その結果、ベクトル演算を行うプロセッサにおいては、ある命令のページフォルトの発生有無が確定するまでにキャンセル可能な状態で実行しなければならない後続命令の数が大きくなる可能性があり、この面からも過渡状態で保持しなければならないデータのサイズが増大する、という問題があった。
【０００７】
また、上記のような問題は、ベクトルプロセッサにおいて実行されるベクトルギャザー/スキャタ命令を実行する際には特に顕著となる。これは、ベクトルギャザー／スキャタ命令では、ページフォルトが判明するタイミングが遅いためである。
【０００８】
以上のような理由により、プロセッサの中には、再開可能なページフォルトを実装することが難しいものがあった。このようなプロセッサの場合、未割り当てページアクセス、権限外アクセス等のページフォルトを検出可能ではあるものの、再開可能ではなく、ページフォルトを発生させたプロセスはそのまま終了させるしかなかった。
【０００９】
そこで、本発明の目的は、再開可能なページフォルトを実現することが難しいプロセッサがある、という問題を解決する情報処理装置、情報処理方法、プログラムを提供することにある。
【課題を解決するための手段】
【００１０】
かかる目的を達成するため本発明の一形態である情報処理装置は、
オペレーティングシステムが組み込まれた第１のプロセッサコアと、前記第１のプロセッサコアにより制御され、並列演算処理を実行可能な第２のプロセッサコアと、を有し、
前記第２のプロセッサコアは、ページフォルトを検出すると、新たな命令発行を停止し、発行済み未完了な命令を再開可能な状態として静止するとともに、ページフォルトを検出した旨の通知を前記第１のプロセッサコアに対して送信するよう構成され、
前記第１のプロセッサコアは、
前記通知の受信に応じて、ページフォルトが許容可能であるか否か判断する許容性判断部と、
前記許容性判断部による判断の結果に応じて、前記第２のプロセッサコアが有するページテーブルを更新するページテーブル更新部と、
前記許容性判断部による判断の結果に応じた指示を前記第２のプロセッサコアに対して送信する指示部と、
を有する
という構成をとる。
【００１１】
また、本発明の他の形態である情報処理方法は、
オペレーティングシステムが組み込まれた第１のプロセッサコアと、前記第１のプロセッサコアにより制御され、並列演算処理を実行可能な第２のプロセッサコアと、を有する情報処理装置により行われる情報処理方法であって、
前記第２のプロセッサコアは、ページフォルトを検出すると、新たな命令発行を停止し、発行済み未完了な命令を再開可能な状態として静止するとともに、ページフォルトを検出した旨の通知を前記第１のプロセッサコアに対して送信し、
前記第１のプロセッサコアは、
前記通知の受信に応じて、ページフォルトが許容可能であるか否か判断し、
判断の結果に応じて、前記第２のプロセッサコアが有するページテーブルを更新し、
判断の結果に応じた指示を前記第２のプロセッサコアに対して送信する
という構成をとる。
【００１２】
また、本発明の他の形態であるプログラムは、
オペレーティングシステムが組み込まれた第１のプロセッサコアと、前記第１のプロセッサコアにより制御され、並列演算処理を実行可能な第２のプロセッサコアと、を有する情報処理装置のうち、
前記第２のプロセッサコアに、ページフォルトを検出すると、新たな命令発行を停止し、発行済み未完了な命令を再開可能な状態として静止するとともに、ページフォルトを検出した旨の通知を前記第１のプロセッサコアに対して送信する処理を実現させ、
前記第１のプロセッサコアに、
前記通知の受信に応じて、ページフォルトが許容可能であるか否か判断する許容性判断部と、
前記許容性判断部による判断の結果に応じて、前記第２のプロセッサコアが有するページテーブルを更新するページテーブル更新部と、
前記許容性判断部による判断の結果に応じた指示を前記第２のプロセッサコアに対して送信する指示部と、
を実現させるためのプログラムである。
【発明の効果】
【００１３】
本発明は、以上のように構成されることにより、再開可能なページフォルトを実現することが難しいプロセッサがある、という問題を解決する情報処理装置、情報処理方法、プログラムを提供することが可能となる。
【図面の簡単な説明】
【００１４】
【図１】本発明の第１の実施形態にかかるホストサーバの構成の一例を示すブロック図である。
【図２】図１で示す制御コアの機能の一例を示すブロック図である。
【図３】図１で示す計算コアの構成の一例を示すブロック図である。
【図４】図３で示すスカラ処理部の構成の一例を示すブロック図である。
【図５】図４で示す状態制御レジスタを説明するための図である。
【図６】図３で示すベクトル処理部の構成の一例を示すブロック図である。
【図７】図３で示すアドレス処理部の構成の一例を示すブロック図である。
【図８】第１の実施形態において、ページフォルトを検出した際の制御コアと計算コアの動作の一例を示すシーケンス図である。
【図９】本発明の第２の実施形態にかかる情報処理装置の構成の一例を示すブロック図である。
【図１０】本発明の第３の実施形態にかかる状態制御レジスタを説明するための図である。
【図１１】第３の実施形態において、ページフォルトを検出した際の制御コアと計算コアの動作の一例を示すシーケンス図である。
【図１２】第４の実施形態における第１のプロセッサコアと第２のプロセッサコアの構成の一例を示すブロック図である。
【発明を実施するための形態】
【００１５】
［第１の実施形態］
本発明の第１の実施形態を図１から図８を参照して説明する。図１は、ホストサーバ１の構成の一例を示すブロック図である。図２は、制御コア２１の機能の一例を示すブロック図である。図３は、計算コア５１の構成の一例を示すブロック図である。図４は、スカラ処理部５１１の構成の一例を示すブロック図である。図５は、状態制御レジスタ５１１１を説明するための図である。図６は、ベクトル処理部５１２の構成の一例を示すブロック図である。図７は、アドレス処理部５１３の構成の一例を示すブロック図である。図８は、ページフォルトを検出した際の制御コア２１と計算コア５１の動作の一例を示すシーケンス図である。
【００１６】
第１の実施形態では、アプリケーションを実行するベクトルプロセッサ５を有するホストサーバ１について説明する。後述するように、本実施形態においては、ＯＳ機能を提供する制御プロセッサであるホストプロセッサ２と、実際に計算を行うベクトルプロセッサ５と、を分離したアーキテクチャを採用する。また、本実施形態におけるベクトルプロセッサ５は、ページテーブル５１３１内に変換対象の論理アドレスに対応するエントリが存在しない、またはエントリは存在するが必要なアクセス権限が与えられていない等の理由によるページフォルトを検出すると、コンテキストの内容が確定していない過渡状態で仕掛かり中の命令を中断または一旦キャンセルする。そして、ベクトルプロセッサ５は、ページフォルトが発生した旨をホストプロセッサ２に通知する。また、ホストプロセッサ２は、上記通知を受信すると、例えば、ベクトルプロセッサ５にアクセスして、ページフォルトを発生させたアクセス先アドレスを確認する。そして、ホストプロセッサ２は、確認の結果に基づいてアクセスが許容されるものであるか否か確認した後、ページフォルトを解消するための情報をページテーブル５１３１に書き込む。その後、ホストプロセッサ２は、ベクトルプロセッサ５に対して命令の実行再開を指示する。これにより、ベクトルプロセッサ５は、ページフォルトが解消した状態で命令を再開する。
【００１７】
図１は、第１のプロセッサコアである制御コア２１と第２のプロセッサコアである計算コア５１とが組み合わされたアーキテクチャを有する情報処理装置であるホストサーバ１の構成の一例を示している。図１を参照すると、ホストサーバ１は、ホストプロセッサ２と、主にホストプロセッサ２が使用するメモリ３と、を有している。また、ホストプロセッサ２には拡張バスを通じて拡張カード４が接続されている。拡張カード４は、ベクトルプロセッサ５と、主にベクトルプロセッサ５が用いるメモリ６と、を有している。
【００１８】
また、ホストプロセッサ２とベクトルプロセッサ５はコアを有している。ホストプロセッサ２が有するコアは、ＯＳ機能を提供する制御コア２１として動作する。また、ベクトルプロセッサ５が有するコアは、アプリケーションを実行する計算コア５１として動作する。
【００１９】
なお、ホストサーバ１の構成は、図１で例示する場合に限定されない。例えば、ホストサーバ１は、複数のホストプロセッサ２や複数の拡張カード４を有しても構わない。また、１つの拡張カード４が複数の計算コア５１を有しても構わない。
【００２０】
ホストプロセッサ２内の制御コア２１では、ベクトルプロセッサ５内の計算コア５１で動作するプログラムに対してオペレーティングシステムの機能を提供するソフトウェア（以下、単にＯＳ（Operating System）と称する）が動作する。例えば、制御コア２１は、図示しない演算装置と記憶装置とを有している。例えば、制御コア２１は、図示しない記憶装置に格納されたプログラムを上記演算装置が実行することで、上記オペレーティングシステムの機能を提供するソフトウェアの動作を実現する。
【００２１】
制御コア２１が提供するオペレーティングシステムの機能には、例えば、プログラムのロード、コンテキストスイッチ等のプロセス管理、メモリ管理、システムコール機能の提供などが含まれる。例えば、制御コア２１は、拡張バスおよび後述するレジスタアクセスＩ／Ｆ（interface）を通じて計算コア５１内の各種レジスタまたは、メモリ６へのデータの読み書きを行ったり、計算コア５１に対する動作開始指示または停止指示を行ったりすることで、上記各種機能の提供を実現する。
【００２２】
また、制御コア２１が提供するオペレーティングシステムの機能には、計算コア５１で検出されたページフォルトを解消するための処理を実行する機能が含まれる。図２は、上記機能の一例を示している。図２を参照すると、制御コア２１で実行するオペレーティングシステムには、上記機能を実現するための処理部として、例えば、許容性判断部２１１と、ページテーブル更新部２１２と、指示部２１３と、が含まれている。
【００２３】
許容性判断部２１１は、割り込みの原因がページフォルトであるか否か確認するとともに、割り込みの原因がページフォルトであった場合、ページフォルトの原因となるアクセスが許容されうるものであるか否かを判断する。
【００２４】
例えば、ホストプロセッサ２がベクトルプロセッサ５から割り込み信号を受信すると、許容性判断部２１１は、拡張バスおよび図３で示すレジスタアクセスＩ／Ｆを通じて、後述する状態制御レジスタ５１１１およびフォルトアドレス５１３２の値を読み出す。これにより、許容性判断部２１１は、計算コア５１からページフォルト情報を取得する。
【００２５】
許容性判断部２１１は、状態制御レジスタ５１１１のうち、ページフォルトの発生を示すＦフィールドを確認する。例えば、許容性判断部２１１は、状態制御レジスタ５１１１のうちＦフィールドが１である場合、割り込みの原因がページフォルトであると認知する。一方、状態制御レジスタ５１１１のうちＦフィールドが０である場合、割り込みの原因がページフォルトでないと認知する。
【００２６】
また、許容性判断部２１１は、割り込みの原因がページフォルトであった場合、フォルトアドレス５１３２の値に基づいて、ページフォルトの原因となるアクセスが許容されうるものであるか否かを判断する。例えば、許容性判断部２１１は、ページフォルトの原因がデマンドページングに基づく物理アドレス未割り当てページへのアクセスであった場合、許容可能なアクセスであると判断する。一方、許容性判断部２１１は、ページフォルトの原因が未割り当て論理アドレスへのアクセスなどであった場合、許容されないアクセスであると判断する。
【００２７】
以上のように、許容性判断部２１１は、状態制御レジスタ５１１１およびフォルトアドレス５１３２を確認することで、割り込みの原因がページフォルトであるか否か確認するとともに、ページフォルトの原因となるアクセスが許容されうるものであるか否かを判断する。
【００２８】
ページテーブル更新部２１２は、許容性判断部２１１が許容可能なアクセスであると判断した場合に、計算コア５１が有するページテーブル５１３１の更新を行う。例えば、ページテーブル更新部２１２は、ページフォルトが解消されるように、論理アドレスと対応する物理アドレスの情報などをページテーブル５１３１に書き込むことで、ページテーブル５１３１の更新を行う。
【００２９】
指示部２１３は、許容性判断部２１１の判断結果に応じた処理を行うよう計算コア５１に指示する。例えば、指示部２１３は、許容性判断部２１１が許容可能なアクセスであると判断した場合、ページテーブル更新部２１２によるページテーブル５１３１の更新の後、計算コア５１に対して実行開始指示（再開指示）を送信する。これにより、計算コア５１は中断していた処理を再開する。一方、許容性判断部２１１が許容可能なアクセスでないと判断した場合、指示部２１３は、計算コア５１で実行中のプロセスを終了するよう計算コア５１に対して指示する。
【００３０】
計算コア５１は、アプリケーションを実行するとともに、必要に応じてホストプロセッサ２に対して割り込みを上げる。また、計算コア５１は、ページフォルトを検出すると、コンテキストの内容が確定していない過渡状態で停止することが出来るよう構成されている。図３は、計算コア５１の構成の一例を示している。図３を参照すると、計算コア５１は、例えば、スカラ処理部５１１と、ベクトル処理部５１２と、アドレス処理部５１３と、を有する。なお、上記各処理部は、例えば、ハードウェアで実現できる。上記各処理部が実行する機能などは、図示しない記憶装置に格納されたプログラムを演算装置が実行することで実現しても構わない。
【００３１】
スカラ処理部５１１は命令カウンタ５１１２やスカラレジスタ５１１３を有する。スカラ処理部５１１は、命令のフェッチ、デコード、スケジューリング、及び一部命令の実行を行う。また、スカラ処理部５１１は、アドレス処理部５１３やベクトル処理部５１２に各種命令を発行するためのインタフェースをもつ。さらに、スカラ処理部５１１は、計算コア５１全体の動作状態を管理するための状態制御レジスタ５１１１を備える。
【００３２】
ベクトル処理部５１２は、ベクトルデータを保持するベクトルレジスタ５１２１を有する。ベクトル処理部５１２は、スカラ処理部５１１からの指示に基づいて、演算等の各種処理を行う。また、ベクトル処理部５１２は、インタフェースを通じて、アドレス処理部５１３とベクトルロード／ストアデータの送受信を行う。
【００３３】
アドレス処理部５１３は、ページテーブル５１３１およびフォルトアドレス５１３２を有する。アドレス処理部５１３は、ベクトルロード／ストア命令のアドレス計算や仮想アドレスから物理アドレスへのアドレス変換、およびスカラ処理部５１１やベクトル処理部５１２とメモリＩ／Ｆの間のデータ転送を行う。
【００３４】
なお、スカラ処理部５１１、ベクトル処理部５１２、アドレス処理部５１３が有する各種レジスタにはアドレスが割り振られている。スカラ処理部５１１、ベクトル処理部５１２、アドレス処理部５１３が有する各種レジスタには、レジスタアクセスＩ／Ｆを介して読み書きを行うことが出来る。また、レジスタアクセスＩ／Ｆは図１で示す拡張バスに接続している。このような構成により、スカラ処理部５１１、ベクトル処理部５１２、アドレス処理部５１３が有する各種レジスタには、ホストプロセッサ２から任意のアクセスを行うことも出来る。
【００３５】
続いて、スカラ処理部５１１、ベクトル処理部５１２、アドレス処理部５１３のより詳細な構成の一例について、図４から図７までを参照して説明する。
【００３６】
まず、スカラ処理部５１１の詳細な構成の一例について説明する。図４は、スカラ処理部５１１のより詳細な構成の一例を示している。図４を参照すると、スカラ処理部５１１は、上述した状態制御レジスタ５１１１、命令カウンタ５１１２、スカラレジスタ５１１３を有するとともに、例えば、フェッチ処理部５１１４と、デコード処理部５１１５と、スケジューラー５１１６と、実行部５１１７と、を有している。
【００３７】
状態制御レジスタ５１１１は、計算コア５１全体の動作状態を管理するための一時記憶装置である。図５は、状態制御レジスタ５１１１の構成の一例を示している。図５を参照すると、状態制御レジスタ５１１１は、プロセッサの実行状態（動作中、停止中）を示すＳｔａｔｅフィールドと、ページフォルトの発生を示すＦフィールドを有する。このように、状態制御レジスタ５１１１は、プロセッサの実行状態を示す情報を有するとともに、ページフォルトの発生有無を示す情報を有している。また、命令カウンタ５１１２は、次に実行する命令が格納されたメモリ６上のアドレスを保存している。命令カウンタ５１１２は、フェッチ処理部５１１４により参照される。また、スカラレジスタ５１１３には、実行部５１１７による処理の過程で読み書きが必要となるデータが格納される。
【００３８】
フェッチ処理部５１１４およびデコード処理部５１１５はそれぞれ命令のフェッチおよびデコードを行う。例えば、フェッチ処理部５１１４は、命令カウンタ５１１２を参照して、次に実行すべき命令のデータをロードする。また、デコード処理部５１１５は、フェッチ処理部５１１４がフェッチした命令を解釈して、独自形式の内部命令に変換したり、複数の内部命令に分割したりする。そして、デコード処理部５１１５は、デコードした結果をスケジューラー５１１６に引き渡す。
【００３９】
スケジューラー５１１６は、デコード処理部５１１５によるデコード後の命令の依存関係を解釈する。そして、スケジューラー５１１６は、実行部５１１７の空き状況を考慮しながら、実行可能な命令の実行を実行部５１１７に指示する。
【００４０】
実行部５１１７は、スケジューラー５１１６からの指示に基づいて、各種演算、メモリアクセス命令のアドレス処理部５１３への発行、ベクトル命令のベクトル処理部５１２への発行等を行う。また、実行部５１１７は、上記各処理を実行する過程で、スカラレジスタ５１１３の読み書きを行う。
【００４１】
次に、ベクトル処理部５１２の詳細な構成の一例について説明する。図６は、ベクトル処理部５１２のより詳細な構成の一例を示している。図６を参照すると、ベクトル処理部５１２は、上述したベクトルレジスタ５１２１を有するとともに、例えば、命令バッファ５１２２と、スケジューラー５１２３と、実行部５１２４と、を有する。
【００４２】
ベクトルレジスタ５１２１には、実行部５１２４が各種処理を実行する過程で読み書きする各種データが格納される。
【００４３】
命令バッファ５１２２は、はスカラ処理部５１１から発行された命令を一旦格納するバッファである。命令バッファ５１２２に格納された情報は、例えば、命令の実行完了が保証されるまで保持される。
【００４４】
スケジューラー５１２３は、命令バッファ５１２２に格納された各命令の依存関係を解釈する。そして、スケジューラー５１２３は、実行部５１２４の空き状況を考慮しながら、実行可能な命令の実行を実行部５１２４に指示する。なお、命令間の依存関係がない限り、実行指示は必ずしも命令の入力順に行われなくてよい。また、スケジューラー５１２３は、実行部５１２４に対する指示を行うと同時に、該当する命令を命令バッファ５１２２から削除することが出来る。
【００４５】
実行部５１２４は、スケジューラー５１２３からの指示に基づいて各種演算、アドレス情報のアドレス処理部５１３への発行等を行う。また、実行部５１２４は、上記各処理を実行する過程で、ベクトルレジスタ５１２１の読み書きを行う。
【００４６】
続いて、アドレス処理部５１３の詳細な構成の一例について説明する。図７は、アドレス処理部５１３のより詳細な構成の一例を示している。図７を参照すると、アドレス処理部５１３は、上述したページテーブル５１３１、フォルトアドレス５１３２を有するとともに、例えば、命令バッファ５１３３と、スケジューラー５１３４と、アドレス計算部５１３５と、アドレス変換部５１３６と、メモリリクエスト発行部５１３７と、を有する。
【００４７】
ページテーブル５１３１は、仮想アドレスと物理アドレスとを対応付けたエントリを複数有している。ページテーブル５１３１に格納された情報は、アドレス変換部５１３６などにより参照される。また、フォルトアドレス５１３２は、ページフォルトが発生したアドレスを記憶するレジスタである。フォルトアドレス５１３２には、アドレス変換部５１３６がページフォルトを検出した際に、アドレス変換部５１３６により、ページフォルトを発生させたアクセス先アドレスを示す情報が格納される。
【００４８】
命令バッファ５１３３は、スカラ処理部から発行された命令を一旦格納するバッファである。命令バッファ５１３３に格納された情報は、例えば、命令の実行完了が保証されるまで保持される。
【００４９】
スケジューラー５１３４は、命令バッファ５１３３に格納された各命令の依存関係を解釈する。そして、スケジューラー５１３４は、アドレス計算部５１３５の空き状況を考慮しながら、実行可能な命令の処理をアドレス計算部５１３５に指示する。なお、命令間の依存関係がない限り、実行指示は必ずしも命令の入力順に行われなくてよい。また、スケジューラー５１３４は、アドレス計算部５１３５に対する指示を行うと同時に、該当する命令を命令バッファ５１３３から削除することが出来る。
【００５０】
アドレス計算部５１３５は、スケジューラー５１３４からの指示に応じて、必要な場合、アドレスの計算を行う。例えば、アドレス計算部５１３５は、スケジューラー５１３４からの指示がベクトルロード／ストア命令であった場合、指示された命令に附随する各種情報から実際にアクセスを行うアドレスを計算する。
【００５１】
例えば、アドレス計算部５１３５は、ベクトルロード／ストア命令に対して、命令に付随するベースアドレス、ディスタンスアドレス、ベクトル長等から実際にアクセスを行うアドレスを計算する。なお、スケジューラー５１３４からの指示がスカラロード／ストア命令であった場合、アクセス先のアドレスは既に命令の情報に含まれている。そのため、アドレス計算部５１３５は、特に新たな計算をする必要はない。また、スケジューラー５１３４からの指示がベクトルギャザー／スキャタ命令であった場合、アドレス計算部５１３５は、ベクトル処理部Ｉ／Ｆを通じて、アクセス先のアドレスをベクトル処理部５１２から受け取る。
【００５２】
アドレス変換部５１３６は、ページテーブル５１３１を参照して、アドレス計算部５１３５で求められたアクセス先の論理アドレスを物理アドレスに変換する。
【００５３】
また、アドレス変換部５１３６は、上記変換を行う際に、ページフォルトを検出する。例えば、アドレス変換部５１３６は、ページテーブル５１３１内に変換対象の論理アドレスに対応するエントリが存在しなかった場合や、エントリの属性により権限外のアクセスを試みようとしていると判断される場合、ページフォルトを検出する。このように、アドレス変換部５１３６は、物理アドレス未割り当てや権限外アクセスといったページフォルト要因を検出するページフォルト検出手段としても機能する。
【００５４】
また、ページフォルトを検出した場合、アドレス変換部５１３６は、ページフォルトを発生させたアクセス先アドレスをフォルトアドレス５１３２に格納する。そして、アドレス変換部５１３６は、アドレス処理部５１３の各処理部およびスカラ処理部５１１、ベクトル処理部５１２にページフォルトを検出したことを通知する。以下、この通知をページフォルト通知と呼ぶ。
【００５５】
メモリリクエスト発行部５１３７は、アドレス変換部５１３６によるアドレスの変換が成功した場合、つまり、ページフォルトが検出されなかった場合、アクセス先の物理アドレスやアクセス先までのルーティング情報等をメモリアクセスリクエストの形式に整形する。そして、メモリリクエスト発行部５１３７は、整形した情報をメモリＩ／Ｆに発行する。
【００５６】
以上が、スカラ処理部５１１、ベクトル処理部５１２、アドレス処理部５１３のより詳細な構成の一例である。続いて、上述した各構成を有する計算コア５１においてアプリケーションプログラムを動作させる際の動作の一例について説明する。
【００５７】
まず、初期状態として、ベクトルプロセッサ５内の計算コア５１が有する状態制御レジスタ５１１１のＳｔａｔｅフィールドの値は「停止中」を示すものであるとする。また、Ｆフィールドの値は０とする。
【００５８】
ユーザがホストプロセッサ２の制御コア２１で動作するＯＳに対して、アプリケーションプログラムの実行開始を指示する。すると、ＯＳは、各種レジスタの初期値イメージ及びメモリの実行イメージを生成する。そして、ＯＳは、拡張バスを通じて、生成したイメージをベクトルプロセッサ５内の計算コア５１およびメモリ６に書き込む。
【００５９】
その後、ＯＳがあらかじめ定められた特定のアドレスへの書き込み等を通じて計算コア５１に実行開始指示を行う。これにより、計算コア５１は、状態制御レジスタ５１１１のＳｔａｔｅフィールドを「実行中」を表す値に更新し、動作を開始する。
【００６０】
続いて、アプリケーションプログラムの実行中の計算コア５１の動作の一例について説明する。
【００６１】
計算コア５１が動作を開始すると、スカラ処理部５１１内のフェッチ処理部５１１４は命令カウンタ５１１２を参照する。そして、フェッチ処理部５１１４は、次に実行すべき命令のデータをロードする。
【００６２】
デコード処理部３０５は、フェッチ処理部５１１４がロードした命令を解釈して、独自形式の内部命令に変換したり、複数の内部命令に分割したりする。そして、デコード処理部３０５は、その結果をスケジューラー５１１６に引き渡す。
【００６３】
スケジューラー５１１６は、デコード処理部３０５によるデコード後の内部命令の依存関係を解釈する。そして、スケジューラー５１１６は、実行部５１１７の空き状況を考慮しながら、実行可能な命令の実行を実行部５１１７に指示する。
【００６４】
実行部５１１７は、スケジューラー５１１６からの指示に基づいて各種演算、メモリアクセス命令のアドレス処理部５１３への発行、ベクトル命令のベクトル処理部５１２への発行等を行う。また、実行部５１１７は、上記処理を実行する過程で、スカラレジスタ５１１３の読み書きを行う。
【００６５】
ベクトル処理部５１２内はスカラ処理部５１１から発行された命令を受け取ると、一旦それを命令バッファ５１２２に格納する。命令バッファ５１２２に格納された情報は命令の実行完了が保証されるまで、保持される。
【００６６】
スケジューラー５１２３は、命令バッファ５１２２に登録された各命令の依存関係を解釈する。そして、スケジューラー５１２３は、実行部５１２４の空き状況を考慮しながら、実行可能な命令の実行を実行部５１２４に指示する。この際、命令間の依存関係がない限り、実行指示は必ずしも命令の入力順に行われなくてよい。また、スケジューラー５１２３は、上記指示と同時に該当する命令を命令バッファ５１２２から削除することが出来る。
【００６７】
実行部５１２４は、スケジューラー５１２３からの指示に基づいて各種演算、アドレス情報のアドレス処理部への発行等を行う。実行部５１２４は、上記処理を実行する過程で、ベクトルレジスタ５１２１の読み書きを行う。
【００６８】
また、アドレス処理部５１３は、スカラ処理部５１１から発行された命令を受け取ると、一旦それを命令バッファ５１３３に格納する。命令バッファ５１３３に格納された情報は命令の実行完了が保証されるまで、保持される。
【００６９】
スケジューラー５１３４は、命令バッファ５１３３に格納された各命令の依存関係を解釈する。そして、スケジューラー５１３４は、アドレス計算部５１３５の空き状況を考慮しながら、実行可能な命令の処理をアドレス計算部５１３５に指示する。この際、命令間の依存関係がない限り、実行指示は必ずしも命令の入力順に行われなくてよい。また、スケジューラー５１３４は、上記指示と同時に該当する命令を命令バッファ５１３３から削除することが出来る。
【００７０】
アドレス計算部５１３５は、スケジューラー５１３４からの指示がベクトルロード／ストア命令であった場合、命令に付随するベースアドレス、ディスタンスアドレス、ベクトル長等から実際にアクセスを行うアドレスを計算する。なお、スケジューラー５１３４からの指示がスカラロード／ストア命令であった場合はアクセス先のアドレスは既に命令の情報に含まれている。そのため、特に計算する必要はない。また、スケジューラー５１３４からの指示がベクトルギャザー／スキャタ命令であった場合、アドレス計算部５１３５は、ベクトル処理部Ｉ／Ｆを通じて、アクセス先のアドレスをベクトル処理部５１２から受け取る。
【００７１】
アドレス変換部５１３６は、ページテーブル５１３１を参照する。そして、アドレス変換部５１３６は、アドレス計算部５１３５で求められたアクセス先の論理アドレスを物理アドレスに変換する。この際、ページテーブル５１３１内に変換対象の論理アドレスに対応するエントリが存在しなかった場合、又は、エントリの属性により権限外のアクセスを試みようとしていた場合、アドレス変換部５１３６は、ページフォルトを検出する。
【００７２】
ページフォルトが検出されず、アドレス変換部５１３６によるアドレス変換に成功した場合には、メモリリクエスト発行部５１３７は、アクセス先の物理アドレスやアクセス先までのルーティング情報等をメモリアクセスリクエストの形式に整形する。そして、メモリリクエスト発行部５１３７は、整形した情報をメモリＩ／Ｆに発行する。
【００７３】
次に、計算コア５１でアプリケーションプログラムの実行中にページフォルトが発生したことをアドレス変換部５１３６が検出した場合の動作の一例について説明する。本動作の説明は、図８を参照しつつ行う。
【００７４】
上述したように、ページフォルトは、アドレス処理部５１３内のアドレス変換部５１３６によって検出される（図８のページフォルト検出）。例えば、アドレス変換部５１３６は、ページテーブル５１３１内に変換対象の論理アドレスに対応するエントリが存在しなかった場合やエントリの属性により権限外のアクセスを試みようとしていた場合にページフォルトを検出する。
【００７５】
ページフォルトを検出すると、アドレス変換部５１３６は、動作を停止すると共にページフォルトを発生させたアクセス先アドレスをフォルトアドレス５１３２に保存する。また、アドレス変換部５１３６は、アドレス処理部５１３の各処理部およびスカラ処理部５１１、ベクトル処理部５１２にページフォルトを検出したことを通知する。つまり、アドレス変換部５１３６は、アドレス処理部５１３内の各処理部、スカラ処理部５１１、ベクトル処理部５１２にページフォルト通知を通知する。なお、この際、アドレス処理部５１３は、ページフォルトを発生させた命令の情報を再開可能な状態で保持し続けるものとする。
【００７６】
ページフォルト通知を受信すると、命令バッファ５１３３は、それ以後の命令発行を停止する。また、スケジューラー５１３４およびアドレス計算部５１３５は、アドレス変換部５１３６と同様に動作を停止して、処理中の命令および各種制御情報を再開可能な状態で保持し続ける。アドレス処理部５１３内の全ての処理部の停止が確認された後、アドレス処理部５１３は、スカラ処理部５１１に停止通知を送信する。なお、停止後もベクトル処理部Ｉ／Ｆよりアドレス情報が入力され続ける可能性がある。この情報は、処理の再開時に使用できるようアドレス計算部５１３５内で保持する。
【００７７】
ベクトル処理部５１２は、ページフォルト通知を受信すると、命令バッファ５１２２およびスケジューラー５１２３からの新たな命令発行を停止する。その後、ベクトル処理部５１２は、実行部５１２４で実行中の全ての命令の処理が完了するのを待つ。そして、実行部５１２４で実行中の全ての処理が完了した後、ベクトル処理部５１２は、スカラ処理部５１１に停止通知を送信する。
【００７８】
スカラ処理部５１１は、ページフォルト通知を受信すると、フェッチ処理部５１１４、デコード処理部５１１５、およびスケジューラー５１１６からの新たな命令発行を停止する。また、スカラ処理部５１１は、状態制御レジスタ５１１１のＦフィールドの値を１とする。その後、スカラ処理部５１１は、実行部５１１７で実行中の全ての命令の処理が完了するのを待つ。
【００７９】
アドレス処理部５１３およびベクトル処理部５１２からの停止通知を受信するとともに、実行部５１１７で実行中の全ての命令の処理が完了することで、スカラ処理部５１１は、計算コア５１内の全ての構成要素が静止していることを確認する。すると、スカラ処理部５１１は、状態制御レジスタ５１１１のＳｔａｔｅフィールドの値を「停止中」を示す値に変更する。そして、スカラ処理部５１１は、ホストプロセッサ２に対して割り込み信号を送出する。つまり、スカラ処理部５１１は、図８で示すコア静止（計算コア５１が有する各構成が静止していること）を確認した後、ホストプロセッサ２の制御コア２１に対してページフォルト通知を送信する。
【００８０】
なお、上記静止している状態では、計算コア５１は静止しているもの、発行済みで未完了の命令が残っている。つまり、コンテキストの値は定まっていない状態である。
【００８１】
また、以上説明したように、計算コア５１の静止は、ページフォルトの検出後即座でなくて構わない。計算コア５１は、例えば、一部発行済み命令の実行完了やメモリ等からのリプライの到着を待ったり、再開に必要な情報の保存等の処理を行ったりした後で静止することが出来る。
【００８２】
ホストプロセッサ２が割り込み信号を受信すると、ホストプロセッサ２内で動作しているＯＳの許容性判断部２１１は、拡張バスおよびレジスタアクセスＩ／Ｆを通じて状態制御レジスタ５１１１およびフォルトアドレス５１３２の値を読み出す。つまり、制御コア２１の許容性判断部２１１は、図８で示すページフォルト情報取得処理を実行する。
【００８３】
ＯＳの許容性判断部２１１は、状態制御レジスタ５１１１のうちＦフィールドが１であることから、割り込みの原因がページフォルトであることを認知する。続いて、許容性判断部２１１は、フォルトアドレス５１３２より取得したアドレスへのアクセスが許容されうるものであるか否かを判断する。
【００８４】
例えば、ページフォルトの原因がデマンドページングに基づく物理アドレス未割り当てページへのアクセスであった場合など、許容されるべきものであった場合、許容性判断部２１１は、許容可能なアクセスであると判断する。この場合、ページテーブル更新部２１２は、ページフォルトが解消されるように、適切な情報をページテーブル５１３１に書き込む。つまり、ページテーブル更新部２１２は、図８で示すページテーブル更新処理を実行する。その後、ＯＳの指示部２１３は、計算コア５１に実行開始指示（図８中の再開指示）を行う。
【００８５】
一方、ページフォルトの原因が未割り当て論理アドレスへのアクセス等許容されないものであった場合には、許容性判断部２１１は、許容可能なアクセスでないと判断する。この場合、指示部２１３は、計算コア５１で実行中のプロセスを終了するよう、計算コア５１に指示する。
【００８６】
実行開始指示を受信すると、計算コア５１は、状態制御レジスタ５１１１のＦフィールドの値を０とすると共にＳｔａｔｅフィールドを「実行中」を表す値に更新する。そして、計算コア５１は、動作を再開する。動作再開時、スカラ処理部５１１、ベクトル処理部５１２、アドレス処理部５１３内のそれぞれ停止していた処理部は保持していた情報をもとに動作を再開する。また、スカラ処理部５１１、ベクトル処理部５１２、アドレス処理部５１３内の新規命令発行を停止していた処理部は新規命令発行を再開する。
【００８７】
以上が、計算コア５１でアプリケーションプログラムの実行中にページフォルトが発生したことをアドレス変換部５１３６が検出した場合の動作の一例である。
【００８８】
このように、本実施形態におけるホストサーバ１は、制御コア２１と計算コア５１とを分離したアーキテクチャを採用している。また、計算コア５１は、ページフォルトを検出すると、発行済み未完了の命令が残ったままのコンテキストの内容が確定していない過渡状態で停止することが出来るよう構成されているさらに、制御コア２１は、許容性判断部２１１とページテーブル更新部２１２と指示部２１３とを有している。このような構成により、許容性判断部２１１による判断の結果、許容可能なアクセスによりページフォルトが生じていると判断される場合、ページテーブル更新部２１２により計算コア５１のページテーブル５１３１を更新した後、指示部２１３により実行開始指示を行うことが出来る。これにより、計算コア５１は、中断したアプリケーションの実行を不整合なく再開させることが可能となる。つまり、上記構成によると、ベクトルプロセッサ５などの従来再開可能なページフォルトの実装が困難であったプロセッサに対しても、再開可能なページフォルトを実現することが可能となる。
【００８９】
また、本実施形態で説明した方法によると、再開可能なページフォルトを実装することが可能となるため、再開可能なページフォルトを実装しないプロセッサ上では実装困難であった、デマンドページングや動作中のプロセスに対するページスワップなども実装することが出来るようになる。これにより、物理メモリを効率的に使用できるようになる。さらには、従来必要とされていたメモリ確保時に全ての割り当て済み仮想アドレスに対して予め物理メモリを引当てる、プロセスをフォークさせる際に割り当て済みの全ての書き込み可能な領域をコピーする、全ての関数呼び出し時にスタック領域のメモリが使用可能か予め確認するといったページフォルトを発生させないようにするための処理を不要とすることが出来る。これにより、プロセッサの実行性能を向上させることができる。
【００９０】
なお、本実施形態においては、ベクトルプロセッサ５に再開可能なページフォルトを実装する場合について例示した。しかしながら、本発明の適用は、ベクトルプロセッサ５に限定されない。本発明は、従来再開可能なページフォルトを実装困難であったアーキテクチャを有する様々なプロセッサに適応可能である。上記のような再開可能なページフォルトの実装が困難であったプロセッサとは、例えば、アーキテクチャで定義されたレジスタのサイズが大きい、レジスタに格納された複数のアドレスに対して間接参照によるアクセスを行う命令（例えば、ギャザー命令やスキャター命令）などを行う、などの特徴を有するプロセッサである。
【００９１】
また、本実施形態では、ページフォルト検出時、アドレス処理部５１３内のスケジューラー５１３４、アドレス計算部５１３５、アドレス変換部５１３６は動作を停止し、処理中の命令および各種制御情報を再開可能な状態で保持し続けるものとした。しかしながら、スケジューラー５１３４、アドレス計算部５１３５、アドレス変換部５１３６は、処理中の命令の処理を一旦キャンセルした後、再開時に再度命令バッファ５１３３から未完了命令を発行しなおす方式によって、命令を再開するよう構成しても構わない。この場合、命令バッファ５１３３からの命令の削除を、スケジューラー５１３４から命令発行した段階ではなく、アドレス変換部５１３６にてその命令に関わる全てのアドレス変換が完了し、全てのアドレスでページフォルトが発生しないことを確認できた段階で行うよう構成する。
【００９２】
また、計算コア５１は、命令の発行済み部分と未発行部分を識別する情報を記憶して再開時に参照できる機能を有することも出来る。上記構成を有することで、計算コア５１は、ページフォルトを発生させた命令が複数のアドレスへのアクセスを引き起こすベクトル命令であって、アクセスの一部が既にメモリリクエスト発行部５１３７に発行されていた場合、動作再開時に発行済みアクセスを再度発行しないよう動作することが可能となる。上記のような機能は、例えば、アドレス計算部５１３５およびアドレス変換部５１３６がベクトル命令を必ずベクトル要素番号順に処理するよう構成し、発行済み部分の要素番号をアドレス処理部５１３が記憶しておくことによって実装可能である。
【００９３】
［第２の実施形態］
次に、図９を参照して、本発明の第２の実施形態について説明する。図９は、本発明の第２の実施形態にかかる情報処理装置の構成の一例を示すブロック図である。
【００９４】
図９を参照すると、情報処理装置は、第１の実施形態において説明したホストプロセッサ２とベクトルプロセッサ５とを有する構成に代えて、制御コア７０１としての管理プロセッサ７００と計算コア７１１としての実行プロセッサ７１０とを有している。制御コア７０１としての管理プロセッサ７００と計算コア７１１としての実行プロセッサ７１０とは、例えば、同一のＬＳＩ内、ＬＳＩパッケージ内、またはボード内に置かれている。
【００９５】
本実施形態において説明する情報処理装置のように、制御コア７０１と計算コア７１１を近傍に置き、拡張バスよりレイテンシの短い広帯域のインタフェースを用いて制御コア７０１と計算コア７１１を接続することで、両者間の通信にかかる時間を低減し、計算コア７１１で実行されるアプリケーションの実効性能を高めることができる。
【００９６】
なお、図９では、メモリ７２０は管理プロセッサ７００および実行プロセッサ７１０に接続され、両者で共有されるものとした。しかしながら、メモリ７２０は、両者で共有していてもよいし、それぞれが独立した専用のメモリを備えていても良い。再開可能なページフォルトを実現するための動作に関しては、第一の実施形態と同じである。
【００９７】
［第３の実施形態］
次に、図１０、図１１を参照して、本発明の第３の実施形態について説明する。図１０は、第３の実施形態にかかる状態制御レジスタ５１１１を説明するための図である。図１１は、ページフォルトを検出した際の制御コア２１と計算コア５１の動作の一例を示すシーケンス図である。
【００９８】
第３の実施形態では、第１の実施形態で説明した状態制御レジスタ５１１１にＥフィールドを追加した構成について説明する。図１０で示すように、本実施形態における状態制御レジスタ５１１１においては、第１の実施形態で説明した構成にＥフィールドが追加されている。
【００９９】
Ｅフィールドの値は、ページフォルト発生時に発行済みで未完了の命令が存在するコンテキストの値が定まっていない状態で計算コア５１が停止することを許容するか否かを表している。例えば、Ｅフィールドの値が０の場合、コンテキストの値が定まっていない状態でコアが停止することが許容される。そのため、Ｅフィールドの値が０の状態でページフォルトが発生すると、第１の実施形態で説明したように、計算コア５１は再開に必要な情報を保持しつつ、発行済みで未完了の命令を残したまま停止する。一方、Ｅフィールドの値が１の場合、コンテキストの値が定まっていない状態でコアが停止することは許されない。そのため、このような状態でページフォルトが発生した場合、スカラ処理部５１１内のデコード処理部５１１５は新規命令の発行を停止するが、その他の構成要素は動作を継続する。そして、全ての発行済み命令の実行が完了した後に、計算コア５１が停止する。このように、状態制御レジスタ５１１１にＥフィールドを設けることで、発行済みの命令の実行が全て完了した後に、計算コア５１を静止させることが可能となる。
【０１００】
このように、状態制御レジスタ５１１１にＥフィールドを設けることで、第１の実施形態において発生する次のような課題を解決することができる。第１の実施形態においては、ページフォルトが発生し、その原因が未割り当て論理アドレスへのアクセスなど許容されないものであった場合には計算コア５１で実行中のプロセスは終了させるとした。しかしながら、終了させる時点において、ベクトル処理部５１２の命令バッファ５１２２やアドレス処理部５１３の命令バッファ５１３３などには、命令再開のための発行済み未完了命令の情報が残っている。ここで、発行済み未完了命令の情報をそのままにしておくと、計算コア５１に新たなプロセスを実行させる際に、意図しない例外やメモリアクセス等を発生させる恐れがある。そのため、第１の実施形態においては、上記ベクトル処理部５１２やアドレス処理部５１３に残っている発行済み未完了命令の情報を何らかの方法で消去する必要があった。
【０１０１】
一方、本実施形態の場合、状態制御レジスタ５１１１にＥフィールドを設けているため、必要に応じてＥフィールドを１に設定することで、容易な方法で発行済み未完了命令の情報を消去することが可能となる。
【０１０２】
上記処理について、より詳細に図１１を参照して説明する。図１１は、許容されないページフォルトが発生した場合の動作の一例を示すシーケンス図である。なお、本シーケンスでは、初期状態としてEフィールドは0に設定されるとする。
【０１０３】
図１１を参照すると、計算コア５１がページフォルトを検出した後、制御コア２１に割り込みにより通知を行い制御コア２１がページフォルトに関わる情報を計算コア５１から取得する。ここまでの流れは、図８を参照して説明した第１の実施形態の場合と同様である。
【０１０４】
その後、制御コア２１が有するＯＳの許容性判断部２１１が、ページフォルトの原因が許容されないものであると判断したとする。すると、ＯＳの指示部２１３は、Ｅフィールドを１に設定するよう指示するとともに、計算コア５１に対して実行開始指示を行う。つまり、図１１で示す再開指示を実行する。
【０１０５】
実行開始指示を受信すると、計算コア５１は、状態制御レジスタ５１１１のＦフィールドの値を０とすると共にＳｔａｔｅフィールドを「実行中」を表す値に更新する。そして、計算コア５１は、動作を再開する。しかしながら、図１１で示す場合、ページテーブル更新処理が行われておらず、ページフォルトは解消していない。そのため、計算コア５１は、同じアドレスで再度ページフォルトを検出する。
【０１０６】
再度のページフォルトを検出した際、Ｅフィールドの値は１である。そのため、計算コア５１は、発行済みの命令の実行を全て完了させた後、停止する。これにより、計算コア５１の各構成要素の内部には、未完了命令に関する情報が残っていない状態となる。
【０１０７】
このように、本実施形態においては、状態制御レジスタ５１１１にＥフィールドを設けている。また、制御コア２１は、許容性判断部２１１がページフォルトの原因が許容されないと判断した場合、ページテーブル５１３１の更新を行わずにＥフィールドの値を１に設定した上で実行開始指示を行うよう構成されている。このような構成により、ページフォルトの原因が許容されない場合、計算コア５１に対して発行済みの命令の実行を全て完了させた後停止するよう動作させることが可能となる。これにより、容易な方法で計算コア５１内の未完了命令に関する情報を削除することが可能となる。
【０１０８】
なお、本実施形態において説明した構成は、第２の実施形態で説明した構成が有しても構わない。
【０１０９】
［第４の実施形態］
次に、図１２を参照して、本発明の第４の実施形態について説明する。第２の実施形態では、情報処理装置８の構成の概要について説明する。
【０１１０】
図１２を参照すると、情報処理装置８は、第１のプロセッサコア８１と、第２のプロセッサコア８２と、を有している。図１２で示すように、第１のプロセッサコア８１と第２のプロセッサコア８２とは、互いに通信可能なよう接続されている。
【０１１１】
第２のプロセッサコア８２は、第１のプロセッサコア８１により制御されてアプリケーションを実行する。第２のプロセッサコア８２は、ページフォルトを検出すると、新たな命令発行を停止する。また、第２のプロセッサコア８２は、発行済み未完了な命令を再開可能な状態として静止する。そして、第２のプロセッサコア８２は、ページフォルトを検出した旨の通知を前記第１のプロセッサコアに対して送信する。
【０１１２】
第１のプロセッサコア８１は、オペレーティングシステムが組み込まれており、第２のプロセッサコア８２を制御する。図１２を参照すると、第１のプロセッサコア８１は、例えば、許容性判断部８１１と、ページテーブル更新部８１２と、指示部８１３と、を有している。なお、第１のプロセッサコア８１は、例えば、図示しない演算装置と図示しない記憶装置とを有している。例えば、第１のプロセッサコア８１は、記憶装置が有するプログラムを演算装置が実行することで、上記各処理部を実現する。
【０１１３】
許容性判断部８１１は、第２のプロセッサコア８２からの通知の受信に応じて、ページフォルトが許容可能であるか否か判断する。
【０１１４】
ページテーブル更新部８１２は、許容性判断部８１１による判断の結果に応じて、第２のプロセッサコア８２が有するページテーブルを更新する。
【０１１５】
指示部８１３は、許容性判断部８１１による判断の結果に応じた指示を第２のプロセッサコア８２に対して送信する。
【０１１６】
このように、本実施形態における第２のプロセッサコア８２は、ページフォルトを検出すると、新たな命令発行を停止し、発行済み未完了な命令を再開可能な状態として静止するとともに、ページフォルトを検出した旨の通知を第１のプロセッサコア８１に対して送信するよう構成されている。また、第１のプロセッサコア８１は、許容性判断部８１１と、ページテーブル更新部８１２と、指示部８１３と、を有している。このような構成により、ページテーブル更新部８１２は、許容性判断部８１１による判断の結果に応じて、第２のプロセッサコア８２が有するページテーブルを更新することが出来る。また、指示部８１３は、許容性判断部８１１による判断の結果に応じた指示を第２のプロセッサコア８２に対して送信することが出来る。これにより、第２のプロセッサコア８２は、中断したアプリケーションの実行を再開させることが可能となる。つまり、上記構成によると、第２のプロセッサコア８２において、再開可能なページフォルトを実現することが可能となる。
【０１１７】
また、上述した情報処理装置８は、当該情報処理装置８に所定のプログラムが組み込まれることで実現できる。具体的に、本発明の他の形態であるプログラムは、オペレーティングシステムが組み込まれた第１のプロセッサコアと、第１のプロセッサコアにより制御され、並列演算処理を実行可能な第２のプロセッサコアと、を有する情報処理装置のうち、第２のプロセッサコアに、ページフォルトを検出すると、新たな命令発行を停止し、発行済み未完了な命令を再開可能な状態として静止するとともに、ページフォルトを検出した旨の通知を第１のプロセッサコアに対して送信する処理を実現させ、第１のプロセッサコアに、通知の受信に応じて、ページフォルトが許容可能であるか否か判断する許容性判断部と、許容性判断部による判断の結果に応じて、第２のプロセッサコアが有するページテーブルを更新するページテーブル更新部と、許容性判断部による判断の結果に応じた指示を第２のプロセッサコアに対して送信する指示部と、を実現させるためのプログラムである。
【０１１８】
また、上述した情報処理装置８により実行される情報処理方法は、オペレーティングシステムが組み込まれた第１のプロセッサコアと、第１のプロセッサコアにより制御され、並列演算処理を実行可能な第２のプロセッサコアと、を有する情報処理装置により行われる情報処理方法であって、第２のプロセッサコアは、ページフォルトを検出すると、新たな命令発行を停止し、発行済み未完了な命令を再開可能な状態として静止するとともに、ページフォルトを検出した旨の通知を第１のプロセッサコアに対して送信し、第１のプロセッサコアは、通知の受信に応じて、ページフォルトが許容可能であるか否か判断し、判断の結果に応じて、前記第２のプロセッサコアが有するページテーブルを更新し、判断の結果に応じた指示を前記第２のプロセッサコアに対して送信する、という方法である。
【０１１９】
上述した構成を有する、プログラム、又は、情報処理方法、の発明であっても、上記情報処理装置８と同様の作用を有するために、上述した本発明の目的を達成することが出来る。
【０１２０】
＜付記＞
上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明における情報処理装置などの概略を説明する。但し、本発明は、以下の構成に限定されない。
【０１２１】
（付記１）
オペレーティングシステムが組み込まれた第１のプロセッサコアと、前記第１のプロセッサコアにより制御され、並列演算処理を実行可能な第２のプロセッサコアと、を有し、
前記第２のプロセッサコアは、ページフォルトを検出すると、新たな命令発行を停止し、発行済み未完了な命令を再開可能な状態として静止するとともに、ページフォルトを検出した旨の通知を前記第１のプロセッサコアに対して送信するよう構成され、
前記第１のプロセッサコアは、
前記通知の受信に応じて、ページフォルトが許容可能であるか否か判断する許容性判断部と、
前記許容性判断部による判断の結果に応じて、前記第２のプロセッサコアが有するページテーブルを更新するページテーブル更新部と、
前記許容性判断部による判断の結果に応じた指示を前記第２のプロセッサコアに対して送信する指示部と、
を有する
情報処理装置。
（付記２）
付記１に記載の情報処理装置であって、
前記第２のプロセッサコアは、ページフォルトが発生したアドレスを記憶しており、
前記第１のプロセッサコアが有する前記許容性判断部は、前記第２のプロセッサコアが記憶するページフォルトが発生したアドレスを参照することで、ページフォルトが許容可能であるか否か判断する
情報処理装置。
（付記３）
付記１又は付記２に記載の情報処理装置であって、
前記第２のプロセッサコアは、ページフォルトの発生の有無を示す情報を記憶しており、
前記第１のプロセッサコアが有する前記許容性判断部は、前記第２のプロセッサコアが記憶するページフォルトの発生の有無を示す情報に基づいてページフォルトが発生していると認知した場合に、ページフォルトが許容可能であるか否か判断する
情報処理装置。
（付記４）
付記１から付記３までのいずれか１項に記載の情報処理装置であって、
前記第２のプロセッサコアは、前記指示部からの再開指示に応じて、発行済み未完了な命令を再開する
情報処理装置。
（付記５）
付記１から付記４までのいずれか１項に記載の情報処理装置であって、
前記第２のプロセッサコアは、命令を一時的に格納する命令バッファを有しており、前記指示部からの再開指示に応じて、前記命令バッファから未完了命令の再発行を行うことで、命令の実行を再開する
情報処理装置。
（付記６）
付記１から付記５までのいずれか１項に記載の情報処理装置であって、
前記第２のプロセッサコアは、命令の発行済み部分と未発効部分を識別する情報を記憶しており、命令の実行を再開した際に、発行済みアクセスを再度行わないよう構成されている
情報処理装置。
（付記７）
付記１から付記６までのいずれか１項に記載の情報処理装置であって、
前記第２のプロセッサコアは、発行済みの未完了命令を残したまま停止するか否かを示す情報である停止状態情報を記憶しており、ページフォルトを検出した際に前記停止状態情報に基づいて停止するよう構成されている
情報処理装置。
（付記８）
付記７に記載の情報処理装置であって、
前記第１のプロセッサコアは、ページフォルトが許容可能でないと前記許容性判断部が判断した場合、前記停止状態情報を発行済みの未完了命令を残したまま停止しない旨を示すよう変更するとともに、前記ページテーブル更新部による更新を行わずに前記指示部から再開指示を行う
情報処理装置。
（付記９）
オペレーティングシステムが組み込まれた第１のプロセッサコアと、前記第１のプロセッサコアにより制御され、並列演算処理を実行可能な第２のプロセッサコアと、を有する情報処理装置により行われる情報処理方法であって、
前記第２のプロセッサコアは、ページフォルトを検出すると、新たな命令発行を停止し、発行済み未完了な命令を再開可能な状態として静止するとともに、ページフォルトを検出した旨の通知を前記第１のプロセッサコアに対して送信し、
前記第１のプロセッサコアは、
前記通知の受信に応じて、ページフォルトが許容可能であるか否か判断し、
判断の結果に応じて、前記第２のプロセッサコアが有するページテーブルを更新し、
判断の結果に応じた指示を前記第２のプロセッサコアに対して送信する
情報処理方法。
（付記１０）
オペレーティングシステムが組み込まれた第１のプロセッサコアと、前記第１のプロセッサコアにより制御され、並列演算処理を実行可能な第２のプロセッサコアと、を有する情報処理装置のうち、
前記第２のプロセッサコアに、ページフォルトを検出すると、新たな命令発行を停止し、発行済み未完了な命令を再開可能な状態として静止するとともに、ページフォルトを検出した旨の通知を前記第１のプロセッサコアに対して送信する処理を実現させ、
前記第１のプロセッサコアに、
前記通知の受信に応じて、ページフォルトが許容可能であるか否か判断する許容性判断部と、
前記許容性判断部による判断の結果に応じて、前記第２のプロセッサコアが有するページテーブルを更新するページテーブル更新部と、
前記許容性判断部による判断の結果に応じた指示を前記第２のプロセッサコアに対して送信する指示部と、
を実現させるためのプログラム。
【０１２２】
なお、上記各実施形態及び付記において記載したプログラムは、記憶装置に記憶されていたり、コンピュータが読み取り可能な記録媒体に記録されていたりする。例えば、記録媒体は、フレキシブルディスク、光ディスク、光磁気ディスク、及び、半導体メモリ等の可搬性を有する媒体である。
【０１２３】
以上、上記各実施形態を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明の範囲内で当業者が理解しうる様々な変更をすることが出来る。
【符号の説明】
【０１２４】
１  ホストサーバ
２  ホストプロセッサ
２１  制御コア
２１１  許容性判断部
２１２  ページテーブル更新部
２１３  指示部
３  メモリ
４  拡張カード
５  ベクトルプロセッサ
５１  計算コア
５１１  スカラ処理部
５１１１  状態制御レジスタ
５１１２  命令カウンタ
５１１３  スカラレジスタ
５１１４  フェッチ処理部
５１１５  デコード処理部
５１１６  スケジューラー
５１１７  実行部
５１２  ベクトル処理部
５１２１  ベクトルレジスタ
５１２２  命令バッファ
５１２３  スケジューラー
５１２４  実行部
５１３  アドレス処理部
５１３１  ページテーブル
５１３２  フォルトアドレス
５１３３  命令バッファ
５１３４  スケジューラー
５１３５  アドレス計算部
５１３６  アドレス変換部
５１３７  メモリリクエスト発行部
６  メモリ
７００  管理プロセッサ
７０１  制御コア
７１０  実行プロセッサ
７１１  計算コア
７２０  メモリ
８  情報処理装置
８１  第１のプロセッサコア
８１１  許容性判断部
８１２  ページテーブル更新部
８１３  指示部
８２  第２のプロセッサコア
【図１】
2019169081.tif 000003
【図２】
2019169081.tif 000004
【図３】
2019169081.tif 000005
【図４】
2019169081.tif 000006
【図５】
2019169081.tif 000007
【図６】
2019169081.tif 000008
【図７】
2019169081.tif 000009
【図８】
2019169081.tif 000010
【図９】
2019169081.tif 000011
【図１０】
2019169081.tif 000012
【図１１】
2019169081.tif 000013
【図１２】
2019169081.tif 000014