(57)【要約】【課題】  プロセッサ、及びプロセッサでデータを処理する方法を提供する。【解決手段】  複数のモジュールを含むプロセッサは、データを要請するソースモジュール、及び要請されたデータをソースモジュールに伝送する宛先モジュールを含み、ソースモジュールは、宛先モジュールから受信されたデータを保存するクレジットバッファを含む。【選択図】    図３
2017111802.tif 000002
【特許請求の範囲】
【請求項１】
複数のモジュールを含むプロセッサにおいて、
データを要請するソースモジュールと、
前記ソースモジュールから、クレジット基盤フローコントロールを利用して、前記データの要請が受信された場合、前記要請されたデータを、前記クレジット基盤フローコントロールを利用して、前記ソースモジュールに伝送する宛先モジュールと、を含み、
前記ソースモジュールは、一部エントリーをキャッシュ領域に割り当て、前記宛先モジュールから受信された前記データを、前記割り当てられたキャッシュ領域にキャッシングするクレジットバッファを含むプロセッサ。
【請求項２】
前記ソースモジュールは、
要請される前記データと、前記キャッシングされたデータとのマッチングの結果に基づいて、前記キャッシュ領域のライトインデックス値を設定することを特徴とする請求項１に記載のプロセッサ。
【請求項３】
前記ソースモジュールは、
要請される前記データのアドレスと、前記キャッシュ領域にキャッシングされた前記データに対応するタグとのタグマッチングを行うタグマッチング部をさらに含むことを特徴とする請求項１又は２に記載のプロセッサ。
【請求項４】
前記ソースモジュールは、
前記タグマッチングの結果がキャッシュミスである場合、前記キャッシュ領域のライトインデックス値を増加させることを特徴とする請求項３に記載のプロセッサ。
【請求項５】
前記ソースモジュールは、
前記キャッシュミスが生じた場合、前記宛先モジュールから前記要請されたデータを受信し、
前記キャッシュ領域において、増加される前に、前記ライトインデックス値に対応するエントリーに、前記受信されたデータをキャッシングすることを特徴とする請求項４に記載のプロセッサ。
【請求項６】
前記ソースモジュールは、
前記キャッシュ領域に割り当てられた全てのエントリーにデータがキャッシングされた場合、前記キャッシュ領域に割り当てられた前記エントリーのうち最初のエントリーにキャッシングされたデータを削除し、前記宛先モジュールにクレジットグラントを伝送することを特徴とする請求項４に記載のプロセッサ。
【請求項７】
前記ソースモジュールは、
前記ライトインデックス値がそれ以上増加することがない状態で、前記キャッシュミスが生じた場合、前記ライトインデックス値が初期化されるように設定し、
前記初期化されたライトインデックス値は、
前記クレジットバッファにおいて、前記キャッシュ領域に割り当て可能なエントリーのうち、最初のエントリーに対応することを特徴とする請求項６に記載のプロセッサ。
【請求項８】
前記ソースモジュールは、
要請される前記データのアドレスと、前記キャッシュ領域にキャッシングされた前記データに対応するタグとのタグマッチングの結果を保存するリクエストＦＩＦＯバッファと、
前記保存されたタグマッチングの結果がキャッシュヒットである場合、前記キャッシュ領域内のヒットインデックスにキャッシングされたデータの読み取りを制御し、前記保存されたタグマッチングの結果がキャッシュミスである場合、前記キャッシュ領域のライトインデックス値が増加されるように制御する制御部と、をさらに含むことを特徴とする請求項１ないし７のうちの何れか一項に記載のプロセッサ。
【請求項９】
前記制御部は、
前記キャッシュ領域に割り当てられた全てのエントリーにデータがキャッシングされた状態で、前記キャッシュミスが生じた場合、前記宛先モジュールにクレジットグラントが伝送されるように制御することを特徴とする請求項８に記載のプロセッサ。
【請求項１０】
前記複数のモジュールは、
前記プロセッサ内に集積された、ルータ及びＩＰ（intellectual  property）のうち少なくとも一つを含むことを特徴とする請求項１ないし９のうちの何れか一項に記載のプロセッサ。
【請求項１１】
前記プロセッサは、
ネットワーク・オン・チップを利用して、前記複数のモジュール間でデータを送受信することを特徴とする請求項１ないし１０のうちの何れか一項に記載のプロセッサ。
【請求項１２】
前記クレジットバッファ内に割り当てられた前記キャッシュ領域は、
可変的であることを特徴とする請求項１ないし１１のうちの何れか一項に記載のプロセッサ。
【請求項１３】
プロセッサでデータを処理する方法において、
ソースモジュールにおいて、データの要請を生成する段階と、
宛先モジュールにおいて、クレジット基盤フローコントロールを利用して、前記ソースモジュールから前記データの要請が受信された場合、前記要請されたデータを、前記クレジット基盤フローコントロールを利用して、前記ソースモジュールに伝送する段階と、
前記ソースモジュールにおいて、クレジットバッファ内の一部エントリーに割り当てられたキャッシュ領域に、前記宛先モジュールから受信された前記データをキャッシングする段階と、を含む方法。
【請求項１４】
前記ソースモジュールは、
要請される前記データと、前記キャッシングされたデータとのマッチングの結果に基づいて、前記キャッシュ領域のライトインデックス値を設定することを特徴とする請求項１３に記載の方法。
【請求項１５】
要請される前記データのアドレスと、前記キャッシュ領域にキャッシングされた前記データに対応するタグとのタグマッチングを行う段階をさらに含むことを特徴とする請求項１３又は１４に記載の方法。
【請求項１６】
前記タグマッチングの結果がキャッシュミスである場合、前記キャッシュ領域のライトインデックス値を増加させる段階をさらに含むことを特徴とする請求項１５に記載の方法。
【請求項１７】
前記伝送する段階は、
前記キャッシュミスが生じた場合、前記要請されたデータを、前記ソースモジュールに伝送し、
前記キャッシングする段階は、
前記キャッシュ領域において、増加される前に、前記ライトインデックス値に対応するエントリーに、前記宛先モジュールから受信された前記データをキャッシングすることを特徴とする請求項１６に記載の方法。
【請求項１８】
前記キャッシュ領域に割り当てられた全てのエントリーにデータがキャッシングされた場合、前記キャッシュ領域に割り当てられた前記エントリーのうち最初のエントリーにキャッシングされたデータを削除する段階と、
前記最初のエントリーにキャッシングされたデータが削除された場合、前記宛先モジュールにクレジットグラントを伝送する段階と、をさらに含むことを特徴とする請求項１６に記載の方法。
【請求項１９】
前記ライトインデックス値がそれ以上増加することがない状態で、前記キャッシュミスが生じた場合、前記ライトインデックス値を初期化する段階をさらに含み、
前記初期化されたライトインデックス値は、
前記クレジットバッファにおいて、前記キャッシュ領域に割り当て可能なエントリーのうち、最初のエントリーに対応することを特徴とする請求項１８に記載の方法。
【請求項２０】
要請される前記データのアドレスと、前記キャッシュ領域にキャッシングされた前記データに対応するタグとのタグマッチングの結果をリクエストＦＩＦＯバッファに保存する段階と、
前記保存されたタグマッチングの結果がキャッシュヒットである場合、前記キャッシュ領域内のヒットインデックスにキャッシングされたデータを読み取るか、あるいは前記保存されたタグマッチングの結果がキャッシュミスである場合、前記キャッシュ領域のライトインデックス値を増加させるように制御する段階と、をさらに含むことを特徴とする請求項１３ないし１９のうち何れか一項に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサ、及びプロセッサでデータを処理する方法に関し、特に、ネットワーク・オン・チップ（ＮＯＣ）を利用するプロセッサにおいて、データを処理する方法に関する。
【背景技術】
【０００２】
システム・オン・チップ（ＳＯＣ）は、プロセッサ、ハードウェア加速器、メモリのような多様なモジュールを統合したものであり、各モジュール間で互いにデータをやり取りするためには、オン・チップ通信媒体が必要になる。ネットワーク・オン・チップ（ＮＯＣ）のシステムは、チップ内部に、データ伝送を中継するルータを配置し、モジュール間に分散させるデータ伝送を可能にする技術であり、ネットワーク・オン・チップのシステムをより効率的に具現するための多様な試みが進められている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許公開２００４／０１７４８１４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明が解決しようとする課題は、プロセッサ、及びプロセッサでデータを処理する方法を提供することである。本実施形態がなすべき技術的課題は、前述のような技術的課題に限定されるものではなく、以下の実施形態から他の技術的課題が類推されもする。
【課題を解決するための手段】
【０００５】
一側面によれば、複数のモジュールを含むプロセッサは、データを要請するソースモジュールと、前記ソースモジュールから、クレジット基盤フローコントロール（credit  based  flow  control）を利用して、前記データの要請が受信された場合、前記要請されたデータを、前記クレジット基盤フローコントロールを利用して、前記ソースモジュールに伝送する宛先（destination）モジュールと、を含み、前記ソースモジュールは、一部エントリーをキャッシュ（cache）領域に割り当て、前記宛先モジュールから受信された前記データを、前記割り当てられたキャッシュ領域にキャッシングする（caching）クレジットバッファ（credit  buffer）を含む。
【０００６】
また、前記ソースモジュールは、要請される前記データと、前記キャッシングされたデータとのマッチングの結果に基づいて、前記キャッシュ領域のライトインデックス（write  index）値を設定する。
【０００７】
また、前記ソースモジュールは、要請される前記データのアドレスと、前記キャッシュ領域にキャッシングされた前記データに対応するタグとのタグマッチング（tag  matching）を行うタグマッチング部をさらに含む。
【０００８】
また、前記ソースモジュールは、前記タグマッチングの結果がキャッシュミス（cache  miss）である場合、前記キャッシュ領域のライトインデックス値を増加させる。
【０００９】
また、前記ソースモジュールは、前記キャッシュミスが生じた場合、前記宛先モジュールから前記要請されたデータを受信し、前記キャッシュ領域において、増加される前に、前記ライトインデックス値に対応するエントリーに、前記受信されたデータをキャッシングする。
【００１０】
また、前記ソースモジュールは、前記キャッシュ領域に割り当てられた全てのエントリーにデータがキャッシングされた場合、前記キャッシュ領域に割り当てられた前記エントリーのうち最初のエントリーにキャッシングされたデータを削除し、前記宛先モジュールにクレジットグラント（credit  grant）を伝送する。
【００１１】
また、前記ソースモジュールは、前記ライトインデックス値がそれ以上増加することがない状態で、前記キャッシュミスが生じた場合、前記ライトインデックス値が初期化されるように設定し、前記初期化されたライトインデックス値は、前記クレジットバッファにおいて、前記キャッシュ領域に割り当て可能なエントリーのうち、最初のエントリーに対応する。
【００１２】
また、前記ソースモジュールは、要請される前記データのアドレスと、前記キャッシュ領域にキャッシングされた前記データに対応するタグとのタグマッチングの結果を保存するリクエストＦＩＦＯバッファと、前記保存されたタグマッチングの結果がキャッシュヒット（cache  hit）である場合、前記キャッシュ領域内のヒットインデックス（hit  index）にキャッシングされたデータの読み取り（read）を制御し、前記保存されたタグマッチングの結果がキャッシュミスである場合、前記キャッシュ領域のライトインデックス値が増加されるように制御する制御部と、をさらに含む。
【００１３】
また、前記制御部は、前記キャッシュ領域に割り当てられた全てのエントリーにデータがキャッシングされた状態で、前記キャッシュミスが生じた場合、前記宛先モジュールにクレジットグラントが伝送されるように制御する。
【００１４】
また、前記複数のモジュールは、前記プロセッサ内に集積された、ルータ及びＩＰ（intellectual  property）のうち少なくとも一つを含む。
【００１５】
また、前記プロセッサは、ネットワーク・オン・チップを利用して、前記複数のモジュール間でデータを送受信する。
【００１６】
また、前記クレジットバッファ内に割り当てられた前記キャッシュ領域は、可変的である（variable）。
【００１７】
他の側面によれば、プロセッサでデータを処理する方法は、ソースモジュールにおいて、データの要請を生成する段階と、宛先（destination）モジュールにおいて、クレジット基盤フローコントロール（credit  based  flow  control）を利用して、前記ソースモジュールから前記データの要請が受信された場合、前記要請されたデータを、前記クレジット基盤フローコントロールを利用して、前記ソースモジュールに伝送する段階と、前記ソースモジュールにおいて、クレジットバッファ（credit  buffer）内の一部エントリーに割り当てられたキャッシュ（cache）領域に、前記宛先モジュールから受信された前記データをキャッシングする（caching）段階と、を含む。
【００１８】
また、前記ソースモジュールは、要請される前記データと、前記キャッシングされたデータとのマッチングの結果に基づいて、前記キャッシュ領域のライトインデックス（write  index）値を設定する。
【００１９】
また、要請される前記データのアドレスと、前記キャッシュ領域にキャッシングされた前記データに対応するタグとのタグマッチング（tag  matching）を行う段階をさらに含む。
【００２０】
また、前記タグマッチングの結果がキャッシュミス（cache  miss）である場合、前記キャッシュ領域のライトインデックス値を増加させる段階をさらに含む。
【００２１】
また、前記伝送する段階は、前記キャッシュミスが生じた場合、前記要請されたデータを、前記ソースモジュールに伝送し、前記キャッシングする段階は、前記キャッシュ領域において、増加される前に、前記ライトインデックス値に対応するエントリーに、前記宛先モジュールから受信された前記データをキャッシングする。
【００２２】
また、前記キャッシュ領域に割り当てられた全てのエントリーにデータがキャッシングされた場合、前記キャッシュ領域に割り当てられた前記エントリーのうち最初のエントリーにキャッシングされたデータを削除する段階と、前記最初のエントリーにキャッシングされたデータが削除された場合、前記宛先モジュールにクレジットグラントを伝送する段階と、をさらに含む。
【００２３】
また、前記ライトインデックス値がそれ以上増加することがない状態で、前記キャッシュミスが生じた場合、前記ライトインデックス値を初期化する段階をさらに含み、前記初期化されたライトインデックス値は、前記クレジットバッファにおいて、前記キャッシュ領域に割り当て可能なエントリーのうち、最初のエントリーに対応する。
【００２４】
また、要請される前記データのアドレスと、前記キャッシュ領域にキャッシングされた前記データに対応するタグとのタグマッチングの結果をリクエストＦＩＦＯバッファに保存する段階と、前記保存されたタグマッチングの結果がキャッシュヒット（cache  hit）である場合、前記キャッシュ領域内のヒットインデックス（hit  index）にキャッシングされたデータを読み取るか、あるいは前記保存されたタグマッチングの結果がキャッシュミスである場合、前記キャッシュ領域のライトインデックス値を増加させるように制御する段階と、をさらに含む。
【図面の簡単な説明】
【００２５】
【図１】一実施形態によるコンピュータ装置について説明するための図面である。
【図２】一実施形態によるプロセッサ内のいずれか２個のモジュールについて説明するための図面である。
【図３】一実施形態によるソースモジュールのブロック図である。
【図４】一実施形態による、ソースモジュール及び宛先モジュール間で行われるクレジット基盤フローコントロールについて説明するための図面である。
【図５】一実施形態によって、クレジット基盤フローコントロールを利用して、ソースモジュールと宛先モジュールとがデータ通信を行うことについて説明するための図面である。
【図６】一実施形態によるクレジットバッファ内のキャッシュ領域を割り当てることについて説明するための図面である。
【図７】一実施形態によって、キャッシュヒットの場合、キャッシュ領域でのデータアクセスについて説明するための図面である。
【図８】一実施形態によって、キャッシュミスの場合、キャッシュ領域でのデータキャッシングについて説明するための図面である。
【図９】一実施形態によって、キャッシュミスの場合、キャッシュ領域でのデータキャッシングについて説明するための図面である。
【図１０】一実施形態によって、キャッシュミスの場合、キャッシュ領域でのデータキャッシングについて説明するための図面である。
【図１１】一実施形態による、ソースモジュール内のクレジットバッファに割り当てられたキャッシュ領域を利用して、データをキャッシングする方法の詳細フローチャートである。
【図１２】他の実施形態によって、クレジット基盤フローコントロールを利用して、ソースモジュールと宛先モジュールとがデータ通信を行うことについて説明するための図面である。
【図１３】一実施形態による、プロセッサでデータを処理する方法のフローチャートである。
【発明を実施するための形態】
【００２６】
本実施形態で使用される用語は、本実施形態での機能を考慮しながら、可能な限り現在広く使用される一般的な用語を選択したが、それは、当技術分野に携わる技術者の意図、判例、または新たな技術の出現などによっても異なる。また、特定の場合は、任意に選定された用語もあり、その場合、当該実施形態の説明部分において、詳細にその意味を記載する。従って、本実施形態で使用される用語は、単純な用語の名称ではない、その用語が有する意味と、本実施形態の全般にわたる内容と基に定義されなければならない。
【００２７】
実施形態に係わる説明において、ある部分が他の部分と連結されているとするとき、それは、直接に連結されている場合だけではなく、その中間に、他の構成要素を挟んで電気的に連結されている場合も含む。また、ある部分がある構成要素を含むとするとき、それは、特別に反対となる記載がない限り、他の構成要素を除くものではなく、他の構成要素をさらに含んでもよいということを意味する。また、実施形態に記載された「…部」、「…モジュール」という用語は、少なくとも１つの機能や動作を処理する単位を意味し、それは、ハードウェアまたはソフトウェアによって具現されるか、あるいはハードウェアとソフトウェアとの結合によっても具現される。
【００２８】
本実施形態で使用される「構成される」または「含む」というような用語は、明細書上に記載された多くの構成要素、または多くの段階を必ずしもいずれも含むものであると解釈されるものではなく、そのうち一部の構成要素または一部の段階は、含まれないこともあり、または追加的な構成要素または段階をさらに含んでもよいと解釈されなければならない。
【００２９】
下記実施形態に係わる説明は、権利範囲を制限するものであると解釈されてはならず、当該技術分野の当業者が容易に類推することができるものは、実施形態の権利範囲に属すると解釈されなければならないのである。以下、添付された図面を参照しながら、ただ例示のための実施形態について詳細に説明する。
【００３０】
図１は、一実施形態によるコンピュータ装置について説明するための図面である。図１を参照すれば、コンピューティング装置１は、ＣＰＵ（central  processing  unit）１０、ＧＰＵ（graphics  processing  unit）２０、メモリ３０、Ｉ／Ｏ（input/output）インターフェース４０、ネットワークインターフェース５０及びネットワーク・オン・チップ（ＮＯＣ）６０を含む。図１に図示されたコンピューティング装置１には、実施形態と係わる構成要素だけが図示されている。従って、図１に図示された構成要素以外に、他の汎用的な構成要素がさらに含まれてもよいということは、当該技術分野の当業者ならば、理解することができるであろう。
【００３１】
コンピューティング装置１は、デスクトップコンピュータ、ノート型パソコン、スマートフォン、ＰＤＡ（personal  digital  assistant）、携帯型メディアプレーヤ、ビデオゲーム用コンソール、テレビセットトップボックス、タブレットデバイス、電子書籍リーダ、ウェアラブルデバイスなどを例として挙げることができるが、それらに制限されるものではない。すなわち、コンピューティング装置１は、プロセッシング機能を有する装置であり、コンピューティング装置１の範疇には、多様な装置が含まれる。
【００３２】
ＣＰＵ  １０及びＧＰＵ  ２０は、コンピューティング装置１内で行われる多様な演算を処理するハードウェアコンポーネントである。
【００３３】
メモリ３０は、コンピューティング装置１内で処理される各種データを保存するハードウェアコンポーネントであり、例えば、メモリ３０は、ＣＰＵ  １０及びＧＰＵ  ２０で処理されたデータ、並びに処理されるデータを保存することができる。また、メモリ３０は、ＣＰＵ  １０及びＧＰＵ  ２０によって駆動されるアプリケーション、ドライバ、運用体系（ＯＳ）などを保存することができる。メモリ３０は、ＤＲＡＭ（dynamic  random  access  memory）・ＳＲＡＭ（static  random  access  memory）のようなＲＡＭ（random  access  memory）、ＲＯＭ（read  only  memory）、ＥＥＰＲＯＭ（electrically  erasable  and  programmable  read  only  memory）、ＣＤ（compact  disc）−ＲＯＭ、ブルーレイ（登録商標（Blu-ray））、または他の光学ディスクストレージ、ＨＤＤ（hard  disk  drive）、ＳＳＤ（solid  state  drive）、あるいはフラッシュメモリを含み、さらに、コンピューティング装置１にアクセスされる外部の他のストレージデバイスを含んでもよい。
【００３４】
Ｉ／Ｏインターフェース４０は、コンピューティング装置１に、ユーザが所望する情報を入力することができるキーボード、マウスのようなデバイスから、ユーザの入力情報を受信したり、コンピューティング装置１に連結または具備されたディスプレイデバイスにおいて、コンピューティング装置１で処理された情報がディスプレイされるようにディスプレイデバイスにコンピューティング装置１の処理情報を伝送したりするハードウェアコンポーネントである。
【００３５】
ネットワークインターフェース５０は、コンピューティング装置１が、外部ネットワークと、有線または無線で通信することができるハードウェアコンポーネントであり、イーサネット（登録商標）モジュール、Ｗｉ−Ｆｉ（wireless  fidelity）モジュール、Bluetooth（登録商標）モジュール、ＮＦＣ（near  field  communication）モュールのような多様な有無線通信手段を含む。
【００３６】
ネットワーク・オン・チップ６０は、コンピューティング装置１内のハードウェアコンポーネント間でデータを送受信することができるように、ハードウェアコンポーネントを連結させるコミュニケーションシステムである。言い換えれば、ネットワーク・オン・チップ６０は、チップ内の複数のＩＰ間で、ルータ（router）を介してネットワーキングすることにより、データを処理することができる技術でもって具現されたものを意味する。ここで、ＩＰそれぞれは、プロセッサコア、ハードウェア加速器、ルータなどに該当する。さらに、ＩＰそれぞれは、プロセッサ単位、メモリ単位などをも意味する。図１に図示された、ＣＰＵ  １０、ＧＰＵ  ２０、メモリ３０、Ｉ／Ｏインターフェース４０及びネットワークインターフェース５０の相互間には、ネットワーク・オン・チップ６０を介してデータ通信が行われる。
【００３７】
一方、ハードウェアコンポーネント間のデータ通信以外にも、一部ハードウェアコンポーネント内部のモジュールも、ネットワーク・オン・チップを利用して、データ通信を行うことができる。コンピューティング装置１において、ＣＰＵ  １０及びＧＰＵ  ２０のようなプロセッシング装置それぞれの内部に具備されたモジュールまたはコアは、ネットワーク・オン・チップを利用して、データ通信を行うことができる。一方、ＣＰＵ  １０、ＧＰＵ  ２０以外にも、コンピューティング装置１内の他のハードウェアコンポーネントも、ネットワーク・オン・チップを利用して具現され、コンピューティング装置１において、ネットワーク・オン・チップを利用して具現されたハードウェアコンポーネントの個数も多様である。
【００３８】
図２は、一実施形態によるプロセッサ内のいずれか２個のモジュールについて説明するための図面である。本実施形態においてプロセッサは、図１に図示されたＣＰＵ  １０またはＧＰＵ  ２０を指してもよいが、それらに制限されるものではなく、メモリ３０内に具備されたプロセッシングユニット（例えば、メモリコントローラ）、またはネットワークインターフェース５０内に具備されたプロセッシングユニットなどを指してもよい。また、ソースモジュール２１０は、データ要請を生成する側のＩＰモジュールである。宛先モジュール２２０は、ソースモジュール２１０からデータ要請を受信した場合、ソースモジュール２１０にデータを伝送する側のＩＰモジュールである。
【００３９】
ソースモジュール２１０は、宛先モジュール２２０から受信されたデータをクレジットバッファ（credit  buffer）２１５に保存することができる。ここで、クレジットバッファ２１５の保存は、データバッファリングまたはデータキャッシング（caching）のような多様な用途を含む意味である。
【００４０】
一方、ソースモジュール２１０及び宛先モジュール２２０のそれぞれは、プロセッサ内のプロセッサコア、ハードウェア加速器、ルータのようなＩＰに該当する。
【００４１】
図３は、一実施形態によるソースモジュールのブロック図である。図３を参照すれば、ソースモジュール２１０は、データ処理部２１１、クレジットバッファ２１５、タグマッチング部２１２、リクエストＦＩＦＯ（first  in  first  out）バッファ２１３及び制御部２１４を含んでもよい。図３に図示されたソースモジュール２１０には、実施形態と係わる構成要素だけが図示されている。従って、図３に図示された構成要素以外に、他の汎用的な構成要素がさらに含まれてもよいということは、当該技術分野の当業者であるならば、理解することができるであろう。
【００４２】
データ処理部２１１は、処理されなければならないデータの要請を生成する。処理されなければならないデータは、データ処理部２１１において、ある演算を行うために必要なデータでもある。データ要請は、データが読み取られるアドレス、またはデータのシグネチャ（signature）のような多様なタイプでもある。
【００４３】
クレジットバッファ２１５は、データ処理部２１１によって処理されたデータ、及びデータ処理部２１１によって処理されるデータをバッファリングすることができる。さらに、クレジットバッファ２１５内には、データキャッシングのためのキャッシュ領域２１７が含まれる。キャッシュ領域２１７は、キャッシュと類似した役割をする領域であるが、クレジットバッファ２１５内に具現される。すなわち、ソースモジュール２１０には、クレジットバッファ２１５とは独立的なキャッシュが別途に具備されない。クレジットバッファ２１５内に、キャッシュと類似した役割を行うキャッシュ領域２１７が割り当てられることにより、データ処理部２１１は、まさしく別途のキャッシュが具備されているような迅速なデータアクセスが可能である。ソースモジュール２１０において、クレジットバッファ２１５とキャッシュとが独立して具現される場合であるならば、クレジットバッファ２１５は、単にデータを保存し、キャッシュに、データ処理部２１１が必要なデータをコピーする役割のみを行う。従って、そのような場合には、クレジットバッファ２１５とキャッシュとのデータトラフィックが増大し、不要な帯域幅が消耗され、バッファエネルギーが浪費される。しかし、本実施形態のように、クレジットバッファ２１５内に、キャッシュと類似した役割を有するキャッシュ領域２１７が具現されるのであるならば、クレジットバッファ２１５とキャッシュとのデータトラフィック、不要な帯域幅の浪費を減らすことができる。
【００４４】
タグマッチング部２１２は、要請されるデータのアドレスと、キャッシュ領域２１７にキャッシングされたデータに対応するタグとのタグマッチング（tag  matching）を行う。キャッシュ領域２１７にデータがキャッシングされる場合、キャッシングされたデータについては、宛先モジュール２２０（図２）に保存されていたデータアドレスを識別することができるタグが共にマッピングされる。それによって、タグマッチング部２１２は、タグを利用して、要請されるデータがキャッシュ領域２１７にキャッシングされているか否かということを識別することができる。
【００４５】
タグマッチング部２１２は、タグマッチングの結果、要請されるデータがキャッシュ領域２１７にキャッシングされている場合には、キャッシュヒット（cache  hit）と判断し、要請されるデータがキャッシュ領域２１７にキャッシングされていない場合には、キャッシュミス（cache  miss）と判断する。
【００４６】
リクエストＦＩＦＯバッファ２１３は、要請されるデータのアドレスと、キャッシュ領域にキャッシングされたデータに対応するタグとのタグマッチングの結果を保存する。すなわち、リクエストＦＩＦＯバッファ２１３は、キャッシュヒットの場合には、キャッシュ領域２１７でヒットされたエントリーを示すヒットインデックス（hit  index）またはヒットフラグ（hit  flag）を保存し、キャッシュミスの場合には、ミスフラグ（miss  flag）を保存することができる。
【００４７】
制御部２１４は、タグマッチング部２１２のタグマッチングの結果によって、クレジットバッファ２１５内のキャッシュ領域２１７でのデータ読み取り／書き込みを制御する。さらに詳細には、制御部２１４は、リクエストＦＩＦＯバッファ２１３に保存されたタグマッチングの結果がキャッシュヒットである場合、キャッシュ領域２１７内のヒットインデックスにキャッシングされたデータの読み取りを制御し、保存されたタグマッチングの結果がキャッシュミスである場合、キャッシュ領域２１７のライトインデックス値が増加されるように制御する。本実施形態においてライトインデックスは、新たなデータがキャッシュ領域２１７にキャッシングされなければならないとき、キャッシュ領域２１７内に書き込まれるエントリーを示す情報である。さらに、制御部２１４は、宛先モジュール２２０（図２）へのクレジットグラント（credit  grant）の伝送を制御することができる。
【００４８】
一方、本実施形態によるソースモジュール２１０は、前述のように、クレジットバッファ２１５を含み、それは、ソースモジュール２１０が、クレジット基盤フローコントロールを利用して、他のモジュール（例えば、宛先モジュール２２０（図２））とデータを送受信するためである。本実施形態においては、ネットワーク・オン・チップを利用して具現されたプロセッサ内において、クレジットバッファ２１５を利用したクレジット基盤フローコントロールが行われるように説明しているが、それに制限されるものではなく、本実施形態は、クレジットバッファ２１５を利用したクレジット基盤フローコントロールが行われる限り、ネットワーク・オン・チップを利用せずに具現されたプロセッサについても適用される。
【００４９】
図４は、一実施形態による、ソースモジュール及び宛先モジュール間で行われるクレジット基盤フローコントロールについて説明するための図面である。図４を参照すれば、ソースモジュール２１０が宛先モジュール２２０にデータを要請した場合、宛先モジュール２２０は、要請されたデータをソースモジュール２１０に伝送する。ソースモジュール２１０は、宛先モジュール２２０から受信されたデータを、クレジットバッファ２１５に保存することができる。ここで、クレジットバッファ２１５は、総６個のエントリーを有する、６−エントリーバッファであることと仮定して説明する。
【００５０】
宛先モジュール２２０は、ソースモジュール２１０内のクレジットバッファ２１５のクレジットカウント（credit  count）についての情報をあらかじめ知っている。クレジットバッファ２１５のクレジットカウントは、クレジットバッファ２１５内の保存可能なエントリーの情報であり、クレジットバッファ２１５が６−エントリーバッファであるので、図４で最初のクレジットカウントは、６である。
【００５１】
ソースモジュール２１０が、データを宛先モジュール２２０に要請した場合、宛先モジュール２２０は、６セルのデータパッケージ４１０を伝送することができる。ソースモジュール２１０は、それぞれのデータパッケージ４１０が到着するたびに、要請されたデータが、クレジットバッファ２１５に保存されたということを示すクレジット４２０を、宛先モジュール２２０にリターンする。すなわち、ソースモジュール２１０は、宛先モジュールに、総６個のクレジット４２０をリターンすることができる。宛先モジュール２２０は、ソースモジュール２１０から、クレジット４２０が受信されるたびに、クレジットカウントを一つずつ減少させる。クレジット４２０が継続的に受信され、クレジットカウントが０になる場合には、宛先モジュール２２０は、クレジットバッファ２１５がフル（full）であるために、それ以上データを受信することができないということが分かる。
【００５２】
一方、クレジットバッファ２１５において、いずれかのデータ４３０が読み取られ、データ４３０の処理が完了した場合、クレジットバッファ２１５から、データ４３０が削除される。そのとき、クレジットバッファ２１５は、エントリーがないということを宛先モジュール２２０に知らせるために、宛先モジュール２２０にクレジットグラントを伝送する。宛先モジュール２２０は、クレジットグラントを受信するたびに、クレジットカウントを１ほど増加させる。
【００５３】
前述のようなクレジット基盤フローコントロールの方式により、ソースモジュール２１０と宛先モジュール２２０は、データをやり取りすることができる。
【００５４】
図５は、一実施形態によって、クレジット基盤フローコントロールを利用して、ソースモジュールと宛先モジュールとがデータ通信を行うことについて説明するための図面である。図５を参照すれば、ソースモジュール２１０のクレジットバッファ２１５は、クレジットバッファ２１５の一部エントリーをキャッシュ領域２１７に割り当てる。クレジットバッファ２１５内に割り当てられたキャッシュ領域２１７は、可変的（variable）である。ソースモジュール２１０は、宛先モジュール２２０から受信されたデータを、クレジットバッファ２１５内に割り当てられたキャッシュ領域２１７にキャッシングすることができる。
【００５５】
５０１段階において、データ処理部２１１は、データの要請を生成する。例えば、データ処理部２１１は、データのアドレスを指定することにより、データ要請を生成することができる。
【００５６】
５０２段階において、タグマッチング部２１２は、要請されるデータのアドレスと、キャッシュ領域２１７にキャッシングされたデータに対応するタグとのタグマッチングを行う。タグマッチング部２１２は、タグマッチングの結果、要請されるデータがキャッシュ領域２１７にキャッシングされている場合には、キャッシュヒットと判断し、要請されるデータがキャッシュ領域２１７にキャッシングされていない場合には、キャッシュミスと判断する。
【００５７】
５０３段階において、リクエストＦＩＦＯバッファ２１３は、要請されるデータのアドレスと、キャッシュ領域にキャッシングされたデータに対応するタグとのタグマッチングの結果を保存する。リクエストＦＩＦＯバッファ２１３は、キャッシュヒットの場合には、キャッシュ領域２１７でヒットされたエントリーを示すヒットインデックスまたはヒットフラグを保存し、キャッシュミスの場合には、ミスフラグを保存することができる。
【００５８】
一方、図５で点線によって表示された矢印は、キャッシュヒットの場合を示し、１点鎖線によって表示された矢印は、キャッシュミスの場合を示す。
【００５９】
５０４段階において、制御部２１４は、リクエストＦＩＦＯバッファ２１３に保存されたタグマッチングの結果がキャッシュヒットである場合、キャッシュ領域２１７内のヒットインデックスにキャッシングされたデータの読み取りを制御する。
【００６０】
５０５段階において、データ処理部２１１は、キャッシュ領域２１７から読み取られたデータを処理する。すなわち、キャッシュヒットの場合、データ処理部２１１によるデータ要請は、宛先モジュール２２０に伝達されず、ソースモジュール２１０内で処理される。
【００６１】
前述の５０２段階において、タグマッチング部２１２のタグマッチング結果がキャッシュミスである場合、データ処理部２１１のデータ要請（データのアドレス）は、宛先モジュール２２０に伝送される。
【００６２】
５０４段階において、制御部２１４は、リクエストＦＩＦＯバッファ２１３に保存されたタグマッチングの結果がキャッシュミスである場合、宛先モジュール２２０から受信されたデータを、現在設定されているライトインデックス値に対応するエントリーにキャッシングする。その後、制御部２１４は、キャッシュ領域２１７のライトインデックス値を増加させることにより、新たなライトインデックスを設定する。すなわち、ソースモジュール２１０は、要請されるデータと、キャッシングされたデータとのマッチングの結果（又は、合致するか否か）に基づいて、キャッシュ領域２１７のライトインデックス値を設定することができる。
【００６３】
一方、制御部２１４は、キャッシュ領域２１７から、いずれかのエントリーにキャッシングされたデータが削除されるたびに、宛先モジュール２２０にクレジットグラントを伝送することができる。
【００６４】
前述のように、ソースモジュール２１０と宛先モジュール２２０との間で、クレジット基盤フローコントロールを利用したデータ通信が行われるとき、クレジットバッファ２１５内のキャッシュ領域２１７にキャッシングされたデータが、データアクセスに活用されることにより、別途のキャッシュが具備されないとしても、データ処理部２１１は、迅速なデータ処理が可能である。
【００６５】
以下、図６ないし図１０では、クレジットバッファ２１５内のキャッシュ領域２１７の活用方法についてさらに詳細に説明する。
【００６６】
図６は、一実施形態によるクレジットバッファ内のキャッシュ領域を割り当てることについて説明するための図面である。図６を参照すれば、クレジットバッファ２１５は、総Ｎ個（Ｎは、自然数）のエントリーを有すると仮定する。すなわち、クレジットバッファ２１５には、０番目エントリーから（Ｎ−１）番目エントリーまでデータの保存が可能である。
【００６７】
キャッシュ領域２１７は、クレジットバッファ２１５の総Ｎ個のエントリーのうち、一部のエントリーに割り当てられる。例えば、キャッシュ領域２１７は、Ｎより少ないＫ個（Ｋは、自然数）のエントリーに割り当てられていると仮定する。キャッシュ領域２１７の最初の割り当ての時、キャッシュ領域２１７は、０番目エントリーから（Ｋ−１）番目エントリーまで割り当てられるが、それに制限されるものではなく、キャッシュ領域２１７の最初開始エントリーは、０番目エントリーでなくともよい。
【００６８】
ライトインデックス６１０は、データ書き込みが完了したエントリーの次のエントリーを示す。図６に図示されているように、キャッシュ領域２１７において、０番目エントリーから（Ｋ−２）番目エントリーまでデータがいずれも書き込まれた場合、ライトインデックス６１０は、（Ｋ−１）番目エントリーを示すことができる。
【００６９】
そのように、本実施形態によるソースモジュール２１０は、クレジットバッファ２１５内にキャッシュ領域２１７を割り当てることにより、別途のキャッシュを具備しないとしても、データキャッシングが可能である。
【００７０】
図７は、一実施形態によって、キャッシュヒットの場合、キャッシュ領域でのデータアクセスについて説明するための図面である。図７を参照すれば、データ処理部２１１は、特定アドレス（例えば、０ｘ０１Ｆ）のデータ要請（７０１）を生成することができる。タグマッチング部２１２は、要請されたデータのアドレス０ｘ０１Ｆにマッチングするタグ（すなわち、合致するタグ）が存在するか否かということを判断するためのタグマッチング（７０２）を行う。タグマッチング部２１２は、アドレス０ｘ０１Ｆにマッチングするタグ０ｘ０１Ｆが存在する場合、キャッシュヒットであると判断する。それによって、ヒットインデックスは、タグ０ｘ０１Ｆが、キャッシュ領域２１７において、２番目エントリーを指定することを示すことができる。すなわち、ヒットインデックスは、キャッシュヒットである場合、マッチングするタグに対応するキャッシュ領域２１７内のエントリーを示す情報であり、タグに対応するキャッシュ領域２１７内のエントリーには、アドレス０ｘ０１Ｆのデータがキャッシングされている。制御部２１４は、キャッシュ領域２１７内の２番目エントリーにキャッシングされた、アドレス０ｘ０１Ｆのデータを読み取る。
【００７１】
すなわち、図７で説明されているように、ソースモジュール２１０内のクレジットバッファ２１５の一部に、キャッシュ領域２１７が割り当てられることにより、まさしくキャッシュが実際に存在するように、データの迅速なアクセスが可能である。
【００７２】
図８は、一実施形態によるキャッシュミスの場合、キャッシュ領域でのデータキャッシングについて説明するための図面である。図８を参照すれば、データ処理部２１１は、特定アドレス（例えば、０ｘ０８Ｆ）のデータ要請（８０１）を生成することができる。タグマッチング部２１２は、要請されたデータのアドレス０ｘ０８Ｆにマッチングするタグが存在するか否かということを判断するためのタグマッチング（８０２）を行う。タグマッチング部２１２は、アドレス０ｘ０８Ｆにマッチングするタグが存在しないので、キャッシュミスであると判断する。それによって、宛先モジュール２２０は、ソースモジュール２１０から、アドレス０ｘ０８Ｆのデータに対する要請を受信する。
【００７３】
宛先モジュール２２０から、アドレス０ｘ０８Ｆのデータが受信された場合、クレジットバッファ２１５内のキャッシュ領域２１７の現在ライトインデックス値に対応するエントリーに、アドレス０ｘ０８Ｆのデータがキャッシングされる。図８では、キャッシュ領域２１７の０番目エントリーから（Ｋ−４）番目エントリーまで、すでにデータがキャッシングされているので、現在ライトインデックス値（増加される前のライトインデックス値）は、（Ｋ−３）番目エントリーに対応する。従って、アドレス０ｘ０８Ｆのデータは、キャッシュ領域２１７の（Ｋ−３）番目エントリーにキャッシングされる。
【００７４】
制御部２１４は、現在ライトインデックス値に対応する（Ｋ−３）番目エントリーには、それ以上データをキャッシングすることができないので、ライトインデックス値を増加させ、新たなライトインデックスを設定する。すなわち、制御部２１４は、新たなライトインデックス値は、（Ｋ−２）番目エントリーであると設定する。
【００７５】
言い換えれば、ソースモジュール２１０（制御部２１４）は、要請されるデータと、キャッシングされたデータとのマッチングの結果に基づいて、キャッシュ領域２１７のライトインデックス値を設定することができる。キャッシュミスが生じた場合、ソースモジュール２１０（制御部２１４）は、キャッシュ領域２１７のライトインデックス値を増加させる。
【００７６】
図９は、一実施形態によるキャッシュミスの場合、キャッシュ領域でのデータキャッシングについて説明するための図面である。図９を参照すれば、前述の図８で説明したキャッシュ領域２１７の全てのエントリー（０番目エントリーから（Ｋ−１）番目エントリーまで）にデータがキャッシングされた場合について説明する。
【００７７】
クレジットバッファ２１５内において、キャッシュ領域２１７に割り当てられたエントリーは、総Ｋ個のエントリーとして固定される。Ｋ個のエントリー（０番目エントリーから（Ｋ−１）番目エントリーまで）にデータがいずれもキャッシングされた場合、ライトインデックス値は、Ｋ番目エントリーに対応すると設定されるが、Ｋ番目エントリーは、現在キャッシュ領域２１７の外部に該当する。ライトインデックス値がキャッシュ領域２１７の外部であるＫ番目エントリーに対応するので、キャッシュ領域２１７は、新たに割り当てられる必要がある。なぜならば、宛先モジュール２２０から新たに受信されたデータは、キャッシュ領域２１７にキャッシングされることになるからである。従って、キャッシュ領域２１７に割り当てられたＫ個のエントリー（０番目エントリーから（Ｋ−１）番目エントリーまで）のうち、最初のエントリー（０番目エントリー）にキャッシングされたデータ９０１が削除され、クレジットバッファ２１５内においてキャッシュ領域２１７は、１番目エントリーからＫ番目エントリーまでであると新たに割り当てられる。
【００７８】
１つのエントリーが空き、キャッシュ領域２１７が新たに割り当てられることにより、キャッシュ領域２１７には、キャッシング可能な余分のエントリーが生じたので、宛先モジュール２２０にクレジットグラントが伝送される。
【００７９】
図１０は、一実施形態によるキャッシュミスの場合、キャッシュ領域でのデータキャッシングについて説明するための図面である。図１０を参照すれば、ライトインデックス値が継続的に増加され、現在ライトインデックス値が、クレジットバッファ２１５の最終エントリー（（Ｎ−１）番目エントリー）に対応する場合について説明する。
【００８０】
現在ライトインデックス値が、クレジットバッファ２１５の最終エントリー（（Ｎ−１）番目エントリー）に対応する状態でキャッシュミスが生じた場合、宛先モジュール２２０から受信されたデータ１００１は、現在ライトインデックス値（（Ｎ−１）番目エントリー）によって、（Ｎ−１）番目エントリーにキャッシングされる。現在ライトインデックス値が示すエントリーには、データ１００１がキャッシングされたので、新たなライトインデックス値を設定するために、現在ライトインデックス値が増加されなければならないが、（Ｎ−１）番目エントリーは、クレジットバッファ２１５の最終エントリーに該当するので、ライトインデックス値は、それ以上増加させることができない。そこで、ライトインデックス値が初期化される。初期化されたライトインデックス値は、クレジットバッファ２１５において、キャッシュ領域２１７に割り当て可能なエントリーのうち、最初のエントリー（０番目エントリー）に対応する。
【００８１】
すなわち、ライトインデックス値がそれ以上増加させることができない場合、キャッシュ領域２１７は、０番目エントリー及び（Ｎ−７）番目エントリーから、（Ｎ−１）番目エントリーまでであると新たに割り当てられる。
【００８２】
図１１は、一実施形態による、ソースモジュール内のクレジットバッファに割り当てられたキャッシュ領域を利用して、データをキャッシングする方法の詳細フローチャートである。
【００８３】
１１０１段階において、データ処理部２１１は、データ要請を生成する。
【００８４】
１１０２段階において、タグマッチング部２１２は、要請されるデータのアドレスと、キャッシュ領域２１７にキャッシングされたデータに対応するタグとのタグマッチングを行う。
【００８５】
１１０３段階において、タグマッチング部２１２は、タグマッチングを行った結果、キャッシュヒットであるか、あるいはキャッシュミスであるかということを判断する。
【００８６】
１１０４段階において、キャッシュヒットである場合、制御部２１４は、ヒットインデックスに対応するエントリーにキャッシングされたデータが読み取られるように、クレジットバッファ２１５（キャッシュ領域２１７）を制御する。
【００８７】
１１０５段階において、キャッシュミスである場合、制御部２１４は、現在ライトインデックスに対応するエントリーに、宛先モジュール２２０から受信されたデータをキャッシングする。
【００８８】
１１０６段階において、制御部２１４は、現在ライトインデックスに対応するエントリーにデータがキャッシングされることにより、キャッシュ領域２１７がフルであるか否かというイことを判断する。
【００８９】
１１０７段階において、キャッシュ領域２１７がフルではない場合、制御部２１４は、ライトインデックス値を増加させる。
【００９０】
１１０８段階において、キャッシュ領域２１７がフルである場合、制御部２１４は、ライトインデックス値の増加がそれ以上不可能であるか否かということを判断する。
【００９１】
１１０９段階において、ライトインデックス値の増加が可能である場合、制御部２１４は、キャッシュ領域２１７内の最初のエントリーにキャッシングされたデータが削除されるように、クレジットバッファ２１５（キャッシュ領域２１７）を制御する。
【００９２】
１１１０段階において、制御部２１４は、ライトインデックス値を増加させる。
【００９３】
１１１１段階において、制御部２１４は、宛先モジュール２２０にクレジットグラントが伝送されるように制御する。
【００９４】
１１１２段階において、ライトインデックス値の増加が不可能である場合、制御部２１４は、キャッシュ領域２１７内の最初のエントリーにキャッシングされたデータが削除されるように、クレジットバッファ２１５（キャッシュ領域２１７）を制御する。
【００９５】
１１１３段階において、制御部２１４は、ライトインデックス値を初期化する。
【００９６】
１１１４段階において、制御部２１４は、宛先モジュール２２０にクレジットグラントが伝送されるように制御する。
【００９７】
図１２は、他の実施形態によって、クレジット基盤フローコントロールを利用して、ソースモジュールと宛先モジュールとがデータ通信を行うことについて説明するための図面である。図１２を参照すれば、図５に図示されたところと異なり、データ要請は、宛先モジュール２２０に即座に伝送され、タグマッチングは、宛先モジュール２２０から受信されたデータに対して行われる。
【００９８】
ソースモジュール２１０のクレジットバッファ２１５は、クレジットバッファ２１５の一部エントリーを、キャッシュ領域２１７に割り当てる。ソースモジュール２１０は、宛先モジュール２２０から受信されたデータを、クレジットバッファ２１５内に割り当てられたキャッシュ領域２１７にキャッシングすることができる。
【００９９】
１２０１段階において、データ処理部２１１は、データの要請を生成する。例えば、データ処理部２１１は、データのアドレスを指定することにより、データ要請を生成することができる。
【０１００】
データ要請（データアドレス）は、宛先モジュール２２０に即座に伝送される。宛先モジュール２２０がデータ要請を受信した場合、宛先モジュール２２０は、当該アドレスのデータをソースモジュール２１０に伝送する。
【０１０１】
１２０２段階において、タグマッチング部２１２は、受信されたデータのアドレスと、キャッシュ領域２１７にキャッシングされたデータに対応するタグとのタグマッチングを行う。タグマッチング部２１２は、タグマッチングの結果、受信されたデータがキャッシュ領域２１７にキャッシングされている場合には、キャッシュヒットと判断し、受信されたデータがキャッシュ領域２１７にキャッシングされていない場合には、キャッシュミスと判断する。
【０１０２】
１２０３段階において、リクエストＦＩＦＯバッファ２１３は、受信されたデータのアドレスと、キャッシュ領域にキャッシングされたデータに対応するタグとのタグマッチングの結果を保存する。リクエストＦＩＦＯバッファ２１３は、キャッシュヒットの場合には、キャッシュ領域２１７でヒットされたエントリーを示すヒットインデックスまたはヒットフラグを保存し、キャッシュミスの場合には、ミスフラグを保存することができる。
【０１０３】
一方、図１２で点線によって表示された矢印は、キャッシュヒットの場合を示し、１点鎖線によって表示された矢印は、キャッシュミスの場合を示す。
【０１０４】
１２０４段階において、制御部２１４は、リクエストＦＩＦＯバッファ２１３に保存されたタグマッチングの結果がキャッシュヒットである場合、キャッシュ領域２１７内のヒットインデックスにキャッシングされたデータの読み取りを制御する。
【０１０５】
１２０５段階において、データ処理部２１１は、キャッシュ領域２１７から読み取られたデータを処理する。すなわち、図５と異なり、宛先モジュール２２０にデータ要請が伝送され、宛先モジュール２２０からデータが受信されるとしても、図５と同様に、キャッシュヒットの場合には、キャッシュ領域２１７からデータが読み取られる。すなわち、すでにキャッシングされたデータが存在するので、データ要請によって宛先モジュール２２０から受信されたデータは、処理されない。それは、データ処理部２１１がキャッシングされたデータにアクセスすることが、現在受信されたデータへのアクセスよりさらに迅速であって効率的であるからである。
【０１０６】
１２０４段階において、制御部２１４は、リクエストＦＩＦＯバッファ２１３に保存されたタグマッチングの結果がキャッシュミスである場合、宛先モジュール２２０から受信されたデータを、現在設定されているライトインデックス値に対応するエントリーにキャッシングする。その後、制御部２１４は、キャッシュ領域２１７のライトインデックス値を増加させることにより、新たなライトインデックスを設定する。すなわち、ソースモジュール２１０は、受信されたデータと、キャッシングされたデータとのマッチングの結果に基づいて、キャッシュ領域２１７のライトインデックス値を設定することができる。
【０１０７】
一方、制御部２１４は、キャッシュ領域２１７において、あるエントリーにキャッシングされたデータが削除されるたびに、宛先モジュール２２０に、クレジットグラントを伝送することができる。
【０１０８】
前述のように、他の実施形態によっても、図５で説明した実施形態と同様に、ソースモジュール２１０と宛先モジュール２２０との間で、クレジット基盤フローコントロールを利用したデータ通信が行われるとき、クレジットバッファ２１５内のキャッシュ領域２１７にキャッシングされたデータが、データアクセスに活用されることにより、別途のキャッシュが具備されないとしても、データ処理部２１１は、迅速なデータ処理が可能である。
【０１０９】
図１３は、一実施形態による、プロセッサでデータを処理する方法のフローチャートである。図１３に図示されたプロセッサのデータ処理方法は、前述の図面で説明した実施形態に係わるものであり、以下、省略された内容であるとしても、前述の図面で説明した内容は、図１３の方法にも適用される。
【０１１０】
１３０１段階において、ソースモジュール２１０は、データの要請を生成する。
【０１１１】
１３０２段階において、宛先モジュール２２０は、ソースモジュール２１０から、クレジット基盤フローコントロールを利用して、データの要請が受信された場合、要請されたデータを、クレジット基盤フローコントロールを利用して、ソースモジュール２１０に伝送する。
【０１１２】
１３０３段階において、ソースモジュール２１０は、クレジットバッファ２１５内の一部エントリーに割り当てられたキャッシュ領域２１７に、宛先モジュール２２０から受信されたデータをキャッシングする。
【０１１３】
本実施形態による装置は、プロセッサ、プログラムデータを保存して実行するメモリ、ディスクドライブのような永久保存部（permanent  storage）、外部装置と通信する通信ポート・タッチパネル・キー（key）・ボタンのようなユーザインターフェース装置などを含んでもよい。ソフトウェアモジュールまたはアルゴリズムによって具現される方法は、前記プロセッサ上で実行可能なコンピュータで読み取り可能なコードまたはプログラム命令として、コンピュータで読み取り可能な記録媒体上に保存される。ここで、コンピュータで読み取り可能な記録媒体として、マグネチック記録媒体（例えば、ＲＯＭ（read  only  memory）、ＲＡＭ（random  access  memory）、フロッピー（登録商標）ディスク、ハードディスクなど）及び光学的判読媒体（例えば、ＣＤ（compact  disc）−ＲＯＭ、ＤＶＤ（digital  versatile  disc））などがある。コンピュータで読み取り可能な記録媒体は、ネットワークに連結されたコンピュータシステムに分散され、分散方式で、コンピュータで読み取り可能なコードが保存されて実行される。該媒体は、コンピュータによって読み取り可能であり、メモリに保存されてプロセッサで実行される。
【０１１４】
本実施形態は、機能的なブロック構成、及び多様な処理段階で示される。そのような機能ブロックは、特定機能を実行する多様な個数のハードウェア構成または／及びソフトウェア構成によって具現される。例えば、本実施形態は、１以上のマイクロプロセッサの制御、または他の制御装置による多様な機能を実行することができる、メモリ、プロセッシング、ロジック（logic）、ルックアップテーブル（look-up  table)のような直接回路構成を採用することができる。構成要素が、ソフトウェアプログラミングまたはソフトウェア要素によって実行されるところと類似して、本実施形態は、データ構造、プロセス、ルーチン、または他のプログラミング構成の組み合わせによって具現される多様なアルゴリズムを含み、Ｃ、Ｃ＋＋、ジャバ（登録商標（Java））、アセンブラー（assembler）のようなプログラミング言語またはスクリプティング言語によっても具現される。機能的な側面は、１以上のプロセッサで実行されるアルゴリズムによって具現される。また、本実施形態は、電子的な環境設定、信号処理、及び／またはデータ処理などのために従来技術を採用することができる。「メカニズム」、「要素」、「手段」、「構成」のような用語は、広く使用され、機械的であって物理的な構成として限定されるものではない。前記用語は、プロセッサなどと連繋し、ソフトウェアの一連の処理（routines）の意味を含んでもよい。
【０１１５】
本実施形態で説明する特定実行は、例示であり、いかなる方法によっても技術的範囲を限定するものではない。明細書の簡潔さのために、従来の電子的な構成、制御システム、ソフトウェア、前記システムの他の機能的な側面の記載は省略する。また、図面に図示された構成要素間の線の連結、または連結部材は、機能的な連結、及び／または物理的または回路的な連結を例示的に示したものであり、実際の装置では、代替可能であったり追加されたりする多様な機能的な連結、物理的な連結または回路連結としても示される。
【０１１６】
本明細書（特に、特許請求の範囲）において、「前記」の用語、及びそれと類似した指示用語の使用は、単数及び複数のいずれもにも該当する。また、範囲（range）を記載した場合、前記範囲に属する個別的な値を含むものであり（それに反する記載がなければ）、詳細な説明に前記範囲を構成する各個別的な値を記載した通りである。最後に、方法を構成する段階について、明白に順序を記載するか、あるいはそれに反する記載がなければ、前記段階は、適切な順序によって実行される。必ずしも前記段階の記載順序に限定されるものではない。
【０１１７】
以上、本発明について、その望ましい実施形態を中心に説明した。本発明が属する技術分野において、当業者であるならば、本発明が、本発明の本質的な特性から外れない範囲で変形された形態に具現されるということを理解することができるであろう。従って、開示された実施形態は、限定的な観点ではなく、説明的な観点から考慮されなければならない。本発明の範囲は、前述の説明ではなく、特許請求の範囲に示されており、それと同等な範囲内にある全ての差異は、本発明に含まれたものであると解釈されなければならないのである。
【産業上の利用可能性】
【０１１８】
本発明のプロセッサ、及びプロセッサでデータを処理する方法は、例えば、データ処理関連の技術分野に効果的に適用可能である。
【符号の説明】
【０１１９】
１        コンピューティング装置
１０      ＣＰＵ
２０      ＧＰＵ
３０      メモリ
４０      Ｉ／Ｏインターフェース
５０      ネットワークインターフェース
６０      ＮＯＣ
２１０    ソースモジュール
２１１    データ処理部
２１２    タグマッチング部
２１３    リクエストＦＩＦＯ部
２１４    制御部
２１５    クレジットバッファ
２１７    キャッシュ領域
２２０    宛先モジュール
４１０    データパケット
４２０    クレジット
４３０    データ
６１０    ライトインデックス
【図１】
2017111802.tif 000003
【図２】
2017111802.tif 000004
【図３】
2017111802.tif 000005
【図４】
2017111802.tif 000006
【図５】
2017111802.tif 000007
【図６】
2017111802.tif 000008
【図７】
2017111802.tif 000009
【図８】
2017111802.tif 000010
【図９】
2017111802.tif 000011
【図１０】
2017111802.tif 000012
【図１１】
2017111802.tif 000013
【図１２】
2017111802.tif 000014
【図１３】
2017111802.tif 000015