(57)【要約】【課題】メモリ容量を向上させることのできるプロセッサを提供する。【解決手段】仮想的な記憶領域上のアドレス範囲を指定するアドレス指定手段と１００、アドレス範囲が有すべきデータを決定する処理の命令コードを設定する命令コード設定手段１１０と、アドレス指定手段１００により指定されたアドレス範囲に対するロード命令を取得するロード命令取得手段と１００、命令コードに基づいて、ロード命令に示されるアドレス範囲に対するデータを計算する演算手段１２０と、演算手段１２０により得られたデータをロード命令に対するデータとして出力するデータ出力手段１３０とを備えた。【選択図】        図２
2007011878.tif 000002
【特許請求の範囲】
【請求項１】
仮想的な記憶領域上のアドレス範囲を指定するアドレス指定手段と、
前記アドレス指定手段により指定された前記アドレス範囲が有すべきデータを決定する処理の命令コードを設定する命令コード設定手段と、
前記命令コード設定手段が前記アドレス範囲に対して設定した前記命令コードに基づいて、前記アドレス範囲に対するデータを計算する演算手段と、
前記アドレス指定手段により指定された前記アドレス範囲に対するロード命令を取得するロード命令取得手段と、
前記ロード命令に対するデータとして、前記演算手段が前記ロード命令に示される前記アドレス範囲に対して計算した前記データを出力するデータ出力手段と
を備えたことを特徴とするプロセッサ。
【請求項２】
前記演算手段は、前記ロード命令取得手段がロード命令を取得すると、前記ロード命令に示される前記アドレス範囲に対する前記データを計算することを特徴とする請求項１に記載のプロセッサ。
【請求項３】
前記演算手段により計算された前記データを前記アドレス範囲に対応付けて保持するデータ保持手段と、
前記ロード命令取得手段が前記ロード命令を取得したときに、前記ロード命令に示される前記アドレス範囲に対する前記データが前記データ保持手段に保持されている場合には、前記データ出力手段に対し、前記データ保持手段に保持されているデータを出力させるデータ管理手段と
をさらに備えたことを特徴とする請求項１に記載のプロセッサ。
【請求項４】
前記データ管理手段は、前記ロード命令取得手段が前記ロード命令を取得したときに、前記ロード命令に示される前記アドレス範囲に対する前記データが前記データ保持手段に保持されている場合には、前記演算手段に対し、前記アドレス範囲に対するデータを計算させることを特徴とする請求項３に記載のプロセッサ。
【請求項５】
前記演算手段は、前記アドレス指定手段が前記アドレス範囲を指定し、前記命令コード設定手段が前記命令コードを設定したことを条件として、前記命令コード設定手段により設定された命令コードに基づいて、前記アドレス指定手段により指定された前記アドレス範囲に対するデータの計算を開始することを特徴とする請求項３または４に記載のプロセッサ。
【請求項６】
前記命令コード設定手段は、前記アドレス範囲における各アドレス値に基づいて一意に決定される値を引数として利用可能な前記命令コードを設定することを特徴とする請求項１から５のいずれか一項に記載のプロセッサ。
【請求項７】
前記アドレス指定手段によって指定された前記アドレス範囲を識別するアドレス範囲識別情報と、前記命令コード設定手段により前記アドレス範囲に対して設定された前記命令コードとを対応付けて保持する命令コード保持手段をさらに備え、
前記演算手段は、前記ロード命令に示されるアドレス範囲と、前記命令コード保持手段において前記アドレス範囲識別情報に対応付けて保持されている前記命令コードとに基づいて、前記アドレス範囲に対するデータを計算することを特徴とする請求項１から６のいずれか一項に記載のプロセッサ。
【請求項８】
前記アドレス指定手段は、前記アドレス範囲の開始アドレスおよび前記アドレス範囲の長さを指定し、
前記開始アドレスおよび前記長さを、当該開始アドレスおよび当該長さを識別するアドレス範囲識別情報に対応付けて保持するレジスタと、
前記ロード命令取得手段が取得した前記ロード命令に示されるアドレス範囲と、前記レジスタに保持されている前記開始アドレスおよび前記長さとを比較して、前記ロード命令に示される前記アドレス範囲に対応する前記アドレス範囲識別情報を特定するアドレス比較手段と
をさらに備え、
前記演算手段は、前記命令コード保持手段において、前記アドレス比較手段により特定された前記アドレス範囲識別情報に対応付けて保持されている前記命令コードに基づいて、前記アドレスに対するデータを計算することを特徴とする請求項７に記載のプロセッサ。
【請求項９】
前記演算手段を複数備え、
前記ロード命令取得手段が、当該ロード命令を識別するロード命令識別情報を保持するロード命令識別情報保持手段をさらに備え、
前記演算手段は、前記ロード命令取得手段が取得した前記ロード命令を識別するロード命令識別情報をさらに取得し、
前記データ出力手段は、前記演算手段から前記ロード命令識別情報および前記データを取得し、取得した前記ロード命令識別情報が識別する前記ロード命令に対するデータとして、前記データを出力することを特徴とする請求項１から８のいずれか一項に記載のプロセッサ。
【請求項１０】
前記演算手段から当該プロセッサに直接接続されたシステムメモリにアクセスするシステムメモリインタフェースをさらに備え、
前記演算手段は、前記システムメモリインタフェースを介して前記システムメモリにアクセスし、前記システムメモリへのロードおよびストアを行うことにより、前記ロード命令に対するデータを得ることを特徴とする請求項１に記載のプロセッサ。
【請求項１１】
前記演算手段は、当該プロセッサとバスを介して接続するシステムメモリに対し、前記バスを介してアクセスし、前記システムメモリへのロードおよびストアを行うことにより、前記ロード命令に対するデータを得ることを特徴とする請求項１に記載のプロセッサ。
【請求項１２】
第１のプロセッサおよび第２のプロセッサを備えた仮想メモリシステムであって、
前記第１のプロセッサおよび前記第２のプロセッサは、それぞれ
仮想的な記憶領域上のアドレス範囲を指定するアドレス指定手段と、
前記アドレス指定手段により指定された前記アドレス範囲が有すべきデータを決定する処理に対する命令コードを設定する命令コード設定手段と、
前記命令コード設定手段が前記アドレス範囲に対して設定した前記命令コードに基づいて、前記アドレス範囲に対するデータを計算する演算手段と、
前記アドレス指定手段により指定された前記アドレス範囲に対するロード命令を取得するロード命令取得手段と、
前記ロード命令に対するデータとして、前記演算手段が前記ロード命令に示される前記アドレス範囲に対して計算した前記データを出力するデータ出力手段と
を有し、
前記第１のプロセッサの前記演算手段は、前記第２のプロセッサに対するロード命令を発行し、
前記第２のプロセッサの前記ロード命令取得手段は、前記第１のプロセッサから前記ロード命令を取得し、
前記第２のプロセッサの前記演算手段は、前記第１のプロセッサから取得した前記ロード命令に対するデータを計算し、
前記第２のプロセッサの前記データ出力手段は、前記第２のプロセッサの前記演算手段により得られた前記データを前記第１のプロセッサに出力し、
前記第１のプロセッサの前記演算手段は、前記第２のプロセッサから取得したデータを利用して、前記データを計算することを特徴とする仮想メモリシステム。
【請求項１３】
プロセッサを利用した仮想記憶方法であって、
仮想的な記憶領域上のアドレス範囲を指定するアドレス指定ステップと、
前記アドレス指定ステップにおいて指定された前記アドレス範囲が有すべきデータを決定する処理の命令コードを設定する命令コード設定ステップと、
前記命令コード設定ステップにおいて前記アドレス範囲に対して設定した前記命令コードに基づいて、前記アドレス範囲に対するデータを計算する演算ステップと、
前記アドレス指定ステップにおいて指定された前記アドレス範囲に対するロード命令を取得するロード命令取得ステップと、
前記ロード命令に対するデータとして、前記演算ステップが前記ロード命令に示される前記アドレス範囲に対して計算した前記データを出力するデータ出力ステップと
を有することを特徴とする仮想記憶方法。
【請求項１４】
第１のプロセッサおよび第２のプロセッサを利用した仮想記憶方法であって、
前記第１のプロセッサにおいて、仮想的な記憶領域上のアドレス範囲を指定する第１プロセッサアドレス指定ステップと、
前記第１のプロセッサにおいて、前記第１プロセッサアドレス指定ステップにおいて指定された前記アドレス範囲が有すべきデータを決定する処理の命令コードを設定する第１プロセッサ命令コード設定ステップと、
前記第２のプロセッサが、仮想的な記憶領域のアドレス範囲を指定する第２プロセッサアドレス指定ステップと、
前記第２のプロセッサが、前記第２プロセッサアドレス指定ステップにおいて指定された前記アドレス範囲が有すべきデータを決定する処理の命令コードを設定する第２プロセッサ命令コード設定ステップと、
前記第１のプロセッサが、前記第２のプロセッサに対してロード命令を発行するロード命令発行ステップと、
前記第２のプロセッサが、前記ロード命令に示される前記アドレス範囲を指定する第２プロセッサアドレス指定ステップと、
前記第２プロセッサが、前記アドレス範囲に対して設定された前記命令コードに基づいて、前記アドレス範囲に対するデータを計算する第２プロセッサ演算ステップと、
前記第２プロセッサが、前記第２プロセッサ演算ステップにおいて計算された前記データを前記第１プロセッサに出力する第２プロセッサデータ出力ステップと、
前記第１プロセッサが、前記第２プロセッサデータ出力ステップにおいて出力した前記データを利用して、前記アドレス範囲に対するデータを計算する第１プロセッサ演算ステップと、
前記第1プロセッサが、前記第１プロセッサアドレス指定ステップにおいて指定された前記アドレス範囲に対するロード命令を取得する第１プロセッサロード命令取得ステップと、
前記第１プロセッサが、前記第１プロセッサロード命令取得ステップにおいて取得した前記ロード命令に対するデータとして、前記第１プロセッサ演算ステップにおいて前記ロード命令に示される前記アドレス範囲に対して計算した前記データを出力する第１プロセッサデータ出力ステップと
を有することを特徴とする仮想記憶方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算を行うプロセッサ、仮想メモリシステムおよび仮想記憶方法に関するものである。
【背景技術】
【０００２】
従来から、システムの演算能力を向上させる手段としてマルチプロセッサ方式が提案されている。近年ではプロセスの微細化によって１つのチップに複数のプロセッサコアを搭載させたチップマルチプロセッサ方式も実現されている。
【０００３】
このチップマルチプロセッサ方式では、一般的にチップ内のシステムバスに対して複数のプロセッサ、外部メモリに対するメモリインターフェースおよび外部デバイスインターフェースを接続させる構造が採用されている。チップ内の各プロセッサはメモリインターフェースを通じて外部メモリに対するデータの参照および更新を行いながら処理を進める。
【０００４】
また、プロセッサ間でシステムバスを介して各プロセッサが持っているローカルな組込みメモリに対して直接データの受け渡しを行いながら協調的に処理を進めるものも知られている（例えば「非特許文献１」参照）。
【０００５】
【非特許文献１】“10.2 The Design and Implementation of a First-Generation CELL Processor”D. Pham et al., 2005 IEEE International Solid-State Circuits Conference (ISSCC)
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上述のように、プロセスの微細化によって複数のプロセッサコアを搭載してチップの演算能力を高めることが可能となっている。しかし、複数のプロセッサコアにデータを供給する外部メモリの容量や帯域幅をプロセッサ数に比例して向上させることは物理的にもコスト的にも容易ではない。
【０００７】
この外部メモリに対して複数のプロセッサコアが同時にアクセスを要求すると、限られたメモリ帯域幅の奪い合いとなってしまう。このため、結果的に期待したほどの性能が達成できないという問題が生じてしまう。
【０００８】
また各プロセッサコアが使用可能なメモリ容量も相対的に減少する。このため、メモリ容量の不足により向上した演算能力を十分に生かしきれない事態も生じやすくなる。
【０００９】
またこれらの問題はマルチプロセッサシステムに限らずシングルプロセッサシステムでも同様に起こりうる。微細化によってトランジスタの数が増加する。これをシングルプロセッサコアの速度向上に当てることも可能である。しかし、それに比例するようにデータの容量および帯域幅を上昇させるのは困難である。
【００１０】
本発明は、上記に鑑みてなされたものであって、メモリ容量を向上させることのできるプロセッサを提供することを目的とする。
【課題を解決するための手段】
【００１１】
上述した課題を解決し、目的を達成するために、本発明は、仮想的な記憶領域上のアドレス範囲を指定するアドレス指定手段と、前記アドレス指定手段により指定された前記アドレス範囲が有すべきデータを決定する処理の命令コードを設定する命令コード設定手段と、前記命令コード設定手段が前記アドレス範囲に対して設定した前記命令コードに基づいて、前記アドレス範囲に対するデータを計算する演算手段と、前記アドレス指定手段により指定された前記アドレス範囲に対するロード命令を取得するロード命令取得手段と、前記ロード命令に対するデータとして、前記演算手段が前記ロード命令に示される前記アドレス範囲に対して計算した前記データを出力するデータ出力手段とを備えたことを特徴とする。
【００１２】
また、本発明の他の形態は、第１のプロセッサおよび第２のプロセッサを備えた仮想メモリシステムであって、前記第１のプロセッサおよび前記第２のプロセッサは、それぞれ仮想的な記憶領域上のアドレス範囲を指定するアドレス指定手段と、前記アドレス指定手段により指定された前記アドレス範囲が有すべきデータを決定する処理に対する命令コードを設定する命令コード設定手段と、前記命令コード設定手段が前記アドレス範囲に対して設定した前記命令コードに基づいて、前記アドレス範囲に対するデータを計算する演算手段と、前記アドレス指定手段により指定された前記アドレス範囲に対するロード命令を取得するロード命令取得手段と、前記ロード命令に対するデータとして、前記演算手段が前記ロード命令に示される前記アドレス範囲に対して計算した前記データを出力するデータ出力手段とを有し、前記第１のプロセッサの前記演算手段は、前記第２のプロセッサに対するロード命令を発行し、前記第２のプロセッサの前記ロード命令取得手段は、前記第１のプロセッサから前記ロード命令を取得し、前記第２のプロセッサの前記演算手段は、前記第１のプロセッサから取得した前記ロード命令に対するデータを計算し、前記第２のプロセッサの前記データ出力手段は、前記第２のプロセッサの前記演算手段により得られた前記データを前記第１のプロセッサに出力し、前記第１のプロセッサの前記演算手段は、前記第２のプロセッサから取得したデータを利用して、前記データを計算することを特徴とする。
【００１３】
また、本発明の他の形態は、プロセッサを利用した仮想記憶方法であって、仮想的な記憶領域上のアドレス範囲を指定するアドレス指定ステップと、前記アドレス指定ステップにおいて指定された前記アドレス範囲が有すべきデータを決定する処理の命令コードを設定する命令コード設定ステップと、前記命令コード設定ステップにおいて前記アドレス範囲に対して設定した前記命令コードに基づいて、前記アドレス範囲に対するデータを計算する演算ステップと、前記アドレス指定ステップにおいて指定された前記アドレス範囲に対するロード命令を取得するロード命令取得ステップと、前記ロード命令に対するデータとして、前記演算ステップが前記ロード命令に示される前記アドレス範囲に対して計算した前記データを出力するデータ出力ステップとを有することを特徴とする。
【００１４】
また、本発明の他の形態は、第１のプロセッサおよび第２のプロセッサを利用した仮想記憶方法であって、前記第１のプロセッサにおいて、仮想的な記憶領域上のアドレス範囲を指定する第１プロセッサアドレス指定ステップと、前記第１のプロセッサにおいて、前記第１プロセッサアドレス指定ステップにおいて指定された前記アドレス範囲が有すべきデータを決定する処理の命令コードを設定する第１プロセッサ命令コード設定ステップと、前記第２のプロセッサが、仮想的な記憶領域のアドレス範囲を指定する第２プロセッサアドレス指定ステップと、前記第２のプロセッサが、前記第２プロセッサアドレス指定ステップにおいて指定された前記アドレス範囲が有すべきデータを決定する処理の命令コードを設定する第２プロセッサ命令コード設定ステップと、前記第１のプロセッサが、前記第２のプロセッサに対してロード命令を発行するロード命令発行ステップと、前記第２のプロセッサが、前記ロード命令に示される前記アドレス範囲を指定する第２プロセッサアドレス指定ステップと、前記第２プロセッサが、前記アドレス範囲に対して設定された前記命令コードに基づいて、前記アドレス範囲に対するデータを計算する第２プロセッサ演算ステップと、前記第２プロセッサが、前記第２プロセッサ演算ステップにおいて計算された前記データを前記第１プロセッサに出力する第２プロセッサデータ出力ステップと、前記第１プロセッサが、前記第２プロセッサデータ出力ステップにおいて出力した前記データを利用して、前記アドレス範囲に対するデータを計算する第１プロセッサ演算ステップと、前記第1プロセッサが、前記第１プロセッサアドレス指定ステップにおいて指定された前記アドレス範囲に対するロード命令を取得する第１プロセッサロード命令取得ステップと、前記第１プロセッサが、前記第１プロセッサロード命令取得ステップにおいて取得した前記ロード命令に対するデータとして、前記第１プロセッサ演算ステップにおいて前記ロード命令に示される前記アドレス範囲に対して計算した前記データを出力する第１プロセッサデータ出力ステップとを有することを特徴とする。
【発明の効果】
【００１５】
本発明にかかるプロセッサは、仮想メモリとして機能するので、当該プロセッサを搭載したシステム全体におけるメモリ容量および帯域幅を向上させることができるという効果を奏する。また、このように、メモリ容量を向上させることができるので、演算能力とデータ供給能力のギャップを解消することができるという効果を奏する。
【発明を実施するための最良の形態】
【００１６】
以下に、本発明にかかるプロセッサ、仮想メモリシステムおよび仮想記憶方法の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１７】
（実施の形態１）
図１は、メモリシステム１の全体構成を示すブロック図である。メモリシステム１は、リアクティブ型プロセッサ１０と、マスタープロセッサ２０と、メモリＩ／Ｆ３０と、メモリ４０とを備えている。これらは、システムバス５０に接続されている。
【００１８】
メモリ４０は、実メモリ空間においてリアクティブ型プロセッサ１０が利用するデータなどを保持している。リアクティブ型プロセッサ１０は、仮想メモリ空間を有している。リアクティブ型プロセッサ１０は、仮想メモリ空間上の仮想アドレスに対する計算によりロード命令に対するデータを得る。
【００１９】
マスタープロセッサ２０は、リアクティブ型プロセッサ１０およびメモリＩ／Ｆ３０に対してロードおよびストアを行うことにより処理を進める。マスタープロセッサ２０は、リアクティブ型プロセッサ１０の仮想メモリをデータ領域として利用する場合には、予め各仮想アドレスに対する命令コードと、命令コードが割り当てられるアドレス範囲をリアクティブ型プロセッサ１０の内部レジスタに登録しておく（ＳＴＯＲＥ）。ここで、命令コードとは、各仮想アドレスのデータを計算するためのプログラムである。また、アドレス範囲とは仮想的な記憶領域上の所定の範囲である。マスタープロセッサ２０は、必要に応じて希望の仮想アドレスに対するロード命令を出し（ＬＯＡＤ）、ロード命令に対するデータを取得する（ＤＡＴＡ）。
【００２０】
図２は、リアクティブ型プロセッサ１０の機能構成を示すブロック図である。リアクティブ型プロセッサ１０は、アドレスデコード部１００と、アドレス用命令コード記述バッファ１１０と、プロセシングユニット１２０と、ロードバッファ１３０とを備えている。これらはバス１５０に接続されている。
【００２１】
図２に示すリアクティブ型プロセッサ１０のアドレスデコード部１００は、仮想アドレスＩＤ０〜ＩＤ３の４個のベース指定レジスタを含むベース指定レジスタ群１０２と、仮想アドレスＩＤ０〜ＩＤ３の４個のマスク指定レジスタを含むマスク指定レジスタ群１０４と、アドレス比較部１０６とを有している。
【００２２】
本実施の形態においては、ベース指定レジスタ群１０２は、仮想アドレスＩＤ０〜仮想アドレスＩＤ３の４つのベース指定レジスタを含む。マスク指定レジスタ群１０４は、仮想アドレスＩＤ０〜仮想アドレスＩＤ３の４つのマスク指定レジスタを含む。したがって、４種類のアドレス範囲を同時に保持することができる。
【００２３】
アドレス比較部１０６は、ロード命令に示されるアドレス範囲と、ベース指定レジスタ群１０２およびマスク指定レジスタ群１０４に保持されている値とを比較し、ロード命令に示されるアドレス範囲に対応する仮想アドレスＩＤを特定する。そしてロード命令に付随していたロードタグをロードバッファ１３０のロードＩＤ０〜ロードＩＤ３に登録する。ここで、ロードタグとは、バス上でロード命令を識別するためのロード命令識別情報である。
【００２４】
ロードバッファ１３０は、各ロード命令に対するロードタグを保持する。そして、ロード命令に対する処理が実行される場合に、プロセシングユニット１２０に対してロードタグが登録されたロードＩＤｎを渡す。さらに、プロセシングユニット１２０において実行中のロード命令に対するロードＩＤをアクティブにすることにより、プロセシングユニット１２０において実行中のロード命令を識別する。
【００２５】
アドレス用命令コード記述バッファ１１０は、仮想アドレスＩＤ０〜ＩＤ３の４個のエントリを有している。各エントリには、同一の仮想アドレスＩＤｎ（ｎ＝０〜３）に対応付けられたアドレス範囲に対して実行されるべき命令コードが保持される。
【００２６】
プロセシングユニット１２０は、４つのプロセッサコア（ＰＣＩＤｎ）１２００〜１２０３を有している。さらに、各ＰＣＩＤｎ１２００〜１２０３に対応する４個のバージョンレジスタ１２１０〜１２１３を有している。
【００２７】
各プロセッサコア１２００〜１２０３は、アドレス用命令コード記述バッファ１１０に格納されている命令コードのうち所定の命令コードを実行する。また、各バージョンレジスタ１２１０〜１２１３は、対応するプロセッサコアが実行している命令コードに対応するロードＩＤｎを保持する。
【００２８】
本実施の形態においては、４個のプロセッサコアが設けられており、４個のロードバッファが設けられているので、複数のアドレスに対する同一の命令コードの４個の処理を同時に実行することができる。
【００２９】
なお、各種レジスタ等の個数は、本実施の形態に限定されるものではない。Ｐ個のアドレスを同時に保持可能とするためには、少なくともＰ個のベース指定レジスタ、Ｐ個のマスク指定レジスタおよびＰ個のアドレス用コード記述バッファを設ければよい。
【００３０】
また、Ｑ個のロード命令を同時に処理可能とするためには、ロードバッファ１３０のエントリをＱ個設ければよく、また、プロセシングユニット１２０にＱ個のプロセッサコアおよびＱ個のバージョンレジスタを設ければよい。
【００３１】
なお、複数の処理を同時に行う観点からは、プロセシングユニット１２０は、Ｑ個のマルチプロセッサエレメントを有してもよい。また、プロセシングユニット１２０にリコンフィグロジックを用いてもよい。また、プロセッシングユニットは複数のタスクを同時に実行しそれぞれの処理を識別する機能を有した１個のプロセッサエレメントでもよい。
【００３２】
マスタープロセッサ２０がリアクティブ型プロセッサ１０の仮想メモリのデータを参照するために、以下の仮想アドレス設定処理と、仮想アドレスへのロード処理とが行われる。図３は、仮想アドレス設定処理を示すフローチャートである。まずベース指定レジスタ群１０２に設定したい仮想メモリアドレスの開始アドレスを書き込む(ステップＳ１００)。さらに、マスク指定レジスタ群１０４に仮想メモリのサイズに相当するマスク値を書き込む(ステップＳ１０２)。なおこのとき、同一の仮想アドレスＩＤｎ（ｎ＝０〜３）で識別されるベースレジスタおよびマスクレジスタにそれぞれ開始アドレスとマスク値を書き込む。
【００３３】
次に、アドレス用命令コード記述バッファ１１０のうちステップＳ１００およびステップＳ１０２において設定した仮想アドレスＩＤに対応するエントリである、コードＩＤｎ（ｎ＝０〜３）に命令コードを書き込む(ステップＳ１０４)。以上で、仮想アドレス設定処理が完了する。
【００３４】
例えばベース指定レジスタ群１０２の仮想アドレスＩＤ０に開始アドレスを書き込む場合には、マスク指定レジスタ群１０４の仮想アドレスＩＤ０にマスク値を書き込む。そして、アドレス用命令コード記述バッファ１１０のうち仮想アドレスＩＤ０に対応するエントリ、コードＩＤ０に命令コードを書き込む。このように、アドレス範囲および命令コードをそれぞれ同一の仮想アドレスＩＤに対応付けて保持することにより、仮想アドレスＩＤに基づいて、アドレス範囲とこれに対応する命令コードを特定することができる。
【００３５】
図４は、仮想アドレスへのロード処理を示すフローチャートである。まず、アドレスデコード部１００は、マスタープロセッサ２０が発行したロード命令を取得する(ステップＳ２００)。アドレス比較部１０６は、ロード命令に示されるアドレス範囲とベース指定レジスタ群１０２に書き込まれた開始アドレスおよびマスク指定レジスタ群１０４に書き込まれたマスク値とを比較し、対応するアドレスが書き込まれている仮想アドレスＩＤを特定する(ステップＳ２０２)。
【００３６】
次に、アドレス比較部１０６は、特定した仮想アドレスＩＤと、オフセット値をプロセシングユニット１２０に渡す(ステップＳ２０４)。ロードタグをロードバッファ１３０に登録する(ステップＳ２０８)。ロードタグを登録したロードバッファ１３０のエントリ番号であるロードＩＤｎは、プロセシングユニット１２０のうち所定のプロセッサコアＩＤｎに渡される(ステップＳ２１０)。さらに対応するバージョンレジスタＩＤｎにロードＩＤｎが設定される。
【００３７】
そして、ロードバッファ１３０に登録されているこのロードＩＤｎをアクティブにする(ステップＳ２１２)。さらに、アドレス用命令コード記述バッファ１１０における、プロセッサコアＩＤｎに対応するコードＩＤｎの開始アドレスをセットする（ステップＳ２１４）。プロセッサコアＩＤｎは、命令コードにしたがって計算を実行する（ステップＳ２１６）。
【００３８】
計算が完了するとプロセッサコアＩＤｎは、計算結果であるデータと、バージョンレジスタに登録されているロードＩＤｎとを対応付けて、ロードバッファ１３０に返す（ステップＳ２１８）。ロードバッファ１３０は、受け取ったデータをロードＩＤｎにより識別されるロード命令に対するデータとしてロードタグとともにマスタープロセッサ２０に返す（ステップＳ２２０）。以上で、仮想アドレスへのロード処理が完了する。
【００３９】
なお、アドレス用命令コード記述バッファ１１０に登録される命令コードは、ロードアクセスされたアドレスのオフセット値（＄ｏｆｆｓｅｔ）を参照可能であることが望ましい。これにより、１つのコードで連続した配列データを定義することができる。この場合、データ出力用の特別なレジスタ（＄ｒｅｓｕｌｔ）に書き込まれた値が、ロード命令に対するデータとして出力される。
【００４０】
以上のように、マスタープロセッサ２０は、メモリＩ／Ｆ３０からは計算済みのデータを取得するのに対し、リアクティブ型プロセッサ１０からはロード時に計算されたデータを取得することとなる。しかし、メモリＩ／Ｆ３０およびリアクティブ型プロセッサ１０は、同一のメモリ空間上にフラットにマップされているので、マスタープロセッサ２０は、実メモリか仮想メモリかの区別なく同様の処理を行うことができる。
【００４１】
図５は、メモリマップの一例を示す図である。図５に示すメモリマップには、実メモリと仮想メモリが割り当てられている。さらに、仮想メモリのうち仮想アドレスＩＤ０に「（１／ｓｑｒｔ（＄ｏｆｆｓｅｔ＞＞２）＾４）という命令コードが割り当てられ、仮想アドレスＩＤ１に「ｆｒａｃｔａｌ（＄ｏｆｆｓｅｔ＞＞２）」という式が割り当てられている。
【００４２】
ここで「＄ｏｆｆｓｅｔ」は各仮想領域の開始アドレスからのバイトアドレスオフセット値であり、４バイト単位でデータが定義されていることを示している。また仮想アドレスＩＤ２、仮想アドレスＩＤ３は、未割り当て状態である。
【００４３】
既存のシステムは、既に計算済みのデータに対してのみアクセス可能である。これに対し、本実施の形態におけるリアクティブ型プロセッサ１０は、仮想アドレスに対する命令コードの登録が完了すれば、その後は、割り当てられたいずれの仮想アドレスに対しても自由なタイミングでアクセスすることができる。
【００４４】
したがって、データ並列性の高い演算においては、複数台のリアクティブ型プロセッサ１０を搭載したメモリシステムにおいて処理を行う場合には、既存のマルチプロセッサシステムで処理を行う場合に比べて、より最適な並列処理を行うことができる。また、この場合には、同期処理も不要である。
【００４５】
さらに、ベース指定レジスタ、マスク指定レジスタおよびアドレス用命令コード記述バッファをシステムバス５０上にフラットにマップすることにより、マスタープロセッサ２０は、通常のストア命令を用いてこれらのパラメータを設定することができる。
【００４６】
以上、本発明を実施の形態を用いて説明したが、上記実施の形態に多様な変更または改良を加えることができる。
【００４７】
そうした第１の変更例としては、リアクティブ型プロセッサ１０は、直接メモリ４０にアクセス可能であってもよい。図６は、この場合のリアクティブ型プロセッサ１０の機能構成を示すブロック図である。図６に示すように、プロセシングユニット１２０は、メモリＩ／Ｆ機能を備え、メモリ４０に直接アクセスすることができる。この場合には、各プロセッサコアは、メモリ４０にロード命令を発行し、ロード、ストアを行いながら計算を行う。
【００４８】
また、第２の変更例としては、リアクティブ型プロセッサ１０は、システムバス５０を介してメモリＩ／Ｆ３０またはリアクティブ型プロセッサ１０にアクセス可能であってもよい。図７は、この場合のリアクティブ型プロセッサ１０の機能構成を示すブロック図である。図７に示すように、プロセシングユニット１２０は、システムバス５０を介してメモリＩ／Ｆ３０またはリアクティブ型プロセッサ１０にアクセスすることができる。この場合には、第１の変更例にかかる場合と同様に、各プロセッサコアは、メモリ４０にロード、ストアを行いながら計算を行う。また、リアクティブ型プロセッサ１０に対してロード、ストアを行いながら、多重的に仮想メモリ内での演算を実行することもできる。
【００４９】
また、図８は、第３の変更例にかかるメモリシステム１の全体構成を示すブロック図である。第３の変更例にかかるメモリシステム１は、複数のリアクティブ型プロセッサ１０ａ，１０ｂを備えてもよい。この場合には、各リアクティブ型プロセッサ１０ａ，１０ｂのうち一方は、他方の仮想メモリに対するロード命令を発行し、ロード、ストアを行いながら計算を行う。これにより、再帰的または連続的に仮想メモリ内における演算を行うことができる。
【００５０】
（実施の形態２）
図９は、実施の形態２にかかるメモリシステム１におけるリアクティブ型プロセッサ１０の機能構成を示すブロック図である。実施の形態２にかかるメモリシステム１のリアクティブ型プロセッサ１０は、投機的実行部１４０をさらに有している。投機的実行部１４０は、スケジューラ１４２と、データキャッシュ１４４とを有している。
【００５１】
スケジューラ１４２は、アドレスデコード部１００およびアドレス用命令コード記述バッファ１１０に登録されるアドレスおよび命令コードの更新状況を確認しながら、マスタープロセッサ２０から発行されるロード命令を予測する。そして、プロセシングユニット１２０に対し、ロード命令に対するデータの計算を命令する。データキャッシュ１４４は、スケジューラ１４２の命令により得られたデータを保持する。
【００５２】
図１０は、実施の形態２にかかる仮想アドレス設定処理を示すフローチャートである。ステップＳ１００からステップＳ１０４までの処理は、それぞれ実施の形態１において図３を参照しつつ説明したステップＳ１００からステップＳ１０４までの処理と同様である。さらに命令コードを設定した後、投機的演算を行う（ステップＳ１１０）。
【００５３】
図１１は、投機的演算（ステップＳ１１０）における詳細な処理を示すフローチャートである。まず、スケジューラ１４２は、アドレス用命令コード記述バッファ１１０に計算させるアドレスを決定する（ステップＳ１１２）。スケジューラ１４２は、具体的には、アドレスデコード部１００に登録されるアドレスの更新状況およびアドレス用命令コード記述バッファ１１０に保持されている命令コードの更新状況に基づいて、計算させるアドレスを決定する。具体的には、アドレスデコード部１００およびアドレス用命令コード記述バッファ１１０に新たに登録されたアドレスを、計算させるアドレスとして決定する。
【００５４】
次に、決定したアドレスに対応する仮想アドレスＩＤを特定する（ステップＳ１１４）。次に、特定した仮想アドレスＩＤおよびオフセット値をプロセシングユニット１２０のプロセッサコアＩＤｎ（ｎ＝０〜３）１２００〜１２０３のいずれかに渡す（ステップＳ１１６）。さらに、スケジューラ１４２は、投機的ロードＩＤを生成する（ステップＳ１１８）。ここで、投機的ロードＩＤとは、ロードバッファ１３０が持つロードＩＤとは異なる識別情報であり、スケジューラ１４２に固有の識別情報である。このように、ロードＩＤと投機的ロードＩＤとを識別する。これにより、プロセシングユニット１２０は、マスタープロセッサ２０からのロード命令であるか、スケジューラ１４２からの投機的実行の命令であるのかを判別することができる。
【００５５】
次に、投機的ロードＩＤをプロセシングユニット１２０のプロセッサコアＩＤｎ（ｎ＝０〜３）１２００〜１２０３のうち所定のプロセッサコアＩＤｎに渡す（ステップＳ１２０）。さらに、対応する命令コードを所定のプロセッサコアＩＤｎにセットする（ステップＳ１２２）。次に、プロセッサコアＩＤｎは、計算を実行する（ステップＳ１２４）。得られたデータは、仮想アドレスＩＤおよびオフセット値と対応付けてデータキャッシュ１４４に格納される（ステップＳ１２６）。以上で、投機的演算（ステップＳ１１０）が完了する。
【００５６】
なおプロセッサコアＩＤｎは、得られたデータを、投機的ロードＩＤに対応付けてデータキャッシュ１４４に渡す。したがって、データキャッシュ１４４は、このデータが、スケジューラ１４２の命令に対するデータであることを判別することができる。
【００５７】
図１２は、実施の形態２にかかる仮想アドレスへのロード処理を示すフローチャートである。ステップＳ２００およびステップＳ２０２における処理は、それぞれ実施の形態１において図４を参照しつつ説明したステップＳ２００およびステップＳ２０２の処理と同様である。そして、仮想アドレスＩＤおよびオフセット値を投機的実行部１４０に渡す（ステップＳ２３０）。次にロードタグをロードバッファ１３０に登録する（ステップＳ２０８）。
【００５８】
さらに、ロードタグが登録されたロードＩＤｎを投機的実行部１４０に渡す（ステップＳ２３２）。スケジューラ１４２は、ステップＳ２３０において取得した仮想アドレスＩＤおよびオフセット値と、ロード命令に示されるアドレス範囲とを比較し、このアドレス範囲が計算済みか否かを確認する。計算済みである場合には（ステップＳ２３４，Ｙｅｓ）、データキャッシュ１４４に格納されているデータを、ロードＩＤｎとともにロードバッファ１３０に返す（ステップＳ２３６）。ロードバッファ１３０は、受け取ったデータをロードＩＤｎにより識別されるロード命令に対するデータとしてロードタグとともにマスタープロセッサ２０に返す（ステップＳ２２０）。
【００５９】
また、ステップＳ２３４において、ロード命令に示されるアドレス範囲が計算済みでない場合には（ステップＳ２３４，Ｎｏ）、ステップＳ２１０へ進む。ステップＳ２１０からステップＳ２１８までの処理は、それぞれ実施の形態１において図４を参照しつつ説明したステップ２１０からステップＳ２１８までの処理と同様である。以上で、仮想アドレスへのロード処理が完了する。
【００６０】
このように、実施の形態２においては、ロード命令を取得するタイミングよりも前のタイミングで、予めロード命令を取得するのを予測して、対応するアドレス範囲のデータを計算しておく。このため、ロード命令を取得した後で計算を行うことなく、既に計算により得られたデータを返すことができる。これにより、マスタープロセッサ２０に対し、より高速にデータを返すことができる。
【００６１】
なお、実施の形態２にかかるメモリシステム１のこれ以外の構成および処理は、実施の形態１にかかるメモリシステム１の構成および処理と同様である。
【００６２】
以上のように、上記実施の形態によれば、仮想メモリ領域をシステムに搭載することにより、マスタープロセッサ２０から見えるメモリ領域を容易に拡張することができる。また、実メモリとは異なるポートからデータを取り出すことが可能となるため、システム全体としてのメモリの帯域幅を大幅に向上させることが可能となる。
【００６３】
仮想メモリの演算能力（システム的に見るとデータ供給能力）はプロセス微細化による演算能力向上と同様の向上を得ることが期待できる。したがって、プロセス微細化による演算能力とデータ供給能力間のギャップを解消することができる。
【００６４】
またプログラム中で動的に演算されるデータだけでなく、たとえば３Ｄグラフィックシステムにおけるテクスチャデータなどのようなスタティックなデータを保持する場合にも適用することができる。
【００６５】
具体的には、スタティックなデータを仮想メモリのプログラムとして記述しておく。そして、必要に応じてこれらのデータを読み出して利用することができる。これにより仮想メモリのプログラムとして記述可能なテクスチャデータは仮想メモリから読み出し、それ以外のテクスチャデータは従来の実メモリによる記憶装置に格納することが可能となる。したがって、高画質化に伴って圧迫される傾向にあるグラフィックメモリの容量を容易に増やすことができる。
【００６６】
一方でこの仮想メモリに対してロード要求を出すプロセッサから見ると、この仮想メモリ上のプロセッサは自分と協調して動作するプロセッサの一つであるとも考えられ、システム全体ではマルチプロセッサシステムを構成していることになる。すなわち、上記実施の形態にかかるメモリシステム１は、マルチプロセッサシステムにおけるプロセッサ同士の新しい協調動作のための手段と見なすこともできる。
【図面の簡単な説明】
【００６７】
【図１】メモリシステム１の全体構成を示すブロック図である。
【図２】リアクティブ型プロセッサ１０の機能構成を示すブロック図である。
【図３】仮想アドレス設定処理を示すフローチャートである。
【図４】仮想アドレスへのロード処理を示すフローチャートである。
【図５】メモリマップの一例を示す図である。
【図６】第１の変更例にかかるリアクティブ型プロセッサ１０の機能構成を示すブロック図である。
【図７】第２の変更例にかかるリアクティブ型プロセッサ１０の機能構成を示すブロック図である。
【図８】第３の変更例にかかるメモリシステム１の全体構成を示すブロック図である。
【図９】実施の形態２にかかるメモリシステム１におけるリアクティブ型プロセッサ１０の機能構成を示すブロック図である。
【図１０】実施の形態２にかかる仮想アドレス設定処理を示すフローチャートである。
【図１１】投機的演算（ステップＳ１１０）における詳細な処理を示すフローチャートである。
【図１２】実施の形態２にかかる仮想アドレスへのロード処理を示すフローチャートである。
【符号の説明】
【００６８】
１  メモリシステム
１０  リアクティブ型プロセッサ
２０  マスタープロセッサ
３０  メモリＩ／Ｆ
４０  メモリ
５０  システムバス
１００  アドレスデコード部
１０２  ベース指定レジスタ群
１０４  マスク指定レジスタ群
１０６  アドレス比較部
１１０  アドレス用命令コード記述バッファ
１２０  プロセシングユニット
１３０  ロードバッファ
１４０  投機的実行部
１４２  スケジューラ
１４４  データキャッシュ
１５０  バス
１２００〜１２０３  プロセッサコア
１２１０〜１２１３  バージョンレジスタ
【図１】
2007011878.tif 000003
【図２】
2007011878.tif 000004
【図３】
2007011878.tif 000005
【図４】
2007011878.tif 000006
【図５】
2007011878.tif 000007
【図６】
2007011878.tif 000008
【図７】
2007011878.tif 000009
【図８】
2007011878.tif 000010
【図９】
2007011878.tif 000011
【図１０】
2007011878.tif 000012
【図１１】
2007011878.tif 000013
【図１２】
2007011878.tif 000014
【手続補正書】
【提出日】平成18年1月6日(2006.1.6)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項４
【補正方法】変更
【補正の内容】
【請求項４】
前記データ管理手段は、前記ロード命令取得手段が前記ロード命令を取得したときに、前記ロード命令に示される前記アドレス範囲に対する前記データが前記データ保持手段に保持されていない場合には、前記演算手段に対し、前記アドレス範囲に対するデータを計算させることを特徴とする請求項３に記載のプロセッサ。