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

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

▶ 富士通株式会社の特許一覧

<>
  • 特開-演算処理装置および演算処理方法 図1
  • 特開-演算処理装置および演算処理方法 図2
  • 特開-演算処理装置および演算処理方法 図3
  • 特開-演算処理装置および演算処理方法 図4
  • 特開-演算処理装置および演算処理方法 図5
  • 特開-演算処理装置および演算処理方法 図6
  • 特開-演算処理装置および演算処理方法 図7
  • 特開-演算処理装置および演算処理方法 図8
  • 特開-演算処理装置および演算処理方法 図9
  • 特開-演算処理装置および演算処理方法 図10
  • 特開-演算処理装置および演算処理方法 図11
  • 特開-演算処理装置および演算処理方法 図12
  • 特開-演算処理装置および演算処理方法 図13
  • 特開-演算処理装置および演算処理方法 図14
  • 特開-演算処理装置および演算処理方法 図15
  • 特開-演算処理装置および演算処理方法 図16
  • 特開-演算処理装置および演算処理方法 図17
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022175420
(43)【公開日】2022-11-25
(54)【発明の名称】演算処理装置および演算処理方法
(51)【国際特許分類】
   G06F 12/0846 20160101AFI20221117BHJP
【FI】
G06F12/0846
G06F12/0846 110
【審査請求】未請求
【請求項の数】9
【出願形態】OL
(21)【出願番号】P 2021081786
(22)【出願日】2021-05-13
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(72)【発明者】
【氏名】依田 勝洋
【テーマコード(参考)】
5B205
【Fターム(参考)】
5B205KK14
5B205MM03
5B205MM05
5B205NN75
(57)【要約】
【課題】複数のアクセス要求部からのアクセス要求を同時に受信する場合にも、アクセスを競合させることなくデータを出力する。
【解決手段】複数のバンクは、第1エントリを含む第1キャッシュ領域と第2エントリを含む第2キャッシュ領域とキャッシュ制御部とヒットミス判定部とを有する。キャッシュ制御部は、複数の要求発行部から同時に受信した複数のアクセス要求がキャッシュミスした場合、第1エントリの1つと第2エントリの1つとに、複数のアクセス要求に対応して記憶装置から読み出されるデータをそれぞれ格納する。キャッシュ制御部は、複数の要求発行部から同時に受信した複数のアクセス要求が第1キャッシュ領域と第2キャッシュ領域とでキャッシュヒットした場合、キャッシュヒットした第1エントリに含まれるデータと第2エントリとに含まれるデータとを複数のアクセス要求の発行元にそれぞれ出力する。
【選択図】図5
【特許請求の範囲】
【請求項1】
記憶装置にアクセス要求を発行する複数の要求発行部と、
前記記憶装置から読み出されるデータを保持可能な複数の第1エントリを含む第1キャッシュ領域と、複数の第2エントリを含む第2キャッシュ領域と、キャッシュ制御部と、前記複数の要求発行部からそれぞれ発行されるアクセス要求に基づいて、前記複数のバンク毎にキャッシュヒットまたはキャッシュミスを判定するヒットミス判定部と、をそれぞれ含む複数のバンクと、を有し、
前記キャッシュ制御部は、
前記複数の要求発行部から同時に受信した複数のアクセス要求がキャッシュミスした場合、前記第1エントリの1つと前記第2エントリの1つとに、複数のアクセス要求に対応して前記記憶装置から読み出されるデータをそれぞれ格納し、
前記複数の要求発行部から同時に受信した複数のアクセス要求が前記第1キャッシュ領域と前記第2キャッシュ領域とでキャッシュヒットした場合、キャッシュヒットした第1エントリと第2エントリとに保持されたデータを前記複数のアクセス要求の発行元にそれぞれ出力する
演算処理装置。
【請求項2】
前記キャッシュ制御部は、同時に受信したアドレスが同じ複数のアクセス要求がキャッシュミスした場合、前記第1エントリの1つと前記第2エントリの1つとに、複数のアクセス要求に対応して前記記憶装置から読み出される共通のデータをそれぞれ格納する
請求項1に記載の演算処理装置。
【請求項3】
前記複数のバンクのうち、互いに隣接する2つのバンクの一方の前記第1キャッシュ領域から出力されるデータと、前記2つのバンクの他方の前記第2キャッシュ領域から出力されるデータとの一方を選択するセレクタと、
前記セレクタが選択したデータをアクセス要求の発行元に向けて出力するデータ線と、
を有する請求項1または請求項2に記載の演算処理装置。
【請求項4】
前記キャッシュ制御部は、同時に受信した、アドレスが異なる複数のアクセス要求がキャッシュミスした場合、キャッシュミスした複数のアクセス要求を前記記憶装置に順次発行した後、前記記憶装置から読み出されるデータを順次受信し、受信したデータを前記第1エントリの1つと前記第2エントリの1つとにそれぞれ格納する
請求項1ないし請求項3のいずれか1項に記載の演算処理装置。
【請求項5】
前記キャッシュ制御部は、
前記複数の要求発行部から同時に受信した複数のアクセス要求の優先順位を判定する優先判定部を有し、
前記優先判定部により判定された優先順位が最も高いアクセス要求に対応するデータを前記第1エントリに格納し、
前記優先判定部により判定された優先順位が2番目に高いアクセス要求に対応するデータを前記第2エントリに格納する
請求項1ないし請求項4のいずれか1項に記載の演算処理装置。
【請求項6】
複数のバンクの各々は、複数の前記第2キャッシュ領域を有し、
前記キャッシュ制御部は、前記優先判定部により判定された優先順位が2番目以降のアクセス要求に対応するデータを複数の前記第2エントリにそれぞれ格納する
請求項5に記載の演算処理装置。
【請求項7】
前記第2キャッシュ領域の前記第2エントリの数は、前記第1キャッシュ領域の前記第1エントリの数より少ない
請求項1ないし請求項6のいずれか1項に記載の演算処理装置。
【請求項8】
記憶装置に対するアクセス要求を発行する複数の要求発行部と、
前記記憶装置から読み出されるデータを保持可能な複数のエントリを含み、データを出力する複数のポートを有するキャッシュ領域と、キャッシュ制御部と、前記複数の要求発行部からそれぞれ発行されるアクセス要求に基づいて、前記複数のバンク毎にキャッシュヒットまたはキャッシュミスを判定するヒットミス判定部と、をそれぞれ含む複数のバンクと、を有し、
前記キャッシュ制御部は、
前記複数の要求発行部から同時に受信したアドレスが同じ複数のアクセス要求がキャッシュミスした場合、前記エントリの1つに、複数のアクセス要求に対応して前記記憶装置から読み出される共通のデータを格納し、
前記複数の要求発行部から同時に受信したアドレスが同じ複数のアクセス要求がキャッシュヒットした場合、キャッシュヒットした第1エントリに含まれるデータを前記複数のポートを介して前記複数のアクセス要求の発行元にそれぞれ出力する
演算処理装置。
【請求項9】
記憶装置に対するアクセス要求を発行する複数の要求発行部と、前記記憶装置から読み出されるデータを保持可能な複数の第1エントリを含む第1キャッシュ領域と、複数の第2エントリを含む第2キャッシュ領域と、キャッシュ制御部と、前記複数の要求発行部からそれぞれ発行されるアクセス要求に基づいて、前記複数のバンク毎にキャッシュヒットまたはキャッシュミスを判定するヒットミス判定部と、をそれぞれ含む複数のバンクと、を有する演算処理装置の演算処理方法であって、
前記複数のバンクの各々が有するキャッシュ制御部が、
前記複数の要求発行部から同時に受信した複数のアクセス要求がキャッシュミスした場合、前記第1エントリの1つと前記第2エントリの1つとに、複数のアクセス要求に対応して前記記憶装置から読み出されるデータをそれぞれ格納し、
前記複数の要求発行部から同時に受信した複数のアクセス要求が前記第1キャッシュ領域と前記第2キャッシュ領域とでキャッシュヒットした場合、キャッシュヒットした第1エントリに含まれるデータと第2エントリとに含まれるデータとを前記複数のアクセス要求の発行元にそれぞれ出力する
演算処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、演算処理装置および演算処理方法に関する。
【背景技術】
【0002】
CPU(Central Processing Unit)等の演算処理装置に搭載されるキャッシュ、または、CPUとメインメモリとの間に配置されるキャッシュは、メインメモリに記憶されたデータの一部を保持する。そして、キャッシュは、CPUから発行されるアクセス要求の対象データを保持している場合(キャッシュヒット)、メインメモリにアクセス要求を発行することなく、キャッシュに保持しているデータをCPUに転送する。これにより、データのアクセス効率が向上され、CPUの処理性能が向上する。
【0003】
例えば、複数のキャッシュバンクを含むキャッシュと複数のCPUとを有するシステムは、アクセス要求に含まれるバンクアドレスに応じて、使用するキャッシュバンクを決定することで、CPUによるキャッシュバンクの競合を回避する。また、キャッシュバンクに対するアクセス要求を複数のCPUから受けた場合、CPUに付けられた優先順位にしたがってデータの出力順が変更される(例えば、特許文献1参照)。
【0004】
複数のキャッシュバンクを含み、複数のタスクからアクセス要求を受けるキャッシュでは、タスクごとにキャッシュバンクが割り当てられることで、タスクによるキャッシュバンクの競合が回避される(例えば、特許文献2参照)。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2004-46643号公報
【特許文献2】特開平10-88349号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、CPUまたはタスク等のアクセス要求を発行する要求発行部毎にキャッシュバンクを割り当てる場合、キャッシュの回路規模は増大する。また、アクセス要求の発行頻度は、タスク等により異なるため、各キャッシュバンク内での記憶領域の使用率がばらつき、キャッシュ全体での記憶領域の使用効率が低下するおそれがある。一方で、キャッシュバンクを複数の要求発行部で共有する場合、キャッシュバンクに対するアクセス要求が競合すると、優先順位の低いアクセス要求に対するデータの読み出しレイテンシが長くなる。これにより、CPUまたはタスク等による処理効率は低下する。
【0007】
1つの側面では、本発明は、複数のアクセス要求部からのアクセス要求を同時に受信する場合にも、アクセスを競合させることなくデータを出力することを目的とする。
【課題を解決するための手段】
【0008】
一つの観点によれば、演算処理装置は、記憶装置にアクセス要求を発行する複数の要求発行部と、前記記憶装置から読み出されるデータを保持可能な複数の第1エントリを含む第1キャッシュ領域と、複数の第2エントリを含む第2キャッシュ領域と、キャッシュ制御部と、前記複数の要求発行部からそれぞれ発行されるアクセス要求に基づいて、前記複数のバンク毎にキャッシュヒットまたはキャッシュミスを判定するヒットミス判定部と、をそれぞれ含む複数のバンクと、を有し、前記キャッシュ制御部は、前記複数の要求発行部から同時に受信した複数のアクセス要求がキャッシュミスした場合、前記第1エントリの1つと前記第2エントリの1つとに、複数のアクセス要求に対応して前記記憶装置から読み出されるデータをそれぞれ格納し、前記複数の要求発行部から同時に受信した複数のアクセス要求が前記第1キャッシュ領域と前記第2キャッシュ領域とでキャッシュヒットした場合、キャッシュヒットした第1エントリと第2エントリとに保持されたデータを前記複数のアクセス要求の発行元にそれぞれ出力する。
【発明の効果】
【0009】
複数のアクセス要求部からのアクセス要求を同時に受信する場合にも、アクセスを競合させることなくデータを出力することができる。
【図面の簡単な説明】
【0010】
図1】一実施形態における演算処理装置の一例を示すブロック図である。
図2図1のL1データキャッシュのサブデータアレイおよびサブデータアレイキャッシュの構成の一例を示すブロック図である。
図3図1のバンクBK#0の構成の一例を示すブロック図である。
図4図3の優先順位判定ロジックの動作の一例を示すフロー図である。
図5図1の演算処理装置の動作の一例を示す説明図である。
図6】グラフ計算等で使用される疎行列計算の一例を示す説明図である。
図7】他の演算処理装置の動作の一例を示す説明図である。
図8】別の実施形態の演算処理装置におけるL1データキャッシュの一例を示すブロック図である。
図9図8のL1データキャッシュのバンクの配置の例を示す説明図である。
図10】L1データキャッシュからデータスイッチまでの配線の例を示す説明図である。
図11】別の実施形態における演算処理装置の動作の一例を示す説明図である。
図12図11の動作の続きを示す図である。
図13図11および図12に示す演算処理装置の動作の一例を示すフロー図である。
図14】他の演算処理装置の動作の一例を示す説明図である。
図15図14に示す他の演算処理装置の動作の一例を示すフロー図である。
図16図11および図12に示す演算処理装置と図14に示す他の演算処理装置とのアクセス効率の比較例を示す説明図である。
図17】別の実施形態の演算処理装置におけるL1データキャッシュの一例を示すブロック図である。
【発明を実施するための形態】
【0011】
以下、図面を参照して、実施形態が説明される。
【0012】
図1は、一実施形態における演算処理装置の一例を示す。図1に示す演算処理装置100は、例えば、SIMD(Single Instruction Multiple Data)演算命令を使用して、複数の積和演算等を並列に実行する機能を有するCPU等のプロセッサである。例えば、演算処理装置100を使用することで、グラフ計算などで使われる疎行列ベクトル積(SPMV:SParse Matrix and Vector multiplication)を実行可能である。
【0013】
演算処理装置100は、CPUコア110、データスイッチ31、アドレススイッチ32およびL1データキャッシュ40を有する。CPUコア110は、命令フェッチ部12、命令デコード部13、命令発行制御部14、演算ユニット15、レジスタファイル16およびロードストアユニット20を有する。
【0014】
ロードストアユニット20は、複数のアドレス生成部21(AGU:Address Generation Unit)を有する。L1データキャッシュ40は、16個のバンク50(BK#0~BK#15)を有する。以下では、各バンク50は、バンクBKとも称される。各バンクBKは、キャッシュ制御部51、タグアレイ52、サブデータアレイ53(SDA#0~SDA#15)およびサブデータアレイキャッシュ54(SDAC#0~SDAC#15)を有する。
【0015】
命令フェッチ部12は、プログラムカウンタが生成するアドレスまたは分岐アドレスに基づいて、下位キャッシュまたはメインメモリが保持する命令の一部を記憶する命令キャッシュ11から命令をフェッチし、フェッチした命令を命令デコード部13に出力する。命令デコード部13は、命令フェッチ部12から受信する命令を順次デコードし、デコードにより得られた命令データを、インオーダで命令発行制御部14に出力する。
【0016】
命令発行制御部14は、例えば、リザベーションステーションを含み、命令デコード部13によりデコードされた順に命令データを保持する複数のエントリ(図示せず)を有する。命令発行制御部14は、エントリに保持した命令データを、実行可能な順(アウトオブオーダ)で演算ユニット15に出力する。
【0017】
演算ユニット15は、図示しないメモリアドレス生成器、固定小数点演算器および浮動小数点演算器等を有する。メモリアドレス生成器は、ロード命令またはストア命令に基づいて、ロードストアユニット20にアクセス要求を発行する。アクセス要求は、アクセスの種類(ロードまたはストア)およびアクセス先を示すアドレスを含む。例えば、固定小数点演算器は、論理演算器およびシフト演算器等を含み、浮動小数点演算器は、SIMD演算命令を実行可能な積和演算器等を含む。SIMD演算命令により、複数の演算を並列(同時)に実行することができ、疎行列ベクトル積等の計算効率を向上することができる。
【0018】
レジスタファイル16は、演算に使用するデータ(オペランド)または演算結果を保持する複数のレジスタを有する。例えば、レジスタファイル16は、浮動小数点数データ用のレジスタファイルと、固定小数点数データ用のレジスタファイルとを有する。レジスタファイル16が保持するオペランドは、L1データキャッシュ40から転送され、レジスタファイル16が保持する演算結果は、L1データキャッシュ40に転送される。
【0019】
ロードストアユニット20において、各アドレス生成部21は、演算ユニット15から転送されるアクセス要求に含まれるアドレスADを、アドレススイッチ32を介してL1データキャッシュ40の各バンクBK#0-BK#15に出力する。アドレスADは、ロードアドレスまたはストアアドレスである。アクセス要求は、下位キャッシュまたはメインメモリに対するアクセス要求である。アドレス生成部21は、アクセス要求を発行する要求発行部の一例である。以下では、アドレス生成部21は、AGU21、AGU21またはAGU#0-AGU#7とも称される。
【0020】
例えば、アドレスADは、30ビットのタグアドレス(Tag、AD[45:16])と6ビットのインデックスアドレス(Index、AD[15:10])と、7ビットのオフセットアドレス(Offset、AD[9:3])とを含む。オフセットアドレスの上位4ビットは、16個のバンクBKを識別するために使用される。オフセットアドレスの下位3ビットは、演算命令の種類に応じて、バンクBKに保持された64ビットのデータのうち、選択する8ビット、16ビットまたは32ビットの位置を識別するために使用される。
【0021】
各アドレス生成部21は、アクセス要求が書き込みアクセス要求(ストア命令)の場合、書き込みデータ(ストアデータ)を、データスイッチ31を介してL1データキャッシュ40の各バンクBK#0-BK#15に出力する。各アドレス生成部21は、アクセス要求が読み出しアクセス要求(ロード命令)の場合、読み出しみデータ(ロードデータ)を、データスイッチ31を介してL1データキャッシュ40のバンクBK#0-BK#15のいずれかから受信する。
【0022】
データスイッチ31は、AGU21毎にロードストアユニット20から受信するストアデータを、オフセットアドレスにより識別されるバンクBKに出力する。また、データスイッチ31は、各バンクBKから出力されるロードデータを、アクセス要求の発行元のAGU21に対応させてロードストアユニット20に出力する。
【0023】
アドレススイッチ32は、各AGU21から出力されるアドレスADを各バンクBKに出力する。以下では、主に、ロード命令に基づいてデータをL1データキャッシュ40から読み出す処理について説明される。
【0024】
各バンクBKのキャッシュ制御部51は、複数のAGU21から受信するアクセス要求の優先順位を判定し、判定した優先順位にしたがって、アクセス要求に含まれるアドレスを自バンクBKのタグアレイ52に出力する。各バンクBKのキャッシュ制御部51は、自バンクBKのタグアレイ52によるキャッシュヒットまたはキャッシュミスの判定結果に基づいて、サブデータアレイSDAおよびサブデータアレイキャッシュSDACの動作を制御する。キャッシュ制御部51の例は、図3に示される。
【0025】
各バンクBKのタグアレイ52は、自バンクBKのキャッシュ制御部51から供給されるアドレスに基づいて、キャッシュヒットまたはキャッシュミスを判定し、判定結果を自バンクBKのキャッシュ制御部51に出力する。キャッシュヒットは、アドレスADに対応するデータがL1データキャッシュ40に保持されていることを示す。キャッシュミスは、アドレスADに対応するデータがL1データキャッシュ40に保持されていないことを示す。各バンクBKのタグアレイ52は、キャッシュヒットを判定した場合、インデックスアドレスをサブデータアレイSDAおよびサブデータアレイキャッシュSDACに出力する。
【0026】
各タグアレイ52は、インデックスアドレスで識別される64個のエントリを有する。各エントリは、タグアドレスを保持可能である。各タグアレイ52は、キャッシュ制御部51から供給されるインデックスアドレスにより識別されるエントリに、キャッシュ制御部51から供給されるタグアドレスを保持している場合、キャッシュヒットを示すヒット情報、インデックスアドレスおよびオフセットアドレスを出力する。
【0027】
また、各タグアレイ52は、キャッシュ制御部51から受信するインデックスアドレスにより識別されるエントリに、キャッシュ制御部51から受信するタグアドレスを保持していない場合、キャッシュミスを示すミス情報、インデックスアドレスおよびオフセットアドレスを出力する。タグアレイ52は、バンクBK毎にキャッシュヒットまたはキャッシュミスを判定するヒットミス判定部の一例である。
【0028】
なお、タグアレイ52のいずれかがキャッシュミスを判定した場合、L1データキャッシュ40は、全てのタグアレイ52にキャッシュミスを判定させてもよい。あるいは、キャッシュミスを判定したタグアレイ52を含むバンクBKが他のバンクBKにキャッシュミスの発生を通知してもよい。
【0029】
これにより、キャッシュミス時に、キャッシュミスを判定したバンクBKが下位キャッシュまたはメインメモリにアクセス要求を発行した場合に、L1データキャッシュ40のキャッシュコヒーレンシを維持することができる。換言すれば、アクセス要求(アドレス)を受信していないタグアレイ52を含む全てのバンクBKにおいて、下位キャッシュまたはメインメモリから転送される1キャッシュライン分のデータをサブデータアレイ53に格納することができる。
【0030】
L1データキャッシュ40は、下位キャッシュまたはメインメモリが保持するデータの一部をサブデータアレイ53(SDA#0~SDA#15)またはサブデータアレイキャッシュ54(SDAC#0~SDAC#15)に記憶する。
【0031】
下位キャッシュまたはメインメモリは、記憶装置の一例である。演算に使用するデータがL1データキャッシュ40に格納されている場合(キャッシュヒット)、L1データキャッシュ40から読み出されるデータは、データスイッチ31およびロードストアユニット20を介してレジスタファイル16に転送される。
【0032】
一方、演算に使用するデータがL1データキャッシュ40に格納されていない場合(キャッシュミス)、下位キャッシュまたはメインメモリからL1データキャッシュ40にデータが転送される。L1データキャッシュ40は、転送されたデータをデータスイッチ31およびロードストアユニット20を介してレジスタファイル16に転送するとともに、L1データキャッシュ40内に保持する。L1データキャッシュ40のサブデータアレイ53およびサブデータアレイキャッシュ54の構成例は、図2で説明される。以下では、L1データキャッシュ40が、下位キャッシュを介することなくメインメモリに直接接続されるものとして説明される。
【0033】
図2は、図1のL1データキャッシュ40のサブデータアレイ53およびサブデータアレイキャッシュ54の構成の一例を示す構成の一例を示す。L1データキャッシュ40は、バンクBK毎にサブデータアレイ53およびサブデータアレイキャッシュ54を有する。サブデータアレイ53は、第1キャッシュ領域の一例であり、サブデータアレイキャッシュSDACは、第2キャッシュ領域の一例である。以下では、サブデータアレイ53は、SDA53とも称され、サブデータアレイキャッシュ54は、SDAC54とも称される。
【0034】
各バンクBKのSDA53は、インデックスアドレスで識別される64個のエントリを有する。SDA53のエントリは、第1エントリの一例である。各エントリのデータ幅は、64ビットである。このため、16個のSDA53を含むSDA群において、16個のバンクBKの16個のSDA53に跨いで割り当てられるキャッシュラインCL(CL0-CL63のいずれか)に1024ビットのデータが保持可能である。
【0035】
例えば、L1データキャッシュ40は、バンクBKのいずれかがキャッシュミスした場合、メインメモリにアクセス要求を発行する。そして、L1データキャッシュ40は、メインメモリから転送される1キャッシュラインCL(1024ビット)のデータを、SDA群の共通のインデックスアドレスが割り当てられた16個のエントリに格納する。
【0036】
各バンクBKのSDAC54は、任意のインデックスアドレスに対応付けが可能な4個のエントリを有する。SDAC54のエントリは、第2エントリの一例である。各バンクBKのSDAC54の4個のエントリの各々には、キャッシュラインCLとは無関係に、バンクBK毎にSDA53のエントリに保持された64ビットのデータのコピーが保持される。
【0037】
なお、バンクBK毎のSDAC54のエントリの数は、SDA53のエントリの数より少なければ、4個に限定されない。バンクBK毎のSDAC54のエントリの数を、SDA53のエントリの数より少なくすることで、各バンクBKの回路規模を抑えつつ、図5で説明するように、アクセス効率を向上することができる。
【0038】
図3は、図1のバンクBK#0の構成の一例を示す。他のバンクBK#1-BK#15の構成も図3と同様である。バンクBK#0は、図1に示した構成に加えて、インデックス保持部55および比較器56を有する。インデックス保持部55および比較器56は、SDAC#0のエントリEB(Eb0-Eb3)にそれぞれ対応して設けられる。
【0039】
キャッシュ制御部51は、セレクタ部521および優先順位判定ロジック522を有する。優先順位判定ロジック522は、複数のAGU21(AGU#0-AGU#7)から自バンクBK#0へのアクセス要求(アドレス等)を同時に受信した場合、優先順位が最も高いアクセス要求と優先順位が2番目に高いアクセス要求をセレクタ部521に選択させる。
【0040】
ここで、アクセス要求の同時受信とは、キャッシュ制御部51がオフセットアドレスの上位4ビットが自バンクBK#0を示す複数のアクセス要求を同時に受信することである。なお、例えば、優先順位は、LRU(Least Recently Used)等の手法を用いて決められてもよい。キャッシュ制御部51は、オフセットアドレスの上位4ビットが自バンクBK#0を示す1つのアクセス要求を受信した場合、受信した1つのアクセス要求を優先順位が最も高いアクセス要求として処理する。
【0041】
セレクタ部521は、優先順位が最も高いアクセス要求をSDA#0に出力する。そして、優先順位が最も高いアクセス要求に含まれるインデックスアドレスを使用してSDA#0のエントリEa(Ea0-Ea63)のいずれかが選択される。セレクタ部521は、優先順位が2番目に高いアクセス要求をSDAC#0に出力する。そして、優先順位が2番目に高いアクセス要求に含まれるインデックスアドレスが比較器56に出力される。優先順位判定ロジック522は、複数のAGU21から同時に受信した複数のアクセス要求の優先順位を判定する優先判定部の一例である。
【0042】
インデックス保持部55は、インデックスアドレスが同じ複数のアクセス要求を、キャッシュミスを示すミス情報とともに受信した場合、SDAC#0のエントリEbのいずれかに対応するインデックス保持部55にインデックスアドレスを格納する。そして、キャッシュ制御部51は、キャッシュミス時にメインメモリから転送されるデータをSDA#0のエントリEaとSDAC#0のエントリEbとの両方に格納する。
【0043】
例えば、キャッシュ制御部51は、キャッシュミスしたインデックスアドレスが"3"の場合、SDA#0のエントリEa3にデータを格納し、インデックス保持部55のいずれかにインデックスアドレス"3"を格納する。そして、キャッシュ制御部51は、SDA#0のエントリEa3に格納したデータのコピーを、インデックスアドレス"3"を保持するインデックス保持部55に対応するSDAC#0のエントリEbに格納する。
【0044】
なお、バンクBKのいずれかのタグアレイ52でキャッシュミスが判定された場合、全てのバンクBK#0-BK#15のキャッシュ制御部51は、メインメモリから転送されるデータを受信する制御を実行する。この場合、メインメモリから1キャッシュラインCL分のデータが出力され、全てのバンクBK#0-BK#15のSDA#0-SDA#15において、共通のインデックスアドレスに対応するエントリEaにデータが格納される。
【0045】
そして、同じアドレスの複数のアクセス要求(キャッシュミス)に含まれるオフセットアドレスで識別されるバンクBKのインデックス保持部55のいずれかのみにインデックスアドレスが格納される。ここで、同じアドレスとは、複数のアクセス要求に含まれるタグアドレス、インデックスアドレスおよびオフセットアドレスが同じであることを示す。
【0046】
各比較器56は、バンクBK#0でキャッシュヒットした場合、各インデックス保持部55に保持されたインデックスアドレスとセレクタ部521から転送されるインデックスアドレスとを比較する。各比較器56は、インデックスアドレスが一致する場合、SDAC54のキャッシュヒットを判定する。そして、各比較器56は、SDAC#0において対応するEbにデータを出力させる。SDAC#0のエントリEbから出力されたデータは、データDTとしてキャッシュ制御部51に出力される。また、バンクBK#0でキャッシュヒットした場合、SDA#0のエントリEaから出力されたデータは、データDTとしてキャッシュ制御部51に出力される。
【0047】
図3に示すキャッシュ制御部51では、優先順位判定ロジック522により優先順位が最も高いアクセス要求と、優先順位が2番目に高いアクセス要求とを選択することができる。そして、優先順位にしたがってSDA#0とSDAC#0とに同じデータを保持させることができる。この結果、同じアドレスの複数のアクセス要求が同時に発行され、キャッシュヒットした場合、アクセス要求に対応してSDA#0とSDAC#0とからデータを並列に出力することができ、アクセス効率を向上することができる。
【0048】
また、アドレスが異なる複数のアクセス要求が同時に発行された場合、優先順位が最も高いアクセス要求を選択することができ、優先順位が最も高いアクセス要求に対応するデータをSDA#0に保持させることができる。さらに、単一のアクセス要求が発行された場合、単一のアクセス要求の優先順位が最も高いため、単一のアクセス要求に対応するデータをSDA#0に保持させることができる。
【0049】
なお、この実施形態では、各バンクBKが1つのSDAC54を有する例が示されるが、各バンクBKは、複数のSDAC54を有してもよい。この場合、優先順位判定ロジック522は、優先順位が最も高いアクセス要求と優先順位が2番目以降の複数のアクセス要求とをセレクタ部521に順次選択させる。セレクタ部521は、優先順位が2番目以降に高いアクセス要求を複数のSDACのそれぞれに出力する。
【0050】
図4は、図3の優先順位判定ロジック522の動作の一例を示す。図4に示す動作は、キャッシュヒット時およびキャッシュミス時に共通である。
【0051】
まず、ステップS10において、優先順位判定ロジック522は、優先順位が最も高いアクセス要求を選択する。なお、1つのアクセス要求が発行された場合、優先順位判定ロジック522は、1つのアクセス要求を優先順位が最も高いアクセス要求として選択し、図4に示す動作を終了する。
【0052】
次に、ステップS12において、優先順位判定ロジック522は、選択したアクセス要求以外のアクセス要求の1つを選択する。次に、ステップS14において、優先順位判定ロジック522は、ステップS12で選択したアクセス要求のアドレスが、優先順位が最も高いアクセス要求のアドレスと同一であるか否かを判定する。優先順位判定ロジック522は、同一アドレスの場合、ステップS16を実行し、同一アドレスでない場合、ステップS18を実行する。
【0053】
ステップS16において、優先順位判定ロジック522は、ステップS12で選択したアクセス要求を2番目の優先順位として選択し、図4に示す動作を終了する。ステップS18において、優先順位判定ロジック522は、未選択のアクセス要求があるか否かを判定する。優先順位判定ロジック522は、未選択のアクセス要求がある場合、動作をステップS12に戻す。優先順位判定ロジック522は、同時に発行された全てのアクセス要求を選択した場合、優先順位が最も高いアクセス要求と同一アドレスのアクセス要求が存在しておらず、アクセス要求の競合がないと判断し、図4に示す動作を終了する。
【0054】
以上の動作により、優先順位判定ロジック522は、同一アドレスの複数のアクセス要求がある場合、優先順位が最も高いアクセス要求と、優先順位が2番目に高いアクセス要求とを選択することができる。
【0055】
図5は、図1の演算処理装置100の動作の一例を示す。すなわち、図5は、演算処理装置100の演算処理方法の一例を示す。図5では、疎行列ベクトル積などの反復計算に使用するデータが、メインメモリに保持されている。また、同じアドレスのアクセス要求AREQ0、AREQ1は、AGU#0、AGU#1から発行される。アクセス要求AREQ0の優先順位は、アクセス要求AREQ1の優先順位よりも高いとする。キャッシュミス/キャッシュヒットの判定は、図1に示したタグアレイ52を使用してバンクBK毎に判定される。
【0056】
まず、1回目の反復計算時、図5(A)において、バンクBK#0のタグアレイ52は、同じアドレスのアクセス要求AREQ0、AREQ1のキャッシュミス(Miss)を判定し、キャッシュ制御部51に通知する。キャッシュ制御部51は、キャッシュミスの判定に基づいて、優先順位が最の高いアクセス要求AREQ0をメインメモリに発行する。但し、アクセス要求AREQ0、AREQ1のアドレスは、互いに同じため、キャッシュ制御部51は、アクセス要求AREQ0、AREQ1を同時にメインメモリ発行していることになる。
【0057】
図5(B)において、メインメモリは、アクセス要求AREQ0の応答として、斜線枠と破線枠とで示される1キャッシュラインCL分のデータをL1データキャッシュ40(図1)に転送する。斜線枠のデータは、バンクBK#0のインデックスアドレスで示されるデータである。破線枠のデータは、他のバンクBK#1-BK#15のインデックスアドレスバンクで示されるデータである。
【0058】
BK#0のキャッシュ制御部51は、メインメモリから受信したデータDT(例えば、64ビット)をアクセス要求AREQ0、AREQ1の発行元にそれぞれ出力する。また、バンクBK#0のキャッシュ制御部51は、メインメモリから受信したデータDTを、SDA#0においてアクセス要求AREQ0、AREQ1に含まれるインデックスアドレスに対応するエントリEaに格納する。さらに、バンクBK#0のキャッシュ制御部51は、エントリEaに格納したデータと同じデータをSDAC#0のエントリEbのいずれかに格納する。
【0059】
一方、図示しないアクセス要求を受信していない他のバンクBK#1-BK#15のキャッシュ制御部51は、メインメモリから受信するデータDTを、SDAにおいてアクセス要求に含まれるインデックスアドレスに対応するエントリEaにそれぞれ格納する。他のバンクBK#1-BK#15のキャッシュ制御部51は、SDACのエントリEbにデータを格納しない。
【0060】
次に、2回目の反復計算時、図5(C)において、バンクBK#0のタグアレイ52は、同じアドレスのアクセス要求AREQ0、AREQ1のキャッシュヒット(Hit)を判定し、キャッシュ制御部51に通知する。キャッシュ制御部51は、キャッシュヒットの判定に基づいて、SDA#0においてアクセス要求AREQ0に含まれるインデックスアドレスに対応するエントリEaからデータDTを取り出す。また、キャッシュ制御部51は、SDAC#0において図3の比較器56によりキャッシュヒットが判定されたエントリEbからデータDTを取り出す。そして、キャッシュ制御部51は、エントリEa、Ebから同時に取り出したデータDTをアクセス要求AREQ0、AREQ1の発行元に同時に出力する。
【0061】
これにより、2回目以降の反復計算において、同じアドレスの2つのアクセス要求AREQ0、AREQ1がキャッシュヒットである場合のアクセス効率を改善することができる。例えば、アクセス要求AREQ0、AREQ1の発行元にデータDTを転送するアクセスレイテンシを、単一のアクセス要求AREQ0の発行元にデータDTを転送するアクセスレイテンシと同じにすることができる。
【0062】
図6は、グラフ計算等で使用される疎行列計算の一例を示す。図6の上側は、疎行列計算に使用する命令記述を示し、図6の下側は、図6の上側の3行目の命令の実行時のギャザーロードの概要を示す。
【0063】
図7は、他の演算処理装置の動作の一例を示す説明図である。図5と同様の動作については詳細な説明は省略する。図7に示す動作を実行する演算処理装置の構成は、各バンクBK(150)がSDA(153)を有し、SDACを持たないことを除き、図1の演算処理装置100と同様の構成である。図7では、図5と同様に、反復計算に使用するデータが、メインメモリに保持され、同じアドレスのアクセス要求AREQ0、AREQ1がAGU#0、AGU#1から発行される。
【0064】
まず、1回目の反復計算時、図7(A)において、バンクBK#0は、同じアドレスのアクセス要求AREQ0、AREQ1のキャッシュミスを判定する。バンクBK#0は、優先順位が最の高いアクセス要求AREQ0をメインメモリに発行する。図5と同様に、アクセス要求AREQ0、AREQ1のアドレスは、互いに同じため、バンクBK#0は、アクセス要求AREQ0、AREQ1を同時にメインメモリ発行していることになる。
【0065】
図7(B)において、バンクBK#0は、メインメモリから受信したデータDTを、優先順位が最も高いアクセス要求AREQ0の発行元に出力し、SCA#0のエントリEaに格納する。この後、図7(C)において、バンクBK#0は、メインメモリから受信してSCA#0に保持されたデータDTを、アクセス要求AREQ1の発行元に出力する。
【0066】
次に、2回目の反復計算時、図7(D)において、バンクBK#0は、同じアドレスのアクセス要求AREQ0、AREQ1のキャッシュヒットを判定する。バンクBK#0は、優先順位が最も高いアクセス要求AREQ0に含まれるインデックスアドレスに対応するエントリEaからデータDTを取り出し、アクセス要求AREQ0の発行元に並列に出力する。次に、図7(E)において、バンクBKは、アクセス要求AREQ1に含まれるインデックスアドレスに対応するエントリEaからデータDTを取り出し、アクセス要求AREQ1の発行元に同時に出力する。
【0067】
図7に示す動作を実行する演算処理装置の各バンクBKは、SDACを持たないため、同じアドレスのアクセス要求AREQ0、AREQ1に対する処理を重複して実行することができない。アクセス要求AREQ0、AREQ1毎にバンクBKを動作させて、データDTを出力するため、図5に比べてアクセス効率は低下する。
【0068】
以上、この実施形態では、複数のアドレス生成部21(AGU)からのアクセス要求に対応するデータを保持可能な複数のバンクBKを有するデータキャッシュにおいて、バンクBKの競合を避けることができ、アクセス効率を向上することができる。例えば、同じアドレスのアクセス要求が複数のアドレス生成部21から繰り返し発行される可能性が高い疎行列ベクトル積などの反復計算の実行時にバンクBKの競合を避けることができ、アクセス効率を向上することができる。
【0069】
優先順位判定ロジック522により優先順位が最も高いアクセス要求と、優先順位が2番目に高いアクセス要求とを選択することができ、優先順位にしたがってSDAとSDACとに同じデータを保持させることができる。この結果、同じアドレスの複数のアクセス要求が同時に発行され、キャッシュヒットした場合、アクセス要求に対応するデータをSDAとSDACとから同時に出力することができ、アクセス効率を向上することができる。
【0070】
また、アドレスが異なる複数のアクセス要求が同時に発行された場合、優先順位が最も高いアクセス要求を選択することができ、優先順位が最も高いアクセス要求に対応するデータをSDA#0に保持させることができる。さらに、単一のアクセス要求が発行された場合にも、アクセス要求に対応するデータをSDA#0に保持させることができる。
【0071】
バンクBK毎のSDAC54の数を、SDA53より少なくすることで、各バンクBKの回路規模を抑えつつ、バンクBKの競合を避けて、アクセス効率を向上することができる。
【0072】
図8は、別の実施形態の演算処理装置におけるL1データキャッシュの一例を示す。上述した実施形態と同様の要素については、同じ符号を付し、詳細な説明は省略する。図8に示す演算処理装置100Aは、例えば、SIMD演算命令を使用して、複数の積和演算等を並列に実行する機能を有するCPU等のプロセッサである。図8において、L1データキャッシュ40Aを除く構成は、図1に示した演算処理装置100の構成と同様である。
【0073】
L1データキャッシュ40Aは、セレクタ61を有することを除き、図1のL1データキャッシュ40と同様の構成を有する。各セレクタ61は、互いに隣接して配置される2つのバンクBKの一方のSDAから出力されるデータと、2つのバンクBKの他方のSDACから出力されるデータとの一方を選択し、選択したデータをデータスイッチ31に出力する機能を有する。例えば、セレクタ61は、SDAから出力されるデータとSDACから出力されるデータとが競合する場合、SDAから出力されるデータを選択する。
【0074】
図1と同様に、演算処理装置100Aは、8個のAGU21と16個のバンクBKとを有する。このため、全てのAGU21からアクセス要求が同時に発行された場合でも、アクセス要求を受けるバンクBKは、全バンク数の半分の8個である。したがって、全てのバンクBKとデータスイッチ31との間にデータ線を配置しても、同時に使用されるデータ線の数は、全てのデータ線の半分である。このため、セレクタ61でデータが競合しない確率をある程度確保することができる。
【0075】
図9は、図8のL1データキャッシュ40AのバンクBKの配置の例を示す。各配置例A、B、C、D、Eに示す太い矢印は、図8のセレクタ61を介して接続されるバンクBKの並び順を示す。図9に示すように、一筆書きの要領でバンクBKを配置することで、各バンクBKとセレクタ61とを接続するデータ線の長さを最短かつ均等にすることができ、データの伝送遅延のばらつきを最小限にすることができる。
【0076】
図10は、L1データキャッシュ40、40Aからデータスイッチ31までの配線の例を示す。図8に示すL1データキャッシュ40Aでは、バンクBKとデータスイッチ31との間に接続されるデータ線の数を、図1のL1データキャッシュ40のほぼ半分にすることができる。この結果、データ線の配線領域の面積を削減することができる。L1データキャッシュ40Aとデータスイッチ31との距離がある程度ある場合、データ線の削減による面積削減量を、セレクタ61の追加による面積増加量よりも大きくすることができる。これにより、図8の演算処理装置100Aのチップサイズを図1の演算処理装置100のチップサイズよりも小さくすることが可能になる。
【0077】
以上、この実施形態においても、上述した実施形態と同様の効果を得ることができる。例えば、各バンクBKにSDAとSDACとを設けることで、同じアドレスの複数のアクセス要求が繰り返し発行される場合に、バンクBKの競合を避けることができ、アクセス効率を向上することができる。
【0078】
さらに、この実施形態では、互いに隣接して配置される2つのバンクBKの一方のSDAから出力されるデータと、2つのバンクBKの他方のSDACから出力されるデータとの一方をセレクタ61により選択する。これにより、データ線の配線領域の面積を削減することができ、図8の演算処理装置100Aのチップサイズを削減することが可能になる。
【0079】
図11および図12は、別の実施形態における演算処理装置の動作の一例を示す。すなわち、図11および図12は、演算処理装置の演算処理方法の一例を示す。図5と同様の動作については詳細な説明は省略する。図11および図12に示す動作を実行する演算処理装置100Bは、例えば、SIMD演算命令を使用して、複数の積和演算等を並列に実行する機能を有するCPU等のプロセッサである。演算処理装置100Bにおいて、各バンクBKを除く構成は、図1に示した演算処理装置100と同様である。また、演算処理装置100Bの各バンクBKの構成は、図1のキャッシュ制御部51の代わりにキャッシュ制御部51Bを有することを除き、図1に示した各バンクBKの構成と同様である。
【0080】
この実施形態では、各バンクBKは、同時に受信した、アドレスが異なる複数のアクセス要求のうち、優先順位が2番目のアクセス要求に対応するデータをSDCとSDACとに保持する。図11および図12では、反復計算に使用するデータが、メインメモリに保持され、互いに異なるアドレスのアクセス要求AREQ0、AREQ1がAGU#0、AGU#1から発行される。
【0081】
まず、1回目の反復計算時、図11(A)において、バンクBK#0のキャッシュ制御部51Bは、互いに異なるアドレスのアクセス要求AREQ0、AREQ1のヒットミスの通知をタグアレイ52から受信する。キャッシュ制御部51Bは、優先順位が高い順にアクセス要求AREQ0、AREQ1をメインメモリに順次発行する。図11(B)において、メインメモリは、アクセス要求AREQ0の応答として1キャッシュラインCL分のデータを各バンクBKに転送する。
【0082】
バンクBK#0のキャッシュ制御部51Bは、メインメモリから受信したアクセス要求AREQ0に対応するデータDTをアクセス要求AREQ0の発行元に出力する。また、バンクBK#0のキャッシュ制御部51Bは、メインメモリから受信したアクセス要求AREQ0に対応するデータDTを、SDA#0においてアクセス要求AREQ0に含まれるインデックスアドレスに対応するエントリEaに格納する。
【0083】
次に、図12(C)において、バンクBK#0のキャッシュ制御部51Bは、メインメモリから受信したアクセス要求AREQ1に対応するデータDTをアクセス要求AREQ1の発行元に出力する。また、バンクBK#0のキャッシュ制御部51Bは、メインメモリから受信したアクセス要求AREQ1に対応するデータDTを、SDA#0においてアクセス要求AREQ1に含まれるインデックスアドレスに対応するエントリEaに格納する。さらに、バンクBK#0のキャッシュ制御部51Bは、メインメモリから受信したアクセス要求AREQ1に対応するデータDTを、SDAC#0においてアクセス要求AREQ1に含まれるインデックスアドレスに対応付けてエントリEbのいずれかに格納する。
【0084】
次に、2回目の反復計算時、図12(D)において、バンクBK#0のキャッシュ制御部51Bは、互いに異なるアドレスのアクセス要求AREQ0、AREQ1のキャッシュヒットの通知をタグアレイ52から受信する。キャッシュ制御部51Bは、SDA#0においてアクセス要求AREQ0に含まれるインデックスアドレスに対応するエントリEaからデータDTを取り出す。また、キャッシュ制御部51Bは、SDAC#0において図3の比較器56によりキャッシュヒットが判定されたエントリEbからデータDTを取り出す。そして、キャッシュ制御部51Bは、エントリEa、Ebから取り出したデータDTを、それぞれアクセス要求AREQ0、AREQ1の発行元に同時に出力する。
【0085】
これにより、2回目以降の反復計算において、互いに異なるアドレスの2つのアクセス要求AREQ0、AREQ1が1つのバンクBKでキャッシュヒットである場合のアクセス効率を改善することができる。例えば、アクセス要求AREQ0、AREQ1の発行元にデータDTを転送するアクセスレイテンシを、単一のアクセス要求AREQ0の発行元にデータDTを転送するアクセスレイテンシと同じにすることができる。
【0086】
図13は、図11および図12に示す演算処理装置100Bの動作の一例を示す。上述したように、演算処理装置100Bの構成は、各バンクBKのキャッシュ制御部51Bを除き、図1の演算処理装置100の構成と同様である。
【0087】
まず、ステップS20において、バンクBKのいずれかは、2つのAGU21からアクセス要求AREQ0、AREQ1を受信する。次に、ステップS22において、アクセス要求AREQ0、AREQ1を受信したバンクBKのタグアレイ52は、アクセス要求AREQ0、AREQ1のキャッシュミスを判定する。次に、ステップS24において、キャッシュミスを判定したバンクBKのキャッシュ制御部51Bは、アクセス要求AREQ0、AREQ1の発行元のAGU21を介して演算ユニット15(すなわち、CPUコア110)にキャッシュミスを通知する。これにより、CPUコア110はストールする。
【0088】
次に、ステップS26において、アクセス要求AREQ0、AREQ1を受信したバンクBKのキャッシュ制御部51Bは、アクセス要求AREQ1を図示しないレジスタ等に一時的に保持する。そして、キャッシュ制御部51Bは、アクセス要求AREQ0、AREQ1をメインメモリに順次発行する。
【0089】
次に、ステップS28において、各バンクBKのキャッシュ制御部51Bは、メインメモリからアクセス要求AREQ0に対応するデータDTとアクセス要求AREQ1に対応するデータDTとを順次ロード(受信)する。アクセス要求AREQ0を受信したバンクBKは、アクセス要求AREQ0に対応して受信したデータDTをアクセス要求AREQ0の発行元に出力する。また、アクセス要求AREQ1を受信したバンクBKは、アクセス要求AREQ1に対応して受信したデータDTをアクセス要求AREQ1の発行元に出力する。
【0090】
次に、ステップS30において、各バンクBKのキャッシュ制御部51Bは、メインメモリから受信したデータDTをSDAにそれぞれ格納することで、SDAを更新する。次に、ステップS32において、アクセス要求AREQ0、AREQ1を受信したバンクBK#0のキャッシュ制御部51Bは、アクセス要求AREQ1に対応するデータDTをSDACにコピーする。次に、ステップS34において、キャッシュ制御部51Bは、アクセス要求AREQ0、AREQ1の発行元のAGU21を介してCPUコア110にアクセス要求AREQ0、AREQ1に対するストール解除を通知する。そして、図13に示す動作が終了される。
【0091】
図14は、他の演算処理装置の動作の一例を示す。図5図7図11図12と同様の動作については詳細な説明は省略する。図14に示す動作を実行する演算処理装置の構成は、各バンクBKがSDAを有し、SDACを持たないことを除き、図11の演算処理装置100Bと同様の構成である。図14では、図5と同様に、反復計算に使用するデータが、メインメモリに保持され、互いに異なるアドレスのアクセス要求AREQ0、AREQ1がAGU#0、AGU#1から発行される。
【0092】
まず、1回目の反復計算時、図14(A)において、バンクBK#0は、互いに異なるアドレスのアクセス要求AREQ0、AREQ1のキャッシュミスを判定する。バンクBK#0は、優先順位が最の高いアクセス要求AREQ0をメインメモリに発行する。図11と同様に、アクセス要求AREQ0、AREQ1のアドレスは、互いに異なるため、バンクBK#0は、優先順位が高い順にアクセス要求AREQ0をメインメモリに発行する。
【0093】
図14(B)において、メインメモリは、アクセス要求AREQ0の応答として1キャッシュラインCL分のデータを各バンクBKに転送する。バンクBK#0は、メインメモリから受信したアクセス要求AREQ0に対応するデータDTをアクセス要求AREQ0の発行元に出力する。また、バンクBK#0は、メインメモリから受信したアクセス要求AREQ0に対応するデータDTを、SDA#0においてアクセス要求AREQ0に含まれるインデックスアドレスに対応するエントリEaに格納する。
【0094】
AGU#1は、アクセス要求AREQ1を再度発行する(リトライ)。アクセス要求AREQ1のリトライを受信したバンクBK#0は、アクセス要求AREQ1をメインメモリに発行する。
【0095】
図14(C)において、バンクBK#0は、メインメモリから受信したアクセス要求AREQ1に対応するデータDTを、アクセス要求AREQ1の発行元に出力する。また、バンクBK#0は、メインメモリから受信したアクセス要求AREQ1に対応するデータDTを、SDA#0においてアクセス要求AREQ1に含まれるインデックスアドレスに対応するエントリEaに格納する。
【0096】
次に、2回目の反復計算時、図14(D)において、バンクBK#0は、互いに異なるアドレスのアクセス要求AREQ0、AREQ1のキャッシュヒットを判定する。バンクBK#0は、優先順位が最も高いアクセス要求AREQ0に含まれるインデックスアドレスに対応するエントリEaからデータDTを取り出し、アクセス要求AREQ0の発行元に出力する。優先順位が最も高いアクセス要求AREQ0に対応するバンクBK#0の動作により、アクセス要求AREQ1は、ストールされる。
【0097】
次に、図14(E)において、バンクBK#0は、AGU#1から再度発行されるアクセス要求AREQ1(リトライ)のキャッシュヒットを判定する。バンクBK#0は、アクセス要求AREQ1に含まれるインデックスアドレスに対応するエントリEaからデータDTを取り出し、アクセス要求AREQ1の発行元に出力する。
【0098】
図14に示す動作を実行する演算処理装置の各バンクBKは、SDACを持たないため、図7と同様に、同じアドレスのアクセス要求AREQ0、AREQ1に対する処理を重複して実行できない。このため、図11および図12の動作に比べてアクセス効率は低下する。
【0099】
図15は、図14に示す他の演算処理装置の動作の一例を示す。図13と同様の動作については詳細な説明は省略する。
【0100】
ステップS40、S42、S44の動作は、それぞれ図13のステップS20、S22、S24の動作と同様である。次に、ステップS46において、アクセス要求AREQ0、AREQ1を受信したバンクBKを含む全てのバンクBKは、メインメモリからアクセス要求AREQ0に対応する1キャッシュラインCL分のデータDTをロード(受信)する。アクセス要求AREQ0を受信したバンクBKは、受信したデータDTをアクセス要求AREQ0の発行元に出力する。
【0101】
次に、ステップS48において、各バンクBKは、アクセス要求AREQ0に対応してメインメモリから受信したデータDTをSDAに格納することで、SDAを更新する。次に、ステップS50において、キャッシュ制御部51Bは、CPUコア110にアクセス要求AREQ0、AREQ1に対するストール解除を通知する。
【0102】
次に、ステップS52において、アクセス要求AREQ1に対応するバンクBKは、アクセス要求AREQ1(リトライ)を受信する。次に、ステップS54において、アクセス要求AREQ1(リトライ)を受信したバンクBKは、アクセス要求AREQ1のキャッシュミスを判定する。次に、ステップS56において、アクセス要求AREQ1(リトライ)を受信したバンクBKは、例えば、アクセス要求AREQ1の発行元のAGU21を介してCPUコア110にアクセス要求AREQ1のキャッシュミスを通知する。これにより、CPUコア110はストールする。
【0103】
次に、ステップS58において、アクセス要求AREQ1のリトライを受信したバンクBKは、メインメモリからアクセス要求AREQ1に対応する1キャッシュラインCL分のデータDTをロード(受信)する。アクセス要求AREQ1を受信したバンクBKは、受信したデータDTをアクセス要求AREQ1の発行元に出力する。
【0104】
次に、ステップS60において、各バンクBKは、アクセス要求AREQ1に対応してメインメモリから受信したデータDTをSDAに格納することで、SDAを更新する。次に、ステップS62において、アクセス要求AREQ1のリトライを受信したバンクBKは、CPUコア110にアクセス要求AREQ1に対するストール解除を通知する。そして、図15に示す動作が終了される。
【0105】
図16は、図11および図12に示す演算処理装置100Bと図14に示す他の演算処理装置とのアクセス効率の比較例を示す。1回目の反復計算において、演算処理装置100Bは、アドレスが異なるアクセス要求AREQ0、AREQ1(キャッシュミス)をメインメモリに順に発行することができる。これにより、アクセス要求AREQ1に対応するメインメモリからのL1データキャッシュへのデータDTの転送と、アクセス要求AREQ0に対応するメインメモリからのL1データキャッシュへのデータDTの転送とを重複して実行することができる。これに対して、図14に示す他の演算処理装置は、アクセス要求AREQ0、AREQ1毎にメインメモリからデータDTが転送される。したがって、キャッシュミス時において、他の演算処理装置のアクセスレイテンシは、演算処理装置100Bのアクセスレイテンシに比べて長くなる。
【0106】
2回目の反復計算において、演算処理装置100Bは、アドレスが互いに異なるアクセス要求AREQ0、AREQ1(キャッシュヒット)を並列に処理することができる。これに対して、図14に示す他の演算処理装置は、アクセス要求AREQ0、AREQ1に対応してSDAに保持されたデータDTを、アクセス要求AREQ0、AREQ1毎に発行元に出力する。したがって、キャッシュヒット時においても、他の演算処理装置のアクセスレイテンシは、演算処理装置100Bのアクセスレイテンシに比べて長くなる。
【0107】
以上、この実施形態においても、上述した実施形態と同様の効果を得ることができる。例えば、各バンクBKにSDAとSDACとを設けることで、同じアドレスの複数のアクセス要求が繰り返し発行される場合に、バンクBKの競合を避けることができ、アクセス効率を向上することができる。さらに、この実施形態では、各バンクBKにSDAとSDACとを設けることで、互いに異なるアドレスの複数のアクセス要求が繰り返し発行される場合に、バンクBKの競合を避けることができ、アクセス効率を向上することができる。
【0108】
図17は、別の実施形態の演算処理装置におけるL1データキャッシュの一例を示す。上述した実施形態と同様の要素については、同じ符号を付し、詳細な説明は省略する。図17に示す演算処理装置100Cは、例えば、SIMD演算命令を使用して、複数の積和演算等を並列に実行する機能を有するCPU等のプロセッサである。演算処理装置100Cにおいて、L1データキャッシュ40Cを除く構成は、図1に示した演算処理装置100の構成と同様である。
【0109】
L1データキャッシュ40Cの各バンクBK(50C)は、マルチポートタイプのサブデータアレイSDAを有し、サブデータアレイキャッシュSDACを持たない。例えば、各バンクBKは、データを出力可能な2つのポートP0、P1を有する。各ポートP0、P1は、データ線を介してデータスイッチ31に接続される。例えば、ポートP0は、優先順位が最も高いアクセス要求に対応するデータを出力し、ポートP1は、優先順位が2番目に高いアクセス要求に対応するデータを出力する。これにより、図5図11および図12と同様の動作が実現される。
【0110】
なお、図8と同様に、互いに隣接するバンクBKにおいて、一方のバンクBKのポートP0と他方のバンクBKのポートP1とをセレクタ61に接続することで、データスイッチ31に接続されるデータ線の数が削減されてもよい。以上、この実施形態においても、上述した実施形態と同様の効果を得ることができる。
【0111】
なお、上述した実施形態は、演算処理装置に搭載されるL1データキャシュに適用する例について説明されたが、演算処理装置とメインメモリとの間に配置されるデータキャッシュに適用されてもよい。
【0112】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【0113】
11 命令キャッシュ
12 命令フェッチ部
13 命令デコード部
14 命令発行制御部
15 演算ユニット
16 レジスタファイル
20 ロードストアユニット
21 アドレス生成部(AGU)
31 データスイッチ
32 アドレススイッチ
40、40A、40C L1データキャッシュ
50、50B、50C バンク(BK)
51、51B キャッシュ制御部
52 タグアレイ
53 サブデータアレイ(SDA)
54 サブデータアレイキャッシュ(SDAC)
55 インデックス保持部
56 比較器
61 セレクタ
100、100A、100B、100C 演算処理装置
110 CPUコア
521 セレクタ部
522 優先順位判定ロジック
AREQ0、AREQ1 アクセス要求
CL キャッシュライン
DT データ
Ea、Eb エントリ
P0、P1 ポート
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17