(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024090284
(43)【公開日】2024-07-04
(54)【発明の名称】情報処理装置及び情報処理方法
(51)【国際特許分類】
G06F 9/38 20180101AFI20240627BHJP
G06F 9/345 20180101ALI20240627BHJP
G06F 12/0846 20160101ALI20240627BHJP
【FI】
G06F9/38 350A
G06F9/38 370A
G06F9/345 A
G06F12/0846
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2022206073
(22)【出願日】2022-12-22
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】葛 毅
(72)【発明者】
【氏名】吉川 隆英
【テーマコード(参考)】
5B013
5B033
5B205
【Fターム(参考)】
5B013CC01
5B013DD01
5B033DB09
5B205MM03
(57)【要約】
【課題】性能低下を抑えつつ回路規模を小さくする情報処理装置及び情報処理方法を提供する。
【解決手段】レーン処理部150~153は、パイプラインに含まれるレーンのそれぞれに配置され、対応するレーンで処理される命令にしたがってマルチバンクレベル1データキャッシュ107に含まれるバンク170のいずれかにアクセスしてデータの読出し又は書込みを実行する。閉塞網スイッチ106は、接続経路の切り替えによりレーン処理部150~153をバンク170のいずれかに選択的に接続させる。衝突検出部181は、アクセス先の情報及び閉塞網スイッチ106の接続経路の情報を基にアクセスの衝突個所を検出し、衝突個所を基に閉塞網スイッチ106の切り替え状態及び処理を停止させるストールレーンを決定する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
それぞれが別個の記憶領域として使用される複数のバンクを有する記憶装置と、
前記バンクに対するデータの読出し又は書込みの命令の処理をそれぞれが行う複数のレーンを有するパイプラインと、
前記レーンのそれぞれに配置され、対応する前記レーンで処理される前記命令にしたがって前記バンクのいずれかにアクセスしてデータの読出し又は書込みを実行する複数の命令処理部と、
接続経路の切り替えにより前記命令処理部を前記バンクのいずれかに選択的に接続させる閉塞網スイッチと、
前記命令処理部の2つ以上が前記バンクにアクセスを行う場合に、アクセス先の情報及び前記閉塞網スイッチの前記接続経路の情報を基に前記アクセスの衝突個所を検出し、検出した前記衝突個所を基に前記閉塞網スイッチの切り替え状態及び前記複数のレーンの中から前記処理を停止させるストールレーンを決定する衝突検出部と、
前記衝突検出部により決定された前記ストールレーンに対応する前記命令処理部からの前記バンクへのアクセスを停止させるパイプライン制御を行うパイプライン制御部と、
前記衝突検出部により決定された切り替え状態にしたがって前記閉塞網スイッチを切り替えるスイッチ制御部と
を備えたことを特徴とする情報処理装置。
【請求項2】
前記衝突検出部は、前記記憶装置におけるバンク衝突及び前記閉塞網スイッチにおけるスイッチ衝突の双方を検出することを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記複数の命令処理部は、それぞれが前記命令を入力順に処理するキューを有し、
前記衝突検出部は、前記キューに蓄積された保持命令数を基に、前記閉塞網スイッチの切り替え状態及び前記処理を停止させるストールレーンを決定する
ことを特徴とする請求項1に記載の情報処理装置。
【請求項4】
前記衝突検出部は、前記キューに格納された保持命令数が多いほど順位が上がるように前記命令処理部に対応する前記レーンに前記アクセスを許可する優先順位を付けて、前記閉塞網スイッチの切り替え状態及び前記処理を停止させるストールレーンを決定することを特徴とする請求項3に記載の情報処理装置。
【請求項5】
前記衝突検出部は、前記保持命令数の最大値が閾値以上の場合に、前記キューに蓄積された保持命令数を基に、前記閉塞網スイッチの切り替え状態及び前記処理を停止させるストールレーンを決定することを特徴とする請求項3に記載の情報処理装置。
【請求項6】
複数のバンクを有する記憶装置と、
前記バンクに対するデータの読出し又は書込みの命令の処理をそれぞれが行う複数のレーンを有するパイプラインと、
前記レーンのそれぞれに配置され、対応する前記レーンで処理される前記命令にしたがって前記バンクのいずれかにアクセスしてデータの読出し又は書込みを実行する複数の命令処理部と、
経路の切り替えにより前記命令処理部を前記バンクのいずれかに選択的に接続させる閉塞網スイッチを有する情報処理装置が、
前記命令処理部の2つ以上が前記バンクにアクセスを行う場合に、アクセス先の情報及び前記閉塞網スイッチの経路情報を基に前記アクセスの衝突個所を検出し、検出した前記衝突個所を基に前記閉塞網スイッチの切り替え状態及び前記複数のレーンの中から前記処理を停止させるストールレーンを決定し、
決定した前記ストールレーンに対応する前記命令処理部からの前記バンクへのアクセスを停止させるパイプライン制御を行い、
決定した切り替え状態にしたがって前記閉塞網スイッチを切り替える
処理を実行することを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置及び情報処理方法に関する。
【背景技術】
【0002】
近年、命令レベルの並列性を用いて1サイクル中に複数の命令を実行するプロセッサが研究開発されている。そして、より多くの命令レベル並列性を抽出するために、プロセッサの命令発行幅は増加する傾向にある。また、データレベル並列性を抽出するために、1つの命令で複数のデータを処理するSIMD命令も増加する傾向にある。プロセッサで実行されるプログラムには多くのロード命令又はストア命令が存在する。SIMD命令のロードストア命令には、連続でない複数のアドレスに対してロードまたはストア処理を行うようなギャザー、スキャッター命令が存在する。そのため、多命令発行を行ったり、SIMD命令を持つプロセッサでは、1サイクル中に複数のアドレスへのロード命令又はストア命令が発行される頻度が高く、この要求に応えるデータキャッシュが求められる。このため、近年のプロセッサでは、データキャッシュのマルチポート化が進められている。
【0003】
データキャッシュのマルチポート化の手法として注目されているものに、マルチバンク化がある。マルチバンク化では、データキャッシュが、バンクと呼ばれる複数の記憶領域に分けられ、バンク毎にポートが用意される。これにより、プロセッサは、異なるバンクにアクセスする場合に、複数のロード命令又はストア命令の要求に同時に応えることが可能となる。マルチバンク化された1次データキャッシュは、マルチバンクレベル1データキャッシュ(MBL1D)と呼ばれる場合がある。
【0004】
CPU(Central Processing Unit)にマルチバンクレベル1データキャッシュを搭載した場合、複数のロード及びストアを行うロードストアユニットとマルチバンクレベル1データキャッシュが有する複数のバンクとの間でデータ転送が行われる。各ロードストアユニットと各バンクとの間の接続にクロスバースイッチ等の非閉塞網を用いれば、同じバンクを宛先とした複数の命令により発生するバンク衝突以外のアクセス衝突が生じないため、データ転送の効率が向上する。非閉塞網とは、異なる宛先に対する任意の接続が同時に実現できるスイッチ構成である。しかしながら、非閉塞網を用いた場合、回路規模が増大するというデメリットがある。
【0005】
逆に、回路規模を抑えるためには、閉塞網を用いた方が有利である。閉塞網とは、異なる宛先に対する同時接続が実現されない場合があるスイッチ構成である。閉塞網には、例えば、オメガ網、banyan網及び間接2進nキューブなどが存在する。ただし、閉塞網を用いた場合、アクセス衝突としてバンク衝突に加えて異なるアクセスが同一の経路を通過するスイッチの衝突が生じるため、データ転送の効率が低下するおそれがある。以下では、スイッチでのアクセスの衝突を「スイッチ衝突」と呼ぶ。
【0006】
なお、閉塞網を用いる場合に、Self-RootingやNon-Blocking等の手法により衝突を回避する技術が提案されている。また、複数のメモリバンクに対する複数の命令が発行され、データハザードが発生した場合に、ベクトルシフトオペレーション等のデータハザード解消ロジックを用いて処理を継続する技術が提案されている。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】米国特許出願公開第2022/0171731号明細書
【特許文献2】特開2017-016637号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかしながら、マルチバンクレベル1データキャッシュを搭載しない従来のCPUの構成では、バンク衝突が発生した場合、次の命令以降の命令が全てキャンセルされ再発行される。そのため、単に従来のCPUの構成に非閉塞網及びマルチバンクレベル1データキャッシュ搭載した場合、バンク衝突以降の命令が全てキャンセルされることとなる。マルチバンクレベル1データキャッシュではバンク衝突が頻発するため、このような構成ではCPUの性能低下が大きくなる。さらに、非閉塞網の代わりに閉塞網を用いた場合、バンク衝突に加えてスイッチ衝突も発生するため、非閉塞網を用いた場合以上に、CPUの性能低下が大きくなるおそれがある。
【0009】
この点、データハザードが発生した場合にデータハザード解消ロジックを用いて処理を継続する技術では、閉塞網とマルチバンクレベル1データキャッシュとの組み合わせについては考慮されていない。そのため、この技術を用いても、非閉塞網とマルチバンク化された1次データキャッシュとを搭載したCPUの性能低下を抑えることは困難である。
【0010】
開示の技術は、上記に鑑みてなされたものであって、性能低下を抑えつつ回路規模を小さくする情報処理装置及び情報処理方法を提供することを目的とする。
【課題を解決するための手段】
【0011】
本願の開示する情報処理装置及び情報処理方法の一つの態様において、記憶装置は、それぞれが別個の記憶領域として使用される複数のバンクを有する。パイプラインは、前記バンクに対するデータの読出し又は書込みの命令の処理をそれぞれが行う複数のレーンを有する。複数の命令処理部は、前記レーンのそれぞれに配置され、対応する前記レーンで処理される前記命令にしたがって前記バンクのいずれかにアクセスしてデータの読出し又は書込みを実行する。閉塞網スイッチは、接続経路の切り替えにより前記命令処理部を前記バンクのいずれかに選択的に接続させる。衝突検出部は、前記命令処理部の2つ以上が前記バンクにアクセスを行う場合に、アクセス先の情報及び前記閉塞網スイッチの前記接続経路の情報を基に前記アクセスの衝突個所を検出し、検出した前記衝突個所を基に前記閉塞網スイッチの切り替え状態及び前記複数のレーンの中から前記処理を停止させるストールレーンを決定する。パイプライン制御部は、前記衝突検出部により決定された前記ストールレーンに対応する前記命令処理部からの前記バンクへのアクセスを停止させるパイプライン制御を行う。スイッチ制御部は、前記衝突検出部により決定された切り替え状態にしたがって前記閉塞網スイッチを切り替える。
【発明の効果】
【0012】
1つの側面では、本発明は、性能低下を抑えつつ回路規模を小さくすることができる。
【図面の簡単な説明】
【0013】
【
図1】
図1は、実施例1に係るCPUのブロック図である。
【
図2】
図2は、実施例1に係る衝突検出部が保持するテーブルの概要を示す図である。
【
図3】
図3は、実施例1に係る衝突検出部が保持するテーブルの2入力2出力の場合の簡単な一例を示す図である。
【
図4】
図4は、閉塞網スイッチに含まれる複数のスイッチのうち1つのスイッチの概要を示す図である。
【
図5】
図5は、衝突検出部及びスイッチ制御部の構成の一例を示す図である。
【
図6】
図6は、スイッチが2段の場合の衝突検出部が有するテーブルの一例を示す図である。
【
図7】
図7は、実施例1に係るスイッチの切り替え状態及びストールレーンの決定の一例を示す図である。
【
図8】
図8は、命令フェッチ処理のフローチャートである。
【
図9】
図9は、実施例1に係るアクセス制御部によるスイッチ制御及びパイプライン制御のフローチャートである。
【
図10】
図10は、クロスバースイッチとオメガ網スイッチの回路規模の比較を示す図である。
【
図11】
図11は、実施例2に係るCPUのブロック図である。
【
図12】
図12は、実施例2に係るパイプラインのレーン毎の優先順位の決定処理の一例を示す図である。
【
図13】
図13は、実施例2に係るアクセス制御部によるアクセス制御処理の概要を示す図である。
【
図14】
図14は、保持命令数を考慮したスイッチの切り替え状態及びストールレーンの決定の一例を示す図である。
【
図15】
図15は、実施例2に係るアクセス制御部によるスイッチ制御及びパイプライン制御のフローチャートである。
【
図16】
図16は、入力側及び出力側のFIFOキューそれぞれの保持命令数を用いて優先順位を決定する場合の一例を示す図である。
【
図17】
図17は、変形例2に係るアクセス制御部によるスイッチ制御及びパイプライン制御のフローチャートである。
【発明を実施するための形態】
【0014】
以下に、本願の開示する情報処理装置及び情報処理方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する情報処理装置及び情報処理方法が限定されるものではない。
【実施例0015】
図1は、実施例1に係るCPUのブロック図である。CPU1は、メインメモリであるメモリ2と接続される。CPU1は、パイプライン処理により命令を処理する。CPU1は、命令実行部10、命令フェッチ部11、命令デコード部12及びスケジューラ13を有する。
【0016】
このCPU1が、「情報処理装置」の一例にあたる。また、各命令を段階的に処理する命令実行部10、命令フェッチ部11、命令デコード部12及びスケジューラ13がパイプラインにあたり、個別のメモリアクセスを処理する経路がレーンにあたる。すなわち、本実施例に係るパイプラインは、複数のメモリアクセスを並列的に処理するため、複数のレーンを有する。
【0017】
命令フェッチ部11は、プログラムカウンタが指定するアドレスにしたがって、メモリ2に格納された命令を取得する。そして、命令フェッチ部11は、取得した命令を命令デコード部12へ出力する。ここでは、命令フェッチ部11が、ロード命令及びストア命令を取得した場合で説明する。
【0018】
命令デコード部12は、命令の入力を命令フェッチ部11から受ける。そして、命令デコード部12は、命令実行部10が処理可能な形式に命令をデコードする。その後、命令デコード部12は、デコードした命令をスケジューラ13へ出力する。
【0019】
スケジューラ13は、デコードされた命令の入力を受ける。次に、スケジューラ13は、命令の並列実行等のスケジューリングを行う。そして、スケジューラ13は、決定したスケジューリングにしたがって命令を命令実行部10へ出力する。
【0020】
命令実行部10は、スケジューリングされた命令の入力をスケジューラ13から受ける。そして、命令実行部10は、命令にしたがって、データのロードやストアを実行する。以下に、本実施例に係る命令実行部10の詳細について説明する。命令実行部10は、
図1に示すように、演算実行部101、スカラレジスタファイル102、ベクトルレジスタファイル103、スカラロードストアユニット104及びSIMD(Single Instruction Multi Data)ロードストアユニット105を有する。さらに、命令実行部10は、閉塞網スイッチ106、マルチバンクレベル1データキャッシュ107及びアクセス制御部108を有する。
【0021】
ここで、本実施例では、CPU1がSIMDロードストアユニット105を用いてSIMD命令を処理する場合で説明するが、SIMD命令の処理は行わなくてもよい。例えば、CPU1が、複数のスカラロードストアユニット104を用いて複数のスカラ命令を並列して処理する構成でもよい。
【0022】
マルチバンクレベル1データキャッシュ107は、複数のバンク170を有するマルチバンク化された1次データキャッシュである。
図1では、マルチバンクレベル1データキャッシュ107は、8つのバンク170を有する構成を記載したが、バンク170の数に制限はない。各バンク170は、独立してメモリアクセスの要求を処理することが可能である。このマルチバンクレベル1データキャッシュ107が、「記憶装置」の一例にあたる。
【0023】
閉塞網スイッチ106は、閉塞網を有するスイッチである。閉塞網スイッチ106では、異なるバンクを宛先とするアクセスであっても、スイッチの切り替え状態によりアクセス間で衝突が発生する可能性がある。
【0024】
本実施例では、閉塞網スイッチ106が、オメガ網である場合で説明する。オメガ網では、2つの入力と2つの出力とを直通又は交換で選択的に接続するスイッチが並列に複数個並べられ、その列が複数段に配置される。そして、各スイッチの切り替えにより最初の入力を選択的に全ての出力のいずれかに繋げることが可能となるように前後の段のスイッチが接続されたネットワーク構成である。
【0025】
スカラレジスタファイル102は、スケジューラ13から入力されたスカラ命令のデータを格納する。ベクトルレジスタファイル103は、スケジューラ13から入力されたベクトル命令のデータを格納する。
【0026】
スカラロードストアユニット104は、パイプラインの1つのレーンに対応する。以下では、スカラロードストアユニット104に対応するレーンをレーンLと呼ぶ。スカラロードストアユニット104は、入力側のFIFO(First In First Out)キューを1つ有する。また、スカラロードストアユニット104は、出力側のFIFOキューを1つ有する。プロセッサのパイプラインにFIFOを追加することで、バンク衝突による性能低下を抑止する方式は、特開2022-143544号明細書で提案されている。スカラロードストアユニット104は、マルチバンクレベル1データキャッシュ107が保持するいずれかのバンク170にアクセスして命令にしたがってデータのロード又はストアを実行する。
【0027】
具体的には、スカラロードストアユニット104は、ロード又はストアを実行させるスカラ命令をスカラレジスタファイル102から取得して入力側のFIFOキューに蓄積していく。そして、スカラロードストアユニット104は、アクセス制御部108からアクセスを停止させる指示が入力されていなければ、サイクルに合わせて入力側のFIFOキューに格納された命令のうち古い順に命令で指示された要求を閉塞網スイッチ106へ出力する。
【0028】
その後、スカラロードストアユニット104は、要求に応じたデータのロード又はストアの結果のマルチバンクレベル1データキャッシュ107からの応答を、閉塞網スイッチ106を介して受信する。そして、スカラロードストアユニット104は、受信した応答を出力側のFIFOキューに格納して蓄積する。その後、スカラロードストアユニット104は、それぞれ出力側のFIFOキューに格納された命令のうち古い順に命令をスカラレジスタファイル102へ出力して格納する。スカラロードストアユニット104が、「命令処理部」の一例にあたる。
【0029】
SIMDロードストアユニット105は、パイプラインの複数のレーンに対応し、パイプライン毎にメモリアクセスを処理する。本実施例では、SIMDロードストアユニット105は、パイプラインの4つのレーンのそれぞれにおける命令を別個に処理する。
図1では、SIMDロードストアユニット105における各レーンに対応する処理機能をそれぞれレーン処理部150~153として図示した。また、以下の説明では、レーン処理部150~153のそれぞれに対応するレーンをレーンL0~L3と呼ぶ。レーン処理部150~153が、「命令処理部」の一例にあたる。
【0030】
レーン処理部150~153は、それぞれ入力側のFIFOキューを1つずつ有する。また、レーン処理部150~153は、それぞれ出力側のFIFOキューを1つずつ有する。レーン処理部150~153は、それぞれマルチバンクレベル1データキャッシュ107が保持するいずれかのバンク170にアクセスして、命令にしたがってデータのロード又はストアを実行する。
【0031】
具体的には、レーン処理部150~153は、ロード又はストアを実行させるスカラ命令をベクトルレジスタファイル103からそれぞれが取得して、自己が有する入力側のFIFOキューに蓄積していく。そして、レーン処理部150~153は、アクセス制御部108からストールの指示が入力されていなければ、サイクルに合わせて入力側のFIFOキューに格納された命令のうち古い順に命令で指示された要求を閉塞網スイッチ106へ出力する。
【0032】
その後、レーン処理部150~153は、要求に応じたデータのロード又はストアの結果のマルチバンクレベル1データキャッシュ107からの応答を、閉塞網スイッチ106を介してそれぞれが受信する。そして、レーン処理部150~153は、受信した応答をそれぞれの出力側のFIFOキューに格納して蓄積する。その後、レーン処理部150~153は、それぞれ出力側のFIFOキューに格納された命令のうち古い順に命令をベクトルレジスタファイル103へ出力して格納する。
【0033】
アクセス制御部108は、閉塞網スイッチ106でのスイッチ衝突及びマルチバンクレベル1データキャッシュ107でのバンク衝突が起こらないように、スカラロードストアユニット104及びSIMDロードストアユニット105からのバンク170へのアクセスを制御する。アクセス制御部108は、衝突検出部181、パイプライン制御部182及びスイッチ制御部183を有する。
【0034】
衝突検出部181は、閉塞網スイッチ106におけるスカラロードストアユニット104及びレーン処理部150~153と各バンク170とのそれぞれの接続経路の情報を保持する。すなわち、衝突検出部181は、スカラロードストアユニット104及びレーン処理部150~153と各バンク170とを結ぶ接続経路の間で、同時にアクセスが発生した場合にスイッチ衝突が起こる接続経路の組み合せの情報を保持する。さらに、衝突検出部181は、スカラロードストアユニット104及びレーン処理部150~153のそれぞれに対応する各レーンL0~L3について、アクセス許可の優先順位を予め保持する。例えば、衝突検出部181は、レーン番号の昇順にしたがってアクセス許可の優先順位を付ける。本実施例の場合、衝突検出部181は、レーンLのレーン番号を最小として、レーンL、レーンL0、レーンL1、レーンL2、レーンL3の昇順に優先になるようにアクセス許可の優先順位を保持する。以下では、アクセス許可の優先順位を、単に優先順位と呼ぶ。
【0035】
他にも、衝突検出部181は、サイクル毎に優先順位を切り替えてもよい。例えば、衝突検出部181は、レーンL、レーンL0、レーンL1、レーンL2、レーンL3の順番で順位が低くなるように優先順位を決定する。次のサイクルで、衝突検出部181は、レーンL0、レーンL1、レーンL2、レーンL3、レーンLの順番で順位が低くなるようにアクセス許可の優先順位を決定する。このように、衝突検出部181は、レーンを巡回させえて優先順位を決定してもよい。
【0036】
衝突検出部181は、スカラロードストアユニット104及びレーン処理部150~153のそれぞれから次に行われるアクセス情報を取得する。そして、衝突検出部181は、アクセス情報に含まれるアクセス先のバンク170を確認して、同じバンク170を宛先とするアクセスが存在する場合、バンク衝突が発生すると判定する。また、衝突検出部181は、アクセス情報に含まれるそれぞれのアクセス先のバンク170とスカラロードストアユニット104及びレーン処理部150~153のそれぞれとの接続経路を確認して、スイッチ衝突が発生するか否かを判定する。
【0037】
バンク衝突及びスイッチ衝突の両方もしくはいずれか一方が発生する場合、衝突検出部181は、衝突が発生しないように、先順位にしたがって、レーンL及びレーンL0~L3に対応するパイプラインのレーンからストールレーンを決定する。すなわち、衝突検出部181は、優先順位の高いレーンがなるべく使用できるように、優先順位の低いレーンをストールレーンとして決定する。また、衝突検出部181は、ストールレーン以外のレーンをアクセス先のバンク170に接続させるように、閉塞網スイッチ106の切り替え状態を決定する。
【0038】
その後、衝突検出部181は、ストールレーンを指示するストールレーン情報をパイプライン制御部182へ出力する。また、衝突検出部181は、接続させるスカラロードストアユニット104及びレーンL0~L3とバンク170との組み合わせに合わせたスイッチの切り替え状態の情報を含むスイッチ制御情報をスイッチ制御部183へ出力する。
【0039】
例えば、
図2は、実施例1に係る衝突検出部が保持するテーブルの概要を示す図である。衝突検出部181は、例えば、アクセス先の情報及び優先させるレーンの情報が登録されたテーブル200を保持する。
図2のテーブル200は、アクセス情報201に対応する列に各レーンのアクセス先の情報が登録される。また、
図2のテーブル200は、優先レーン情報202に対応する列に優先させるレーンの情報が登録される。さらに、
図2のテーブル200は、各アクセス先と優先させるレーンの情報とのそれぞれの組み合わせに対応するスイッチの切り替えの状態を含む列及びストールレーンの情報を含む列を有する。そして、衝突検出部181は、アクセス情報201及び優先レーン情報202を用いてテーブル200を検索して、スイッチ制御情報203及びストールレーン情報204を出力する。
【0040】
図3は、実施例1に係る衝突検出部が保持するテーブルの2入力2出力の場合の簡単な一例を示す図である。
図3のテーブル200は、閉塞網スイッチ106に含まれる複数のスイッチのうち1つのスイッチに対応するスイッチの切り替え及びストールするレーンを決定するためのテーブルである。
【0041】
ここで、閉塞網スイッチ106の中の1つのスイッチについて説明する。
図4は、閉塞網スイッチに含まれる複数のスイッチのうち1つのスイッチの概要を示す図である。スイッチSW0が1つのスイッチにあたる。スイッチSW0の紙面に向かって上部に記載したLはスカラロードストアユニット104及びレーンL0~L3側の端子(以下、「レーン側の端子」と呼ぶ。)を表し、紙面に向かって下部に記載したBはバンク170側の端子を表す。そして、ここでは、スイッチSW0は、レーン側の端子の紙面に向かって左側の端子にレーンL0が接続され、右側の端子にレーンL1が接続される。さらに、バンク170側の端子の紙面に向かって左側の端子にバンクB0に繋がる経路が接続され、右側の端子にバンクB1に繋がる経路が接続される。また、状態215は、レーンL0とバンクB0とが接続され、レーンL1とバンクB1とが接続されるスイッチSW0における直通状態を示す。また、状態216は、レーンL0とバンクB1とが接続され、レーンL1とバンクB0とが接続されるスイッチSW0における交換状態を示す。ここでは、スイッチSW0は、値が0の制御信号が入力されると状態215に切り替わり、値が1の制御信号が入力されると状態216に切り替わる。
【0042】
図3に戻って説明を続ける。テーブル200は、例えば、アクセス先情報211、優先レーン情報212、スイッチ切替状態213及びストールレーン214が登録される。アクセス先情報211は、レーンL0及びL1のそれぞれについて、バンクB0へのアクセスを0で表し、バンクB1へのアクセスを1で表す。例えば、アクセス先情報211におけるレーンL0及びL1のそれぞれの値が同じであれば、宛先のバンク170が同じでありバンク衝突が発生することを示す。優先レーン情報212は、0がレーンL0のアクセスを優先し、1がレーンL1のアクセスを優先することを表す。また、スイッチ切替状態213は、スイッチの切り替え信号の値を表す。また、ストールレーン214は、レーンL0及びL1のそれぞれについて、値が0であればストールさせないことを示し、値が1であればストールさせることを示す。
【0043】
衝突検出部181は、アクセス情報として、レーンL0及びL1のそれぞれについて、アクセス先が、バンクB0又はバンクB1のいずれであるかの情報の入力を受ける。また、衝突検出部181は、レーンL0及びL1のいずれのアクセスを優先するかの情報を予め保持する。そして、衝突検出部181は、それらの情報を用いてテーブル200を検索し、スイッチ切替状態213及びストールレーン214からそれらの情報に対応するスイッチの切り替え状態及びストールレーンを特定する。そして、衝突検出部181は、特定したスイッチの切り替え状態及びストールレーンの情報をそれぞれスイッチ制御情報及びストールレーン情報として出力する。ここで、本実施例では、アクセス制御部108は、固定の優先順位を用いて接続経路及びストール対象を決定したが、所定のアルゴリズムを用いて命令出力の調停毎に優先順位を変更してもよい。
【0044】
このテーブル200の検索を計算で行う場合、衝突検出部181は、次の数式(1)で示される論理式を用いてスイッチの切り替え状態及びストールレーンを決定する。ここで、ctrlは
図3のテーブル200におけるスイッチの切り替え状態を表し、ストール欄のレーンL0及びL1はストールレーンを表す。また、アクセス欄のL0及びL1は入力されたアクセス情報に対応するアクセス先情報211に対応する値を表し、Pは優先レーン情報212に対応する値を表す。さらに、各符号の上部のバーは、逆の値を表す。
【0045】
【0046】
図1に戻って説明を続ける。パイプライン制御部182は、ストールレーン情報の入力を衝突検出部181から受ける。そして、パイプライン制御部182は、スカラロードストアユニット104及びレーン処理部150~153のうち、ストールレーン情報において指示されたストールレーンに対応するものをストールさせるパイプライン制御を行う。
【0047】
スイッチ制御部183は、スイッチ制御情報の入力を衝突検出部181から受ける。そして、スイッチ制御部183は、スイッチ制御情報で指示された各スイッチの切り替え状態にしたがって、閉塞網スイッチ106を切り替えるスイッチ制御を行う。
【0048】
スカラロードストアユニット104及びレーン処理部150~153のうちのストールさせられたものは、入力側のFIFOキューからの命令に応じた要求の出力を停止する。これにより、アクセス制御部108は、閉塞網スイッチ106でのスイッチ衝突及びマルチバンクレベル1データキャッシュ107でのバンク衝突を抑制することができる。
【0049】
他にも、アクセス制御部108は、衝突箇所を特定して、使用可能なレーン数がなるべく多くなるようにスイッチの切り替え及びストールの対象を決定してもよい。例えば、以下のような手順でスイッチの切り替え及びストールの対象を決定することができる。衝突検出部181が、アクセス情報及び接続経路の情報を用いて閉塞網スイッチ106及びマルチバンクレベル1データキャッシュ107における衝突個所を特定する。衝突検出部181で接続経路がなるべく多くなるようにスイッチの切り替え及びストールの対象を決定する。パイプライン制御部182は、決定したストール対象をストールさせる。スイッチ制御部183は、衝突検出部181の決定にしたがって閉塞網スイッチ106を切り替える。
【0050】
図5は、衝突検出部及びスイッチ制御部の構成の一例を示す図である。ここでは、閉塞網スイッチ106が、スイッチSW0~SW3を有する場合を例に、衝突検出部181及びスイッチ制御部183の構成の一例について説明する。
【0051】
衝突検出部181は、スイッチSW0~SW3のそれぞれに対応するSW0衝突検出部320、SW1衝突検出部321、SW2衝突検出部322及びSW3衝突検出部323を有する。また、スイッチ制御部183は、スイッチSW0~SW3のそれぞれに対応するSW0制御部330、SW1制御部331、SW2制御部332及びSW3制御部333を有する。
【0052】
衝突検出部181のSW0衝突検出部320、SW1衝突検出部321、SW2衝突検出部322及びSW3衝突検出部323は、それぞれ
図6に示すテーブル350のようなテーブルを有する。
【0053】
図6は、スイッチが2段の場合の衝突検出部が有するテーブルの一例を示す図である。
図6のテーブル350は、
図5におけるスイッチSW0が保持するテーブルである。
【0054】
テーブル350は、レーンL0及びL1のアクセス先のバンク170と優先レーンとの組み合わせが登録される。さらに、テーブル350は、それぞれのアクセス先と優先レーンとの組み合わせに対応するスイッチの切り替え状態及びストールレーンが登録される。
【0055】
衝突検出部181は、SW0に着目すると、アクセス情報として、レーンL0及びL1のそれぞれについて、バンクB0~B3のいずれへの接続かの情報の入力を受ける。また、衝突検出部181は、レーンL0及びL1の優先順位を保持する。そして、衝突検出部181は、それらの情報を用いてテーブル350を検索し、アクセス情報及び優先順位に対応するスイッチの切り替え状態及びストールレーンを特定する。そして、衝突検出部181は、スイッチ制御情報をスイッチ制御部183へ出力して、テーブル350にしたがい特定したスイッチの切り替えに応じてスイッチSW0を制御させる。また、衝突検出部181は、ストールレーン情報をパイプライン制御部182へ出力して、テーブル350にしたがいストールレーンとして特定したレーンをストールさせるようにSIMDロードストアユニット105を制御させる。
【0056】
図5に戻って説明を続ける。SW0衝突検出部320、SW1衝突検出部321、SW2衝突検出部322及びSW3衝突検出部323は、各レーンの優先順位を保持する。SW0衝突検出部320、SW1衝突検出部321、SW2衝突検出部322及びSW3衝突検出部323は、それぞれ自己が繋がるレーンを特定し、且つ、それぞれのレーンの宛先を含むアクセス情報を取得する。そして、SW0衝突検出部320、SW1衝突検出部321、SW2衝突検出部322及びSW3衝突検出部323は、それぞれ対応するスイッチSW0~SW3におけるスイッチの切り替え状態及びストールレーンを決定する。
【0057】
スイッチ制御部183のSW0制御部330、SW1制御部331、SW2制御部332及びSW3制御部333は、それぞれ対応するスイッチSW0~SW3に対するスイッチ制御情報を取得する。そして、SW0制御部330、SW1制御部331、SW2制御部332及びSW3制御部333は、スイッチ制御情報にしたがって、対応するスイッチSW0~SW3の切り替えを行う。
【0058】
パイプライン制御部182は、ストールレーン情報をSW0衝突検出部320、SW1衝突検出部321、SW2衝突検出部322及びSW3衝突検出部323から取得する。そして、パイプライン制御部182は、各ストールレーン情報によりストールレーンとして指定されたレーンに対応するレーン処理部150又は151のいずれかをストールさせる。
【0059】
図7は、実施例1に係るスイッチの切り替え状態及びストールレーンの決定の一例を示す図である。状態221はアクセス情報に応じた接続状態を示し、状態222は、スイッチの切り替え及びストール実行後の接続状態を示す。ここでは、閉塞網スイッチ106は、スイッチSW0~SW3を有し、レーンL0~L3に対応するレーン側の端子及びバンクB0~B3に対応するバンク170側の端子を有する。また、ここでは、レーン処理部150~153から命令が発行され、レーン処理部150~153がそれぞれレーンL0~L3に対応するレーン側の端子に接続される場合で説明する。
【0060】
衝突検出部181は、レーン毎の入力側のFIFOキューの先頭に格納された命令から取得したアクセス情報を用いて、アクセス情報に応じた接続状態である状態221を確認する。そして、衝突検出部181は、スイッチSW2における衝突個所231及び衝突個所232でスイッチ衝突が発生することを確認する。
【0061】
そして、衝突検出部181は、自己が有するテーブルを用いてスイッチの切り替え状態及びストールレーンを決定する。この場合、衝突検出部181は、スイッチSW0~SW3のいずれも直通状態として、且つ、レーンL2をストールレーンすると決定する。パイプライン制御部182及びスイッチ制御部183は、衝突検出部181の決定にしたがって、レーンL2に対応するレーン処理部152をストールさせ、且つ、閉塞網スイッチ106の切り替えを行う。これにより、閉塞網スイッチ106は、状態222のような切り替え状態となる。この場合、レーンL2からのアクセスはなくなり、レーンL0、L1、L3がそれぞれバンクB0、B1、B3に繋がり、命令実行部10は、閉塞網スイッチ106におけるスイッチ衝突を回避できる。
【0062】
演算実行部101は、スカラレジスタファイル102及びベクトルレジスタファイル103に格納されたデータを用いて演算を実行する。
【0063】
図8は、命令フェッチ処理のフローチャートである。次に、
図8を参照して、命令フェッチ処理の流れを説明する。
【0064】
命令フェッチ部11は、ロード命令及びストア命令をメモリ2より取得する(ステップS101)。
【0065】
命令デコード部12は、命令フェッチ部11から取得した命令をそれぞれデコードする(ステップS102)。
【0066】
スケジューラ13は、デコードされた命令の入力を命令デコード部12から受ける。そして、スケジューラ13は、各命令のスケジューリングを実行する(ステップS103)。ここでは、スケジューラ13が、スケジューリングを行った命令をベクトルレジスタファイル103に命令を格納する場合で説明する。
【0067】
スケジューラ13は、スカラロードストア命令をスカラロードストアユニット104の入力側のFIFOキューに格納して蓄積する。SIMDロードストア命令をSIMDロードストアユニットのレーン処理部150~153の入力側のFIFOキューに格納して蓄積する(ステップS104)。
【0068】
図9は、実施例1に係るアクセス制御部によるスイッチ制御及びパイプライン制御のフローチャートである。次に、
図9を参照して、実施例1に係るアクセス制御部108によるスイッチ制御及びストール制御の流れを説明する。
【0069】
衝突検出部181は、スカラロードストアユニット104及びレーンL0~L3における入力側のFIFOキューの先頭の命令によるそれぞれのアクセス情報を取得する(ステップS111)。
【0070】
次に、衝突検出部181は、アクセス情報を用いてバンク衝突を検出する(ステップS112)。
【0071】
次に、衝突検出部181は、アクセス情報及び接続情報を用いてバンク衝突を検出する(ステップS113)。
【0072】
次に、衝突検出部181は、アクセス許可の優先順位に応じてスイッチの切り替え状態及びストールレーンを決定する(ステップS114)。
【0073】
スイッチ制御部183は、衝突検出部181により決定されたスイッチの切り替え状態にしたがって、閉塞網スイッチ106の切り替えを行うスイッチ制御を実行する。また、パイプライン制御部182は、衝突検出部181によりストールレーンとして決定されたレーンに対応するスカラロードストアユニット104及びレーンL0~L3のいずれか1つ又は複数をストールさせるパイプライン制御を実行する(ステップS115)。
【0074】
その後、スカラロードストアユニット104及びレーンL0~L3は、パイプラインのストールレーン以外のレーンにおいて宛先バンクにアクセスしてデータのロード又はストアを実行する(ステップS116)。
【0075】
図10は、クロスバースイッチとオメガ網スイッチの回路規模の比較を示す図である。
図10は、2入力1出力マルチプレクサ(mu×2)の個数で換算した回路規模を示す。
【0076】
例えば、8×8のスイッチの場合、クロスバースイッチであれば1出力あたり7個のmu×2が設けられそれらが8組配置されるので、合計で56個のmu×2が設けられる。これに対して、オメガ網スイッチであれば、1クロスポイントあたり2個のmu×2が設けられそれらが12組配置されるので、合計で24個のmu×2が設けられる。この場合、クロスバースイッチとオメガ網スイッチとの回路規模の比は、56/24=2.3倍となる。すなわち、この場合は、従来に比べて本実施例に係るCPU1では回路規模を1/2.3に削減可能である。
【0077】
また、例えば、128×128のスイッチの場合、クロスバースイッチであれば合計で16256個のmu×2が設けられる。これに対して、オメガ網スイッチであれば、合計で896個のmu×2が設けられる。この場合、クロスバースイッチとオメガ網スイッチとの回路規模の比は、16256/896=18倍となる。すなわち、この場合は、従来に比べて本実施例に係るCPU1では回路規模を1/18に削減可能である。
【0078】
以上に説明したように、本実施例に係るCPUは、パイプラインの複数のレーンのそれぞれに対応する複数のロードストアユニットとマルチバンクレベル1データキャッシュとの間に閉塞網を有する。本実施例に係るCPUは、各命令によるアクセス情報を基にスイッチ衝突及びバンク衝突を検出し、衝突が発生しないように閉塞網におけるスイッチの切り替え及びレーンのストールを決定する。そして、本実施例に係るCPUは、ロードストアユニット及びマルチバンクレベル1データキャッシュを制御する。これにより、閉塞網を用いて回路規模を小さくすることができ、且つ、衝突の発生をストールにより回避できる。したがって、マルチバンクレベル1データキャッシュを有するCPUの処理性能の低下を抑えつつ回路規模を小さくすることが可能となる。
状態検出部184は、サイクル毎に、パイプラインの各レーンの詰まり具合を表す情報として、スカラロードストアユニット104及びレーン処理部150~153のそれぞれの入力側のFIFOキューに蓄積された命令数を取得する。以下では、スカラロードストアユニット104及びレーン処理部150~153のそれぞれの入力側のFIFOキューの保持命令数を、「レーン毎の保持命令数」と呼ぶ。次に、状態検出部184は、レーン毎の保持命令数にしたがってレーン毎の優先順位を決定する。例えば、保持命令数をそのまま用いて各レーンの優先順位を表してもよい。そして、状態検出部184は、保持命令数から求めた優先順位を衝突検出部181へ出力する。
衝突検出部181は、予め決められたパイプラインのレーン毎のアクセス許可の優先順位の初期値である初期優先順位を保持する。また、衝突検出部181は、レーン毎の保持命令数から求められた優先順位の入力を状態検出部184から受ける。次に、衝突検出部181は、レーン毎の保持命令数から求められた優先順位のうち、同じ優先順位のレーンが存在する場合、それらのレーンの優先順位は初期優先順にしたがって決定して、各レーンの優先順位を決定する。
衝突検出部181は、状態検出部184により取得した保持命令から求められた優先順位((L0,L1,L2,L3)=(2,1,3,1))から、レーンL2の保持命令数が最大であり、次にレーンL0の保持命令数が多いことを確認する。さらに、衝突検出部181は、レーンL1とレーンL3との保持命令数が最小で同じ値であると確認する。この場合、レーンL1とレーンL3との保持命令数が同じなので、衝突検出部181は、初期優先順位に応じてレーンL1の優先順位をレーンL3の優先順位よりも高くする。これにより、衝突検出部181は、レーンL2、レーンL0、レーンL1、レーンL3の順で順位が下がっていく優先順位252として算出する。そして、衝突検出部181は、アクセス情報及び優先順位252に応じてスイッチの切り替え状態及びストールレーンを決定する。
スイッチ制御部183は、衝突検出部181により決定されたスイッチの切り替え状態にしたがって、閉塞網スイッチ106の切り替えを行うスイッチ制御を実行する。また、パイプライン制御部182は、衝突検出部181により決定されたストールレーンにしたがって、スカラロードストアユニット104及びレーンL0~L3の中からストール対象を選択してストールさせるパイプライン制御を実行する。
スケジューラ13は、レーン処理部150~153のそれぞれに対応するレーンL0~L3に対する命令i3をレーン処理部150~153の入り口にあるFIFOキューに格納する。
状態検出部184は、命令i3が格納されたFIFOキュー300~303のそれぞれの保持命令数を取得する。そして、状態検出部184は、レーン毎の保持命令数から求められる優先順位を衝突検出部181へ通知する。
衝突検出部181は、状態検出部184から通知された保持命令数から求められた優先順位及び初期優先順位を用いて、その時点での各レーンの優先順位を決定する。次に、衝突検出部181は、FIFOキュー300の先頭の命令i1、FIFOキュー301の先頭の命令i2、FIFOキュー302の先頭の命令i0及びFIFOキュー303の先頭の命令i2によるアクセス情報を取得する。そして、衝突検出部181は、アクセス情報及び決定した各レーンの優先順位を用いて、スイッチの切り替え状態及びストールレーンを決定する。その後、衝突検出部181は、スイッチの切り替えを指示するスイッチ制御情報をスイッチ制御部183に通知する。また、衝突検出部181は、ストールレーンを指示するストールレーン情報をパイプライン制御部182に通知する。
スイッチ制御部183は、スイッチ制御情報に含まれるスイッチの切り替え指示にしたがって、閉塞網スイッチ106を切り替える。また、パイプライン制御部182は、ストールレーン情報で指示されたストールレーンに対応するレーン処理部150~153のいずれかをストールさせる。
衝突検出部181は、レーン毎の入力側のFIFOキューの先頭に格納された命令から取得したアクセス情報を用いて、アクセス情報に応じた接続状態である状態221を確認する。そして、衝突検出部181は、スイッチSW2における衝突個所231及び衝突個所232でスイッチ衝突が発生することを確認する。
状態検出部184は、レーン処理部150~153の保持命令数を取得する。ここでは、レーン処理部152の保持命令数が最大の場合で説明する。状態検出部184は、保持命令数から求められる優先順位数及び初期優先順位を用いてレーンL0~L3の優先順位を決定する。この場合、レーン処理部152の保持命令数が最大であることから、状態検出部184は、対応するレーンL2の優先順位を最も高くする。衝突検出部181は、保持命令から求められた優先順位と初期優先順位とを用いて、レーンL0~L3の優先順位を算出する。その後、衝突検出部181は、算出した優先順位と自己が有するテーブルとを用いてスイッチの切り替え状態及びストールレーンを決定する。
この場合、レーン処理部152の優先順位が最も高いので、衝突検出部181は、衝突個所231及び232での衝突をなくし且つレーンL2のアクセスを許可するために、レーンL0及びL1をストールレーンとする。そして、衝突検出部181は、スイッチSW1及びSW3を直通状態とし、且つ、スイッチSW2を交換状態として決定する。パイプライン制御部182及びスイッチ制御部183は、衝突検出部181の決定にしたがって、レーンL0及びL1に対応するレーン処理部150及び151をストールさせ、且つ、閉塞網スイッチ106の切り替えを行う。これにより、閉塞網スイッチ106は、状態223で示される切り替え状態となる。
この場合、レーンL0及びL1からのアクセスはなくなり、レーンL2がバンクB0に繋がり、レーンL3がバンクB3に繋がるため、命令実行部10は、閉塞網スイッチ106におけるスイッチ衝突を回避できる。このように、レーン毎の保持命令数に応じて優先度を変化させることで、本実施例に係る衝突検出部181は、実施例1のように単純な優先順位を用いたストールレーンの選択とは異なる選択を行う場合がある。
衝突検出部181は、スカラロードストアユニット104及びレーンL0~L3における入力側のFIFOキューの先頭の命令によるそれぞれのアクセス情報を取得する(ステップS201)。
状態検出部184は、スカラロードストアユニット104及びレーン処理部150~153のそれぞれの入力側のFIFOキューに蓄積された命令数を確認して、レーン毎の保持命令数を取得する(ステップS204)。
衝突検出部181は、保持命令数から求められた優先順位を状態検出部184から取得する。そして、衝突検出部181は、保持命令数から求められた優先順位と初期優先順位とを用いて各レーンの優先順位を算出する(ステップS205)。
スイッチ制御部183は、衝突検出部181により決定されたスイッチの切り替え状態にしたがって、閉塞網スイッチ106の切り替えを行うスイッチ制御を実行する。また、パイプライン制御部182は、衝突検出部181によりストールレーンとして決定されたレーンに対応するスカラロードストアユニット104及びレーン処理部150~153のいずれかをストールさせるパイプライン制御を実行する(ステップS207)。
その後、スカラロードストアユニット104及びレーンL0~L3は、パイプラインのストールレーン以外のレーンにおいて宛先バンクにアクセスしてデータのロード又はストアを実行する(ステップS208)。
ここで、以上の説明では、衝突検出部181は、パイプラインの詰まり具合を優先させてレーン毎のアクセス許可の優先順位を決定したが、アクセス情報やスイッチの構成情報も同時に用いて、使用できるレーン数を多くするように優先順位を決定してもよい。
以上に説明したように、本実施例に係るCPUは、FIFOキューに蓄積された命令の数が多い順に、各レーンのアクセス許可の優先順位を高くして、ストールレーン及びスイッチの切り替えを決定する。CPUは、パイプラインにおける特定のレーンが大きく遅れた場合、例えばFIFOキューが溢れてパイプライン全体がストールするなどして性能が低下してしまうおそれがある。本実施例に係るCPUは、パイプライン全体の詰まり具合も加味して、遅れているレーンを優先的に選択することで、パイプライン全体を見た最適化が可能になる。これにより、マルチバンクレベル1データキャッシュを有するCPUの処理性能の低下を抑えつつ回路規模を小さくすることが可能となる。
状態検出部184は、レーン処理部150~153のそれぞれの入力側のFIFOキューの保持命令数を取得する。また、状態検出部184は、レーン処理部150~153のそれぞれの出力側のFIFOキューの保持命令数を取得する。
衝突検出部181は、各レーンの優先順位の入力を状態検出部184から受ける。そして、衝突検出部181は、状態検出部184から取得した各レーンの優先順位と初期優先順位とを用いて、各レーンの優先順位を決定する。例えば、レーンL0~L2の優先順位としてそれぞれ0010、1001、0011、1001を取得した場合、衝突検出部181は、レーンL1、レーンL3、レーンL2、レーンL0の順に低くなるように各レーンの優先順位を決定する。そして、衝突検出部181は、アクセス情報及び各レーンの優先順位にしたがってスイッチの切り替え及びストールレーンを決定する。
ここで、本変形例では、状態検出部184は、出力側のFIFOキューの保持命令に基づく優先順位を高低2段としたが、これに限らず段数を増やしても良いし、入力側と同様に保持命令数で優先順位を表してもよい。逆に、状態検出部184は、出力側のFIFOキューの保持命令に基づく優先順位を所定の段数で表してもよい。
また、状態検出部184は、入力側のFIFOキューの保持命令に基づく優先順位は通知せずに、出力側のFIFOキューの保持命令に基づく優先順位を衝突検出部181に通知してもよい。その場合、衝突検出部181は、出力側のFIFOキューの保持命令に基づく優先順位にしたがってスイッチの切り替え及びストールレーンを決定する。
以上に説明したように、本実施例に係るCPUは、入力側及び出力側の双方のFIFOキューに蓄積された命令数を基に各レーンの優先順位を決定して、ストールレーン及びスイッチの切り替えを決定する。このように、入力側及び出力側の双方のFIFOキューに蓄積された命令数を考慮することでより、パイプライン全体を見て最適なストールレーンを選択することができる。したがって、本実施例に係るCPUは、マルチバンクレベル1データキャッシュを有するCPUの処理性能の低下を抑えつつ回路規模を小さくすることが可能となる。
例えば、衝突検出部181は、パイプラインの詰まり具合を優先させるか否かを判定する保持命令数の閾値を予め有する。そして、衝突検出部181は、状態検出部134から通知された保持命令数で表される各レーンの優先順位を参照して、閾値以上の保持命令数が存在するか否かを判定する。
全ての保持命令数が閾値未満の場合、衝突検出部181は、アクセス情報から使用可能なレーン数がなるべく多くなるように各レーンの優先順位を決定する。この場合、衝突検出部181は、使用可能なレーン数をなるべく多くするアルゴリズムを用いて優先順位を決定すればよく、使用可能なレーン数が最大とならなくてもよい。これに対して、閾値以上の保持命令数が存在する場合、衝突検出部181は、入力側のFIFOキューの保持命令数及び初期優先順位を用いて各レーンの優先順位を決定する。
例えば、閾値が3であり、レーン処理部150~153に命令が入力された場合で説明する。入力側のFIFOキューの保持命令数に基づく優先順位が、(L0,L1,L2,L3)=(2,1,3,1)の場合、保持命令数の最大値が3であり閾値以上の保持命令数が存在する。そこで、衝突検出部181は、入力側のFIFOキューの保持命令数に基づく優先順位に基づいて、レーンL2、レーンL0、レーンL1、レーンL3の順で低くなるように各レーンの優先順位を決定する。
これに対して、入力側のFIFOキューの保持命令数に基づく優先順位が、(L0,L1,L2,L3)=(2,1,2,1)の場合、保持命令数の最大値が2であり全ての保持命令数が閾値未満である。そこで、衝突検出部181は、入力側のFIFOキューの保持命令数に基づく優先順位は用いずに、アクセス情報に基づいて使用可能なレーン数がなるべく多くなるように各レーンの優先順位を決定する。
衝突検出部181は、スカラロードストアユニット104及びレーンL0~L3における入力側のFIFOキューの先頭の命令によるそれぞれのアクセス情報を取得する(ステップS301)。
状態検出部184は、スカラロードストアユニット104及びレーン処理部150~153のそれぞれの入力側のFIFOキューに蓄積された命令数を確認して、レーン毎の保持命令数を取得する(ステップS304)。
衝突検出部181は、保持命令数で表される優先順位を状態検出部184から取得する。そして、衝突検出部181は、最大の保持命令数が閾値未満か否かを判定する(ステップS305)。
最大の保持命令数が閾値未満の場合(ステップS305:肯定)、衝突検出部181は、検出した衝突個所の情報及びアクセス許可の初期優先順位に応じてスイッチの切り替え及びストールレーンを決定する(ステップS306)。その後、スイッチ制御及びストール制御の処理は、ステップS309へ進む。
これに対して、最大の保持命令数が閾値以上の場合(ステップS205:否定)、衝突検出部181は、保持命令数による優先順位と初期優先順位とを用いて各レーンの優先順位を算出する(ステップS307)。
次に、衝突検出部181は、検出した衝突個所の情報及び算出した優先順位に応じてスイッチの切り替え状態及びストールレーンを決定する(ステップS308)。その後、スイッチ制御及びストール制御の処理は、ステップS309へ進む。
その後、スイッチ制御部183は、衝突検出部181により決定されたスイッチの切り替え状態にしたがって、閉塞網スイッチ106の切り替えを行うスイッチ制御を実行する。また、パイプライン制御部182は、衝突検出部181によりストールレーンに対応するスカラロードストアユニット104及びレーン処理部150~153のいずれかをストールさせるパイプライン制御を実行する(ステップS309)。
その後、スカラロードストアユニット104及びレーンL0~L3は、パイプラインのストールレーン以外のレーンにおいて宛先バンクにアクセスしてデータのロード又はストアを実行する(ステップS310)。
以上に説明したように、本実施例に係るCPUは、FIFOキューに蓄積された命令の数による優先順位と使用可能なレーン数が多くなる優先順位とのバランスを取ってストールレーン及びスイッチの切り替えを決定する。これにより、マルチバンクレベル1データキャッシュを有するCPUの処理性能の低下を抑えつつ回路規模を小さくすることが可能となる。