JP6840225B2 - 信頼できない相互接続エージェントをスロットルするためのメカニズム - Google Patents

信頼できない相互接続エージェントをスロットルするためのメカニズム Download PDF

Info

Publication number
JP6840225B2
JP6840225B2 JP2019506380A JP2019506380A JP6840225B2 JP 6840225 B2 JP6840225 B2 JP 6840225B2 JP 2019506380 A JP2019506380 A JP 2019506380A JP 2019506380 A JP2019506380 A JP 2019506380A JP 6840225 B2 JP6840225 B2 JP 6840225B2
Authority
JP
Japan
Prior art keywords
traffic
time interval
untrusted
messages
request
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.)
Active
Application number
JP2019506380A
Other languages
English (en)
Other versions
JP2019525619A5 (ja
JP2019525619A (ja
Inventor
ロー ガブリエル
ロー ガブリエル
ビー. スタインマン モーリス
ビー. スタインマン モーリス
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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2019525619A publication Critical patent/JP2019525619A/ja
Publication of JP2019525619A5 publication Critical patent/JP2019525619A5/ja
Application granted granted Critical
Publication of JP6840225B2 publication Critical patent/JP6840225B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/16Threshold monitoring
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • H04L63/1458Denial of Service

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Multi Processors (AREA)
  • Microcomputers (AREA)
  • Computer And Data Communications (AREA)

Description

最近のコンピュータシステムの中には、中央処理装置(CPU)、グラフィックス処理ユニット(GPU)又は他のシステムオンチップ(SoC)等の複数の処理ユニットを利用するものがあり、これらは、ハイパートランスポート(HT)等の通信インタフェースを介して互いに通信することができる。一例として、HTは、複数のプロセッサが互いに又は他のデバイスとポイントツーポイント方式で通信するのを可能にする高帯域幅双方向シリアル/パラレルバスである。
しかしながら、このようなシステムでは、システム内の1つ以上のSoC又は他のデバイスの非協働的な動作(設計不良、バグ又は悪意によるものであるか否かにかかわらず)が、協働するSoC又はデバイスの性能に悪影響を及ぼす可能性がある。例えば、かかるデバイスが、如何なる制約もなく、過剰なメモリ要求や他のトラフィックを、外部インタフェース(例えば、HT)を介して他のSoCに発行することが許可されている場合には、サービス妨害(DOS)攻撃や他の問題を引き起こす可能性がある。
本開示は、添付の図面において、限定したものではなく、一例として示されている。
コンピューティングシステムの一実施形態を示す図である。 一実施形態による、処理ユニットと、メモリと、を含むコンピューティングシステムの一部を示す図である。 トラフィックコントローラモジュールの一実施形態を示す図である。 一実施形態による、トラフィックカウント値の時間加重平均を実施するためのロジックを示す図である。 一実施形態による、信頼できない外部デバイスからのトラフィックをスロットルするためのプロセスを示すフロー図である。
以下の説明では、実施形態の十分な理解を提供するために、特定のシステム、コンポーネント、方法等のいくつかの例等の多数の特定の詳細を説明している。しかしながら、少なくともいくつかの実施形態は、このような特定の詳細なしに実施され得ることが当業者には明らかであろう。他の例では、実施形態を不必要に分かり難くするのを避けるために、周知のコンポーネント又は方法は、詳細には説明されないか、単純なブロック図で提示される。したがって、説明する特定の詳細は、単なる例示である。特定の実装形態は、このような例示的な詳細とは異なる場合があり、それでも実施形態の範囲内にあると考えられる。
一実施形態では、コンピューティングシステム内のホストプロセッサ又は他のシステムオンチップ(SoC)は、コンピューティングシステム内の他のSoC、デバイス及びモジュールとの通信を可能にするハイパートランスポート(HT)等の外部インタフェースを含む。しかしながら、これらの外部デバイスの動作は、特に外部デバイスがサードパーティによって提供されている場合に、保証できないことがよくある。したがって、外部デバイスの連携が保証できない場合、ホストSoCは、このようなデバイスを信頼できない外部エージェントとして扱い、性能の低下と、サービス妨害(DOS)攻撃と、信頼できないデバイス又は信頼できないデバイスにおいて動作中のソフトウェアが、如何なる制約もなく特定のアクションを実行することが許可される場合に生じる他の問題と、を抑制することができる。例えば、外部インタフェースを介してホストSoCに過剰な数のメモリ要求を発行する外部デバイスは、ホストSoCのネットワークオンチップ(NoC)に過度な負担をかける可能性があるので、ホストSoCの内部ブロック間でローカルトラフィックが提供されるのを制限するDOS状況を生じさせる場合がある。
一実施形態において、外部プロセッサリンクインタフェースは、フロー制御メカニズム(例えば、クレジットベースのフロー制御)を実施する。しかしながら、このようなメカニズムは、単に、ローカルハードウェア構造及びリソース(例えば、バッファ)がオーバーサブスクライブ又はオーバーフローしないことを保証するのみである。クレジットベースのフロー制御メカニズムの場合、要求がネットワーク内で先に移されると、クレジットの使用が許可され、より多くの要求を送信することができる。このようなフロー制御メカニズムは、短期間のトラフィックのバーストがハードウェアリソースを埋め尽くさないことを保証するが、これは必ずしもトラフィック全体の長期的な管理を提供するわけではない。
一実施形態では、ホストSoCは、信頼できない外部デバイスからのトラフィックを監視し、外部デバイスからの外部トラフィックの量(メッセージ数、バイト数等で測定される)がトラフィックポリシーに違反することを検出すると、外部デバイスからのトラフィックを抑制(スロットル)するトラフィックコントローラメカニズムを実装する。一実施形態では、トラフィックコントローラは、信頼できないデバイスからのトラフィック量がポリシーに違反しているかどうかを判別するために、信頼できないデバイスからのメッセージ数又はバイト数を、1つ以上の時間間隔のセットに亘ってカウントする。ポリシーに違反している場合、トラフィックコントローラは、その後のいくつかの時間間隔の間、信頼できないデバイスから受け入れるトラフィックの量を制限する。
図1は、上述したように、信頼できないデバイスのためのトラフィック制御メカニズムを実装するコンピューティングシステム100の一実施形態を示す図である。概して、コンピューティングシステム100は、例えば、ラップトップコンピュータ又はデスクトップコンピュータ、携帯電話、サーバ等が含まれるがこれらに限定されない、いくつかの異なるタイプのデバイスの何れかとして具現化することができる。コンピューティングシステム100は、バス101を介して互いに通信するいくつかのコンポーネント102〜108を含む。コンピューティングシステム100では、コンポーネント102〜108の各々は、バス101を介して、又は、他のコンポーネント102〜108のうち1つ以上のコンポーネントを介して、他のコンポーネント102〜108と通信することができる。コンピューティングシステム100内のコンポーネント102〜108は、ラップトップ若しくはデスクトップシャーシ等の単一の物理的なケーシング、又は、携帯電話のケーシング等に収容される。代替の実施形態では、コンピューティングシステム100のいくつかのコンポーネントは、コンピューティングシステム100の全体が単一の物理的なケーシング内に存在しないように、周辺機器として具現化することができる。
また、コンピューティングシステム100は、ユーザから情報を受信し又はユーザに情報を提供するためのユーザインタフェースデバイスを含む。具体的には、コンピューティングシステム100は、キーボード、マウス、タッチスクリーン又はユーザから情報を受信するための他のデバイス等の入力デバイス102を含む。コンピューティングシステム100は、モニタ、発光ダイオード(LED)ディスプレイ、液晶ディスプレイ又は他の出力デバイス等のディスプレイ105を介して、ユーザへの情報を表示する。
コンピューティングシステム100は、有線又は無線ネットワークを介してデータを送受信するためのネットワークアダプタ107をさらに含む。また、コンピューティングシステム100は、1つ以上の周辺機器108を含む。周辺機器108は、大容量ストレージデバイス、位置検出デバイス、センサ、入力デバイス、コンピューティングシステム100によって使用される他のタイプのデバイスを含むことができる。
コンピューティングシステム100は、メモリサブシステム106に記憶された命令106aを受信して実行するように構成された処理ユニット104を含む。一実施形態では、処理ユニット104は、複数の処理要素を含み、各処理要素は、グラフィックス処理ユニット(GPU)、アクセラレーテッド処理ユニット(APU)、フィールドプログラマブルゲートアレイ(FPGA)、デジタル信号プロセッサ(DSP)、又は、他の特定用途向け集積回路(ASIC)若しくはSoCであってもよい。
メモリサブシステム106は、ランダムアクセスメモリ(RAM)モジュール、読み出し専用メモリ(ROM)モジュール、ハードディスク及び他の非一時的なコンピュータ可読媒体等のように、コンピューティングシステム100によって使用されるメモリデバイスを含む。メモリサブシステム106に含まれるメモリは、コンピューティングシステム100内のメインメモリとして使用される。追加のタイプのメモリを、メモリサブシステム106又はコンピューティングシステム100の他の場所に含むことができる。例えば、キャッシュメモリ及びレジスタは、処理ユニット104、又は、コンピューティングシステム100の他のコンポーネント上に存在することができる。
図2は、メモリサブシステム106に含まれるメモリ230と共に2ソケットシステムとして実装される処理ユニット104の一実施形態を示す図である。処理ユニット104において、各ソケット201,202は、SoC(例えば、マルチコアチップ、APU等)を含み、外部プロセッサリンク240を介して互いに接続されている。一実施形態では、外部プロセッサリンク240を実装するためのインタフェースは、ハイパートランスポート等のオープンスタンダード、クイックパスインターコネクト(QPI)等の独自のインタフェース、又は、他の何らかの同様のインタフェースとすることができる。
両方のソケット201,202が同一の設計者によるSoCを含む場合、SoCは、リンク240の帯域幅を公平に共有する際に、互いに協働するように設計されてもよい。しかしながら、一実施形態では、2ソケットシステムは、ホストSoC210を、異なる設計者による信頼できない外部デバイス220に接続する。したがって、利用可能な帯域幅の公平な消費に関するデバイス220の協力的な動作が保証されない場合がある。しかしながら、信頼できないデバイス220は、依然として、リンク240を介してメモリ要求(例えば、メモリ読み出し及び書き込み要求)と他のメッセージ又はトランザクション(例えば、メモリ変換要求)とを発行することができる。
一実施形態では、ホストSoC210は、メモリ230に接続されている。メモリ230は、メモリサブシステム106の一部である。いくつかの実施形態では、メモリ230は、入力デバイス又は通信でバンス等の周辺機器の中のメモリを表す場合がある。メモリ230は、メモリ230に向けられ、ホストSoC210を介して送信されるメモリ要求及びメッセージを介して、外部デバイス220によってアクセスされる。例えば、外部デバイス220は、メモリ230をホストSoC210に読み書きさせるために、メモリ要求をホストSoC210に発行する。ホストSoC210は、外部デバイス220からの読み出し要求に対して、メモリ230から読み出したデータを外部デバイス220に返すことによって、読み出し要求に応答する。また、外部デバイス220は、同じ経路を使用して、メモリ230に対するメモリ変換要求を実行し、ホストSoC210は、変換されたメモリアドレスを外部デバイスに返すことによって、メモリ変換要求に応答する。
外部デバイス220とホストSoC210との間のこれらの通信は、HT、QPI又は他の技術を用いて実装された外部プロセッサリンク240を介して送信される。また、外部プロセッサリンクは、外部デバイス220からのトラフィックを調整するためのフロー制御ロジック211を含む。一実施形態では、ホストSoC210は、外部デバイス220からの着信メッセージを管理するための入力バッファ又は他のハードウェアリソースを含む。これにより、フロー制御ロジック211は、入力バッファ及び他のハードウェアリソースの容量に基づいて外部デバイス220からのメッセージトラフィックを調整して、外部デバイス220がこれらのハードウェアリソースの容量を超えないようにする。一実施形態では、フロー制御ロジック211は、ホストSoC210において利用可能な入力バッファの数を示すクレジットを外部デバイス220に送信するクレジットベースのフロー制御メカニズムを実装する。次に、外部デバイス220は、受信したクレジットの数に対応する数のメッセージを送信する。
ホストSoC210は、ホストSoC210の内部ブロック(例えば、ブロック214,ブロック215)間でローカルトラフィックを送信するのに使用されるオンチップ相互接続であるネットワークオンチップ(NoC)213を含む。また、NoC213は、メモリ230に向けられる外部デバイス220からのメッセージ(例えば、メモリ要求)と、外部デバイス220に返されるメモリ230からのデータと、を伝える。例えば、メモリ230に向けられる外部デバイス220からのメッセージは、メモリ230で受信される前に、外部プロセッサリンク240、フロー制御ロジック211、トラフィックコントローラ212及びNoC213を介して送信される。メモリ230からのデータ(例えば、読み出し要求に応じて読み出されたデータ)は、同じ経路を通って外部デバイス220に返される。
よって、外部デバイス220があまりに多くのメモリ要求を発行した場合、NoC213が混雑した状態になる可能性がある。その結果、ホストSoC210の内部ブロック(例えば、ブロック214〜215)からのローカルトラフィックは、NoC213内の混雑、及び/又は、メモリ230でのキューイング遅延による性能の低下に遭遇する可能性がある。
よって、一実施形態は、トラフィックコントローラ212を、ホストSoC210と同じ集積回路チップ上に含むことができる。トラフィックコントローラ212は、外部プロセッサリンク240に接続されており、いくつかの機能(信頼できない外部デバイス220から1つ以上の時間間隔のセットに亘って受信したメッセージ数又はバイト数を監視することと、メッセージ数に基づいてトラフィックポリシーの違反を検出することと、トラフィックポリシーに違反している場合に、信頼できないデバイス220からのメッセージから生じるNoC213内のトラフィックを低減することと、を含む)を実行する。
図3は、トラフィックコントローラ212の一実施形態を示す図である。トラフィックコントローラ212は、外部プロセッサリンク240を介して外部デバイス220との間で送受信されるトラフィックを動的に監視するための監視モジュール310と、観察したトラフィックが所定のトラフィックポリシーに違反しているかどうかを判別するための評価モジュール320と、外部デバイス220から生じる過剰なトラフィックによって引き起こされる望ましくない影響をスロットル又は軽減するためのスロットルロジック330と、を含む。
モジュール310,320,330の動作によって、トラフィックコントローラ212は、信頼できない外部デバイス220からホストSoC210に送信されたメッセージ数(又は、バイト数)が、いくつかの連続する時間間隔の各々に対する最大閾値を超えるか否かを判別することによって、所定のトラフィックポリシーの違反を検出する。
監視モジュール310は、外部プロセッサリンク240を介して外部デバイス220との間で送受信されるトラフィックを監視する。一実施形態では、監視モジュール310は、外部デバイス220によって送信されたメッセージの数をカウントする。或いは、監視モジュール310は、送信されたバイト数等の他の何らかの測定基準を追跡することができる。したがって、カウンタ311は、連続する時間間隔の各々について、外部プロセッサリンク240を介して外部デバイス220によって送信されたメッセージ又はバイトの数をカウントする。
監視モジュール310は、時間間隔を定義するためのタイマ313を含む。タイマ313は、各間隔の始めに、カウンタ311を0にリセットする。カウンタ311は、時間間隔が経過すると、外部デバイス220との間の全てのトラフィックを監視する。例えば、カウンタ311は、外部プロセッサリンク240において外部デバイスから受信したメッセージ毎にインクリメントすることができる。代替の実施形態では、カウンタ311は、外部デバイスに送信されたメッセージと、外部デバイスから受信したメッセージと、の各々毎にインクリメントすることができる。
カウントレジスタ312(レジスタ312−1,312−2,…,312−Nを含む)は、循環シフトバッファとして論理的に動作するシフトレジスタであり、各レジスタは、1つの時間間隔に対するカウント値を記憶するために使用される。したがって、時間間隔が経過したことをタイマ313が示すと、現在の時間間隔について観察されたメッセージ数又はバイト数を示すカウンタ311のカウント値が、現在選択されているカウントレジスタ312に記憶される。
現在のカウント値が現在選択されているレジスタ(例えばレジスタ312−1)に記憶された後、タイマ313は、カウントレジスタ312のセット内の次のレジスタ(例えば、レジスタ312−2)を選択する。最後のレジスタ312−Nが選択された後に時間間隔が経過すると、最初のレジスタ312−1が再び選択されて上書きされる。このようにして、カウントレジスタ312の各々は、N個の最新の時間間隔のセットのうち1つの時間間隔についてのカウント値を記憶する。
評価モジュール320は、レジスタ312内のカウント値に基づいて合計、平均又は他の測定基準を計算する加算器ロジック321を含む。次に、加算器ロジック321の出力は、対応する時間間隔に関する閾値と比較される。一実施形態では、加算器ロジック321は、その時間間隔に関する閾値と比較するために、レジスタ312のうち1つのレジスタ(例えば、最近経過した時間間隔に対応するレジスタ)を単に選択することができる。
或いは、加算器ロジック321は、N個の最近の時間間隔のスライディングウィンドウに亘る信頼できない外部デバイス220からのメッセージの平均数を計算するように構成されてもよい。例えば、加算器ロジック321は、連続する時間間隔の各々が経過するときにこのような時間ベースの移動平均を計算するために、タイマ313によってトリガされてよい。このようにして、加算器ロジック321は、時間間隔毎に、レジスタ312に現在記憶されているN個のカウント値の平均を計算する。Nが2の累乗である実装形態では、Nによる除算は、レジスタの合計のlog(N)最下位ビットを単に落とすことによって効率的に達成されるので、平均の計算が簡単である。
いくつかのシナリオでは、遠い過去は、最近の動作よりも重要ではない。したがって、より古い時間間隔について計測されたカウント値は、総計に対してこれらの入力を減らすように重み付けされる。一構成では、加算器ロジック321は、レジスタ312内のカウント値の時間加重平均を計算する。N個の最近のカウント値がx,x,…,xN−1として表される場合、重み付けされていない移動平均を、
Figure 0006840225

として表すことができる。
指数的加重移動平均は、以下の式によって表される。ここで、αは、0より大きく1未満の値である。
Figure 0006840225
αが2の累乗(例えば1/2)である場合、ハードウェアオーバーヘッドは、N個のレジスタから僅か2つのレジスタに減らすことができる。図4は、一実施形態による、α=1/2の場合の時間加重平均を実施する加算器ロジック321と、2つのレジスタ312−1,312−2と、を示す図である。レジスタ312−1は、N−1個の前の(N個のうち1番目からN−1番目までの)時間間隔の時間加重和を記憶し、レジスタ312−2は、最近の(N番目の)時間間隔についてのカウント値(カウンタ311によって決定される)を記憶する。現在の時間間隔の終わりに、レジスタ312−1内の値は、ビットシフタ401によって2で除算され、レジスタ312−2からのカウント値に(加算器402を介して)加算される。加算器402からの新たな時間加重和は、レジスタ312−1に戻って記憶される。次に、レジスタ312−2は、0にリセットされ、次の間隔のカウントを開始する。次いで、レジスタ312−1内の新たな時間加重和がNで除算されることによって、新たな時間加重平均が計算される。
図3に戻ると、評価モジュール320は、N個の時間間隔の各々についての最大閾値を記憶する構成レジスタ322に接続された入力を有する比較ロジック324を含む。代替の実施形態では、構成レジスタ322は、N個の時間間隔の全てに対して1つの閾値を記憶する。
所定の時間間隔についての最大閾値は、トラフィックポリシーに違反することなく、当該時間間隔中に信頼できない外部デバイス220から外部プロセッサリンク240を介して受信することができるメッセージ又はバイトの数を示している。代替の実施形態では、最大閾値は、ホストSoC210から外部デバイス220に送信されたメッセージ若しくはバイトの数にも適用され、又は、外部デバイス220に送信されたメッセージ若しくはバイトの数と、外部デバイス220から受信したメッセージ若しくはバイトの数と、の両方にも適用され得る。
トラフィックコントローラ212において、最大閾値は、ソフトウェア(例えば、ファームウェアによって設定されるか、コンピューティングシステム100上で実行中のオペレーティングシステムによって指定される)によってプログラム可能である。代替の実施形態では、閾値は、製造時にプログラムされてもよいし、固定値であってもよい。構成レジスタ322内の閾値は、レジスタ322に記憶された値を構成するための構成ロジックを含む構成モジュール326を介してプログラム可能である。構成モジュール326は、1つ以上の新たな最大閾値を示す再構成要求325を受信したことに応じて、1つ以上の新たな閾値を構成レジスタ322に記憶する。
再構成要求325は、ホストSoC210によって発行され、或いは、外部デバイス又はプロセス(例えば、コンピューティングシステム100内の別のSoC、又は、別のSoC上で実行されているプロセス等)によって発行されてもよい。一実施形態では、閾値は、信頼できるデバイス又はソフトウェアのみによってプログラム可能である。したがって、構成モジュール326は、要求325を認証して当該要求325が信頼できるエンティティからのものであることを保証し、認証が成功したことに応じて構成レジスタ322を更新するだけである。したがって、構成モジュール326は、要求325の認証に失敗したことに応じて、要求325を破棄又は無視する。
信頼できるソフトウェアの例には、ファームウェア、オペレーティングシステム、又は、他の信頼できるシステムによって暗号的に署名及び認証された他のソフトウェアが含まれる。一実施形態では、トラフィックコントローラ212の他のパラメータ(例えば、時間間隔の持続時間等)は、同様の要求及び認証メカニズムによって構成されている。
比較ロジック324は、加算器ロジック321の出力(合計、平均、時間加重平均、又は、レジスタ312から計算された他の測定基準を表す)を、最近完了した時間間隔に対応する最大閾値(構成レジスタ322によって提供される)と比較する。比較ロジック324は、加算器ロジック321の出力が最大閾値を超えた場合に、その出力をアサートする。
比較ロジック324の出力は、スロットルロジック330に接続されている。一実施形態では、比較ロジック324の出力は、閾値を超えたメッセージ数又はバイト数をスロットルロジック330に示す。これにより、比較ロジック324の出力が、信頼できない外部デバイス220との間の過剰なトラフィックによって生じたトラフィックポリシーの違反を示す場合に、スロットルロジック330は、外部デバイス220との間のトラフィックを所定期間制限する。
外部デバイス220のトラフィックを制限するための1つの方法は、外部デバイス220からのトラフィックを所定の低レベルに絞り込み(スロットルし)、これにより、外部デバイス220からの僅かなメッセージしかNoC213にアクセスできないようにすることである。これは、外部デバイス220が先に進行し続けることを可能にするが、外部デバイス220がホストSoCへ/からの外部プロセッサリンク240インタフェースを利用する能力を低下させる。また、スロットルの正確なレベルは、信頼できるデバイス又はソフトウェアからの認証された再構成要求によって構成可能である。
いくつかの実施形態では、スロットルレベルは、現在の時間間隔が経過するまで外部デバイス220にメッセージが送信されない又は外部デバイス220からメッセージを受信しないように設定することができる。特に、この方法は、外部デバイスの長期的な枯渇を避けるために、トラフィックコントローラ212が比較的短い間隔長を使用している場合に使用することができる。クレジットベースのフロー制御メカニズムが使用される実施形態では、ホストSoC210は、現在の時間間隔が経過するまで外部デバイス220に返されるクレジットの数を制限することによって、外部デバイス220からのトラフィックを制限(スロットル)する。
一実施形態では、外部デバイス220は、現在の間隔の残りの部分に対して単に絞られるのではなく、次のM個の間隔に対して絞られる。一実施形態では、スロットルレベルは、M個の間隔に亘って徐々に緩和されて制限が小さくなり、外部デバイス220からのトラフィックが、最終的に、通常の制限されていないレベルに戻ることが可能になる。Mの値及び緩和レートは、他のパラメータと同様に、信頼できるデバイス又はプロセスからの認証された再構成要求によって構成可能である。
一実施形態では、スロットルロジック330は、次に続く時間間隔についての最大閾値を、現在の時間間隔についてのカウント値と最大閾値との差に対応する分だけ減少させることによって、外部デバイス220からのトラフィックを抑制(スロットル)する。一実施形態では、スロットルロジック330は、次の時間間隔に対応する閾値を、計算した差だけデクリメントする。或いは、同じ効果を達成する別の方法は、現在の時間間隔の終わりにカウンタを0にリセットする代わりに、カウンタ311を閾値の大きさだけデクリメントすることである。例えば、カウント値が12で閾値が10の場合のようにカウント値が閾値を超えると、違反が生じることになる。したがって、カウント値12は、閾値10だけデクリメントされ、次の間隔のカウント値の初期値として2が残る。次の間隔において、外部デバイス220は、閾値を超える前に、さらに8つのメッセージを送信することができる。
実際には、トラフィック閾値を超える外部デバイス220は、そのカウンタが0よりも大きな値で始まることから、次の間隔において閾値により早く達することになる。したがって、現在の時間間隔におけるトラフィックポリシーの違反は、次に続く時間間隔についての閾値の減少を効果的に生じさせるので、外部デバイスは、次の時間間隔からトラフィッククレジットを「借りる」ことができる。その後、その借り(debt)が、次の間隔の開始時に返済される。
一実施形態では、トラフィックコントローラ212は、トラフィックポリシーに違反した後でも外部デバイス220がホストSoC210と通信し続けることを可能にするが、閾値に達した後に受信したトラフィックの量(メッセージ数又はバイト数等)をカウントする。閾値を超えるトラフィックの量は、外部デバイスが、その次の時間間隔の間に外部デバイスが返済する借りとして記録される。
その後の時間間隔においてNoC213又はメモリ230が混雑(congest)するようになった場合、トラフィックコントローラ212は、外部デバイス220からのトラフィックを抑制(スロットル)する。外部デバイス220からのメッセージがスロットルのためにホストSoC210によって遅延される各時間間隔に対して、外部デバイス220の借りが、構成可能な量Rだけ減少される。
また、トラフィックコントローラ212は、外部デバイス220が回収不能な借りになるのを防ぐために、時間ベースの債務(debt)免除を実施する。一実施形態では、トラフィックコントローラ212は、C個の時間間隔毎に現在の借りを係数βだけ減らす。例えばβが0.5でCが10の場合、借りは10分の1間隔毎に半分になる。
トラフィックコントローラ212は、外部デバイス220との間の外部プロセッサリンク240インタフェースを介したトラフィックの監視に加えて、ローカルトラフィックに起因するNoC213内のトラフィックレベルを監視するローカルトラフィックモニタ340を含む。監視されたローカルトラフィックは、ホストSoC210の内部ブロック(例えば、内部ブロック214,215)間のトラフィック、ホストSoC210の計算ユニット(例えば、中央処理装置又はグラフィックス処理ユニット)からNoC213へのトラフィック、ホストSoC210のメモリシステムとの間のトラフィック、又は、他のローカルトラフィック測定基準を含む。
ローカルトラフィックモニタ340がローカルトラフィックレベルに関する情報をスロットルロジック330に提供することによって、スロットルロジック330は、NoC213がローカルトラフィック及び外部デバイス220からのトラフィックを提供するのに十分な帯域幅を有する場合に、外部デバイス220からのトラフィックを不必要にスロットルするのを回避することができる。例えば、ホストSoC210が殆ど使用されていない場合(例えば、ホストSoC210が作業を外部デバイス220にオフロードしている場合)、このメカニズムは、外部デバイス220が、可能な限り最高の速度でホストSoC210にトラフィックを注入して、外部デバイス220がその性能を最大限にすることを可能にする。
換言すれば、ホストSoC210のローカルトラフィック需要が十分に低い場合、トラフィックコントローラ212は、外部デバイス220が通常の間隔毎の(又は、移動平均の)閾値を超えた場合であっても、外部デバイス220が高速で要求を発行し続けるのを可能にする。
一実施形態では、ローカルトラフィックモニタ340は、時間間隔毎にホストSoC210から発生し、NoC213を介して送信されたメッセージ又はバイトの数をカウントするための1つ以上のカウンタを含む。ローカルトラフィックモニタ340は、このローカルトラフィックカウント値に基づいて、NoC213におけるローカルトラフィックがローカルトラフィック閾値を超えるか否かを判別する。ローカルトラフィックがローカルトラフィック閾値を超えると、ローカルトラフィックモニタは、外部デバイス220がトラフィックポリシーに違反した場合に、スロットルロジック330が、外部デバイス220によるトラフィックを減らすことを可能にする。
上述したように、トラフィックコントローラ212は、ホストSoC210とは別の集積回路パッケージに実装された外部デバイス220との間のトラフィックを調整する。代替の実施形態では、トラフィックコントローラ212に実装されたメカニズムは、ホストシステムと同じ集積回路パッケージ内の信頼できないブロックとの間のトラフィックを調整するために使用される。例えば、いくつかのSoC設計には、サードパーティの設計者からの信頼できないブロックが組み込まれており、この場合、このようなブロックの協働を保証することができない。
このような場合には、トラフィックコントローラ212によって実施される同じ監視及びスロットルメカニズムが、内部ブロックをNoC213に接続するオンチップ相互接続に適用され、信頼できないブロックが、過度のメッセージングから生じる性能の問題(DOSの動作等)を引き起こさないことを保証する。
代替の実施形態では、マルチチップモジュール(MCM)技術及び/又はシリコンインターポーザベースの集積化(2.5Dスタッキング)を使用して、複数のチップが一緒にパッケージされ、1つ以上のチップがサードパーティの設計者から供給される場合がある。このようなパッケージは、トラフィックコントローラ212のトラフィック制御メカニズムが適用される、チップ間の何らかの形態の相互接続(例えば、HT、アドバンストエクステンシブルインタフェース(AXI)等)を提供するであろう。
図5は、一実施形態による、信頼できない外部デバイスからのトラフィックをスロットルするためのプロセス500を示すフロー図である。プロセス500の動作は、トラフィックコントローラ212及びコンピューティングシステム100の他のコンポーネントによって実行される。
プロセス500は、ブロック501において開始する。ブロック501において、ホストSoC210の内部ブロック(例えば、ブロック214,215)は、NoC213を介して互いにローカルトラフィックを送信することによって、互いに通信する。また、NoC213は、外部デバイス220とメモリ230との間、又は、外部デバイス220とホストSoC210の内部ブロックとの間でメッセージを伝達するために使用される。プロセス500は、ブロック501からブロック511に続く。
ブロック511において、トラフィックコントローラ212は、構成モジュール326が再構成要求325を受信したか否かを判別する。再構成要求325は、ホストSoC210、ホストSoC210に接続された外部デバイス又は他の何らかのデバイス若しくはプロセスから発生する。再構成要求325は、例えば、ローカルトラフィック閾値、外部デバイス220に対する最大のトラフィック閾値、トラフィックポリシー違反の後に外部デバイス220をスロットルするための間隔の数M等のように、トラフィックコントローラ212の1つ以上の動作パラメータに関する新たな値を指定する。また、再構成要求325は、トラフィックコントローラ212によって実施されるスロットル方法(例えば、M個の間隔に対するスロットル、借りの発生及び返済等)を選択するために使用される。
ブロック513において、構成モジュール326は、再構成要求325を認証して、要求325が、トラフィックコントローラ212を再構成することを許可されている信頼できるデバイスから発生したものであるか否かを判別する。認証が成功した場合、構成モジュール326は、要求325に従って構成を変更する(ブロック515)。例えば、構成モジュール326が、外部デバイス220からのトラフィックに関する最大閾値の変更を要求する再構成要求325の認証に成功した場合、構成モジュール326は、要求325の認証に成功した後に、要求325に示された新たな値を用いて、レジスタ322に記憶された閾値を更新する。ブロック513において、再構成要求325の認証が成功しなかった場合、構成モジュール326は、ブロック517において、要求を無視し、レジスタ322を更新しない。プロセス500は、ブロック515又はブロック517からブロック521に続く。
ブロック521において、ローカルトラフィックモニタ340は、NoC213におけるローカルトラフィック(すなわち、ホストSoC210の内部ブロック間のトラフィック)がローカルトラフィック閾値を超えたか否かを判別する。ローカルトラフィックモニタは、ローカルメッセージの数又は送信されるバイトの数をカウントする。このカウント値がローカルトラフィックの閾値を超えない場合、スロットルロジックは、ブロック523において、無効にされる。NoC213は、ローカルトラフィックの需要が低いため、外部デバイス220からの過度のトラフィックを監視又は場合によってはスロットルする必要なく、外部デバイス220からのトラフィックを提供するのに十分な帯域幅を有する。よって、NoC213を介した外部デバイス220からのメッセージの送信は、スロットルを無効にした状態でブロック501に続く。
ブロック521においてローカルトラフィックカウント値がローカルトラフィック閾値を超えた場合、ローカルトラフィックモニタ340は、ブロック531において、スロットルロジック330を有効にする。ブロック533でのローカルトラフィック及び外部デバイス220からのトラフィックの送信は、スロットルロジック330が有効にされた状態で継続する。スロットルロジック330が有効にされると、トラフィックコントローラ212は、外部デバイス220からのトラフィックを監視し、トラフィックポリシーの違反の検出に応じて、外部デバイス220によるNoC213内のトラフィックの量を減らす。プロセス500は、ブロック533からブロック535に続く。
ブロック535において、メッセージが、外部デバイス220から外部プロセッサリンク240を介してホストSoC210で受信されていない場合、プロセス500は、ブロック521に戻って継続する。ブロック535において、1つ以上のメッセージが外部デバイス220からのものである場合、カウンタ311は、受信したメッセージ(又は、バイト)の数だけインクリメントする(ブロック537)。プロセス500は、ブロック537からブロック539に続く。
ブロック539にて現在の時間間隔の終わりに達していない場合、プロセス500は、ブロック533に戻って継続する。これにより、ブロック533〜539は、現在の時間間隔の終わりまで繰り返される。トラフィックコントローラ212は、ブロック533〜539を繰り返すことによって、現在の時間間隔の間に信頼できない外部デバイス220から受信したメッセージの数を監視する。タイマ313によって示される時間間隔の終わりに、プロセス500は、ブロック539からブロック541に続く。
ブロック541において、トラフィックコントローラ212の様々なコンポーネントは、最近経過した時間間隔についての計算を更新する。例えば、加算器ロジック321は、N個の最近の時間間隔のウィンドウに亘る信頼できない外部デバイス220からのメッセージの数の合計又は平均を計算する。使用されるスロットル方法に応じて、経過した時間間隔毎に他の計算も実行される。例えば、時間間隔の最終カウント値がレジスタ312の1つに記憶され、N個の時間間隔のカウント値の合計又は平均が加算器ロジック321で計算され、過去の違反に関する残りの借り及び残りのスロットル時間が計算される等である。プロセス500は、ブロック541からブロック543に続く。
ブロック543において、比較ロジック324は、計算されたN個の間隔のカウント値の合計又は平均に基づいて、トラフィックポリシーの違反が発生したか否かを検出する。比較ロジック324は、合計又は平均を、経過した時間間隔に対応する最大閾値(構成レジスタ322によって提供される)と比較する。最大閾値を超えた場合にはトラフィックポリシーの違反が発生しており、プロセス500は、ブロック545に続く。
ブロック545においてで、トラフィックコントローラ212は、信頼できない外部デバイス220からのトラフィックの抑制(スロットル)を開始することによって、違反に応答する。スロットルは、所定の時間間隔(例えば、M個の間隔)の間、信頼できない外部デバイス220からのメッセージに起因するNoC213内のトラフィックを低減する。スロットルロジック330によって実行される特定の動作は、使用されているスロットルメカニズムに依存する。一実施形態では、スロットルメカニズムは、構成レジスタ322で指定される。上述したように、1つのスロットルメカニズムは、時間間隔についてカウントされたメッセージ(又は、バイト)の数と、当該時間間隔についての最大閾値との差に対応する分だけ、次に続く時間間隔についての最大閾値を減少する。このスキームによれば、スロットルロジック330は、カウンタ311を0にリセットする代わりに、カウンタ311を閾値だけデクリメントする。上述した別のスロットルメカニズムは、借りの発生及び返済のメカニズムである。このスキームによれば、ブロック545において、スロットルロジック330は、トラフィックポリシー違反及び経過時間の各々に応じて、借り発生及び減少を開始する。代替の構成及び実施形態では、ブロック545において、外部デバイス220からのメッセージに起因するNoC213内のトラフィックを低減するための他の動作が実行される。
ブロック543において、最近経過した時間間隔についての最大閾値を超えていない場合、プロセス500は、ブロック547において継続する。ブロック547において、スロットルロジックは、(使用されるスロットルメカニズムに応じた)いくつかの条件のうち何れかを評価して、スロットルを終了させるか否かを判別する。例えば、トラフィックポリシー違反が発生した後にM個の時間間隔に亘って外部デバイス220からのトラフィックを制限するスロットル方法を実施する場合、スロットルロジック330は、M個の間隔が経過した場合にスロットルを終了させる。借りの発生及び返済のメカニズムを含むスロットル方法を実施する場合、スロットルロジック330は、外部デバイス220に関連する借りが返済された場合にスロットルを終了させる。したがって、他のスロットル方法については、他の基準に基づいてスロットルが終了する。
スロットルを終了させるための基準が満たされない場合、ブロック545において、スロットルが継続される。プロセス500は、ブロック545からブロック501に続く。ここで、ローカルトラフィック及び外部デバイス220からのトラフィックの送信は、実質的にスロットルされながら続く。ブロック547において基準が満たされた場合、スロットルがブロック549において終了し、プロセス500は、ブロック501において継続する。ここで、ローカルトラフィック及び外部デバイス220からのトラフィックの送信は、外部デバイス220のスロットル無しに継続する。
したがって、プロセス500は、ローカルトラフィックが少ない(すなわち、ローカルトラフィック閾値を下回る)場合、ブロック501,511,521,523をループして、ローカルトラフィック及び信頼できない外部デバイス220からの外部トラフィックを外部トラフィックの監視及びスロットル無しに提供する。ローカルトラフィックが多い(すなわち、ローカルトラフィックの閾値を超える)場合、プロセス500は、ブロック501,511,521,531〜549をループして、外部デバイス220からの外部トラフィックを1つ以上の時間間隔のセットに亘って監視し、外部トラフィックに起因するトラフィックポリシーの違反の検出に応じて、NoC213内のトラフィックを低減する。
したがって、上述した処理ユニットは、SoCの内部ブロック間でローカルトラフィックを送信するように構成されたネットワークオンチップ(NoC)を含むホストシステムオンチップ(SoC)と、ホストSoCにおいて信頼できないデバイスからのメッセージを受信するように構成された外部プロセッサリンクと、外部プロセッサリンクに接続されたトラフィックコントローラと、を含む。トラフィックコントローラは、信頼できないデバイスからの外部トラフィックの量を時間間隔のセットに亘って監視し、外部トラフィックの量に基づいてトラフィックポリシーの違反を検出し、違反の検出に応じて、信頼できないデバイスからのメッセージによって生じるNoC内のトラフィックを低減するように構成されている。
特に、トラフィックコントローラは、所定の時間間隔の間に信頼できないデバイスからホストSoCに送信されたメッセージの数が、当該時間間隔についての最大閾値を超えるか否かを判別することによって、トラフィックポリシーの違反を検出する。トラフィックコントローラは、外部プロセッサリンクを介して信頼できないデバイスから受信したメッセージの各々に応じてインクリメントし、所定の時間間隔の経過に応じてリセットするメッセージカウンタを含む。
また、トラフィックコントローラは、最大閾値を変更するための要求を受信することができる構成ロジックを含む。構成ロジックは、要求の認証に応じて、当該要求に従って最大閾値を変更し、又は、要求の認証に失敗したことに応じて、当該要求を無視する。
さらに、トラフィックコントローラは、信頼できないデバイスからホストSoCに送信されたメッセージの数が所定の時間間隔についての最大閾値を超えるとの判別したことに応じて、その次の時間間隔についての最大閾値を減少させるように構成されている。トラフィックコントローラは、所定の時間間隔において受信したメッセージの数と、所定の時間間隔についての最大閾値との差に対応する分だけ、次の時間間隔についての最大閾値を減少させる。
トラフィックコントローラは、N個の最近の時間間隔のウィンドウに亘る信頼できないデバイスからのメッセージの平均数を計算し、平均数が最大閾値を超えることを判別することによって、トラフィックポリシーの違反を検出する。
また、トラフィックコントローラは、シフトバッファ内に複数のレジスタを含む。各レジスタは、N個の最近の時間間隔のうち当該レジスタに関連する時間間隔についてのメッセージの数を記憶する。さらに、トラフィックコントローラは、レジスタに記憶された数を合計するための加算器を含む。
トラフィックコントローラは、N個の最近の時間間隔のうちN−1個の前の時間間隔の各々について検出されたメッセージの数の時間加重和を記憶する第1レジスタと、N個の最近の時間間隔のうち最も最近の時間間隔について検出されたメッセージの数を記憶する第2レジスタと、を含む。また、トラフィックコントローラは、第1レジスタ内の時間加重和のビットシフトバージョンに第2レジスタ内の数を加算することによって、新たな時間加重和を計算するためのロジックを含む。
さらに、トラフィックコントローラは、信頼できないデバイスからのトラフィックを所定期間制限することによって、NoC内のトラフィックを低減するスロットルロジックを含む。
また、トラフィックコントローラは、ローカルトラフィックがローカルトラフィック閾値を超えているか否かを判別するローカルトラフィックモニタを含む。トラフィックコントローラは、ローカルトラフィックがローカルトラフィック閾値を超えたときに違反を検出したことに応じて、NoC内のトラフィックを低減する。
信頼できないデバイスからのトラフィックをスロットルする方法は、ホストSoC内のネットワークオンチップ(NoC)を介して、ホストシステムオンチップ(SoC)の内部ブロック間でローカルトラフィックを送信することと、ホストSoCにおいて、外部プロセッサリンクを介して信頼できないデバイスからのメッセージを受信することと、信頼できないデバイスからの外部トラフィックの量を1つ以上の時間間隔のセットに亘って監視することと、外部トラフィックの量に基づいてトラフィックポリシーの違反を検出することと、違反の検出に応じて、信頼できないデバイスからのメッセージから生じるNoC内のトラフィックを低減することと、を含む。
また、トラフィックポリシーの違反を検出することは、時間間隔のセットのうち所定の時間間隔において信頼できないデバイスからホストSoCに送信されたメッセージの数が、当該時間間隔についての最大閾値を超えたか否かを判別することを含む。
信頼できないデバイスからのトラフィックをスロットルする方法は、最大閾値を変更するための要求を外部デバイスから受信することと、当該要求の認証に応じて、当該要求に従って最大閾値を変更することと、当該要求の認証に失敗したことに応じて、当該要求を無視することと、を含む。
また、方法は、信頼できないデバイスからホストSoCに送信されたメッセージの数が所定の時間間隔についての最大閾値を超えたと判別したことに応じて、メッセージの数と、当該時間間隔についての最大閾値との差に対応する分だけ、次の時間間隔についての最大閾値を減少させることを含む。
トラフィックポリシーの違反を検出することは、時間間隔のセットのうちN個の最近の時間間隔のウィンドウに亘る信頼できないデバイスからのメッセージの平均数を計算することと、当該平均数が最大閾値を超えたことを判別することと、を含む。
また、信頼できないデバイスからのトラフィックをスロットルする方法は、信頼できないデバイスからのトラフィックを所定期間制限することによって、NoC内のトラフィックを低減することを含む。
さらに、方法は、ローカルトラフィックがローカルトラフィック閾値を超えたか否かを判別することと、ローカルトラフィックがローカルトラフィック閾値を超えたときに違反を検出したことに応じて、NoC内のトラフィックを低減することと、を含む。
信頼できないデバイスを含むコンピュータシステムは、メモリと、メモリに接続されたホストシステムオンチップ(SoC)であって、外部プロセッサリンクを介して信頼できないデバイスに接続されたホストシステムオンチップと、を含み、外部プロセッサリンクは、信頼できないデバイスからのメッセージをホストSoCにおいて受信する。ホストSoCは、信頼できないデバイスからのメッセージに応じて、データを、メモリから信頼できないデバイスに送信する。また、ホストSoCは、SoCの内部ブロック間でローカルトラフィックを送信するように構成されたネットワークオンチップ(NoC)と、外部プロセッサリンクに接続されたトラフィックコントローラと、を含む。
トラフィックコントローラは、信頼できないデバイスからの外部トラフィックの量を1つ以上の時間間隔にセットに亘って監視し、外部トラフィックの量に基づいてトラフィックポリシーの違反を検出し、違反の検出に応じて、信頼できないデバイスからのメッセージから生じるNoC内のトラフィックを低減する。トラフィックコントローラは、ホストSoCと共に単一の集積回路チップ上に配置されている。
また、外部プロセッサリンクは、外部プロセッサリンクのバッファ容量に基づいて、信頼できないデバイスからのトラフィックを調整するフロー制御ロジックを含む。
信頼できないデバイスからのメッセージには、メモリへの読み出し要求、書き込み要求及びアドレス変換要求が含まれる。
本明細書で使用される場合、「に接続される」という用語は、直接的に、又は、1つ以上の介在するコンポーネントを介して間接的に接続されることを意味してもよい。本明細書で説明される様々なバスを介して提供される何れの信号も、他の信号と時分割多重化され、1つ以上の共通のバスを介して提供されてもよい。また、回路コンポーネント間又はブロック間の相互接続は、バス又は単一の信号線として示すことができる。各バスは、代替的に1つ以上のの単一の信号線であってもよく、単一の信号線は、代替的にバスであってもよい。
特定の実施形態は、非一時的なコンピュータ可読媒体に記憶された命令を含み得るコンピュータプログラム製品として実装されてもよい。このような命令は、説明した動作を実行するように汎用又は専用プロセッサをプログラムするために使用されてもよい。コンピュータ可読媒体は、機械(例えば、コンピュータ)によって読み出し可能な形態(例えば、ソフトウェア、処理アプリケーション)で情報を記憶又は送信するための任意のメカニズムを含む。非一時的なコンピュータ可読記憶媒体は、磁気記憶媒体(例えば、フロッピー(登録商標)ディスク)、光記憶媒体(例えば、CD−ROM)、光磁気憶媒体、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、消去可能なプログラマブルメモリ(例えば、EPROM及びEEPROM)、フラッシュメモリ、又は、電子命令を記憶するのに適した別のタイプの媒体を含むことができるが、これらに限定されない。
また、いくつかの実施形態は、コンピュータ可読媒体が2つ以上のコンピュータシステムに記憶され、及び/又は、2つ以上のコンピュータシステムによって実行される分散コンピューティング環境において実施することができる。さらに、コンピュータシステム間で転送される情報は、コンピュータシステムを接続する伝送媒体を介して出し入れ(pulled or pushed)されてもよい。
概して、コンピュータ可読記憶媒体に維持されるホストSoC210及び/又はその一部を表すデータ構造は、プログラムによって読み出すことができ、ホストSoC210を備えるハードウェアを製造するために直接又は間接的に使用することができるデータべース又は他のデータ構造であってよい。例えば、データ構造は、Verilog又はVHDL等の高水準設計言語(HDL)におけるハードウェア機能の動作レベル記述又はレジスタ転送レベル(RTL)記述であってもよい。記述は、ゲートのリストを含むネットリストを合成ライブラリから生成するために当該記述を合成することができる合成ツールによって読まれてもよい。ネットリストは、ホストSoC210を含むハードウェアの機能を表すゲートのセットを含む。次に、ネットリストを配置及びルーティングして、マスクに適用される幾何学形状を記述するデータセットを生成することができる。次いで、マスクを様々な半導体製造工程で使用して、ホストSoC210に対応する1つ以上の半導体回路を製造することができる。或いは、コンピュータ可読記憶媒体上のデータベースは、ネットリスト(合成ライブラリを伴う若しくは伴わない)、データセット、又は、必要に応じてグラフィックデータシステム(GDS)IIデータであってもよい。
本明細書における方法の動作は、特定の順序で図示及び説明されているが、特定の動作が逆の順序で実行されるように、又は、特定の動作が少なくとも部分的に他の動作と同時に実行されるように、各方法の動作の順序を変更することができる。別の実施形態では、異なる動作の命令又はサブ動作(sub-operations)は、断続的及び/又は交互的な方法であってもよい。
上述した明細書において、特定の例示的な実施形態を参照して実施形態を説明した。しかしながら、添付の特許請求の範囲に記載された発明のより広い範囲から逸脱することなく、様々な変形及び変更を加えることができることは明らかであろう。したがって、明細書及び図面は、限定的な意味ではなく、例示的な意味で考慮されるべきである。

Claims (19)

  1. ホストシステムオンチップ(SoC)であって、前記ホストSoCの内部ブロック間でローカルトラフィックを送信するように構成されたネットワークオンチップ(NoC)を備えるホストSoCと、
    信頼できないデバイスからのメッセージを前記ホストSoCにおいて受信するように構成された外部プロセッサリンクであって、受信したメッセージは、前記ホストSoCに向けられた1つ以上のメモリアクセス要求を含む、外部プロセッサリンクと、
    前記外部プロセッサリンクと接続されたトラフィックコントローラと、を備え、
    前記トラフィックコントローラは、
    前記NoCを介して送信され前記信頼できないデバイスからの外部トラフィックの量を1つ以上の時間間隔のセットに亘って監視し、
    前記時間間隔のセットのうち第1時間間隔の間に前記信頼できないデバイスから前記ホストSoCに送信されたメッセージの数が前記第1時間間隔についての最大閾値を超えるか否かを判別することによって、外部トラフィックの量に基づいてトラフィックポリシーの違反を検出し、
    前記違反を検出したことに応じて、前記信頼できないデバイスからのメッセージから生じる前記NoC内のトラフィックを低減するように構成されている、
    装置。
  2. 前記トラフィックコントローラは、メッセージカウンタを備え、
    前記メッセージカウンタは、
    前記外部プロセッサリンクにおいて前記信頼できないデバイスから受信したメッセージに応じてインクリメントし、
    前記第1時間間隔の経過に応じてリセットするように構成されている、
    請求項1の装置。
  3. 前記トラフィックコントローラは、構成ロジックを備え、
    前記構成ロジックは、
    前記最大閾値を変更するための要求を受信し、
    前記要求の認証に応じて、前記要求に従って前記最大閾値を変更し、
    前記要求の認証に失敗したことに応じて、前記要求を無視するように構成されている、
    請求項1の装置。
  4. 前記トラフィックコントローラは、前記信頼できないデバイスから前記ホストSoCに送信されたメッセージの数が前記第1時間間隔についての最大閾値を超えたと判別したことに応じて、前記メッセージの数と前記第1時間間隔についての最大閾値との差に対応する分だけ、次の時間間隔についての最大閾値を減少させるように構成されている、
    請求項1の装置。
  5. 前記トラフィックコントローラは、前記時間間隔のセットのうちN個の最近の時間間隔のウィンドウに亘る前記信頼できないデバイスからのメッセージの平均数を計算し、前記平均数が最大閾値を超えたことを判別することによって、前記トラフィックポリシーの違反を検出するように構成されている、
    請求項1の装置。
  6. 前記トラフィックコントローラは、
    シフトバッファ内の複数のレジスタであって、各レジスタが、前記レジスタに関連する前記N個の最近の時間間隔のうち当該レジスタに関連する時間間隔についてのメッセージの数を記憶するように構成されている、複数のレジスタと、
    前記複数のレジスタに記憶された数を合計するように構成された加算器と、を備える、
    請求項5の装置。
  7. 前記トラフィックコントローラは、
    前記N個の最近の時間間隔のうちN−1個の前の時間間隔の各々について検出されたメッセージの数の時間加重和を記憶するように構成された第1レジスタと、
    前記N個の最近の時間間隔のうち最も最近の時間間隔について検出されたメッセージの数を記憶するように構成された第2レジスタと、
    前記第1レジスタ内の時間加重和のビットシフトバージョンに前記第2レジスタ内の数を加算することによって、新たな時間加重和を計算するように構成されたロジックと、を備える、
    請求項5の装置。
  8. 前記トラフィックコントローラは、前記信頼できないデバイスからのトラフィックを所定期間制限することによって、前記NoC内のトラフィックを低減するように構成されたスロットルロジックを備える、
    請求項1の装置。
  9. 前記トラフィックコントローラは、前記ローカルトラフィックがローカルトラフィック閾値を超えたか否かを判別するように構成されたローカルトラフィックモニタを備え、
    前記トラフィックコントローラは、前記ローカルトラフィックが前記ローカルトラフィック閾値を超えたときに前記違反を検出したことに応じて、前記NoC内のトラフィックを低減するように構成されている、
    請求項1の装置。
  10. ホストシステムオンチップ(SoC)内のネットワークオンチップ(NoC)を介して、前記ホストSoCの内部ブロック間でローカルトラフィックを送信することと、
    前記ホストSoCにおいて、外部プロセッサリンクを介して信頼できないデバイスからのメッセージを受信することであって、受信したメッセージは、前記ホストSoCに向けられた1つ以上のメモリアクセス要求を含む、ことと、
    前記NoCを介して送信され前記信頼できないデバイスからの外部トラフィックの量を1つ以上の時間間隔のセットに亘って監視することと、
    前記時間間隔のセットのうち第1時間間隔の間に前記信頼できないデバイスから前記ホストSoCに送信されたメッセージの数が前記第1時間間隔についての最大閾値を超えるか否かを判別することによって、前記外部トラフィックの量に基づいてトラフィックポリシーの違反を検出することと、
    前記違反を検出したことに応じて、前記信頼できないデバイスからのメッセージから生じる前記NoC内のトラフィックを低減することと、を含む、
    方法。
  11. 前記最大閾値を変更するための要求を外部デバイスから受信することと、
    前記要求の認証に応じて、前記要求に従って前記最大閾値を変更することと、
    前記要求の認証に失敗したことに応じて、前記要求を無視することと、を含む、
    請求項10の方法。
  12. 前記信頼できないデバイスから前記ホストSoCに送信されたメッセージの数が前記第1時間間隔についての最大閾値を超えたと判別したことに応じて、前記メッセージの数と、記第1時間間隔についての最大閾値との差に対応する分だけ、次の時間間隔についての最大閾値を減少させることを含む、
    請求項10の方法。
  13. 前記トラフィックポリシーの違反を検出することは、
    前記時間間隔のセットのうちN個の最近の時間間隔のウィンドウに亘る前記信頼できないデバイスからのメッセージの平均数を計算することと、
    前記平均数が最大閾値を超えたことを判別することと、を含む、
    請求項10の方法。
  14. 前記信頼できないデバイスからのトラフィックを所定期間制限することによって、前記NoC内のトラフィックを低減することを含む、
    請求項13の方法。
  15. 前記ローカルトラフィックがローカルトラフィック閾値を超えたか否かを判別することと、
    前記ローカルトラフィックが前記ローカルトラフィック閾値を超えたときに前記違反を検出したことに応じて、前記NoC内のトラフィックを低減することと、を含む、
    請求項10の方法。
  16. 信頼できないデバイスと、
    メモリと、
    前記メモリに接続されたホストシステムオンチップ(SoC)であって、外部プロセッサリンクを介して前記信頼できないデバイスに接続されたホストSoCと、を備え、
    前記外部プロセッサリンクは、前記信頼できないデバイスからのメッセージを前記ホストSoCにおいて受信することであって、受信したメッセージは、前記ホストSoCに向けられた1つ以上のメモリアクセス要求を含む、ことを行うように構成されており、
    前記ホストSoCは、前記信頼できないデバイスからのメッセージに応じて、データを、前記メモリから前記信頼できないデバイスに送信するように構成されており、
    前記ホストSoCは、
    前記SoCの内部ブロック間でローカルトラフィックを送信するように構成されたネットワークオンチップ(NoC)と、
    前記外部プロセッサリンクに接続されたトラフィックコントローラと、を備え、
    前記トラフィックコントローラは、
    前記NoCを介して送信され前記信頼できないデバイスからの外部トラフィックの量を1つ以上の時間間隔のセットに亘って監視し、
    前記時間間隔のセットのうち第1時間間隔の間に前記信頼できないデバイスから前記ホストSoCに送信されたメッセージの数が前記第1時間間隔についての最大閾値を超えるか否かを判別することによって、外部トラフィックの量に基づいてトラフィックポリシーの違反を検出し、
    前記違反を検出したことに応じて、前記信頼できないデバイスからのメッセージから生じる前記NoC内のトラフィックを低減するように構成されている、
    システム。
  17. 前記外部プロセッサリンクは、前記外部プロセッサリンクのバッファ容量に基づいて、前記信頼できないデバイスからのトラフィックを調整するように構成されたフロー制御ロジックを備える、
    請求項16のシステム。
  18. 前記トラフィックコントローラは、前記ホストSoCと共に単一の集積回路チップ上に配置されている、
    請求項16のシステム。
  19. 前記信頼できないデバイスからのメッセージには、前記メモリへの読み出し要求、書き込み要求及びアドレス変換要求が含まれる、
    請求項16のシステム。
JP2019506380A 2016-08-06 2017-06-29 信頼できない相互接続エージェントをスロットルするためのメカニズム Active JP6840225B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/230,388 2016-08-06
US15/230,388 US10671722B2 (en) 2016-08-06 2016-08-06 Mechanism for throttling untrusted interconnect agents
PCT/US2017/039999 WO2018031140A1 (en) 2016-08-06 2017-06-29 A mechanism for throttling untrusted interconnect agents

Publications (3)

Publication Number Publication Date
JP2019525619A JP2019525619A (ja) 2019-09-05
JP2019525619A5 JP2019525619A5 (ja) 2020-08-06
JP6840225B2 true JP6840225B2 (ja) 2021-03-10

Family

ID=59315751

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019506380A Active JP6840225B2 (ja) 2016-08-06 2017-06-29 信頼できない相互接続エージェントをスロットルするためのメカニズム

Country Status (6)

Country Link
US (2) US10671722B2 (ja)
EP (1) EP3494505A1 (ja)
JP (1) JP6840225B2 (ja)
KR (1) KR102202578B1 (ja)
CN (1) CN109564611B (ja)
WO (1) WO2018031140A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11593298B2 (en) * 2019-11-20 2023-02-28 University Of Florida Research Foundation, Inc. Reconfigurable network-on-chip security architecture
CN111866148B (zh) * 2020-07-23 2022-05-31 浪潮云信息技术股份公司 一种消息队列流量控制系统
US11470004B2 (en) * 2020-09-22 2022-10-11 Advanced Micro Devices, Inc. Graded throttling for network-on-chip traffic
US20220103481A1 (en) * 2020-09-25 2022-03-31 Advanced Micro Devices, Inc. Dynamic network-on-chip throttling
US11722138B2 (en) * 2020-10-20 2023-08-08 Micron Technology, Inc. Dynamic power and thermal loading in a chiplet-based system

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7463590B2 (en) * 2003-07-25 2008-12-09 Reflex Security, Inc. System and method for threat detection and response
US20150074154A1 (en) * 2012-02-29 2015-03-12 Media Patents, S.L. Method of secure storing of content objects, and system and apparatus thereof
US8934377B2 (en) * 2013-03-11 2015-01-13 Netspeed Systems Reconfigurable NoC for customizing traffic and optimizing performance after NoC synthesis
US9497129B2 (en) * 2013-04-10 2016-11-15 Cisco Technology, Inc. Methods and devices for providing a self-stretching policer
US9350601B2 (en) 2013-06-21 2016-05-24 Microsoft Technology Licensing, Llc Network event processing and prioritization
US9806960B2 (en) * 2013-11-25 2017-10-31 Google Inc. Method and system for adjusting heavy traffic loads between personal electronic devices and external services
US9473415B2 (en) * 2014-02-20 2016-10-18 Netspeed Systems QoS in a system with end-to-end flow control and QoS aware buffer allocation
US9710752B2 (en) 2014-09-11 2017-07-18 Qualcomm Incorporated Methods and systems for aggregated multi-application behavioral analysis of mobile device behaviors

Also Published As

Publication number Publication date
US10671722B2 (en) 2020-06-02
US20200257796A1 (en) 2020-08-13
CN109564611B (zh) 2024-07-02
JP2019525619A (ja) 2019-09-05
CN109564611A (zh) 2019-04-02
EP3494505A1 (en) 2019-06-12
US11275829B2 (en) 2022-03-15
US20180039777A1 (en) 2018-02-08
WO2018031140A1 (en) 2018-02-15
KR102202578B1 (ko) 2021-01-13
KR20190038581A (ko) 2019-04-08

Similar Documents

Publication Publication Date Title
JP6840225B2 (ja) 信頼できない相互接続エージェントをスロットルするためのメカニズム
Farshin et al. Reexamining Direct Cache Access to Optimize {I/O} Intensive Applications for Multi-hundred-gigabit Networks
US7653773B2 (en) Dynamically balancing bus bandwidth
US7660925B2 (en) Balancing PCI-express bandwidth
US20150106649A1 (en) Dynamic scaling of memory and bus frequencies
JP6640242B2 (ja) ハイブリッドストレージシステム内のサービス品質を改善するためのシステム及び方法
US11983437B2 (en) System, apparatus and method for persistently handling memory requests in a system
KR101707096B1 (ko) 일반 호스트 기반 제어기 레이턴시 방법 및 장치
WO2014206078A1 (zh) 内存访问方法、装置及系统
JP2019525619A5 (ja)
JP2023543427A (ja) ネットワークオンチップトラフィックの段階的スロットリング
JP2023544270A (ja) 動的ネットワークオンチップスロットリング
EP1591907B1 (en) Resource management
US20170075589A1 (en) Memory and bus frequency scaling by detecting memory-latency-bound workloads
US20220385582A1 (en) Nonlinear traffic shaper with automatically adjustable cost parameters
CN112486871B (zh) 一种用于片上总线的路由方法以及系统
JP6090492B1 (ja) メモリアクセス制御装置、情報処理システム、メモリアクセス制御方法、及び、プログラム
US12032500B2 (en) System, apparatus and method for controlling traffic in a fabric
EP3962031A1 (en) System, apparatus and method for advanced monitoring in an edge system
US20200409880A1 (en) System, apparatus and method for controlling traffic in a fabric
US10169115B1 (en) Predicting exhausted storage for a blocking API
Zhou et al. A Contract-aware and Cost-effective LSM Store for Cloud Storage with Low Latency Spikes
TW202405665A (zh) 處理器儲存操作資料傳輸之改良性能和可靠性
US20190007318A1 (en) Technologies for inflight packet count limiting in a queue manager environment
WO2018049821A1 (zh) 请求源响应的仲裁方法、装置及计算机存储介质

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200626

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200626

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20200626

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20200811

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200825

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201119

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210119

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210216

R150 Certificate of patent or registration of utility model

Ref document number: 6840225

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250