以下、図面を用いて実施形態を説明する。
図1は、一実施形態における情報処理装置100および演算処理装置200の例を示している。情報処理装置100は、演算処理装置200および記憶装置300を有する。例えば、情報処理装置100は、サーバやパーソナルコンピュータ等のコンピュータ装置であり、演算処理装置200は、CPU等のプロセッサである。
例えば、記憶装置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、230、調停部240および処理部250を有する。演算処理部210は、例えば、CPUコアであり、記憶装置300に対するアクセス要求NREQを出力する。例えば、アクセス要求NREQは、ロード命令およびストア命令等の演算処理部210で扱うデータの入出力要求と、演算処理部210が実行するプログラムのプリフェッチ要求との少なくともいずれかを含む。
要求保持部220は、演算処理部210が出力するアクセス要求NREQを保持する少なくとも1つのエントリNENTと、エントリNENTに保持されたアクセス要求NREQの調停部240への出力を制御する出力制御部OUTCとを有する。エントリNENTは、要求エントリの一例である。
例えば、各エントリNENTは、設定通知FSETを受ける前に保持したアクセス要求NREQと、設定通知FSETを受けた後に保持したアクセス要求NREQを識別するために、フラグNを有する。要求保持部220は、設定通知FSETを受けた後に、アクセス要求NREQをエントリNENTに保持する場合、フラグNを設定する。なお、フラグNは、エントリNENTの外部に、各エントリNENTに対応して設けられてもよい。
例えば、出力制御部OUTCは、調停部240から設定通知FSETを受けたときに、フラグNが設定されたエントリNENTに保持されたアクセス要求NREQの調停部240への出力を抑止する。出力制御部OUTCは、調停部240から解除通知FRSTを受けたときに、フラグNに拘わらず、エントリNENTに保持されたアクセス要求NREQを調停部240に出力する。
なお、設定通知FSETおよび解除通知FRSTは、例えば、1本の信号線の論理レベルにより調停部240から出力制御部OUTCに伝達されてもよい。この場合、例えば、ハイベルの信号(または立ち上がりエッジ)は、設定通知FSETを示し、ロウレベルの信号(または立ち下がりエッジ)は、解除通知FRSTを示す。
また、要求保持部220は、所定時間を超えて処理されないアクセス要求NREQがエントリNENTのいずれかに存在する場合、調停部240に警告通知WARNを出力する。さらに、要求保持部220は、エントリNENTに保持されてから所定時間を超えて処理されていないアクセス要求NREQが処理部250により処理されたと判断した場合、調停部240に回避通知AVIDを出力する。
要求保持部230は、アクセス要求SREQを保持する少なくとも1つのエントリSENTを有する。要求保持部230は、派生要求保持部の一例であり、エントリSENTは、派生要求エントリの一例である。アクセス要求SREQは、要求保持部220に保持されたアクセス要求NREQが処理されることにより、記憶装置300へのアクセスが必要になった場合に生成される派生要求の一例である。なお、図1では、要求保持部220、230がそれぞれ4つのエントリNENT、SENTを有する例を示しているが、エントリNENT、SENTの数は、4つに限定されない。
調停部240は、要求保持部220に保持されたアクセス要求NREQおよび要求保持部230に保持されたアクセス要求SREQを調停し、記憶装置300へのアクセス要求REQとして選択する。例えば、調停部240は、ラウンドロビン等の手法を用いて、要求保持部220および要求保持部230に保持されたアクセス要求NREQ、SREQを順次に選択する。そして、調停部230は、選択したアクセス要求NREQ(またはSREQ)を処理部250に出力する。
なお、図1では、要求保持部220は、エントリNENTに保持された複数のアクセス要求NREQを調停部240に出力し、要求保持部230は、エントリSENTに保持された複数のアクセス要求SREQを調停部240に出力する。しかしながら、要求保持部220は、エントリNENTを順次に選択し、選択したエントリNENTに保持されたアクセス要求NREQを調停部240に出力してもよい。要求保持部230は、エントリSENTを順次に選択し、選択したエントリSENTに保持されたアクセス要求SREQを調停部240に出力してもよい。
また、調停部240は、要求保持部220から出力された警告通知WARNに基づいて、設定通知FSETを要求保持部220に出力する。さらに、調停部240は、要求保持部220から出力される回避通知AVIDに基づいて、解除通知FRSTを要求保持部220に出力する。
処理部250は、調停部240から出力されるアクセス要求REQを記憶装置300に出力する。例えば、記憶装置300は、アクセス要求REQに基づいて読み出し動作を実行し、メモリセルから読み出されるデータを演算処理部210に出力する。図1および図1以降の図面において、太い破線は、データが転送されるデータ線を示している。
図2および図3は、図1に示した情報処理装置100および演算処理装置200の動作の例を示している。すなわち、図2および図3は、情報処理装置100および演算処理装置200の制御方法の例を示している。図3は、図2の動作の続きを示している。図2および図3において、白のエントリNENT(またはSENT)は、アクセス要求NREQ(またはSREQ)を保持していない空きの状態を示している。網掛けのエントリNENT(またはSENT)は、アクセス要求NREQ(またはSREQ)を保持した状態を示している。
斜線のエントリNENTは、アクセス要求NREQを受けてから所定時間が経過した状態を示している。斜線のエントリNENTの状態がさらに続く場合、演算処理部210は、アクセス要求NREQに対応するデータを受けられず、ハングアップするおそれがある。”N”を付けた網掛けのエントリNENTは、調停部240から設定通知FSETを受けた後に、演算処理部210から新たに供給されたアクセス要求NREQを保持したことを示す。”N”を付けた網掛けのエントリNENTは、解除通知FRSTに基づいて”N”の付かない網掛けのエントリNENTに変更される。
初期の状態(a)において、要求保持部220は、3つのエントリNENTにアクセス要求NREQを保持し、要求保持部230は、3つのエントリSENTにアクセス要求SREQを保持する。調停部240は、要求保持部220に保持されたアクセス要求NREQを選択し、アクセス要求REQとして処理部250に出力する。処理部250は、アクセス要求REQに基づいて図1に示した記憶装置300にアクセスする処理を実行する。また、処理部250は、アクセス要求NREQに基づくアクセス処理により、記憶装置300へのアクセスがさらに必要になったことを判断する。処理部250は、アクセス要求NREQに基づいて派生されたアクセス要求SREQを、要求保持部230の空きのエントリSENTに出力する。
状態(b)において、調停部240は、要求保持部230に保持されたアクセス要求SREQを選択し、アクセス要求REQとして処理部250に出力する。処理部250は、アクセス要求REQに基づいて図1に示した記憶装置300にアクセスする処理を実行する。また、状態(b)において、要求保持部220は、エントリNENTに保持したアクセス要求NREQの中に、所定時間を超えて処理されないアクセス要求NREQが存在することを検出し(斜線のエントリNENT)、警告通知WARNを調停部240に出力する。調停部240は、警告通知WARNを受け、設定通知FSETを要求保持部220に出力する。また、調停部240は、要求保持部230に保持されたアクセス要求SREQを選択し、アクセス要求REQとして処理部250に出力する。処理部250は、アクセス要求REQに基づいて記憶装置300にアクセスする処理を実行する。
状態(c)において、演算処理部210は、要求保持部220の空きのエントリNENTにアクセス要求NREQを格納する。要求保持部220は、設定通知FSET後に受けたアクセス要求NREQを保持するエントリNENTのフラグNをセットする(状態(d)で”N”を付けたエントリNENT)。すなわち、設定通知FSET後に受けたアクセス要求NREQは、フラグNにより、設定通知FSET前に保持したアクセス要求NREQと区別して保持される。要求保持部220は、設定通知FSETの受信に基づいて、フラグNがセットされたエントリENTに保持されたアクセス要求NREQの調停部240への発行を抑止する。
調停部240は、要求保持部220に保持された次のアクセス要求NREQを選択し、アクセス要求REQとして処理部250に出力する。処理部250は、例えば、アクセス要求SREQの処理に伴いデータバスの競合が発生するため、アクセス要求NREQをアボートする。
状態(d)では、状態(b)と同様に、調停部240は、要求保持部230に保持されたアクセス要求SREQを選択し、アクセス要求REQとして処理部250に出力する。処理部250は、アクセス要求REQに基づいて記憶装置300にアクセスする処理を実行する。
状態(e)では、状態(a)と同様に、調停部240は、要求保持部220に保持されたアクセス要求NREQを選択し、処理部250は、アクセス要求NREQに基づいて記憶装置300にアクセスする。また、処理部250は、アクセス要求NREQに基づいて派生されたアクセス要求SREQを、要求保持部230の空きのエントリSENTに出力する。
状態(f)において、演算処理部210は、要求保持部220の空きのエントリNENTにアクセス要求NREQを格納する。また、上述した状態(d)と同様に、調停部240は、要求保持部230に保持されたアクセス要求SREQを選択し、処理部250は、アクセス要求SREQに基づいて記憶装置300にアクセスする処理を実行する。
次に、図3の状態(g)において、演算処理部210は、要求保持部220の空きのエントリNENTにアクセス要求NREQを格納する。また、状態(g)では、状態(c)と同様に、調停部240は、要求保持部220に保持されたアクセス要求NREQを選択する。しかし、処理部250は、例えば、アクセス要求SREQの処理に伴いデータバスの競合が発生するため、アクセス要求NREQをアボートする。なお、状態(g)、(h)では、1つのエントリNENTを除き、要求保持部220は、設定通知FSET後に受けたアクセス要求NREQを保持している。要求保持部220は、これ等アクセス要求NREQの調停部240への発行を抑止するため、調停部240により選択されるアクセス要求NREQは限られてしまう。例えば、他のアクセス要求NREQに比べてアボートする可能性が高いアクセス要求NREQが連続して選択される場合がある。
状態(h)では、状態(d)と同様に、調停部240は、要求保持部230に保持されたアクセス要求SREQを選択し、処理部250は、アクセス要求SREQに基づいて記憶装置300にアクセスする処理を実行する。
次に、状態(i)では、状態(g)と同様に、調停部240は、要求保持部220に保持されたアクセス要求NREQを選択するが、処理部250は、アクセス要求NREQをアボートする。次に、状態(j)では、状態(d)と同様に、調停部240は、要求保持部230に保持されたアクセス要求SREQを選択し、処理部250は、アクセス要求SREQに基づいて記憶装置300にアクセスする処理を実行する。この処理により、要求保持部230に保持されたアクセス要求SREQの処理は全て完了する。
このように、設定通知FSET後にエントリNENTに保持されたアクセス要求NREQの調停部240への発行を抑止することにより、派生要求であるアクセス要求SREQの発生の頻度を従来に比べて下げることができる。これにより、派生要求の処理が進まないことを避けることができ、演算処理装置200がハングアップする可能性を従来に比べて低くできる。
状態(k)において、状態(e)と同様に、調停部240は、NフラグがリセットされたエントリNENTに保持されたアクセス要求NREQを選択する。処理部250は、アクセス要求NREQに基づいて記憶装置300にアクセスし、アクセス要求NREQに基づいて派生されたアクセス要求SREQを空きのエントリSENTに出力する。要求保持部220は、設定通知FSET前に保持されたアクセス要求NREQがなくなったことに基づいて、回避通知AVIDを調停部240に出力する。調停部240は、回避通知AVIDを受け、設定解除FRSTを要求保持部220に出力する。
状態(l)において、演算処理部210は、要求保持部220の空きのエントリNENTにアクセス要求NREQを格納する。要求保持部220は、解除通知FRSTを受けた後、フラグNをリセットする。これにより、次に設定通知FSETを受けるまでの期間、アクセス要求NREQは新旧の区別なくエントリNENTに保持される。調停部240は、要求保持部230に保持されたアクセス要求SREQを選択し、処理部250は、アクセス要求SREQに基づいて記憶装置300にアクセスする処理を実行する。
以上、この実施形態では、所定時間を超えて処理されないアクセス要求NREQが存在する場合に、新たに保持するアクセス要求NREQの出力を抑止する一方で、要求保持部230に保持されたアクセス要求SREQの選択には制限を設けない。これにより、古いアクセス要求NREQを新しいアクセス要求NREQに比べて優先的に処理できる。また、派生要求であるアクセス要求SREQの発生の頻度を従来に比べて下げることができ、アクセス要求SREQをエントリSENTに溜めにくくできる。
したがって、派生要求であるアクセス要求SREQの処理が進まない不具合を抑制でき、アクセス要求NREQの処理が滞ることを回避できる。この結果、古いアクセス要求NREQが処理されないことで演算処理部210がハングアップする確率を従来に比べて下げることができ、情報処理装置100および演算処理装置200の性能の低下を抑制できる。
図4は、別の実施形態における情報処理装置100Aおよび演算処理装置200Aの例を示している。図1と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。この実施形態では、演算処理装置200Aは、図1に示した処理部250の代わりに、処理部250Aを有する。また、演算処理装置200Aは、図1に示した要素に加えて、キャッシュメモリ部260Aを有する。演算処理装置200Aのその他の構成は、図1と同様である。
処理部250Aは、図1に示した処理部250の機能に加えて、調停部240から出力されるアクセス要求REQに対応するデータがキャッシュメモリ部260Aに格納されたか否かをチェックする。すなわち、処理部250Aは、キャッシュメモリ部260Aのアクセスを制御する制御部の機能を有する。例えば、処理部250Aは、アクセス要求REQに対応するデータがキャッシュメモリ部260Aに格納された場合(キャッシュヒット)、記憶装置300にアクセス要求REQを出力せず、キャッシュメモリ部260Aからデータを読み出す。キャッシュメモリ部260Aから読み出されたデータは、演算処理部210Aに出力される。
一方、処理部250Aは、アクセス要求REQに対応するデータがキャッシュメモリ部260Aに格納されていない場合(キャッシュミス)、記憶装置300にアクセス要求REQを出力する。そして、記憶装置300から読み出されたデータは、演算処理部210Aに出力される。
例えば、アクセス要求NREQは、キャッシュメモリ部260Aに対するアクセス要求であり、アクセス要求SREQは、アクセス要求NREQがキャッシュミスした場合に、記憶装置300に出力されるアクセス要求である。図4に示した情報処理装置100Aおよび演算処理装置200Aの動作は、次の動作を除き、図2および図3の動作と同様である。すなわち、この実施形態では、キャッシュヒットが判定された場合に、アクセス要求NREQがキャッシュメモリ部260Aに出力され、キャッシュミスが判定された場合に、アクセス要求NREQの代わりにアクセス要求SREQが記憶装置300に出力される。
以上、この実施形態においても、図1から図3に示した実施形態と同様に、派生要求であるアクセス要求SREQの処理が進まない不具合を解消でき、アクセス要求NREQの処理が滞ることを回避できる。この結果、古いアクセス要求NREQが処理されないことで演算処理部210がハングアップする確率を従来に比べて下げることができ、情報処理装置100Aおよび演算処理装置200Aの性能の低下を抑制できる。
図5は、別の実施形態における情報処理装置100Bおよび演算処理装置200Bの例を示している。図1および図4と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。
情報処理装置100Bは、演算処理装置200Bおよび記憶装置300を有する。例えば、情報処理装置100Bは、サーバやパーソナルコンピュータ等のコンピュータ装置であり、演算処理装置200Bは、CPU等のプロセッサである。
演算処理装置200Bは、複数のコア部CORE(CORE1、CORE2)、ポートPT(MIP1、PFP1、MIP2、PFP2、MOP1、MOP2、MIBP1、MIBP2)、調停部240B、キャッシュメモリ制御部250B、キャッシュタグ部260B、L2キャッシュメモリ270B、メモリアクセスコントローラ280BおよびデータバッファBUF1、BUF2、BUF3を有する。
図5において、二点鎖線で囲った領域は、L2キャッシュ部202Bを示している。すなわち、L2キャッシュ部202Bは、ポートPT、調停部240B、キャッシュメモリ制御部250B、キャッシュタグ部260B、L2キャッシュメモリ270B、メモリアクセスコントローラ280BおよびデータバッファBUF1、BUF2、BUF3を有する。
各コア部COREは、例えば、符号L1で示したL1キャッシュ部を含むCPUコアである。L1キャッシュ部は、L1キャッシュメモリと、L1キャッシュメモリのアクセスを制御するキャッシュメモリ制御部とを有する。例えば、L1キャッシュメモリは、ロード命令およびストア命令等で扱われるデータを格納するデータキャッシュと、プリフェッチ命令に対応するプログラムを格納する命令キャッシュとを有する。コア部COREは、演算処理部の一例である。
コア部CORE1は、アクセス要求NREQ1をポートMIP1に出力し、アクセス要求NREQ3をポートPFP1に出力し、アクセス要求SREQ1をポートMOP1に出力する。コア部CORE2は、アクセス要求NREQ2をポートMIP2に出力し、アクセス要求NREQ4をポートPFP2に出力し、アクセス要求SREQ2をポートMOP2に出力する。
例えば、アクセス要求NREQ1、NREQ2は、ロード命令およびストア命令等のコア部COREで扱うデータの入出力要求である。ロード命令は、L1キャッシュメモリ、L2キャッシュメモリ270Bまたは記憶装置300から読み出されるデータを、コア部COREのレジスタに格納する命令である。L1キャッシュ部は、ロード命令に対応するデータがL1キャッシュメモリにない場合(キャッシュミス)、L2キャッシュ部202Bにロード命令を出力する。
ストア命令は、コア部COREにより処理されたデータをL1キャッシュメモリに格納する命令である。L1キャッシュ部は、ストア命令に対応するデータの領域を含むキャッシュラインがL1キャッシュメモリに確保されていない場合(キャッシュミス)、L2キャッシュ部202Bにストア命令を出力する。
L1キャッシュ部からストア命令を受けたL2キャッシュ部202Bは、ストア命令に対応するデータ(キャッシュライン)をL2キャッシュメモリ270Bまたは記憶装置300から読み出し、読み出したデータをL1キャッシュ部に出力する。このように、コア部COREがL2キャッシュ部202Bに出力するロード命令およびストア命令は、L2キャッシュメモリ270Bまたは記憶装置300からデータを読み出す命令である。
例えば、アクセス要求NREQ3、NREQ4は、各コア部COREが実行するプログラムを記憶装置300からL2キャッシュメモリ270Aに予め読み込むプリフェッチ命令である。なお、後述するように、記憶装置300へのアクセスは、L2キャッシュメモリ270Bのキャッシュミス時に、アクセス要求NREQ1−NREQ4から派生的に生成されるアクセス要求SREQ3、SREQ4により実行される。
例えば、アクセス要求SREQ1、SREQ2は、L1キャッシュメモリに格納されたデータをL2キャッシュメモリ270Bおよび記憶装置300に転送し、L1キャッシュメモリの領域を空ける書き戻し命令である。コア部COREは、アクセス要求NREQ1−NREQ4の処理によりコア部COREに転送されるデータを格納する領域がL1キャッシュメモリにない場合にアクセス要求SREQ1、SREQ2を出力する。すなわち、アクセス要求SREQ1、SREQ2は、アクセス要求NREQ1−NREQ4から派生的に生成される派生アクセス要求である。
例えば、アクセス要求SREQ3、SREQ4は、アクセス要求NREQ1−NREQ4に基づくL2キャッシュメモリ270Bのキャッシュミス時に、キャッシュメモリ制御部250Bにより生成される。すなわち、アクセス要求SREQ3、SREQ4は、アクセス要求NREQ1−NREQ4から派生的に生成される派生アクセス要求である。
キャッシュメモリ制御部250Bは、調停部240Bから受けるアクセス要求SREQ3、SREQ4に基づいて、メモリアクセスコントローラ280Bを介して記憶装置300にアクセスする。アクセス要求SREQ3に基づいて記憶装置300から読み出されたデータは、ポートMIBP1に対応するデータバッファBUF1に保持される。アクセス要求SREQ4に基づいて記憶装置300から読み出されたデータは、ポートMIBP2に対応するデータバッファBUF2に保持される。
以降の説明では、アクセス要求NREQ1−NREQ4をアクセス要求NREQとも称し、アクセス要求SREQ1−SREQ4をアクセス要求SREQとも称する。また、アクセス要求NREQ1−NREQ4、SREQ1−SREQ4をアクセス要求REQとも称する。
ポートMIP1(Move In Port)は、コア部CORE1からのアクセス要求NREQ1を保持する複数のエントリNENT(図6)を有する。ポートPFP1(Pre Fetch Port)は、コア部CORE1からのアクセス要求NREQ3を保持する複数のエントリNENTを有する。ポートMIP2は、コア部CORE2からのアクセス要求NREQ2を保持する複数のエントリNENTを有する。ポートPFP2は、コア部CORE2からのアクセス要求NREQ4を保持する複数のエントリNENTを有する。ポートMIP1、PFP1、MIP2、PFP2は、要求保持部の一例である。ポートMIP1、PFP1、MIP2、PFP2の例は、図6に示す。
ポートMOP1(Move Out Port)は、コア部CORE1からのアクセス要求SREQ1を保持する複数のエントリSENT(図7)を有する。ポートMOP2は、コア部CORE2からのアクセス要求SREQ2を保持する複数のエントリSENTを有する。ポートMIBP1(Move In Buffer Port)は、キャッシュメモリ制御部250Bから出力されるアクセス要求SREQ3を保持する複数のエントリSENTを有する。ポートMIBP2は、キャッシュメモリ制御部250Bから出力されるアクセス要求SREQ4を保持する複数のエントリSENTを有する。ポートMOP1、MOP2、MIBP1、MIPB2は、派生要求保持部の一例である。
データバッファBUF1、BUF2に保持されたデータは、L2キャッシュメモリ270BおよびL1キャッシュメモリに出力され、格納される。但し、プリフェッチ命令であるアクセス要求NREQ3、NREQ4に基づいてアクセス要求SREQ3、SREQ4が派生された場合、データバッファBUF1(またはBUF2)に保持されたデータは、L2キャッシュメモリ270Bに出力されるが、L1キャッシュメモリに格納されない。なお、ポートMIBP1とデータバッファBUF1とを合わせてポートMIB1とも称する場合があり、ポートMIBP2とデータバッファBUF2とを合わせてポートMIB2と称する場合がある。
調停部240Bは、ポートPTにそれぞれ保持されたアクセス要求REQを調停し、キャッシュメモリ制御部270Bに出力する。例えば、調停部240Bは、ラウンドロビン等の手法を用いて、ポートMIP1、PFP1、MIP2、PFP2、MOP1、MOP3、MIPB1、MIPB2に保持されたアクセス要求REQを順次に選択する。また、調停部240Bは、各ポートPTからの警告通知WARM(図6)、WARMS(図7)に基づいて設定通知FSET(図8)をポートMIP1、PFP1、MIP2、PFP2に出力する。調停部240Bは、各ポートPTからの回避通知AVID(図6)、AVIDS(図7)に基づいて解除通知FRST(図8)をポートMIP1、PFP1、MIP2、PFP2に出力する。例えば、設定通知FSETは、フラグ信号FLG(図8)のハイレベルにより示され、解除通知FRSTは、フラグ信号FLGのロウレベルにより示される。調停回路240Bの例は図8に示す。
キャッシュメモリ制御部250Bは、調停部240Bにより調停されたアクセス要求NREQに含まれるアドレス情報をキャッシュタグ260Bに出力する。キャッシュメモリ制御部250Bは、キャッシュタグ260Bから読み出される情報に基づいてL2キャッシュメモリ270Bのキャッシュヒット/キャッシュミスを判定する。キャッシュメモリ制御部250Bは、キャッシュヒットを判定した場合、L2キャッシュメモリ270Bからデータを読み出して、アクセス要求NREQを発行したコア部COREに読み出したデータを出力する。キャッシュメモリ制御部250Bは、アクセス要求NREQのキャッシュミスを判定した場合、メモリアクセスコントローラ280Bにアクセス要求を出力する。
また、キャッシュメモリ制御部250Bは、調停部240Bにより調停されたアクセス要求SREQ1、SREQ2(書き戻し命令)に含まれるアドレス情報をキャッシュタグ260Bに出力し、L2キャッシュメモリ270Bのキャッシュヒット/キャッシュミスを判定する。キャッシュメモリ制御部250Bは、キャッシュヒットを判定した場合、アクセス要求SREQ1、SREQ2に対応してコア部COREから出力され、データバッファBUF3に保持されたデータを、L2キャッシュメモリ270Aに書き込む。キャッシュメモリ制御部250Bは、キャッシュミスを判定した場合、アクセス要求SREQ1、SREQ2に含まれるアドレス情報をキャッシュタグ260Aに登録して新たなキャッシュラインを確保する。そして、キャッシュメモリ制御部250Bは、データバッファBUF3に保持されたデータを確保したキャッシュラインに書き込む。さらに、キャッシュメモリ制御部250Bは、アクセス要求SREQ1、SREQ2に含まれるアドレス情報をメモリアクセスコントローラ280Aに出力し、データバッファBUF3に保持されたデータを記憶装置300に書き込んでもよい。
キャッシュメモリ制御部250Bは、調停部240Bにより調停されたアクセス要求SREQ3に含まれるアドレス情報をメモリアクセスコントローラ280Bに出力する。メモリアクセスコントローラ280Bは、アクセス要求SREQ3に基づいて記憶装置300にアクセスし、記憶装置300から読み出されるデータをデータバッファBUF1に書き込む。キャッシュメモリ制御部250Bは、調停部240Bにより調停されたアクセス要求SREQ4に含まれるアドレス情報をメモリアクセスコントローラ280Bに出力する。メモリアクセスコントローラ280Bは、アクセス要求SREQ4に基づいて記憶装置300にアクセスし、記憶装置300から読み出されるデータをデータバッファBUF2に書き込む。
さらに、キャッシュメモリ制御部250Bは、L2キャッシュメモリ270BまたはデータバッファBUF1、BUF2からコア部COREにデータが転送される場合に、アクセス要求REQの完了応答を示す完了信号FINを、アクセス要求REQを出力したコア部COREに出力する。また、キャッシュメモリ制御部250Bは、アクセス要求NREQ、SREQを受け付けた場合に、アクセス要求NREQ、SREQを出力したポートPTにリセット信号RSTを出力する。リセット信号RSTを受けたポートPTは、対応するアクセス要求NREQ、SREQを無効にする。
例えば、アクセス要求NREQに対応するリセット信号RSTは、キャッシュヒットの場合にL2キャッシュメモリ270Bへのアクセスに基づいて出力され、キャッシュミスの場合に派生命令であるアクセス要求SREQの出力に基づいて出力される。アクセス要求SREQに対応するリセット信号RSTは、キャッシュメモリ制御部250Bからメモリアクセスコントローラ280Bへのアクセス要求の出力に基づいて出力される。
メモリアクセスコントローラ280Bは、キャッシュメモリ制御部250Bからのアクセス要求SREQ1、SREQ2に基づいて、記憶装置300に書き込み動作を実行させるアクセス信号(書き込み要求)を記憶装置300に出力する。メモリアクセスコントローラ280Bは、キャッシュメモリ制御部250Bからのアクセス要求SREQ3、SREQ4に基づいて、記憶装置300に読み出し動作を実行させるアクセス信号(読み出し要求)を記憶装置300に出力する。
なお、メモリアクセスコントローラ280Bは、演算処理装置200Bの外部に配置されてもよい。また、キャッシュメモリ制御部250Bが記憶装置300のアクセスを制御する機能を有する場合、記憶装置300は、メモリアクセスコントローラ280Bを介することなくキャッシュメモリ制御部250Bに接続されてもよい。この場合、演算処理装置200Bは、メモリアクセスコントローラ280Bを持たなくてよい。以降の実施形態でも同様に、メモリアクセスコントローラ280Bは、演算処理装置の外部に配置されてもよく、情報処理装置内に存在しなくてもよい。
図6は、図5に示したポートMIP1、MIP2、PFP1、PFP2の例を示している。ポートMIP1、MIP2、PFP1、PFP2は、互いに同一または同様の構成であるため、ここでは、ポートMIP1について説明する。ポートMIP1は、ポート部PORTN、発行制御部REQCNT、エントリ選択部ESEL、チェック回路CHKN、分周回路DIVおよびカウンタCOUNTを有する。
ポート部PORTNは、図6に太枠で示すように、例えば、アクセス要求NREQ1を保持する4つのエントリNENTを有する。なお、エントリNENTの数は4つに限定されない。各エントリNENTは、データが格納された記憶装置300の記憶領域を示すアドレスが格納されるアドレス領域ADR、フラグVおよびフラグNを有する。例えば、各アドレス領域は32ビットであり、各フラグVは1ビットであり、各フラグNは1ビットである。
フラグVは、アドレス領域ADRに格納されたアドレスが有効か無効かを示す。すなわち、フラグVがセットされたエントリNENTのアドレス領域ADRは、有効なアクセス要求NREQ1のアドレスが格納される。図5に示した調停部240Bは、フラグVがセットされたエントリNENTのいずれかを選択する。フラグNは、例えば、フラグ信号FLGのハイレベル期間に、新たに受けたアクセス要求NREQ1に対応してセットされる。
発行制御部REQCNTは、各エントリNENTに対応してマスク回路MSKおよびバッファBUFを有する。マスク回路MSKは、調停部240Bからのフラグ信号FLGがハイレベルで、フラグNがハイレベルにセットされた場合に、対応するフラグVのレベルに拘わらず、バッファBUFのイネーブル端子ENにロウレベルに設定する。各マスク回路MSKは、NAND回路およびAND回路を有する。マスク回路MSKは、フラグ信号FLGがロウレベル、またはフラグNがロウレベルにリセットされた場合に、対応するフラグVのレベルをバッファBUFのイネーブル端子ENに設定する。
なお、フラグ信号FLGがロウレベルの期間に、フラグNがリセットされる場合、図23に示すように、各マスク回路MSKは、フラグNの論理を反転し、反転した論理をAND回路の入力に出力するインバータIVを、NAND回路の代わりに有してもよい。この場合、マスク回路MSKは、フラグ信号FLGを受けることなく、バッファBUFのイネーブル端子ENを制御できる。
バッファBUFは、イネーブル端子ENでハイレベルを受ける期間に、アドレス領域ADRに格納されたアドレスをエントリ選択部ESELに出力する。バッファBUFは、イネーブル端子ENでロウレベルを受ける期間に、アドレスのエントリ選択部ESELへの出力を禁止する。
すなわち、発行制御部REQCNTは、フラグ信号FLGがハイレベルの期間に、フラグNがリセットされ、フラグVがセットされたエントリNENTのアドレスを、エントリ選択部ESELに出力する。また、発行制御部REQCNTは、フラグ信号FLGがハイレベルの間、フラグNおよびフラグVがセットされたエントリNENTのアドレスのエントリ選択部ESELへの出力を抑止する。さらに、発行制御部REQCNTは、フラグ信号FLGがロウレベルの期間に、フラグNのレベルに拘わらず、フラグVがセットされたエントリNENTのアドレスをエントリ選択部ESELに出力する。
エントリ選択部ESELは、例えば、ラウンドロビン等の手法を用いて、バッファBUFからそれぞれ出力されるアドレスを順次に選択し、選択したアドレスをアクセス要求NREQS1として調停部240Bに出力する。なお、ポートMIP2のエントリ選択部ESELは、アクセス要求NREQS2を調停部240Bに出力する。ポートPFP1のエントリ選択部ESELは、アクセス要求NREQS3を調停部240Bに出力する。ポートPFP2のエントリ選択部ESELは、アクセス要求NREQS4を調停部240Bに出力する。
チェック回路CHKNは、例えば、ラウンドロビン等の手法を用いて、フラグVをチェックするエントリNENTを順次選択する。チェック回路CHKNは、フラグ信号FLGがロウレベルの期間に、着目する1つのエントリNENTのフラグVのセットを検出した場合に、カウンタCOUNTにカウント動作を開始させる起動信号STT1を出力する。あるいは、チェック回路CHKNは、フラグ信号FLGがハイレベルからロウレベルに変化したタイミングで、着目する1つのエントリNENTのフラグVがセットされたことを検出した場合に起動信号STT1を出力する。
チェック回路CHKNは、図5に示したキャッシュメモリ制御部250Bからのセット信号RSTに基づいて、対応するアクセス要求NREQ1を出力したエントリNENTのフラグVをリセットする。チェック回路CHKNは、着目する1つのエントリNENTのフラグVがリセットされた場合に、カウンタCOUNTの動作を停止させ、カウンタ値をリセットする。この後、チェック回路CHKNは、次のエントリNENTを選択し、フラグVのセットを検出した場合に、起動信号STT1を出力し、カウンタCOUNTにカウント動作を開始させる。
また、チェック回路CHKNは、フラグ信号FLGがハイレベルの期間に、フラグVのセットを検出した場合に、対応するフラグNをセットする。チェック回路CHKNは、フラグ信号FLGがハイレベルの期間に、警告通知WARN1の出力の起因となったエントリNENTのフラグVがリセットされた場合、回避通知AVID1を調停部240Bに出力する。すなわち、チェック回路CHKNは、フラグ信号FLGがハイレベルの期間に、選択したエントリNENTに保持されたアクセス要求NREQが処理された場合に回避通知AVID1を出力する。
さらに、チェック回路CHKNは、回避通知AVID1に応答してフラグ信号FLGがロウレベルに変化したことに基づいて、全てのフラグNをリセットする。なお、ポートMIP2のチェック回路CHKNは、回避通知AVID2を調停部240Bに出力する。ポートPFP1のチェック回路CHKNは、回避通知AVID3を調停部240Bに出力する。ポートPFP2のチェック回路CHKNは、回避通知AVID4を調停部240Bに出力する。
分周回路DIVは、クロックCLKの周波数を分周して、カウンタCOUNTに出力する。カウンタCOUNTは、チェック回路CHKNからの起動信号STT1に応答して、周波数が分周されたクロックに同期してカウント動作する。カウンタCOUNTは、カウンタ値が所定値に達した場合、警告通知WARN1を調停部240Bに出力する。すなわち、カウンタCOUNTは、着目する1つのエントリNENTにアクセス要求NREQ1が格納されてから所定時間Tmaxが経過したことに基づいて、警告通知WARN1を調停部240Bに出力する。分周回路DIVおよびカウンタCOUNTは、起動信号STT1に応答して時間の計測を開始し、所定時間Tmaxを超えた場合に警告通知WARN1を出力するタイマとして機能する。
なお、ポートMIP2のカウンタCOUNTは、警告通知WARN2を調停部240Bに出力する。ポートPFP1のカウンタCOUNTは、警告通知WARN3を調停部240Bに出力する。ポートPFP2のカウンタCOUNTは、警告通知WARN4を調停部240Bに出力する。
図7は、図5に示したポートMOP1、MOP2、MIBP1、MIBP2の例を示している。ポートMOP1、MOP2、MIBP1、MIBP2は、互いに同一または同様の構成であるため、ここでは、ポートMIBP1について説明する。ポートMIBP1は、ポート部PORTS、エントリ選択部ESEL、チェック回路CHKS、分周回路DIVおよびカウンタCOUNTを有する。なお、ポートMIBP1は、図6に示したポートMIP1の制御部CNTおよび発行制御部REQCNTを有していない。
ポート部PORTSは、図7に太枠で示すように、例えば、アクセス要求SREQ1を保持する4つのエントリSENTを有する。なお、エントリSENTの数は4つに限定されない。各エントリSENTは、データが格納された記憶装置300の記憶領域を示すアドレスが格納されるアドレス領域ADRおよびフラグVを有する。フラグVは、アドレス領域ADRに格納されたアドレスが有効か無効かを示す。例えば、各アドレス領域は32ビットであり、各フラグVは1ビットである。
エントリ選択部ESELは、アドレス領域ADRに格納されたアドレスを図6に示したバッファBUFを介することなく受けることを除き、図6に示したエントリ選択部ESELと同一または同様である。すなわち、エントリ選択部ESELは、ラウンドロビン等の手法を用いて、アドレス領域ADRから出力されるアドレスを順次に選択し、選択したアドレスをアクセス要求SREQS1として調停部240Bに出力する。なお、ポートMOP2のエントリ選択部ESELは、アクセス要求SREQS2を調停部240Bに出力する。ポートMIBP1のエントリ選択部ESELは、アクセス要求SREQS3を調停部240Bに出力する。ポートMIBP2のエントリ選択部ESELは、アクセス要求SREQS4を調停部240Bに出力する。
チェック回路CHKSは、例えば、ラウンドロビン等の手法を用いて、フラグVをチェックするエントリSENTを順次選択する。チェック回路CHKSは、選択したエントリSENTのフラグVのセットを検出した場合に、カウンタCOUNTにカウント動作を開始させる起動信号STT2を出力する。チェック回路CHKSは、図5に示したキャッシュメモリ制御部250Bからのセット信号RSTに基づいて、対応するアクセス要求SREQ1を出力したエントリSENTのフラグVをリセットする。
チェック回路CHKSは、フラグVがセットされたエントリSENTのうち、選択したエントリSENTのリセットを検出した場合に、カウンタCOUNTをリセットする。この後、チェック回路CHKSは、次のエントリSENTを選択し、フラグVのセットを検出した場合に、カウンタCOUNTにカウント動作を開始させる。
チェック回路CHKSは、警告通知WARNS1の出力の起因となったフラグVがリセットされた場合、回避通知AVIDS1を調停部240Bに出力する。すなわち、チェック回路CHKSは、選択したエントリSENTに保持されたアクセス要求SREQが処理された場合に回避通知AVIDS1を出力する。
なお、ポートMOP2のチェック回路CHKNは、回避通知AVIDS2を調停部240Bに出力する。ポートMIBP1のチェック回路CHKNは、回避通知AVIDS3を調停部240Bに出力する。ポートMIBP2のチェック回路CHKNは、回避通知AVIDS4を調停部240Bに出力する。
分周回路DIVおよびカウンタCOUNTは、図6に示した分周回路DIVおよびカウンタCOUNTと同一または同様である。すなわち、カウンタCOUNTは、チェック回路CHKSからの起動信号STT2に応答して、周波数が分周されたクロックに同期してカウント動作する。カウンタCOUNTは、カウンタ値が所定値に達した場合、警告通知WARNS1を調停部240Bに出力する。
すなわち、カウンタCOUNTは、着目する1つのエントリSENTにアクセス要求SREQ3が格納されてから所定時間Tmaxが経過したことに基づいて、警告通知WARNS1を調停部240Bに出力する。分周回路DIVおよびカウンタCOUNTは、起動信号STT2に応答して時間の計測を開始し、所定時間Tmaxを超えた場合に警告通知WARN1Sを出力するタイマとして機能する。
なお、ポートMOP2のカウンタCOUNTは、警告通知WARNS2を調停部240Bに出力する。ポートMIBP1のカウンタCOUNTは、警告通知WARNS3を調停部240Bに出力する。ポートMIBP2のカウンタCOUNTは、警告通知WARNS4を調停部240Bに出力する。
図8は、図5に示した調停部240Bの例を示している。調停部240Bは、フラグセット信号FSET0の生成回路SETGEN、フラグリセット信号FRST0の生成回路RSTGENおよびフリップフロップFFを有する。生成回路SETGENは、例えば、オア回路を含み、警告通知WARN1−WARN4、WARNS1−WARNS4の少なくいずれかがハイレベルの場合に、フラグセット信号FSET0をハイレベルに設定する。
生成回路RSTGENは、アクティブ状態の警告通知WARNに対応する回避通知AVIDが全てハイレベルになった場合に、フラグリセット信号FRST0をハイレベルに設定する。フリップフロップFFは、フラグセット信号FSET0をセット端子Sで受け、フラグリセット信号FRST0をリセット端子Rで受ける。フリップフロップFFは、フラグセット信号FSET0の立ち上がりエッジに同期してフラグ信号FLGをハイレベルに設定し、フラグリセット信号FRST0の立ち上がりエッジに同期してフラグ信号FLGをロウレベルに設定する。上述したように、ハイレベルのフラグ信号FLGは、設定通知FSETを示し、ロウレベルのフラグ信号FLGは、解除通知FRSTを示す。
なお、調停部240Bは、図8に示した回路に加えて、ポートMIP1、PFP1、MIP2、PFP2、MOP1、MOP3、MIPB1、MIPB2に保持されたアクセス要求REQを順次に選択する回路を有する。
図9は、図8に示した調停部240Bの動作の例を示している。この例では、警告通知WARN1、WARN2、WARNS1が順次にハイレベルに変化した後、回避通知AVID1、AVID2、AVIDS3が順次にハイレベルに変化する例を示している。他の警告通知WARNおよび他の回避通知AVIDは、出力されず、ロウレベルに維持される。
生成回路SETGENは、最初の警告通知WARN1の出力に応答して、フラグセット信号FSET0をハイレベルに設定する(図9(a))。フリップフロップFFは、フラグセット信号FSET0に応答してフラグ信号FLGをハイレベルに設定し、設定通知FSETを出力する(図9(b))。
この後、生成回路RSTGENは、警告通知WARNが出力された全てのポートPTから回避通知AVID1、AVID2、AVIDS3が出力されたことに基づいて、フラグリセット信号FRST0をハイレベルに設定する(図9(c))。フリップフロップFFは、フラグリセット信号FRST0に応答してフラグ信号FLGをロウレベルに設定し、解除通知FRSTを出力する(図9(d))。
なお、警告通知WARNを出力しないポートPTは、回避通知AVIDを出力しない。また、警告通知WARNを出力したポートPTは、フラグ信号FLGのハイレベルからロウレベルへの変化に基づいて、警告通知WARNおよび回避通知AVIDをロウレベルにリセットする(図9(e)、(f))。
図10は、図5に示したポートMIP1にアクセス要求NREQ1が供給される場合の情報処理装置100Bおよび演算処理装置200Bの動作の例を示している。すなわち、図10は、情報処理装置100Bおよび演算処理装置200Bの制御方法の例を示している。図10に示したフローは、例えば、ハードウエアにより実現される。なお、図10に示す各ステップは、動作を分かりやすくするための区分けであり、実際には、演算処理装置200Bのハードウエアが連動することにより、複数のステップが並列に実行されてもよい。
ポートMIP2にアクセス要求NREQ2が供給される場合の動作、ポートPFP1にアクセス要求NREQ3が供給される場合の動作、およびポートPFP2にアクセス要求NREQ4が供給される場合の動作も、図10と同様である。また、図10の動作が開始される前に、コア部CORE1は、少なくとも1つのアクセス要求NREQ1をポートMIP1のエントリNENTに格納し、アクセス要求NREQ1を格納したエントリNENTのフラグVを”1”にセットするものとする。例えば、図10に示すフローは、図6に示したポートMIP1のエントリ選択部ESELがアクセス要求NREQ1の1つを選択する頻度と同様の頻度で繰り返し実行される。
まず、ステップS10において、ポートMIP1は、着目する1つのエントリNENTのフラグN、Vの状態、フラグ信号FLGの状態、およびカウンタCOUNTの値をチェックする。そして、ポートMIP1は、警告通知WARN1または回避通知AVID1を出力するか否かを判断する。また、ステップS10では、調停部240Bは、警告通知WARN1および回避通知AVID1に基づいて、フラグ信号FLGのレベルを決定する。ステップS10の例は、図11に示す。
次に、ステップS12において、ポートMIP1の発行制御部REQCNTは、警告通知WARN1−WARN4、WARNS1−WARNS4のいずれかに基づいて調停部240Bからハイレベルのフラグ信号FLGを受けたか否かを判断する。警告通知WARN1−WARN4、WARNS1−WARNS4のいずれかに基づくハイレベルのフラグ信号FLGを受けた場合、発行制御部REQCNTは、ステップS14の動作を実行する。警告通知WARN1−WARN4、WARNS1−WARNS4のいずれかも出力されず、ロウレベルのフラグ信号FLGを受けた場合、発行制御部REQCNTは、ステップS16の動作を実行する。
ステップS14において、発行制御部REQCNTは、フラグNが”0”にリセットされ、フラグVが”1”にセットされたエントリNENTに保持されたアクセス要求NREQ1をエントリ選択部ESELに出力する。すなわち、警告通知WARN1に基づいてフラグ信号FLGがハイレベルに設定された場合、ポートMIP1は、フラグNがセットされていないアクセス要求NREQ1を調停部240Bに出力する。例えば、発行制御部REQCNTから出力されるアクセス要求NREQ1は、アドレス領域ADRに保持されたアドレスである。
このように、警告通知WARN1が出力された後にエントリNENTに投入されたアクセス要求NREQ1は、調停部240Bに出力されない。すなわち、警告通知WARN1の前にエントリに投入されたアクセス要求NREQ1と、警告通知WARN1の後にエントリに投入されたアクセス要求NREQ1とは、フラグNにより互いに区別される。
一方、ステップS16において、発行制御部REQCNTは、フラグNの値に拘わらず、フラグVが”1”にセットされたエントリNENTに保持されたアクセス要求NREQ1をエントリ選択部ESELに出力する。エントリ選択部ESELは、発行制御部REQCNTから受けるアクセス要求NREQ1の1つを調停部240Bに出力する。
ステップS18において、アクセス要求NREQ1が、調停部240Bにより選択され、キャッシュメモリ制御部250Bに出力された場合、ステップS20の動作に移行される。調停部240Bにより選択されたアクセス要求NREQ1は、キャッシュメモリ制御部250Bに出力される。アクセス要求NREQ1が調停部240Bにより選択されない場合、動作は完了する。
ステップS20において、キャッシュメモリ制御部250Bは、調停部240Bにより選択されたアクセス要求NREQ1が処理可能か否かを判定する。処理可能な場合、ステップS22の動作に移行される。処理可能でない場合、アクセス要求NREQ1はアボートされ、動作は完了する。ここで、アボートとは、アクセス要求NREQ1に対応するアクセス処理が実行されない状態である。アクセス要求NREQ1がアボートされた場合、アクセス要求NREQ1に対応するデータは読み出されず、ポートMIP1は、アクセス要求NREQ1を保持し続ける。他のポートに保持されたアクセス要求のアボートも同様である。
ステップS22において、キャッシュメモリ制御部250Bは、受けたアクセス要求NREQ1に基づいて、L2キャッシュメモリ270Bのキャッシュヒット/キャッシュミスを判定する。ステップS24において、キャッシュヒットの場合、ステップS26の動作に移行され、キャッシュミスの場合、図12に示すステップS40の動作に移行される。
次に、ステップS26において、キャッシュメモリ制御部250Bは、L2キャッシュメモリ270Bからデータを読み出し、読み出したデータをコアCORE1に出力する。次に、ステップS28において、キャッシュメモリ制御部250Bは、データの読み出しの完了に基づいて、アクセス要求NREQ1を保持したポートMIP1にリセット信号RSTを出力する。
そして、ステップS30において、ポートMIP1のチェック回路CHKNは、リセット信号RSTに基づいて、読み出し動作を実行したアクセス要求NREQ1を保持したエントリNENTのフラグVを”0”にリセットする。これにより、読み出し動作を実行したアクセス要求NREQ1が無効にされる。なお、ステップS28、S30は、ステップS22またはステップS26とともに実行されてもよい。
図11は、図10に示したステップS10の動作の例を示している。図11の動作は、ポートMIP1、MIP2、PFP1、PFP2のチェック回路CHKNの各々で実行される。ここでは、ポートMIP1のチェック回路CHKNにより実行される動作の例を説明する。
まず、ステップS102において、チェック回路CHKNは、警告通知WARN1−WARN4、WARNS1−WARNS4のいずれかが出力されたか否かを判定する。例えば、チェック回路CHKNは、フラグ信号FLGがハイレベルに維持される場合に、警告通知WARN1−WARN4、WARNS1−WARNS4が出力されたと判定する。警告通知WARN1−WARN4、WARNS1−WARNS4のいずれかが出力された場合、ステップS112の動作に移行される。警告通知WARN1−WARN4、WARNS1−WARNS4のいずれも出力されていない場合、ステップS104の動作に移行される。
ステップS104において、チェック回路CHKNは、着目する1つのエントリNENTのフラグNが”0”にリセットされ、フラグVが”1”にセットされたか否かを判定する。すなわち、着目するエントリNENTがアクセス要求NREQを保持したか否かが判定される。着目するエントリNENTがアクセス要求NREQを保持した場合、ステップS106の動作に移行され、着目するエントリNENTがアクセス要求NREQを保持していない場合、処理は完了する。
次に、ステップS106において、カウンタCOUNTは、着目する1つのエントリNENTにアクセス要求NREQ1が保持されてからの時間Tが所定時間Tmaxを超えたか否かを判定する。時間Tが所定時間Tmaxを超えた場合、アクセス要求NREQ1が長時間処理されないことによりコアCOREがハングアップする可能性があると判断され、動作はステップS108に移行される。時間Tが所定時間Tmaxを超えていない場合、ハングアップの可能性がないため、動作は終了する。
次に、ステップS108において、カウンタCOUNTは、アクセス要求NREQ1のエントリNENTへの保持時間Tが所定時間Tmaxを超えたことに基づいて、警告通知WARN1を調停部240Bに出力する。次に、ステップS110において、調停部240Bは、警告通知WARN1に基づいて、フラグ信号FLGをロウレベルからハイレベルに変化させ、動作を完了する。なお、ハイレベルのフラグ信号FLGを受けた各ポートMIP1、MIP2、PFP1、PFP2は、エントリNENTに新たなアクセス要求NREQが格納された場合に、フラグNをセットする。
一方、警告通知WARN1−WARN4、WARNS1−WARNS4のいずれかが出力された場合、ステップS112において、チェック回路CHKNは、ポートMIP1自身のカウンタCOUNTから警告通知WARN1が出力されたか否かを判定する。ポートMIP1自身から警告通知WARN1が出力された場合、ステップS114の動作に移行され、ポートMIP1自身から警告通知WARN1が出力されていない場合、動作は完了する。
ステップS114において、チェック回路CHKNは、着目する1つのエントリNENTのフラグNが”0”にリセットされ、フラグVが”0”にセットされたか否かを判定する。着目するエントリNENTがN=0、V=0の場合、警告通知WARN1の起因となったアクセス要求NREQ1が処理されたと判断され、ステップS116の動作に移行される。着目するエントリNENTがN=0、V=1の場合、警告通知WARN1の起因となったアクセス要求NREQ1が未だ処理されていないと判断され、処理は完了する。
ステップS116において、チェック回路CHKNは、アクセス要求NREQ1の処理により、ハングアップの可能性が回避されたと判断し、回避通知AVID1を調停部240Bに出力する。次に、ステップS118において、調停部240Bは、回避通知AVID1を受け、フラグ信号FLGをハイレベルからロウレベルに変化させる。
次に、ステップS120において、各ポートMIP1、MIP2、PFP1、PFP2のチェック回路CHKNは、フラグ信号FLGのハイレベルからロウレベルへの変化に基づいて、フラグNを”0”にリセットする。これにより、警告通知WARN1の後に各ポートMIP1、MIP2、PFP1、PFP2のエントリNENTに保持されたアクセス要求NREQ1は、次の警告通知WARN1−WARN4のいずれかが出力される場合に、古いアクセス要求NREQとして扱われる。そして、動作は完了する。
図12は、図5に示したポートMIBP1にアクセス要求SREQ3が供給される場合の情報処理装置100Bおよび演算処理装置200Bの動作の例を示している。すなわち、図12は、情報処理装置100Bおよび演算処理装置200Bの制御方法の例を示している。図12に示したフローは、例えば、ハードウエアにより実現される。なお、図12に示す各ステップは、動作を分かりやすくするための区分けであり、実際には、演算処理装置200Bのハードウエアが連動することにより、複数のステップが並列に実行されてもよい。
ポートMOP1にアクセス要求SREQ1が供給される場合の動作、ポートMOP2にアクセス要求SREQ2が供給される場合の動作、およびポートMIBP2にアクセス要求SREQ4が供給される場合の動作も、図12と同様である。また、図12の動作が開始される前に、キャッシュメモリ制御部250Bは、少なくとも1つのアクセス要求SREQ3をポートMIBP1のエントリSENTに格納するものとする。さらに、図12の動作が開始される前に、キャッシュメモリ制御部250Bは、アクセス要求SREQ3を格納したエントリSENTのフラグVを”1”に設定するものとする。例えば、図12に示すフローは、図7に示したポートMIBP1のエントリ選択部ESELがアクセス要求SREQ3の1つを選択する頻度と同様の頻度で繰り返し実行される。
まず、ステップS40において、ポートMIBP1は、着目する1つのエントリSENTのフラグVの状態およびカウンタCOUNTの値をチェックする。そして、ポートMIBP1は、警告通知WARNS3または回避通知AVIDS3を出力するか否かを判断する。また、調停部240Bは、警告通知WARNS3および回避通知AVIDS3に基づいて、フラグ信号FLGの論理レベルを決定する。ステップS40の例は、図13に示す。
次に、ステップS42において、アクセス要求SREQ3が、調停部240Bにより選択され、キャッシュメモリ制御部250Bに出力された場合、ステップS44の動作に移行される。アクセス要求SREQ3が調停部240Bにより選択されない場合、動作は完了する。
ステップS44において、キャッシュメモリ制御部250Bは、メモリアクセスコントローラ280Bにアクセス要求SREQ3を出力する。メモリアクセスコントローラ280Bは、キャッシュメモリ制御部250Bからのアクセス要求SREQ3に基づいて、記憶装置300にアクセスし、記憶装置300から読み出されるデータをデータバッファBUF1に出力する。
次に、ステップS46において、データバッファBUF1は、メモリアクセスコントローラ280Bにより格納されたデータを、L2キャッシュメモリ270Bおよびコア部CORE1に出力する。但し、メモリアクセスコントローラ280Bにより格納されたデータが、プリフェッチ命令であるアクセス要求SREQ1に基づいて記憶装置300から読み出された場合、データバッファBUF1は、データをコア部CORE1に出力しない。
次に、ステップS48において、キャッシュメモリ制御部250Bは、データの読み出しの完了に基づいて、アクセス要求SREQ3を保持したポートMIBP1にリセット信号RSTを出力する。例えば、データの読み出しの完了は、メモリアクセスコントローラ280BによるデータバッファBUF1へのデータの格納、またはデータバッファBUF1からのデータの出力により判定される。
そして、ステップS50において、ポートMIBP1のチェック回路CHKSは、リセット信号RSTに基づいて、アクセス要求SREQ3を保持したエントリSENTのフラグVを”0”にリセットする。これにより、アクセス要求SREQ3が無効にされる。そして、動作が完了する。なお、ステップS48、S50は、ステップS44またはステップS46とともに実行されてもよい。
図13は、図11に示したステップS40の動作の例を示している。図11と同様の動作については、詳細な説明は省略する。図13に示したステップS402、S406、S408、S410、S412、S416、S418は、図10に示したステップS102、S106、S108、S110、S112、S116、S118と同様の動作である。なお、図13の動作は、ポートMOP1、MOP2、MIBP1、MIBP2のチェック回路CHKSの各々で実行される。ここでは、ポートMIBP1のチェック回路CHKSにより実行される動作の例を説明する。
まず、ステップS402において、チェック回路CHKNは、警告通知WARN1−WARN4、WARNS1−WARNS4のいずれかが出力されたか否かを判定する。警告通知WARN1−WARN4、WARNS1−WARNS4のいずれも出力されていない場合、ステップS404において、チェック回路CHKSは、着目する1つのエントリSENTのフラグVが”1”にセットされたか否かを判定する。すなわち、着目するエントリNENTがアクセス要求SREQを保持したか否かが判定される。着目するエントリNENTがアクセス要求SREQを保持した場合、ステップS406の動作に移行され、着目するエントリNENTがアクセス要求SREQを保持していない場合、処理は完了する。
ステップS406において、カウンタCOUNTは、着目する1つのエントリSENTにアクセス要求SREQ3が保持されてからの時間Tが所定時間Tmaxを超えたか否かを判定する。時間Tが所定時間Tmaxを超えていない場合、ハングアップの可能性がないため、動作は終了する。時間Tが所定時間Tmaxを超えた場合、ステップS408において、カウンタCOUNTは、警告通知WARNS3を調停部240Bに出力する。
次に、ステップS410において、調停部240Bは、警告通知WARNS1に基づいて、フラグ信号FLGをロウレベルからハイレベルに変化させることで設定通知FSETをポートMIP1、MIP2、PFP1、FPF2に出力し、動作を完了する。
一方、警告通知WARN1−WARN4、WARNS1−WARNS4のいずれかが出力された場合、ステップS412において、チェック回路CHKSは、ポートMIBP1自身のカウンタCOUNTから警告通知WARNS3が出力されたか否かを判定する。警告通知WARNS3が出力されていない場合、動作は完了する。
警告通知WARNS3が出力された場合、ステップS414において、チェック回路CHKSは、着目する1つのエントリSENTのフラグVが”0”にセットされたか否かを判定する。着目するエントリSENTがV=1に設定された場合、処理は完了する。着目するエントリSENTがV=0に設定された場合、ステップS416において、チェック回路CHKSは、アクセス要求SREQ3の処理により、ハングアップの可能性が回避されたと判断し、回避通知AVIDS3を調停部240Bに出力する。次に、ステップS418において、調停部240Bは、回避通知AVIDS3を受け、フラグ信号FLGをハイレベルからロウレベルに変化させることで、解除通知FRSTをポートMIP1、MIP2、PFP1、PFP2に出力し、動作を完了する。
図14は、図5に示した情報処理装置100Bおよび演算処理装置200Bの動作の例を示している。すなわち、図14は、情報処理装置100Bおよび演算処理装置200Bの制御方法の例を示している。図2および図3と同一または同様の動作については、詳細な説明は省略する。エントリNENT、SENTの状態を示す網掛けや斜線等のパターンの意味は、図2および図3と同じである。図14において、白抜きの下向きの矢印は、調停部240Bによりアクセス要求が選択されることを示している。
この例では、説明を簡単にするために、演算処理装置200Bが4つのポートPT(MIP1、MIP2、MIBP1、MIBP2)を有するものとする。太枠で示したエントリNENT、SENTは、各ポートMIP1、MIP2のチェック回路CHKNおよび各ポートMIBP1、MIBP2のチェック回路CHKSにより着目されたエントリである。
初期の状態(a)において、ポートMIPB1の全てのエントリSENTは、アクセス要求SREQ3(図5)を保持する。ポートMIP2は、コア部CORE2からアクセス要求NREQ2を受ける。調停部240Bは、ポートMIP1のエントリNENTに保持されたアクセス要求NREQ1(図5)を選択し、キャッシュメモリ制御部250Bに出力する。
キャッシュメモリ制御部250Bは、アクセス要求NREQ1に基づいてキャッシュミスを判定し、派生命令であるアクセス要求SREQ3の発行が必要と判断する。しかし、ポートMIPB1のエントリSENTが全て埋まっているため、キャッシュメモリ制御部250Bは、アクセス要求SREQ3を発行しない。すなわち、ポートMIP1に保持されたアクセス要求NREQ1はアボートされる。
次に、状態(b)において、調停部240Bは、ポートMIP2のエントリNENTに保持されたアクセス要求NREQ2を選択し、キャッシュメモリ制御部250Bに出力する。キャッシュメモリ制御部250Bは、アクセス要求NREQ2に基づいてキャッシュヒットを判定し、L2キャッシュメモリ270Bにアクセスする。キャッシュメモリ制御部250Bは、L2キャッシュメモリ270Bから読み出したデータをコア部CORE2に出力し、リセット信号RST(図5)および完了信号FIN(図5)を出力する。
ポートMIP1のカウンタCOUNTは、着目するエントリNENTにアクセス要求NREQ1が保持されてから所定時間Tmaxが経過したことに基づいて、警告通知WARN1を出力する。調停部240Bは、警告通知WARN1に基づいてフラグ信号FLGをロウレベルからハイレベルに変化させることで、設定通知FSETを出力する。
次に、状態(c)において、ポートMIP1は、コア部CORE1からアクセス要求NREQ1を受ける。ポートMIP1は、設定通知FSET後に受けたアクセス要求NREQ1を、設定通知FSET前に保持したアクセス要求NREQ1と区別して保持する(状態(d)で”N”を付けたエントリNENT)。
調停部240Bは、ポートMIBP1のエントリSENTに保持されたアクセス要求SREQ3を選択し、キャッシュメモリ制御部250Bに出力する。キャッシュメモリ制御部250Bは、アクセス要求SREQ3をメモリアクセスコントローラ280Bに出力し、アクセス要求SREQ3に対応するデータを記憶装置300から読み出す。この後、キャッシュメモリ制御部250Bは、記憶装置300から読み出されたデータを、データバッファBUF1を介してコア部CORE2に出力し、リセット信号RSTおよび完了信号FINを出力する。
次に、状態(d)において、ポートMIP2は、コア部CORE2からアクセス要求NREQ2を受ける。ポートMIP2は、設定通知FSET後に受けたアクセス要求NREQ2を、設定通知FSET前に保持したアクセス要求NREQ2と区別して保持する(状態(e)で”N”を付けたエントリNENT)。
また、ポートMIP2のカウンタCOUNTは、着目するエントリNENTにアクセス要求NREQ2が保持されてから所定時間Tmaxが経過したことに基づいて、警告通知WARN2を出力する。調停部240Bは、ポートMIP1からの警告通知WARN1を受けるため、警告通知WARN2を無視する。
調停部240Bは、ポートMIBP2のエントリSENTに保持されたアクセス要求SREQ4(図5)を選択し、キャッシュメモリ制御部250Bに出力する。キャッシュメモリ制御部250Bは、アクセス要求SREQ4をメモリアクセスコントローラ280Bに出力し、アクセス要求SREQ4に対応するデータを記憶装置300から読み出す。
この後、キャッシュメモリ制御部250Bは、記憶装置300から読み出されたデータを、データバッファBUF2を介してコア部CORE2に出力する。また、キャッシュメモリ制御部250Bは、コア部CORE2に完了信号FINを出力し、ポートMIBP2にリセット信号RSTを出力する。ポートMIBP2のチェック回路CHKSは、リセット信号RSTを受け、着目するエントリSENTに保持されたアクセス要求SREQ4が処理されたことを検出し、着目するエントリSENTを切り替える。
次に、状態(e)において、調停部240Bは、ポートMIP1のエントリNENTに保持されたアクセス要求NREQ1を再び選択し、キャッシュメモリ制御部250Bに出力する。キャッシュメモリ制御部250Bは、アクセス要求NREQ1に基づいてキャッシュミスを判定し、アクセス要求NREQ1に基づいて派生命令であるアクセス要求SREQ3を生成する。ポートMIBP1のエントリSENTに空きがあるため、キャッシュメモリ制御部250Bは、ポートMIBP1にアクセス要求SREQ3を出力する。
キャッシュメモリ制御部250Bは、ポートMIBP1へのアクセス要求SREQ3の出力に基づいて、ポートMIP1にリセット信号RSTを出力する。ポートMIP1のチェック回路CHKNは、リセット信号RSTを受け、着目するエントリNENTに保持されたアクセス要求NREQ1が処理されたことを検出し、着目するエントリNENTを切り替える。
また、ポートMIP1のチェック回路CHKNは、着目するエントリNENTに所定時間Tmaxを超えて保持されたアクセス要求NREQ1が受け付けられたため、回避通知AVID1を調停部240Bに出力する。但し、調停部240Bは、他の警告通知WARN2に対応する回避通知AVID2を受けていないため、回避通知AVID1を無視する。
次に、状態(f)において、ポートMIPB1は、キャッシュメモリ制御部250Bからのアクセス要求SREQ3を空いているエントリSENTに保持する。また、調停部240Bは、ポートMIP2のエントリNENTに保持されているアクセス要求NREQ2を選択し、キャッシュメモリ制御部250Bに出力する。キャッシュメモリ制御部250Bは、アクセス要求NREQ2に基づいてキャッシュヒットを判定し、L2キャッシュメモリ270Bにアクセスする。キャッシュメモリ制御部250Bは、L2キャッシュメモリ270Bから読み出したデータをコア部CORE2に出力する。また、キャッシュメモリ制御部250Bは、コア部CORE2に完了信号FINを出力し、ポートMIP2にリセット信号RSTを出力する。
ポートMIP2のチェック回路CHKNは、リセット信号RSTを受け、着目しているエントリNENTに保持されたアクセス要求NREQ2が処理されたことを検出し、着目するエントリNENTを切り替える。また、ポートMIP2のチェック回路CHKNは、着目するエントリNENTに所定時間Tmaxを超えて保持されたアクセス要求NREQ2が処理されたため、回避通知AVID2を調停部240Bに出力する。
調停部240Bは、重複して発生された警告通知WARN1、WARN2に対応する回避通知AVID1、AVID2を両方受けたため、フラグ信号FLGをハイレベルからロウレベルに変化させることで、解除通知FRSTを出力する。警告通知WARNおよび回避通知AVIDを出力するポートMIP1、MIP2は、解除通知FRSTに応答して、警告通知WARNおよび回避通知AVIDの出力を停止する。ポートMIP1は、フラグNをリセットし、警告通知WARNの前に保持されたアクセス要求NREQ1と警告通知WARN1の後に保持されたアクセス要求NREQ1とを、区別することなく保持する。同様に、ポートMIP2は、フラグNをリセットし、警告通知WARNの前に保持されたアクセス要求NREQ2と警告通知WARN1の後に保持されたアクセス要求NREQ2とを、区別することなく保持する。
次に、状態(g)において、調停部240Bは、ポートMIBP1のエントリSENTに保持されたアクセス要求SREQ3を選択し、キャッシュメモリ制御部250Bに出力する。キャッシュメモリ制御部250Bは、アクセス要求SREQ3をメモリアクセスコントローラ280Bに出力し、アクセス要求SREQ3に対応するデータを記憶装置300から読み出す。この後、キャッシュメモリ制御部250Bは、記憶装置300から読み出されたデータを、データバッファBUF1を介してコア部CORE1に出力する。また、キャッシュメモリ制御部250Bは、コア部CORE1に完了信号FINを出力する。また、キャッシュメモリ制御部250Bは、アクセス要求SREQ3の出力に基づいて、ポートMIBP1にリセット信号RSTを出力する。
なお、実際の動作では、アクセス要求SREQ3をメモリアクセスコントローラ280Bに出力後、記憶装置300からデータが読み出されるアクセス時間は、L2キャッシュメモリ270Bのアクセス時間よりも長い。しかし、この例では、説明を簡単にするために、状態(g)の期間に記憶装置300からデータが読み出され、完了信号FINが出力されるものとする。
次に、状態(h)において、調停部240Bは、ポートMIBP2のエントリSENTに保持されたアクセス要求SREQ4を選択し、キャッシュメモリ制御部250Bに出力する。キャッシュメモリ制御部250Bは、アクセス要求SREQ4をメモリアクセスコントローラ280Bに出力し、アクセス要求SREQ4に対応するデータを記憶装置300から読み出す。
この後、キャッシュメモリ制御部250Bは、記憶装置300から読み出されたデータを、データバッファBUF2を介してコア部CORE2に出力する。また、キャッシュメモリ制御部250Bは、コア部CORE2に完了信号FINを出力し、ポートMIBP2にリセット信号RSTを出力する。ポートMIBP2のチェック回路CHKSは、リセット信号RSTを受け、着目するエントリSENTに保持されたアクセス要求SREQ4が処理されたことを検出し、着目するエントリSENTを切り替える。
以上、この実施形態においても、図1および図3に示した実施形態と同様に、派生要求であるアクセス要求SREQの処理が進まない不具合を解消でき、アクセス要求NREQの処理が滞ることを回避できる。この結果、古いアクセス要求NREQが処理されないことでコアCOREがハングアップする確率を従来に比べて下げることができ、情報処理装置100Bおよび演算処理装置200Bの性能の低下を抑制できる。
さらに、図6に示した発行制御部REQCNTにより、フラグ信号FLG、フラグN、Vに基づいて、エントリNENT毎にアクセス要求NREQを調停部240Bに出力するか否かを制御できる。チェック回路CHKNにより、フラグNをセットすることで、フラグ信号FLGがハイレベルの期間(設定通知FSETの期間)にポートMIP1、MIP2、PFP1、PFP2に新たに格納されたアクセス要求NREQを識別できる。これにより、フラグ信号FLGがハイレベルの期間に、警告通知WARN1を出力する前の古いアクセス要求NREQを選択的に調停部240Bに出力できる。
チェック回路CHKNにより、1つのエントリNENTに着目し、着目するエントリNENTの状態に応じて、カウンタCOUNTを動作させることで、カウンタCOUNTの数をエントリNENTの数に拘わらず最小限にできる。この結果、エントリNENT毎にカウンタCOUNTを設ける場合に比べて、演算処理装置200Bの回路規模を小さくできる。
図15は、別の実施形態における情報処理装置100Cおよび演算処理装置200Cの例を示している。図5と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。
情報処理装置100Cは、演算処理装置200Cおよび記憶装置300を有する。例えば、情報処理装置100Cは、サーバやパーソナルコンピュータ等のコンピュータ装置であり、演算処理装置200Cは、CPU等のプロセッサである。
情報処理装置100C、演算処理装置200CおよびL2キャッシュ部202Cは、図5に示した調停部240Bの代わりに調停部240Cを有する。情報処理装置100C、演算処理装置200CおよびL2キャッシュ部202Cのその他の構成は、図5に示した情報処理装置100B、演算処理装置200BおよびL2キャッシュ部202Bと同様である。
図16は、図15に示した調停部240Cの例を示している。図8と同一または同様の要素については、詳細な説明は省略する。調停部240Cは、生成回路SETGEN21、SETGEN22、RSTGEN、オア回路ORおよびフリップフロップFFを有する。また、調停部240Cは、図16に示した回路に加えて、ポートMIP1、PFP1、MIP2、PFP2、MOP1、MOP3、MIPB1、MIPB2に保持されたアクセス要求REQを順次に選択する回路を有する。
生成回路SETGEN21は、マスク回路MSK11、MSK12、MSK13を有する。マスク回路MSK11は、警告通知WARN1、WARNS1、WARNS3を受けていない期間に、警告通知WARN3に応答して、フラグセット信号FSET0(PFP1)を出力する。マスク回路MSK11は、警告通知WARN1、WARNS1、WARNS3のいずれかを受ける間、警告通知WARN3に応答するフラグセット信号FSET0(PFP1)の出力をマスクする。
マスク回路MSK12は、警告通知WARNS1、WARNS3を受けていない期間に、警告通知WARN1に応答して、フラグセット信号FSET0(MIP1)を出力する。マスク回路MSK12は、警告通知WARNS1、WARNS3のいずれかを受ける間、警告通知WARN1に応答するフラグセット信号FSET0(MIP1)の出力をマスクする。マスク回路MSK13は、警告通知WARNS3を受けていない期間に、警告通知WARNS1に応答して、フラグセット信号FSET0(MOP1)を出力する。マスク回路MSK13は、警告通知WARNS3を受ける間、警告通知WARNS1に応答するフラグセット信号FSET0(MOP1)の出力をマスクする。
生成回路SETGEN22は、マスク回路MSK21、MSK22、MSK23を有する。マスク回路MSK21は、警告通知WARN2、WARNS2、WARNS4を受けていない期間に、警告通知WARN4に応答して、フラグセット信号FSET0(PFP2)を出力する。マスク回路MSK21は、警告通知WARN2、WARNS2、WARNS4のいずれかを受ける間、警告通知WARN4に応答するフラグセット信号FSET0(PFP2)の出力をマスクする。
マスク回路MSK22は、警告通知WARNS2、WARNS4を受けていない期間に、警告通知WARN2に応答して、フラグセット信号FSET0(MIP2)を出力する。マスク回路MSK22は、警告通知WARNS2、WARNS4のいずれかを受ける間、警告通知WARN2に応答するフラグセット信号FSET0(MIP2)の出力をマスクする。マスク回路MSK23は、警告通知WARNS4を受けていない期間に、警告通知WARNS2に応答して、フラグセット信号FSET0(MOP2)を出力する。マスク回路MSK23は、警告通知WARNS4を受ける間、警告通知WARNS2に応答するフラグセット信号FSET0(MOP2)の出力をマスクする。
オア回路OR4は、フラグセット信号FSET0(PFP1)、FSET0(MIP1)、FSET0(MOP1)、FSET0(MOP1)、FSET0(PFP2)、FSET0(MIP2)、FSET0(MOP2)、FSET0(MOP2)のいずれかを受けた場合に、フラグセット信号FSET0を出力する。なお、フラグセット信号FSET0(MIBP1)は、警告通知WARNS3に応答して出力され、フラグセット信号FSET0(MIBP2)は、警告通知WARNS4に応答して出力される。
調停部240Cは、フラグセット信号FSET0(PFP1)、FSET0(MIP1)、FSET0(MOP1)、FSET0(MOP1)、FSET0(PFP2)、FSET0(MIP2)、FSET0(MOP2)、FSET0(MOP2)の各々に基づいてフラグ信号FLGをロウレベルからハイレベルに設定する。
調停部240Cは、フラグセット信号FSET0(PFP1)を出力する場合、ポートPFP1、MIP1、MOP1、MIBP1から出力されるアクセス要求REQのいずれかを順次に選択する。調停部240Cは、フラグセット信号FSET0(MIP1)を出力する場合、ポートPFP1から出力されるアクセス要求REQを選択しない。調停部240Cは、フラグセット信号FSET0(PFP2)を出力する場合、ポートPFP2、MIP2、MOP2、MIBP2から出力されるアクセス要求REQのいずれかを順次に選択する。調停部240Cは、フラグセット信号FSET0(MIP2)を出力する場合、ポートPFP2から出力されるアクセス要求REQを選択しない。
調停部240Cは、フラグセット信号FSET0(MIP1)を出力する場合、ポートMIP1、MOP1、MIBP1から出力されるアクセス要求REQのいずれかを順次に選択する。調停部240Cは、フラグセット信号FSET0(MIP2)を出力する場合、ポートMIP2、MOP2、MIBP2から出力されるアクセス要求REQのいずれかを順次に選択する。
調停部240Cは、フラグセット信号FSET0(MOP1)を出力する場合、ポートMOP1、MIBP1から出力されるアクセス要求REQのいずれかを順次に選択する。調停部240Cは、フラグセット信号FSET0(MOP1)を出力する場合、ポートPFP1、MIP1から出力されるアクセス要求REQを選択しない。調停部240Cは、フラグセット信号FSET0(MOP2)を出力する場合、ポートMOP2、MIBP2から出力されるアクセス要求REQのいずれかを順次に選択する。調停部240Cは、フラグセット信号FSET0(MOP2)を出力する場合、ポートPFP2、MIP2から出力されるアクセス要求REQを選択しない。
調停部240Cは、フラグセット信号FSET0(MIBP1)を出力する場合、ポートMIBP1から出力されるアクセス要求REQのいずれかを順次に選択する。調停部240Cは、フラグセット信号FSET0(MIBP1)を出力する場合、ポートPFP1、MIP1、MOP1から出力されるアクセス要求REQを選択しない。調停部240Cは、フラグセット信号FSET0(MIBP2)を出力する場合、ポートMIBP2から出力されるアクセス要求REQのいずれかを順次に選択する。調停部240Cは、フラグセット信号FSET0(MIBP2)を出力する場合、ポートPFP2、MIP2、MOP2から出力されるアクセス要求REQを選択しない。
この実施形態では、例えば、派生命令であるアクセス要求SREQを保持するポートMOP1から警告通知WARNS1が出力された場合、調停部240Cは、ポートPFP1、MIP1に保持されたアクセス要求NREQを選択しない。換言すれば、調停部240Cは、所定時間Tmaxを超えるアクセス要求SREQを保持するポートPTが存在する場合、派生命令を優先的に調停する。
これにより、例えば、ポートMOP1、MIBP1に保持されたアクセス要求SREQを優先的に処理し、ポートMOP1、MIBP1のエントリSENTを空けることが可能になる。したがって、回避通知AVIDSが出力された後に、ポートMIP1、PFP1に保持されたアクセス要求NREQに基づいて発生する派生命令を、ポートMOP1、MIBP1に保持する可能性を向上できる。この結果、調停部240Cにより選択されるアクセス要求NREQがアボートされる確率を下げることができ、演算処理装置200Cおよび情報処理装置100Cの性能を向上できる。
図17は、図15に示した情報処理装置100Cおよび演算処理装置200Cの動作の例を示している。すなわち、図17は、情報処理装置100Cおよび演算処理装置200Cの制御方法の例を示している。図14と同一または同様の動作については、詳細な説明は省略する。この例においても、図14と同様に、演算処理装置200Cが4つのポートPT(MIP1、MIP2、MIBP1、MIBP2)を有するものとする。
ポートMIP1、MIP2における状態(a)から状態(d)の動作は、図14と同様である。状態(a)において、ポートMIBP1のカウンタCOUNTは、着目するエントリSENTにアクセス要求SREQ3が保持されてから所定時間Tmaxが経過したことに基づいて、警告通知WARNS3を出力する。調停部240Cは、警告通知WARNS3に基づいてフラグ信号FLGをロウレベルからハイレベルに変化させ、設定通知FSETを出力する。
この後、状態(b)から状態(f)において、調停部240Cは、警告通知WARNS3に基づいて、ポートMIBP1、MIBP2に保持されたアクセス要求SREQ(すなわち、派生命令)を優先的に順次に選択する。換言すれば、状態(b)から状態(f)において、ポートMIP1、MIP2に保持されたアクセス要求NREQは、選択されない。
状態(f)において、調停部240Cは、ポートMIBP1のエントリSENTに保持されたアクセス要求SREQ3を選択し、キャッシュメモリ制御部250Bに出力する。ポートMIBP1のチェック回路CHKSは、リセット信号RSTを受け、着目するエントリSENTに保持されたアクセス要求SREQ3が処理されたことを検出し、着目するエントリSENTを切り替える。
また、ポートMIBP1のチェック回路CHKSは、着目するエントリSENTに所定時間Tmaxを超えて保持されたアクセス要求SREQ3が処理されたため、回避通知AVIDS3を調停部240Cに出力する。調停部240Cは、回避通知AVIDS3に応じて、フラグ信号FLGをハイレベルからロウレベルに変化させ、解除通知FRSTを出力する。ポートMIP1、MIP2は、ロウレベルのフラグ信号FLGに応答して、警告通知WARN1、WARN2の出力を停止する。また、ポートMIP1、MIP2は、フラグNをリセットし、警告通知WARN1、WARN2の出力前に保持されたアクセス要求NREQと警告通知WARN1、WARN2の出力後に保持されたアクセス要求NREQとを、区別することなく保持する。
状態(g)において、調停部240Cは、ポートMIP1のエントリNENTに保持されたアクセス要求NREQ1を再び選択し、キャッシュメモリ制御部250Bに出力する。キャッシュメモリ制御部250Bは、アクセス要求NREQ1に基づいてキャッシュミスを判定し、アクセス要求NREQ1に基づいて派生命令であるアクセス要求SREQ3が必要と判断する。
ポートMIBP1のエントリSENTは、状態(b)から状態(f)による動作により、状態(a)に比べて十分に空くため、キャッシュメモリ制御部250Bは、ポートMIBP1にアクセス要求SREQ3を出力可能である。この例では、アクセス要求NREQ1がアボートされることなく選択されるため、ポートMIP1から再び警告通知WARN1が出力されることはない。
キャッシュメモリ制御部250Bは、ポートMIBP1へのアクセス要求SREQ3の出力に基づいて、ポートMIP1にリセット信号RSTを出力する。ポートMIP1のチェック回路CHKNは、リセット信号RSTを受け、着目するエントリNENTに保持されたアクセス要求NREQ1が処理されたことを検出し、着目するエントリNENTを切り替える。
状態(h)において、ポートMIPB1は、キャッシュメモリ制御部250Bからのアクセス要求SREQ3を空きのエントリSENTに保持する。調停部240Cは、ポートMIP2のエントリNENTに保持されたアクセス要求NREQ2を選択し、キャッシュメモリ制御部250Bに出力する。
以上、この実施形態では、調停部240Cは、警告通知WARN、WARNSを出力したポートPTに応じて、優先的に選択するアクセス要求NREQ、SREQを決定する。例えば、ポートMIBP1に所定時間Tmaxを超えてアクセス要求SREQが保持される場合、調停部240Cは、ポートMIBP1、MIBP2に保持されたアクセス要求SREQを優先的に選択する。これにより、派生命令が保持されるポートMIBP1、MIBP2のエントリSENTを迅速に空けることができ、新たに派生命令が発生する場合に、アボートさせることなくエントリSENTに保持できる。この結果、古いアクセス要求NREQが処理されないことでコアCOREがハングアップする確率を従来に比べて下げることができ、情報処理装置100Cおよび演算処理装置200Cの性能の低下を抑制できる。
図18は、別の実施形態における情報処理装置100Dおよび演算処理装置200Dの例を示している。図5と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。
この実施形態の情報処理装置100Dは、演算処理装置200Dおよび記憶装置300を有する。例えば、情報処理装置100Dは、サーバやパーソナルコンピュータ等のコンピュータ装置であり、演算処理装置200Dは、CPU等のプロセッサである。
この実施形態では、ポートMIP1、MIP2、PFP1、PFP2、MOP1、MOP2、MIBP1、MIBP2が、図5に示したポートMIP1、MIP2、PFP1、PFP2、MOP1、MOP2、MIBP1、MIBP2と相違する。情報処理装置100D、演算処理装置200DおよびL2キャッシュ部202Dのその他の構成は、図5に示した情報処理装置100B、演算処理装置200BおよびL2キャッシュ部202Bと同様である。
図19は、図18に示したポートMIP1、MIP2、PFP1、PFP2の例を示している。図6と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。ポートMIP1、MIP2、PFP1、PFP2は、互いに同一または同様の構成であるため、ここでは、ポートMIP1について説明する。
ポートMIP1は、図6に示したチェック回路CHKNの代わりにチェック回路CHKN2を有する。また、ポートMIP1は、各エントリNENTに対応する4つのカウンタCOUNTとオア回路ORNを有する。各カウンタCOUNTは、分周回路DIVにより周波数が分周されたクロックに同期してカウント動作する。分周回路DIVおよび各カウンタCOUNTは、タイマとして機能する。タイマは、エントリNENTにそれぞれ対応して設けられ、対応する起動信号STT1(STT10−STT13)に応答して時間の計測を開始し、所定時間Tmaxを超えた場合に警告通知WARN10を出力する。
すなわち、各カウンタCOUNTは、対応するエントリNENTにアクセス要求NREQ1が格納されてから所定時間Tmaxが経過したことに基づいて、警告通知WARN1の元となる信号WARN10をオア回路ORNに出力する。オア回路ORNは、カウンタCOUNTのいずれかからの信号WARN10を受けた場合に、警告通知WARN1を調停部240Bに出力する。
チェック回路CHKN2は、フラグ信号FLGがロウレベルの期間(解除通知FRSTの期間)に、各エントリNENTのフラグVのセットを検出した場合に、対応するカウンタCOUNTにカウント動作を開始させる起動信号STT1を出力する。あるいは、チェック回路CHKN2は、フラグ信号FLGがハイレベルからロウレベルに変化したタイミング(解除通知FRSTの出力タイミング)で、各エントリNENTのフラグVがセットされたことを検出した場合に起動信号STT1を出力する。
チェック回路CHKN2は、各エントリNENTのフラグVがリセットされた場合に、対応するカウンタCOUNTの動作を停止させ、カウンタ値をリセットする。さらに、チェック回路CHKN2は、フラグ信号FLGがハイレベルの期間(設定通知FSETの期間)に、警告通知WARN10を出力する全てのカウンタCOUNTに対応するフラグVがリセットされた場合、回避通知AVID1を調停部240Bに出力する。
このように、チェック回路CHKN2は、各エントリNENTにアクセス要求NREQが保持された場合に起動信号STT1を出力し、各エントリNENTに保持されたアクセス要求NREQが処理された場合に回避通知AVID1を出力する。
チェック回路CHKN2において、カウンタCOUNTを制御する機能を除く機能は、図6に示したチェック回路CHKNの機能と同様である。なお、フラグ信号FLGがロウレベルの期間に、フラグNがリセットされる場合、図18に示したポートMIP1、MIP2、PFP1、PFP2は、図19のマスク回路MSKの代わりに図23に示すマスク回路MSKを有してもよい。すなわち、各マスク回路MSKは、フラグNの論理を反転し、反転した論理をAND回路の入力に出力するインバータIVを、NAND回路の代わりに有してもよい。この場合、マスク回路MSKは、フラグ信号FLGを受けることなく、バッファBUFのイネーブル端子ENを制御できる。
図20は、図18に示したポートMOP1、MOP2、MIBP1、MIBP2の例を示している。図7と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。ポートMOP1、MOP2、MIBP1、MIBP2は、互いに同一または同様の構成であるため、ここでは、ポートMIBP1について説明する。
ポートMIBP1は、図7に示したチェック回路CHKSの代わりにチェック回路CHKS2を有する。また、ポートMIBP1は、各エントリSENTに対応する4つのカウンタCOUNTとオア回路ORSを有する。各カウンタCOUNTは、分周回路DIVにより周波数が分周されたクロックに同期してカウント動作する。分周回路DIVおよび各カウンタCOUNTは、タイマとして機能する。タイマは、エントリSENTにそれぞれ対応して設けられ、対応する起動信号STT2(STT20−STT23)に応答して時間の計測を開始し、所定時間Tmaxを超えた場合に警告通知WARNS10を出力する。
すなわち、各カウンタCOUNTは、対応するエントリSENTにアクセス要求SREQ3が格納されてから所定時間Tmaxが経過したことに基づいて、警告通知WARNS1の元となる信号WARNS10をオア回路ORSに出力する。オア回路ORSは、カウンタCOUNTのいずれかからの信号WARNS10を受けた場合に、警告通知WARNS1を調停部240Bに出力する。
チェック回路CHKS2は、各エントリSENTのフラグVのセットを検出した場合に、対応するカウンタCOUNTにカウント動作を開始させる。チェック回路CHKS2は、各エントリSENTのフラグVがリセットされた場合に、対応するカウンタCOUNTの動作を停止させ、カウンタ値をリセットする。さらに、チェック回路CHKS2は、警告通知WARNS10を出力する全てのカウンタCOUNTに対応するフラグVがリセットされた場合、回避通知AVIDS1を調停部240Bに出力する。
このように、チェック回路CHKS2は、各エントリSENTにアクセス要求SREQが保持された場合に起動信号STT2を出力し、各エントリNENTに保持されたアクセス要求SREQが処理された場合に回避通知AVIDS1を出力する。チェック回路CHKS2において、カウンタCOUNTを制御する機能を除く機能は、図7に示したチェック回路CHKSの機能と同様である。
図21および図22は、図18に示した情報処理装置100Dおよび演算処理装置200Dの動作の例を示している。すなわち、図21および図22は、情報処理装置100Dおよび演算処理装置200Dの制御方法の例を示している。図14と同一または同様の動作については、詳細な説明は省略する。この例においても、図14と同様に、演算処理装置200Dが4つのポートPT(MIP1、MIP2、MIBP1、MIBP2)を有するものとする。
この実施形態では、図19に示したチェック回路CHKN2および図20に示したチェック回路CHKS2は、各エントリNENT、SENTに保持されたアクセス要求NREQ、SREQに基づいて、対応するカウンタCOUNTを動作させる。このため、図14に太枠で示した”着目するエントリNENT”および”着目するエントリSENT”は存在しない。ポートMIP2、MIBP1、MIBP2の動作は、図14と同様である。
状態(b)において、ポートMIP1のカウンタCOUNTの1つは、対応するエントリNENTにアクセス要求NREQ1が保持されてから所定時間Tmaxが経過したことに基づいて、警告通知WARN1(WARN10)を出力する。調停部240Bは、警告通知WARN1に基づいてフラグ信号FLGをロウレベルからハイレベルに変化させて、設定通知FSETを出力する。
この後、状態(d)において、ポートMIP1のカウンタCOUNTの別の1つは、対応するエントリNENTにアクセス要求NREQ1が保持されてから所定時間Tmaxが経過したことに基づいて、警告通知WARN10を出力する。しかし、状態(b)において、警告通知WARN1が出力されるため、警告通知WARN1は、例えば、ハイレベルに維持される。
次に、状態(e)において、調停部240Bは、ポートMIP1のエントリNENTに保持されたアクセス要求NREQ1を再び選択し、キャッシュメモリ制御部250Bに出力する。キャッシュメモリ制御部250Bは、アクセス要求NREQ1に基づいてキャッシュミスを判定し、アクセス要求NREQ1に基づいて派生命令であるアクセス要求SREQ3が必要と判断する。ポートMIBP1のエントリSENTに空きがあるため、キャッシュメモリ制御部250Bは、ポートMIBP1にアクセス要求SREQ3を出力する。
但し、この実施形態では、ポートMIP1の別のエントリNENTに対応するカウンタCOUNTから警告通知WARN10が出力されるため、図19に示したチェック回路CHKN2は、回避通知AVID1を出力しない。
図22の状態(i)において、調停部240Bは、ポートMIP1のエントリNENTに保持されたアクセス要求NREQ1を選択し、キャッシュメモリ制御部250Bに出力する。キャッシュメモリ制御部250Bは、アクセス要求NREQ1に基づいてキャッシュミスを判定し、アクセス要求NREQ1に基づいて派生命令であるアクセス要求SREQ3が必要と判断する。ポートMIBP1のエントリSENTに空きがあるため、キャッシュメモリ制御部250Bは、ポートMIBP1にアクセス要求SREQ3を出力する。
ポートMIP1のチェック回路CHKN2は、各エントリNENTに所定時間Tmaxを超えて保持されたアクセス要求NREQ1が存在しなくなったため、回避通知AVID1を調停部240Bに出力する。調停部240Bは、警告通知WARN1に対応する回避通知AVID1を受け、他の警告通知WARNは出力されていないため、フラグ信号FLGをハイレベルからロウレベルに変化させて、解除通知FRSTを出力する。ポートMIP1は、ロウレベルのフラグ信号FLGに応答して、警告通知WARN1および回避通知AVID1の出力を停止する。
この後、状態(j)から状態(m)において、調停部240Bは、ポートMIP2、MIBP1、MIBP2、MIP1に保持されたアクセス要求NREQ(またはSREQ)を順次に選択する。
以上、この実施形態では、各ポートPTは、エントリNENT、SENT毎にカウンタCOUNTを有する。これにより、設定通知FSET前に保持された全てのアクセス要求NREQが処理されるまで、設定通知FSET後に保持されたアクセス要求NREQの処理を抑制できる。したがって、警告通知WARN(またはWARNS)が出力された場合に、アクセス要求NREQから派生的に発生するアクセス要求SREQの発生頻度を図5から図14に示した実施形態に比べて下げることができる。この結果、アクセス要求SREQをエントリSENTに溜めにくくでき、古いアクセス要求NREQが処理されないことで演算処理部210がハングアップする確率を従来に比べて下げることができる。これにより、情報処理装置100Dおよび演算処理装置200Dの性能の低下を抑制できる。
なお、図18に示した演算処理装置200Dは、調停部240Bの代わりに、図16に示した調停部240Cを有してもよい。この場合、警告通知WARN、WARNSを出力したポートPTに応じて、優先的に選択するアクセス要求NREQ、SREQを決定できるため、コアCOREがハングアップする確率をさらに下げることができる。
なお、図18から図22に示した実施形態では、各ポートMIP、PFPがエントリNENT毎にカウンタCOUNTを有し、各ポートMOP、MIBP2がエントリSENT毎にカウンタCOUNTを有する例について述べた。しかし、各ポートMIP、PFPは、エントリNENTに共通のカウンタCOUNTを有してもよく、各ポートMOP、MIBP2は、エントリSENTに共通のカウンタCOUNTを有してもよい。
この場合、各ポートMIP、PFPのチェック回路CHKNは、エントリNENTにアクセス要求NREQがそれぞれ保持されたときのカウンタ値を記憶しておき、カウンタ値の進み量から所定時間TmaxをエントリNENT毎に判定する。同様に、各ポートMOP、MIBPのチェック回路CHKSは、エントリSENTにアクセス要求SREQがそれぞれ保持されたときのカウンタ値を記憶しておき、カウンタ値の進み量から所定時間TmaxをエントリSENT毎に判定する。これにより、カウンタCOUNTの数を図19および図20に比べて少なくして、図21および図22と同様の動作を実現できる。
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずであり、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。