IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧 ▶ 大学共同利用機関法人情報・システム研究機構の特許一覧

<>
  • 特開-演算処理装置および演算処理方法 図1
  • 特開-演算処理装置および演算処理方法 図2
  • 特開-演算処理装置および演算処理方法 図3
  • 特開-演算処理装置および演算処理方法 図4
  • 特開-演算処理装置および演算処理方法 図5
  • 特開-演算処理装置および演算処理方法 図6
  • 特開-演算処理装置および演算処理方法 図7
  • 特開-演算処理装置および演算処理方法 図8
  • 特開-演算処理装置および演算処理方法 図9
  • 特開-演算処理装置および演算処理方法 図10
  • 特開-演算処理装置および演算処理方法 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023072763
(43)【公開日】2023-05-25
(54)【発明の名称】演算処理装置および演算処理方法
(51)【国際特許分類】
   G06F 12/0846 20160101AFI20230518BHJP
   G06F 12/06 20060101ALI20230518BHJP
【FI】
G06F12/0846 100
G06F12/0846 110
G06F12/06 540F
【審査請求】未請求
【請求項の数】9
【出願形態】OL
(21)【出願番号】P 2021185401
(22)【出願日】2021-11-15
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(71)【出願人】
【識別番号】504202472
【氏名又は名称】大学共同利用機関法人情報・システム研究機構
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(72)【発明者】
【氏名】一場 利幸
(72)【発明者】
【氏名】五島 正裕
【テーマコード(参考)】
5B160
5B205
【Fターム(参考)】
5B160CA14
5B160CD11
5B160HA00
5B205MM03
5B205NN75
(57)【要約】
【課題】複数の読み出しアクセス要求の読み出し対象データが、バンクに保持される第1データに含まれる複数の第2データの各々である場合にも、複数の第2データの読み出しの遅延を抑制する。
【解決手段】演算処理装置は、複数の要求発行部と、記憶装置から読み出されるデータを分割した第1データを保持可能な複数のバンクを含むキャッシュと、スイッチ部と、データ分配部とを有し、スイッチ部は、複数の読み出しアクセス要求の読み出し対象データの各々が第1データに含まれる複数の第2データのいずれかである場合、読み出しアクセス要求の1つを読み出し対象のバンクに出力し、バンクから読み出される複数の第2データを含む第1データをデータ分配部に出力し、データ分配部は、スイッチ部から受ける第1データを分割した複数の第2データのそれぞれを、読み出しアクセス要求の発行元の要求発行部に並列に出力する。
【選択図】図2
【特許請求の範囲】
【請求項1】
記憶装置に読み出しアクセス要求を発行する複数の要求発行部と、
前記記憶装置から読み出されるデータを分割した第1データをそれぞれ保持可能な複数のバンクを含むキャッシュと、
前記複数の要求発行部と前記複数のバンクとを相互に接続するスイッチ部と、
前記複数の要求発行部と前記スイッチ部との間に配置されるデータ分配部とを有し、
前記スイッチ部は、
前記複数の要求発行部がそれぞれ発行する複数の読み出しアクセス要求の読み出し対象データの各々が第1データに含まれる複数の第2データのいずれかである場合、読み出しアクセス要求の1つを読み出し対象のバンクに出力し、
バンクから読み出される複数の第2データを含む第1データを前記データ分配部に出力し、
前記データ分配部は、前記スイッチ部から受ける第1データを分割した複数の第2データのそれぞれを、読み出しアクセス要求の発行元の前記要求発行部に並列に出力する
演算処理装置。
【請求項2】
前記データ分配部は、ビット拡張型の読み出しアクセス要求の読み出し対象データの各々が、第1データに含まれる複数の第2データのいずれかである場合、複数の第2データのそれぞれを下位側のデータ線を介して読み出しアクセス要求の発行元の前記要求発行部に出力する
請求項1に記載の演算処理装置。
【請求項3】
前記データ分配部は、複数の第2データが負値の場合、負値の第2データを出力する下位側のデータ線を除く上位側のデータ線に"1"を出力する
請求項2に記載の演算処理装置。
【請求項4】
前記データ分配部は、非ビット拡張型の読み出しアクセス要求に対応して前記複数のバンクのいずれかから読み出される第1データを分割することなく読み出しアクセス要求の発行元の前記要求発行部に出力する
請求項2または請求項3に記載の演算処理装置。
【請求項5】
前記データ分配部は、前記スイッチ部に接続される複数のデータ入力ポートと、前記複数の要求発行部にそれぞれに接続され、前記複数のデータ入力ポートにそれぞれ対応する複数のデータ出力ポートと、前記データ入力ポートで受ける第1データを分割した第2データの各々を、前記複数のデータ出力ポートのいずれに転送するかを選択する選択部と、を有し、
前記スイッチ部は、前記バンクから読み出される第1データを前記複数のデータ入力ポートのいずれかに出力する
請求項1ないし請求項4のいずれか1項に記載の演算処理装置。
【請求項6】
前記第2データは、第1データを2分した下位データおよび上位データであり、
前記選択部は、
前記データ入力ポートで受ける下位データまたは上位データを選択し、下位側のデータとして前記データ出力ポートから出力する下位セレクタと、
前記データ入力ポートで受ける上位データ、オール0データまたはオール1データを選択し、上位側のデータとして前記データ出力ポートから出力する上位セレクタを有する
請求項5に記載の演算処理装置。
【請求項7】
前記選択部は、ビット拡張型の読み出しアクセス要求の読み出し対象データが第1データに含まれる複数の第2データの各々である場合、前記データ入力ポートを介して前記スイッチ部から受ける第1データに含まれる下位データおよび上位データを、読み出しアクセス要求の発行元の要求発行部に対応するデータ出力ポートの下位側に出力させる
請求項6に記載の演算処理装置。
【請求項8】
前記複数の要求発行部から発行される前記読み出しアクセス要求を調停し、調停結果に応じて前記スイッチ部および前記データ分配部の動作を制御する調停部を有する
請求項1ないし請求項7のいずれか1項に記載の演算処理装置。
【請求項9】
記憶装置に読み出しアクセス要求を発行する複数の要求発行部と、前記記憶装置から読み出されるデータを分割した第1データをそれぞれ保持可能な複数のバンクを含むキャッシュと、前記複数の要求発行部と前記複数のバンクとを相互に接続するスイッチ部と、前記複数の要求発行部と前記スイッチ部との間に配置されるデータ分配部とを有する演算処理装置の演算処理方法であって、
前記スイッチ部が、前記複数の要求発行部がそれぞれ発行する複数の読み出しアクセス要求の読み出し対象データの各々が第1データに含まれる複数の第2データのいずれかである場合、読み出しアクセス要求の1つを読み出し対象のバンクに出力し、
前記スイッチ部が、バンクから読み出される複数の第2データを含む第1データを前記データ分配部に出力し、
前記データ分配部が、前記スイッチ部から受ける第1データを分割した複数の第2データのそれぞれを、読み出しアクセス要求の発行元の前記要求発行部に並列に出力する
演算処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、演算処理装置および演算処理方法に関する。
【背景技術】
【0002】
CPU(Central Processing Unit)等の演算処理装置に搭載されるキャッシュは、外部メモリに記憶されたデータの一部を保持する。そして、キャッシュは、CPUから発行される読み出しアクセス要求の対象データを保持している場合(キャッシュヒット)、外部メモリに読み出しアクセス要求を発行することなく、キャッシュに保持しているデータをCPUコア等に転送する。これにより、データのアクセス効率が向上され、CPUの処理性能が向上する。
【0003】
例えば、CPUとともに半導体装置に搭載され、外部メモリを制御するメモリ制御部は、外部メモリに搭載される複数のバンクの各々に対応するバンクキャッシュを有する(例えば、特許文献1参照)。プロセッサに搭載されるレベル2キャッシュは、独立にアクセス可能な複数のストレージブロックを有する(例えば、特許文献2参照)。複数のノーマルバンクと複数のキャッシュバンクとを有するメモリは、ノーマルバンクに対する連続的なアクセスがある場合、選択されたノーマルバンクから出力するデータをキャッシュバンクに移動させる(例えば、特許文献3参照)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2005-339348号公報
【特許文献2】特表2006-507602号公報
【特許文献3】特開2004-55112号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
近時、ベクトル演算等を並列に実行するためにSIMD(Single Instruction Multiple Data)演算命令を実行可能な演算処理装置が開発されている。この種の演算処理装置は、様々なデータサイズのSIMD演算命令を実行できる。例えば、キャッシュバンクのデータ幅の半分のサイズのデータであって、アドレスが連続する複数のデータをSIMD演算に使用する場合、1つのバンクに対して複数の読み出しアクセス要求が競合する場合がある。このとき、読み出しアクセス要求は、バンクに順次供給され、アクセス対象のデータは、バンクから順次に読み出される。SIMD演算は、演算対象のデータが全て揃ってから実行されるため、演算の実行タイミングが遅れ、演算効率は低下する。
【0006】
1つの側面では、本発明は、複数の読み出しアクセス要求の読み出し対象データが、バンクに保持される第1データに含まれる複数の第2データの各々である場合にも、複数の第2データの読み出しの遅延を抑制することを目的とする。
【課題を解決するための手段】
【0007】
一つの観点によれば、演算処理装置は、記憶装置に読み出しアクセス要求を発行する複数の要求発行部と、前記記憶装置から読み出されるデータを分割した第1データをそれぞれ保持可能な複数のバンクを含むキャッシュと、前記複数の要求発行部と前記複数のバンクとを相互に接続するスイッチ部と、前記複数の要求発行部と前記スイッチ部との間に配置されるデータ分配部とを有し、前記スイッチ部は、前記複数の要求発行部がそれぞれ発行する複数の読み出しアクセス要求の読み出し対象データの各々が第1データに含まれる複数の第2データのいずれかである場合、読み出しアクセス要求の1つを読み出し対象のバンクに出力し、バンクから読み出される複数の第2データを含む第1データを前記データ分配部に出力し、前記データ分配部は、前記スイッチ部から受ける第1データを分割した複数の第2データのそれぞれを、読み出しアクセス要求の発行元の前記要求発行部に並列に出力する。
【発明の効果】
【0008】
複数の読み出しアクセス要求の読み出し対象データが、バンクに保持される第1データに含まれる複数の第2データの各々である場合にも、複数の第2データの読み出しの遅延を抑制することができる。
【図面の簡単な説明】
【0009】
図1】一実施形態における演算処理装置の一例を示すブロック図である。
図2図1の演算処理装置のメモリアクセス動作の一例を示す説明図である。
図3】別の実施形態における演算処理装置の一例を示すブロック図である。
図4図1のデータ分配部の一例を示すブロック図である。
図5図3のキャッシュまたは図1のキャッシュに配置するデータの例を示す説明図である。
図6図3のデータ分配部または図1のデータ分配部の通常ロードでの動作の例を示す説明図である。
図7図3のデータ分配部または図1のデータ分配部のビット拡張ロードでの動作の例を示す説明図である。
図8図3のデータ分配部または図1のデータ分配部のビット拡張ロードでの動作の別の例を示す説明図である。
図9】疎行列ベクトル積の例を示す説明図である。
図10】疎行列ベクトル積の演算の実行時の動作の一例を示す説明図である。
図11】疎行列ベクトル積の演算の実行時の動作の別の例を示す説明図である。
【発明を実施するための形態】
【0010】
以下、図面を参照して、実施形態が説明される。
【0011】
図1は、一実施形態における演算処理装置の一例を示す。図1に示す演算処理装置100は、例えば、SIMD(Single Instruction Multiple Data)演算命令を使用して、複数の積和演算等を並列に実行する機能を有するCPU等のプロセッサである。例えば、演算処理装置100は、数値処理やグラフ処理などに使用される疎行列ベクトル積(SPMV:SParse Matrix-Vector multiplication)を実行可能である。
【0012】
演算処理装置100は、m+1個(mは1以上の整数)のロードストアユニットLDST(LDST#0-LDST#m)、データ分配部10、スイッチ部20およびキャッシュ30を有する。ロードストアユニットLDSTは、メインメモリ40にメモリアクセス要求を発行する要求発行部の一例である。メモリアクセス要求は、メインメモリ40にデータを書き込む書き込みアクセス要求およびメインメモリ40からデータを読み出す読み出しアクセス要求を含む。メインメモリ40は、記憶装置の一例である。
【0013】
キャッシュ30は、演算処理装置100に接続されるメインメモリ40に記憶されるデータの一部を保持可能なL1(Level 1)データキャッシュとして動作する。キャッシュ30は、n+1個(nは1以上の整数)のバンクBK(BK#0-BK#n)を有する。キャッシュ30を複数のバンクBKに分けることで、いわゆるギャザー/スキャッター性能を向上することができる。なお、演算処理装置100は、キャッシュ30の動作を制御するキャッシュ制御部を有してもよい。キャッシュ制御部は、例えば、キャッシュ30に含まれてもよい。
【0014】
演算処理装置100は、図示しない命令フェッチ部、命令デコード部、リザベーションステーション、各種演算器を含む演算ユニットおよびレジスタファイル等を有してもよい。図1では、主にメモリアクセスに関係するブロックが示される。例えば、命令フェッチ部、命令デコード部、リザベーションステーション、各種演算器を含む演算ユニット、レジスタファイルおよびロードストアユニットLDSTは、図示しないCPUコアに含まれる。
【0015】
ロードストアユニットLDSTは、ロード命令を受けた場合、スイッチ部20を介して読み出し対象のバンクBKに向けて読み出しアクセス要求を出力し、スイッチ部20およびデータ分配部10を介してバンクBKから読み出しデータを受ける。例えば、ロード命令に対応してロードストアユニットLDSTから発行される読み出しアクセス要求は、読み出し対象のアドレスADと読み出しアクセス要求を示す読み出し制御情報とを含む。
【0016】
ロードストアユニットLDSTは、ストア命令を受けた場合、スイッチ部20を介してアドレスADで示されるバンクBKに向けてメモリアクセス要求を出力する。例えば、ストア命令に対応してロードストアユニットLDSTから発行される書き込みアクセス要求は、書き込み対象のアドレスADと書き込みデータWDTと書き込み要求を示す書き込み制御情報とを含む。
【0017】
m+1個のロードストアユニットLDSTは、互いに独立にロード命令またはストア命令を受け、互いに独立にメモリアクセス要求を出力してもよい。以下、この実施形態および後述する実施形態では、ロード命令を受けたロードストアユニットLDSTが読み出しアクセス要求を発行する例が説明される。例えば、ロード命令によるデータのロード方法として通常ロードとビット拡張ロードとがある。通常ロードは、非ビット拡張型の読み出しアクセス要求により実現される。ビット拡張ロードは、ビット拡張型の読み出しアクセス要求により実現される。
【0018】
通常ロードでは、バンクBKのデータ幅分のデータであるサブデータSDTが読み出しアクセス要求の発行元のロードストアユニットLDSTに出力される。すなわち、非ビット拡張型の読み出しアクセス要求では、バンクBKから読み出されるデータは、ロードストアユニットLDSTにそのまま出力される。
【0019】
ビット拡張ロードでは、サブデータSDTを分割した分割データがサブデータSDTの下位ビット側のデータとして読み出しアクセス要求の発行元のロードストアユニットLDSTに出力される。ビット拡張ロードでは符号拡張を伴うことがある。その場合、上位ビット側のデータは、下位ビット側のデータが正値の場合、"0"が埋め込まれ、下位ビット側のデータが負値の場合、"1"が埋め込まれる。以下の説明では、ビット拡張ロードは、バンクBKのデータ幅の半分のデータが下位データとしてロードストアユニットLDSTに出力されるとする。サブデータSDTは、第1データの一例である。
【0020】
各バンクBKは、メモリアクセス要求がキャッシュミスしたときにメインメモリ40から読み出されるデータDTを分割したサブデータSDTを保持する。ここで、サブデータSDTは、メインメモリ40に対するデータDTの読み書きの単位であるキャッシュラインサイズをバンクBKの数で除したサイズを有し、バンクBKのデータ幅と一致する。各バンクBKは、メモリアクセス要求がキャッシュヒットしたときに、読み出し対象のサブデータSDTをスイッチ部20に出力する。
【0021】
スイッチ部20は、各ロードストアユニットLDSTにそれぞれ接続される複数のポートと、データ分配部10の複数のポートにそれぞれ接続される複数のポートと、各バンクBKに接続される複数のポートとを有する。例えば、スイッチ部20は、複数のロードストアユニットLDSTと複数のバンクBKとを相互に接続する。スイッチ部20は、読み出しアクセス要求に含まれるバンクアドレスが示すバンクBKに読み出しアクセス要求を出力する。読み出しアクセス要求に含まれるバンクアドレスが示すバンクBKは、読み出し対象バンクBKの一例である。スイッチ部20は、読み出しアクセス要求を出力したバンクBKから読み出しデータDTを受け、読み出しデータRDTとしてデータ分配部10に出力する。
【0022】
データ分配部10は、各ロードストアユニットLDSTにそれぞれ接続される複数のポートと、スイッチ部20の複数のポートにそれぞれ接続される複数のポートとを有する。データ分配部10は、スイッチ部20から受ける読み出しデータRDTをメモリアクセス要求の発行元のロードストアユニットLDSTに出力する。
【0023】
例えば、複数のロードストアユニットLDSTが出力する読み出しアクセス要求に含まれるバンクアドレスが1つのバンクBKを示す場合、読み出しアクセス要求は競合する。すなわち、読み出しアクセス要求の読み出し対象のバンクBKが衝突する。通常ロードにおいて読み出しアクセス要求が競合する場合、スイッチ部20は、読み出しアクセス要求を順次バンクBKに出力し、バンクBKからサブデータSDTを順次読み出す。スイッチ部20は、サブデータSDTを読み出しデータRDTとしてデータ分配部10に順次出力する。データ分配部10は、スイッチ部20から受けた読み出しデータRDTを読み出しアクセス要求の発行元のロードストアユニットLDSTに順次出力する。
【0024】
一方、ビット拡張ロードにおいて、2つの読み出しアクセス要求が1つのバンクBKを示す場合(競合の発生)、スイッチ部20は、読み出し対象のアドレスが共通のサブデータSDTを示すか否かに応じて、異なる動作を実行する。スイッチ部20は、読み出し対象のアドレスが示すサブデータSDTが異なる場合、通常ロードでの読み出しアクセス要求の競合時と同様に、読み出しアクセス要求を順次バンクBKに出力する。
【0025】
そして、スイッチ部20は、バンクBKから読み出し対象の分割データを含むサブデータSDTを順次読み出す。スイッチ部20は、サブデータSDTを読み出しデータRDTとしてデータ分配部10に順次出力する。データ分配部10は、スイッチ部20から受けた読み出しデータRDTのうち読み出し対象の分割データを読み出しアクセス要求の発行元のロードストアユニットLDSTに順次出力する。分割データは、第2データの一例である。
【0026】
一方、ビット拡張ロードにおいて、読み出し対象のアドレスが同じサブデータSDTを示す場合、2つの読み出しアクセス要求において、サブデータSDTを示すアドレスは互いに同じであり、分割データを示すオフセットアドレスのみが異なる。このため、スイッチ部20は、読み出しアクセス要求の1つをバンクBKに出力し、読み出し対象の2つの分割データを含むサブデータSDTをバンクBKから読み出す。スイッチ部20は、読み出したサブデータSDT(2つの分割データを含む)を読み出しデータRDTとしてデータ分配部10に出力する。
【0027】
データ分配部10は、スイッチ部20から受けた読み出しデータRDTに含まれる2つの分割データを下位ビット側にそれぞれセットする。そして、データ分配部10は、分割データが下位ビット側にセットされた読み出しデータRDTのそれぞれを、読み出しアクセス要求の発行元のロードストアユニットLDSTに同時に出力する。なお、同時は、厳密に同時でなくても、並列であればよい。
【0028】
なお、スイッチ部20およびデータ分配部10は、図示しない調停部等の制御部による制御に基づいて動作してもよい。この場合、制御部は、ロードストアユニットLDSTが発行するメモリアクセス要求に含まれるアドレスに応じて読み出し対象のバンクBKを識別し、メモリアクセス要求が競合するか否かを判定する。そして、制御部は、判定結果に応じてスイッチ部20およびデータ分配部10の動作を制御する。
【0029】
図2は、図1の演算処理装置のメモリアクセス動作の一例を示す。すなわち、図2は、演算処理装置100が実行する演算処理方法の一例を示す。図2では、説明の簡単化のため、演算処理装置100は、2つのロードストアユニットLDST#0、LDST#1および4つのバンクBK#0-BK#3を有するとする。また、図2では、読み出しアクセス要求に基づいてバンクBKからロードストアユニットLDSTに転送されるデータのみが示される。なお、以降の説明では、読み出しアクセス要求は、キャッシュヒットするものとする。
【0030】
図2(A)では、通常ロードにおいて、ロードストアユニットLDST#0、LDST#1は、バンクBK#2、BK#1に対する読み出しアクセス要求を同時に発行する。スイッチ部20は、読み出しアクセス要求が競合しないため、バンクBK#1、BK#2に読み出しアクセス要求を同時に発行する。バンクBK#1、BK#2は、読み出しアクセス要求の対象のデータD0、D1(サブデータSDT)をそれぞれスイッチ部20に出力する。
【0031】
スイッチ部20は、バンクBK#1、BK2から転送されるデータD0、D1をデータ分配部10に出力する。この際、スイッチ部20は、読み出しアクセス要求の発行元にデータD0、D1を出力可能なデータ分配部10のポートにデータD0、D1を出力する。データ分配部10は、スイッチ部20から受けるデータD0、D1を、読み出しアクセス要求の発行元のロードストアユニットLDST#1、LDST#0に接続されたポートに出力する。
【0032】
図2(B)では、ビット拡張ロードにおいて、ロードストアユニットLDST#0、LDST#1は、バンクBK#0に対する読み出しアクセス要求を同時に発行する。ここで、2つの読み出しアクセス要求の対象アドレスは、互いに同じサブデータSDTの格納先を示し、サブデータSDTに含まれる分割データD0、D1の格納先のアドレスのみが異なる。
【0033】
スイッチ部20は、読み出しアクセス要求に含まれるサブデータSDTのアドレスが競合する場合、読み出しアクセス要求のうちの1つをバンクBK#0に出力する。バンクBK#0は、読み出しアクセス要求の対象のサブデータSDT(分割データD0、D1)をスイッチ部20に出力する。スイッチ部20は、バンクBK#0から転送される分割データD0、D1をデータ分配部10に出力する。
【0034】
データ分配部10は、スイッチ部20から受ける分割データD0、D1のそれぞれを、読み出しアクセス要求の発行元のロードストアユニットLDST#0、LDST#1に接続されたポートに並列(例えば、同時)に出力する。この際、分割データD0、D1は、下位データとしてロードストアユニットLDST#0、LDST#1にそれぞれ出力される。
【0035】
このように、スイッチ部20は、2つの読み出しアクセス要求の読み出し対象の分割データD0、D1がサブデータSDTに含まれる場合、読み出しアクセス要求の1つのみを読み出し対象のバンクBK0に出力する。そして、スイッチ部20は、2つの分割データD0、D1をバンクBKから同時に読み出し、サブデータSDTとしてデータ分配部10に出力する。データ分配部10は、サブデータSDTを2つの分割データD0、D1に分割し、分割データD0、D1のそれぞれを、読み出しアクセス要求の発行元のロードストアユニットLDSTに並列に出力する。
【0036】
これにより、ビット拡張ロードにおいて、読み出し対象の分割データD0、D1が同じサブデータSDTに含まれる場合にも、分割データD0、D1を同時に読み出してロードストアユニットLDST#0、LDST#1に並列に出力することができる。換言すれば、複数の読み出しアクセス要求の読み出し対象データが、バンクBKに保持されるサブデータSDTに含まれる複数の分割データの各々である場合にも、複数の分割データの読み出しの遅延を抑制することができる。
【0037】
図2(C)では、ビット拡張ロードにおいて、ロードストアユニットLDST#0、LDST#1のそれぞれは、バンクBK#0、BK#1に対する読み出しアクセス要求を同時に発行する。すなわち、2つの読み出しアクセス要求は競合しない。スイッチ部20は、2つの読み出しアクセス要求をバンクBK#0、BK#1にそれぞれ出力する。
【0038】
バンクBK#0は、読み出しアクセス要求の対象の分割データD0を含むサブデータSDTをスイッチ部20に出力する。バンクBK#1は、読み出しアクセス要求の対象の分割データD1を含むサブデータSDTをスイッチ部20に出力する。スイッチ部20は、バンクBK#0、BK#1からそれぞれ転送される分割データD0(またはD1)を含むサブデータSDTをデータ分配部10に出力する。
【0039】
データ分配部10は、スイッチ部20から受ける分割データD0、D1のそれぞれを、読み出しアクセス要求の発行元のロードストアユニットLDST#0、LDST#1に接続されたポートに並列(例えば、同時)に出力する。この際、分割データD0、D1は、下位データとしてロードストアユニットLDST#0、LDST#1にそれぞれ出力される。
【0040】
以上、この実施形態では、ビット拡張ロードにおいて、読み出し対象の分割データD0、D1が同じサブデータSDTに含まれる場合にも、分割データD0、D1を同時に読み出してロードストアユニットLDST#0、LDST#1に並列に出力することができる。換言すれば、複数の読み出しアクセス要求の読み出し対象データが、バンクBKに保持されるサブデータSDTに含まれる複数の分割データの各々である場合にも、複数の分割データの読み出しの遅延を抑制することができる。
【0041】
図3は、別の実施形態における演算処理装置の一例を示す。上述した実施形態と同様の要素については、同じ符号を付し、詳細な説明は省略する。図3に示す演算処理装置100Aは、例えば、SIMD演算命令を使用して、複数の積和演算等を並列に実行する機能を有するCPU等のプロセッサであり、疎行列ベクトル積(SPMV)を実行可能である。
【0042】
演算処理装置100Aは、4個のロードストアユニットLDST(LDST#0-LDST#3)、データ分配部10A、スイッチ部20A、4個のバンクBK#0-BK#3を含むキャッシュ30Aおよび調停部50Aを有する。キャッシュ30Aは、L1(Level 1)データキャッシュとして動作する。なお、演算処理装置100Aは、キャッシュ30の動作を制御するキャッシュ制御部を有してもよい。また、演算処理装置100Aは、図示しない命令フェッチ部、命令デコード部、リザベーションステーション、各種演算器を含む演算ユニットおよびレジスタファイル等を有してもよい。
【0043】
データ分配部10Aは、図1のデータ分配部10と同様に動作し、スイッチ部20Aは、図1のスイッチ部20と同様に動作する。調停部50Aは、各ロードストアユニットLDSTから出力される読み出しアクセス要求に含まれるアドレスADに基づいて、読み出しアクセス要求の競合を判定し、判定結果に応じてスイッチ部20Aおよびデータ分配部10Aの動作を制御する。すなわち、調停部50Aは、複数のロードストアユニットLDSTから発行される読み出しアクセス要求を調停し、調停結果に応じてスイッチ部20Aおよびデータ分配部10Aの動作を制御する。
【0044】
調停部50Aによりデータ分配部10Aの動作を制御することで、ビット拡張ロードにおいて読み出しアクセス要求が競合する場合にも、バンクBKから読み出される複数の分割データを各ロードストアユニットLDSTに並列に出力することができる。
【0045】
また、調停部50Aは、各ロードストアユニットLDSTから出力される書き込みアクセス要求に含まれるアドレスADに基づいて、書き込みアクセス要求の競合を判定し、判定結果に応じてスイッチ部20Aの動作を制御する。
【0046】
図4は、図1のデータ分配部10の一例を示す。なお、図4は、図3のデータ分配部10Aの一例であってもよい。
【0047】
データ分配部10は、スイッチ部20から4個の読み出しデータRDTをそれぞれ受ける4個のデータ入力ポートIPを有する。データ分配部10は、ロードストアユニットLDST#0-LDST#3にそれぞれに接続される4個のデータ出力ポートOPを有する。
【0048】
4個のデータ出力ポートOPは、4個のデータ入力ポートIPにそれぞれ対応して設けられる。データ分配部10のデータ入力ポートIPおよびデータ出力ポートOPの数は、ロードストアユニットLDSTの数に等しい。このため、バンクBKから読み出されたサブデータSDTをスイッチ部20によりデータ入力ポートIPのいずれかに転送することで、サブデータSDTまたは分割データを読み出しアクセス要求の発行元のロードストアユニットLDSTに出力することができる。バンクBKから読み出されたサブデータSDTおよび分割データをデータ分配部10がロードストアユニットLDSTに転送する例は、図6から図8で説明される。
【0049】
また、データ分配部10は、データ入力ポートIPおよびデータ出力ポートOPのペア毎にマルチプレクサMUX1、MUX2を有する。マルチプレクサMUX1は、下位セレクタの一例である。マルチプレクサMUX2は、上位セレクタの一例である。マルチプレクサMUX1、MUX2は、選択部の一例である。
【0050】
スイッチ部20は、複数のロードストアユニットLDSTから発行される読み出しアクセス要求を調停し、調停結果に応じてスイッチ部20およびデータ分配部10の動作を制御する図示しない調停部(例えば、図3の調停部50A)により制御される。そして、スイッチ部20は、各バンクBKから読み出される読み出しデータRDTを読み出しアクセス要求の発行元のロードストアユニットLDSTに接続されたデータ出力ポートOPに対応するデータ入力ポートIPに出力する。
【0051】
以下の説明では、各バンクBKから読み出される読み出しデータRDTは、64ビットとする。読み出しデータRDTは、上位32ビットのデータUDT[63:32]と、下位32ビットのデータLDT[31:0]とを含む。読み出しデータRDTおよびバンクBKから出力されるサブデータSDTは、第1データの一例である。読み出しデータRDTを2分したデータUDT、LDTおよびサブデータSDTに含まれる分割データは、第2データの一例である。
【0052】
各マルチプレクサMUX1は、データ入力ポートIPで受けるデータLDTまたはデータUDTのいずれかを選択する。各マルチプレクサMUX1は、選択したデータを下位側のデータLDTとしてデータ出力ポートOPから下位側のデータ線を介してロードストアユニットLDSTに出力する。なお、各マルチプレクサMUX1は、読み出しアクセス要求が通常ロードを示す場合、データ入力ポートIPで受けるデータLDTを常に選択する。
【0053】
各マルチプレクサMUX2は、データ入力ポートIPで受けるデータUDT、オール0データまたはオール1データのいずれかを選択する。そして、各マルチプレクサMUX2は、選択したデータを上位側のデータUDTとしてデータ出力ポートOPから上位側のデータ線を介してロードストアユニットLDSTに出力する。
【0054】
マルチプレクサMUX2は、読み出しアクセス要求が通常ロードを示す場合、データ入力ポートIPで受けるデータUDTを上位側のデータ出力ポートOPに出力する。したがって、データ分配部10は、通常ロードでは、データ入力ポートIPで受ける下位側のデータと上位側のデータとをマルチプレクサMUX1、MUX2を介して、ロードストアユニットLDSTの下位データおよび上位データとして出力できる。換言すれば、データ分配部10は、通常ロードでは、バンクBKから読み出されるサブデータSDTをそのまま読み出しアクセス要求の発行元のロードストアユニットLDSTに出力できる。
【0055】
マルチプレクサMUX2は、読み出しアクセス要求がビット拡張ロードを示し、かつ、データ入力ポートIPで受ける分割データ(UDTまたはLDT)が正値の場合、オール0のデータUDTを上位側のデータ出力ポートOPに出力する。
【0056】
マルチプレクサMUX2は、読み出しアクセス要求がビット拡張ロードを示し、かつ、データ入力ポートIPで受ける分割データ(UDTまたはLDT)が負値の場合、オール1のデータUDTを上位側のデータ出力ポートOPに出力する。マルチプレクサMUX2は、マルチプレクサMUX1から出力される最上位ビット[31](符号ビット)が"0"の場合、正値を判定し、マルチプレクサMUX1から出力される最上位ビット[31]が"1"の場合、負値を判定する。
【0057】
このように、ビット拡張ロードは、上位側のビットに符号ビットを拡張したデータを読み出す符号拡張を伴うことがある。データ分配部10は、ビット拡張ロード時にバンクBKから読み出される32ビットデータが負値である場合にも、マルチプレクサMUX2により上位ビットに"1"を付加することで、64ビットの負値データを生成できる。そして、マルチプレクサMUX1、MUX2は、ビット拡張ロードでは、データ入力ポートIPで受ける読み出しデータRDTを分割したデータUDTまたはデータLDTのいずれかを選択し、データ出力ポートOPに転送できる。
【0058】
また、データ分配部10は、各ロードストアユニットLDSTに対応して設けられるマルチプレクサMUX1、MUX2を有する。これにより、データ分配部10は、通常ロードおよびビット拡張ロードのいずれにおいても、64ビットの正しいデータを読み出しアクセス要求の発行元のロードストアユニットLDSTに出力できる。
【0059】
図5は、図3のキャッシュ30Aまたは図1のキャッシュ30に配置するデータの例を示す。以下では、キャッシュ30Aに配置するデータの例が説明されるが、キャッシュ30に配置するデータの例も同様である。各ロードストアユニットLDSTは、各バンクBKに64ビット単位または32ビット単位でデータDTを書き込む。各ロードストアユニットLDSTは、通常ロードでは、64ビット単位(すなわち、サブデータSDT単位)で各バンクBKからデータDTを読み出す。各ロードストアユニットLDSTは、ビット拡張ロードでは、32ビット単位(すなわち、分割データ単位)で各バンクBKからデータDTを読み出す。
【0060】
通常ロードでは、バンクBK#1に太枠で例示するように、バンクBK#1から読み出される64ビットのデータD0が、スイッチ部20AにデータDTとして出力される。ビット拡張ロードでは、バンクBK#1に太枠で例示するように、バンクBK#1から読み出される32ビットのデータD1および32ビットのデータD2が、スイッチ部20AにデータDTとして出力される。
【0061】
図6は、図3のデータ分配部10Aまたは図1のデータ分配部10の通常ロードでの動作の例を示す。すなわち、図6は、演算処理装置100A、100が実行する演算処理方法の一例を示す。以下では、データ分配部10Aの動作の例が説明されるが、データ分配部10の動作の例も同様である。
【0062】
図6(A)では、ロードストアユニットLDST#0-LDST#3は、バンクBK#0-BK#3に対する読み出しアクセス要求をそれぞれ発行する。バンクBK#0-BK#3は、保持している64ビットのデータD0-D3をスイッチ部20Aに出力する。
【0063】
スイッチ部20Aは、各データD0-D3の上位ビットUおよび下位ビットLを、データ分配部10Aの対応するデータ入力ポートIPに出力する。上位ビットUおよび下位ビットLは、それぞれ32ビットである。データ分配部10Aは、データD0-D3の上位ビットUおよび下位ビットLを64ビットの読み出しデータD0-D3として、データ出力ポートOPを介して読み出しアクセス要求の発行元のロードストアユニットLDST#0-#3に出力する。
【0064】
図6(B)では、ロードストアユニットLDST#0-LDST#3は、バンクBK#1-BK#3、BK#0に対する読み出しアクセス要求をそれぞれ発行する。バンクBK#1-BK#3、BK#0は、保持している64ビットのデータD0-D3をスイッチ部20Aに出力する。
【0065】
スイッチ部20Aは、各データD0-D3の上位ビットUおよび下位ビットLを、データ分配部10Aの対応するデータ入力ポートIPに出力する。図6(B)に示すように、スイッチ部20Aは、バンクBK#1-BK#3、BK#0から受けるデータD0-D3を、読み出しアクセス要求の発行元のロードストアユニットLDST#0-#3に対応するデータ分配部10Aのデータ入力ポートIPに出力する。
【0066】
データ分配部10Aは、各データD0-D3の上位ビットUおよび下位ビットLを64ビットの読み出しデータD0-D3として、データ出力ポートOPを介して読み出しアクセス要求の発行元のロードストアユニットLDST#0-#3に出力する。
【0067】
図7は、図3のデータ分配部10Aまたは図1のデータ分配部10のビット拡張ロードでの動作の例を示す。すなわち、図7は、演算処理装置100A、100が実行する演算処理方法の別の例を示す。以下では、データ分配部10Aの動作の例が説明されるが、データ分配部10の動作の例も同様である。図6と同様の動作については、詳細な説明は省略する。図7(C)では、ロードストアユニットLDST#0-LDST#3は、4個の連続する分割データD0-D3をバンクBK#0、BK#1から読み出す読み出しアクセス要求をそれぞれ発行する。なお、図7において、スイッチ部20Aが出力するデータの上位ビットUおよび下位ビットLの位置関係は、各バンクBKが保持するデータの上位ビットUおよび下位ビットLの位置関係と逆である。
【0068】
ロードストアユニットLDST#0、LDST#1がバンクBK#0に対して発行する読み出しアクセス要求は競合する。ロードストアユニットLDST#2、LDST#3がバンクBK#1に対して発行する読み出しアクセス要求は競合する。なお、図7および図8で説明するビット拡張ロードでの読み出しアクセス要求の競合は、読み出し対象の2つのアドレスが同じサブデータSDTを示す場合の競合であり、読み出し対象の2つのアドレスが異なるサブデータSDTを示す場合の競合ではない。
【0069】
ビット拡張ロードでの読み出しアクセス要求が競合する場合、スイッチ部20Aは、読み出しアクセス要求の1つをバンクBKに出力し、読み出し対象の2つの分割データを含むサブデータSDTをバンクBKから読み出す。スイッチ部20Aは、読み出したサブデータSDT(2つの分割データを含む)をデータ分配部10Aに出力する。
【0070】
データ分配部10Aは、下位ビットLとして受けた分割データD0をロードストアユニットLDST#0に対応するマルチプレクサMUX1で選択し、下位側のデータ線を介してロードストアユニットLDST#0に出力する。また、データ分配部10Aは、上位ビットUとして受けた分割データD1をロードストアユニットLDST#1に対応するマルチプレクサMUX1で選択し、下位側のデータ線を介してロードストアユニットLDST#1に出力する。
【0071】
データ分配部10Aは、下位ビットLとして受けた分割データD2をロードストアユニットLDST#2に対応するマルチプレクサMUX1で選択し、下位側のデータ線を介してロードストアユニットLDST#2に出力する。また、データ分配部10Aは、上位ビットUとして受けた分割データD3をロードストアユニットLDST#3に対応するマルチプレクサMUX1で選択し、下位側のデータ線を介してロードストアユニットLDST#3に出力する。
【0072】
このように、データ分配部10Aは、ビット拡張ロードにおいて、上位ビットUまたは下位ビットLとして受けた分割データを、マルチプレクサMUX1で選択することにより、下位側のデータ線を介してロードストアユニットLDSTに出力できる。また、データ分配部10Aは、2つの分割データを含むサブデータSDTを受けた場合、各分割データを互いに異なるマルチプレクサMUX1で選択することにより、2つの分割データを2つのロードストアユニットLDSTにそれぞれ出力できる。換言すれば、演算処理装置100Aは、バンクBKから読み出されたサブデータSDTに含まれる上位側の分割データと下位側の分割データとを、2つのロードストアユニットLDSTのそれぞれに下位側のデータとして出力できる。
【0073】
なお、データ分配部10Aは、ビット拡張ロードにおいて、各マルチプレクサMUX1から出力するデータの正負に応じて、各マルチプレクサMUX2からオール0データまたはオール1データを出力する。
【0074】
図7(D)では、ロードストアユニットLDST#0-LDST#3は、4個の連続する分割データD0-D3をバンクBK#0-BK#2から読み出す読み出しアクセス要求をそれぞれ発行する。ロードストアユニットLDST#0がバンクBK#0に対して発行する読み出しアクセス要求は競合しない。ロードストアユニットLDST#1、LDST#2がバンクBK#1に対して発行する読み出しアクセス要求は競合する。ロードストアユニットLDST#3がバンクBK#2に対して発行する読み出しアクセス要求は競合しない。
【0075】
スイッチ部20Aは、バンクBK0、BK2に読み出しアクセス要求を出力し、バンクBK0から分割データD0を含むサブデータSDTを読み出し、バンクBK2から分割データD3を含むサブデータSDTを読み出す。また、スイッチ部20Aは、読み出しアクセス要求が競合するバンクBK1に、読み出しアクセス要求の1つを出力し、読み出し対象の2つの分割データD1、D2を含むサブデータSDTをバンクBK1から読み出す。
【0076】
スイッチ部20Aは、バンクBK0から読み出した分割データD0を含むサブデータSDTを、ロードストアユニットLDST#0に対応するデータ分配部10Aのデータ入力ポートIPに出力する。スイッチ部20Aは、バンクBK1から読み出した分割データD1、D2を含むサブデータSDTを、ロードストアユニットLDST#1に対応するデータ分配部10Aのデータ入力ポートIPに出力する。スイッチ部20Aは、バンクBK2から読み出した分割データD3を含むサブデータSDTを、ロードストアユニットLDST#3に対応するデータ分配部10Aのデータ入力ポートIPに出力する。
【0077】
データ分配部10Aは、上位ビットUとして受けた分割データD0をロードストアユニットLDST#0に対応するマルチプレクサMUX1で選択し、ロードストアユニットLDST#0に出力する。データ分配部10Aは、上位ビットUとして受けた分割データD2をロードストアユニットLDST#2に対応するマルチプレクサMUX1で選択し、ロードストアユニットLDST#2に出力する。
【0078】
データ分配部10Aは、下位ビットLとして受けた分割データD1をロードストアユニットLDST#1に対応するマルチプレクサMUX1で選択し、ロードストアユニットLDST#1に出力する。データ分配部10Aは、下位ビットLとして受けた分割データD3をロードストアユニットLDST#3に対応するマルチプレクサMUX1で選択し、ロードストアユニットLDST#3に出力する。
【0079】
図7および後述する図8に示すように、スイッチ部20Aは、各バンクBKから読み出されるサブデータSDTを、上位ビットUと下位ビットLとをまとめた状態でデータ分配部10Aのデータ入力ポートIPのいずれかに出力する。すなわち、ビット拡張ロードにおいて、スイッチ部20Aが読み出しデータをデータ分配部10Aに転送する動作は、図6に示す通常ロード時と同様である。これにより、ビット拡張ロード時の動作に固有の回路をスイッチ部20Aに追加しなくてよいため、スイッチ部20Aの回路規模の増加を抑制することができる。
【0080】
図8は、図3のデータ分配部10Aまたは図1のデータ分配部10のビット拡張ロードでの動作の別の例を示す。すなわち、図8は、演算処理装置100A、100が実行する演算処理方法の別の例を示す。以下では、データ分配部10Aの動作の例が説明されるが、データ分配部10の動作の例も同様である。図6および図7と同様の動作については、詳細な説明は省略する。なお、図8において、スイッチ部20Aが出力するデータの上位ビットUおよび下位ビットLの位置関係は、図7と同様に、各バンクBKが保持するデータの上位ビットUおよび下位ビットLの位置関係と逆である。
【0081】
図8(E)では、ロードストアユニットLDST#0-LDST#3は、4個の連続する分割データD0-D3をバンクBK#1、BK#2から読み出す読み出しアクセス要求をそれぞれ発行する。ロードストアユニットLDST#0、LDST#1がバンクBK#1に対して発行する読み出しアクセス要求は競合する。ロードストアユニットLDST#2、LDST#3がバンクBK#2に対して発行する読み出しアクセス要求は競合する。
【0082】
スイッチ部20Aは、読み出しアクセス要求の1つをバンクBK#1、BK#2にそれぞれ出力する。スイッチ部20Aは、バンクBK#1から読み出される2つの分割データD0、D1を含むサブデータSDTをデータ分配部10Aに出力し、バンクBK#2から読み出される2つの分割データD2、D3を含むサブデータSDTをデータ分配部10Aに出力する。図8(E)のデータ分配部10Aの動作は、図7(C)と同様である。
【0083】
図8(F)では、ロードストアユニットLDST#0-LDST#3は、4個の連続する分割データD0-D3をバンクBK#1-BK#3から読み出す読み出しアクセス要求をそれぞれ発行する。ロードストアユニットLDST#1、LDST#2がバンクBK#1に対して発行する読み出しアクセス要求は競合する。
【0084】
スイッチ部20Aは、読み出しアクセス要求が競合しないバンクBK1、BK3の各々に読み出しアクセス要求を出力し、読み出しアクセス要求が競合するバンクBK2に、読み出しアクセス要求の1つを出力する。スイッチ部20Aは、バンクBK1から分割データD0を含むサブデータSDTを読み出し、バンクBK2から分割データD1、D2を含むサブデータSDTを読み出し、バンクBK3から分割データD3を含むサブデータSDTを読み出す。そして、スイッチ部20Aは、読み出したサブデータSDTをデータ分配部10Aに出力する。図8(F)のデータ分配部10Aの動作は、図7(D)と同様である。
【0085】
図9は、疎行列ベクトル積の例を示す。図9に示す例では、説明の簡単化のため、4行4列の疎行列Aが示される。以下では、図3の演算処理装置100Aの動作の例が説明されるが、図1の演算処理装置100の動作の例も同様である。
【0086】
疎行列ベクトル積の計算は、シミュレーションなどで広く使用され、シミュレーションの実行時間に占める計算時間の割合が大きいことが知られている。また、疎行列Aは、多くの要素が0であるため、疎行列Aのメモリへの保存は、例えば、CSR形式に変換(圧縮)された後に行われる。
【0087】
CSR形式において、配列a[]には、疎行列Aの0以外の要素が格納される。配列ptr[]には、疎行列Aの各行で0以外の要素の先頭が配列a[]のどの位置にあるかが格納される。配列index[]は、配列a[]の各要素に対応しており、配列a[]の各要素の疎行列Aでの列番号が格納される。
【0088】
例えば、演算処理装置100Aにより疎行列ベクトル積の演算が実行される前、CSR形式に変換された疎行列Aがメインメモリ40等に格納される。演算処理装置100Aは、CSR形式に変換された疎行列Aとベクトルxとの疎行列ベクトル積の演算を実行するときには、例えば、図9に示すプログラムを使用する。これにより、キャッシュ30Aを介してメインメモリ40からCSR形式のデータを読み出しながら疎行列Aとベクトルxとの積を計算することができる。
【0089】
図9では、例えば、プログラム中のy[i]、a[i]、x[]は、64ビットの浮動小数点数で示され、index[]は、32ビットで示される。32ビットのindex[]は、アドレスが連続するメモリ領域に格納される。換言すれば、index[]は、図7および図8に示すように、複数のバンクBKにおいて同じアドレスが割り当てられる領域にサブデータSDTとして格納されている。SIMD命令を使用して疎行列ベクトル積の演算が実行される場合、演算処理装置100Aは、index[]をキャッシュ30Aから読み出すときにビット拡張ロードを実行し、32ビットデータを64ビットデータに拡張しながらCPUコアのレジスタにロードする。
【0090】
図10は、疎行列ベクトル積の演算の実行時の動作の一例を示す。図10は、図3の演算処理装置100Aによる動作の例が示されるが、図1の演算処理装置100による動作の例も同様である。図10に示す例では、SIMD命令の演算対象のデータは、4並列である。
【0091】
演算処理装置100Aは、最初の3つのload命令とfma命令(Fused Multiply-Add)命令とループ用の処理とを繰り返し実行する。index[]のメモリからのロードは、ビット拡張ロード命令が使用される。データ分配部10Aを有する演算処理装置100Aがビット拡張ロード命令を実行することで、load index[]命令の実行において、読み出しアクセス要求の競合を回避することができる。このため、演算処理装置100Aは、4つのload index[]命令を同時に実行することができ、4つの32ビットデータを同時に読み出すことができる。
【0092】
ループ回数Nを10回、1ループ当たりのサイクル数を9サイクル、動作周波数Fを2.0GHz、補正係数Rを0.95とする場合の疎行列ベクトル積の演算の実行時間は、約4.74秒である。ここで、補正係数Rは、データ分配部10Aの追加による遅延時間の増加を考慮したものである。補正係数Rの"0.95"は、遅延時間の増加により動作周波数が5%低下することを示す。なお、データ分配部10Aの適用により、ロード命令(ビット拡張ロード)の競合は発生しないため、競合により増加するサイクル数Lは0サイクルである。ここで、ロード命令の競合は、2つの読み出しアクセス要求の1つのバンクBKへの競合を示す。
【0093】
図11は、疎行列ベクトル積の演算の実行時の動作の別の例を示す。図11は、図3のデータ分配部10Aを持たない演算処理装置による動作の例が示されるが、図1のデータ分配部10を持たない演算処理装置による動作の例も同様である。図10と同様の動作については、詳細な説明は省略する。
【0094】
演算処理装置がデータ分配部10Aを持たない場合、ビット拡張ロードである32ビットのload index[]命令による競合が発生する。このため、競合するload index[]命令の実行が1サイクル遅れ、ループ毎に掛かるサイクル数が1サイクル増加する。また、演算処理装置は、データ分配部10Aを持たないため、動作周波数の補正係数Rは1.00である。この結果、疎行列ベクトル積の演算の実行時間は、約5秒になる。したがって、データ分配部10Aを持つ演算処理装置100Aは、データ分配部10Aを持たない演算処理装置に比べて、疎行列ベクトル積の演算の実行時間を約5%短縮できる。
【0095】
以上、この実施形態においても、上述した実施形態と同様の効果を得ることができる。例えば、演算処理装置100Aは、複数の読み出しアクセス要求の読み出し対象データが、バンクBKに保持されるサブデータSDTに含まれる複数の分割データの各々である場合にも、複数の分割データの読み出しの遅延を抑制できる。
【0096】
さらに、この実施形態では、データ分配部10Aは、ビット拡張ロードにおいて、バンクBKから読み出されたサブデータSDTに含まれる上位側と下位側との分割データを、2つのロードストアユニットLDSTのそれぞれに下位側のデータとして出力できる。換言すれば、データ分配部10Aは、2つの分割データを互いに異なるマルチプレクサMUX1で選択することにより、2つの分割データを2つのロードストアユニットLDSTにそれぞれ出力できる。この結果、演算処理装置100Aは、バンクBKから読み出されたサブデータSDTに含まれる上位側の分割データと下位側の分割データとを、2つのロードストアユニットLDSTのそれぞれに下位側のデータとして出力できる。
【0097】
ビット拡張ロードの32ビットデータが負値である場合にも、データ分配部10Aは、マルチプレクサMUX2により上位ビットに"1"を付加することで、64ビットの負値データを生成し、ロードストアユニットLDSTに出力できる。
【0098】
データ分配部10Aは、通常ロードでは、データ入力ポートIPで受ける下位側のデータと上位側のデータとをマルチプレクサMUX1、MUX2を介して、ロードストアユニットLDSTの下位側のデータおよび上位側のデータとして出力できる。換言すれば、データ分配部10Aは、通常ロードでは、バンクBKから読み出されるサブデータSDTをそのまま読み出しアクセス要求の発行元のロードストアユニットLDSTに出力できる。
【0099】
4個のデータ出力ポートOPは、4個のデータ入力ポートIPにそれぞれ対応して設けられる。データ分配部10Aのデータ入力ポートIPおよびデータ出力ポートOPの数は、ロードストアユニットLDSTの数に等しい。このため、バンクBKから読み出されたサブデータSDTをスイッチ部20Aによりデータ入力ポートIPのいずれかに転送することで、サブデータSDTまたは分割データを読み出しアクセス要求の発行元のロードストアユニットLDSTに出力することができる。
【0100】
データ分配部10Aは、各ロードストアユニットLDSTに対応して設けられるマルチプレクサMUX1、MUX2を有する。これにより、データ分配部10Aは、通常ロードおよびビット拡張ロードのいずれにおいても、64ビットの正しいデータを読み出しアクセス要求の発行元のロードストアユニットLDSTに出力できる。
【0101】
調停部50Aによりデータ分配部10Aの動作を制御することで、ビット拡張ロードにおいて読み出しアクセス要求が競合する場合にも、バンクBKから読み出される複数の分割データを各ロードストアユニットLDSTに並列に出力することができる。
【0102】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【0103】
10、10A データ分配部
20、20A スイッチ部
30、30A キャッシュ
40 メインメモリ
50A 調停部
100、100A 演算処理装置
AD アドレス
BK バンク
DT データ
IP データ入力ポート
LDST ロードストアユニット
LDT データ
MUX1、MUX2 マルチプレクサ
OP データ出力ポート
RDT 読み出しデータ
SDT サブデータ
UDT データ
WDT 書き込みデータ
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11