JP2017111802A - プロセッサ及びプロセッサでデータを処理する方法 - Google Patents

プロセッサ及びプロセッサでデータを処理する方法 Download PDF

Info

Publication number
JP2017111802A
JP2017111802A JP2016226782A JP2016226782A JP2017111802A JP 2017111802 A JP2017111802 A JP 2017111802A JP 2016226782 A JP2016226782 A JP 2016226782A JP 2016226782 A JP2016226782 A JP 2016226782A JP 2017111802 A JP2017111802 A JP 2017111802A
Authority
JP
Japan
Prior art keywords
data
cache area
cache
cached
source module
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2016226782A
Other languages
English (en)
Inventor
雄 徐
Woong Seo
雄 徐
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2017111802A publication Critical patent/JP2017111802A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/604Details relating to cache allocation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)

Abstract

【課題】 プロセッサ、及びプロセッサでデータを処理する方法を提供する。
【解決手段】 複数のモジュールを含むプロセッサは、データを要請するソースモジュール、及び要請されたデータをソースモジュールに伝送する宛先モジュールを含み、ソースモジュールは、宛先モジュールから受信されたデータを保存するクレジットバッファを含む。
【選択図】 図3

Description

本発明は、プロセッサ、及びプロセッサでデータを処理する方法に関し、特に、ネットワーク・オン・チップ(NOC)を利用するプロセッサにおいて、データを処理する方法に関する。
システム・オン・チップ(SOC)は、プロセッサ、ハードウェア加速器、メモリのような多様なモジュールを統合したものであり、各モジュール間で互いにデータをやり取りするためには、オン・チップ通信媒体が必要になる。ネットワーク・オン・チップ(NOC)のシステムは、チップ内部に、データ伝送を中継するルータを配置し、モジュール間に分散させるデータ伝送を可能にする技術であり、ネットワーク・オン・チップのシステムをより効率的に具現するための多様な試みが進められている。
米国特許公開2004/0174814号公報
本発明が解決しようとする課題は、プロセッサ、及びプロセッサでデータを処理する方法を提供することである。本実施形態がなすべき技術的課題は、前述のような技術的課題に限定されるものではなく、以下の実施形態から他の技術的課題が類推されもする。
一側面によれば、複数のモジュールを含むプロセッサは、データを要請するソースモジュールと、前記ソースモジュールから、クレジット基盤フローコントロール(credit based flow control)を利用して、前記データの要請が受信された場合、前記要請されたデータを、前記クレジット基盤フローコントロールを利用して、前記ソースモジュールに伝送する宛先(destination)モジュールと、を含み、前記ソースモジュールは、一部エントリーをキャッシュ(cache)領域に割り当て、前記宛先モジュールから受信された前記データを、前記割り当てられたキャッシュ領域にキャッシングする(caching)クレジットバッファ(credit buffer)を含む。
また、前記ソースモジュールは、要請される前記データと、前記キャッシングされたデータとのマッチングの結果に基づいて、前記キャッシュ領域のライトインデックス(write index)値を設定する。
また、前記ソースモジュールは、要請される前記データのアドレスと、前記キャッシュ領域にキャッシングされた前記データに対応するタグとのタグマッチング(tag matching)を行うタグマッチング部をさらに含む。
また、前記ソースモジュールは、前記タグマッチングの結果がキャッシュミス(cache miss)である場合、前記キャッシュ領域のライトインデックス値を増加させる。
また、前記ソースモジュールは、前記キャッシュミスが生じた場合、前記宛先モジュールから前記要請されたデータを受信し、前記キャッシュ領域において、増加される前に、前記ライトインデックス値に対応するエントリーに、前記受信されたデータをキャッシングする。
また、前記ソースモジュールは、前記キャッシュ領域に割り当てられた全てのエントリーにデータがキャッシングされた場合、前記キャッシュ領域に割り当てられた前記エントリーのうち最初のエントリーにキャッシングされたデータを削除し、前記宛先モジュールにクレジットグラント(credit grant)を伝送する。
また、前記ソースモジュールは、前記ライトインデックス値がそれ以上増加することがない状態で、前記キャッシュミスが生じた場合、前記ライトインデックス値が初期化されるように設定し、前記初期化されたライトインデックス値は、前記クレジットバッファにおいて、前記キャッシュ領域に割り当て可能なエントリーのうち、最初のエントリーに対応する。
また、前記ソースモジュールは、要請される前記データのアドレスと、前記キャッシュ領域にキャッシングされた前記データに対応するタグとのタグマッチングの結果を保存するリクエストFIFOバッファと、前記保存されたタグマッチングの結果がキャッシュヒット(cache hit)である場合、前記キャッシュ領域内のヒットインデックス(hit index)にキャッシングされたデータの読み取り(read)を制御し、前記保存されたタグマッチングの結果がキャッシュミスである場合、前記キャッシュ領域のライトインデックス値が増加されるように制御する制御部と、をさらに含む。
また、前記制御部は、前記キャッシュ領域に割り当てられた全てのエントリーにデータがキャッシングされた状態で、前記キャッシュミスが生じた場合、前記宛先モジュールにクレジットグラントが伝送されるように制御する。
また、前記複数のモジュールは、前記プロセッサ内に集積された、ルータ及びIP(intellectual property)のうち少なくとも一つを含む。
また、前記プロセッサは、ネットワーク・オン・チップを利用して、前記複数のモジュール間でデータを送受信する。
また、前記クレジットバッファ内に割り当てられた前記キャッシュ領域は、可変的である(variable)。
他の側面によれば、プロセッサでデータを処理する方法は、ソースモジュールにおいて、データの要請を生成する段階と、宛先(destination)モジュールにおいて、クレジット基盤フローコントロール(credit based flow control)を利用して、前記ソースモジュールから前記データの要請が受信された場合、前記要請されたデータを、前記クレジット基盤フローコントロールを利用して、前記ソースモジュールに伝送する段階と、前記ソースモジュールにおいて、クレジットバッファ(credit buffer)内の一部エントリーに割り当てられたキャッシュ(cache)領域に、前記宛先モジュールから受信された前記データをキャッシングする(caching)段階と、を含む。
また、前記ソースモジュールは、要請される前記データと、前記キャッシングされたデータとのマッチングの結果に基づいて、前記キャッシュ領域のライトインデックス(write index)値を設定する。
また、要請される前記データのアドレスと、前記キャッシュ領域にキャッシングされた前記データに対応するタグとのタグマッチング(tag matching)を行う段階をさらに含む。
また、前記タグマッチングの結果がキャッシュミス(cache miss)である場合、前記キャッシュ領域のライトインデックス値を増加させる段階をさらに含む。
また、前記伝送する段階は、前記キャッシュミスが生じた場合、前記要請されたデータを、前記ソースモジュールに伝送し、前記キャッシングする段階は、前記キャッシュ領域において、増加される前に、前記ライトインデックス値に対応するエントリーに、前記宛先モジュールから受信された前記データをキャッシングする。
また、前記キャッシュ領域に割り当てられた全てのエントリーにデータがキャッシングされた場合、前記キャッシュ領域に割り当てられた前記エントリーのうち最初のエントリーにキャッシングされたデータを削除する段階と、前記最初のエントリーにキャッシングされたデータが削除された場合、前記宛先モジュールにクレジットグラントを伝送する段階と、をさらに含む。
また、前記ライトインデックス値がそれ以上増加することがない状態で、前記キャッシュミスが生じた場合、前記ライトインデックス値を初期化する段階をさらに含み、前記初期化されたライトインデックス値は、前記クレジットバッファにおいて、前記キャッシュ領域に割り当て可能なエントリーのうち、最初のエントリーに対応する。
また、要請される前記データのアドレスと、前記キャッシュ領域にキャッシングされた前記データに対応するタグとのタグマッチングの結果をリクエストFIFOバッファに保存する段階と、前記保存されたタグマッチングの結果がキャッシュヒット(cache hit)である場合、前記キャッシュ領域内のヒットインデックス(hit index)にキャッシングされたデータを読み取るか、あるいは前記保存されたタグマッチングの結果がキャッシュミスである場合、前記キャッシュ領域のライトインデックス値を増加させるように制御する段階と、をさらに含む。
一実施形態によるコンピュータ装置について説明するための図面である。 一実施形態によるプロセッサ内のいずれか2個のモジュールについて説明するための図面である。 一実施形態によるソースモジュールのブロック図である。 一実施形態による、ソースモジュール及び宛先モジュール間で行われるクレジット基盤フローコントロールについて説明するための図面である。 一実施形態によって、クレジット基盤フローコントロールを利用して、ソースモジュールと宛先モジュールとがデータ通信を行うことについて説明するための図面である。 一実施形態によるクレジットバッファ内のキャッシュ領域を割り当てることについて説明するための図面である。 一実施形態によって、キャッシュヒットの場合、キャッシュ領域でのデータアクセスについて説明するための図面である。 一実施形態によって、キャッシュミスの場合、キャッシュ領域でのデータキャッシングについて説明するための図面である。 一実施形態によって、キャッシュミスの場合、キャッシュ領域でのデータキャッシングについて説明するための図面である。 一実施形態によって、キャッシュミスの場合、キャッシュ領域でのデータキャッシングについて説明するための図面である。 一実施形態による、ソースモジュール内のクレジットバッファに割り当てられたキャッシュ領域を利用して、データをキャッシングする方法の詳細フローチャートである。 他の実施形態によって、クレジット基盤フローコントロールを利用して、ソースモジュールと宛先モジュールとがデータ通信を行うことについて説明するための図面である。 一実施形態による、プロセッサでデータを処理する方法のフローチャートである。
本実施形態で使用される用語は、本実施形態での機能を考慮しながら、可能な限り現在広く使用される一般的な用語を選択したが、それは、当技術分野に携わる技術者の意図、判例、または新たな技術の出現などによっても異なる。また、特定の場合は、任意に選定された用語もあり、その場合、当該実施形態の説明部分において、詳細にその意味を記載する。従って、本実施形態で使用される用語は、単純な用語の名称ではない、その用語が有する意味と、本実施形態の全般にわたる内容と基に定義されなければならない。
実施形態に係わる説明において、ある部分が他の部分と連結されているとするとき、それは、直接に連結されている場合だけではなく、その中間に、他の構成要素を挟んで電気的に連結されている場合も含む。また、ある部分がある構成要素を含むとするとき、それは、特別に反対となる記載がない限り、他の構成要素を除くものではなく、他の構成要素をさらに含んでもよいということを意味する。また、実施形態に記載された「…部」、「…モジュール」という用語は、少なくとも1つの機能や動作を処理する単位を意味し、それは、ハードウェアまたはソフトウェアによって具現されるか、あるいはハードウェアとソフトウェアとの結合によっても具現される。
本実施形態で使用される「構成される」または「含む」というような用語は、明細書上に記載された多くの構成要素、または多くの段階を必ずしもいずれも含むものであると解釈されるものではなく、そのうち一部の構成要素または一部の段階は、含まれないこともあり、または追加的な構成要素または段階をさらに含んでもよいと解釈されなければならない。
下記実施形態に係わる説明は、権利範囲を制限するものであると解釈されてはならず、当該技術分野の当業者が容易に類推することができるものは、実施形態の権利範囲に属すると解釈されなければならないのである。以下、添付された図面を参照しながら、ただ例示のための実施形態について詳細に説明する。
図1は、一実施形態によるコンピュータ装置について説明するための図面である。図1を参照すれば、コンピューティング装置1は、CPU(central processing unit)10、GPU(graphics processing unit)20、メモリ30、I/O(input/output)インターフェース40、ネットワークインターフェース50及びネットワーク・オン・チップ(NOC)60を含む。図1に図示されたコンピューティング装置1には、実施形態と係わる構成要素だけが図示されている。従って、図1に図示された構成要素以外に、他の汎用的な構成要素がさらに含まれてもよいということは、当該技術分野の当業者ならば、理解することができるであろう。
コンピューティング装置1は、デスクトップコンピュータ、ノート型パソコン、スマートフォン、PDA(personal digital assistant)、携帯型メディアプレーヤ、ビデオゲーム用コンソール、テレビセットトップボックス、タブレットデバイス、電子書籍リーダ、ウェアラブルデバイスなどを例として挙げることができるが、それらに制限されるものではない。すなわち、コンピューティング装置1は、プロセッシング機能を有する装置であり、コンピューティング装置1の範疇には、多様な装置が含まれる。
CPU 10及びGPU 20は、コンピューティング装置1内で行われる多様な演算を処理するハードウェアコンポーネントである。
メモリ30は、コンピューティング装置1内で処理される各種データを保存するハードウェアコンポーネントであり、例えば、メモリ30は、CPU 10及びGPU 20で処理されたデータ、並びに処理されるデータを保存することができる。また、メモリ30は、CPU 10及びGPU 20によって駆動されるアプリケーション、ドライバ、運用体系(OS)などを保存することができる。メモリ30は、DRAM(dynamic random access memory)・SRAM(static random access memory)のようなRAM(random access memory)、ROM(read only memory)、EEPROM(electrically erasable and programmable read only memory)、CD(compact disc)−ROM、ブルーレイ(登録商標(Blu-ray))、または他の光学ディスクストレージ、HDD(hard disk drive)、SSD(solid state drive)、あるいはフラッシュメモリを含み、さらに、コンピューティング装置1にアクセスされる外部の他のストレージデバイスを含んでもよい。
I/Oインターフェース40は、コンピューティング装置1に、ユーザが所望する情報を入力することができるキーボード、マウスのようなデバイスから、ユーザの入力情報を受信したり、コンピューティング装置1に連結または具備されたディスプレイデバイスにおいて、コンピューティング装置1で処理された情報がディスプレイされるようにディスプレイデバイスにコンピューティング装置1の処理情報を伝送したりするハードウェアコンポーネントである。
ネットワークインターフェース50は、コンピューティング装置1が、外部ネットワークと、有線または無線で通信することができるハードウェアコンポーネントであり、イーサネット(登録商標)モジュール、Wi−Fi(wireless fidelity)モジュール、Bluetooth(登録商標)モジュール、NFC(near field communication)モュールのような多様な有無線通信手段を含む。
ネットワーク・オン・チップ60は、コンピューティング装置1内のハードウェアコンポーネント間でデータを送受信することができるように、ハードウェアコンポーネントを連結させるコミュニケーションシステムである。言い換えれば、ネットワーク・オン・チップ60は、チップ内の複数のIP間で、ルータ(router)を介してネットワーキングすることにより、データを処理することができる技術でもって具現されたものを意味する。ここで、IPそれぞれは、プロセッサコア、ハードウェア加速器、ルータなどに該当する。さらに、IPそれぞれは、プロセッサ単位、メモリ単位などをも意味する。図1に図示された、CPU 10、GPU 20、メモリ30、I/Oインターフェース40及びネットワークインターフェース50の相互間には、ネットワーク・オン・チップ60を介してデータ通信が行われる。
一方、ハードウェアコンポーネント間のデータ通信以外にも、一部ハードウェアコンポーネント内部のモジュールも、ネットワーク・オン・チップを利用して、データ通信を行うことができる。コンピューティング装置1において、CPU 10及びGPU 20のようなプロセッシング装置それぞれの内部に具備されたモジュールまたはコアは、ネットワーク・オン・チップを利用して、データ通信を行うことができる。一方、CPU 10、GPU 20以外にも、コンピューティング装置1内の他のハードウェアコンポーネントも、ネットワーク・オン・チップを利用して具現され、コンピューティング装置1において、ネットワーク・オン・チップを利用して具現されたハードウェアコンポーネントの個数も多様である。
図2は、一実施形態によるプロセッサ内のいずれか2個のモジュールについて説明するための図面である。本実施形態においてプロセッサは、図1に図示されたCPU 10またはGPU 20を指してもよいが、それらに制限されるものではなく、メモリ30内に具備されたプロセッシングユニット(例えば、メモリコントローラ)、またはネットワークインターフェース50内に具備されたプロセッシングユニットなどを指してもよい。また、ソースモジュール210は、データ要請を生成する側のIPモジュールである。宛先モジュール220は、ソースモジュール210からデータ要請を受信した場合、ソースモジュール210にデータを伝送する側のIPモジュールである。
ソースモジュール210は、宛先モジュール220から受信されたデータをクレジットバッファ(credit buffer)215に保存することができる。ここで、クレジットバッファ215の保存は、データバッファリングまたはデータキャッシング(caching)のような多様な用途を含む意味である。
一方、ソースモジュール210及び宛先モジュール220のそれぞれは、プロセッサ内のプロセッサコア、ハードウェア加速器、ルータのようなIPに該当する。
図3は、一実施形態によるソースモジュールのブロック図である。図3を参照すれば、ソースモジュール210は、データ処理部211、クレジットバッファ215、タグマッチング部212、リクエストFIFO(first in first out)バッファ213及び制御部214を含んでもよい。図3に図示されたソースモジュール210には、実施形態と係わる構成要素だけが図示されている。従って、図3に図示された構成要素以外に、他の汎用的な構成要素がさらに含まれてもよいということは、当該技術分野の当業者であるならば、理解することができるであろう。
データ処理部211は、処理されなければならないデータの要請を生成する。処理されなければならないデータは、データ処理部211において、ある演算を行うために必要なデータでもある。データ要請は、データが読み取られるアドレス、またはデータのシグネチャ(signature)のような多様なタイプでもある。
クレジットバッファ215は、データ処理部211によって処理されたデータ、及びデータ処理部211によって処理されるデータをバッファリングすることができる。さらに、クレジットバッファ215内には、データキャッシングのためのキャッシュ領域217が含まれる。キャッシュ領域217は、キャッシュと類似した役割をする領域であるが、クレジットバッファ215内に具現される。すなわち、ソースモジュール210には、クレジットバッファ215とは独立的なキャッシュが別途に具備されない。クレジットバッファ215内に、キャッシュと類似した役割を行うキャッシュ領域217が割り当てられることにより、データ処理部211は、まさしく別途のキャッシュが具備されているような迅速なデータアクセスが可能である。ソースモジュール210において、クレジットバッファ215とキャッシュとが独立して具現される場合であるならば、クレジットバッファ215は、単にデータを保存し、キャッシュに、データ処理部211が必要なデータをコピーする役割のみを行う。従って、そのような場合には、クレジットバッファ215とキャッシュとのデータトラフィックが増大し、不要な帯域幅が消耗され、バッファエネルギーが浪費される。しかし、本実施形態のように、クレジットバッファ215内に、キャッシュと類似した役割を有するキャッシュ領域217が具現されるのであるならば、クレジットバッファ215とキャッシュとのデータトラフィック、不要な帯域幅の浪費を減らすことができる。
タグマッチング部212は、要請されるデータのアドレスと、キャッシュ領域217にキャッシングされたデータに対応するタグとのタグマッチング(tag matching)を行う。キャッシュ領域217にデータがキャッシングされる場合、キャッシングされたデータについては、宛先モジュール220(図2)に保存されていたデータアドレスを識別することができるタグが共にマッピングされる。それによって、タグマッチング部212は、タグを利用して、要請されるデータがキャッシュ領域217にキャッシングされているか否かということを識別することができる。
タグマッチング部212は、タグマッチングの結果、要請されるデータがキャッシュ領域217にキャッシングされている場合には、キャッシュヒット(cache hit)と判断し、要請されるデータがキャッシュ領域217にキャッシングされていない場合には、キャッシュミス(cache miss)と判断する。
リクエストFIFOバッファ213は、要請されるデータのアドレスと、キャッシュ領域にキャッシングされたデータに対応するタグとのタグマッチングの結果を保存する。すなわち、リクエストFIFOバッファ213は、キャッシュヒットの場合には、キャッシュ領域217でヒットされたエントリーを示すヒットインデックス(hit index)またはヒットフラグ(hit flag)を保存し、キャッシュミスの場合には、ミスフラグ(miss flag)を保存することができる。
制御部214は、タグマッチング部212のタグマッチングの結果によって、クレジットバッファ215内のキャッシュ領域217でのデータ読み取り/書き込みを制御する。さらに詳細には、制御部214は、リクエストFIFOバッファ213に保存されたタグマッチングの結果がキャッシュヒットである場合、キャッシュ領域217内のヒットインデックスにキャッシングされたデータの読み取りを制御し、保存されたタグマッチングの結果がキャッシュミスである場合、キャッシュ領域217のライトインデックス値が増加されるように制御する。本実施形態においてライトインデックスは、新たなデータがキャッシュ領域217にキャッシングされなければならないとき、キャッシュ領域217内に書き込まれるエントリーを示す情報である。さらに、制御部214は、宛先モジュール220(図2)へのクレジットグラント(credit grant)の伝送を制御することができる。
一方、本実施形態によるソースモジュール210は、前述のように、クレジットバッファ215を含み、それは、ソースモジュール210が、クレジット基盤フローコントロールを利用して、他のモジュール(例えば、宛先モジュール220(図2))とデータを送受信するためである。本実施形態においては、ネットワーク・オン・チップを利用して具現されたプロセッサ内において、クレジットバッファ215を利用したクレジット基盤フローコントロールが行われるように説明しているが、それに制限されるものではなく、本実施形態は、クレジットバッファ215を利用したクレジット基盤フローコントロールが行われる限り、ネットワーク・オン・チップを利用せずに具現されたプロセッサについても適用される。
図4は、一実施形態による、ソースモジュール及び宛先モジュール間で行われるクレジット基盤フローコントロールについて説明するための図面である。図4を参照すれば、ソースモジュール210が宛先モジュール220にデータを要請した場合、宛先モジュール220は、要請されたデータをソースモジュール210に伝送する。ソースモジュール210は、宛先モジュール220から受信されたデータを、クレジットバッファ215に保存することができる。ここで、クレジットバッファ215は、総6個のエントリーを有する、6−エントリーバッファであることと仮定して説明する。
宛先モジュール220は、ソースモジュール210内のクレジットバッファ215のクレジットカウント(credit count)についての情報をあらかじめ知っている。クレジットバッファ215のクレジットカウントは、クレジットバッファ215内の保存可能なエントリーの情報であり、クレジットバッファ215が6−エントリーバッファであるので、図4で最初のクレジットカウントは、6である。
ソースモジュール210が、データを宛先モジュール220に要請した場合、宛先モジュール220は、6セルのデータパッケージ410を伝送することができる。ソースモジュール210は、それぞれのデータパッケージ410が到着するたびに、要請されたデータが、クレジットバッファ215に保存されたということを示すクレジット420を、宛先モジュール220にリターンする。すなわち、ソースモジュール210は、宛先モジュールに、総6個のクレジット420をリターンすることができる。宛先モジュール220は、ソースモジュール210から、クレジット420が受信されるたびに、クレジットカウントを一つずつ減少させる。クレジット420が継続的に受信され、クレジットカウントが0になる場合には、宛先モジュール220は、クレジットバッファ215がフル(full)であるために、それ以上データを受信することができないということが分かる。
一方、クレジットバッファ215において、いずれかのデータ430が読み取られ、データ430の処理が完了した場合、クレジットバッファ215から、データ430が削除される。そのとき、クレジットバッファ215は、エントリーがないということを宛先モジュール220に知らせるために、宛先モジュール220にクレジットグラントを伝送する。宛先モジュール220は、クレジットグラントを受信するたびに、クレジットカウントを1ほど増加させる。
前述のようなクレジット基盤フローコントロールの方式により、ソースモジュール210と宛先モジュール220は、データをやり取りすることができる。
図5は、一実施形態によって、クレジット基盤フローコントロールを利用して、ソースモジュールと宛先モジュールとがデータ通信を行うことについて説明するための図面である。図5を参照すれば、ソースモジュール210のクレジットバッファ215は、クレジットバッファ215の一部エントリーをキャッシュ領域217に割り当てる。クレジットバッファ215内に割り当てられたキャッシュ領域217は、可変的(variable)である。ソースモジュール210は、宛先モジュール220から受信されたデータを、クレジットバッファ215内に割り当てられたキャッシュ領域217にキャッシングすることができる。
501段階において、データ処理部211は、データの要請を生成する。例えば、データ処理部211は、データのアドレスを指定することにより、データ要請を生成することができる。
502段階において、タグマッチング部212は、要請されるデータのアドレスと、キャッシュ領域217にキャッシングされたデータに対応するタグとのタグマッチングを行う。タグマッチング部212は、タグマッチングの結果、要請されるデータがキャッシュ領域217にキャッシングされている場合には、キャッシュヒットと判断し、要請されるデータがキャッシュ領域217にキャッシングされていない場合には、キャッシュミスと判断する。
503段階において、リクエストFIFOバッファ213は、要請されるデータのアドレスと、キャッシュ領域にキャッシングされたデータに対応するタグとのタグマッチングの結果を保存する。リクエストFIFOバッファ213は、キャッシュヒットの場合には、キャッシュ領域217でヒットされたエントリーを示すヒットインデックスまたはヒットフラグを保存し、キャッシュミスの場合には、ミスフラグを保存することができる。
一方、図5で点線によって表示された矢印は、キャッシュヒットの場合を示し、1点鎖線によって表示された矢印は、キャッシュミスの場合を示す。
504段階において、制御部214は、リクエストFIFOバッファ213に保存されたタグマッチングの結果がキャッシュヒットである場合、キャッシュ領域217内のヒットインデックスにキャッシングされたデータの読み取りを制御する。
505段階において、データ処理部211は、キャッシュ領域217から読み取られたデータを処理する。すなわち、キャッシュヒットの場合、データ処理部211によるデータ要請は、宛先モジュール220に伝達されず、ソースモジュール210内で処理される。
前述の502段階において、タグマッチング部212のタグマッチング結果がキャッシュミスである場合、データ処理部211のデータ要請(データのアドレス)は、宛先モジュール220に伝送される。
504段階において、制御部214は、リクエストFIFOバッファ213に保存されたタグマッチングの結果がキャッシュミスである場合、宛先モジュール220から受信されたデータを、現在設定されているライトインデックス値に対応するエントリーにキャッシングする。その後、制御部214は、キャッシュ領域217のライトインデックス値を増加させることにより、新たなライトインデックスを設定する。すなわち、ソースモジュール210は、要請されるデータと、キャッシングされたデータとのマッチングの結果(又は、合致するか否か)に基づいて、キャッシュ領域217のライトインデックス値を設定することができる。
一方、制御部214は、キャッシュ領域217から、いずれかのエントリーにキャッシングされたデータが削除されるたびに、宛先モジュール220にクレジットグラントを伝送することができる。
前述のように、ソースモジュール210と宛先モジュール220との間で、クレジット基盤フローコントロールを利用したデータ通信が行われるとき、クレジットバッファ215内のキャッシュ領域217にキャッシングされたデータが、データアクセスに活用されることにより、別途のキャッシュが具備されないとしても、データ処理部211は、迅速なデータ処理が可能である。
以下、図6ないし図10では、クレジットバッファ215内のキャッシュ領域217の活用方法についてさらに詳細に説明する。
図6は、一実施形態によるクレジットバッファ内のキャッシュ領域を割り当てることについて説明するための図面である。図6を参照すれば、クレジットバッファ215は、総N個(Nは、自然数)のエントリーを有すると仮定する。すなわち、クレジットバッファ215には、0番目エントリーから(N−1)番目エントリーまでデータの保存が可能である。
キャッシュ領域217は、クレジットバッファ215の総N個のエントリーのうち、一部のエントリーに割り当てられる。例えば、キャッシュ領域217は、Nより少ないK個(Kは、自然数)のエントリーに割り当てられていると仮定する。キャッシュ領域217の最初の割り当ての時、キャッシュ領域217は、0番目エントリーから(K−1)番目エントリーまで割り当てられるが、それに制限されるものではなく、キャッシュ領域217の最初開始エントリーは、0番目エントリーでなくともよい。
ライトインデックス610は、データ書き込みが完了したエントリーの次のエントリーを示す。図6に図示されているように、キャッシュ領域217において、0番目エントリーから(K−2)番目エントリーまでデータがいずれも書き込まれた場合、ライトインデックス610は、(K−1)番目エントリーを示すことができる。
そのように、本実施形態によるソースモジュール210は、クレジットバッファ215内にキャッシュ領域217を割り当てることにより、別途のキャッシュを具備しないとしても、データキャッシングが可能である。
図7は、一実施形態によって、キャッシュヒットの場合、キャッシュ領域でのデータアクセスについて説明するための図面である。図7を参照すれば、データ処理部211は、特定アドレス(例えば、0x01F)のデータ要請(701)を生成することができる。タグマッチング部212は、要請されたデータのアドレス0x01Fにマッチングするタグ(すなわち、合致するタグ)が存在するか否かということを判断するためのタグマッチング(702)を行う。タグマッチング部212は、アドレス0x01Fにマッチングするタグ0x01Fが存在する場合、キャッシュヒットであると判断する。それによって、ヒットインデックスは、タグ0x01Fが、キャッシュ領域217において、2番目エントリーを指定することを示すことができる。すなわち、ヒットインデックスは、キャッシュヒットである場合、マッチングするタグに対応するキャッシュ領域217内のエントリーを示す情報であり、タグに対応するキャッシュ領域217内のエントリーには、アドレス0x01Fのデータがキャッシングされている。制御部214は、キャッシュ領域217内の2番目エントリーにキャッシングされた、アドレス0x01Fのデータを読み取る。
すなわち、図7で説明されているように、ソースモジュール210内のクレジットバッファ215の一部に、キャッシュ領域217が割り当てられることにより、まさしくキャッシュが実際に存在するように、データの迅速なアクセスが可能である。
図8は、一実施形態によるキャッシュミスの場合、キャッシュ領域でのデータキャッシングについて説明するための図面である。図8を参照すれば、データ処理部211は、特定アドレス(例えば、0x08F)のデータ要請(801)を生成することができる。タグマッチング部212は、要請されたデータのアドレス0x08Fにマッチングするタグが存在するか否かということを判断するためのタグマッチング(802)を行う。タグマッチング部212は、アドレス0x08Fにマッチングするタグが存在しないので、キャッシュミスであると判断する。それによって、宛先モジュール220は、ソースモジュール210から、アドレス0x08Fのデータに対する要請を受信する。
宛先モジュール220から、アドレス0x08Fのデータが受信された場合、クレジットバッファ215内のキャッシュ領域217の現在ライトインデックス値に対応するエントリーに、アドレス0x08Fのデータがキャッシングされる。図8では、キャッシュ領域217の0番目エントリーから(K−4)番目エントリーまで、すでにデータがキャッシングされているので、現在ライトインデックス値(増加される前のライトインデックス値)は、(K−3)番目エントリーに対応する。従って、アドレス0x08Fのデータは、キャッシュ領域217の(K−3)番目エントリーにキャッシングされる。
制御部214は、現在ライトインデックス値に対応する(K−3)番目エントリーには、それ以上データをキャッシングすることができないので、ライトインデックス値を増加させ、新たなライトインデックスを設定する。すなわち、制御部214は、新たなライトインデックス値は、(K−2)番目エントリーであると設定する。
言い換えれば、ソースモジュール210(制御部214)は、要請されるデータと、キャッシングされたデータとのマッチングの結果に基づいて、キャッシュ領域217のライトインデックス値を設定することができる。キャッシュミスが生じた場合、ソースモジュール210(制御部214)は、キャッシュ領域217のライトインデックス値を増加させる。
図9は、一実施形態によるキャッシュミスの場合、キャッシュ領域でのデータキャッシングについて説明するための図面である。図9を参照すれば、前述の図8で説明したキャッシュ領域217の全てのエントリー(0番目エントリーから(K−1)番目エントリーまで)にデータがキャッシングされた場合について説明する。
クレジットバッファ215内において、キャッシュ領域217に割り当てられたエントリーは、総K個のエントリーとして固定される。K個のエントリー(0番目エントリーから(K−1)番目エントリーまで)にデータがいずれもキャッシングされた場合、ライトインデックス値は、K番目エントリーに対応すると設定されるが、K番目エントリーは、現在キャッシュ領域217の外部に該当する。ライトインデックス値がキャッシュ領域217の外部であるK番目エントリーに対応するので、キャッシュ領域217は、新たに割り当てられる必要がある。なぜならば、宛先モジュール220から新たに受信されたデータは、キャッシュ領域217にキャッシングされることになるからである。従って、キャッシュ領域217に割り当てられたK個のエントリー(0番目エントリーから(K−1)番目エントリーまで)のうち、最初のエントリー(0番目エントリー)にキャッシングされたデータ901が削除され、クレジットバッファ215内においてキャッシュ領域217は、1番目エントリーからK番目エントリーまでであると新たに割り当てられる。
1つのエントリーが空き、キャッシュ領域217が新たに割り当てられることにより、キャッシュ領域217には、キャッシング可能な余分のエントリーが生じたので、宛先モジュール220にクレジットグラントが伝送される。
図10は、一実施形態によるキャッシュミスの場合、キャッシュ領域でのデータキャッシングについて説明するための図面である。図10を参照すれば、ライトインデックス値が継続的に増加され、現在ライトインデックス値が、クレジットバッファ215の最終エントリー((N−1)番目エントリー)に対応する場合について説明する。
現在ライトインデックス値が、クレジットバッファ215の最終エントリー((N−1)番目エントリー)に対応する状態でキャッシュミスが生じた場合、宛先モジュール220から受信されたデータ1001は、現在ライトインデックス値((N−1)番目エントリー)によって、(N−1)番目エントリーにキャッシングされる。現在ライトインデックス値が示すエントリーには、データ1001がキャッシングされたので、新たなライトインデックス値を設定するために、現在ライトインデックス値が増加されなければならないが、(N−1)番目エントリーは、クレジットバッファ215の最終エントリーに該当するので、ライトインデックス値は、それ以上増加させることができない。そこで、ライトインデックス値が初期化される。初期化されたライトインデックス値は、クレジットバッファ215において、キャッシュ領域217に割り当て可能なエントリーのうち、最初のエントリー(0番目エントリー)に対応する。
すなわち、ライトインデックス値がそれ以上増加させることができない場合、キャッシュ領域217は、0番目エントリー及び(N−7)番目エントリーから、(N−1)番目エントリーまでであると新たに割り当てられる。
図11は、一実施形態による、ソースモジュール内のクレジットバッファに割り当てられたキャッシュ領域を利用して、データをキャッシングする方法の詳細フローチャートである。
1101段階において、データ処理部211は、データ要請を生成する。
1102段階において、タグマッチング部212は、要請されるデータのアドレスと、キャッシュ領域217にキャッシングされたデータに対応するタグとのタグマッチングを行う。
1103段階において、タグマッチング部212は、タグマッチングを行った結果、キャッシュヒットであるか、あるいはキャッシュミスであるかということを判断する。
1104段階において、キャッシュヒットである場合、制御部214は、ヒットインデックスに対応するエントリーにキャッシングされたデータが読み取られるように、クレジットバッファ215(キャッシュ領域217)を制御する。
1105段階において、キャッシュミスである場合、制御部214は、現在ライトインデックスに対応するエントリーに、宛先モジュール220から受信されたデータをキャッシングする。
1106段階において、制御部214は、現在ライトインデックスに対応するエントリーにデータがキャッシングされることにより、キャッシュ領域217がフルであるか否かというイことを判断する。
1107段階において、キャッシュ領域217がフルではない場合、制御部214は、ライトインデックス値を増加させる。
1108段階において、キャッシュ領域217がフルである場合、制御部214は、ライトインデックス値の増加がそれ以上不可能であるか否かということを判断する。
1109段階において、ライトインデックス値の増加が可能である場合、制御部214は、キャッシュ領域217内の最初のエントリーにキャッシングされたデータが削除されるように、クレジットバッファ215(キャッシュ領域217)を制御する。
1110段階において、制御部214は、ライトインデックス値を増加させる。
1111段階において、制御部214は、宛先モジュール220にクレジットグラントが伝送されるように制御する。
1112段階において、ライトインデックス値の増加が不可能である場合、制御部214は、キャッシュ領域217内の最初のエントリーにキャッシングされたデータが削除されるように、クレジットバッファ215(キャッシュ領域217)を制御する。
1113段階において、制御部214は、ライトインデックス値を初期化する。
1114段階において、制御部214は、宛先モジュール220にクレジットグラントが伝送されるように制御する。
図12は、他の実施形態によって、クレジット基盤フローコントロールを利用して、ソースモジュールと宛先モジュールとがデータ通信を行うことについて説明するための図面である。図12を参照すれば、図5に図示されたところと異なり、データ要請は、宛先モジュール220に即座に伝送され、タグマッチングは、宛先モジュール220から受信されたデータに対して行われる。
ソースモジュール210のクレジットバッファ215は、クレジットバッファ215の一部エントリーを、キャッシュ領域217に割り当てる。ソースモジュール210は、宛先モジュール220から受信されたデータを、クレジットバッファ215内に割り当てられたキャッシュ領域217にキャッシングすることができる。
1201段階において、データ処理部211は、データの要請を生成する。例えば、データ処理部211は、データのアドレスを指定することにより、データ要請を生成することができる。
データ要請(データアドレス)は、宛先モジュール220に即座に伝送される。宛先モジュール220がデータ要請を受信した場合、宛先モジュール220は、当該アドレスのデータをソースモジュール210に伝送する。
1202段階において、タグマッチング部212は、受信されたデータのアドレスと、キャッシュ領域217にキャッシングされたデータに対応するタグとのタグマッチングを行う。タグマッチング部212は、タグマッチングの結果、受信されたデータがキャッシュ領域217にキャッシングされている場合には、キャッシュヒットと判断し、受信されたデータがキャッシュ領域217にキャッシングされていない場合には、キャッシュミスと判断する。
1203段階において、リクエストFIFOバッファ213は、受信されたデータのアドレスと、キャッシュ領域にキャッシングされたデータに対応するタグとのタグマッチングの結果を保存する。リクエストFIFOバッファ213は、キャッシュヒットの場合には、キャッシュ領域217でヒットされたエントリーを示すヒットインデックスまたはヒットフラグを保存し、キャッシュミスの場合には、ミスフラグを保存することができる。
一方、図12で点線によって表示された矢印は、キャッシュヒットの場合を示し、1点鎖線によって表示された矢印は、キャッシュミスの場合を示す。
1204段階において、制御部214は、リクエストFIFOバッファ213に保存されたタグマッチングの結果がキャッシュヒットである場合、キャッシュ領域217内のヒットインデックスにキャッシングされたデータの読み取りを制御する。
1205段階において、データ処理部211は、キャッシュ領域217から読み取られたデータを処理する。すなわち、図5と異なり、宛先モジュール220にデータ要請が伝送され、宛先モジュール220からデータが受信されるとしても、図5と同様に、キャッシュヒットの場合には、キャッシュ領域217からデータが読み取られる。すなわち、すでにキャッシングされたデータが存在するので、データ要請によって宛先モジュール220から受信されたデータは、処理されない。それは、データ処理部211がキャッシングされたデータにアクセスすることが、現在受信されたデータへのアクセスよりさらに迅速であって効率的であるからである。
1204段階において、制御部214は、リクエストFIFOバッファ213に保存されたタグマッチングの結果がキャッシュミスである場合、宛先モジュール220から受信されたデータを、現在設定されているライトインデックス値に対応するエントリーにキャッシングする。その後、制御部214は、キャッシュ領域217のライトインデックス値を増加させることにより、新たなライトインデックスを設定する。すなわち、ソースモジュール210は、受信されたデータと、キャッシングされたデータとのマッチングの結果に基づいて、キャッシュ領域217のライトインデックス値を設定することができる。
一方、制御部214は、キャッシュ領域217において、あるエントリーにキャッシングされたデータが削除されるたびに、宛先モジュール220に、クレジットグラントを伝送することができる。
前述のように、他の実施形態によっても、図5で説明した実施形態と同様に、ソースモジュール210と宛先モジュール220との間で、クレジット基盤フローコントロールを利用したデータ通信が行われるとき、クレジットバッファ215内のキャッシュ領域217にキャッシングされたデータが、データアクセスに活用されることにより、別途のキャッシュが具備されないとしても、データ処理部211は、迅速なデータ処理が可能である。
図13は、一実施形態による、プロセッサでデータを処理する方法のフローチャートである。図13に図示されたプロセッサのデータ処理方法は、前述の図面で説明した実施形態に係わるものであり、以下、省略された内容であるとしても、前述の図面で説明した内容は、図13の方法にも適用される。
1301段階において、ソースモジュール210は、データの要請を生成する。
1302段階において、宛先モジュール220は、ソースモジュール210から、クレジット基盤フローコントロールを利用して、データの要請が受信された場合、要請されたデータを、クレジット基盤フローコントロールを利用して、ソースモジュール210に伝送する。
1303段階において、ソースモジュール210は、クレジットバッファ215内の一部エントリーに割り当てられたキャッシュ領域217に、宛先モジュール220から受信されたデータをキャッシングする。
本実施形態による装置は、プロセッサ、プログラムデータを保存して実行するメモリ、ディスクドライブのような永久保存部(permanent storage)、外部装置と通信する通信ポート・タッチパネル・キー(key)・ボタンのようなユーザインターフェース装置などを含んでもよい。ソフトウェアモジュールまたはアルゴリズムによって具現される方法は、前記プロセッサ上で実行可能なコンピュータで読み取り可能なコードまたはプログラム命令として、コンピュータで読み取り可能な記録媒体上に保存される。ここで、コンピュータで読み取り可能な記録媒体として、マグネチック記録媒体(例えば、ROM(read only memory)、RAM(random access memory)、フロッピー(登録商標)ディスク、ハードディスクなど)及び光学的判読媒体(例えば、CD(compact disc)−ROM、DVD(digital versatile disc))などがある。コンピュータで読み取り可能な記録媒体は、ネットワークに連結されたコンピュータシステムに分散され、分散方式で、コンピュータで読み取り可能なコードが保存されて実行される。該媒体は、コンピュータによって読み取り可能であり、メモリに保存されてプロセッサで実行される。
本実施形態は、機能的なブロック構成、及び多様な処理段階で示される。そのような機能ブロックは、特定機能を実行する多様な個数のハードウェア構成または/及びソフトウェア構成によって具現される。例えば、本実施形態は、1以上のマイクロプロセッサの制御、または他の制御装置による多様な機能を実行することができる、メモリ、プロセッシング、ロジック(logic)、ルックアップテーブル(look-up table)のような直接回路構成を採用することができる。構成要素が、ソフトウェアプログラミングまたはソフトウェア要素によって実行されるところと類似して、本実施形態は、データ構造、プロセス、ルーチン、または他のプログラミング構成の組み合わせによって具現される多様なアルゴリズムを含み、C、C++、ジャバ(登録商標(Java))、アセンブラー(assembler)のようなプログラミング言語またはスクリプティング言語によっても具現される。機能的な側面は、1以上のプロセッサで実行されるアルゴリズムによって具現される。また、本実施形態は、電子的な環境設定、信号処理、及び/またはデータ処理などのために従来技術を採用することができる。「メカニズム」、「要素」、「手段」、「構成」のような用語は、広く使用され、機械的であって物理的な構成として限定されるものではない。前記用語は、プロセッサなどと連繋し、ソフトウェアの一連の処理(routines)の意味を含んでもよい。
本実施形態で説明する特定実行は、例示であり、いかなる方法によっても技術的範囲を限定するものではない。明細書の簡潔さのために、従来の電子的な構成、制御システム、ソフトウェア、前記システムの他の機能的な側面の記載は省略する。また、図面に図示された構成要素間の線の連結、または連結部材は、機能的な連結、及び/または物理的または回路的な連結を例示的に示したものであり、実際の装置では、代替可能であったり追加されたりする多様な機能的な連結、物理的な連結または回路連結としても示される。
本明細書(特に、特許請求の範囲)において、「前記」の用語、及びそれと類似した指示用語の使用は、単数及び複数のいずれもにも該当する。また、範囲(range)を記載した場合、前記範囲に属する個別的な値を含むものであり(それに反する記載がなければ)、詳細な説明に前記範囲を構成する各個別的な値を記載した通りである。最後に、方法を構成する段階について、明白に順序を記載するか、あるいはそれに反する記載がなければ、前記段階は、適切な順序によって実行される。必ずしも前記段階の記載順序に限定されるものではない。
以上、本発明について、その望ましい実施形態を中心に説明した。本発明が属する技術分野において、当業者であるならば、本発明が、本発明の本質的な特性から外れない範囲で変形された形態に具現されるということを理解することができるであろう。従って、開示された実施形態は、限定的な観点ではなく、説明的な観点から考慮されなければならない。本発明の範囲は、前述の説明ではなく、特許請求の範囲に示されており、それと同等な範囲内にある全ての差異は、本発明に含まれたものであると解釈されなければならないのである。
本発明のプロセッサ、及びプロセッサでデータを処理する方法は、例えば、データ処理関連の技術分野に効果的に適用可能である。
1 コンピューティング装置
10 CPU
20 GPU
30 メモリ
40 I/Oインターフェース
50 ネットワークインターフェース
60 NOC
210 ソースモジュール
211 データ処理部
212 タグマッチング部
213 リクエストFIFO部
214 制御部
215 クレジットバッファ
217 キャッシュ領域
220 宛先モジュール
410 データパケット
420 クレジット
430 データ
610 ライトインデックス

Claims (20)

  1. 複数のモジュールを含むプロセッサにおいて、
    データを要請するソースモジュールと、
    前記ソースモジュールから、クレジット基盤フローコントロールを利用して、前記データの要請が受信された場合、前記要請されたデータを、前記クレジット基盤フローコントロールを利用して、前記ソースモジュールに伝送する宛先モジュールと、を含み、
    前記ソースモジュールは、一部エントリーをキャッシュ領域に割り当て、前記宛先モジュールから受信された前記データを、前記割り当てられたキャッシュ領域にキャッシングするクレジットバッファを含むプロセッサ。
  2. 前記ソースモジュールは、
    要請される前記データと、前記キャッシングされたデータとのマッチングの結果に基づいて、前記キャッシュ領域のライトインデックス値を設定することを特徴とする請求項1に記載のプロセッサ。
  3. 前記ソースモジュールは、
    要請される前記データのアドレスと、前記キャッシュ領域にキャッシングされた前記データに対応するタグとのタグマッチングを行うタグマッチング部をさらに含むことを特徴とする請求項1又は2に記載のプロセッサ。
  4. 前記ソースモジュールは、
    前記タグマッチングの結果がキャッシュミスである場合、前記キャッシュ領域のライトインデックス値を増加させることを特徴とする請求項3に記載のプロセッサ。
  5. 前記ソースモジュールは、
    前記キャッシュミスが生じた場合、前記宛先モジュールから前記要請されたデータを受信し、
    前記キャッシュ領域において、増加される前に、前記ライトインデックス値に対応するエントリーに、前記受信されたデータをキャッシングすることを特徴とする請求項4に記載のプロセッサ。
  6. 前記ソースモジュールは、
    前記キャッシュ領域に割り当てられた全てのエントリーにデータがキャッシングされた場合、前記キャッシュ領域に割り当てられた前記エントリーのうち最初のエントリーにキャッシングされたデータを削除し、前記宛先モジュールにクレジットグラントを伝送することを特徴とする請求項4に記載のプロセッサ。
  7. 前記ソースモジュールは、
    前記ライトインデックス値がそれ以上増加することがない状態で、前記キャッシュミスが生じた場合、前記ライトインデックス値が初期化されるように設定し、
    前記初期化されたライトインデックス値は、
    前記クレジットバッファにおいて、前記キャッシュ領域に割り当て可能なエントリーのうち、最初のエントリーに対応することを特徴とする請求項6に記載のプロセッサ。
  8. 前記ソースモジュールは、
    要請される前記データのアドレスと、前記キャッシュ領域にキャッシングされた前記データに対応するタグとのタグマッチングの結果を保存するリクエストFIFOバッファと、
    前記保存されたタグマッチングの結果がキャッシュヒットである場合、前記キャッシュ領域内のヒットインデックスにキャッシングされたデータの読み取りを制御し、前記保存されたタグマッチングの結果がキャッシュミスである場合、前記キャッシュ領域のライトインデックス値が増加されるように制御する制御部と、をさらに含むことを特徴とする請求項1ないし7のうちの何れか一項に記載のプロセッサ。
  9. 前記制御部は、
    前記キャッシュ領域に割り当てられた全てのエントリーにデータがキャッシングされた状態で、前記キャッシュミスが生じた場合、前記宛先モジュールにクレジットグラントが伝送されるように制御することを特徴とする請求項8に記載のプロセッサ。
  10. 前記複数のモジュールは、
    前記プロセッサ内に集積された、ルータ及びIP(intellectual property)のうち少なくとも一つを含むことを特徴とする請求項1ないし9のうちの何れか一項に記載のプロセッサ。
  11. 前記プロセッサは、
    ネットワーク・オン・チップを利用して、前記複数のモジュール間でデータを送受信することを特徴とする請求項1ないし10のうちの何れか一項に記載のプロセッサ。
  12. 前記クレジットバッファ内に割り当てられた前記キャッシュ領域は、
    可変的であることを特徴とする請求項1ないし11のうちの何れか一項に記載のプロセッサ。
  13. プロセッサでデータを処理する方法において、
    ソースモジュールにおいて、データの要請を生成する段階と、
    宛先モジュールにおいて、クレジット基盤フローコントロールを利用して、前記ソースモジュールから前記データの要請が受信された場合、前記要請されたデータを、前記クレジット基盤フローコントロールを利用して、前記ソースモジュールに伝送する段階と、
    前記ソースモジュールにおいて、クレジットバッファ内の一部エントリーに割り当てられたキャッシュ領域に、前記宛先モジュールから受信された前記データをキャッシングする段階と、を含む方法。
  14. 前記ソースモジュールは、
    要請される前記データと、前記キャッシングされたデータとのマッチングの結果に基づいて、前記キャッシュ領域のライトインデックス値を設定することを特徴とする請求項13に記載の方法。
  15. 要請される前記データのアドレスと、前記キャッシュ領域にキャッシングされた前記データに対応するタグとのタグマッチングを行う段階をさらに含むことを特徴とする請求項13又は14に記載の方法。
  16. 前記タグマッチングの結果がキャッシュミスである場合、前記キャッシュ領域のライトインデックス値を増加させる段階をさらに含むことを特徴とする請求項15に記載の方法。
  17. 前記伝送する段階は、
    前記キャッシュミスが生じた場合、前記要請されたデータを、前記ソースモジュールに伝送し、
    前記キャッシングする段階は、
    前記キャッシュ領域において、増加される前に、前記ライトインデックス値に対応するエントリーに、前記宛先モジュールから受信された前記データをキャッシングすることを特徴とする請求項16に記載の方法。
  18. 前記キャッシュ領域に割り当てられた全てのエントリーにデータがキャッシングされた場合、前記キャッシュ領域に割り当てられた前記エントリーのうち最初のエントリーにキャッシングされたデータを削除する段階と、
    前記最初のエントリーにキャッシングされたデータが削除された場合、前記宛先モジュールにクレジットグラントを伝送する段階と、をさらに含むことを特徴とする請求項16に記載の方法。
  19. 前記ライトインデックス値がそれ以上増加することがない状態で、前記キャッシュミスが生じた場合、前記ライトインデックス値を初期化する段階をさらに含み、
    前記初期化されたライトインデックス値は、
    前記クレジットバッファにおいて、前記キャッシュ領域に割り当て可能なエントリーのうち、最初のエントリーに対応することを特徴とする請求項18に記載の方法。
  20. 要請される前記データのアドレスと、前記キャッシュ領域にキャッシングされた前記データに対応するタグとのタグマッチングの結果をリクエストFIFOバッファに保存する段階と、
    前記保存されたタグマッチングの結果がキャッシュヒットである場合、前記キャッシュ領域内のヒットインデックスにキャッシングされたデータを読み取るか、あるいは前記保存されたタグマッチングの結果がキャッシュミスである場合、前記キャッシュ領域のライトインデックス値を増加させるように制御する段階と、をさらに含むことを特徴とする請求項13ないし19のうち何れか一項に記載の方法。
JP2016226782A 2015-12-17 2016-11-22 プロセッサ及びプロセッサでデータを処理する方法 Pending JP2017111802A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2015-0181076 2015-12-17
KR1020150181076A KR102523418B1 (ko) 2015-12-17 2015-12-17 프로세서 및 프로세서에서 데이터를 처리하는 방법

Publications (1)

Publication Number Publication Date
JP2017111802A true JP2017111802A (ja) 2017-06-22

Family

ID=57391774

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016226782A Pending JP2017111802A (ja) 2015-12-17 2016-11-22 プロセッサ及びプロセッサでデータを処理する方法

Country Status (5)

Country Link
US (1) US10241922B2 (ja)
EP (1) EP3182293B1 (ja)
JP (1) JP2017111802A (ja)
KR (1) KR102523418B1 (ja)
CN (1) CN106897246B (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11048645B2 (en) 2018-02-01 2021-06-29 Samsung Electronics Co., Ltd. Memory module, operation method therof, and operation method of host
CN110580202A (zh) * 2019-06-04 2019-12-17 阿里巴巴集团控股有限公司 服务器系统内消息的处理方法、装置及系统
US11269524B2 (en) * 2019-10-07 2022-03-08 Samsung Electronics Co., Ltd. Methods and systems for managing data transfer between a UFS host and a UFS target
KR102599674B1 (ko) 2021-11-24 2023-11-06 성균관대학교산학협력단 네트워크-온-칩에서의 데이터 무결성 검증을 위한 태그 생성 및 인증기

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1036359A2 (en) * 1998-06-08 2000-09-20 Koninklijke Philips Electronics N.V. Processor with memory and data prefetch unit
US6515963B1 (en) 1999-01-27 2003-02-04 Cisco Technology, Inc. Per-flow dynamic buffer management
WO2000072530A2 (en) 1999-05-21 2000-11-30 Avici Systems Fabric router with flit caching
US6747949B1 (en) 1999-05-21 2004-06-08 Intel Corporation Register based remote data flow control
US7304949B2 (en) 2002-02-01 2007-12-04 International Business Machines Corporation Scalable link-level flow-control for a switching device
US6904507B2 (en) 2002-09-30 2005-06-07 Agilent Technologies, Inc. Buffer management architecture and method for an infiniband subnetwork
US7246205B2 (en) * 2004-12-22 2007-07-17 Intel Corporation Software controlled dynamic push cache
US20060274789A1 (en) * 2005-06-07 2006-12-07 Fong Pong Apparatus and methods for a high performance hardware network protocol processing engine
US20080126771A1 (en) * 2006-07-25 2008-05-29 Lei Chen Branch Target Extension for an Instruction Cache
US7644233B2 (en) * 2006-10-04 2010-01-05 International Business Machines Corporation Apparatus and method for supporting simultaneous storage of trace and standard cache lines
US8804752B2 (en) 2011-05-31 2014-08-12 Oracle International Corporation Method and system for temporary data unit storage on infiniband host channel adaptor
CN102306093B (zh) * 2011-08-04 2014-03-05 北京北大众志微系统科技有限责任公司 实现现代处理器间接转移预测的装置及方法
KR20130131135A (ko) * 2012-05-23 2013-12-03 삼성전자주식회사 QoS 기반 캐시 컨트롤러 및 그 동작 방법
US20140089600A1 (en) * 2012-09-27 2014-03-27 Apple Inc. System cache with data pending state
US9170944B2 (en) * 2013-06-25 2015-10-27 International Business Machines Corporation Two handed insertion and deletion algorithm for circular buffer

Also Published As

Publication number Publication date
US10241922B2 (en) 2019-03-26
CN106897246A (zh) 2017-06-27
EP3182293B1 (en) 2018-11-07
KR102523418B1 (ko) 2023-04-19
CN106897246B (zh) 2021-06-29
KR20170072645A (ko) 2017-06-27
US20170177491A1 (en) 2017-06-22
EP3182293A1 (en) 2017-06-21

Similar Documents

Publication Publication Date Title
JP7214394B2 (ja) エージェント‐メッシュ・アーキテクチャーにおいてネットワーク・パケットを処理する技術
US10747457B2 (en) Technologies for processing network packets in agent-mesh architectures
US9557922B2 (en) System and method for peer-to-peer PCIe storage transfers
US9329783B2 (en) Data processing system and data processing method
KR102329269B1 (ko) 최종 레벨 캐시 시스템 및 이에 대응하는 방법
JP2017111802A (ja) プロセッサ及びプロセッサでデータを処理する方法
US11693809B2 (en) Asymmetric read / write architecture for enhanced throughput and reduced latency
CN113032293A (zh) 缓存管理器及控制部件
CN110659222A (zh) 用于将高速缓存行降级到共享高速缓存的技术
US8868800B2 (en) Accelerator buffer access
JP2016218635A (ja) 情報処理装置、メモリ制御装置、および情報処理装置の制御方法
US10853255B2 (en) Apparatus and method of optimizing memory transactions to persistent memory using an architectural data mover
US20140164553A1 (en) Host ethernet adapter frame forwarding
US10909044B2 (en) Access control device, access control method, and recording medium containing access control program
KR20230158473A (ko) 컴퓨팅 시스템에서의 메모리 동작 관리
CN113031849A (zh) 直接内存存取单元及控制部件
CN111865794A (zh) 一种逻辑端口的关联方法、系统、设备及数据传输系统
US11599415B2 (en) Memory tiering techniques in computing systems
JP2009088622A (ja) バッファメモリを有するパケット転送装置および方法
TW202349214A (zh) 輸入/輸出裝置的位址變換預取出
KR20160073867A (ko) 네트워크 인터페이스 가상화 장치, 방법 및 이를 실행하기 위한 컴퓨터 프로그램
KR20230056583A (ko) 연산 스토리지 장치들에서의 리소스 격리를 제공하는 방법 및 장치
JP2011254149A (ja) 情報処理装置、情報処理方法およびプログラム
US20150363307A1 (en) Address mapping for solid state devices
KR20080051021A (ko) Pci 메모리를 이용한 사용자 메모리와 디스크 간 입출력가속 방법