以下、図面を用いて実施形態を説明する。
図1は、一実施形態における情報処理装置100および演算処理装置200の例を示している。情報処理装置100は、演算処理装置200および記憶装置300を有する。例えば、情報処理装置100は、サーバやパーソナルコンピュータ等のコンピュータ装置であり、演算処理装置200は、CPU(Central Processing Unit)等のプロセッサである。
例えば、記憶装置300は、複数のDRAM(Dynamic Random Access Memory)が搭載されたDIMM(Dual Inline Memory Module)等のメモリモジュールである。記憶装置300は、演算処理装置200の演算処理部210が実行するプログラムや演算処理部210により処理されるデータを記憶する。なお、記憶装置300は、半導体メモリチップや半導体メモリコアの形態でもよい。
例えば、演算処理装置200および記憶装置300は、プリント基板上に搭載される。なお、演算処理装置200は、プロセッサチップまたはプロセッサコアでもよい。この場合、演算処理装置200および記憶装置300は、1つの半導体チップの上に搭載されてもよい。
演算処理装置200は、演算処理部210、要求保持部220(220a、220b)、調停部230、バッファ制御部240およびバッファ部250を有する。演算処理部210は、例えば、CPUコアであり、記憶装置300に対するアクセス要求REQを出力する。例えば、アクセス要求REQは、ロード命令およびストア命令等の演算処理部210で扱うデータの入出力要求と、演算処理部210が実行するプログラムのプリフェッチ命令とを含む。
要求保持部220a、220bの各々は、アクセス要求REQを保持する少なくとも1つの保持領域HLDを有する。なお、図1では、各要求保持部220a、220bが4個の保持領域HLDを有する例を示しているが、保持領域HLDの数は、4個に限定されない。要求保持部220aは、演算処理部210から出力されるアクセス要求REQのうち入出力要求を保持領域HLDに保持する。要求保持部220bは、演算処理部210から出力されるアクセス要求REQのうちプリフェッチ命令を保持領域HLDに保持する。
データの入出力要求およびプログラムのプリフェッチ命令は、アクセス要求REQの種別であるアクセス種別の一例である。換言すれば、演算処理部210は、アクセス種別毎に、アクセス要求REQを要求保持部220a、220bにそれぞれ出力し、要求保持部220a、220bは、アクセス種別毎にアクセス要求REQを保持する。
調停部230は、要求保持部220a、220bに保持されたアクセス要求REQを調停し、記憶装置300に出力するアクセス要求REQを選択する。例えば、調停部230は、ラウンドロビン等の手法を用いて、要求保持部220a、220bに保持されたアクセス要求REQを順次に選択する。そして、調停部230は、例えば、データを保持するバッファ部250内のエントリENTがアクセス要求REQに対応して確保されたことに基づいて、アクセス要求REQを記憶装置300に出力する。
バッファ部250は、アクセス要求REQに基づいて記憶装置300から読み出されるデータを保持する複数のエントリENTを有する。図1において、太い破線は、データが転送されるデータ線を示している。なお、図1では、バッファ部250が8個のエントリENTを有する例を示しているが、エントリENTの数は、8個に限定されない。
この実施形態では、アクセス要求REQに基づいて記憶装置300から読み出されるデータを保持するエントリENTの数の最大値が、要求保持部220a、220b毎に予め決められる。例えば、エントリENTの数が8個の場合、要求保持部220a、220bからのアクセス要求REQに対応するエントリENTの割り当て数の最大値は、それぞれ7個以下である。
エントリENTの割り当て数の最大値は、1つの要求保持部220を除く他の要求保持部220に対応するエントリENTの割り当て数の最大値の合計が、エントリENTの総数より少なくなるように設定される。例えば、エントリENTの数が8個で、演算処理装置200が4つの要求保持部220を有する場合、3つの要求保持部220に対応するエントリENTの割り当て数の最大値の合計は、7個以下に設定される。これにより、1つの要求保持部220を除く残りの要求保持部220に対応して、割り当て可能な最大数のエントリENTが確保される場合にも、1つの要求保持部220からのアクセス要求REQに対応するエントリENTを確保できる。
バッファ制御部240は、要求保持部220a、220bに対応して確保されたエントリENTの数をそれぞれ計数して、計数値として保持する。バッファ制御部240は、各要求保持部220a、220bに対応する計数値が、エントリENTの割り当て数の最大値未満の場合、対応する要求保持部220からのアクセス要求REQの調停部230による選択に基づいてエントリENTを確保する。バッファ制御部240は、各要求保持部220a、220bに対応する計数値が、エントリENTの割り当て数の最大値以上場合、対応する要求保持部220からのアクセス要求REQが調停部230により選択された場合にも、エントリENTを確保しない。
すなわち、バッファ制御部240は、複数のエントリENTのうちデータを保持するエントリENTをアクセス種別毎に計数した計数値と、アクセス種別毎にデータを保持させるエントリENTの最大値とをアクセス種別毎に比較する。そして、バッファ制御部240は、比較結果に基づいて、調停部230が調停したアクセス要求REQに応じて、記憶装置300が出力したデータをエントリENTのいずれかに保持させる。
これにより、特定の要求保持部220にアクセス要求REQが集中する場合にも、要求保持部220毎に少なくとも1つのエントリENTが確保されることを保証できる。換言すれば、要求保持部220毎に、所定の頻度でアクセス要求REQが受け付けられることを保証できる。この結果、演算処理装置200および情報処理装置100の性能が、特定のアクセス要求REQが受け付けられないことに起因して低下することなない。
図2は、図1に示した情報処理装置100および演算処理装置200の動作の例を示している。すなわち、図2は、情報処理装置100および演算処理装置200の制御方法の例を示している。図2に示したフローは、例えば、ハードウエアにより実現される。なお、図2は、アクセス要求REQ毎の動作および要求保持部220毎の動作を示している。
まず、ステップS10において、演算処理部210は、アクセス要求REQを対応する要求保持部220に出力する。ステップS12において、要求保持部220は、アクセス要求REQを保持領域HLDに格納する。なお、例えば、演算処理部210は、保持領域HLDが空いた場合にアクセス要求REQを要求保持部220に出力し、全ての保持領域HLDにアクセス要求REQが格納された場合、アクセス要求REQの出力を保留する。
ステップS14において、調停部230は、要求保持部220に保持されたアクセス要求REQの1つを選択する。なお、調停部230により選択された要求保持部220の保持領域HLDにアクセス要求REQが保持されていない場合、調停部230は、次の要求保持部220に保持されたアクセス要求REQを選択する。
調停部230によりアクセス要求REQが選択された場合、ステップS16において、バッファ制御部240は、アクセス要求REQを保持した要求保持部220に対応して確保されたエントリENTの数Nと、当該要求保持部220に対応するエントリENTの割り当て数の最大値MAXとを比較する。確保された数Nが最大値MAXの場合、エントリENTが確保されないため、アクセス要求REQはアボートされ、調停部230により別のアクセス要求REQが選択される。ここで、アボートとは、アクセス要求REQに対応するデータが演算処理部210に転送されない状態である。アクセス要求REQがアボートされた場合、アクセス要求REQは記憶装置300に出力されず、要求保持部220はアクセス要求REQを保持し続ける。
確保された数Nが最大値MAX未満の場合、ステップS18において、バッファ制御部240は、空きのエントリENT(すなわち、確保されていないエントリENT)があるかどうかをチェックする。エントリENTに空きがない場合、アクセス要求REQはアボートされ、調停部230により別のアクセス要求REQが選択される。
エントリENTに空きがある場合、ステップS20において、バッファ制御部240は、調停部230により選択されたアクセス要求REQに対応して記憶装置300から読み出されるデータを格納するためのエントリENTを確保する。エントリENTの確保により、選択されたアクセス要求REQを保持した要求保持部220に対応するエントリENTの数Nが”1”増加される。
ステップS22において、調停部230は、エントリENTの確保に基づいて、アクセス要求REQを記憶装置300に出力する。記憶装置300は、アクセス要求REQに基づいて読み出し動作を実行し、メモリセルから読み出されるデータをバッファ部250に出力する。バッファ部250は、記憶装置300から出力されるデータを、ステップS20で確保されたエントリENTに格納する。
ステップS24において、バッファ部250は、エントリENTに格納したデータを演算処理部210に出力する。エントリENTからのデータの出力に伴い、選択されたアクセス要求REQを保持した要求保持部220に対応するエントリENTの数Nが”1”減少される。なお、要求保持部220に保持されたアクセス要求REQは、エントリENTの確保に基づいて無効にされ、あるいは、バッファ部250から演算処理部210へのデータの出力に基づいて無効にされる。
以上、この実施形態では、エントリENTの割り当て数の最大値を、要求保持部220a、220b毎に設定することで、各要求保持部220a、220bに対応して少なくとも1つのエントリENTを確保できる。これにより、調停部230は、各要求保持部220a、220bに保持されたアクセス要求REQを所定の頻度で受け付け、記憶装置300に出力できる。この結果、特定のアクセス要求REQがアボートされ続ける可能性を従来に比べて低くでき、アボートにより演算処理部210がハングアップする可能性を従来に比べて低くできる。すなわち、アボートに起因する情報処理装置100および演算処理装置200の性能の低下を抑制できる。
図3は、別の実施形態における情報処理装置100Aおよび演算処理装置200Aの例を示している。図1と同様または同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。この実施形態では、演算処理装置200Aは、図1に示したバッファ制御部240およびバッファ部250の代わりに、バッファ制御部240Aおよびバッファ部250Aを有する。また、演算処理装置200Aは、図1に示した要素に加えて、キャッシュメモリ制御部260Aおよびキャッシュメモリ部270Aを有する。演算処理装置200Aのその他の構成は、図1と同様である。
キャッシュメモリ制御部260Aは、調停部230から出力されるアクセス要求REQに対応するデータがキャッシュメモリ部270Aに存在するかどうかをチェックする。アクセス要求REQに対応するデータがキャッシュメモリ部270Aに存在する場合(キャッシュヒット)、キャッシュメモリ制御部260Aは、記憶装置300にアクセス要求REQを出力せず、キャッシュメモリ部270Aからデータを読み出す。キャッシュメモリ部270Aから読み出されたデータは、演算処理部210に出力される。
アクセス要求REQに対応するデータがキャッシュメモリ部270Aに存在しない場合(キャッシュミス)、キャッシュメモリ制御部260Aは、バッファ制御部240AにエントリENTの確保を要求する。なお、キャッシュヒットの場合、バッファ制御部240Aは、バッファ部250AのエントリENTを確保しない。バッファ制御部240Aの機能は、キャッシュミス時にエントリENTを確保し、キャッシュヒット時にエントリENTを確保しないことを除き、図1に示したバッファ制御部240と同様である。
アクセス要求REQに対応するデータがキャッシュメモリ部270Aに格納されていない場合(キャッシュミス)、キャッシュメモリ制御部260Aは、バッファ部250AのエントリENTが確保されたことに基づいて、記憶装置300にアクセス要求REQを出力する。エントリENTが確保されない場合、アクセス要求REQは記憶装置300に出力されず、アクセス要求REQはアボートされる。
バッファ部250Aは、図1に示したバッファ部250の機能に加えて、エントリENTに格納したデータをキャッシュメモリ部270Aに出力する機能を有する。すなわち、キャッシュミスの場合、記憶装置300から読み出され、エントリENTに格納されたデータは、演算処理部装置210に出力されるとともに、キャッシュメモリ部270Aに格納される。
図4は、図3に示した情報処理装置100Aおよび演算処理装置200Aの動作の例を示している。すなわち、図4は、情報処理装置100Aおよび演算処理装置200Aの制御方法の例を示している。図2と同様または同一の動作については、同一の符号を付し、詳細な説明を省略する。図4に示したフローは、例えば、ハードウエアにより実現される。なお、図4は、アクセス要求REQ毎の動作および要求保持部220毎の動作を示している。
この実施形態では、図2に示したステップS24の代わりに、ステップS25が実行される。また、図2の動作フローに加えて、ステップS15、S26、S28が追加される。ステップS15は、ステップS14、S16の間に配置される。ステップS10、S12、S14、S16、S18、S20、S22、S24の動作は、図2と同様である。
ステップS15において、キャッシュメモリ制御部260Aは、キャッシュミス/キャッシュヒットを判定する。キャッシュミスの場合、ステップS16が実行され、キャッシュヒットの場合、ステップS26が実行される。
ステップS26において、キャッシュメモリ制御部260Aは、調停部230からのアクセス要求REQに基づいて、キャッシュメモリ部270Aからデータを読み出す。次に、ステップS28において、キャッシュメモリ制御部260Aは、キャッシュメモリ部270Aから読み出したデータを、演算処理部210に出力する。なお、アクセス要求REQがプリフェッチ命令の場合、ステップS26、S28の実行はマスクされてもよい。すなわち、プリフェッチ命令では、データ(プログラム)は、キャッシュメモリ部270Aから演算処理部210に転送されなくてもよい。
一方、キャッシュミスが判定され、ステップS16、S18、S20を経て新たなエントリENTが確保された場合、ステップS22により、記憶装置300から読み出されたデータは、新たに確保されたエントリENTに格納される。そして、ステップS25において、記憶装置300から読み出されたデータは、演算処理装置200Aに出力されるとともに、キャッシュメモリ部270Aに格納される。但し、プリフェッチ命令に基づいて記憶装置300からデータ(プログラム)が読み出された場合、ステップS28と同様に、演算処理部210へのデータの出力はマスクされてもよい。
以上、この実施形態では、キャッシュメモリ制御部260Aを有する演算処理装置200Aおよび情報処理装置100Aにおいて、図1、図2に示した実施形態と同様に、各要求保持部220a、220bに対応して少なくとも1つのエントリENTを確保できる。この結果、特定のアクセス要求REQがアボートされ続ける可能性を従来に比べて低くでき、アボートにより演算処理部210がハングアップする可能性を従来に比べて低くできる。
図5は、別の実施形態における情報処理装置100Cおよび演算処理装置200Cの例を示している。図1および図3と同様または同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。
情報処理装置100Cは、演算処理装置200Cおよび記憶装置300を有する。例えば、情報処理装置100Cは、サーバやパーソナルコンピュータ等のコンピュータ装置であり、演算処理装置200Cは、CPU等のプロセッサである。
演算処理装置200Cは、8個のコア部CORE(CORE0、CORE1、...、CORE7)、ポートPT(RDP1、RDP2、STP1、STP2、PFP1、PFP2)、調停部230C、キャッシュメモリ制御部260C、バッファ制御部240C、バッファ部250C、L2キャッシュメモリ270Cおよびメモリアクセスコントローラ280Cを有する。図5において、二点鎖線で囲った領域は、L2キャッシュ部202Cを示している。すなわち、L2キャッシュ部202Cは、ポートPT、調停部230C、キャッシュメモリ制御部260C、バッファ制御部240C、バッファ部250CおよびL2キャッシュメモリ270Cを有する。
各コア部COREは、例えば、符号L1で示したL1キャッシュ部を含むCPUコアであり、記憶装置300に対するアクセス要求REQを出力する。アクセス要求REQは、ロード命令およびストア命令等の演算処理部210で扱うデータの入出力要求と、各コア部COREが実行するプログラムのプリフェッチ命令とを含む。コア部COREは、演算処理部の一例である。なお、コア部COREの数は、8個に限定されず、演算処理装置200Cは、少なくとも1つのコア部COREを有していればよい。
ロード命令は、L1キャッシュ部内のL1キャッシュメモリ、L2キャッシュメモリ270Cまたは記憶装置300から読み出されるデータを、コア部COREのレジスタに格納する命令である。L1キャッシュ部は、ロード命令に対応するデータがL1キャッシュメモリにない場合(キャッシュミス)、L2キャッシュ部202Cにロード命令を出力する。ストア命令は、コア部COREにより処理されたデータをL1キャッシュメモリに格納する命令である。L1キャッシュ部は、ストア命令に対応するデータの領域を含むキャッシュラインがL1キャッシュメモリに確保されていない場合(キャッシュミス)、L2キャッシュ部202Cにストア命令を出力する。L1キャッシュ部からストア命令を受けたL2キャッシュ部202Cは、ストア命令に対応するデータ(キャッシュライン)をL2キャッシュメモリ270Cまたは記憶装置300から読み出し、読み出したデータをL1キャッシュ部に出力する。このように、L2キャッシュ部202Cで受けるロード命令およびストア命令は、L2キャッシュメモリ270Cまたは記憶装置300からデータを読み出す命令である。例えば、L1キャッシュメモリは、ロード命令およびストア命令に対応するデータを格納するデータキャッシュと、プリフェッチ命令に対応するプログラムを格納する命令キャッシュとを有する。
例えば、ポートRDP1、STP1、PFP1は、コア部CORE0、CORE1、CORE2、CORE3から出力されるアクセス要求REQを保持する。ポートRDP2、STP2、PFP2は、コア部CORE4、CORE5、CORE6、CORE7から出力されるアクセス要求REQを保持する。ポートRDP1、RDP2、STP1、STP2、PFP1、PFP2は、要求保持部の一例である。
ポートRDP(RDP1、RDP2)は、ロード命令を保持し、ポートSTP(STP1、STP2)は、ストア命令を保持する。ポートPFP(PFP1、PFP2)は、プリフェッチ命令を保持する。換言すれば、各コア部COREは、アクセス要求REQをアクセス種別毎にポートRDP、STP、PFPのいずれかに出力する。ロード命令、ストア命令およびプリフェッチ命令は、アクセス要求REQの種別であるアクセス種別の一例である。
ロード命令は、プログラムおよびデータをL1キャッシュメモリに格納する種別の命令である。ストア命令は、プログラムおよびデータをL1キャッシュメモリに格納する種別の命令である。ロード命令もストア命令もL2キャッシュ部202Cの処理は互いに同様であるが、ストア命令はL1キャッシュメモリへ格納された後にライトバックすることを目的としており、コア部COREからみると処理が異なる。プリフェッチ命令は、将来の使用が予測されるプログラムおよびデータをL2キャッシュメモリ270Cに格納する種別の命令である。
この実施形態では、各ポートPTは、アクセス要求REQを保持する4つの保持領域を有するが、保持領域HLDの数は、4つに限定されない。各ポートPTは、保持したアクセス要求REQを、調停部230Cに出力する。ポートRDP1、RDP2、STP1、STP2、PFP1、PFP2の例は、図6に示す。
調停部230Cは、図1に示した調停部230と同様に、ポートPTにそれぞれ保持されたアクセス要求REQを調停し、調停により選択したアクセス要求REQをキャッシュメモリ制御部260Cに出力する。例えば、調停部230Cは、ラウンドロビン等の手法を用いて、ポートRDP1、RDP2、STP1、STP2、PFP1、PFP2に保持されたアクセス要求REQを順次に選択する。
バッファ部250Cは、記憶装置300から読み出されるデータを保持する16個のエントリENTを有する。なお、エントリENTの数は、16個に限定されず、複数であればよい。各ポートRDP1、RDP2、STP1、STP2、PFP1、PFP2に対応して割り当てられるエントリENTの数の最大値MAXの例は、図7に示す。
バッファ制御部240Cは、保持回路241、計数回路242および比較回路243を有する。保持回路241は、各ポートRDP1、RDP2、STP1、STP2、PFP1、PFP2のそれぞれに対応して割り当て可能なエントリENTの数の最大値MAXを保持する。すなわち、保持回路241は、最大値MAXをアクセス種別毎に保持する。
計数回路242は、各ポートRDP1、RDP2、STP1、STP2、PFP1、PFP2に対応して確保されたエントリENTの数を計数して、計数値N(図8のN0−N5)として保持する。すなわち、計数回路242は、アクセス種別毎に計数値Nを求めて保持する。
比較回路243は、ポートRDP1、RDP2、STP1、STP2、PFP1、PFP2毎に、計数値Nと最大値MAXとを比較する。すなわち、比較回路243は、アクセス種別毎に計数値Nと最大値MAXとを比較する。そして、バッファ制御部240Cは、キャッシュメモリ制御部260CによりL2キャッシュメモリ270Cのキャッシュミスが判定された場合、比較回路243での比較結果に基づいて、エントリENTを確保するか否かを決定する。
例えば、バッファ制御部240Cは、計数値Nが最大値MAX未満で、バッファ部250CのエントリENTに空きがある場合に、キャッシュメモリ制御部260Cからの指示に基づいて新たなエントリENTを確保する。バッファ制御部240Cは、エントリENTの確保に基づいて、キャッシュメモリ制御部260Cにアクセス許可信号AENを出力する。バッファ制御部240Cは、計数値Nが最大値MAXのときに、新たなエントリENTを確保せず、アクセス許可信号AENを出力しない。
また、バッファ制御部240Cは、メモリアクセスコントローラ280Cを介して記憶装置300から読み出されたデータがエントリENTに格納された場合、格納されたデータを、アクセス要求REQを発行したコア部COREとL2キャッシュメモリ270Cとに転送する。バッファ制御部240Cの例は、図8に示す。
キャッシュメモリ制御部260Cは、L2キャッシュメモリ270Cのキャッシュヒットを判定した場合、アクセス要求REQに対応するデータをL2キャッシュメモリ270Cから読み出す。L2キャッシュメモリ270Cから読み出されたデータは、アクセス要求REQを発行したコア部COREに出力される。
キャッシュメモリ制御部260Cは、L2キャッシュメモリ270Cのキャッシュミスを判定した場合、バッファ制御部240CにエントリENTの確保を要求する。そして、キャッシュメモリ制御部260Cは、バッファ制御部240Cからのアクセス許可信号AENに応答して、調停部230Cから受けたアクセス要求REQをメモリアクセスコントローラ280Cに出力する。キャッシュメモリ制御部260Cは、L2キャッシュメモリ270Cのキャッシュミスを判定した場合で、アクセス許可信号AENを受けない場合、すなわち、エントリENTが確保されない場合、アクセス要求REQをメモリアクセスコントローラ280Cに出力しない。これにより、アクセス要求REQはアボートされる。
また、キャッシュメモリ制御部260Cは、バッファ部250CまたはL2キャッシュメモリ270Cからコア部COREにデータが転送される場合に、アクセス要求REQの完了応答FINを、アクセス要求REQを発行したコア部COREに出力する。さらに、キャッシュメモリ制御部260Cは、バッファ部250CまたはL2キャッシュメモリ270Cからコア部COREにデータが転送される場合に、リセット信号RSTをアクセス要求REQを出力したポートPTに出力する。リセット信号RSTを受けたポートPTは、対応するアクセス要求REQを無効にする。
メモリアクセスコントローラ280Cは、キャッシュメモリ制御部260Cからのアクセス要求REQに基づいて、記憶装置300に読み出し動作を実行させるアクセス信号(読み出し要求)を記憶装置300に出力する。メモリアクセスコントローラ280Cは、記憶装置300から読み出されるデータをバッファ部250Cに出力する。
また、メモリアクセスコントローラ280Cは、記憶装置300に書き込み動作を実行させるアクセス信号(書き込み要求)を書き込みデータとともに記憶装置300に出力する機能を有する。書き込み要求は、L2キャッシュメモリ270Cに記憶されたデータを記憶装置300に書き戻す場合に生成される。なお、書き込み要求は、図5に示していない別のポートを介して調停部230Cにより選択される。書き込み要求に対応して記憶装置300に書き込まれるデータは、図5に示していない別のバッファ部を介してメモリアクセスコントローラ280Cに出力される。
なお、メモリアクセスコントローラ280Cは、演算処理装置200Cの外部に配置されてもよい。また、キャッシュメモリ制御部260Cが記憶装置300のアクセスを制御する機能を有する場合、記憶装置300は、メモリアクセスコントローラ280Cを介することなくキャッシュメモリ制御部260Cに接続される。すなわち、この場合、演算処理装置200Cは、メモリアクセスコントローラ280Cを持たない。以降の実施形態でも同様に、演算処理装置200D、200E、200F、200G、200Hは、メモリアクセスコントローラ280Cを持たない場合もある。
図6は、図5に示したポートRDP1、RDP2、STP1、STP2、PFP1、PFP2の例を示している。各ポートRDP1、RDP2、STP1、STP2、PFP1、PFP2は、アクセス要求REQ毎に、データが格納された記憶装置300の記憶領域を示すアドレスが格納されるアドレス領域と、Validフラグとを保持する領域とを有する。Validフラグは、アドレス領域に格納されたアドレスが有効か無効かを示す。例えば、各アドレス領域は、32ビットであり、各Validフラグは1ビットである。
図5に示した各コア部COREは、アクセス要求REQを各ポートPTに出力する場合に、リセット状態のValidフラグに対応するアドレス領域にアクセス要求REQに含まれるアドレスを格納し、対応するValidフラグをセット状態にする。また、セット状態のValidフラグは、対応するリセット信号RSTをキャッシュメモリ270Cから受けたときにリセットされる。
図7は、図5に示したバッファ部250CのエントリENTの割り当ての例を示している。この実施形態では、バッファ部250Cは、16個のエントリENTを有する。また、ポートRDP1、RDP2、STP1、STP2、PFP1、PFP2が確保可能なエントリENTの数の最大値MAX(MAX0、MAX1、MAX2、MAX3、MAX4、MAX5)は、それぞれ3個に設定される。
エントリENTの割り当て数の最大値MAXは、1つのポートPTを除く他のポートPTに対応するエントリENTの割り当て数の最大値の合計(この例では、15個)が、エントリENTの総数(この例では、16個)より少なくなるように設定される。すなわち、複数のアクセス種別のうちの1つを除くアクセス種別にそれぞれ対応する最大値MAXの合計は、エントリENTの総数より少なく設定される。このため、ポートRDP1、RDP2、STP1、STP2、PFP1、PFP2が確保可能なエントリENTの数の最大値MAXは、例えば、3個、3個、2個、2個、4個、3個に設定されてもよい。
この実施形態では、調停部230Cによる調停により、例えば、ポートRDP1、RDP2、STP1、STP2、PFP1に対応して最大値である3個ずつのエントリENTが確保された場合にも、ポートPFP2用に1つのエントリENTを確保できる。これにより、全てのポートRDP1、RDP2、STP1、STP2、PFP1、PFP2に対応して少なくとも1つのエントリENTを確保することを保証できる。
なお、図7では、説明を分かりやすくするために、各ポートPTと、確保可能なエントリENTとを矢印で対応付けしている。しかし、図5に示した保持回路241に保持された値は、確保可能なエントリENTの数の最大値MAXを示し、確保可能なエントリENTの物理的な位置を示すものではない。図11、図14および図17に示す矢印も、図7と同様に、確保可能なエントリENTの物理的な位置を示すものではない。
図8は、図5に示したバッファ制御部240Cの例を示している。保持回路241は、各ポートRDP1、RDP2、STP1、STP2、PFP1、PFP2に対応して最大値MAXを保持する保持部HOLDを有する。計数回路242は、各ポートRDP1、RDP2、STP1、STP2、PFP1、PFP2に対応してカウンタCNT1を有する。比較回路243は、各ポートRDP1、RDP2、STP1、STP2、PFP1、PFP2に対応して比較器CMPを有する。また、バッファ制御部240Cは、各比較器CMPによる判定結果に基づいて、ポートRDP1、RDP2、STP1、STP2、PFP1、PFP2毎に割り当て信号ASGN(ASGN0、ASGN1、ASGN2、ASGN3、ASGN4、ASGN5)を出力する出力回路OUTを有する。
各保持部HOLDは、例えば、1、2、3のいずれかの値を記憶するROM(Read Only Memory)を含み、記憶した値を最大値MAX(MAX0、MAX1、MAX2、MAX3、MAX4、MAX5)として出力する。最大値MAX0−MAX5は2ビットの信号として出力される。ROMは、不揮発性メモリでもよく、ヒューズ回路でもよい。なお、各保持部HOLDは、最大値MAXを書き換え可能に保持するレジスタを含んでいてもよく、この場合、信号MAX0−MAX5の値は、情報処理装置100Cの仕様に応じて変更可能である。
カウンタCNT1は、互いに同一または同様の回路であるため、ここでは、ポートRDP1に対応するカウンタCNT1について説明する。カウンタCNT1は、開始信号START0の受信に応答して”+1”カウントアップし、終了信号END0の受信に応答して”−1”カウントダウンし、カウンタ値を計数値N0として出力する。計数値N0は、ポートRDP1に対応して確保されたエントリENTの数を示す。計数値N0は、最大値MAX0(=3)に対応して、”0”、”1”、”2”、”3”のいずれかであり、2ビットで表される。他のカウンタCNT1の計数値N1−N5は、対応するポートPTに対応して確保されたエントリENTの数を示す。
例えば、開始信号START0は、割り当て信号ASGN0に基づいて、ポートRDP1に保持されたアクセス要求REQに対応してエントリENTが確保された場合に生成される。開始信号START1−START5も、開始信号START0と同様に、割り当て信号ASGN1−ASGN5にそれぞれ基づいて、対応するポートPTに保持されたアクセス要求REQに対応してエントリENTが確保された場合に生成される。開始信号START0−START5は、例えば、パルス信号である。
例えば、終了信号END0は、ポートRDP1に保持されたアクセス要求REQに対応して、エントリENTに格納されたデータがコア部COREおよびL2キャッシュメモリ270Cに出力された場合に生成される。終了信号END1−END5も、終了信号END0と同様に、対応するポートPTに保持されたアクセス要求REQに対応して、エントリENTに格納されたデータがコア部COREおよびL2キャッシュメモリ270Cに出力された場合に生成される。終了信号END0−END5は、例えば、パルス信号である。
ポートRDP1に対応する比較器CMPは、計数値N0と最大値MAX0とが一致する場合にロウレベルを出力し、計数値N0と最大値MAX0とが不一致の場合にハイレベルを出力する。換言すれば、ポートRDP1に対応する比較器CMPは、計数値N0が”0”、”1”または”2”の場合にハイレベルを出力し、計数値N0が”3”の場合にロウレベルを出力する。
出力回路OUTは、エンプティ信号EMPおよび対応する比較器CMPの出力がともにハイレベルの場合に、ハイレベルの割り当て信号ASGN(ASGN0−ASGN5)を出力する。また、出力回路OUTは、エンプティ信号EMPまたは対応する比較器CMPの出力のいずれかがロウレベルの場合に、ロウレベルの割り当て信号ASGNを出力する。
バッファ制御部240Cは、空いたエントリENTがある場合にエンプティ信号EMPをハイレベルに設定し、空いたエントリENTがない場合にエンプティ信号EMPをロウレベルに設定する。このため、割り当て信号ASGNは、エントリENTの少なくとも1つが空いており、対応するポートPT用に確保されたエントリENTの数が最大値MAX未満の場合に、割り当て信号ASGNを出力する。そして、バッファ制御部240Cは、割り当て信号ASGN(ASGN0−ASGN5のいずれか)に基づいて、対応するポートPT用のエントリENTを新たに確保する。
図9は、図5に示した演算処理装置200Cの動作の例を示している。図9に示したフローは、例えば、ハードウエアにより実現される。図2および図4に示した動作と同一または同様の動作については、詳細な説明は省略する。なお、図9は、アクセス要求REQ毎の動作、コア部CORE毎の動作およびポートPT毎の動作を示している。
図9に示したL2キャッシュ部202Cの各ステップは、動作を分かりやすくするための区分けであり、実際には、L2キャッシュ部202Cのハードウエアが連動することにより、複数のステップが並列に実行されてもよい。ステップS44、S46、S48、S50、S52、S54、S56、S62、S64の動作は、図4に示したステップS14、S15、S16、S18、S20、S22、S25、S26、S28の動作と同様である。
各コア部COREは、ステップS30において、アクセス要求REQをアクセス種別に対応するポートPTに出力し、ステップS32において、ハングアップの検出用のタイマの動作を開始する。各コア部COREに内蔵されるタイマは、ハードウエアでもよくソフトウエアでもよい。なお、各コア部COREは、アクセス要求REQに対応するデータがL1キャッシュ部に格納されていない場合に、アクセス要求REQをL2キャッシュ部202Cに出力する。
各コア部COREは、ステップS34において、キャッシュメモリ制御部260Cからの完了応答FINの有無をチェックする。各コア部COREは、完了応答FINを受けた場合、ステップS38においてタイマを停止し、アクセス要求REQに対応する動作を完了する。各コア部COREは、完了応答FINを受けていない場合、ステップS36において、タイマの計数値に基づいて、所定時間が経過したか否かを判定する。
所定時間が経過していない場合、再びステップS34が実行される。所定時間が経過した場合、各コア部COREは、ステップS30で発行したアクセス要求REQに対するデータを所定時間内に受けられなかったため、ハングアップする。なお、この実施形態では、全てのポートPTに対応して少なくとも1つのエントリENTを確保可能なため、ハングアップする確率は従来に比べて低い。
一方、L2キャッシュ部202Cは、以下のように動作する。ステップS40、S42において、アクセス要求REQを受けたポートPTは、アクセス要求REQに含まれるアドレスを図6に示したアドレス領域に格納し、Validフラグを例えば”1”にセットする。なお、アドレス領域へのアドレスの格納およびValidフラグのセットは、アクセス要求REQを出力するコア部COREにより実行されてもよい。
次に、ステップS44において、調停部230Cは、ポートPTに保持されたアクセス要求REQの1つを選択し、キャッシュメモリ制御部260Cおよびバッファ制御部240Cに出力する。ステップS46において、キャッシュメモリ制御部260Cは、調停部230Cからのアクセス要求REQに含まれるアドレスに対応するデータがL2キャッシュメモリ270Cに格納されたか否かを判定する。すなわち、L2キャッシュメモリ270Cのキャッシュミス/キャッシュヒットが判定される。キャッシュミスの場合、ステップS48が実行され、キャッシュヒットの場合、ステップS64が実行される。
ステップS64において、キャッシュメモリ制御部260Cは、調停部230Cからのアクセス要求REQに基づいて、L2キャッシュメモリ270Cからデータを読み出す。次に、ステップS66において、キャッシュメモリ制御部260Cは、L2キャッシュメモリ270Cから読み出したデータを、アクセス要求REQを発行したコア部COREに出力する。ステップS66の実行後、ステップS58が実行される。
なお、ポートPFP1、PFP2に格納されたアクセス要求REQ(プリフェッチ命令)に基づく動作では、ステップS64、S66の実行はマスクされてもよい。この場合、L2キャッシュメモリ270Cに保持された命令(プログラム)等のデータは、L1キャッシュメモリに転送されず、ポートRDP1、RDP2に格納される新たなアクセス要求に基づいて、コア部COREのL1キャッシュメモリに格納される。
一方、キャッシュミスが判定された場合、ステップS48において、バッファ制御部240Cの比較回路243は、確保されたエントリENTの数Nと最大値MAXとを比較する。確保された数Nが最大値MAXの場合、エントリENTの確保は無理なため、アクセス要求REQはアボートされ、調停部230Cにより別のアクセス要求REQが選択される。アクセス要求REQがアボートされた場合、キャッシュメモリ制御部260Cは、アクセス要求REQを記憶装置300に出力せず、対応するポートPTはアクセス要求REQを保持し続ける。
確保された数Nが最大値MAX未満の場合、ステップS50において、バッファ制御部240Cは、バッファ部250Cに空いたエントリENTがあるかどうかをチェックする。エントリENTに空きがない場合、アクセス要求REQはアボートされ、調停部230Cにより別のアクセス要求REQが選択される。
エントリENTに空きがある場合、ステップS52において、バッファ制御部240Cは、調停部230Cにより選択されたアクセス要求REQに対応して記憶装置300から読み出されるデータを格納するエントリENTを確保する。また、バッファ制御部240Cの計数回路242は、アクセス要求REQを保持したポートPTに対応して確保されたエントリENTの数Nを”1”増加する。
ステップS54において、キャッシュメモリ制御部260Cは、バッファ制御部240CからのエントリENTの確保の通知であるアクセス許可信号AENに基づいて、アクセス要求REQをメモリアクセスコントローラ280Cを介して記憶装置300に出力する。記憶装置300は、アクセス要求REQに基づいて読み出し動作を実行し、メモリセルから読み出されるデータをメモリアクセスコントローラ280Cを介してバッファ部250Cに出力する。バッファ部250Cは、記憶装置300から出力されるデータを、ステップS52で確保されたエントリENTに格納する。
ステップS56において、バッファ部250Cは、エントリENTに格納したデータをアクセス要求REQを発行したコア部COREに出力し、L2キャッシュメモリ270Cに格納する。但し、ステップS66と同様に、ポートPFP1、PFP2に格納されたアクセス要求REQ(プリフェッチ命令)に基づいて記憶装置300から読み出されたデータは、コア部COREへの出力(L1キャッシュメモリへの格納)をマスクされてもよい。
次に、ステップS58において、キャッシュメモリ制御部260Cは、アクセス要求REQを発行したコア部COREに完了応答FINを出力する。ステップS60において、バッファ制御部240Cの計数回路242は、コア部COREに出力されたデータを読み出すためのアクセス要求REQを保持したポートPTに対応して確保されたエントリENTの数Nを”1”減少する。
次に、ステップS62において、キャッシュメモリ制御部260Cは、アクセス要求REQを出力したポートPTにリセット信号RSTを出力する。リセット信号RSTを受けたポートPTは、対応するアクセス要求REQを保持したValidフラグを例えば”0”にリセットし、アクセス要求REQを無効にする。
以上、この実施形態においも、図1から図4に示した実施形態と同様に、各ポートPTに対応して少なくとも1つのエントリENTを確保できる。この結果、特定のアクセス要求REQがアボートされ続ける可能性を従来に比べて低くでき、アボートによりコア部COREがハングアップする可能性を従来に比べて低くできる。
図10は、別の実施形態における情報処理装置100Dおよび演算処理装置200Dの例を示している。図1、図2および図5と同様または同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。
情報処理装置100D、演算処理装置200DおよびL2キャッシュ部202Dは、図5に示したバッファ制御部240Cの代わりにバッファ制御部240Dを有する。情報処理装置100D、演算処理装置200DおよびL2キャッシュ部202Dのその他の構成は、図5に示した情報処理装置100C、演算処理装置200CおよびL2キャッシュ部202Cと同様である。
例えば、情報処理装置100Dは、サーバやパーソナルコンピュータ等のコンピュータ装置であり、演算処理装置200Dは、CPU等のプロセッサである。バッファ制御部240Dは、保持回路241D、計数回路242Dおよび比較回路243Dを有する。バッファ制御部240Dの例は、図12に示す。
図11は、図10に示したバッファ部250DのエントリENTの割り当ての例を示している。この実施形態では、アクセス識別子AID(AID0、AID1、AID2)毎に、複数のポートPTが割り当てられ、確保可能なエントリENTの数の最大値MAX(MAX0、MAX1、MAX2)が決められる。
例えば、アクセス種別の1つであるロード命令が格納されるポートRDP1、RDP2は、アクセス識別子AID0に割り当てられる。アクセス種別の別の1つであるストア命令が格納されるポートSTP1、STP2は、アクセス識別子AID1に割り当てられる。アクセス種別の別の1つであるプリフェッチ命令が格納されるポートPFP1、PFP2は、アクセス識別子AID2に割り当てられる。
アクセス識別子AID0で識別されるポートRDP1、RDP2が共通に確保可能なエントリENTの数の最大値MAX0は、例えば7個に設定される。アクセス識別子AID1で識別されるポートSTP1、STP2が共通に確保可能なエントリENTの数の最大値MAX1は、例えば8個に設定される。アクセス識別子AID2で識別されるポートPFP1、PFP2が共通に確保可能なエントリENTの数の最大値MAX2は、例えば5個に設定される。
エントリENTの割り当て数の最大値MAXは、1つのアクセス識別子AIDを除く他のアクセス識別子AIDに対応するエントリENTの割り当て数の最大値の合計が、エントリENTの総数(この例では、16個)より少なくなるように設定される。この例では、エントリENTの割り当て数の最大値MAXは、アクセス識別子AID0、AID1に対応するエントリENTの割り当て数の最大値の合計(15個)が、エントリENTの総数(16個)より少なくなるように設定される。このため、アクセス識別子AID0、AID1、AID2が確保可能なエントリENTの数の最大値MAXは、例えば、7個、8個、7個に設定されてもよい。
この実施形態では、調停部230Cによる調停により、アクセス識別子AID0、AID1に対応して最大で15個のエントリENTが確保された場合にも、アクセス識別子AID2用に1つのエントリENTを確保できる。また、例えば、ポートRDP1へのアクセス要求REQの入力頻度が低い場合、ポートRDP2に保持されるアクセス要求REQに対応するエントリENTの割り当て数を、図7に比べて増やすことができる。すなわち、同種のアクセス要求REQを受けるポート群PT毎にエントリENTの割り当て数の最大値MAXを設定することで、各ポートPTに対応して確保可能なエントリENTの数を図7に比べて増やすことができる。
図12は、図10に示したバッファ制御部240Dの例を示している。図8と同一または同様の要素については、詳細な説明は省略する。
保持回路241Dは、アクセス識別子AID0、AID1、AID2に対応して最大値MAX0、MAX1、MAX2をそれぞれ保持する保持部HOLDを有する。計数回路242Dは、アクセス識別子AID0、AID1、AID2にそれぞれ対応してカウンタCNT2を有する。比較回路243Dは、アクセス識別子AID0、AID1、AID2にそれぞれ対応して比較器CMPを有する。また、バッファ制御部240Dは、各比較器CMPによる判定結果に基づいて、アクセス識別子AID0、AID1、AID2毎に割り当て信号ASGN(ASGN0、ASGN1、ASGN2)を出力する出力回路OUTを有する。
各保持部HOLDは、図8と同様に、最大値MAXを記憶するROMを含み、記憶した値を最大値MAX(MAX0−MAX2のいずれか)として出力する。最大値MAX0−MAX2は3ビットまたは4ビットの信号として出力される。なお、各保持部HOLDは、最大値MAXを書き換え可能に保持するレジスタを含んでいてもよい。
カウンタCNT2は、カウンタ値の上限が、対応する保持部HOLDが保持した最大値MAXであることを除き、図8に示したカウンタCNT1と同一または同様の回路である。例えば、アクセス識別子AID0に対応するカウンタCNT2は、開始信号START0の受信に応答して”+1”カウントアップし、終了信号END0の受信に応答して”−1”カウントダウンし、カウンタ値C0を計数値N0として出力する。計数値N0は、信号MAX0の最大値(=7)に対応して、”0”から”7”のいずれかであり、3ビットで表される。他のカウンタCNT2の計数値N1−N2は、対応するポートPTに対応して確保されたエントリENTの数を示す。
開始信号START0は、割り当て信号ASGN0に基づいて、アクセス識別子AID0で識別されるポートRDP1、RDP2に保持されたアクセス要求REQに対応してエントリENTが確保された場合に生成される。開始信号START1は、割り当て信号ASGN1に基づいて、アクセス識別子AID1で識別されるポートSTP1、STP2に保持されたアクセス要求REQに対応してエントリENTが確保された場合に生成される。開始信号START2は、割り当て信号ASGN2に基づいて、アクセス識別子AID2で識別されるポートPFP1、PFP2に保持されたアクセス要求REQに対応してエントリENTが確保された場合に生成される。
終了信号END0は、アクセス識別子AID0で識別されるポートRDP1、RDP2に保持されたアクセス要求REQに対応して、エントリENTに格納されたデータがコア部COREおよびL2キャッシュメモリ270Cに出力された場合に生成される。終了信号END1は、アクセス識別子AID1で識別されるポートSTP1、STP2に保持されたアクセス要求REQに対応して、エントリENTに格納されたデータがコア部COREおよびL2キャッシュメモリ270Cに出力された場合に生成される。終了信号END2は、アクセス識別子AID2で識別されるポートPFP1、PFP2に保持されたアクセス要求REQに対応して、エントリENTに格納されたデータがコア部COREおよびL2キャッシュメモリ270Cに出力された場合に生成される。
比較器CMPの動作は、図8に示した比較器CMPの動作と同様である。すなわち、各比較器CMPは、カウンタCNT2から出力される計数値Nが保持部HOLDからの最大値MAXと一致する場合にロウレベルを出力し、カウンタCNT2から出力される計数値Nが最大値MAX未満の場合にハイレベルを出力する。
出力回路OUTの動作は、図8に示した出力回路OUTの動作と同様である。すなわち、出力回路OUTは、アクセス識別子AIDに対応するエントリENTに空きがあり(EMP=H)、確保したエントリENTの数が最大値MAX未満の場合、ハイレベルの割り当て信号ASGN(ASGN0、ASGN1、ASGN2)を出力する。
以上、この実施形態では、同種のアクセス要求REQを受ける複数のポート群PT毎に(RDP1とRDP2、STP1とSTP2、あるいはPFP1とPFP2)、エントリENTの割り当て数の最大値MAXが設定される。これにより、同種のアクセス要求REQに対応するエントリENTの割り当て数の最大値MAXを、図7に比べて増やすことができ、ポートPTに対応してエントリENTを効率的に配分することが可能になる。この結果、アボートされるアクセス要求REQの発生を抑制でき、アボートによりコア部COREがハングアップする可能性を従来に比べて低くできる。
図13は、別の実施形態における情報処理装置100Eおよび演算処理装置200Eの例を示している。図1、図2および図5と同様または同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。
情報処理装置100E、演算処理装置200EおよびL2キャッシュ部202Eは、図5に示したバッファ制御部240Cの代わりにバッファ制御部240Eを有する。情報処理装置100E、演算処理装置200EおよびL2キャッシュ部202Eのその他の構成は、図5に示した情報処理装置100C、演算処理装置200CおよびL2キャッシュ部202Cと同様である。
例えば、情報処理装置100Eは、サーバやパーソナルコンピュータ等のコンピュータ装置であり、演算処理装置200Eは、CPU等のプロセッサである。バッファ制御部240Eは、保持回路241E、計数回路242Eおよび比較回路243Eを有する。バッファ制御部240Eの例は、図15に示す。
図14は、図13に示したバッファ部250EのエントリENTの割り当ての例を示している。この実施形態では、グループ識別子GID(GID0、GID1)毎に、複数のポートPT(例えば、RDP1、RDP2、STP1、STP2)が割り当てられ、確保可能なエントリENTの数の最大値MAXが決められる。
例えば、アクセス種別の1つであるロード命令が格納されるポートRDP1、RDP2と、アクセス種別の別の1つであるストア命令が格納されるポートSTP1、STP2は、アクセス識別子AID0に割り当てられる。アクセス種別の別の1つであるプリフェッチ命令が格納されるポートPFP1、PFP2は、アクセス識別子AID1に割り当てられる。ロード命令およびストア命令は、データをL1キャッシュメモリ内のデータキャッシュに入出力する種別の命令である。プリフェッチ命令は、プログラムをL1キャッシュメモリ内の命令キャッシュに入力する種別の命令である。
グループ識別子GID0で識別されるポートRDP1、RDP2、STP1、STP2が共通に確保可能なエントリENTの数の最大値MAXは、例えば14個に設定される。グループ識別子GID1で識別されるポートPFP1、PFP2が共通に確保可能なエントリENTの数の最大値MAXは、例えば6個に設定される。
エントリENTの割り当て数の最大値MAXは、1つのグループ識別子GIDに対応するエントリENTの割り当て数の最大値(この例では、最大で14個)が、エントリENTの総数(この例では、16個)より少なくなるように設定される。このため、各グループ識別子GID0、GID1が確保可能なエントリENTの数の最大値MAXは、例えば、15個に設定されてもよい。
なお、複数のポートPTが3以上のグループ識別子GIDにより識別される場合が考えられる。この場合、1つのグループ識別子GIDを除く他のグループ識別子GIDに対応するエントリENTの割り当て数の最大値の合計が、エントリENTの総数(この例では、16個)より少なくなるように設定される。
この実施形態では、例えば、調停部230Cによる調停により、グループ識別子GID0に対応して最大で14個のエントリENTが確保された場合にも、グループ識別子GID1用に2つのエントリENTを確保できる。
図15は、図13に示したバッファ制御部240Eの例を示している。図8および図12と同一または同様の要素については、詳細な説明は省略する。
保持回路241Eは、各グループ識別子GID0、GID1にそれぞれ対応して最大値MAX0、MAX1を保持する保持部HOLDを有する。計数回路242Eは、各グループ識別子GID0、GID1にそれぞれ対応してカウンタCNT3を有する。比較回路243Eは、各グループ識別子GID0、GID1にそれぞれ対応して比較器CMPを有する。また、バッファ制御部240Eは、各比較器CMPによる判定結果に基づいて、グループ識別子GID0、GID1毎に割り当て信号ASGN(ASGN0、ASGN1)を出力する出力回路OUTを有する。
各保持部HOLDは、図8と同様に、最大値MAXを記憶するROMを含み、記憶した値を最大値MAX(MAX0、MAX1のいずれか)として出力する。最大値MAX0、MAX1はそれぞれ4ビットと3ビットの信号として出力される。なお、各保持部HOLDは、最大値MAXを書き換え可能に保持するレジスタを含んでいてもよい。
カウンタCNT3は、カウンタ値の上限が、対応する保持部HOLDが保持した最大値MAXであることを除き、図8に示したカウンタCNT1と同一または同様の回路である。例えば、グループ識別子GID0に対応するカウンタCNT3は、開始信号START0の受信に応答して”+1”カウントアップし、終了信号END0の受信に応答して”−1”カウントダウンし、カウンタ値を計数値N0として出力する。計数値N0は、信号MAX0の最大値(=14)に対応して、”0”から”14”のいずれかであり、4ビットで表される。
開始信号START0は、割り当て信号ASGN0に基づいて、グループ識別子GID0で識別されるポートRDP1、RDP2、STP1、STP2に保持されたアクセス要求REQに対応してエントリENTが確保された場合に生成される。開始信号START1は、割り当て信号ASGN1に基づいて、グループ識別子GID1で識別されるポートPFP1、PFP2に保持されたアクセス要求REQに対応してエントリENTが確保された場合に生成される。
終了信号END0は、グループ識別子GID0で識別されるポートRDP1、RDP2、STP1、STP2に保持されたアクセス要求REQに対応して、エントリENTに格納されたデータがコア部COREおよびL2キャッシュメモリ270Cに出力された場合に生成される。終了信号END1は、グループ識別子GID1で識別されるポートPFP1、PFP2に保持されたアクセス要求REQに対応して、エントリENTに格納されたデータがコア部COREおよびL2キャッシュメモリ270Cに出力された場合に生成される。
比較器CMPの動作は、図8に示した比較器CMPの動作と同様である。すなわち、各比較器CMPは、カウンタCNT3から出力される計数値Nが保持部HOLDからの最大値MAXと一致する場合にロウレベルを出力し、カウンタCNT3から出力される計数値Nが最大値MAX未満の場合にハイレベルを出力する。
出力回路OUTの動作は、図8に示した出力回路OUTの動作と同様である。すなわち、出力回路OUTは、グループ識別子GIDに対応するエントリENTに空きがあり(EMP=H)、確保したエントリENTの数が最大値MAX未満の場合、ハイレベルの割り当て信号ASGN(ASGN0、ASGN1)を出力する。
以上、この実施形態では、異種のアクセス要求REQを受ける複数のポート群PT毎に(例えば、RDP1、RDP2、STP1、STP2)、エントリENTの割り当て数の最大値MAXが設定される。これにより、各ポートPTに対応して確保可能なエントリENTの数を図7および図11に比べて増やすことができる。この結果、アボートされるアクセス要求REQの発生を抑制でき、アボートによりコア部COREがハングアップする可能性を従来に比べて低くできる。
図16は、別の実施形態における情報処理装置100Fおよび演算処理装置200Fの例を示している。図1、図2および図5と同様または同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。
情報処理装置100F、演算処理装置200FおよびL2キャッシュ部202Fは、図5に示したバッファ制御部240Cの代わりにバッファ制御部240Fを有する。情報処理装置100F、演算処理装置200FおよびL2キャッシュ部202Fのその他の構成は、図5に示した情報処理装置100C、演算処理装置200CおよびL2キャッシュ部202Cと同様である。すなわち、例えば、情報処理装置100Fは、サーバやパーソナルコンピュータ等のコンピュータ装置であり、演算処理装置200Fは、CPU等のプロセッサである。
バッファ制御部240Fは、図5に示した保持回路241の代わりに保持回路241Fを有し、新たに優先フラグ回路244Fを有する。保持回路241Fおよび優先フラグ回路244Fの例は、図17に示す。
図17は、図16に示した優先フラグ回路244Fおよび保持回路241Fの例と、バッファ制御部240Fによるエントリの割り当ての例を示している。図7と同一または同様の要素については、詳細な説明は省略する。
この実施形態では、保持回路241Fにより、ポートRDP1、RDP2、STP1、STP2、PFP1、PFP2が確保可能なエントリENTの数の最大値MAXは、それぞれ5個に設定される。保持回路241Fは、設定される最大値MAXが異なることを除き、図5に示した保持回路241と同様である。
1つのポートPTを除く他のポートPTに対応して確保可能なエントリENTの数の最大値MAXの合計(この例では、25個)は、エントリENTの総数(この例では、16個)以上に設定される。このため、例えば、ポートRDP1、RDP2、STP1、STP2に対応して、エントリENTが4つずつ確保された場合、ポートPFP1、PFP2に対応するエントリENTは確保されない。
この実施形態では、優先フラグ回路244Fを用いて、1つのポートPTを除くポートPTに対応して確保可能なエントリENTの最大数の合計が、エントリENTの総数以上の場合にも、各ポートPTに対応してエントリENTが確保可能である。優先フラグ回路244Fは、各ポートRDP1、RDP2、STP1、STP2、PFP1、PFP2に対応する優先フラグPFLGを有する。すなわち、優先フラグPFLGは、アクセス種別毎に設けられる。優先フラグPFLGは、エントリENTを確保していないポートPTに対応して例えば”1”にセットされる。但し、優先フラグPFLGは、全ての優先フラグPFLGが”0”にリセットされた場合にセット可能である。
バッファ制御部240Fは、優先フラグPFLGのいずれかがセットされた場合、セットされた優先フラグPFLGに対応するポートPT用のエントリENTを確保し、他のポートPT用のエントリENTは確保しない。
例えば、図17は、ポートRDP1、RDP2、STP1、STP2に対応するエントリENTが確保され、エントリENTに空きがない場合に、ポートPFP1に対応する優先フラグPFLGがセットされた状態を示している。この場合、バッファ制御部240Fは、調停部230Cから受けるポートPFP1以外からのアクセス要求REQをアボートし、ポートPFP1からのアクセス要求REQを受け付ける。これにより、既に確保されたエントリENTが、記憶装置300からのデータの読み出しにより空き状態になった場合に、優先フラグPFLGがセットされたポートPFP1に対応するエントリENTが新たに確保される。
図18は、図16に示したL2キャッシュ部202Fの動作の例を示している。図9と同様または同一の動作については、同一の符号を付し、詳細な説明を省略する。図18に示したフローは、例えば、ハードウエアにより実現される。なお、図18は、アクセス要求REQ毎の動作およびポートPT毎の動作を示している。
各コア部COREの動作は、図9と同様である。なお、図18に示したL2キャッシュ部202Fの各ステップは、動作を分かりやすくするための区分けであり、実際には、L2キャッシュ部202Fのハードウエアが連動することにより、複数のステップが並列に実行されてもよい。
この実施形態では、ステップS46によりL2キャッシュメモリ270Cのキャッシュミスが判定された場合に、図9に示したステップS48、S50の代わりに、ステップS70、S72、S74、S76、S76、S78、S80、S82が実行される。
ステップS70では、対象のアクセス要求REQを保持するポートPTを除く他のポートPTに対応する優先フラグPFLGがセットがセットされたか否かが判定される。他のポートPTに対応する優先フラグPFLGがセットされた場合、自身のポートPTに対応してエントリENTを確保する権利がないため、ステップS44の判定に戻る。
他のポートPTに対応する優先フラグPFLGがセットされていない場合、ステップS72において、対象のアクセス要求REQを保持する自身のポートPTに対応する優先フラグPFLGがセットされたか否かが判定される。自身のポートPTに対応する優先フラグPFLGがセットされた場合、エントリENTの優先的な確保を既に予約済みのため、ステップS80の判定に移行する。自身のポートPTに対応する優先フラグPFLGがセットされていない場合、ステップS74の判定に移行する。
ステップS74において、自身のポートPTに対応するエントリENTが確保されたか否かが判定される。自身のポートPTに対応するエントリENTが確保されていない場合(N=0)、ステップS76の判定に移行する。自身のポートPTに対応して確保されたエントリENTが1以上で最大値MAX未満の場合(N=0<N<MAX)、ステップS80の判定に移行する。自身のポートPTに対応して最大値MAXのエントリENTが確保された場合(N=MAX)、これ以上のエントリENTの確保は無理なため、ステップS44の判定に戻る。
ステップS76では、バッファ部250CにエントリENTの空きがあるか否かが判定される。バッファ部250CにエントリENTの空きがある場合、優先フラグPFLGをセットすることなく、エントリENTを確保可能なため、ステップS82の動作に以降する。バッファ部250CにエントリENTの空きがない場合、ステップS78において、自身のポートPTに対応する優先フラグPFLGがセットされる。これにより、バッファ制御部240Fは、この後のステップS72の判定において、ステップS80の処理に進む。
なお、ステップS78は、ステップS70において他のポートPTの優先フラグPFLGがセットされていない場合に実行される。これにより、優先フラグ回路244Fにおいて、セットされる優先フラグPFLGを1つにでき、エントリENTの確保するための競争が複数のポートPT間で起こることはない。
また、ステップS78は、ステップS74において、自身のポートPTに対応するエントリENTが確保されていない場合に実行される。このため、自身のポートPTに対応して少なくとも1つのエントリENTが確保された場合、このポートPTに対応する優先フラグPFLGはセットされない。
ステップS80では、バッファ部250CにエントリENTの空きがあるか否かが判定される。バッファ部250CにエントリENTの空きがある場合、ステップS82において、自身のポートPTに対応する優先フラグPFLGがリセットされ、ステップS52の動作に移行する。そして、図9と同様の動作が実行される。バッファ部250CにエントリENTの空きがない場合、これ以上のエントリENTの確保は無理なため、ステップS44の判定に戻る。
以上、この実施形態では、バッファ制御部240Fは、エントリENTを優先的に確保するための優先フラグPFLGを有する。これにより、1つのポートPTを除く残りのポートPTにより確保可能なエントリENTの数の最大値MAXの合計が、エントリENTの総数以上の場合にも、各ポートPTにおいて、少なくとも1つのエントリENTを確保できる。また、各ポートPTにより確保可能なエントリENTの数の最大値MAXを、図7に比べて大きくできる。この結果、特定のアクセス要求REQがアボートされ続ける可能性を従来に比べて低くでき、アボートによりコア部COREがハングアップする可能性を従来に比べて低くできる。
なお、図16から図18に示した実施形態は、図10から図12に示した実施形態および図13から図15に示した実施形態に適用されてもよい。この場合、例えば、1つのアクセス識別子AIDを除く他のアクセス識別子AIDに対応して確保可能なエントリENTの数の最大値MAXの合計が、エントリENTの総数以上に設定される。そして、L2キャッシュ部202Dは、図18と同様に動作し、優先フラグPFLGにより、エントリENTが確保されていないアクセス識別子AIDに対して、エントリENTを優先的に確保する。
あるいは、1つのグループ識別子GIDを除く他のグループ識別子GIDに対応して確保可能なエントリENTの数の最大値MAXの合計が、エントリENTの総数以上に設定される。そして、L2キャッシュ部202Eは、図18と同様に動作し、優先フラグPFLGにより、エントリENTが確保されていないグループ識別子GIDに対して、エントリENTを優先的に確保する。
図19は、別の実施形態における情報処理装置100Gおよび演算処理装置200Gの例を示している。図1、図2および図5と同様または同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。
情報処理装置100G、演算処理装置200GおよびL2キャッシュ部202Gは、図5に示した調停部230Cおよびバッファ制御部240Cの代わりに調停部230Gおよびバッファ制御部240Gを有する。情報処理装置100G、演算処理装置200GおよびL2キャッシュ部202Gのその他の構成は、図5に示した情報処理装置100C、演算処理装置200CおよびL2キャッシュ部202Cと同様である。すなわち、例えば、情報処理装置100Gは、サーバやパーソナルコンピュータ等のコンピュータ装置であり、演算処理装置200Gは、CPU等のプロセッサである。
調停部230Gは、各ポートPT(RDP1、RDP2、STP1、STP2、PFP1、PFP2)に対応するカウンタCNT4を、図5に示した調停部230Cに追加している。すなわち、カウンタCNT4は、アクセス種別毎に設けられる。調停部230Gは、各ポートRDP1、RDP2、STP1、STP2、PFP1、PFP2に保持されたアクセス要求REQを選択した場合に、対応するカウンタCNT4の値をリセットする。調停部230Gは、選択した各ポートRDP1、RDP2、STP1、STP2、PFP1、PFP2にアクセス要求REQが保持されていない場合に、対応するカウンタCNT4の値をインクリメントする。さらに、調停部230Gは、他のポートPTに対応するカウンタCNT4の値が全て”1”以上の場合、エントリENTの割り当て数の制限を止める制限解除信号RELをバッファ制御部240Gに出力する。これにより、例えば、バッファ部250Cの全てのエントリENTが、1つのポートPT用に確保可能になる。
図20は、図19に示した調停部230Gの動作の例を示している。図20に示す動作は、図9に示したステップS44に対応する動作であり、例えば、ハードウエアにより実現される。なお、図20は、アクセス要求REQ毎の動作およびポートPT毎の動作を示している。
まず、ステップS100において、調停部230Gは、例えば、ラウンドロビン等の手法を用いて、ポートPT(RDP1、RDP2、STP1、STP2、PFP1、PFP2)の1つを順次に選択する。ステップS102において、調停部230Gは、選択したポートPTにアクセス要求REQが保持されたか否かを判定する。アクセス要求REQが保持された場合、ステップS104において、調停部230Gは、選択したポートPTに対応するカウンタCNT4の値をリセットし、ステップS108に移行する。アクセス要求REQが保持されていない場合、ステップS106において、調停部230Gは、選択したポートPTに対応するカウンタCNT4の値をインクリメントし(+1)、調停動作を完了する。
ステップS108において、調停部230Gは、キャッシュメモリ制御部260Cおよびバッファ制御部240Gに、選択したアクセス要求REQを出力する。ステップS110において、調停部230Gは、選択したポートPTを除く他のポートPTに対応するカウンタCNT4の値をチェックする。ステップS112において、他のポートPTに対応するカウンタCNT4の値が”0”より大きい場合、ステップS114に移行し、他のポートPTに対応するカウンタCNT4が”0”にリセットされた場合、ステップS116に移行する。
ステップS114において、調停部230Gは、エントリENTの割り当て数の制限を解除する通知をバッファ制御部240Gに出力し、調停動作を完了する。ステップS116において、調停部230Gは、エントリENTの割り当て数の制限を開始する通知をバッファ制御部240Gに出力し、調停動作を完了する。例えば、割り当て数の制限の解除は、ハイレベルの制限解除信号RELにより通知され、割り当て数の制限の開始は、ロウレベルの制限解除信号RELにより通知される。
図21は、図19に示したバッファ制御部240Gの動作の例を示している。図21に示す動作は、図9に示したステップS48、S50、S52に対応する動作であり、例えば、ハードウエアにより実現される。すなわち、この実施形態では、図9に示したステップS46とステップS48の間に、ステップS47が挿入される。バッファ制御部240Gのその他の動作は、図9に示したバッファ制御部240Cの動作と同様である。なお、図21は、アクセス要求REQ毎およびポートPT毎の動作を示している。
ステップS47では、バッファ制御部240Gは、制限解除信号RELの論理レベルに基づいて、エントリENTの割り当て数の制限を解除する通知を調停部230Gから受けたか否かを判定する。制限を解除する通知を受けた場合(REL=H)、バッファ制御部240Gは、ステップS48によるエントリENTの数Nと最大値MAXとの比較動作を禁止し、ステップS50の判定を実行する。すなわち、バッファ部250Cに空いたエントリENTがある場合、既に確保したエントリENTの数に拘わりなく、エントリが確保される。一方、エントリENTの割り当て数の制限を解除する通知を調停部230Gから受けていない場合(REL=L)、図9と同様に、ステップS48によるエントリENTの数Nと最大値MAXとの比較動作が実行される。
なお、図19に示した調停部230Gは、カウンタCNT4の代わりに、アクセス要求REQの有無を示すアイドルフラグを、各ポートRDP1、RDP2、STP1、STP2、PFP1、PFP2に対応して有してもよい。すなわち、アイドルフラグは、アクセス種別毎に設けられる。この場合、アクセス要求REQがあった場合に、図20のステップS104においてアイドルフラグがリセットされ、アクセス要求REQがない場合に、ステップS106においてアイドルフラグがセットされる。そして、ステップS112において、他のポートPTに対応するアイドルフラグがセットされた場合にステップS114に移行され、他のポートPTに対応するアイドルフラグがリセットされた場合にステップS116に移行される。
なお、図19に示したカウンタCNT4において、”1”以上の値は、上述したアイドルフラグのセット状態を示し、”0”の値は、アイドルフラグのリセット状態を示す。
以上、この実施形態においても、図1から図9に示した実施形態と同様に、各ポートRDP1、RDP2、STP1、STP2、PFP1、PFP2に対応して少なくとも1つのエントリENTを確保できる。さらに、この実施形態では、アクセス要求が、特定のポートPTで集中して発生し、他のポートPTで発生していない場合に、最大値MAXによるエントリENTの確保数の制限を解除する。これにより、アクセス要求が集中するポートPTに対応するエントリENTの確保数を、最大でバッファ部250Cが有するエントリENTの数(この例では、16個)まで増やすことができる。この結果、アクセス要求REQがアボートされ続ける可能性を従来に比べて低くでき、アボートによりコア部COREがハングアップする可能性を従来に比べて低くできる。
なお、図19から図21に示した実施形態は、図10から図12に示した実施形態および図13から図15に示した実施形態に適用されてもよい。この場合、例えば、調停部230Gは、アクセス識別子AIDにそれぞれ対応してカウンタCNT4を有する。そして、アクセス要求REQが、特定のアクセス識別子AIDで集中して発生し、他のアクセス識別子AIDで発生していない場合に、最大値MAXによるエントリENTの確保数の制限を解除する。
あるいは、調停部230Gは、グループ識別子GIDにそれぞれ対応してカウンタCNT4を有する。そして、アクセス要求REQが、特定のグループ識別子GIDで集中して発生し、他のグループ識別子GIDで発生していない場合に、最大値MAXによるエントリENTの確保数の制限を解除する。
図22は、別の実施形態における情報処理装置100Hおよび演算処理装置200Hの例を示している。図1、図2、図5および図19と同様または同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。
情報処理装置100H、演算処理装置200HおよびL2キャッシュ部202Hは、図5に示した調停部230Cおよびバッファ制御部240Cの代わりに調停部230Hおよびバッファ制御部240Hを有する。情報処理装置100H、演算処理装置200HおよびL2キャッシュ部202Hのその他の構成は、図5に示した情報処理装置100C、演算処理装置200CおよびL2キャッシュ部202Cと同様である。すなわち、例えば、情報処理装置100Hは、サーバやパーソナルコンピュータ等のコンピュータ装置であり、演算処理装置200Hは、CPU等のプロセッサである。
調停部230Hは、図19に示した調停部230Gと同様に、各ポートPT(RDP1、RDP2、STP1、STP2、PFP1、PFP2)に対応するカウンタCNT4を、図5に示した調停部230Cに追加している。すなわち、カウンタCNT4は、アクセス種別毎に設けられる。
調停部230Gは、例えば、ラウンドロビン等の手法を用いて、ポートPTの1つを順次に選択する。調停部230Hは、選択した各ポートPTにアクセス要求REQが保持された場合に、対応するカウンタCNT4の値をインクリメントする。また、調停部230Hは、選択した各ポートPTにアクセス要求REQが保持されていない場合に、対応するカウンタCNT4の値をデクリメントする。例えば、カウンタCNT4の値”10”は、カウンタCNT4の値”5”に比べて、アクセス要求REQの頻度が高いことを示す。
さらに、調停部230Hは、インクリメントした各カウンタCNT4の値が、例えば5の倍数に到達した場合に、バッファ制御部240Hにインクリメント信号INCを出力する。調停部230Hは、デクリメントした各カウンタCNT4の値が、例えば5の倍数に到達した場合に、バッファ制御部240Hにデクリメント信号DECを出力する。なお、インクリメント信号INCおよびデクリメント信号DECは、カウンタCNT4に対応してポートPT毎に生成される。
バッファ制御部240Hは、図5に示した保持回路241の代わりに保持回路241Hを有する。保持回路241Hは、図8と同様に、各ポートRDP1、RDP2、STP1、STP2、PFP1、PFP2に対応して最大値MAXを保持する保持部HOLDを有する。但し、保持部HOLDは、例えば、保持した値を書き換え可能なレジスタである。
バッファ制御部240Hは、インクリメント信号INCに基づいて、対応する保持部HOLDの値を”1”増加し、デクリメント信号DECに基づいて、対応する保持部HOLDの値を”1”減少する。バッファ制御部240Hのその他の機能は、図5に示したバッファ制御部240Cの機能と同様である。なお、この実施形態では、図7と同様に、16個のエントリENTに対して、6個の各保持部HOLDに設定可能なエントリENTの割り当て数の最大値は3である。すなわち、各保持部HOLDは、”0”、”1”、”2”、”3”のいずれかの値を保持し、1つのポートPTを除く他のポートPTに対応するエントリENTの割り当て数の最大値の合計が、エントリENTの総数より少なくなるように設定される。インクリメント信号INCに基づいて増加する値の最大値は”3”であり、デクリメント信号DECに基づいて減少する値の最小値は”0”である。
図23は、図22に示した調停部230Hの動作の例を示している。図9および図20と同様または同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。図23に示す動作は、例えば、ハードウエアにより実現される。なお、図23は、アクセス要求REQ毎の動作およびポートPT毎の動作を示している。
ステップS100、S102の動作は、図20に示したステップS100、S102の動作と同様である。選択したポートPTにアクセス要求REQが保持された場合、ステップS120において、調停部230Hは、アクセス要求REQを受け付け、対応するカウンタCNT4の値を”1”減少させる。すなわち、カウンタCNT4は、アクセス要求REQの受け付けに基づいて一方向にカウントされる。次に、ステップS122において、調停部230Hは、選択したポートPTである自ポートPTに対応するカウンタCNT4の値をチェックする。ステップS124において、調停部230Hは、カウンタCNT4の値が、減少により5の倍数になったか否かを判定する。なお、5の倍数は一例であり、2以上の自然数の倍数であればよい。
カウンタCNT4の値が、減少により5の倍数になった場合、ステップS126において、調停部230Hは、対応する保持部HOLDの値である最大値MAXを増加させるように、バッファ制御部240Hにインクリメント信号INCを出力する。この後、ステップS108において、調停部230Hは、図20のステップS108と同様に、キャッシュメモリ制御部260Cおよびバッファ制御部240Hに、選択したアクセス要求REQを出力する。
一方、選択したポートPTにアクセス要求REQが保持されていない場合、ステップS128において、調停部230Hは、対応するカウンタCNT4の値を”1”増加させる。すなわち、カウンタCNT4は、アクセス要求REQが保持されていない場合、逆方向にカウントされる。次に、ステップS130において、調停部230Hは、選択したポートPTである自ポートPTに対応するカウンタCNT4の値をチェックする。ステップS132において、調停部230Hは、カウンタCNT4の値が、増加により5の倍数になったか否かを判定する。なお、5の倍数は一例であり、他の自然数の倍数でもよい。この場合に、比較する値は、ステップS124と同じ値であることが好ましい。
カウンタCNT4の値が、増加により5の倍数になった場合、ステップS34において、調停部230Hは、対応する保持部HOLDの値である最大値MAXを減少させるように、バッファ制御部240Hにデクリメント信号DECを出力する。そして、調停動作が完了する。
図24は、図22に示したバッファ制御部240Hの動作の例を示している。図24に示す動作は、図9に示したステップS48、S50、S52に対応する動作であり、例えば、ハードウエアにより実現される。すなわち、この実施形態では、図9に示したステップS46とステップS48の間に、ステップS140、S142、S144、S146が挿入される。バッファ制御部240Hのその他の動作は、図9に示したバッファ制御部240Cの動作と同様である。なお、図24は、アクセス要求REQ毎の動作およびポートPT毎の動作を示している。
ステップS140では、バッファ制御部240Hは、調停部230Hからインクリメント信号INCを受けたか否かを判定する。インクリメント信号INCを受けた場合、ステップS142において、バッファ制御部240Hは、対応する保持部HOLDに保持された最大値MAXを”1”増加させる。すなわち、バッファ制御部240Hは、カウンタCNT4が一方向に所定数カウントされた場合(この例では、”5”減少)、対応する最大値MAXを増加させる。但し、最大値MAXがすでに”3”に設定された場合、最大値MAXは保持される。
ステップS144において、バッファ制御部240Hは、調停部230Hからデクリメント信号DECを受けたか否かを判定する。デクリメント信号DECを受けた場合、ステップS146において、バッファ制御部240Hは、対応する保持部HOLDに保持された最大値MAXを”1”減少させる。すなわち、バッファ制御部240Hは、カウンタCNT4が逆方向に所定数カウントされた場合(この例では、”5”増加)、対応する最大値MAXを減少させる。但し、最大値MAXがすでに”0”に設定された場合、最大値MAXは保持される。
この後、図9と同様に、ステップS48、S50、S52の動作が実行される。なお、ステップS48では、確保されたエントリENTの数Nは、”0”、”1”、”2”、”3”のいずれかに設定された最大値MAXと比較される。
以上、この実施形態においても、図1から図9に示した実施形態と同様に、各ポートPT(RDP1、RDP2、STP1、STP2、PFP1、PFP2)に対応して少なくとも1つのエントリENTを確保できる。さらに、この実施形態では、ポートPT毎のアクセス要求の頻度の変化に合わせて、エントリENTの確保数の上限である最大値MAXを変更する。これにより、アクセス要求の発生頻度に応じてエントリENTの確保数の上限を増減できる。この結果、アクセス要求REQがアボートされ続ける可能性を従来に比べて低くでき、アボートによりコア部COREがハングアップする可能性を従来に比べて低くできる。
なお、図22から図24に示した実施形態では、1つのポートPTを除く他のポートPTに対応するエントリENTの割り当て数の最大値の合計が、エントリENTの総数より少なくなるように設定される。しかしながら、1つのポートPTを除く他のポートPTに対応するエントリENTの割り当て数の最大値の合計が、エントリENTの総数以上に設定されてもよい。この場合、バッファ制御部240Hは、図17に示したように、各ポートPTに対応する優先フラグPFLGを有する優先フラグ回路244Fを有し、L2キャッシュ部202Hは、図18に示した動作を実行する。図23に示したフローは、図18のステップS44に含まれる。図24に示したフローのステップS140、S142、S144、S146は、図18のステップS72、S74間に挿入される。これにより、最大値MAXの増加により、1つのポートPTを除く残りのポートPTにより確保可能なエントリENTの数の最大値MAXの合計が、エントリENTの総数以上の場合になった場合にも、優先フラグPFLGを用いてエントリENTを確保できる。
さらに、図22から図24に示した実施形態は、図10から図12に示した実施形態および図13から図15に示した実施形態に適用されてもよい。この場合、例えば、調停部230Gは、アクセス識別子AIDにそれぞれ対応してカウンタCNT4を有する。そして、アクセス識別子AID毎に、アクセス要求REQの頻度が高くなった場合に最大値MAXを増やし、アクセス識別子AID毎に、アクセス要求REQの頻度が低くなった場合に最大値MAXを減らす。
あるいは、調停部230Gは、グループ識別子GIDにそれぞれ対応してカウンタCNT4を有する。そして、グループ識別子GID毎に、アクセス要求REQの頻度が高くなった場合に最大値MAXを増やし、グループ識別子GID毎に、アクセス要求REQの頻度が低くなった場合に最大値MAXを減らす。
なお、図1から図24に示した実施形態では、記憶装置300が演算処理装置200、200A、200C、200D、200E、200F、200G、200H等に占有される例について述べた。しかしながら、記憶装置は、複数の演算処理装置に共有されてもよい。この場合、図1から図24に示した実施形態は、各演算処理装置に適用されてもよい。
また、情報処理装置100C、100D、100E、100F、100G、100Hが、L3キャッシュ部を有する場合、図5から図24に示した実施形態は、L2キャッシュ部およびL3キャッシュ部の少なくともいずれかに適用されてもよい。例えば、図5に示した実施形態がL3キャッシュ部に適用される場合、L3キャッシュ部は、L2キャッシュ部202Cとメモリアクセスコントローラ280Cとの間に配置される。そして、キャッシュメモリ制御部260Cは、L2キャッシュメモリのキャッシュミス時に、L3キャッシュ部にアクセス要求を出力する。L3キャッシュ部は、キャッシュメモリ制御部260Cからのアクセス要求REQを受け、L3キャッシュメモリのキャッシュヒット・キャッシュミスを判定する。そして、L3キャッシュ部は、キャッシュミス時にメモリアクセスコントローラ280Cにアクセス要求REQを出力する。
以上の図1から図24に示した実施形態に関し、さらに以下の付記を開示する。
(付記1)
記憶装置に対するアクセス要求を出力する演算処理部と、
前記演算処理部が出力したアクセス要求を、アクセス要求の種別であるアクセス種別毎にそれぞれ保持する複数の要求保持部と、
前記複数の要求保持部に保持されたアクセス要求を調停する調停部と、
データを保持する複数のエントリを有するバッファ部と、
前記複数のエントリのうちデータを保持したエントリをアクセス種別毎に計数した計数値とアクセス種別毎にデータを保持させるエントリの最大値とをアクセス種別毎に比較した結果に基づいて、前記調停部が調停したアクセス要求に応じて前記記憶装置が出力したデータを前記複数のエントリのいずれかに保持させるバッファ制御部を有することを特徴とする演算処理装置。
(付記2)
前記バッファ制御部は、
前記計数値が前記最大値未満である場合、前記調停部が調停したアクセス要求に応じて前記記憶装置が出力したデータを前記複数のエントリのいずれかに保持させることを特徴とする付記1記載の演算処理装置。
(付記3)
前記バッファ制御部は、
前記計数値が前記最大値の場合、前記調停部が調停したアクセス要求に応じて前記記憶装置が出力したデータを前記複数のエントリのいずれかに保持させないことを特徴とする付記1記載の演算処理装置。
(付記4)
複数のアクセス種別のうちの1つを除くアクセス種別にそれぞれ対応する前記最大値の合計は、エントリの総数より少なく設定されることを特徴とする付記1ないし付記3のいずれか1項記載の演算処理装置。
(付記5)
前記バッファ制御部は、
前記最大値をアクセス種別毎に保持する保持回路と、
アクセス種別毎に前記計数値を求め、求めた計数値を保持する計数回路と、
前記計数値と前記最大値とをアクセス種別毎に比較する比較回路を有することを特徴とする付記1ないし付記4のいずれか1項記載の演算処理装置。
(付記6)
前記演算処理装置は、
各アクセス種別に対応するアクセス識別子毎に複数の要求保持部を有し、
前記バッファ制御部は、
前記複数のエントリのうちデータを保持したエントリをアクセス識別子毎に計数した計数値とアクセス識別子毎にデータを保持させるエントリの最大値とをアクセス種別子毎に比較した結果に基づいて、前記調停部が調停したアクセス要求に応じて前記記憶装置が出力したデータを前記複数のエントリのいずれかに保持させることを特徴とする付記1記載の演算処理装置。
(付記7)
複数のアクセス識別子のうちの1つを除くアクセス識別子にそれぞれ対応する前記最大値の合計は、エントリの総数より少なく設定されることを特徴とする付記4記載の演算処理装置。
(付記8)
前記バッファ制御部は、
前記最大値をアクセス識別子毎に保持する保持回路と、
アクセス識別子毎に前記計数値を求め、求めた計数値を保持する計数回路と、
前記計数値と前記最大値とをアクセス識別子毎に比較する比較回路を有することを特徴とする付記6または付記7記載の演算処理装置。
(付記9)
前記演算処理装置は、
複数のアクセス種別に対応するグループ識別子毎に複数の要求保持部を有し、
前記バッファ制御部は、
前記複数のエントリのうちデータを保持したエントリをグループ識別子毎に計数した計数値とグループ識別子毎にデータを保持させるエントリの最大値とをグループ識別子毎に比較した結果に基づいて、前記調停部が調停したアクセス要求に応じて前記記憶装置が出力したデータを前記複数のエントリのいずれかに保持させることを特徴とする付記1記載の演算処理装置。
(付記10)
複数のグループ識別子のうちの1つを除くグループ識別子にそれぞれ対応する前記最大値の合計は、エントリの総数より少なく設定されることを特徴とする付記9記載の演算処理装置。
(付記11)
前記バッファ制御部は、
前記最大値をグループ識別子毎に保持する保持回路と、
グループ識別子毎に前記計数値を求め、求めた計数値を保持する計数回路と、
前記計数値と前記最大値とをグループ識別子毎に比較する比較回路を有することを特徴とする付記9または付記10記載の演算処理装置。
(付記12)
前記バッファ制御部は、
アクセス要求を優先させる場合にセットされる優先フラグをアクセス種別毎に有し、
前記優先フラグがセットされたアクセス種別に対応して確保された前記エントリがない場合に、他のアクセス種別のアクセス要求に基づく前記エントリの確保を停止し、前記優先フラグがセットされたアクセス種別のアクセス要求に基づいて前記エントリを確保し、
複数のアクセス種別のうちの1つを除くアクセス種別にそれぞれ対応する前記最大値の合計は、エントリの総数以上に設定されることを特徴とする付記1ないし付記5のいずれか1項記載の演算処理装置。
(付記13)
前記調停部は、
順次に選択する前記要求保持部に保持されたアクセス要求の受け付けに基づいてリセットされ、選択した前記要求保持部にアクセス要求が保持されていない場合にセットされるアイドルフラグを、アクセス種別毎に有し、
前記バッファ制御部は、
1つのアクセス種別に対応する前記アイドルフラグがリセットされ、他のアクセス種別に対応する前記アイドルフラグがセットされた場合に、前記計数値に拘わらず、リセットされたアイドルフラグに対応するアクセス要求に基づいて、前記エントリを確保することを特徴とする付記1ないし付記5のいずれか1項記載の演算処理装置。
(付記14)
前記調停部は、
順次に選択する前記要求保持部に保持されたアクセス要求の受け付けに基づいて一方向にカウントされ、選択した前記要求保持部にアクセス要求が保持されていない場合に逆方向にカウントされるカウンタを、アクセス種別毎に有し、
前記バッファ制御部は、
前記カウンタが前記一方向に所定数カウントされた場合に、対応する前記最大値を増加させ、前記カウンタが前記逆方向に所定数カウントされた場合に、対応する前記最大値を減少させることを特徴とする付記1ないし付記5、付記12のいずれか1項記載の演算処理装置。
(付記15)
記憶装置と、前記記憶装置に接続された演算処理装置とを有する情報処理装置において、
前記演算処理装置は、
キャッシュメモリ部と、
前記記憶装置に対するアクセス要求を出力する演算処理部と、
前記演算処理部が出力したアクセス要求を、アクセス要求の種別であるアクセス種別毎にそれぞれ保持する複数の要求保持部と、
前記複数の要求保持部に保持されたアクセス要求を調停する調停部と、
データを保持する複数のエントリを有するバッファ部と、
前記複数のエントリのうちデータを保持したエントリをアクセス種別毎に計数した計数値とアクセス種別毎にデータを保持させるエントリの最大値とをアクセス種別毎に比較した結果に基づいて、前記調停部が調停したアクセス要求に応じて前記記憶装置が出力したデータを前記複数のエントリのいずれかに保持させるバッファ制御部と、
前記バッファ部に保持されたデータを前記キャッシュメモリ部に出力するキャッシュメモリ制御部を有することを特徴とする情報処理装置。
(付記16)
記憶装置と、前記記憶装置に接続された演算処理装置とを有する情報処理装置の制御方法において、
前記演算処理装置が有する演算処理部が、前記記憶装置に対するアクセス要求を出力し、
前記演算処理装置が有する複数の要求保持部が、前記演算処理部が出力したアクセス要求を、アクセス要求の種別であるアクセス種別毎にそれぞれ保持し、
前記演算処理装置が有する調停部が、前記複数の要求保持部に保持されたアクセス要求を調停し、
前記演算処理装置が有するバッファ部が備える複数のエントリのうちデータを保持したエントリをアクセス種別毎に計数した計数値とアクセス種別毎にデータを保持させるエントリの最大値とをアクセス種別毎に比較した結果に基づいて、前記演算処理装置が有するバッファ制御部が、前記調停部が調停したアクセス要求に応じて前記記憶装置が出力したデータを前記複数のエントリのいずれかに保持させ、
前記演算処理装置が有するキャッシュメモリ制御部が、前記バッファ部に保持されたデータを、前記演算処理装置が有するキャッシュメモリ部に出力することを特徴とする情報処理装置の制御方法。
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずであり、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。