(57)【要約】【課題】  大容量のレジスタファイルから小さいレイテンシで大量のデータを効率よく計算することができるプロセッサを提供する。【解決手段】  プロセッサは、演算手段と、演算手段にクロスバースイッチを介して接続する複数の少ポート大容量のＲＡＭをインタリーブ化したレジスタファイルと、演算手段の演算結果を格納し、クロスバーを介して演算結果をレジスタファイルに書き戻すと共に、クロスバーをバイパスするパスを介して演算手段に格納データを出力するレジスタキャッシュとを含む。【選択図】  図１
2010079361.tif 000002
【特許請求の範囲】
【請求項１】
演算手段と、
前記演算手段にクロスバースイッチを介して接続する複数の少ポート大容量のＲＡＭをインタリーブ化したレジスタファイルと、
前記演算手段の演算結果を格納し、前記クロスバースイッチを介して前記演算結果を前記レジスタファイルに書き戻すと共に、前記クロスバースイッチをバイパスするパスを介して前記演算手段に格納データを出力するレジスタキャッシュと
を備えることを特徴とするプロセッサ。
【請求項２】
前記レジスタキャッシュが、階層化したＶｉｃｔｉｍ型のキャッシュであることを特徴とする請求項１に記載のプロセッサ。
【請求項３】
前記演算手段が、ベクトル向け演算器であり、前記レジスタファイルが、ベクトルレジスタファイルであることを特徴とする請求項１又は請求項２に記載のプロセッサ。
【請求項４】
前記演算手段の直前に、前記レジスタファイルと前記レジスタキャッシュからのデータを選択して前記演算手段に入力するセレクタを備えることを特徴とする請求項１から請求項３の何れかに記載のプロセッサ。
【請求項５】
複数の前記演算手段を備え、前記各演算手段の出力を前記レジスタキャッシュに接続し、前記レジスタキャッシュの出力を前記各演算手段に接続することを特徴とする請求項１から請求項４の何れかに記載のプロセッサ。
【請求項６】
複数の少ポート大容量のＲＡＭをインタリーブ化したレジスタファイルからクロスバースイッチを介して演算手段に対してデータを提供し、
前記演算手段に接続するレジスタキャッスに、前記演算手段の演算結果を格納し、
前記レジスタキャッシュから前記クロスバースイッチを介して前記演算結果を前記レジスタファイルに書き戻すと共に、前記クロスバースイッチをバイパスするパスを介して前記演算手段に格納データを出力することを特徴とするプロセッサのデータ処理方法。
【請求項７】
前記レジスタキャッシュが、階層化したＶｉｃｔｉｍ型のキャッシュであることを特徴とする請求項６に記載のプロセッサのデータ処理方法。
【請求項８】
前記演算手段が、ベクトル向け演算器であり、前記レジスタファイルが、ベクトルレジスタファイルであることを特徴とする請求項６又は請求項７に記載のプロセッサのデータ処理方法。
【請求項９】
前記演算手段の直前に備えるセレクタによって、前記レジスタファイルと前記レジスタキャッシュからのデータを選択して前記演算手段に入力することを特徴とする請求項６から請求項８の何れかに記載のプロセッサのデータ処理方法。
【請求項１０】
複数の前記演算手段を備え、前記各演算手段の出力を前記レジスタキャッシュに接続し、前記レジスタキャッシュの出力を前記各演算手段に接続することを特徴とする請求項６から請求項９の何れかに記載のプロセッサのデータ処理方法。
【請求項１１】
プロセッサを備える情報処理装置であって、
前記プロセッサは、
演算手段と、
前記演算手段にクロスバースイッチを介して接続する複数の少ポート大容量のＲＡＭをインタリーブ化したレジスタファイルと、
前記演算手段の演算結果を格納し、前記クロスバースイッチを介して前記演算結果を前記レジスタファイルに書き戻すと共に、前記クロスバースイッチをバイパスするパスを介して前記演算手段に格納データを出力するレジスタキャッシュと
を備えることを特徴とする情報処理装置。
【請求項１２】
前記レジスタキャッシュが、階層化したＶｉｃｔｉｍ型のキャッシュであることを特徴とする請求項１１に記載の情報処理装置。
【請求項１３】
前記演算手段が、ベクトル向け演算器であり、前記レジスタファイルが、ベクトルレジスタファイルであることを特徴とする請求項１１又は請求項１２に記載の情報処理装置。
【請求項１４】
前記演算手段の直前に、前記レジスタファイルと前記レジスタキャッシュからのデータを選択して前記演算手段に入力するセレクタを備えることを特徴とする請求項１１から請求項１３の何れかに記載の情報処理装置。
【請求項１５】
複数の前記演算手段を備え、前記各演算手段の出力を前記レジスタキャッシュに接続し、前記レジスタキャッシュの出力を前記各演算手段に接続することを特徴とする請求項１１から請求項１４の何れかに記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＳＩＭＤ（Single
Instruction/Multiple Data）型アクセラレータを有するプロセッサに関し、特に、大容量のレジスタファイルから小さいレイテンシで大量のデータを効率よく計算することを可能にするプロセッサ、プロセッサのデータ処理方法、情報処理装置に関する。
【背景技術】
【０００２】
関連技術によるＳＩＭＤ型アクセラレータを有するプロセッサの構成例について、図６を参照して説明する。
【０００３】
図６において、ＳＩＭＤレジスタファイル５０１は、アーキテクチャで階層化されている。演算器５０２から遠いＳＩＭＤレジスタファイル５０１は、少ポートＲＡＭをバンクインタリーブすることで実現されている。演算器５０２に近い小規模レジスタファイル５０３は、多ポート小容量ＲＡＭで実現されている。
【０００４】
一般に、ＳＩＭＤ型アクセラレータ向けのレジスタファイルは大容量であり、多ポートＲＡＭで実現することが困難であった。例えば、４リードと４ライトを同時に実行することが可能なＲＡＭの物量は、おおむね１リード・ライトＲＡＭの６４倍程度の大きさになるためである。
【０００５】
従って、少容量のＲＡＭを多ポート化するか、大容量のＲＡＭを少ポート化してバンクインタリーブを設定することが必要であった。しかし、多ポート小容量のレジスタファイルを用いた場合、頻繁にメモリアクセスが発生し、高い性能を実現することが困難であった。
【０００６】
このため、図６に示すように、少ポート大容量ＲＡＭのバンクインタリーブ化によってレジスタファイルを実現するのが一般的である。
【０００７】
上記のように、少ポート大容量ＲＡＭのバンクインタリーブによってレジスタファイルを構成する技術が、例えば特許文献１や特許文献２に開示されている。
【特許文献１】特開２００７−３０４６６３号公報
【特許文献２】特開平８−３２８８５８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、図６に示すようなＳＩＭＤ型アクセラレータを有するプロセッサにおいては、次のような課題があった。
【０００９】
上述した関連技術によるプロセッサでは、ベクトルレジスタファイル５０１の出力はバンクインタリーブ化されているため、バンク競合が起き、性能の低下を招く可能性があった。
【００１０】
また、バンクインタリーブを行った場合には、演算器とレジスタファイルの間にクロスバースイッチが含まれるため、階層化された上位のベクトルレジスタファイル５０１から直接演算器５０２にデータを供給できないことから、演算器とレジスタファイルのデータ転送のレイテンシが大きくなるという問題があった。
【００１１】
このため、単純なレジスタファイルの階層化では、ＳＩＭＤアクセラレータの特徴であるマスク演算を効率よく実行できなかった。
【００１２】
さらに、演算器５０２に近い小規模レジスタファイル５０３が小容量であるため、効率良く大容量のデータを演算器５０２に供給できないという問題があった。特に、ＳＩＭＤのベクトル長が短い場合、アーキテクチャ的に小規模レジスタファイル５０３の内容を効率的に利用できない。
【００１３】
（発明の目的）
本発明の目的は、上記の課題を解決し、大容量のレジスタファイルから小さいレイテンシで大量のデータを効率よく計算することができるプロセッサ、プロセッサのデータ処理方法、情報処理装置を提供することにある。
【課題を解決するための手段】
【００１４】
本発明によるプロセッサは、演算手段と、演算手段にクロスバースイッチを介して接続する複数の少ポート大容量のＲＡＭをインタリーブ化したレジスタファイルと、演算手段の演算結果を格納し、クロスバースイッチを介して演算結果をレジスタファイルに書き戻すと共に、クロスバースイッチをバイパスするパスを介して演算手段に格納データを出力するレジスタキャッシュとを含む。
【００１５】
本発明によるプロセッサのデータ処理方法は、複数の少ポート大容量のＲＡＭをインタリーブ化したレジスタファイルからクロスバースイッチを介して演算手段に対してデータを提供し、演算手段に接続するレジスタキャッスに、演算手段の演算結果を格納し、レジスタキャッシュからクロスバースイッチを介して演算結果をレジスタファイルに書き戻すと共に、クロスバースイッチをバイパスするパスを介して演算手段に格納データを出力する。
【００１６】
本発明による情報処理装置は、プロセッサを備える情報処理装置であって、プロセッサは、演算手段と、演算手段にクロスバースイッチを介して接続する複数の少ポート大容量のＲＡＭをインタリーブ化したレジスタファイルと、演算手段の演算結果を格納し、クロスバースイッチを介して演算結果をレジスタファイルに書き戻すと共に、クロスバースイッチをバイパスするパスを介して演算手段に格納データを出力するレジスタキャッシュとを含む。
【発明の効果】
【００１７】
本発明によれば、大容量のレジスタファイルから小さいレイテンシで大量のデータを効率よく計算することが可能となる。
【発明を実施するための最良の形態】
【００１８】
次に、本発明の実施の形態について図面を参照して詳細に説明する。
【００１９】
（第１の実施の形態）
図１は、本発明の第１の実施の形態によるプロセッサの構成を示すブロック図である。本実施の形態によるプロセッサは、ＳＩＭＤ（Single Instruction/Multiple Data）型アクセラレータを有するプロセッサ（中央演算処理装置）において、多ポートＲＡＭの利用を制限した階層型レジスタファイルを実現したことを特徴としている。
【００２０】
図１において、第１の実施の形態によるプロセッサは、ＳＩＭＤレジスタファイル１０１と、演算器１０２と、レジスタキャッシュ１０３と、クロスバースイッチ１０４、セレクタ１０５を含む。
【００２１】
ＳＩＭＤレジスタファイル１０１は、演算器１０２に対してデータを供給する機能を有している。ＳＩＭＤレジスタファイル１０１には、少ポート大容量のＲＡＭが用いられており、この実施の形態では、複数のＳＩＭＤレジスタファイル１０１をバンクインタリーブ化することにより階層化し、擬似的に多ポートＲＡＭとして機能するように構成している。
【００２２】
また、ＳＩＭＤレジスタファイル１０１と演算器１０２の間には、オンチップネットワークであるクロスバースイッチ１０４が介在している。
【００２３】
レジスタキャッシュ１０３は、演算器１０２からの出力データを全て受け取る機能を有する。さらに、レジスタキャッシュ１０３は、データを演算器１０２に供給することが可能であり、ｖｉｃｔｉｍ型のレジスタキャッシュとして機能している。このレジスタキャッシュ１０３は、多ポート小容量ＲＡＭで実現される。
【００２４】
上記のように構成することで、ＳＩＭＤレジスタファイル１０１とレジスタキャッシュ１０３から同時にデータを読み出し、演算器１０２の直前でセレクタ１０５によって読み出したデータをセレクトし、演算器１０２に供給する。このような構成により、ＳＩＭＤ演算の特徴であるマスク付き演算を効率よく実現することができるようになる。
【００２５】
（第１の実施の形態の効果）
上記第１の実施の形態では、大規模なＳＩＭＤアクセラレータ向けのレジスタファイルを少ポートＲＡＭのバンクインタリーブによって実現しているので、多ポートＲＡＭ型のレジスタファイルと比較して小規模なデータパスを実現することができる。
【００２６】
また、ｖｉｃｔｉｍ型のレジスタキャッシュ１０３からの演算器１０２へのデータ供給を採用することで、バンクインタリーブ化したＳＩＭＤレジスタファイル１０１のバンク競合の影響を軽減することができる。
【００２７】
また、ｖｉｃｔｉｍ型のレジスタキャッシュ１０３から演算器１０へのデータ供給のパスにクロスバースイッチ１０４（オンチップネットワーク）を介在させないことで、クロスバースイッチ１０４の負荷を軽減することができると共に、クロスバースイッチの遅延による影響が軽減され、レイテンシを改善することができる。
【００２８】
また、タイミングを合わせて大容量レジスタファイルとベクトルキャッシュから同時にデータを供給することで、ＳＩＭＤアクセラレータの特徴的な演算であるマスク付き演算を効率よく実現することができる。
【００２９】
（第２の実施の形態）
図２は、本発明の第２の実施の形態によるベクトルプロセッサの構成を示すブロック図である。
【００３０】
本第２の実施の形態によるベクトルプロセッサは、ベクトルレジスタファイル２０１と、ベクトル向け演算器２０２と、レジスタキャッシュ２０３と、クロスバースイッチ２０４と、セレクタ２０５と、命令発行制御部２０６と、データパス制御部２０７を含む。
【００３１】
ベクトル演算器２０２に対してデータを供給するベクトルレジスタファイル２０１は、１リード・ライトタイプの少ポートＲＡＭをバンクインタリーブ化することにより階層化し、擬似的な多ポートＲＡＭを実現している。
【００３２】
ベクトル向け演算器２０２は、３入力１出力を有する積和演算器で実現されている。ベクトルレジスタファイル２０１は、クロスバースイッチ２０４を介してベクトル向け演算器２０２と接続されている。
【００３３】
ベクトル向け演算器２０２の演算結果である出力データは、ｖｉｃｔｉｍ型のレジスタキャッシュ２０３に出力される。
【００３４】
レジスタキャッシュ２０３は、多ポート小容量ＲＡＭで実現され、ｖｉｃｔｉｍ型のレジスタキャッシュとして機能する。レジスタキャッシュ２０３は、ベクトル向け演算器２０２からの出力データを全て受け取って格納する。
【００３５】
ｖｉｃｔｉｍ型のレジスタキャッシュ２０３への書き込みはライトスルー制御され、書き込まれたデータがベクトルレジスタファイル２０１に書き戻される。
【００３６】
また、ｖｉｃｔｉｍ型のレジスタキャッシュ２０３へ書き込まれたデータは、ベクトル向け演算器２０２に対して供給することが可能である。
【００３７】
ｖｉｃｔｉｍ型のレジスタキャッシュ２０３からベクトル向け演算器２０２に対するパスにはクロスバースイッチ２０４が介在しないため、ベクトル向け演算器２０２に対して高速にデータを供給することができる。
【００３８】
ベクトルレジスタファイル２０１とレジスタキャッシュ２０３から同時にデータを読み出し、ベクトル向け演算器２０２の直前でセレクタ２０５によって読み出したデータをセレクトし、ベクトル向け演算器２０２に供給する。
【００３９】
命令発行制御部２０６は、ベクトル向け演算器２０２による演算の実施指示を発行する機能を有し、データパス制御部２０７は、クロスバースイッチ２０４によるパスを制御する機能を有する。
【００４０】
以上詳細に本実施の形態の構成を説明したが、図２の少ポートＲＡＭの大きさが多ポートＲＡＭよりもポート数の２乗に比例して小さいということは、本発明の当業者にとって広く知られていることであり、また本実施の形態の特徴とは直接関係しないので、その詳細な構成については省略する。
【００４１】
なお、上記実施の形態の構成において、ベクトルレジスタファイル２０１の代替として、スカラープロセッサが採用するＳＩＭＤ演算器のためのレジスタファイルとすることも可能である。また、ベクトルレジスタファイル２０１のＲＡＭについては、１リード・１ライトのＲＡＭを用いても構成することが可能である。
【００４２】
（第２の実施の形態の動作）
次に、図２に示すデータパスの動作について、図３に示すタイムチャートを参照して説明する。
【００４３】
図２に示すベクトルプロセッサにおいて、Ｖ２＝Ｖ０＋Ｖ１の演算を実行し、Ｖ４＝Ｖ２＋Ｖ３という演算を実行する場合について考える。
【００４４】
命令発行制御部２０５から演算の実施指示がデータパス制御部２０６に発行されると（図３のＡ）、データパス制御部２０６によってクロスバースイッチ２０４が制御され、ベクトルレジスタファイル２０１からデータが読み出される（図３のＢ）。読み出されたデータがクロスバースイッチ２０４を介してベクトル向け演算器２０２に対して供給される（図３のＣ）。
【００４５】
ベクトル向け演算器２０２の出力は、レジスタキャッシュ２０３に対して書きこまれる（図３のＤ）。
【００４６】
また、レジスタキャッシュ２０３に書き込まれたデータが、直接ベクトル向け演算器２０２に入力され、再び演算に利用されることが可能である（図３のＥ）。
【００４７】
これに対して図６に示す関連技術による手法では、図４に示すように、データをベクトルレジスタ６０１に対して書き戻してからでないと次の演算に利用することができないことが分かる（図４のＦとＧ）。
【００４８】
（第２の実施の形態の効果）
第２の実施の形態の効果について以下に説明する。
【００４９】
第１に、ベクトル向け演算器２０２の演算結果を多ポートＲＡＭ（レジスタキャッシュ２０３）で受けているので、バンク競合による書き込み待ちの発生を回避することができる。
【００５０】
第２に、レジスタキャッシュ２０３の出力がクロスバースイッチ２０４を通過する必要がないため、クロスバースイッチ２０４を通過することによるレイテンシを隠蔽することができる。
【００５１】
第３に、ベクトルレジスタファイル２０１から直接データ供給する機会が減少するため、バンクインタリーブしたベクトルレジスタファイル２０１のバンク競合の発生確率を減らし、利用効率を高めることができる。
【００５２】
第４に、第１から第３の効果を利用することで少ポートＲＡＭをインタリーブしたデータパスのデメリットを隠蔽し、大容量なレジスタファイルを有する高速・低遅延なデータパスを実現することができる。
【００５３】
第５に、レジスタキャッシュ２０３をプログラマが意識する必要がないことである。このため自然にデータの局所性を抽出し、効率的に演算を実施することができる。
【００５４】
第６に、レジスタキャッシュ２０３に格納されるデータは常に演算器の出力であるため、自ずと演算に利用されやすいデータが格納されることになり、小容量のＲＡＭを効率よく利用することができる。
【００５５】
（第３の実施の形態）
図５は、本発明の第３の実施の形態によるベクトルプロセッサの構成を示すブロック図である。
【００５６】
第３の実施の形態によるベクトルプロセッサの基本的構成は、上述した第２の実施の形態と同じであるが、演算器の構成についてさらに工夫を加えている。
【００５７】
図５において、第３の実施の形態によるベクトルプロセッサは、２つの積和演算器４０２を備え、各積和演算器４０２にレジスタキャッシュ４０３が接続されている。ベクトルレジスタファイル４０１、クロスバースイッチ４０４については、第２の実施の形態と同様であるので説明は省略する。
【００５８】
２つの積和演算器４０２の出力データは、ｖｉｃｔｉｍ型のレジスタキャッシュ４０３に出力され、レジスタキャッシュ４０３は、それぞれの積和演算器４０２からの出力データを全て受け取って格納する。
【００５９】
レジスタキャッシュ４０３へ書き込まれたデータがベクトルレジスタファイル４０１に書き戻される点、レジスタキャッシュ４０３へ書き込まれたデータを積和演算器４０２に対して供給する点も第２の実施の形態と同じである。
【００６０】
上記のように構成される第３の実施の形態では、レジスタキャッシュ４０３から２つの積和演算器４０２のうち必要な演算器に対してデータを供給することができる。
【００６１】
（第３の実施の形態の効果）
第３の実施の形態によれば、上述した第２の実施の形態によって得られる効果に加えて、小容量ＲＡＭでレジスタキャッシュ４０３を実現しているので、レジスタキャッシュ４０３を多ポート化できるという効果が得られる。
【００６２】
以上好ましい実施の形態と実施例をあげて本発明を説明したが、本発明は必ずしも、上記実施の形態及び実施例に限定されるものでなく、その技術的思想の範囲内において様々に変形して実施することができる。
【図面の簡単な説明】
【００６３】
【図１】本発明の第１の実施の形態によるプロセッサの構成を示すブロック図である。
【図２】本発明の第２の実施の形態によるベクトルプロセッサの構成を示すブロック図である。
【図３】本発明の第２の実施の形態によるベクトルプロセッサの動作例を示すタイムチャートである。
【図４】関連技術によるプロセッサの動作例を示すタイムチャートである。
【図５】本発明の第３の実施の形態によるベクトルプロセッサの構成を示すブロック図である。
【図６】関連技術によるプロセッサの構成を示すブロック図である。
【符号の説明】
【００６４】
１０１：ＳＩＭＤレジスタファイル
１０２：演算器
１０３、２０３、４０３：レジスタキャッシュ
１０４、２０４、４０４：クロスバースイッチ
１０５、２０５、４０５：セレクタ
２０１：ベクトルレジスタファイル
２０２：ベクトル向け演算器
２０６：命令発行制御部
２０７：データパス制御部
４０２：積和演算器
【図１】
2010079361.tif 000003
【図２】
2010079361.tif 000004
【図３】
2010079361.tif 000005
【図４】
2010079361.tif 000006
【図５】
2010079361.tif 000007
【図６】
2010079361.tif 000008