JP2014182488A - 演算処理装置、及び演算処理装置の制御方法 - Google Patents
演算処理装置、及び演算処理装置の制御方法 Download PDFInfo
- Publication number
- JP2014182488A JP2014182488A JP2013055470A JP2013055470A JP2014182488A JP 2014182488 A JP2014182488 A JP 2014182488A JP 2013055470 A JP2013055470 A JP 2013055470A JP 2013055470 A JP2013055470 A JP 2013055470A JP 2014182488 A JP2014182488 A JP 2014182488A
- Authority
- JP
- Japan
- Prior art keywords
- buffer
- data
- address
- arithmetic processing
- write
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
- G06F5/10—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using random access memory
- G06F5/12—Means for monitoring the fill level; Means for resolving contention, i.e. conflicts between simultaneous enqueue and dequeue operations
- G06F5/14—Means for monitoring the fill level; Means for resolving contention, i.e. conflicts between simultaneous enqueue and dequeue operations for overflow or underflow handling, e.g. full or empty flags
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
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)
Abstract
【課題】マルチコアシステムでのスヌープの発生頻度を軽減して性能を向上させる。
【解決手段】キャッシュメモリを備える複数のCPUが1つのメインメモリを共有するマルチコアシステムにて、メインメモリに書き込むデータと書き込み先のアドレスを保持する複数段のバッファを有するライトバッファをキャッシュメモリとメインメモリとの間に設け、キャッシュメモリからライトバッファへの書き込み時に、書き込み先のアドレスとバッファに格納されているアドレスとを比較し、一致したアドレスを持つバッファがある場合には、そのバッファにデータを上書きするとともに、そのバッファを最後段に論理的に移動する。
【選択図】図2
【解決手段】キャッシュメモリを備える複数のCPUが1つのメインメモリを共有するマルチコアシステムにて、メインメモリに書き込むデータと書き込み先のアドレスを保持する複数段のバッファを有するライトバッファをキャッシュメモリとメインメモリとの間に設け、キャッシュメモリからライトバッファへの書き込み時に、書き込み先のアドレスとバッファに格納されているアドレスとを比較し、一致したアドレスを持つバッファがある場合には、そのバッファにデータを上書きするとともに、そのバッファを最後段に論理的に移動する。
【選択図】図2
Description
本発明は、演算処理装置、及び演算処理装置の制御方法に関する。
複数のCPU(Central Processing Unit)を用いて処理を行うマルチコアシステムでは、各CPUがキャッシュメモリを備え、大容量・低速の外部メモリ(メインメモリ等)をすべてのCPUで共有する構成が採られている。各CPUにおいて、キャッシュメモリから外部メモリへのデータの書き込み時間を吸収するために、キャッシュメモリと外部メモリとの間にライトバッファを備えることも知られている。
また、マルチコアシステムでは、CPU間のデータの共有が不可欠である。そのため、CPU間でキャッシュデータの一貫性(キャッシュコヒーレンシ)を保つことが必須であり、各キャッシュメモリはスヌープといった機能を備えている。スヌープが発生すると、それを受けたCPUでは、CPUコアからキャッシュメモリへのアクセス要求にウェイトをかけるため、性能低下を招く。
各CPUのキャッシュシステムが、共通バスを流れるアクセス要求に含まれるアドレスをテーブルに格納するとともに、受け取ったアクセス要求のアドレスがテーブルに格納されている場合には、そのアクセス要求に応じたキャッシュメモリへのアクセスを抑止する技術が提案されている(例えば、特許文献1参照)。また、外部メモリにおける各領域について、データが各CPUにキャッシングされているか否かを示す情報を各CPUが備えるテーブルに記憶し、スヌープ要求の送付先をテーブルに記憶された情報を基に制限してトラフィックを削減する技術が提案されている(例えば、特許文献2参照)。
スヌープ機能を備えるキャッシュメモリでは、CPUコアからキャッシュメモリへのアクセスと、スヌープによるキャッシュメモリへのアクセスとは排他的に行われる。したがって、スヌープが多く発生すると、CPUコアからキャッシュメモリへのアクセスが待たされることが多くなり、性能が低下してしまう。
1つの側面では、本発明は、スヌープの発生頻度を軽減して性能を向上させることを目的とする。
1つの側面では、本発明は、スヌープの発生頻度を軽減して性能を向上させることを目的とする。
演算処理装置の一態様は、バスを介して外部メモリにアクセスする複数の演算処理部を有し、演算処理部は、キャッシュメモリ、処理部、ライトバッファ、及び制御部を有する。ライトバッファは、キャッシュメモリと外部メモリとの間に設けられ、外部メモリに書き込むデータと書き込み先のアドレスとの組を保持する複数段のバッファを有する。また、制御部は、キャッシュメモリからライトバッファへの書き込み時に、書き込み先のアドレスとバッファに格納されているアドレスとを比較し、一致したアドレスを持つバッファがある場合には、そのバッファにデータを上書きするとともに、そのバッファを最後段に論理的に移動する。
開示の演算処理装置は、ライトバッファ内でのデータ操作によりキャッシュデータの一貫性を保つことでキャッシュメモリに対するスヌープの発生頻度を軽減することができ性能を向上させることが可能となる。
以下、本発明の実施形態を図面に基づいて説明する。
図1は、本発明の一実施形態における演算処理装置としてのマルチコアシステムの構成例を示す図である。本実施形態におけるマルチコアシステムは、複数のCPU10−1、10−2、10−3、…、及びメモリコントローラ20を有する。CPU10−1、10−2、10−3、…の各々とメモリコントローラ20とがバスBUSにそれぞれ接続されている。また、メモリコントローラ20が、外部メモリであるメインメモリ30に接続されている。メインメモリ30はすべてのCPU10−1、10−2、10−3、…、によって共有され、各CPU10−1、10−2、10−3、…によるメインメモリ30へのアクセスは、バスBUS及びメモリコントローラ20を介して行われる。
CPU10−1、10−2、10−3、…の各々は、CPUコア11、キャッシュメモリ12、キャッシュコントローラ13、ライトバッファ14、及びライトバッファコントローラ15を有する。なお、図1において、CPU10−1、10−2、10−3、…の内部構成は、データの書き込みに係る構成を主として図示している。CPUコア11は、命令をメインメモリ30等から順次読み出して、読み出した命令に応じた演算処理を実行する。
キャッシュメモリ12は、CPUコア11での演算処理に用いるデータを保持する。キャッシュメモリ12は、キャッシュデータのアドレス情報やキャッシュデータの状態等を示すステータス情報が格納されるキャッシュタグメモリ16と、キャッシュデータが格納されるキャッシュデータメモリ17とを含む。キャッシュタグメモリ16は、キャッシュデータのアドレス情報を格納する領域AD1とステータス情報を格納する領域ST1を有する。また、キャッシュデータメモリ17は、キャッシュデータを格納する領域DT1を有する。キャッシュコントローラ13は、キャッシュメモリ12に係る制御を行う。キャッシュコントローラ13は、例えばキャッシュメモリ12に対する情報やデータの書き込み及び読み出しを行ったり、要求されたデータがキャッシュメモリ12に記憶されているか否かの判定を行ったりする。
ライトバッファ14は、CPU10−1、10−2、10−3、…からメインメモリ30に書き込むデータ及び書き込み先のアドレスを保持するバッファである。ライトバッファ14は、各段が1つのエントリにそれぞれ相当する複数段のバッファを有する。ライトバッファ14が有する各段のバッファは、書き込み先のアドレスを格納する領域AD2と、保持するデータに係るステータス情報を格納する領域ST2と、書き込みデータを格納する領域DT2とを有する。ライトバッファコントローラ15は、ライトバッファ14に係る制御を行う。
図2は、図1に示したライトバッファ14及びライトバッファコントローラ15の構成例を示す図である。なお、図2においては、ライトバッファ14が、バッファA14A、バッファB14B、及びバッファC14Cの3段のバッファである例を示しているが、本発明はこれに限定されるものではなく、ライトバッファ14におけるバッファの段数は任意の複数である。
バッファ14A、14B、14Cの各々は、領域ADD、エンプティビット(Empty bit)E、スヌープビット(Snoop bit)S、及び領域DATを有する。領域ADDは、メインメモリ30に書き込むデータに係る書き込み先のアドレスを格納する領域であり、領域DATは、メインメモリ30に書き込むデータを格納する領域である。
また、エンプティビットEは、そのバッファに書き込みデータが格納されていない空き状態であるか否か、言い換えればデータを書き込み可能であるか否かを示すビットである。本実施形態では、エンプティビットEの値は、空き状態である(書き込み可能)ときに“1”であり、空き状態でない(書き込み不可能)ときに“0”であるものとする。
また、スヌープビットSは、そのバッファに書き込まれているデータが他のCPUからコヒーレントリードされたか否かを示すビットである。本実施形態では、スヌープビットSの値は、そのバッファにデータが書き込まれるときに“0”とされ、他のCPUから受けた、スヌープ要求としてのコヒーレントリード要求のアドレスと領域ADDに格納されているアドレスとが一致したときに“1”とされるものとする。
ライトバッファコントローラ15は、バッファ制御部101、アドレス選択部102、LRU(Least Recently Used)ステータスコントローラ103、ライトコントローラ104、及びリード選択部105を有する。バッファ制御部101は、ライトバッファコントローラ15が有するアドレス選択部102、LRUステータスコントローラ103、ライトコントローラ104、及びリード選択部105を制御する。
アドレス選択部102は、バッファ制御部101の出力に応じてセレクタ106を制御する。アドレス選択部102は、自CPUからメインメモリ30への書き込み要求ではアドレスAddrを選択し、他CPUからのスヌープ要求ではアドレス(スヌープアドレス)SAddrを選択して出力するようセレクタ106を制御する。アドレスAddrは、自CPUからメインメモリ30への書き込み要求においてキャッシュコントローラ13を介して入力されるアドレスである。また、アドレス(スヌープアドレス)SAddrは、他CPUからのスヌープ要求においてバスBUSを介して入力されるアドレスである。
LRUステータスコントローラ103は、バッファA14A、バッファB14B、バッファC14Cに係るLRUのステータスを制御する。LRUステータスコントローラ103は、例えば図3に示すように3ビットの情報を用いて、バッファA14A、バッファB14B、バッファC14Cに係るLRUのステータス(更新状況)を管理し制御する。図3においては、3rdバッファが1番最後に更新されたバッファ(最新のバッファ)、2ndバッファが2番目に更新されたバッファ、1stバッファが1番最初に更新されたバッファを示す。なお、以下の説明においても、3rdバッファ、2ndバッファ、1stバッファが示す意味は同じであるものとする。
例えば、LRUステータスが“000”である場合には、バッファC14Cが1番最初に更新されたバッファ、バッファB14Bが2番目に更新されたバッファ、バッファA14Aが1番最後に更新されたバッファ(最新のバッファ)となる。また、例えば、LRUステータスが“101”である場合には、バッファA14Aが1番最初に更新されたバッファ、バッファB14Bが2番目に更新されたバッファ、バッファC14Cが1番最後に更新されたバッファ(最新のバッファ)となる。
ライトコントローラ104は、バッファ制御部101の出力及びLRUステータスコントローラ103の出力に応じて、バッファA14A、バッファB14B、バッファC14Cに対する書き込みを制御する。また、リード選択部105は、バッファ制御部101の出力及びLRUステータスコントローラ103の出力に応じてバッファセレクタ108を制御し、バッファA14A、バッファB14B、バッファC14Cに書き込まれているアドレスやデータをバスBUSに対して出力する。比較部107A、107B、107Cは、対応するバッファのエンプティビットEの値が“0”の場合に、領域ADDに格納されているアドレスとセレクタ106から出力されるアドレスとが一致するか否かを判定して判定結果をLRUステータスコントローラ103に出力する。
次に、動作について説明する。
まず、本実施形態におけるライトバッファ14への書き込み処理について説明する。図4は、本実施形態におけるライトバッファ14への書き込み処理の例を示すフローチャートである。キャッシュメモリからライトバッファへのデータの書き込み時には、書き込み要求制御信号、アドレスAddr、及びデータDataがキャッシュコントローラ13を介して入力される。ライトバッファコントローラ15のバッファ制御部101は、書き込み要求制御信号を受けると、キャッシュメモリからライトバッファへの書き込み要求であることを各機能部102、103、104に通知する。
まず、本実施形態におけるライトバッファ14への書き込み処理について説明する。図4は、本実施形態におけるライトバッファ14への書き込み処理の例を示すフローチャートである。キャッシュメモリからライトバッファへのデータの書き込み時には、書き込み要求制御信号、アドレスAddr、及びデータDataがキャッシュコントローラ13を介して入力される。ライトバッファコントローラ15のバッファ制御部101は、書き込み要求制御信号を受けると、キャッシュメモリからライトバッファへの書き込み要求であることを各機能部102、103、104に通知する。
これにより、アドレス選択部102は、キャッシュコントローラ13を介して入力されるアドレスAddrを選択して出力するようセレクタ106を制御する。そして、エンプティビットEの値が“1”でない(空き状態でない)バッファに記憶されているアドレスと、書き込み要求のアドレスAddrとが、比較器107A、107B、107Cによって比較され、その結果がLRUステータスコントローラ103に出力される(S101)。
次に、LRUステータスコントローラ103は、比較器107A、107B、107Cの出力に基づき、バッファA14A、バッファB14B、バッファC14Cにおいて、アドレスが一致したバッファがあるか否かを判定する(S102)。判定の結果、アドレスが一致したバッファがある場合には(S102のYES)、LRUステータスコントローラ103は、そのバッファにデータを書き込むようライトコントローラ104に指示する。そして、ライトコントローラ104は、一致したアドレスを持つバッファにデータDataを書き込む(上書きする)(S103)。
また、LRUステータスコントローラ103は、一致したアドレスを持ちデータDataが書き込まれたバッファが、最終段のバッファ(最新のバッファ)となるようにLRUステータスを更新する(S104)。つまり、LRUステータスコントローラ103は、一致したアドレスを持ちデータDataが書き込まれたバッファを最終段へ論理的に移動させるように、下記<a1>〜<a6>のようにLRUステータスの情報を変更する。
<a1>一致したアドレスを持つバッファが3rdバッファであった場合には、LRUステータスの情報を変更しない。
<a2>一致したアドレスを持つバッファが2rdバッファであり、かつ3rdバッファのエンプティビットEの値が“1”であった場合には、LRUステータスの情報を変更しない。
<a3>一致したアドレスを持つバッファが2rdバッファであり、かつ3rdバッファのエンプティビットEの値が“0”であった場合には、2rdバッファと3rdバッファを入れ替えるようにLRUステータスの情報を変更する。例えば、変更前のLRUステータスが“000”(CBA)であれば“010”(CAB)に変更し、“001”(BCA)であれば“100”(BAC)に変更する。
<a4>一致したアドレスを持つバッファが1stバッファであり、かつ2ndバッファ及び3rdバッファのエンプティビットEの値がともに“1”であった場合には、LRUステータスの情報を変更しない。
<a5>一致したアドレスを持つバッファが1stバッファであり、かつ2rdバッファのエンプティビットEの値が“0”で3rdバッファのエンプティビットEの値が“1”であった場合には、1stバッファと2ndバッファを入れ替えるようにLRUステータスの情報を変更する。例えば、変更前のLRUステータスが“000”(CBA)であれば“001”(BCA)に変更し、“010”(CAB)であれば“011”(ACB)に変更する。
<a6>一致したアドレスを持つバッファが1stバッファであり、かつ2ndバッファ及び3rdバッファのエンプティビットEの値がともに“0”であった場合には、1stバッファを3rdバッファに、2ndバッファを1stバッファに、3rdバッファを2ndバッファにする、すなわち回転させるようにLRUステータスの情報を変更する。例えば、変更前のLRUステータスが“000”(CBA)であれば“100”(BAC)に変更し、“001”(BCA)であれば“010”(CAB)に変更する。
前述のようにLRUステータスの情報を更新した後、ステップS107に進む。
<a2>一致したアドレスを持つバッファが2rdバッファであり、かつ3rdバッファのエンプティビットEの値が“1”であった場合には、LRUステータスの情報を変更しない。
<a3>一致したアドレスを持つバッファが2rdバッファであり、かつ3rdバッファのエンプティビットEの値が“0”であった場合には、2rdバッファと3rdバッファを入れ替えるようにLRUステータスの情報を変更する。例えば、変更前のLRUステータスが“000”(CBA)であれば“010”(CAB)に変更し、“001”(BCA)であれば“100”(BAC)に変更する。
<a4>一致したアドレスを持つバッファが1stバッファであり、かつ2ndバッファ及び3rdバッファのエンプティビットEの値がともに“1”であった場合には、LRUステータスの情報を変更しない。
<a5>一致したアドレスを持つバッファが1stバッファであり、かつ2rdバッファのエンプティビットEの値が“0”で3rdバッファのエンプティビットEの値が“1”であった場合には、1stバッファと2ndバッファを入れ替えるようにLRUステータスの情報を変更する。例えば、変更前のLRUステータスが“000”(CBA)であれば“001”(BCA)に変更し、“010”(CAB)であれば“011”(ACB)に変更する。
<a6>一致したアドレスを持つバッファが1stバッファであり、かつ2ndバッファ及び3rdバッファのエンプティビットEの値がともに“0”であった場合には、1stバッファを3rdバッファに、2ndバッファを1stバッファに、3rdバッファを2ndバッファにする、すなわち回転させるようにLRUステータスの情報を変更する。例えば、変更前のLRUステータスが“000”(CBA)であれば“100”(BAC)に変更し、“001”(BCA)であれば“010”(CAB)に変更する。
前述のようにLRUステータスの情報を更新した後、ステップS107に進む。
このようにして、LRUステータスコントローラ103は、キャッシュメモリ12からのデータが書き込まれたバッファを最終段へ論理的に移動する。ここで、CPUが処理を実行する際にアクセスするデータのアドレスは局所性を有することが多い。したがって、キャッシュメモリ12からのデータが書き込まれたバッファを最終段へ論理的に移動することで、再びアクセスする可能性が高いアドレスのデータについてメインメモリ30への書き込みが実行されるまでの時間を延ばすことできる。これにより、CPUでのキャッシュミスの発生を低減することが可能になり、スヌープ要求としてのコヒーレントリード要求の発生頻度を軽減し性能の向上を図ることが可能になる。
また、ステップS102での判定の結果、アドレスが一致するバッファがない場合には(S102のNO)、LRUステータスコントローラ103は、エンプティビットEの値が“1”である(空き状態である)バッファがあるか否かを判定する(S105)。判定の結果、エンプティビットEの値が“1”であるバッファがない、すなわちすべてのバッファのエンプティビットEの値が“0”である場合には(S105のNO)、バッファへの書き込みが待たされる。
一方、エンプティビットEの値が“1”であるバッファがある場合には(S105のYES)、LRUステータスコントローラ103は、LRUステータスに従ってバッファにアドレス及びデータを書き込むようライトコントローラ104に指示する。ライトコントローラ104は、指示されたバッファ、すなわちエンプティビットEの値が“1”であるバッファのうち、更新からの時間が最も経過しているバッファにアドレスAddr及びデータDataを書き込み、そのエンプティビットE及びスヌープビットSの値を“0”にする(S106)。そして、ステップS107に進む。
ステップS107にて、バッファ制御部101は、書き込み要求されたデータとともにキャッシュメモリ12に格納されているステータス情報を参照し、このデータが他のCPUと共有されているか否かを判断する。その結果、他のCPUとデータが共有されている場合には(S107のYES)、バッファ制御部101は、他のCPUに対してキャッシュデータの無効化を要求するインバリデイト要求を発行する(S108)。以上のようにして、ライトバッファ14への書き込み処理を終了する。
次に、ライトバッファ14からメインメモリ30への書き込み処理について説明する。ライトバッファ14からメインメモリ30への書き込み処理では、まずメインメモリ30への書き込みが可能であることを確認した後、バッファ制御部101は、バスBUSを介してメモリコントローラ20に書き込み要求を発行する。また、バッファ制御部101の出力及びLRUステータスコントローラ103の出力に基づいて、リード選択部105及びバッファセレクタ108により、1stバッファに格納されているアドレス及びデータが読み出されメモリコントローラ20に転送される。メモリコントローラ20は、そのアドレス及びデータを受けてメインメモリ30の該当するアドレスの領域にデータを書き込み、書き込みが完了すると書き込み完了通知を発行する。
そして、ライトコントローラ104は、1stバッファのエンプティビットの値を“1”にする。このとき、1stバッファのスヌープビットの値が“1”であった場合には、キャッシュコントローラ13にデータの書き込み完了を示す情報を出力する。この情報を受けたキャッシュコントローラ13は、他のCPUとデータを共有していることを示すようにキャッシュメモリ12のステータス情報を変更する。このように本実施形態では、他のCPUからの要求によりコヒーレントリードされたデータに関し、要求を受けたときにキャッシュメモリ12に対してアクセスを行うのではなく、メインメモリ30への書き込みが完了したときにキャッシュメモリ12に対してアクセスを行う。これにより、CPUコア11からキャッシュメモリ12へのアクセスが阻害されることを緩和し性能の向上を図ることができる。
また、LRUステータスコントローラ103は、1stバッファを3rdバッファに、2ndバッファを1stバッファに、3rdバッファを2ndバッファにする、すなわち回転させるようにLRUステータスの情報を変更する。例えば、変更前のLRUステータスが“000”(CBA)であれば“100”(BAC)に変更し、“001”(BCA)であれば“010”(CAB)に変更する。なお、1stバッファのエンプティビットの値が“1”である場合には、前述したメインメモリ30への書き込み処理は行われない。
次に、スヌープ要求を受けたときの処理について説明する。図5は、本実施形態におけるスヌープ要求に係る処理の例を示すフローチャートである。CPUは、アクセス要求されたデータが自CPUのキャッシュメモリに存在せずにキャッシュミスが生じると、他のCPUのキャッシュメモリに対するスヌープ要求としてのコヒーレントリード要求を発行する。このスヌープ要求(コヒーレントリード要求)を受けたCPUでは、エンプティビットEの値が“1”でない(空き状態でない)バッファに記憶されているアドレスと、スヌープ要求のアドレスとが、比較器107A、107B、107Cによって比較され、その結果がLRUステータスコントローラ103に出力される(S201)。
次に、LRUステータスコントローラ103は、比較器107A、107B、107Cの出力に基づき、アドレスが一致したバッファがあるか否かを判定する(S202)。判定の結果、アドレスが一致したバッファがあればステップS203に進み、なければその旨を応答として返し処理を終了し、キャッシュメモリへコヒーレントリードを実行する(S205)。ステップS203にて、CPUは、バッファ制御部101の出力及びLRUステータスコントローラ103の出力に基づいて、リード選択部105及びバッファセレクタ108により、一致したアドレスを持つバッファのデータを要求元のCPUに送信する。そして、ライトコントローラ104は、一致したアドレスを持つバッファのスヌープビットSの値を“1”にする。
また、LRUステータスコントローラ103は、一致したアドレスを持つバッファが、最終段のバッファ(最新のバッファ)となるようにLRUステータスを更新する(S204)。つまり、LRUステータスコントローラ103は、一致したアドレスを持つバッファを最終段へ論理的に移動させるように、下記<b1>〜<b6>のようにLRUステータスの情報を変更する。
<b1>一致したアドレスを持つバッファが3rdバッファであった場合には、LRUステータスの情報を変更しない。
<b2>一致したアドレスを持つバッファが2rdバッファであり、かつ3rdバッファのエンプティビットEの値が“1”であった場合には、LRUステータスの情報を変更しない。
<b3>一致したアドレスを持つバッファが2rdバッファであり、かつ3rdバッファのエンプティビットEの値が“0”であった場合には、2rdバッファと3rdバッファを入れ替えるようにLRUステータスの情報を変更する。例えば、変更前のLRUステータスが“000”(CBA)であれば“010”(CAB)に変更し、“001”(BCA)であれば“100”(BAC)に変更する。
<b4>一致したアドレスを持つバッファが1stバッファであり、かつ2ndバッファ及び3rdバッファのエンプティビットEの値がともに“1”であった場合には、LRUステータスの情報を変更しない。
<b5>一致したアドレスを持つバッファが1stバッファであり、かつ2rdバッファのエンプティビットEの値が“0”で3rdバッファのエンプティビットEの値が“1”であった場合には、1stバッファと2ndバッファを入れ替えるようにLRUステータスの情報を変更する。例えば、変更前のLRUステータスが“000”(CBA)であれば“001”(BCA)に変更し、“010”(CAB)であれば“011”(ACB)に変更する。
<b6>一致したアドレスを持つバッファが1stバッファであり、かつ2ndバッファ及び3rdバッファのエンプティビットEの値がともに“0”であった場合には、1stバッファを3rdバッファに、2ndバッファを1stバッファに、3rdバッファを2ndバッファにする、すなわち回転させるようにLRUステータスの情報を変更する。例えば、変更前のLRUステータスが“000”(CBA)であれば“100”(BAC)に変更し、“001”(BCA)であれば“010”(CAB)に変更する。
前述のようにLRUステータスの情報を更新した後、処理を終了する。なお、キャッシュミスが生じたことによりCPUが他のCPUのキャッシュメモリに対するスヌープ要求としてのコヒーレントリード要求を発行しても、すべての他のCPUにも所望のデータが存在しない場合には、メインメモリ30へのアクセスを行いデータを読み出す。
<b2>一致したアドレスを持つバッファが2rdバッファであり、かつ3rdバッファのエンプティビットEの値が“1”であった場合には、LRUステータスの情報を変更しない。
<b3>一致したアドレスを持つバッファが2rdバッファであり、かつ3rdバッファのエンプティビットEの値が“0”であった場合には、2rdバッファと3rdバッファを入れ替えるようにLRUステータスの情報を変更する。例えば、変更前のLRUステータスが“000”(CBA)であれば“010”(CAB)に変更し、“001”(BCA)であれば“100”(BAC)に変更する。
<b4>一致したアドレスを持つバッファが1stバッファであり、かつ2ndバッファ及び3rdバッファのエンプティビットEの値がともに“1”であった場合には、LRUステータスの情報を変更しない。
<b5>一致したアドレスを持つバッファが1stバッファであり、かつ2rdバッファのエンプティビットEの値が“0”で3rdバッファのエンプティビットEの値が“1”であった場合には、1stバッファと2ndバッファを入れ替えるようにLRUステータスの情報を変更する。例えば、変更前のLRUステータスが“000”(CBA)であれば“001”(BCA)に変更し、“010”(CAB)であれば“011”(ACB)に変更する。
<b6>一致したアドレスを持つバッファが1stバッファであり、かつ2ndバッファ及び3rdバッファのエンプティビットEの値がともに“0”であった場合には、1stバッファを3rdバッファに、2ndバッファを1stバッファに、3rdバッファを2ndバッファにする、すなわち回転させるようにLRUステータスの情報を変更する。例えば、変更前のLRUステータスが“000”(CBA)であれば“100”(BAC)に変更し、“001”(BCA)であれば“010”(CAB)に変更する。
前述のようにLRUステータスの情報を更新した後、処理を終了する。なお、キャッシュミスが生じたことによりCPUが他のCPUのキャッシュメモリに対するスヌープ要求としてのコヒーレントリード要求を発行しても、すべての他のCPUにも所望のデータが存在しない場合には、メインメモリ30へのアクセスを行いデータを読み出す。
本実施形態によれば、ライトバッファ14内でのデータ操作によりキャッシュデータの一貫性(キャッシュコヒーレンシ)を保つため、キャッシュメモリへのスヌープ動作を減らし、またメインメモリへの書き込み動作も減らすことができ、装置の性能向上に寄与する。なお、本実施形態では、ライトバッファ14が有する各段のバッファの更新状況をLRUアルゴリズムを用いて管理し制御するようにしているが、これに限定されるものではなく、他のアルゴリズム等を用いてバッファの更新状況を管理し制御するようにしても良い。
また、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
10 CPU
11 CPUコア
12 キャッシュメモリ
13 キャッシュコントローラ
14 ライトバッファ
15 ライトバッファコントローラ
16 キャッシュタグメモリ
17 キャッシュデータメモリ
20 メモリコントローラ
30 メインメモリ
101 バッファ制御部
102 アドレス選択部
103 LRUステータスコントローラ
104 ライトコントローラ
105 リード選択部
106 セレクタ
107 比較器
108 バッファセレクタ
BUS バス
11 CPUコア
12 キャッシュメモリ
13 キャッシュコントローラ
14 ライトバッファ
15 ライトバッファコントローラ
16 キャッシュタグメモリ
17 キャッシュデータメモリ
20 メモリコントローラ
30 メインメモリ
101 バッファ制御部
102 アドレス選択部
103 LRUステータスコントローラ
104 ライトコントローラ
105 リード選択部
106 セレクタ
107 比較器
108 バッファセレクタ
BUS バス
Claims (4)
- バスを介して1つの外部メモリにアクセスする複数の演算処理部を有し、
前記演算処理部は、
キャッシュメモリと、
前記キャッシュメモリに保持されたデータを用いて演算処理を行う処理部と、
前記キャッシュメモリと前記外部メモリとの間に設けられ、前記外部メモリに書き込むデータと書き込み先のアドレスとの組を保持する複数段のバッファを有するライトバッファと、
前記キャッシュメモリから前記ライトバッファへの書き込み時に、書き込み先のアドレスと前記バッファに格納されているアドレスとを比較し、一致したアドレスを持つバッファがある場合には、一致したアドレスを持つ前記バッファにデータを上書きするとともに、当該バッファを前記外部メモリに書き込むデータ及び書き込み先のアドレスが保持されている前記バッファのうちの最後段に移動する制御部とを有することを特徴とする演算処理装置。 - 前記バッファに保持しているデータの読み出し要求が他の演算処理部からあった場合には、前記キャッシュメモリに対してアクセスを行わずに、当該バッファのデータを供給するとともに他の演算処理部からの読み出しが行われたことを示す情報を当該バッファに保持し、
当該バッファのデータを前記外部メモリに書き込んだ後に前記キャッシュメモリに対してアクセスを行って情報を更新することを特徴とする請求項1記載の演算処理装置。 - 前記制御部は、前記バッファに保持しているデータの読み出し要求が他の演算処理部からあった場合には、当該バッファを前記外部メモリに書き込むデータ及び書き込み先のアドレスが保持されている前記バッファのうちの最後段に移動することを特徴とする請求項2記載の演算処理装置。
- キャッシュメモリと、前記キャッシュメモリに保持されたデータを用いて演算処理を行う処理部と、前記キャッシュメモリと前記外部メモリとの間に設けられ、前記外部メモリに書き込むデータと書き込み先のアドレスとの組を保持する複数段のバッファを有するライトバッファとをそれぞれ有する複数の演算処理部がバスを介して1つの外部メモリにアクセスする演算処理装置の制御方法であって、
前記演算処理部の制御部が、前記キャッシュメモリから前記ライトバッファへの書き込み時に、書き込み先のアドレスと前記バッファに格納されているアドレスとを比較し、
一致したアドレスを持つバッファがある場合には、前記演算処理部の制御部が、一致したアドレスを持つ前記バッファにデータを上書きするとともに、当該バッファを前記外部メモリに書き込むデータ及び書き込み先のアドレスが保持されている前記バッファのうちの最後段に移動することを特徴とする演算処理装置の制御方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013055470A JP2014182488A (ja) | 2013-03-18 | 2013-03-18 | 演算処理装置、及び演算処理装置の制御方法 |
EP20130198269 EP2782017A1 (en) | 2013-03-18 | 2013-12-19 | Arithmetic processing apparatus and control method of arithmetic processing apparatus |
US14/150,819 US9262122B2 (en) | 2013-03-18 | 2014-01-09 | Arithmetic processing apparatus and control method of arithmetic processing apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013055470A JP2014182488A (ja) | 2013-03-18 | 2013-03-18 | 演算処理装置、及び演算処理装置の制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2014182488A true JP2014182488A (ja) | 2014-09-29 |
Family
ID=49911238
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013055470A Pending JP2014182488A (ja) | 2013-03-18 | 2013-03-18 | 演算処理装置、及び演算処理装置の制御方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9262122B2 (ja) |
EP (1) | EP2782017A1 (ja) |
JP (1) | JP2014182488A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018152054A (ja) * | 2017-02-08 | 2018-09-27 | エイアールエム リミテッド | スヌープ要求への対応 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107291629B (zh) * | 2016-04-12 | 2020-12-25 | 华为技术有限公司 | 一种用于访问内存的方法和装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120047332A1 (en) * | 2010-08-20 | 2012-02-23 | Bannon Peter J | Combining Write Buffer with Dynamically Adjustable Flush Metrics |
US20120254507A1 (en) * | 2011-03-31 | 2012-10-04 | Jichuan Chang | Write-absorbing buffer for non-volatile memory |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS61237145A (ja) | 1985-04-15 | 1986-10-22 | Hitachi Ltd | ストアバツフアの制御方式 |
JPH0744459A (ja) | 1993-07-29 | 1995-02-14 | Matsushita Electric Ind Co Ltd | キャッシュ制御方法およびキャッシュ制御装置 |
US5745732A (en) * | 1994-11-15 | 1998-04-28 | Cherukuri; Ravikrishna V. | Computer system including system controller with a write buffer and plural read buffers for decoupled busses |
US5765196A (en) * | 1996-02-27 | 1998-06-09 | Sun Microsystems, Inc. | System and method for servicing copyback requests in a multiprocessor system with a shared memory |
US6038644A (en) | 1996-03-19 | 2000-03-14 | Hitachi, Ltd. | Multiprocessor system with partial broadcast capability of a cache coherent processing request |
JPH09311820A (ja) | 1996-03-19 | 1997-12-02 | Hitachi Ltd | マルチプロセッサシステム |
JP3269967B2 (ja) | 1996-04-24 | 2002-04-02 | 株式会社日立製作所 | キャッシュコヒーレンシ制御方法、および、これを用いたマルチプロセッサシステム |
JP3340047B2 (ja) | 1997-03-11 | 2002-10-28 | 株式会社日立製作所 | マルチプロセッサシステムおよび複製タグの制御方法 |
US6067608A (en) * | 1997-04-15 | 2000-05-23 | Bull Hn Information Systems Inc. | High performance mechanism for managing allocation of virtual memory buffers to virtual processes on a least recently used basis |
US6321300B1 (en) * | 1999-05-14 | 2001-11-20 | Rise Technology Company | Apparatus and method for dynamically reconfigurable timed flushing of a queue of coalescing write buffers |
US6401175B1 (en) * | 1999-10-01 | 2002-06-04 | Sun Microsystems, Inc. | Shared write buffer for use by multiple processor units |
US6851030B2 (en) * | 2002-10-16 | 2005-02-01 | International Business Machines Corporation | System and method for dynamically allocating associative resources |
-
2013
- 2013-03-18 JP JP2013055470A patent/JP2014182488A/ja active Pending
- 2013-12-19 EP EP20130198269 patent/EP2782017A1/en active Pending
-
2014
- 2014-01-09 US US14/150,819 patent/US9262122B2/en not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120047332A1 (en) * | 2010-08-20 | 2012-02-23 | Bannon Peter J | Combining Write Buffer with Dynamically Adjustable Flush Metrics |
US20120254507A1 (en) * | 2011-03-31 | 2012-10-04 | Jichuan Chang | Write-absorbing buffer for non-volatile memory |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018152054A (ja) * | 2017-02-08 | 2018-09-27 | エイアールエム リミテッド | スヌープ要求への対応 |
JP7328742B2 (ja) | 2017-02-08 | 2023-08-17 | アーム・リミテッド | スヌープ要求への対応 |
Also Published As
Publication number | Publication date |
---|---|
US20140281059A1 (en) | 2014-09-18 |
US9262122B2 (en) | 2016-02-16 |
EP2782017A1 (en) | 2014-09-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2839379B1 (en) | A write-only dataless state for maintaining cache coherency | |
KR101639672B1 (ko) | 무한 트랜잭션 메모리 시스템 및 그 동작 방법 | |
US8185695B2 (en) | Snoop filtering mechanism | |
JP5445581B2 (ja) | コンピュータシステム、制御方法、記録媒体及び制御プログラム | |
US20110173393A1 (en) | Cache memory, memory system, and control method therefor | |
TWI408550B (zh) | 對資料處理設備中共用記憶體之寫入存取請求之處理 | |
JP5536658B2 (ja) | バッファメモリ装置、メモリシステム及びデータ転送方法 | |
US9418016B2 (en) | Method and apparatus for optimizing the usage of cache memories | |
JP2010191638A (ja) | キャッシュ装置 | |
JP4673585B2 (ja) | メモリシステム制御装置およびメモリシステム制御方法 | |
US20090259813A1 (en) | Multi-processor system and method of controlling the multi-processor system | |
US20140297966A1 (en) | Operation processing apparatus, information processing apparatus and method of controlling information processing apparatus | |
US20110167223A1 (en) | Buffer memory device, memory system, and data reading method | |
US7779205B2 (en) | Coherent caching of local memory data | |
US9983994B2 (en) | Arithmetic processing device and method for controlling arithmetic processing device | |
JP2014182488A (ja) | 演算処理装置、及び演算処理装置の制御方法 | |
JP2006031710A (ja) | データ処理システム、方法およびキャッシュシステム | |
US20180276125A1 (en) | Processor | |
JP4904802B2 (ja) | キャッシュメモリ及びプロセッサ | |
JP5971036B2 (ja) | 演算処理装置及び演算処理装置の制御方法 | |
WO2012124034A1 (ja) | 演算処理装置及び演算処理装置の制御方法 | |
WO2010098152A1 (ja) | キャッシュメモリシステムおよびキャッシュメモリ制御方法 | |
JP2009223511A (ja) | キャッシュメモリシステム、データ処理装置および記憶装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20151007 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20160721 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20160816 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20170221 |