JP4287411B2 - 仮想メモリシステムおよび仮想記憶方法 - Google Patents

仮想メモリシステムおよび仮想記憶方法 Download PDF

Info

Publication number
JP4287411B2
JP4287411B2 JP2005194086A JP2005194086A JP4287411B2 JP 4287411 B2 JP4287411 B2 JP 4287411B2 JP 2005194086 A JP2005194086 A JP 2005194086A JP 2005194086 A JP2005194086 A JP 2005194086A JP 4287411 B2 JP4287411 B2 JP 4287411B2
Authority
JP
Japan
Prior art keywords
data
processor
instruction
address range
address
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.)
Expired - Fee Related
Application number
JP2005194086A
Other languages
English (en)
Other versions
JP2007011878A (ja
Inventor
秀則 松崎
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2005194086A priority Critical patent/JP4287411B2/ja
Priority to US11/326,194 priority patent/US7444492B2/en
Publication of JP2007011878A publication Critical patent/JP2007011878A/ja
Priority to US12/232,454 priority patent/US20090055622A1/en
Application granted granted Critical
Publication of JP4287411B2 publication Critical patent/JP4287411B2/ja
Expired - Fee Related 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • 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/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Description

本発明は、演算を行うプロセッサを備えた仮想メモリシステムおよび仮想記憶方法に関するものである。
従来から、システムの演算能力を向上させる手段としてマルチプロセッサ方式が提案されている。近年ではプロセスの微細化によって1つのチップに複数のプロセッサコアを搭載させたチップマルチプロセッサ方式も実現されている。
このチップマルチプロセッサ方式では、一般的にチップ内のシステムバスに対して複数のプロセッサ、外部メモリに対するメモリインターフェースおよび外部デバイスインターフェースを接続させる構造が採用されている。チップ内の各プロセッサはメモリインターフェースを通じて外部メモリに対するデータの参照および更新を行いながら処理を進める。
また、プロセッサ間でシステムバスを介して各プロセッサが持っているローカルな組込みメモリに対して直接データの受け渡しを行いながら協調的に処理を進めるものも知られている(例えば「非特許文献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)
図1は、メモリシステム1の全体構成を示すブロック図である。メモリシステム1は、リアクティブ型プロセッサ10と、マスタープロセッサ20と、メモリI/F30と、メモリ40とを備えている。これらは、システムバス50に接続されている。
メモリ40は、実メモリ空間においてリアクティブ型プロセッサ10が利用するデータなどを保持している。リアクティブ型プロセッサ10は、仮想メモリ空間を有している。リアクティブ型プロセッサ10は、仮想メモリ空間上の仮想アドレスに対する計算によりロード命令に対するデータを得る。
マスタープロセッサ20は、リアクティブ型プロセッサ10およびメモリI/F30に対してロードおよびストアを行うことにより処理を進める。マスタープロセッサ20は、リアクティブ型プロセッサ10の仮想メモリをデータ領域として利用する場合には、予め各仮想アドレスに対する命令コードと、命令コードが割り当てられるアドレス範囲をリアクティブ型プロセッサ10の内部レジスタに登録しておく(STORE)。ここで、命令コードとは、各仮想アドレスのデータを計算するためのプログラムである。また、アドレス範囲とは仮想的な記憶領域上の所定の範囲である。マスタープロセッサ20は、必要に応じて希望の仮想アドレスに対するロード命令を出し(LOAD)、ロード命令に対するデータを取得する(DATA)。
図2は、リアクティブ型プロセッサ10の機能構成を示すブロック図である。リアクティブ型プロセッサ10は、アドレスデコード部100と、アドレス用命令コード記述バッファ110と、プロセシングユニット120と、ロードバッファ130とを備えている。これらはバス150に接続されている。
図2に示すリアクティブ型プロセッサ10のアドレスデコード部100は、仮想アドレスID0〜ID3の4個のベース指定レジスタを含むベース指定レジスタ群102と、仮想アドレスID0〜ID3の4個のマスク指定レジスタを含むマスク指定レジスタ群104と、アドレス比較部106とを有している。
本実施の形態においては、ベース指定レジスタ群102は、仮想アドレスID0〜仮想アドレスID3の4つのベース指定レジスタを含む。マスク指定レジスタ群104は、仮想アドレスID0〜仮想アドレスID3の4つのマスク指定レジスタを含む。したがって、4種類のアドレス範囲を同時に保持することができる。
アドレス比較部106は、ロード命令に示されるアドレス範囲と、ベース指定レジスタ群102およびマスク指定レジスタ群104に保持されている値とを比較し、ロード命令に示されるアドレス範囲に対応する仮想アドレスIDを特定する。そしてロード命令に付随していたロードタグをロードバッファ130のロードID0〜ロードID3に登録する。ここで、ロードタグとは、バス上でロード命令を識別するためのロード命令識別情報である。
ロードバッファ130は、各ロード命令に対するロードタグを保持する。そして、ロード命令に対する処理が実行される場合に、プロセシングユニット120に対してロードタグが登録されたロードIDnを渡す。さらに、プロセシングユニット120において実行中のロード命令に対するロードIDをアクティブにすることにより、プロセシングユニット120において実行中のロード命令を識別する。
アドレス用命令コード記述バッファ110は、仮想アドレスID0〜ID3の4個のエントリを有している。各エントリには、同一の仮想アドレスIDn(n=0〜3)に対応付けられたアドレス範囲に対して実行されるべき命令コードが保持される。
プロセシングユニット120は、4つのプロセッサコア(PCIDn)1200〜1203を有している。さらに、各PCIDn1200〜1203に対応する4個のバージョンレジスタ1210〜1213を有している。
各プロセッサコア1200〜1203は、アドレス用命令コード記述バッファ110に格納されている命令コードのうち所定の命令コードを実行する。また、各バージョンレジスタ1210〜1213は、対応するプロセッサコアが実行している命令コードに対応するロードIDnを保持する。
本実施の形態においては、4個のプロセッサコアが設けられており、4個のロードバッファが設けられているので、複数のアドレスに対する同一の命令コードの4個の処理を同時に実行することができる。
なお、各種レジスタ等の個数は、本実施の形態に限定されるものではない。P個のアドレスを同時に保持可能とするためには、少なくともP個のベース指定レジスタ、P個のマスク指定レジスタおよびP個のアドレス用コード記述バッファを設ければよい。
また、Q個のロード命令を同時に処理可能とするためには、ロードバッファ130のエントリをQ個設ければよく、また、プロセシングユニット120にQ個のプロセッサコアおよびQ個のバージョンレジスタを設ければよい。
なお、複数の処理を同時に行う観点からは、プロセシングユニット120は、Q個のマルチプロセッサエレメントを有してもよい。また、プロセシングユニット120にリコンフィグロジックを用いてもよい。また、プロセッシングユニットは複数のタスクを同時に実行しそれぞれの処理を識別する機能を有した1個のプロセッサエレメントでもよい。
マスタープロセッサ20がリアクティブ型プロセッサ10の仮想メモリのデータを参照するために、以下の仮想アドレス設定処理と、仮想アドレスへのロード処理とが行われる。図3は、仮想アドレス設定処理を示すフローチャートである。まずベース指定レジスタ群102に設定したい仮想メモリアドレスの開始アドレスを書き込む(ステップS100)。さらに、マスク指定レジスタ群104に仮想メモリのサイズに相当するマスク値を書き込む(ステップS102)。なおこのとき、同一の仮想アドレスIDn(n=0〜3)で識別されるベースレジスタおよびマスクレジスタにそれぞれ開始アドレスとマスク値を書き込む。
次に、アドレス用命令コード記述バッファ110のうちステップS100およびステップS102において設定した仮想アドレスIDに対応するエントリである、コードIDn(n=0〜3)に命令コードを書き込む(ステップS104)。以上で、仮想アドレス設定処理が完了する。
例えばベース指定レジスタ群102の仮想アドレスID0に開始アドレスを書き込む場合には、マスク指定レジスタ群104の仮想アドレスID0にマスク値を書き込む。そして、アドレス用命令コード記述バッファ110のうち仮想アドレスID0に対応するエントリ、コードID0に命令コードを書き込む。このように、アドレス範囲および命令コードをそれぞれ同一の仮想アドレスIDに対応付けて保持することにより、仮想アドレスIDに基づいて、アドレス範囲とこれに対応する命令コードを特定することができる。
図4は、仮想アドレスへのロード処理を示すフローチャートである。まず、アドレスデコード部100は、マスタープロセッサ20が発行したロード命令を取得する(ステップS200)。アドレス比較部106は、ロード命令に示されるアドレス範囲とベース指定レジスタ群102に書き込まれた開始アドレスおよびマスク指定レジスタ群104に書き込まれたマスク値とを比較し、対応するアドレスが書き込まれている仮想アドレスIDを特定する(ステップS202)。
次に、アドレス比較部106は、特定した仮想アドレスIDと、オフセット値をプロセシングユニット120に渡す(ステップS204)。ロードタグをロードバッファ130に登録する(ステップS208)。ロードタグを登録したロードバッファ130のエントリ番号であるロードIDnは、プロセシングユニット120のうち所定のプロセッサコアIDnに渡される(ステップS210)。さらに対応するバージョンレジスタIDnにロードIDnが設定される。
そして、ロードバッファ130に登録されているこのロードIDnをアクティブにする(ステップS212)。さらに、アドレス用命令コード記述バッファ110における、プロセッサコアIDnに対応するコードIDnの開始アドレスをセットする(ステップS214)。プロセッサコアIDnは、命令コードにしたがって計算を実行する(ステップS216)。
計算が完了するとプロセッサコアIDnは、計算結果であるデータと、バージョンレジスタに登録されているロードIDnとを対応付けて、ロードバッファ130に返す(ステップS218)。ロードバッファ130は、受け取ったデータをロードIDnにより識別されるロード命令に対するデータとしてロードタグとともにマスタープロセッサ20に返す(ステップS220)。以上で、仮想アドレスへのロード処理が完了する。
なお、アドレス用命令コード記述バッファ110に登録される命令コードは、ロードアクセスされたアドレスのオフセット値($offset)を参照可能であることが望ましい。これにより、1つのコードで連続した配列データを定義することができる。この場合、データ出力用の特別なレジスタ($result)に書き込まれた値が、ロード命令に対するデータとして出力される。
以上のように、マスタープロセッサ20は、メモリI/F30からは計算済みのデータを取得するのに対し、リアクティブ型プロセッサ10からはロード時に計算されたデータを取得することとなる。しかし、メモリI/F30およびリアクティブ型プロセッサ10は、同一のメモリ空間上にフラットにマップされているので、マスタープロセッサ20は、実メモリか仮想メモリかの区別なく同様の処理を行うことができる。
図5は、メモリマップの一例を示す図である。図5に示すメモリマップには、実メモリと仮想メモリが割り当てられている。さらに、仮想メモリのうち仮想アドレスID0に「(1/sqrt($offset>>2)^4)という命令コードが割り当てられ、仮想アドレスID1に「fractal($offset>>2)」という式が割り当てられている。
ここで「$offset」は各仮想領域の開始アドレスからのバイトアドレスオフセット値であり、4バイト単位でデータが定義されていることを示している。また仮想アドレスID2、仮想アドレスID3は、未割り当て状態である。
既存のシステムは、既に計算済みのデータに対してのみアクセス可能である。これに対し、本実施の形態におけるリアクティブ型プロセッサ10は、仮想アドレスに対する命令コードの登録が完了すれば、その後は、割り当てられたいずれの仮想アドレスに対しても自由なタイミングでアクセスすることができる。
したがって、データ並列性の高い演算においては、複数台のリアクティブ型プロセッサ10を搭載したメモリシステムにおいて処理を行う場合には、既存のマルチプロセッサシステムで処理を行う場合に比べて、より最適な並列処理を行うことができる。また、この場合には、同期処理も不要である。
さらに、ベース指定レジスタ、マスク指定レジスタおよびアドレス用命令コード記述バッファをシステムバス50上にフラットにマップすることにより、マスタープロセッサ20は、通常のストア命令を用いてこれらのパラメータを設定することができる。
以上、本発明を実施の形態を用いて説明したが、上記実施の形態に多様な変更または改良を加えることができる。
そうした第1の変更例としては、リアクティブ型プロセッサ10は、直接メモリ40にアクセス可能であってもよい。図6は、この場合のリアクティブ型プロセッサ10の機能構成を示すブロック図である。図6に示すように、プロセシングユニット120は、メモリI/F機能を備え、メモリ40に直接アクセスすることができる。この場合には、各プロセッサコアは、メモリ40にロード命令を発行し、ロード、ストアを行いながら計算を行う。
また、第2の変更例としては、リアクティブ型プロセッサ10は、システムバス50を介してメモリI/F30またはリアクティブ型プロセッサ10にアクセス可能であってもよい。図7は、この場合のリアクティブ型プロセッサ10の機能構成を示すブロック図である。図7に示すように、プロセシングユニット120は、システムバス50を介してメモリI/F30またはリアクティブ型プロセッサ10にアクセスすることができる。この場合には、第1の変更例にかかる場合と同様に、各プロセッサコアは、メモリ40にロード、ストアを行いながら計算を行う。また、リアクティブ型プロセッサ10に対してロード、ストアを行いながら、多重的に仮想メモリ内での演算を実行することもできる。
また、図8は、第3の変更例にかかるメモリシステム1の全体構成を示すブロック図である。第3の変更例にかかるメモリシステム1は、複数のリアクティブ型プロセッサ10a,10bを備えてもよい。この場合には、各リアクティブ型プロセッサ10a,10bのうち一方は、他方の仮想メモリに対するロード命令を発行し、ロード、ストアを行いながら計算を行う。これにより、再帰的または連続的に仮想メモリ内における演算を行うことができる。
(実施の形態2)
図9は、実施の形態2にかかるメモリシステム1におけるリアクティブ型プロセッサ10の機能構成を示すブロック図である。実施の形態2にかかるメモリシステム1のリアクティブ型プロセッサ10は、投機的実行部140をさらに有している。投機的実行部140は、スケジューラ142と、データキャッシュ144とを有している。
スケジューラ142は、アドレスデコード部100およびアドレス用命令コード記述バッファ110に登録されるアドレスおよび命令コードの更新状況を確認しながら、マスタープロセッサ20から発行されるロード命令を予測する。そして、プロセシングユニット120に対し、ロード命令に対するデータの計算を命令する。データキャッシュ144は、スケジューラ142の命令により得られたデータを保持する。
図10は、実施の形態2にかかる仮想アドレス設定処理を示すフローチャートである。ステップS100からステップS104までの処理は、それぞれ実施の形態1において図3を参照しつつ説明したステップS100からステップS104までの処理と同様である。さらに命令コードを設定した後、投機的演算を行う(ステップS110)。
図11は、投機的演算(ステップS110)における詳細な処理を示すフローチャートである。まず、スケジューラ142は、アドレス用命令コード記述バッファ110に計算させるアドレスを決定する(ステップS112)。スケジューラ142は、具体的には、アドレスデコード部100に登録されるアドレスの更新状況およびアドレス用命令コード記述バッファ110に保持されている命令コードの更新状況に基づいて、計算させるアドレスを決定する。具体的には、アドレスデコード部100およびアドレス用命令コード記述バッファ110に新たに登録されたアドレスを、計算させるアドレスとして決定する。
次に、決定したアドレスに対応する仮想アドレスIDを特定する(ステップS114)。次に、特定した仮想アドレスIDおよびオフセット値をプロセシングユニット120のプロセッサコアIDn(n=0〜3)1200〜1203のいずれかに渡す(ステップS116)。さらに、スケジューラ142は、投機的ロードIDを生成する(ステップS118)。ここで、投機的ロードIDとは、ロードバッファ130が持つロードIDとは異なる識別情報であり、スケジューラ142に固有の識別情報である。このように、ロードIDと投機的ロードIDとを識別する。これにより、プロセシングユニット120は、マスタープロセッサ20からのロード命令であるか、スケジューラ142からの投機的実行の命令であるのかを判別することができる。
次に、投機的ロードIDをプロセシングユニット120のプロセッサコアIDn(n=0〜3)1200〜1203のうち所定のプロセッサコアIDnに渡す(ステップS120)。さらに、対応する命令コードを所定のプロセッサコアIDnにセットする(ステップS122)。次に、プロセッサコアIDnは、計算を実行する(ステップS124)。得られたデータは、仮想アドレスIDおよびオフセット値と対応付けてデータキャッシュ144に格納される(ステップS126)。以上で、投機的演算(ステップS110)が完了する。
なおプロセッサコアIDnは、得られたデータを、投機的ロードIDに対応付けてデータキャッシュ144に渡す。したがって、データキャッシュ144は、このデータが、スケジューラ142の命令に対するデータであることを判別することができる。
図12は、実施の形態2にかかる仮想アドレスへのロード処理を示すフローチャートである。ステップS200およびステップS202における処理は、それぞれ実施の形態1において図4を参照しつつ説明したステップS200およびステップS202の処理と同様である。そして、仮想アドレスIDおよびオフセット値を投機的実行部140に渡す(ステップS230)。次にロードタグをロードバッファ130に登録する(ステップS208)。
さらに、ロードタグが登録されたロードIDnを投機的実行部140に渡す(ステップS232)。スケジューラ142は、ステップS230において取得した仮想アドレスIDおよびオフセット値と、ロード命令に示されるアドレス範囲とを比較し、このアドレス範囲が計算済みか否かを確認する。計算済みである場合には(ステップS234,Yes)、データキャッシュ144に格納されているデータを、ロードIDnとともにロードバッファ130に返す(ステップS236)。ロードバッファ130は、受け取ったデータをロードIDnにより識別されるロード命令に対するデータとしてロードタグとともにマスタープロセッサ20に返す(ステップS220)。
また、ステップS234において、ロード命令に示されるアドレス範囲が計算済みでない場合には(ステップS234,No)、ステップS210へ進む。ステップS210からステップS218までの処理は、それぞれ実施の形態1において図4を参照しつつ説明したステップ210からステップS218までの処理と同様である。以上で、仮想アドレスへのロード処理が完了する。
このように、実施の形態2においては、ロード命令を取得するタイミングよりも前のタイミングで、予めロード命令を取得するのを予測して、対応するアドレス範囲のデータを計算しておく。このため、ロード命令を取得した後で計算を行うことなく、既に計算により得られたデータを返すことができる。これにより、マスタープロセッサ20に対し、より高速にデータを返すことができる。
なお、実施の形態2にかかるメモリシステム1のこれ以外の構成および処理は、実施の形態1にかかるメモリシステム1の構成および処理と同様である。
以上のように、上記実施の形態によれば、仮想メモリ領域をシステムに搭載することにより、マスタープロセッサ20から見えるメモリ領域を容易に拡張することができる。また、実メモリとは異なるポートからデータを取り出すことが可能となるため、システム全体としてのメモリの帯域幅を大幅に向上させることが可能となる。
仮想メモリの演算能力(システム的に見るとデータ供給能力)はプロセス微細化による演算能力向上と同様の向上を得ることが期待できる。したがって、プロセス微細化による演算能力とデータ供給能力間のギャップを解消することができる。
またプログラム中で動的に演算されるデータだけでなく、たとえば3Dグラフィックシステムにおけるテクスチャデータなどのようなスタティックなデータを保持する場合にも適用することができる。
具体的には、スタティックなデータを仮想メモリのプログラムとして記述しておく。そして、必要に応じてこれらのデータを読み出して利用することができる。これにより仮想メモリのプログラムとして記述可能なテクスチャデータは仮想メモリから読み出し、それ以外のテクスチャデータは従来の実メモリによる記憶装置に格納することが可能となる。したがって、高画質化に伴って圧迫される傾向にあるグラフィックメモリの容量を容易に増やすことができる。
一方でこの仮想メモリに対してロード要求を出すプロセッサから見ると、この仮想メモリ上のプロセッサは自分と協調して動作するプロセッサの一つであるとも考えられ、システム全体ではマルチプロセッサシステムを構成していることになる。すなわち、上記実施の形態にかかるメモリシステム1は、マルチプロセッサシステムにおけるプロセッサ同士の新しい協調動作のための手段と見なすこともできる。
メモリシステム1の全体構成を示すブロック図である。 リアクティブ型プロセッサ10の機能構成を示すブロック図である。 仮想アドレス設定処理を示すフローチャートである。 仮想アドレスへのロード処理を示すフローチャートである。 メモリマップの一例を示す図である。 第1の変更例にかかるリアクティブ型プロセッサ10の機能構成を示すブロック図である。 第2の変更例にかかるリアクティブ型プロセッサ10の機能構成を示すブロック図である。 第3の変更例にかかるメモリシステム1の全体構成を示すブロック図である。 実施の形態2にかかるメモリシステム1におけるリアクティブ型プロセッサ10の機能構成を示すブロック図である。 実施の形態2にかかる仮想アドレス設定処理を示すフローチャートである。 投機的演算(ステップS110)における詳細な処理を示すフローチャートである。 実施の形態2にかかる仮想アドレスへのロード処理を示すフローチャートである。
符号の説明
1 メモリシステム
10 リアクティブ型プロセッサ
20 マスタープロセッサ
30 メモリI/F
40 メモリ
50 システムバス
100 アドレスデコード部
102 ベース指定レジスタ群
104 マスク指定レジスタ群
106 アドレス比較部
110 アドレス用命令コード記述バッファ
120 プロセシングユニット
130 ロードバッファ
140 投機的実行部
142 スケジューラ
144 データキャッシュ
150 バス
1200〜1203 プロセッサコア
1210〜1213 バージョンレジスタ

Claims (13)

  1. メインプロセッサと、前記メインプロセッサからの指示により演算を行うサブプロセッサと、前記メインプロセッサがアクセスするシステムメモリとを備えた仮想メモリシステムであって、
    前記サブプロセッサは、
    前記メインプロセッサからの指示により、前記システムメモリの仮想的な記憶領域上の開始アドレスおよびメモリサイズを示すアドレス範囲を指定するアドレス指定手段と、
    前記メインプロセッサからの指示により、前記アドレス指定手段により指定された前記アドレス範囲が有すべきデータを決定する処理の命令コードを設定する命令コード設定手段と、
    前記命令コード設定手段が前記アドレス範囲に対して設定した前記命令コードに基づいて、前記システムメモリへのロードおよびストアを行うことにより前記アドレス範囲に対するデータを計算する演算手段と、
    前記メインプロセッサから、前記アドレス指定手段により指定された前記仮想的な記憶領域上の前記アドレス範囲に対するロード命令を取得するロード命令取得手段と、
    前記ロード命令に対するデータとして、前記演算手段が前記ロード命令に示される前記アドレス範囲に対して計算した前記データを前記メインプロセッサに出力するデータ出力手段と
    を備えることを特徴とする仮想メモリシステム
  2. 前記演算手段は、前記ロード命令取得手段がロード命令を取得すると、前記ロード命令に示される前記アドレス範囲に対する前記データを計算することを特徴とする請求項1に記載の仮想メモリシステム
  3. 前記サブプロセッサは、
    前記演算手段により計算された前記データを前記アドレス範囲に対応付けて保持するデータ保持手段と、
    前記ロード命令取得手段が前記ロード命令を取得したときに、前記ロード命令に示される前記アドレス範囲に対する前記データが前記データ保持手段に保持されている場合には、前記データ出力手段に対し、前記データ保持手段に保持されているデータを出力させるデータ管理手段と
    をさらに備えたことを特徴とする請求項1に記載の仮想メモリシステム
  4. 前記データ管理手段は、前記ロード命令取得手段が前記ロード命令を取得したときに、前記ロード命令に示される前記アドレス範囲に対する前記データが前記データ保持手段に保持されていない場合には、前記演算手段に対し、前記アドレス範囲に対するデータを計算させることを特徴とする請求項3に記載の仮想メモリシステム
  5. 前記演算手段は、前記アドレス指定手段が前記アドレス範囲を指定し、前記命令コード設定手段が前記命令コードを設定したことを条件として、前記命令コード設定手段により設定された命令コードに基づいて、前記アドレス指定手段により指定された前記アドレス範囲に対するデータの計算を開始することを特徴とする請求項3または4に記載の仮想メモリシステム
  6. 前記命令コード設定手段は、前記アドレス範囲における各アドレス値に基づいて一意に決定される値を引数として利用可能な前記命令コードを設定することを特徴とする請求項1から5のいずれか一項に記載の仮想メモリシステム
  7. 前記サブプロセッサは、前記アドレス指定手段によって指定された前記アドレス範囲を識別するアドレス範囲識別情報と、前記命令コード設定手段により前記アドレス範囲に対して設定された前記命令コードとを対応付けて保持する命令コード保持手段をさらに備え、
    前記演算手段は、前記ロード命令に示されるアドレス範囲と、前記命令コード保持手段において前記アドレス範囲識別情報に対応付けて保持されている前記命令コードとに基づいて、前記アドレス範囲に対するデータを計算することを特徴とする請求項に記載の仮想メモリシステム
  8. 前記サブプロセッサは、
    前記アドレス範囲を、当該アドレス範囲を識別するアドレス範囲識別情報に対応付けて保持するレジスタと、
    前記ロード命令取得手段が取得した前記ロード命令に示されるアドレス範囲と、前記レジスタに保持されている前記アドレス範囲とを比較して、前記ロード命令に示される前記アドレス範囲に対応する前記アドレス範囲識別情報を特定するアドレス比較手段と
    をさらに備え、
    前記演算手段は、前記命令コード保持手段において、前記アドレス比較手段により特定された前記アドレス範囲識別情報に対応付けて保持されている前記命令コードに基づいて、前記アドレス範囲に対するデータを計算することを特徴とする請求項7に記載の仮想メモリシステム
  9. 前記サブプロセッサは、
    前記演算手段を複数備え、
    前記ロード命令取得手段が取得した前記ロード命令を識別するロード命令識別情報を保持するロード命令識別情報保持手段をさらに備え、
    演算手段は、前記ロード命令識別情報により識別される、それぞれ異なるロード命令に対するデータを計算し、
    前記データ出力手段は、前記演算手段から前記ロード命令識別情報と、当該ロード命令識別情報により識別される前記ロード命令に対する前記データを取得し、取得した前記ロード命令識別情報が識別する前記ロード命令に対するデータとして、前記データを出力することを特徴とする請求項に記載の仮想メモリシステム
  10. 前記サブプロセッサは、
    前記演算手段から当該プロセッサに直接接続された前記システムメモリにアクセスするシステムメモリインタフェースをさらに備え、
    前記演算手段は、前記システムメモリインタフェースを介して前記システムメモリにアクセスし、前記システムメモリへのロードおよびストアを行うことにより、前記ロード命令に対するデータを得ることを特徴とする請求項1に記載の仮想メモリシステム
  11. 前記演算手段は、当該プロセッサとバスを介して接続する前記システムメモリに対し、前記バスを介してアクセスし、前記システムメモリへのロードおよびストアを行うことにより、前記ロード命令に対するデータを得ることを特徴とする請求項1に記載の仮想メモリシステム
  12. 前記サブプロセッサを複数備え、
    複数のサブプロセッサのうち、第1サブプロセッサの前記演算手段は、前記第2サブプロセッサに対するロード命令を発行し、
    前記第2サブプロセッサの前記ロード命令取得手段は、前記第1サブプロセッサから前記ロード命令を取得し、
    前記第2サブプロセッサの前記演算手段は、前記第1サブプロセッサから取得した前記ロード命令に対するデータを計算し、
    前記第2サブプロセッサの前記データ出力手段は、前記第2サブプロセッサの前記演算手段により得られた前記データを前記第1のプロセッサに出力し、
    前記第1サブプロセッサの前記演算手段は、前記第2サブプロセッサから取得したデータを利用して、前記データを計算することを特徴とする請求項1に記載の仮想メモリシステム。
  13. メインプロセッサと、前記メインプロセッサからの指示により演算を行うサブプロセッサと、前記メインプロセッサがアクセスするシステムメモリとを備えた仮想メモリシステムにおける仮想記憶方法であって、
    前記サブプロセッサのアドレス指定手段が、前記メインプロセッサからの指示により、前記システムメモリの仮想的な記憶領域上の開始アドレスおよびメモリサイズを示すアドレス範囲を指定するアドレス指定ステップと、
    前記サブプロセッサの命令コード設定手段が、前記アドレス指定ステップにおいて指定された前記アドレス範囲が有すべきデータを決定する処理の命令コードを設定する命令コード設定ステップと、
    前記サブプロセッサの演算手段が、前記命令コード設定ステップにおいて前記アドレス範囲に対して設定した前記命令コードに基づいて、前記システムメモリへのロードおよびストアを行うことにより前記アドレス範囲に対するデータを計算する演算ステップと、
    前記サブプロセッサのロード命令取得手段が、前記メインプロセッサから、前記アドレス指定ステップにおいて指定された前記アドレス範囲に対するロード命令を取得するロード命令取得ステップと、
    前記サブプロセッサのデータ出力手段が、前記ロード命令に対するデータとして、前記演算ステップにおいて前記ロード命令に示される前記アドレス範囲に対して計算した前記データを前記メインプロセッサに出力するデータ出力ステップと
    を有することを特徴とする仮想記憶方法。
JP2005194086A 2005-07-01 2005-07-01 仮想メモリシステムおよび仮想記憶方法 Expired - Fee Related JP4287411B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2005194086A JP4287411B2 (ja) 2005-07-01 2005-07-01 仮想メモリシステムおよび仮想記憶方法
US11/326,194 US7444492B2 (en) 2005-07-01 2006-01-06 Processor, virtual memory system, and virtual storing method
US12/232,454 US20090055622A1 (en) 2005-07-01 2008-09-17 Processor, virtual memory system, and virtual storing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005194086A JP4287411B2 (ja) 2005-07-01 2005-07-01 仮想メモリシステムおよび仮想記憶方法

Publications (2)

Publication Number Publication Date
JP2007011878A JP2007011878A (ja) 2007-01-18
JP4287411B2 true JP4287411B2 (ja) 2009-07-01

Family

ID=37591199

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005194086A Expired - Fee Related JP4287411B2 (ja) 2005-07-01 2005-07-01 仮想メモリシステムおよび仮想記憶方法

Country Status (2)

Country Link
US (2) US7444492B2 (ja)
JP (1) JP4287411B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7716196B2 (en) * 2006-08-07 2010-05-11 Cisco Technology, Inc. Method for culling a litigation discovery file set
GB201208548D0 (en) * 2012-05-15 2012-06-27 Pci Biotech As Compound and method

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5319766A (en) * 1992-04-24 1994-06-07 Digital Equipment Corporation Duplicate tag store for a processor having primary and backup cache memories in a multiprocessor computer system
KR940004434A (ko) * 1992-08-25 1994-03-15 윌리엄 이. 힐러 스마트 다이나믹 랜덤 억세스 메모리 및 그 처리방법
US5914953A (en) * 1992-12-17 1999-06-22 Tandem Computers, Inc. Network message routing using routing table information and supplemental enable information for deadlock prevention
US5751932A (en) * 1992-12-17 1998-05-12 Tandem Computers Incorporated Fail-fast, fail-functional, fault-tolerant multiprocessor system
US6807614B2 (en) * 2001-07-19 2004-10-19 Shine C. Chung Method and apparatus for using smart memories in computing

Also Published As

Publication number Publication date
JP2007011878A (ja) 2007-01-18
US20070005931A1 (en) 2007-01-04
US7444492B2 (en) 2008-10-28
US20090055622A1 (en) 2009-02-26

Similar Documents

Publication Publication Date Title
US11354251B2 (en) Apparatus and methods implementing dispatch mechanisms for offloading executable functions
US9329988B2 (en) Parallel dynamic memory allocation using a nested hierarchical heap
US9411778B2 (en) Multiprocessor system and synchronous engine device thereof
US8966222B2 (en) Message passing in a cluster-on-chip computing environment
JP4719655B2 (ja) ネットワーク上におけるプロセッサ制御技術
JP7340326B2 (ja) メンテナンス動作の実行
US8615614B2 (en) Message passing using direct memory access unit in a data processing system
US7117338B2 (en) Virtual memory address translation control by TLB purge monitoring
US10649686B2 (en) Memory cache pressure reduction for pointer rings
US10095627B2 (en) Method and system for efficient communication and command system for deferred operation
CN115617542A (zh) 内存交换方法、装置、计算机设备及存储介质
US7562204B1 (en) Identifying and relocating relocatable kernel memory allocations in kernel non-relocatable memory
US20210191777A1 (en) Memory Allocation in a Hierarchical Memory System
JP4287411B2 (ja) 仮想メモリシステムおよび仮想記憶方法
EP1067461A1 (en) Unified memory management system for multi process heterogeneous architecture
US8762647B2 (en) Multicore processor system and multicore processor
JP3726701B2 (ja) カーネル空間のデマンドページング・スワップアウト方式および方法
CN112579481B (zh) 数据处理方法、数据处理装置和计算装置
US11507506B2 (en) Method and system for efficient communication and command system for deferred operation
US20130262790A1 (en) Method, computer program and device for managing memory access in a multiprocessor architecture of numa type
CN115729694A (zh) 一种资源管理的方法及相应装置
CN112765086A (zh) 固态存储中一种基于cache一致性的软硬件交互方法
KR20000038110A (ko) 다중 노드 시스템의 동적인 전역적 단일 주소 공간 구성 방법
JP2013246647A (ja) 情報処理システムおよび情報処理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061215

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20081215

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081224

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090223

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090326

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120403

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120403

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130403

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees