(57)【特許請求の範囲】
【請求項１】
主記憶装置から読み出した命令を一時的に格納する命令バッファと，命令の実行環境に関するコンテキストごとに命令を実行する命令実行部とを有するプロセッサ装置において，
前記命令バッファは，
コンテキストに応じて仮想アドレスから物理アドレスへの変換を行い，主記憶装置から命令を読み出す手段と，
読み出した各命令と共にその命令を実行すべき前記命令実行部のコンテキストを識別する情報を保持する手段とを備える
ことを特徴とする命令バッファを有するプロセッサ装置。
【請求項２】
請求項１記載の命令バッファを有するプロセッサ装置において，
前記命令実行部は，
あらかじめ割り当てられたコンテキストの識別情報を保持する手段と，
前記命令バッファから命令と共に供給されるコンテキストを識別する情報と自命令実行部が保持するコンテキストの識別情報とを比較し，一致する場合に命令を実行する手段とを備える
ことを特徴とする命令バッファを有するプロセッサ装置。
【請求項３】
請求項１または請求項２記載の命令バッファを有するプロセッサ装置において，
前記命令バッファは，
主記憶装置から読み出すべき命令のコンテキストをラウンドロビン方式により順番に決定する手段を備える
ことを特徴とする命令バッファを有するプロセッサ装置。
【請求項４】
請求項１または請求項２記載の命令バッファを有するプロセッサ装置において，
前記命令バッファは，
設定されたコンテキストの優先順位を保持する手段と，
前記優先順位に従って，優先順位が高いコンテキストの命令を優先順位が低いコンテキストの命令よりも多く読み出す制御を行う手段とを備える
ことを特徴とする命令バッファを有するプロセッサ装置。
【請求項５】
請求項１記載の命令バッファを有するプロセッサ装置において，
前記命令実行部は，
同時に複数のコンテキストの命令を実行する手段を備える
ことを特徴とする命令バッファを有するプロセッサ装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は，異なるコンテキスト演算等の処理を同時に実行することが可能な命令バッファを有するプロセッサ装置に関するものである。
【０００２】
【従来の技術】
図６は，主記憶装置または下位キャッシュ装置に接続された従来のマイクロプロセッサの構成図である。
【０００３】
マイクロプロセッサ１００は，例えば図６に示すように，メモリ管理装置（ＭＭＵ）２００，キャッシュ装置３００を介して主記憶装置４００に接続される。マイクロプロセッサ１００は，主記憶装置４００から読み出した命令を一時的に格納する命令バッファ１１０と，命令を実行する命令実行部１１１とを備えている。
【０００４】
マイクロプロセッサ１００が主記憶装置４００にデータ供給要求を出す場合，仮想アドレスを用いてデータ供給要求を出す。この要求に対して，メモリ管理装置２００は，メモリ管理装置２００内で現在実行しているコンテキスト番号に従って，仮想アドレス空間から物理アドレス空間へのマッピングを行い，主記憶装置４００へのメモリアクセスを行い，データ（命令）をアクセスする。
【０００５】
オペレーティング・システム（ＯＳ）により，コンテキストのスイッチが行われた場合，レジスタ等のマイクロプロセッサ１００内部の情報を主記憶装置４００上に退避した後，新しいコンテキストの情報を主記憶装置４００上から読み込み，新しいコンテキストのもとで命令の実行を続ける。
【０００６】
なお，コンテキストは，プログラムの実行に関するマイクロプロセッサの内部状態，すなわちプログラムカウンタやその他のプログラムの実行に必要なレジスタの値などからなる命令の実行環境に関する情報である。
【０００７】
【発明が解決しようとする課題】
図６に示す構成の場合，一つのマイクロプロセッサ１００は，単一の仮想アドレス空間のみしかサポートしていないため，コンテキストスイッチの際に，現在のコンテキストでのマイクロプロセッサ内部の状態の主記憶装置４００への書き込みと，新しいコンテキストでのマイクロプロセッサ内部の状態の主記憶装置４００からの読み出しとを行う必要がある。
【０００８】
そこで，本発明は，マイクロプロセッサ内部の状態を主記憶装置内で保持するためのオーバヘッドを少なくすることを目的とする。
【０００９】
【課題を解決するための手段】
図１は，本発明の構成例を示す図である。
マイクロプロセッサ１は，命令バッファ１０と命令の実行環境に関するコンテキストごとに命令を実行する命令実行部１６ａ，１６ｂ，…とを持つ。命令バッファ１０は，読み出した命令を一時的に格納する命令保持部１２と，読み出した各命令と共にその命令を実行すべき命令実行部１６ａ，１６ｂ，…のコンテキストを識別する情報を保持するコンテキスト情報保持部１１とを持つ。
【００１０】
また，命令バッファ１０は，コンテキストに応じて仮想アドレスから物理アドレスへの変換を行い，キャッシュ装置２を介して間接的に，または直接的に主記憶装置３から命令を読み出すメモリアクセス制御部１３を持つ。このメモリアクセス制御部１３は，従来のメモリ管理装置が持つＭＭＵ機能を有するものである。
【００１１】
命令実行部１６ａ〜１６ｃは，あらかじめ割り当てられたコンテキストを識別するコンテキスト識別子を保持するコンテキスト識別子保持部１７ａ〜１７ｃを持ち，このコンテキスト識別子保持部１７ａ〜１７ｃが保持するコンテキスト識別子と，命令バッファ１０から命令と共に供給されるコンテキストを識別する情報とを比較し，一致する場合に命令を実行する制御を行う比較部１８ａ〜１８ｃを持つ。
【００１２】
また，命令バッファ１０は，主記憶装置３から読み出すべき命令のコンテキストをラウンドロビン方式により順番に決定するコンテキスト決定部１４を持つ。この場合，コンテキスト決定部１４は，例えばコンテキストが３個存在したとすると，１番目のコンテキストの命令の読み出し，次に２番目のコンテキストの命令の読み出し，次に３番目のコンテキストの命令の読み出し，その次には再度１番目のコンテキストに戻って，１番目のコンテキストの命令の読み出し，…というように順番に，読み出し対象とする命令をどのコンテキストのものにするかを決定する。
【００１３】
このように，ラウンドロビン方式でコンテキストを決定する代わりに，あらかじめオペレーティング・システム等から指定されたコンテキストの優先順位（優先度の順位）に従って，命令を読み出すべきコンテキストを決定する方式を用いることもできる。この方式では，コンテキスト優先順位保持部１５がオペレーティング・システム等から設定されたコンテキストの優先順位情報を保持し，コンテキスト決定部１４は，その優先順位に従って，優先順位が高いコンテキストの命令を優先順位が低いコンテキストの命令よりも優先的に読み出すように，コンテキストの決定を行う。
【００１４】
さらに，各命令実行部１６ａ〜１６ｃは，複数の命令実行用の演算器を持ち，いわゆるスーパスカラ方式などの技術により同時に複数のコンテキストの命令を実行する機構を備えていてもよい。
【００１５】
以上のように，命令バッファ１０は，キャッシュ装置２または主記憶装置３から読み出した命令がどのコンテキストで実行されるべきかというコンテキスト情報をコンテキスト情報保持部１１に保持することができ，複数の仮想アドレス空間を，各命令実行部１６の資源ごとに割り当てることができる。
【００１６】
マイクロプロセッサ１が命令の読み出しを行う際には，命令バッファ１０内のメモリアクセス制御部１３により，コンテキスト決定部１４が決定したコンテキストに従って仮想アドレスから物理アドレスへの変換を行う。この物理アドレスにより，マイクロプロセッサ１からメモリアクセス要求が出され，要求した命令がキャッシュ装置２または主記憶装置３から供給された場合，マイクロプロセッサ１内の命令バッファ１０では，その命令を命令保持部１２に保持すると共に，コンテキスト情報をコンテキスト情報保持部１１に保持する。
【００１７】
命令バッファ１０が，命令実行部１６から命令供給要求を受けた場合，命令バッファ１０は，命令保持部１２に保持している命令と共に，コンテキスト情報保持部１１のコンテキスト情報を命令実行部１６に供給する。
【００１８】
命令実行部１６では，どのメモリ空間で命令を実行すべきかを示すコンテキスト識別子をコンテキスト識別子保持部１７に保持し，これと命令バッファ１０から供給されるコンテキスト情報とを比較部１８によって比較し，比較の結果が真であるならば，供給された命令を実行する。
【００１９】
以上により，一つのマイクロプロセッサ１上で，複数の仮想アドレス空間の命令を実行することができるため，主記憶装置３へのマイクロプロセッサ１内部の情報の書き込みおよび読み出しにかかるオーバヘッドを少なくすることが可能になる。
【００２０】
【発明の実施の形態】
図２は，本発明の実施の形態であるマイクロプロセッサの構成を示すブロック図，図３は，マイクロプロセッサ内のメモリアクセス制御部のブロック図，図４は，マイクロプロセッサが実行する命令の例を示す図，図５は，マイクロプロセッサの動作を示すタイムチャートである。
【００２１】
図２に示すマイクロプロセッサ１のメモリアクセス制御部１３は，例えば図３に示すような構成になっており，割り当てられたコンテキストごとに仮想アドレスを物理アドレスに変換するＭＭＵ機能部４１〜４３を持つ。各ＭＭＵ機能部４１〜４３は，仮想アドレスレジスタ４０を持ち，その仮想アドレスを物理アドレスに変換するためのＴＬＢ（Translation-Lookaside Buffer）４４とページテーブル（Page Table）４５とを持つ。
【００２２】
各ＭＭＵ機能部４１〜４３が仮想アドレスを物理アドレスに変換する場合には，仮想アドレスの仮想ページ番号（Virtual Page Number)によりＴＬＢ４４を検索し，以前のアドレス変換情報が存在することによりヒットした場合には，そのＴＬＢ４４から出力される物理ページアドレスと，仮想アドレスレジスタ４０が保持する仮想アドレス中のページオフセットとを加算することにより物理アドレスを求める。
【００２３】
ＴＬＢ４４の検索でヒットしなかった場合には，仮想ページ番号によりページテーブル４５を検索し，検索結果とページオフセットとを加算することにより物理アドレスを求める。
【００２４】
図２に示すメモリアクセス制御部１３’は，命令オペランドで指定されたデータのロード／ストア用のアクセスを制御する部分で，仮想アドレスから物理アドレスへの変換機構は，命令フェッチ用のメモリアクセス制御部１３と同様な構成になっている。
【００２５】
マイクロプロセッサ１が，２つの命令実行部１６ａ，１６ｂを使用する場合について説明する。各命令実行部１６ａ，１６ｂは，それぞれ同時に複数の命令を実行することができる構造とすることも可能であり，この場合には，命令バッファ１０から発行された命令は，実行が可能であれば，一つの命令実行部１６で同時に複数実行されることもある。
【００２６】
例えば，図２に示すように，命令実行部１６ａが２つの加算用演算器１９，２０を持つとすると，命令バッファ１０からの複数の加算命令を同時に実行することが可能である。
【００２７】
図２に示すマイクロプロセッサ１の動作は，以下のとおりである。
命令実行部１６ａには，オペレーティング・システムなどにより，事前にコンテキスト識別子保持部１７ａにコンテキスト識別子として“１”が設定され，命令実行部１６ｂには，コンテキスト識別子保持部１７ｂにコンテキスト識別子として“２”が設定されているものとする。
【００２８】
また，コンテキスト識別子が“１”のプログラム（以下，Ｃｏｎｔｅｘｔ１という）が図４（Ａ）のとおりであり，コンテキスト識別子が“２”のプログラム（以下，Ｃｏｎｔｅｘｔ２という）が図４（Ｂ）のとおりであったとする。
【００２９】
Ｃｏｎｔｅｘｔ１では，仮想アドレスの１０００番地でＡｄｄ命令（加算命令）を，１００１番地でＳｕｂ命令（減算命令）を，１００２番地でＳｈｉｆｔ命令（シフト命令）を実行する。一方，Ｃｏｎｔｅｘｔ２では，仮想アドレスの１０００番地でＦＡｄｄ命令（浮動小数点型加算命令）を，１００１番地でＦＭｕｌ命令（浮動小数点型乗算命令）を，１００２番地でＦＤｉｖ命令（浮動小数点型除算命令）を実行する。
【００３０】
これらのコンテキストには，あらかじめオペレーティング・システム等によって指定された優先順位が付けられており，命令バッファ１０は，その優先順位に従って，優先順位の高いものが低いものより多く命令が実行されるように，命令の読み出しおよび供給を行う。
【００３１】
図４（Ｃ）は，Ｃｏｎｔｅｘｔ２の優先順位がＣｏｎｔｅｘｔ１の優先順位よりも高い場合に，命令バッファ１０の命令保持部１２に主記憶装置３から読み出されて保持される命令列の例を示している。ここでは最初，Ｃｏｎｔｅｘｔ１の命令を読み出しているが，Ｃｏｎｔｅｘｔ２の優先順位が高いので，次にはＣｏｎｔｅｘｔ２の命令を２回連続して読み出している。なお，優先順位を与えずに，ラウンドロビン方式により順番に読み出すような実施も可能である。
【００３２】
これらの命令実行時のタイムチャートを図５に示す。
Ｔ１サイクルにおいて，Ｃｏｎｔｅｘｔ１における仮想アドレス１０００番地が物理アドレス１１０００番地に変換され，メモリアクセスが行われる。Ｔ２サイクルにおいて，１１０００番地の命令（Ａｄｄ）が，命令バッファ１０に取り込まれる。
【００３３】
命令バッファ１０は，コンテキスト情報（識別子“１”）を保持し，Ｔ３サイクルにおいて命令実行部１６ａの比較部１８ａは，自分に割り当てられたコンテキスト識別子保持部１７ａ内のコンテキスト識別子と，命令バッファ１０からのコンテキスト情報とを比較し，比較結果が真となるため，命令実行部１６ａによりそのＡｄｄ命令が実行される。命令実行部１６ｂでも同様にコンテキスト識別子の比較を行うが，比較結果が偽となるため，命令実行部１６ｂではそのＡｄｄ命令は破棄され実行されない。
【００３４】
以上の処理と並列にＴ２サイクルにおいて，Ｃｏｎｔｅｘｔ２における仮想アドレス１０００番地が物理アドレス２１０００番地に変換され，メモリアクセスが行われる。Ｔ３サイクルにおいて，２１０００番地の命令（ＦＡｄｄ）が，命令バッファ１０に取り込まれる。
【００３５】
命令バッファ１０は，コンテキスト情報（識別子“２”）を保持し，Ｔ４サイクルにおいて命令実行部１６ｂの比較部１８ｂは，自分に割り当てられたコンテキスト識別子保持部１７ｂ内のコンテキスト識別子と，命令バッファ１０からのコンテキスト情報とを比較し，比較結果が真となるため，命令実行部１６ｂによりそのＦＡｄｄ命令が実行される。
【００３６】
以下，同様に命令が実行されていく。
【００３７】
【発明の効果】
以上説明したように，本発明によれば，一つのマイクロプロセッサ上で複数の仮想アドレスの命令を実行することができるため，主記憶装置上へのマイクロプロセッサ内部の情報の書き込み，読み出しにかかるオーバヘッドを少なくすることができる。さらに，命令バッファにコンテキストの優先情報を保持させることにより，優先順位の高いコンテキストの命令を優先的に実行することができ，命令実行の効率化が図れるようになる。
【図面の簡単な説明】
【図１】本発明の構成例を示す図である。
【図２】本発明の実施の形態であるマイクロプロセッサの構成を示すブロック図である。
【図３】マイクロプロセッサ内のメモリアクセス制御部のブロック図である。
【図４】マイクロプロセッサが実行する命令の例を示す図である。
【図５】マイクロプロセッサの動作を示すタイムチャートである。
【図６】従来技術の例を示す図である。
【符号の説明】
１    マイクロプロセッサ
２    キャッシュ装置
３    主記憶装置
１０  命令バッファ
１１  コンテキスト情報保持部
１２  命令保持部
１３  メモリアクセス制御部
１４  コンテキスト決定部
１５  コンテキスト優先順位保持部
１６  命令実行部
１７  コンテキスト識別子保持部
１８  比較部
【図１】
0003645671.tif 000002
【図２】
0003645671.tif 000003
【図３】
0003645671.tif 000004
【図４】
0003645671.tif 000005
【図５】
0003645671.tif 000006
【図６】
0003645671.tif 000007