JP6732032B2 - 情報処理装置 - Google Patents

情報処理装置 Download PDF

Info

Publication number
JP6732032B2
JP6732032B2 JP2018541843A JP2018541843A JP6732032B2 JP 6732032 B2 JP6732032 B2 JP 6732032B2 JP 2018541843 A JP2018541843 A JP 2018541843A JP 2018541843 A JP2018541843 A JP 2018541843A JP 6732032 B2 JP6732032 B2 JP 6732032B2
Authority
JP
Japan
Prior art keywords
cache
unit
arithmetic
data
information processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2018541843A
Other languages
English (en)
Other versions
JPWO2018061192A1 (ja
Inventor
清大 武田
清大 武田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Publication of JPWO2018061192A1 publication Critical patent/JPWO2018061192A1/ja
Application granted granted Critical
Publication of JP6732032B2 publication Critical patent/JP6732032B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

この開示は情報処理装置に関し、たとえば、複数の演算装置とこれらの演算装置で共有されるメモリ部と複数のキャッシュとを備えた情報処理装置に好適に用いられるものである。
[ASICおよびFPGAなどによるデータ処理の高速化]
近年、組込みからHPC(High Performance Computer)までの幅広い分野において、データ処理の高速化にASIC(Application Specific Integrated Circuit)またはFPGA(Field Programmable Gate Array)などが活用されている。ASICおよびFPGAでは、シリコンダイ上に複数の演算装置を構築し相互に接続することによって、従来のCPU(Central Processing Unit)において実行されている命令デコードならびにレジスタへのデータのロードおよびストア等を排除することができ、この結果、演算並列性の高い効率的なデータ処理を実現できる。
[ASICおよびFPGAによるDRAM活用]
これまでASICおよびFPGAでは、各演算装置への入出力データの保持にフリップフロップまたはSRAM(Static Random Access Memory)等を利用していた。一方、近年、システムが扱うデータ規模の増大に伴い、DRAM(Dynamic Random Access Memory)等の大容量メモリ(以下、「メモリ」と称する)をデータ保持に利用するシステムが増加しつつある。
しかし、ASICまたはFPGA上に構成される各演算装置と比較してメモリは低速であり、メモリアクセスがシステム性能のボトルネックとなることが多い。
[共有メモリ方式におけるキャッシュに関する先行技術]
低速なメモリへのアクセスレイテンシを隠蔽する技術として、キャッシュが知られている。また、複数の演算装置がメモリを共有する構成の代表例であるマルチプロセッサシステムでは、キャッシュ構成に関して多くの研究開発がなされている。マルチプロセッサシステムは、一般的に速度と容量の異なる複数のキャッシュで構成されたキャッシュ階層を有する(たとえば、David Culler他2名、"Parallel Computer Architecture: A Hardware/Software Approach"(非特許文献1)の第6章を参照)。
[プライベートキャッシュ方式]
プロセッサに近い高速低容量なレベル1〜2キャッシュでは、各プロセッサに専用キャッシュを割り当てるプライベートキャッシュ方式(たとえば、非特許文献1の第6章を参照)が利用されることが多い。専用キャッシュを配置することで、各プロセッサからのアクセス競合による性能低下を防止できる。
プライベートキャッシュ方式では、各キャッシュ間でデータ同期を行うコヒーレンス機構が設けられる。ただし、各プロセッサにはプロセス単位で処理が割当てられるためプロセッサ間での共有データは少なく、データ同期による性能への影響は小さい。また、コヒーレンス機構を設けずに、共有データはキャッシュ上に配置しないで直接メモリに格納する構成もある。
[共有キャッシュ方式]
一方、メモリに近い低速大容量なラストレベルキャッシュでは、複数のアクセス要求元回路が単一のキャッシュにアクセスする共有キャッシュ方式(非特許文献1の第6章参照)が利用されることが多い。共有キャッシュ方式では各上位回路からのアクセス競合が発生するが、上位のキャッシュはミス時のみ下位にアクセスするため、競合の発生頻度は低く、コヒーレンス機構も不要である。
[データリプレース方式]
共有キャッシュでは、あるプロセッサのアクセスにより、他のプロセッサで使用中のデータがキャッシュからリプレースされることがある。特に、低頻度でメモリアクセスを行うプロセッサ側のデータが高頻度でメモリアクセスを行うプロセッサによってリプレースされることで、前者のプロセッサで性能低下が発生する。また、各プロセッサが同一のセット(キャッシュ内のデータ管理単位をいう)にアクセスを繰り返した場合、スラッシングと呼ばれるデータの追い出し合いが発生し、両者の性能が著しく低下する。
上記の問題に対して、プロセッサ毎またはプロセッサ上で実行中のプロセス毎に、ウェイと呼ばれるキャッシュ内のデータ管理単位を専用で割り当てることによって、回避する手法が知られている(特許文献1)。
特開2010−244435号公報
David Culler他2名、"Parallel Computer Architecture: A Hardware/Software Approach"、第1版、Morgan Kaufmann、1998年8月
本開示が主として対象とするASICまたはFPGAで実現される複数の演算装置を有するシステムは、従来のマルチプロセッサとはシステムの特性が異なるため、従来のマルチプロセッサシステムを対象としたキャッシュ構成では性能の高いシステムを実現できない。
具体的に本開示が対象とするシステムではメモリ上に各演算装置間で授受するデータが多く配置されている。したがって、従来技術のように、上位キャッシュにプライベートキャッシュ方式を用いた場合、データ同期が多発し性能が大きく低下する。一方、演算装置の数は、マルチプロセッサシステムにおけるプロセッサ数よりも多いため、共有キャッシュ方式を採用すると、アクセス競合やスラッシングによる大きな性能低下が発生する。
また、特許文献1に開示されている専用ウェイ割当てによるデータリプレース方式は、共有データをキャッシュに配置しないことを前提とした管理手法である。一方、本開示が対象とするシステムでは演算装置の入出力データの保存が主目的のため、複数の演算装置で共有される共有データのキャッシュ配置が必須である。
この発明は上記の問題点を考慮してなされたものであり、その主たる目的は、複数の演算装置を有する情報処理装置において、キャッシュへのアクセス競合およびスラッシングの発生頻度を抑制することが可能な情報処理装置を提供することである。
この開示の一局面による情報処理装置は、複数の演算装置と、複数の演算装置によって共有されるメモリ部と、キャッシュ装置とを備える。キャッシュ装置は、メモリ部のメモリ空間を複数の領域に分割し、複数の領域にそれぞれ対応する同一階層の複数のキャッシュを含む。各キャッシュは、対応する領域のデータが独占的に配置されるキャッシュコア部を含む。
同一階層に複数のキャッシュCS1〜CS4を有するが、各キャッシュCSに同一データが配置されることがないためコヒーレンス機構が不要であり、データ同期による性能低下を抑止できる。また、複数の演算装置AR1〜AR4からのアクセスが、アドレスに応じて異なるキャッシュCSに分散されることで、キャッシュCSへのアクセス競合やスラッシングの発生頻度を抑制することができ、この結果、情報処理装置のシステム性能を向上させることができる。
情報処理装置の構成を示すブロック図である。 図1の各キャッシュの内部構成を示すブロック図である。 図2のキャッシュの動作を示すフローチャートである。 4ウェイキャッシュにおけるLRUテーブルの例を示す図である。 MRUテーブルの一例を示す図である。 図2のMRU更新部の動作を示すフローチャートである。 キャッシュミス時のリプレースマスク生成部の動作を説明するための機能ブロック図である。 図2の更新参照テーブルおよび更新参照優先度生成部の構成を示すブロック図である。 更新参照テーブル更新部51における各ラインの状態遷移の一例を示す図である。 リプレース選択部の動作の詳細を説明するための機能ブロック図である。
以下、実施の形態について図面を参照して詳しく説明する。なお、同一または相当する部分には同一の参照符号を付して、その説明を繰り返さない場合がある。
[情報処理装置の構成]
図1は、情報処理装置の構成を示すブロック図である。図1の情報処理装置は、複数の演算装置AR1〜AR5と、複数のキャッシュCS1〜CS4と、キャッシュアクセスバスCBUS1〜CBUS4と、メモリアクセスバスMBUSと、物理層を含むメモリ制御部MCTLと、メモリ部MEMとを備える。複数の演算装置AR1〜AR5、複数のキャッシュCS1〜CS4、およびキャッシュアクセスバスCBUS1〜CBUS4おいて、総称する場合または不特定ものを示す場合にはそれぞれ、演算装置AR、キャッシュCS、およびキャッシュアクセスバスCBUSと記載する。
図1の演算装置の数およびキャッシュの数は一例であってこの数に限られない。各キャッシュCSは、特定の1つ以上の演算装置ARから共有される。キャッシュアクセスバスCBUS1〜CBUS4は、演算装置AR1〜AR5とキャッシュCS1〜CS4との間の接続バスである。メモリアクセスバスMBUSは、キャッシュCS1〜CS4とメモリ制御部MCTLと間の接続バスである。以下、各構成要素についてさらに詳しく説明する。
(演算装置)
各演算装置ARは固有の識別情報である演算装置ID(Identification)を有する。
各演算装置ARは特定の1つ以上のキャッシュCSとインタフェースを介して接続される。このインタフェースは、メモリアドレスおよびアクセス元の演算装置IDの通知、ライトデータの通知、およびリードデータの取得を行うためのキャッシュアクセスバスCBUSから構成される。
各演算装置ARは、アクセスすべきメモリのアドレスに応じて適切なインタフェース(すなわち、キャッシュアクセスバスCBUS)を選択する機能を有しており、当該アドレスに対応したキャッシュCSにアクセスする。
(キャッシュ、キャッシュアクセスバス)
各キャッシュCSは、演算装置ARとの間のインタフェース(図2のキャッシュアクセス制御部21)と、メモリ制御部MCTLとの間のインタフェース(図2のメモリアクセス制御部22)をそれぞれ1つ有する。また、各キャッシュCSと対応する特定の演算装置ARとの間にキャッシュアクセスバスCBUSが設けられる。
各キャッシュCSは、あるアドレスに対するアクセス要求を演算装置ARから受けた場合、当該アドレスのデータがキャッシュ上に配置されていれば、直接演算装置ARに対してアクセス応答を返す。一方、各キャッシュCSは、当該アドレスのデータがキャッシュ上に配置されていない場合は、メモリアクセスバスMBUSにアクセス要求を発行し、メモリ部MEMから当該アドレスに対応するデータを取得する。そして、各キャッシュCSは、取得したデータによってキャッシュデータのリプレースを行った後、演算装置ARに対して応答を発行する。
各キャッシュCSは、一般的なライトバック動作を行う。すなわち、キャッシュCSにデータが書き込まれた場合には、そのデータがリプレースされる時点でキャッシュCSからメモリ部MEMにデータが書き込まれる。
(メモリアクセスバス、メモリ制御部)
メモリアクセスバスMBUSは、各キャッシュCSからのアクセス要求を調停し、メモリ制御部MCTLに通知する。
メモリ制御部MCTLは、各キャッシュCSからアクセス要求が発行された場合、当該アクセス要求をメモリ部MEMのプロトコルに変換し、変換後のコマンドをメモリ部MEM部に発行することによって、メモリ部MEMに対してデータ取得等を実施する。この実施結果に基づいて、メモリ制御部MCTLは、アクセス応答をキャッシュCSに発行する。
(メモリ部)
メモリ部は汎用的なDRAM等にて構成される。メモリ部MEM部の内部はシステム的には複数のキャッシュCS1〜CS4にそれぞれ対応する複数の領域RG1〜RG4に分割され、各領域ごとに対応するキャッシュCSとの間でのみ独占的にデータのやりとりが行われる。このような構成によれば、各キャッシュCSに同一データが配置されることがないためコヒーレンス機構が不要であり、データ同期による性能低下を抑止できる。
なお、メモリ部MEM部は、メモリ制御部MCTLが発行するアクセス要求等に従いリード動作やライト動作等を実施しているのであって、メモリ部MEM自身が対応するキャッシュを認識可能に構成されているわけではない。
なお、上記の情報処理装置の構成において、キャッシュアクセスバスCBUS、キャッシュCS、およびメモリアクセスバスMBUSをまとめてキャッシュ装置10と称する場合がある。
[本システムのデータアクセスの特徴]
キャッシュの内部構成を説明する前に、まず、ASICまたはFPGAによる並列処理のデータ処理システムにおけるデータアクセスの特徴について説明する。
具体的に、各演算装置は、メモリアクセスの際に、ある程度のデータを一括でライトまたはリードするため、シーケンシャルアクセスが多いという特徴を有している。また、ある演算装置がライトした結果を、自身またはほかの演算装置がリードするという特徴を持っている。
したがって、ある演算装置が現在アクセスしているラインと呼ばれるキャッシュ上のリプレース単位データは、同一演算装置によって近い将来に再度アクセスされる可能性が高い。また、ある演算装置が現在アクセスしているラインよりも過去に参照し且つ更新を行わなかったラインは、同一演算装置によって、近い将来に再度参照される可能性は低い。一方、ある演算装置によって更新が行われたラインは、近い将来に同一演算装置または他の演算装置によって参照される可能性が高い。
キャッシュの効果を高めるには上記アクセスの特徴に基づき、スラッシングを回避しつつ、データ利用効率の高いリプレース管理方式が必要である。このための具体的なキャッシュ構成およびデータリプレース方式を以下に説明する。
[キャッシュの内部構成]
図2は、図1の各キャッシュの内部構成を示すブロック図である。図2を参照して、各キャッシュCSは、キャッシュアクセス制御部21と、キャッシュコア部20と、LRU制御部30と、MRU制御部40と、更新参照制御部50と、メモリアクセス制御部22とを備える。
キャッシュアクセス制御部21は、各演算装置ARとの間のインタフェースである。
キャッシュコア部20は、一般的なセットアソシアティブキャッシュからなる。図2では、キャッシュコア部20が4ウェイ(WY0〜WY3)のセットアソシアティブキャッシュによって構成された例が示されている。キャッシュコア部20は、4個のウェイID(0〜3)とM個のセットID(0〜M−1)とを有する。
LRU制御部30は、一般的なLRU(Least Recently Used)アルゴリズムに基づいてウェイのアクセス履歴の計算およびキャッシュミス時のリプレース対象となるウェイの決定を行う。具体的に、LRU制御部は30、各セット内でのウェイのアクセス履歴を保持するLRUテーブル32、LRUテーブル32の更新を行うLRU更新部31、および、キャッシュミス時にリプレースするウェイを決定するリプレース対象選択部33を備える。
MRU制御部40は、各演算装置ARが直近にアクセスしたキャッシュ位置の計算およびキャッシュミス時にリプレース対象から除外するウェイを指示するマスクを生成する。具体的に、MRU制御部40は、各演算装置ARにおけるMRU(Most Recently Used)ラインを保持するMRUテーブル42、MRUテーブル42の更新を行うMRU更新部41、および、他の演算装置ARが直近にアクセスしたウェイをリプレース対象から除外するためのマスク情報を生成するリプレースマスク生成部43を備える。
更新参照制御部50は、各ラインにおいて各演算装置ARによる更新および更新後参照を示す状態の計算およびキャッシュミス時にリプレース対象を決定する際の優先度を生成する。具体的に、更新参照制御部50は、各ラインの更新および参照状態を保持する更新参照テーブル52、更新参照テーブル52を更新する更新参照テーブル更新部51、および、キャッシュミス時にリプレース対象を決定する際の優先度を生成する更新参照優先度生成部53を備える。
メモリアクセス制御部22は、メモリ部MEMとの間のインタフェースであり、キャッスミス発生時にメモリ部MEMに対してアクセスを行う。
上記の構成のうち、MRU制御部40および更新参照制御部50は、必要に応じて取捨選択可能である。
[キャッシュの動作の概要]
図3は、図2のキャッシュの動作を示すフローチャートである。以下、図2および図3を参照して、図2に示すキャッシュの動作の概要について説明する。
まず、キャッシュアクセス制御部21は、演算装置ARからアクセス要求を受け付ける(ステップS100)。具体的に、データ読み出し要求の場合には、キャッシュアクセス制御部21は、メモリ部MEMのアドレスと当該アクセスを要求する演算装置の識別情報(すなわち、演算装置ID)とを受け付ける。データ書き込み要求の場合には、キャッシュアクセス制御部21は、メモリ部MEMのアドレスと書き込みデータと当該アクセスを要求する演算装置の演算装置IDとを受け付ける。
キャッシュコア部20は、アクセス要求のあったアドレスとタグとの比較を行って、ヒットまたはミスの判定を行う(S105)。ヒット/ミスの判定結果C1は、LRU制御部30、MRU制御部40、および更新参照制御部50に伝達される。判定結果がミスの場合、キャッシュコア部20は、データを一部追い出し、演算装置ARがアクセスするデータをキャッシュコア部20上に配置する。具体的には以下の手順による。
まず、リプレースマスク生成部43は、リプレース対象外となるウェイを示すマスクを生成する(ステップS110)。並行して、更新参照優先度生成部53は、リプレース対象を決定する際の各ウェイの優先度を生成する(ステップS115)。
次に、リプレース対象選択部33は、LRUテーブル32と上記のリプレースマスクと上記の優先度に基づいて、リプレース対象となるウェイを決定する(ステップS120)。
次に、キャッシュコア部20は、上記ステップS120で決定されたリプレース対象のウェイID(図2のC2)と、アクセス要求で指示されたアドレスに対応するセットIDとから、リプレースするライン位置を特定する。そして、特定ライン位置に配置されたデータに対応するフラグを確認する(ステップS125)。フラグは、対応するデータがキャッシュに配置された後にそのデータが更新されたか否かを示すものである。
フラグが更新有りを示している場合はライトバックが必要であるので、キャッシュコア部20は、メモリアクセス制御部22を経由して、当該データ(すなわち、旧データ)をメモリ部MEMへライトバックする(ステップS135)。
フラグが更新なしを示している場合(すなわち、ライトバックが不要な場合)、もしくはステップS135のメモリへのライトバックが完了した後に、キャッシュコア部20は、メモリアクセス制御部22を経由してメモリ部MEMから、次に当該ラインに配置するデータ(すなわち、新データ)の読み出しを行う(ステップS130)。
データの読み出しが完了すると、キャッシュコア部20はリプレース対象となるライン位置に読み出したデータを書き込む(ステップS140)。これにより、キャッシュミスの場合において、演算装置ARがアクセスするデータのキャッシュ上への配置(すなわち、リプレース)が完了する。リプレースの完了通知(図2のC3)は、キャッシュコア部20、LUR制御部30、MRU制御部40、および更新参照制御部50に伝達される。
キャッシュヒットの場合、もしくは上記のリプレース完了後に、キャッシュコア部20は、演算装置ARからのアクセス要求に従い、当該キャッシュラインに対してリード操作またはライト操作を実行し(ステップS145)、キャッシュアクセス制御部21経由で演算装置ARに対してアクセス応答を発行する(ステップS150)。並行して、アクセス要求に合わせて、MRUテーブル42、LRUテーブル32、および更新参照テーブル52が更新される(ステップS155,S160,S165)。アクセス応答(ステップS150)と上記の更新(ステップS155,S160,S165)が完了次第、次のアクセス要求受付(ステップS100)に戻る。
[LRUテーブル、LRU更新部の詳細]
図4は、4ウェイキャッシュにおけるLRUテーブルの例を示す図である。図4を参照して、図2のLRUテーブル32は、キャッシュコア部20のセット毎に、そのセットに属するウェイの過去の参照の順番を示す機能ブロックである。
図4の例では、セット内で最近にアクセスされたウェイには1が、その次にアクセスされたウェイには2、3と順にナンバリングされ、最も古くにアクセスされたウェイには4がナンバリングされる。具体的にセットID=2のLRUテーブル情報は{1、3、2、4}であるので、最近にアクセスされたウェイのウェイIDは0であり、ウェイID=2,1,3の順にアクセス順が古くなる。ここで、(セットID、ウェイID)=(2、3)が次にアクセスされた場合、LRUテーブルの情報は、{1、3、2、4}から{2、4、3、1}に更新される。
図2のLRU更新部31の構成は一般的なキャッシュにおけるLRUの実装方式と同様の構成である。
[MRUテーブルの詳細]
図5は、MRUテーブルの一例を示す図である。図2のMRUテーブル42は、各演算装置ARが直近にアクセスしたキャッシュ内の位置(すなわち、セットIDおよびウェイID)を示す機能ブロックである。
図5の例では、MRUテーブル42は、No.0からNo.3までの4つのエントリを含む。各エントリは、演算装置ID、セットID、およびウェイIDの3つのフィールドで構成される。
演算装置IDのフィールドには、そのキャッシュにアクセス可能な演算装置ARの演算装置IDが予め設定される。各演算装置ARからのアクセスの度に、対応するエントリにおいて当該演算装置ARがアクセスしたキャッシュ上のライン位置に対応するセットIDとウェイIDとが更新される。
一つの演算装置ARに対して、複数のエントリを設定しても良い。ただし、あるセットに複数の演算装置ARのアクセスが集中した場合に、全てのウェイが他の演算装置ARに利用されているとリプレース対象のウェイが選択できない。したがって、MRUテーブル42のエントリ数の上限はキャッシュのウェイ数に等しい値とする。
[MRU更新部の動作の詳細]
図6は、図2のMRU更新部の動作を示すフローチャートである。図2および図6を参照して、MRU更新部41は、演算装置ARのアクセス要求毎にMRUテーブル42の更新を行う機能ブロックである。
MRU更新部41は、キャッシュコア部20にてヒットが発生したとき、もしくは、キャッシュミス発生した後にメモリアクセス制御部22がリプレースのために新たに配置されるデータの読み出しを完了したときに、MRUテーブル42の更新を開始する。それまでは、MRU更新部41は待ち状態である(ステップS200)。
MRUテーブル42を更新する際、MRU更新部41は、まず、キャッシュアクセス制御部21が通知するアドレスからセットIDを計算する(ステップS210)。
次に、MRU更新部41は、MRUテーブル42において、アクセスしている演算装置IDに対応するエントリを探索する(ステップS220)。もし、複数のエントリが存在する場合は、より古い時刻にアクセスしたエントリが選択される。
次に、MRU更新部41は、探索されたエントリに対して、ステップS210で計算されたセットIDおよび、キャッシュコア部20より取得したアクセスウェイID(図2のC1に対応する)を書き込む(ステップS230)。以上により、MRUテーブル42の更新が完了する。
[リプレースマスク生成部の詳細]
図7は、キャッシュミス時のリプレースマスク生成部の動作を説明するための機能ブロック図である。
まず、図2のリプレースマスク生成部43は、キャッシュアクセス制御部21が通知するアドレスと演算装置ID60とを取得し、アドレスからセットID61を計算する。
次に、リプレースマスク生成部43の演算部64は、MRUテーブル42の各エントリ62に対して、上記の取得した演算装置ID60と、エントリ62に保存された演算装置IDが不一致となるかを確認する。並行して、リプレースマスク生成部43の演算部65は、上記の計算したセットID61とエントリ62に保存されたセットIDが一致するかを確認する。
次に、演算部66は、演算部64における演算装置IDの不一致確認結果と、演算部65におけるセットIDの一致確認結果との積を求める。デマルチプレクサ67(DEMUX)は、エントリ62に保存されたウェイIDに応じて、演算部66の演算結果を、対応する出力部68_0〜68_Nに出力する。あるエントリ62において、現在アクセス中の演算装置AR(すなわち、キャッシュミスを引き起こした演算装置AR)以外の演算装置ARによって当該セットにおいて直近にアクセスしたウェイがあれば、その出力部68への出力が1となり、そうでなければ0となる。
最後に、各出力部68_0〜68_Nは、エントリ毎に求めた上記の出力値の和を、対応するウェイ位置のリプレースマスク70として出力する。
[更新参照テーブルおよび更新参照優先度生成部の詳細]
図8は、図2の更新参照テーブルおよび更新参照優先度生成部の構成を示すブロック図である。
図8を参照して、更新参照テーブル52は、セットIDとウェイIDによって決まるライン毎にエントリを有する。各エントリは、更新参照状態、更新中の演算装置ID、および参照中の演算装置IDの3つのフィールドを有する。更新参照状態は、ラインの状態を示すものであり、未更新、更新中、更新完了、および参照中の4つの状態を取りうる。更新中の演算装置IDは、更新中状態にあって当該ラインを更新している演算装置ARの識別情報(すなわち、更新中演算装置ID)を示す。参照中の演算装置IDは、参照中状態にあって当該ラインを参照している演算装置ARの識別情報(すなわち、参照中識別情報ID)を示す。
更新参照優先度生成部53は、演算装置ARのアクセスアドレスから生成したセットIDに基づいて、更新参照テーブル52から、当該セットに対応する参照更新状態フィールドの情報54をウェイごとに取り出す。更新参照優先度生成部53の状態−優先度変換部55は、予め設定された更新参照優先度情報57に基づいて、各ウェイの更新参照優先度56を決定する。更新参照優先度情報57は、更新参照状態と優先度との対応関係を示すものである。
[更新参照テーブル更新部の動作の詳細]
図9は、更新参照テーブル更新部51における各ラインの状態遷移の一例を示す図である。
図8および図9を参照して、セットIDとウェイIDとで決定される各ラインは、未更新ST1、更新中ST2、更新完了ST3、および参照中ST4の4つのいずれかの状態を持つ。更新参照テーブル更新部51は、あるラインに対してリセットまたはリプレースが行われた場合、当該ラインに対して未更新の状態ST1を割り当てる。
更新参照テーブル更新部51は、当該ラインに対して任意の演算装置IDからライト(Write)が行われた場合、当該ラインに更新中の状態ST2を割り当てるとともに、更新参照テーブル52の当該ラインに対応する更新中演算装置IDフィールドに、ライトを実施した演算装置のIDを保存する。ここで、当該演算装置IDをもつ演算装置が、当該ラインが属するセットの次のセット(すなわち、現行のセットID+1)にライトを実施した場合、更新参照テーブル更新部51は、当該演算装置による更新が完了したと判定し、当該ラインに対して更新完了の状態ST3を割り当てる。
その後、任意の演算装置により当該ラインへのリードが実施された場合、更新参照テーブル更新部51は、当該ラインに参照中の状態ST4を割り当てるとともに、更新参照テーブル52の当該ラインに対応する参照中演算装置IDフィールドに、リードを実施した演算装置のIDを保存する。ここで、更新時と同様に、当該演算装置IDをもつ演算装置が、当該ラインが属するセットの次のセット(すなわち、現行のセットID+1)にリードを実施した場合、更新参照テーブル更新部51は、当該演算装置による参照が完了したと判定し、当該ラインに対して未更新の状態ST1を割り当てるとともに、更新中演算装置IDおよび参照中演算装置IDフィールドをクリアする。
なお、あらかじめ特定の演算装置のみを優先度制御対象の演算装置として登録し、上記の更新中への遷移条件において、特定の演算装置によるライトのみ状態遷移を引き起こすようにしても制御してもよい。
[リプレース選択部の動作の詳細]
図10は、リプレース選択部の動作の詳細を説明するための機能ブロック図である。図2および図10を参照して、リプレース対象選択部33は、LRUテーブル32、リプレースマスク70および更新参照優先度56より、リプレース対象となるキャッシュ位置を特定する機能ブロックである。
まず、リプレース対象選択部33は、LRUテーブル32から、アクセス中のセットに対応するエントリ80を得る。LRUテーブル32の対応するエントリ80には、ウェイごとのアクセス順番が格納されている。リプレース対象選択部33は、LRUテーブル32の対応するエントリ80の各ビットと、リプレースマスク70の対応するビットの“1”と“0”とを反転したものと積を演算する。演算結果83において、“0”はリプレース対象外のウェイであることを意味する。その他の演算結果はウェイごとのアクセス順番を意味している。
次に、図8で説明したウェイ毎の更新参照優先度56に基づいて、デマルチプレクサ85(DEMUX)は、上記の演算結果83(すなわち、マスクされたウェイ毎のアクセス順番)を、同じ更新参照優先度を持つウェイ同士の組合せとして分離する。図10の例では、ウェイID=0,3は同じ更新参照優先度“1”を有しているので、ウェイID=0,3の演算結果である“1”および“3”は、格納部86_1の対応するウェイの位置に格納される。ウェイID=1は更新参照優先度“2”を有しているので、ウェイID=1の演算結果である“2”は、格納部86_2の対応するウェイの位置に格納される。
その後、各優先度におけるリプレースウェイ選択部87_0〜87_3は、最もアクセス順番の古いウェイを選択する。全てのウェイがリプレース対象外を意味する“0”の場合は、該当ウェイなし(図10の“−”)とする。具体的に図10の例では、優先度1におけるリプレースウェイ選択部87_1は、最もアクセス順番が古い(すなわち、アクセス順番が3の)ウェイID=3を選択する。優先度2におけるリプレースウェイ選択部87_2は、最もアクセス順番が古い(すなわち、アクセス順番が2)のウェイID=1を選択する。
最後に、優先度を考慮したリプレースウェイ選択部89は、高い優先度での判断結果から順に確認し(すなわち、88_3,88_2,88_1,88_0)の順に確認し、リプレースするウェイを決定する。図10の例では、優先度2におけるリプレースウェイの選択結果であるリプレースウェイID=1が最終的なリプレースウェイの選択結果として選択される。
[まとめ]
本実施の形態の情報処理装置にキャッシュ装置の主な特徴をまとめると以下のようになる。
(キャッシュの構成)
本実施の形態の情報処理装置におけるキャッシュ装置10は、メモリ空間を複数の領域RG1〜RG4に分割し、これら複数の領域のデータをそれぞれ独占的に配置可能な複数のキャッシュCS1〜CS4を備える。
上記構成のキャッシュ装置によれば、同一階層に複数のキャッシュCS1〜CS4を有するが、各キャッシュCSに同一データが配置されることがないためコヒーレンス機構が不要であり、データ同期による性能低下を抑止できる。また、複数の演算装置AR1〜AR4からのアクセスが、アドレスに応じて異なるキャッシュCSに分散されることで、キャッシュCSへのアクセス競合やスラッシングの発生頻度を抑制することができ、この結果、情報処理装置のシステム性能を向上させることができる。
(演算装置とキャッシュの接続)
各演算装置ARは、アクセスが必要なメモリ領域に対応する1つ以上のキャッシュに限定的に接続可能になっている。各演算装置ARは、自身がアクセスを必要とするメモリアドレスの範囲に応じて、接続された1つ以上のキャッシュCSのいずれかと選択的に接続する。
このように各演算装置ARとキャッシュCSとの間での接続を簡略化することによって、ハードウェアの複雑化を抑止することができる。さらにはバス性能(すなわち、キャッシュアクセスバスCBUSの性能)の向上を図ることができる。
(スラッシング防止のリプレース方式)
各キャッシュCSは、各演算装置ARが直前にアクセスしたキャッシュ内の位置(すなわち、セットIDとウェイIDとの組み合わせ)を記憶する第1の記憶部としてMRUテーブル42を備える。リプレース対象選択部33は、MRUテーブル42に基づいて、キャッシュミス発生時にミスを引き起こした演算装置AR以外の演算装置ARがアクセスしているキャッシュ内位置をデータリプレース対象から除外する(すなわち、マスクする)。これによって、演算装置AR間でのスラッシングの発生を防止することができ、結果として、情報処理装置のシステム性能を向上させることができる。
(データ再利用性を高めるリプレース方式)
各キャッシュCSは、キャッシュ内のリプレース単位となる位置毎に、ある演算装置ARによってデータ更新中であることを示す状態と、そのデータ更新後に同演算装置または他の演算装置によって参照中であることを示す状態とを判定する手段(すなわち、更新参照制御部50)を備える。上記の判定のために、各キャッシュCSは、データの更新の有無と更新後の参照の有無とを少なくとも記憶する第2の記憶部として更新参照テーブル52を備える。
これによって、ある演算装置ARによって更新されたデータは、同演算装置または他演算装置による参照が完了するまでリプレースの優先順位を下げることができる。すなわち、リプレース対象選択部33は、データ更新後に再参照されていないデータをリプレース対象から除外する。この結果、データ再利用効率を高め、システム性能を向上させることができる。
上記のキャッシュ装置の構成によれば、ASICおよびFPGAなどの専用回路ならびにマルチプロセッサなど、複数の演算装置がメモリを共有し、かつ各演算装置間で共有されるデータの比率が高いシステムにおいて、システムの処理速度を向上させることができる。
[変更例]
本実施の形態の情報処理装置におけるキャッシュ装置10は以下のように変更することが可能である。
(キャッシュのマルチポート対応)
本実施の形態では、1ポートキャッシュのみを記載しているが、各キャッシュCSをマルチポート対応させてもよい。この場合、各キャッシュCSは、演算装置ARとの間のインタフェースをポート数分だけ有する。本構成により、共有する演算装置間でのアクセス競合を解消し、アクセス性能を向上させる効果が得られる。
(下位レベルキャッシュ)
本実施の形態では、レベル1のキャッシュCSのみ記載しているが、各キャッシュCSとメモリアクセスバスMBUSとの間に下位レベルのキャッシュを1階層もしくは複数階層配置しても良い。この場合、下位レベルキャッシュはプライベートキャッシュ方式、共有キャッシュ方式のいずれでも良い。なお、プライベートキャッシュ方式ではレベル1のキャッシュの場合と同様にコヒーレンス機構は不要である。
今回開示された実施の形態はすべての点で例示であって制限的なものでないと考えられるべきである。この発明の範囲は上記した説明ではなくて請求の範囲によって示され、請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
10 キャッシュ装置、20 キャッシュコア部、21 キャッシュアクセス制御部、22 メモリアクセス制御部、30 LRU制御部、31 LRU更新部、32 LRUテーブル、33 リプレース対象選択部、40 MRU制御部、41 MRU更新部、42 MRUテーブル、43 リプレースマスク生成部、50 更新参照制御部、51 更新参照テーブル更新部、52 更新参照テーブル、53 更新参照優先度生成部、56 更新参照優先度、70 リプレースマスク、AR 演算装置、CBUS キャッシュアクセスバス、CS キャッシュ、MBUS メモリアクセスバス、MCTL メモリ制御部、MEM メモリ部、RG1〜RG4 領域。

Claims (9)

  1. 複数の演算装置と、
    前記複数の演算装置によって共有されるメモリ部と、
    複数のキャッシュを含むキャッシュ装置とを備え、
    各前記キャッシュは、
    複数のウェイが割り当てられるキャッシュコア部と、
    前記複数のウェイのうち、前記複数の演算装置のいずれかからのラインへのアクセス状態と優先度との対応関係について予め設定される情報に基づき、キャッシュミス時に優先的にリプレース対象とする前記ウェイを決定するリプレース対象選択部とを含む、情報処理装置。
  2. 前記メモリ部のメモリ空間は、複数の領域に分割され、
    前記複数のキャッシュは、前記複数の領域にそれぞれ対応する同一階層のキャッシュであり、
    各前記キャッシュの前記キャッシュコア部には、対応する前記領域のデータが独占的に配置される、請求項1に記載の情報処理装置。
  3. 各前記キャッシュは、
    各前記演算装置が最後にアクセスした前記キャッシュコア部内の位置を記憶する第1の記憶部を含み
    前記リプレース対象選択部は、前記第1の記憶部に記憶されている前記キャッシュコア部内の位置をリプレース対象から除外する、請求項に記載の情報処理装置。
  4. 複数の演算装置と、
    前記複数の演算装置によって共有されるメモリ部と、
    キャッシュ装置とを備え、
    前記キャッシュ装置は、前記メモリ部のメモリ空間を複数の領域に分割し、前記複数の領域にそれぞれ対応する同一階層の複数のキャッシュを含み、
    各前記キャッシュは、
    対応する前記領域のデータが独占的に配置されるキャッシュコア部と、
    各前記演算装置が最後にアクセスした前記キャッシュコア部内の位置を記憶する第1の記憶部と、
    前記第1の記憶部に記憶されている前記キャッシュコア部内の位置をリプレース対象から除外するリプレース対象選択部とを含む、情報処理装置。
  5. 前記リプレース対象選択部は、前記第1の記憶部に記憶されている前記キャッシュコア部内の位置のうちキャッシュミスを引き起こした演算装置が最後にアクセスした位置を、リプレース対象に加える、請求項3または4に記載の情報処理装置。
  6. 各前記キャッシュは、
    リプレースの単位となる前記キャッシュコア部内の位置毎に、データの更新の有無と更新後の参照の有無とを記憶する第2の記憶部をさらに備え、
    前記リプレース対象選択部は、データ更新後に再参照されていないデータをリプレース対象から除外する、請求項3〜のいずれか1項に記載の情報処理装置。
  7. 前記複数のキャッシュはコヒーレンス機構を有していない、請求項2〜6のいずれか1項に記載の情報処理装置。
  8. 各前記演算装置は、前記メモリ部の前記複数の領域のうちアクセスを必要とする領域に対応するキャッシュと選択的に接続可能である、請求項2〜7のいずれか1項に記載の情報処理装置。
  9. 前記キャッシュ装置は、
    前記複数のキャッシュよりも下位の階層の1個以上のキャッシュをさらに備える、請求項1〜のいずれか1項に記載の情報処理装置。
JP2018541843A 2016-09-30 2016-09-30 情報処理装置 Expired - Fee Related JP6732032B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2016/079083 WO2018061192A1 (ja) 2016-09-30 2016-09-30 情報処理装置

Publications (2)

Publication Number Publication Date
JPWO2018061192A1 JPWO2018061192A1 (ja) 2019-06-24
JP6732032B2 true JP6732032B2 (ja) 2020-07-29

Family

ID=61759489

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018541843A Expired - Fee Related JP6732032B2 (ja) 2016-09-30 2016-09-30 情報処理装置

Country Status (4)

Country Link
US (1) US10949360B2 (ja)
JP (1) JP6732032B2 (ja)
DE (1) DE112016007298T5 (ja)
WO (1) WO2018061192A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10649901B2 (en) * 2017-08-03 2020-05-12 International Business Machines Corporation Victim cache line selection
US11693790B2 (en) 2019-05-24 2023-07-04 Texas Instmments Incorporated Methods and apparatus to facilitate write miss caching in cache system

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060069876A1 (en) * 2004-09-30 2006-03-30 Sorav Bansal Method and system of clock with adaptive cache replacement and temporal filtering
JP4904796B2 (ja) * 2005-12-07 2012-03-28 セイコーエプソン株式会社 キャッシュメモリ及びマルチプロセッサシステム
US7793049B2 (en) * 2007-10-30 2010-09-07 International Business Machines Corporation Mechanism for data cache replacement based on region policies
JP2010198129A (ja) * 2009-02-23 2010-09-09 Toshiba Corp キャッシュシステム
JP2010244435A (ja) 2009-04-08 2010-10-28 Panasonic Corp キャッシュ制御装置及びキャッシュ制御方法
JP5709207B2 (ja) * 2011-03-04 2015-04-30 Necプラットフォームズ株式会社 メモリシステム、キャッシュメモリ制御方法及びメモリ制御プログラム
US10705961B2 (en) * 2013-09-27 2020-07-07 Intel Corporation Scalably mechanism to implement an instruction that monitors for writes to an address

Also Published As

Publication number Publication date
DE112016007298T5 (de) 2019-06-13
US10949360B2 (en) 2021-03-16
US20190213142A1 (en) 2019-07-11
WO2018061192A1 (ja) 2018-04-05
JPWO2018061192A1 (ja) 2019-06-24

Similar Documents

Publication Publication Date Title
CN108885583B (zh) 高速缓存存储器访问
US7584327B2 (en) Method and system for proximity caching in a multiple-core system
KR101814577B1 (ko) 프로세싱-인-메모리를 이용한 명령어 처리 방법 및 그 장치
US20200364094A1 (en) Disaggregated system domain
US7363435B1 (en) System and method for coherence prediction
US7447845B2 (en) Data processing system, processor and method of data processing in which local memory access requests are serviced by state machines with differing functionality
JP7340326B2 (ja) メンテナンス動作の実行
US8868835B2 (en) Cache control apparatus, and cache control method
US8185692B2 (en) Unified cache structure that facilitates accessing translation table entries
US8762651B2 (en) Maintaining cache coherence in a multi-node, symmetric multiprocessing computer
US8364904B2 (en) Horizontal cache persistence in a multi-compute node, symmetric multiprocessing computer
CN110959154B (zh) 用于线程本地存储数据访问的私有高速缓存
US20110320720A1 (en) Cache Line Replacement In A Symmetric Multiprocessing Computer
GB2509755A (en) Partitioning a shared cache using masks associated with threads to avoiding thrashing
CN107015922B (zh) 缓存存储器
CN114036084A (zh) 一种数据访问方法、共享缓存、芯片系统和电子设备
JP6732032B2 (ja) 情報処理装置
US10037278B2 (en) Operation processing device having hierarchical cache memory and method for controlling operation processing device having hierarchical cache memory
US20160217075A1 (en) Cache memory, cache memory control unit, and method of controlling the cache memory
US11055025B2 (en) Semiconductor memory device performing command merge operation and operation method thereof
JP2006202285A (ja) レジスタを同期させる方法
EP3724774B1 (en) Rinsing cache lines from a common memory page to memory
US20090164732A1 (en) Cache memory system and cache memory control method
US20040123035A1 (en) Retrieval of all tag entries of cache locations for memory address and determining ECC based on same
JP7311959B2 (ja) 複数のデータ・タイプのためのデータ・ストレージ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190128

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200218

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20200309

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200527

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200609

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200707

R150 Certificate of patent or registration of utility model

Ref document number: 6732032

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees