米国特許情報 | 欧州特許情報 | 国際公開(PCT)情報 | Google の米国特許検索
 
     特許分類
A 農業
B 衣類
C 家具
D 医学
E スポ−ツ;娯楽
F 加工処理操作
G 机上付属具
H 装飾
I 車両
J 包装;運搬
L 化学;冶金
M 繊維;紙;印刷
N 固定構造物
O 機械工学
P 武器
Q 照明
R 測定; 光学
S 写真;映画
T 計算機;電気通信
U 核技術
V 電気素子
W 発電
X 楽器;音響


  ホーム -> 計算機;電気通信 -> 株式会社東芝

発明の名称 プロセッサ、仮想メモリシステムおよび仮想記憶方法
発行国 日本国特許庁(JP)
公報種別 公開特許公報(A)
公開番号 特開2007−11878(P2007−11878A)
公開日 平成19年1月18日(2007.1.18)
出願番号 特願2005−194086(P2005−194086)
出願日 平成17年7月1日(2005.7.1)
代理人 【識別番号】100089118
【弁理士】
【氏名又は名称】酒井 宏明
発明者 松崎 秀則
要約 課題
メモリ容量を向上させることのできるプロセッサを提供する。

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




 

 


     NEWS
会社検索順位 特許の出願数の順位が発表

URL変更
平成6年
平成7年
平成8年
平成9年
平成10年
平成11年
平成12年
平成13年


 
   お問い合わせ info@patentjp.com patentjp.com   Copyright 2007-2013