JP2013541097A - プロセッサ、防止方法及びシステム - Google Patents

プロセッサ、防止方法及びシステム Download PDF

Info

Publication number
JP2013541097A
JP2013541097A JP2013530301A JP2013530301A JP2013541097A JP 2013541097 A JP2013541097 A JP 2013541097A JP 2013530301 A JP2013530301 A JP 2013530301A JP 2013530301 A JP2013530301 A JP 2013530301A JP 2013541097 A JP2013541097 A JP 2013541097A
Authority
JP
Japan
Prior art keywords
thread
processor
memory
processing
core
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.)
Granted
Application number
JP2013530301A
Other languages
English (en)
Other versions
JP5628434B2 (ja
Inventor
ベイア,マイケル,エス.
オーン,レスリー,エー.
タックノット,マイケル,ディー.
バーンズ,デイヴィッド,ダブリュー.
ラグヴァンシ,パンカジ
ヤノヴェル,イゴール
チャッペル,ロバート,エス.
ライキン,シュロモ
マト,プラカシュ
サデ,ラアナン
Original Assignee
インテル コーポレイション
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 インテル コーポレイション filed Critical インテル コーポレイション
Publication of JP2013541097A publication Critical patent/JP2013541097A/ja
Application granted granted Critical
Publication of JP5628434B2 publication Critical patent/JP5628434B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • 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/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Storage Device Security (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

一実施形態における本発明に含まれる方法は、第1のスレッドにより実行されるアトミックメモリ処理のためのター未ネーションシーケンスを特定するステップと、タイマを第1のスレッドに関連付けるステップと、防止ウィンドウを通過するまで、アトミックメモリ処理の完了後に、第1のスレッドがメモリクラスタ処理を実行することを防止する。

Description

開示される実施の形態はプロセッサ、防止方法及びシステム等に関連する。
最近のプロセッサは、複数のアクティブなスレッドの実行(例えば、シングルコア又はマルチコアプロセッサにおける同時マルチスレッド(simultaneous multithreading:SMT)モード)を処理したり、或いは1つ以上のコアの論理プロセッサにて複数のスレッドを実行できるようにしている。そのような例では、あるスレッドがバスロックのようなアトミックメモリ処理の無限ループに入った場合であって(例えば、アトミックロック処理は非ライトバック(non-writeback:WB)メモリタイプ、又はWBメモリが使用されているが、オペランドアドレスはキャッシュラインバウンダリを超えている)、別のスレッドがロードを実行する又は処理を保存する必要がある場合、バスロックを実行しているスレッドのみが何らかの転送処理を行うことができる。すなわち、第1のスレッドで実行されるバスロックは非常に近く、新たなバスロックは先行するバスロックの終了後に開始され、ロード又は処理の保存のようなメモリ処理を実行することは他のスレッドにとって禁止される。
そのようなアトミックメモリ処理は、非常に有益であり、他のメモリ処理(例えば、ロードや保存)が、バスロックの進行中に行われてしまうことを防止できる。これは、サービスセキュリティアタックの拒否をなし、ユーザ(例えば、ユーザの特権レベルで実行する、或いはリング3或いは現在の特権レベル(CPL)3で実行する)は他のユーザ/プログラムが機能することを防止できるマクロ命令の非常に小さなループを書き込むことができる。同じコアで動作しているスレッドの処理の影響に加えて、この種の処理/アタックは、同じコアの中で及び/又はシステム内の異なるプロセッサパッケージで動作している異なるコアのユーザ/プログラムの進行をブロックすることさえできる。
開示される実施の形態による課題は、複数のスレッドを処理するシステムにおいて適切な動作を行うプロセッサ、方法及びシステム等を提供することである。
開示される実施の形態によるプロセッサは、
第1のスレッド及び第2のスレッドを実行する第1のコアを有するプロセッサであって、前記第1のコアは、
前記第1及び第2のスレッドによるメモリ処理の要求を処理するメモリ実行部と、
第1のアトミックメモリ処理の完了以来ある時間ウィンドウが経過するまで第1のアトミックメモリ処理の完了後、前記第1のスレッドが前記第2のアトミックメモリ処理を実行することを妨げるレギュレータ論理部と
を有するプロセッサである。
本発明の一実施形態によるプロセッサのブロック図。 本発明の一実施形態による方法例を示すフローチャート。 本発明の一実施形態によるプロセッサコアのブロック図。 本発明の別の実施形態によるプロセッサコアのブロック図。 本発明の一実施形態によるシステムのブロック図。
様々な実施形態では、プロセッサの論理装置又はロジックは、所与のスレッドによりアトミックメモリ(atomic memory)の動作に規制を提供し、スレッドはプロセッサ内で動作している他のスレッドのパフォーマンスに不利な影響を及ぼさないようにする。一実施形態において、この論理装置は、プロセッサのメモリ実行部に関連付けられ、かつメモリ実行部に与えられる所定の処理を制限又は遅らせる動作を行ってもよい。そのような処理はバスロック(bus lock)を含むアドミックメモリの様々な種類の処理を含んでよい。そのようなバスロックはパフォーマンスに不利に影響を及ぼすことがあり、プロセッサの他の全ての処理及びシステムの他のエージェントが仮想的に停止し、適切なバスロック処理を行う必要がある。連続定な一連のそのようなバスロックがサービスアタックの拒否として動作するのを防ぐために、規制(regulation)又はプロセッサの他の論理装置が所与のスレッドの連続的なアトミックメモリ処理を遅延させる及び/又は抑制してもよい。
図1を参照するに、本発明の実施の形態によるプロセッサの上位概念的なブロック図が示されている。図1に示されているように、プロセッサ100は複数のコア110a−110nを含むマルチコアプロセッサであってもよい。理解すべきことに、これらのコアは物理的なプロセッサであり、それらはフロントエンド部、実行部及びバックエンド部のような複数の要素を有し、これらについては後に詳細に説明する。更に、一実施形態では、コアの各々が1つ以上の論理プロセッサを含んでいてもよい。そのような論理プロセッサは、複数のスレッドの並列的な実行をもたらす。概して、論理プロセッサは、所与のスレッドに関連付けられた状態を有し、例えばそのスレッドに関するレジスタファイルに保存されていてもよい。しかしながら、フロントエンド部、実行部、バックエンド部等のようなコアの全ての他の要素が、複数の論理プロセッサ及びそのような論理プロセッサで実行するスレッド実行の間で共有されてもよい。
様々なコアは相互接続部115により非コア論理装置(uncore logic)120に結合され、内部コア論理装置120は様々な要素を含むコアの外部プロセッサの論理装置である。非コア120は最終レベルのキャッシュである共有キャッシュ130を含んでいてもよい。更に、非コアは集積メモリコントローラ140、様々なインターフェース150及び電力管理部155を含んでもよい。図示されているように、プロセッサ100は例えばメモリバスを通じてシステムメモリ160と通信を行ってもよい。
非コア120はロックブレーカ125を更に含み、ライブロック(live lock)又はデッドロック(dead lock)の状態であるようなロックイベントを検出する論理装置であり、コアで実行するスレッドは理由なしに止められ又は進行することができない。一般に、ロックブレーカ125はロックを破壊するためにウェイトを増やすマルチロックブレーキングアクティビティを実行してもよい(パフォーマンスに不利に影響を及ぼす可能性がある)。典型的には、ロックブレーカはライブロック又はデッドロックの検出に応じてロックブレーク処理の実行を開始する。
図1を更に参照するに、インターフェース150は周辺装置、大容量記憶装置等のような様々なオフチップ要素と通信できるようにする。図1に示す実施の形態におけるこの特定の形態が示されているが、本発明の範囲は図示の形態に限定されない。
図2を参照するに、本発明の実施の形態による方法のフローチャートが示されている。図2に示されているように、方法200は1つ以上のエージェントによるアトミックメモリ処理に対するアクセスを制御するために使用される。図2に関する説明は一例としてアトミックメモリ処理のバスロック処理に関連しているが、本発明の範囲はその例に限定されない。例えば、他の実施形態では、他のタイプのアトミックメモリ処理(例えば所定のキャッシュロック)が規制されてもよい。例えば、WBメモリタイプ及びキャッシュ整列アドレス(1つのキャッシュラインの中で完全に合致している)を有するアトミック処理であるキャッシュロックは、他のスレッドがMEUを使用することを禁止することができる。キャッシュロック期間は一般的にはバスロックより短く、単独のSMTコア内におけるサービス妨害攻撃(denial of service attach)を行うために使用されてもよい。本実施形態はそのような処理をも規制するために使用されてよい。
図2を参照するに、バスロックレギュレータ又は他のそのような論理部が図2に示す方法を実行し、バスロックの間で通過する所定時間を設定することなしに、一連のバスロックをスレッドが実行することを防ぐ。このように、サービス妨害攻撃又は他のそのようなセキュリティアタックの下でのスレッドは、システムリソースを不要に消費してしまうことから防止される。
図2に示されているように、本方法200は、所与のスレッド(すなわち、第1伸すレッドからのリクエスト)に応答してバスロックが実行されることから始まってもよい(ブロック210)。バスロック処理を介してよい処理は不変でなくてもよく(可変であってもよく)、例えば、アトミック処理を暗黙的に実行するマクロインストラクション(例えば、一例として命令のやりとり)、トランスレーションルックアサイドバッファ(translation lookaside buffer:TLB)の中には無いがページミスハンドラ(PMH)がページウォークを実行するには必要なメモリ処理の取り扱い、何らかのオペレーティングシステムレベルのマクロ命令を含む様々な場合を取り扱うためのマイクロコード等を含んでいてもよい。様々な処理はバスロックを実行するように動作する。具体的には、あるコアで動作するスレッドは、コアのメモリサブシステムから非コア論理装置のようなプロセッサの他の論理装置へバスロックリクエストの発行を引き起こす。それに応じて、この非コア論理装置は一時的な(halt)タイプのリクエストを他の全てのシステムエージェントに対して、所与のプロセッサに対する内部だけでなく(マイクロプロセッサシステムの場合)他のプロセッサのような外部エージェントに対しても発行する。次に、他のエージェントによるこの一時的なリクエストの受信に応じて、これらのエージェントは休止中のこれらの処理に対して様々な処理を実行する。これらの処理は、全ての途中の処理、様々なバッファからの取得、実行した命令の撤回等を含む。そのような全ての処理が所与のエージェントにおいて完了すると、エージェントは静止状態にあることを知らせるためにインジケータ信号を非コア論理装置に送信してもよい。そして、そのような全ての信号が非コア論理装置で受信されると、非コア論理装置は、準備信号を第1のスレッドに送り、バスロックが現在実行できていることを示す。この多くの処理量はバスロックを実行するためには必要であり、この場合、システムの他のエージェントは有用な作業を行うことから排除される。
図2に示されているように、バスロック処理の間、方法200を実行するレギュレータ又は他の論理装置は、バスロックが終了しているか否かを判定又は確認する(菱形の処理部220)。本発明の範囲はこの例に限定されないが、一実施形態では、この判定はバスロックシーケンスの後で実行される所定の処理に基づいていてもよい。これらの処理は実施形態に応じて異なっていてよい。例えば、バスロックの終了を示す処理は、保存非ロックマクロ命令の排除(又は@retirementの実行)を含んでもよい。このバスロック及びシーケンスが検出されなかった場合、菱形の処理部220は自身に戻る。
そうでなかった場合、制御フローはブロック230に進む。ブロック230において、論理部は他のスレッドのみがメモリクラスタ処理を実行することを許可する。すなわち、バスロックの実行を完了したばかりの第1のスレッドは、メモリ実行部にアクセスしてメモリクラスタ処理を実行することを妨げられる。このように、スレッドが連続的にバスロックを実行することを求めている場合におけるサービスの否定又はアタックのその他のスタイルは、拒否される。ブロック230において、スレッドはメモリクラスタ処理を実行することから妨げられず、別の形態では異なる防止機構がそれに変わって設けられてもよいことに留意を要する。例えば、全てのメモリクラスタ処理を遮るのではない実施形態の場合、バスロックの実行を求めるそのような処理のみが防止されてもよい。更に別の実施形態の場合、防止手段(prevention mechanism)は、他の機能に仕向けられ、スレッドを発行することについて大きな影響をもたらしてもよい。例えば、防止手段は、スレッドを発行する処理の全てを中断するが、メモリ実行部の利用についてだけはそうしなくてもよい。更に別の実施形態の場合、バスロックに匹敵するコアのスレッド全てが、メモリ実行部を用いることから防止することがでる。このように、サービスシナリオの妨害攻撃は、バスロックが同じコア(例えば、スレッド間のピンポンをなすようなロック)の異なるスレッドからバスロックが速やかに行われ、システム/プラットフォームの残りにおけるサービス妨害攻撃をまねく。
制御は、第1のスレッドのタイマが起動されるブロック240と平行して行われる。以下において詳細に説明するように、一実施形態では、このタイマは例えば12ビットのダウンカウンタのようなカウンタに対応させてもよい。このタイマは禁止ウィンドウを表し、禁止ウィンドウの中では、対応するスレッド(すなわち、バスロックを実行したまさにそのスレッド)がメモリクラスタの処理から排除される。個々のブロック230及び240として示されているが、一実施形態ではこらのブロックは1つのアトミックフローに合成されてもよいことに留意を要する。
図2を更に参照するに、菱形の判定部250において、このタイマが所定値に達したか否かが判定される。例えば、タイマがカウンタにより設定されている例の場合、その所定値は、ダウンカウンタの場合ならゼロのカウント値に対応する。あるいは、アップカウンタの実施形態の場合、その所定値はカウンタの最大カウントするに対応してもよい。このカウント値に達していなかった場合、制御ループは菱形の判定部250に戻る。
そうではなく、カウンタ値が所定値に到達した場合、制御フローはブロック260に進む。所与のスレッドはメモリクラスタ処理を再び実行することが許可される。すなわち、このスレッドは禁止手段排除(prevention mechanism removed)を含む。従って、スレッドに対するメモリクラスタディスパッチ処理(memory cluster dispatch activity)が通常通り再開する。更に、ブロック260ではタイマが初期値に戻るように設定される。図2の実施の形態では特定の形態と共に説明がなされているが、本発明の範囲はその形態に限定されない。
一般に、処理を分析し、アトミックメモリ処理の実行内容を特定し、適切な測定値を使用してそのような処理の一連のシーケンスを防ぐことで、ライブロック又はデッドロックディテクタにより実行されるような積極的なロック停止処理を実行する必要性を、実施の形態は排除する。アトミック処理がバスロックである例の場合、論理装置は、何れの論理装置のプロセッサがバスロックを実行しているかを判定する。そして、例えば、論理プロセッサがバスロックを完了させるシーケンスを軽視する時点を決定することで、このバスロックの結果が検出されてもよい。この判定に応答して、論理プロセッサは所定の時間の間別のバスロックを開始することが妨げられる。例えば、バスロックシーケンスが終了すると、論理プロセッサにより、例えば12ビットのプログラム可能なカウント値であるカウント値が0まで減少するまで、別のバスロックを開始することは禁止される。その後、この論理プロセッサは、別のバスロックを使用できるようになり、関連する時間は元の開始値にリセットして戻される。
一実施形態において、プログラム可能なレジスタであるカウンタの最大値は、マイクロコードにより設定及び修正されてもよい。更に、レギュレータ論理装置(regulator logic)の検出論理装置を用いてスレッドが発行した数に近い原子メモリ処理数の論理装置を発見した場合、レギュレータ論理装置は、スレッドに関連するカウンタの長さを伸ばし、処理数がスレッドにより実行されるアタックを示すようにする。このようにして、スレッドの防止ウィンドウはスレッドにより要求される原子メモリ処理の数に少なくとも部分的に基づいて制御することができる。また、一実施形態では、マイクロコードプログラム可能なイネーブル/ディセーブルインジケータに、このアトミックメモリ処理の規制を実行するイネーブル/ディセーブルレギュレータ論理装置が設けられてもよい。
このように、スレッドによるアトミックメモリ処理の連続的なシーケンスを防止する簡易な手段が実現される。これに対して、かなり負担が重い手段であるライブロック又はデッドロックブレーカのような従来の方法を利用することも技術的には可能である。従来技術の場合、1つのスレッドがバスロックの連続的なストリームを実行し、1つ以上のライブロックブレーカが、他のスレッドは転送を進行させることはできないことを(例えば、多くの命令を排除することで)最終的に検出する。ライブロックブレーカはその後に処理を開始し始める。例えば、メモリ実行部(MEU)ライムロックブレーカ(LLB)に対応する第1のライブロックブレーカは、その問題を検出し、何らかの対応策を講じる。このMEU-LLBが非バスロックスレッドを支援できなかった場合、リクエストが、コアリタイアメント検出部(core retirement detector;CRD)のような別のディテクタへなされ、スタックコアの中にある全てのスレッドヌーク(thread nuke)を起動する。このヌークはスタックスレッドが1つの命令を排除することを可能にする。他のスレッドはバスロックのストリームを再始動し、そのシナリオが何度も又は重ね重ね反復される。しかしながら、そのような処理は非常に貧弱なパフォーマンスしかもたらさない。
次に、様々な実施形態では、あるスレッドが設定されておりかつ進行しないことを検出せずに、長い時間を費やす前に、何らかの処理がなされ、アトミックメモリ処理を完了させるスレッドは、第1のアトミック処理の完了の後少なくとも所定の期間の間、連続的なアトミック処理を防ぐように制御される。このように、他のアトミックメモリ処理を実行することが許可される前に所定の期間の間待機することでまさにアトミック処理を終了したスレッドによっては、些細なパフォーマンスペナルティしか生じない(その期間の間このスレッドによってMEUにアクセスすることは禁じられることが含まれていてもよい)。この防止手段は第1の場所で他のスレッドがスタックを取得することでさえ禁止する。従って、実施の形態は、アトミックメモリ処理を完了したスレッドが新たなメモリ命令を開始できるようになる前に、プログラム可能なウィンドウ時間を提供する。そのようなアトミック処理は低いパフォーマンスアクティビティしか発揮しないので、禁止の最中のスレッドでさえ、実質的なパフォーマンスの影響はない。
このため、悪意のコードがバスブロックに使用されることを防ぐことで安全なロバスト性の強いプロセッサを実現することができ、悪意のコード等によるシステムパフォーマンスや他のユーザ及び/又はプログラムのパフォーマンスの大幅な劣化を回避できる。
実施の形態は多くの様々なシステム出実現されてもよい。例えば、実施の形態はマルチコアプロセッサのようなプロセッサで実現することができる。図3を参照するに、本発明の一実施形態によるプロセッサコアのブロック図が示されている。図3に示されているように、プロセッサコア300は複数のコアプロセッサの内の1つのコアであり、マルチステージのパイプライン化された順不同のプロセッサ(a multi-stage pipelined out-of-order processor)として示されている。プロセッサ300は図3において比較的概略的に示されており、本発明の実施の形態によるメモリサブ一ステムの規制に関連指定使用される様々な特徴も示している。
図3に示されているように、コア300はフロントエンド部310を有し、フロントエンド部310は実行される命令を取得しかつプロセッサで後に使用するためにそれらを保存するために使用されてもよい。例えば、フロントエンド部310はフェッチ部301、命令キャッシュ部303及び命令デコーダ部305を有する。一実施形態では、フロントエンド部310は、マイクロコードストレージだけでなくマイクロオペレーションストレージにも沿うトレースキャッシュを更に含んでいてもよい。フェッチ部301は例えばメモリ又は命令キャッシュ303からマクロ命令を取得し、それらを命令デコーダ部305に与え、それらを元の形式にデコードし、すなわちプロセッサが実行するためのマクロ命令にデコードする。
フロントエンド部310及び実行部320の間にはアウトオブオーダ(out-of-order:OOO)エンジン315が結合されており、OOOエンジンはマクロ命令を受信するため及びそれらの実行に備えるために使用される。より具体的に言えば、OOOエンジン315はマクロ目0例の流れ(マクロ命令フロー)を並べ替えるための様々なバッファを有し、実行時に必要な様々なリソースを割り当てることに加えて、様々なレジスタファイルの中でストレージ位置に関する論理レジスタの名称変更を行い、例えばエンジンの名称変更論理装置によって、レジスタファイル300及び拡張されたレジスタファイル335を使用する。レジスタ330は整数及び浮動小数点演算用にいくつものレジスタファイルを含んでいてもよい。拡張されたレジスタファイル335は、例えばレジスタ当たり256又は512ビットのようなベクトルサイズ単位のストレージを提供してもよい。
様々なリソースが実行部320の中に存在し、例えば、様々な整数、浮動小数点、及びシングル命令マルチメディアデータ(SIMD)論理部、等が他の特定のハードウェアの中に備わっていてもよい。例えば、そのような実行部は1つ以上の算術論理装置(ALU)322を含んでいてもよい。当然に、乗算アキュムレート部のような他の実行部が備わっていてもよいし、更に別のものが存在していてもよい。計算結果は出力論理部(retirement logic)、すなわち並べ替えバッファ(reorder buffer;ROB)340に与えられてもよい。より具体的に言えば、ROB340は、実行される命令に関連する情報を受信するための様々なアレイ及び論理装置を含んでいてもよい。この情報は、ROB340により検査され、その命令が正当に出力できるか否かを判定し、プロセッサのアーキテクチャ状態に結果のデータが与えられるか否か、或いは適切な出力命令を妨げる1つ以上の例外が生じたか否かが判定される。当然に、ROB340は出力に関連する処理以外の処理を実行してもよい。
図3に示されているように、ROB340は、一実施形態では低レベルキャッシュ(例えば、L1キャッシュ)であってもよいキャッシュ350に結合されている。一実施形態では実行部320がキャッシュ350に直接的に結合されていてもよい。また、キャッシュ、実行部及びフロント部等を含む様々なプロセッサ構造は、例えば、メモリサブシステム360に結合されていてもよい。このメモリサブシステムは、プロセッサ構造とメモリ階層の別の部分との間にインターフェースを提供し、例えばオンチップ又はオフチップ(on or off-chip)とシステムメモリとの間にインターフェースを提供する。このため、メモリサブシステム360はシステムメモリとの通信を行うための集積化されたメモリコントローラ370を含んでいてもよい(簡明化のため図3には示されていない)。メモリサブシステム360はメモリ実行部375を更に有し、メモリ実行部375はメモリ要求を開始し、かつメモリからのデータの復帰を処理するような様々な処理を行う。例えば、図3の実施の形態に示されているように、MEU375はページミスハンドラ376を含み、キャッシュ、MEU-LLB377及び調停部379においてミス(miss)を要求し、様々なメモリリクエストの中で調停を行う場合にメモリ操作を取り扱う。更に、図示されていないが、バッファ、スケジューラ等のような他の構造もMEUの中に存在していることが理解されるであろう。
図3に更に示されているように、レギュレータ論理部380がMEU375に結合されていてもよい。より具体的に言えば、レギュレータ論理部380は、コア300及びMEU375の他の要素間に結合され、コアで実行される所与のスレッドによる連続的なメモリ処理を防ぐレギュレータとして機能する。このため、論理部380はコア各々に関連するトラッカ(tracker)を含み、トラッカの各々は、対応するスレッドによる第1のアトミックメモリの完了時に起動されるタイマ又はそのような他のカウンタを含んでもよく、起動されると、タイマの閾値(例えば、最大カウント値)に到達するまで、そのスレッドによる他のアトミックメモリ処理がMEU375に提供されないようにする。更に、論理部380はバッファを含み、各々のバッファは対応するスレッドにより発行されるアトミックメモリ処理を保存し、そのような処理は何らかの禁止ウィンドウが経過した後に実行されてもよい。
メモリサブシステム360により、データ通信は高レベルのキャッシュ、システムメモリ等と共に生じてもよい。図3の実施の形態においては高レベルであるが、本発明の範囲はその例に限定されないことが理解されるべきである。例えば、図3に示す実施形態はいわゆるx86命令セットアーキテクチャ(instruction set architecture:ISA)のような順序通りでないアウトオブオーダ(out-of-order)方式に関連している。すなわち、他の実施の形態は、順序通りのインオーダ(in-order)プロセッサ、縮小命令セットコンピュータ(RISC)プロセッサ(例えば、ARM方式のプロセッサ等)、或いはISAの他のタイプのプロセッサ出実現されてもよく、図4に関して後述するように関連する論理回路及びエミュレーションエンジンを介した様々なISAの処理及び命令をエミュレートすることができる。
すなわち、他の実施形態では、プロセッサアーキテクチャは、プロセッサが第1のISAの命令(ソースISAと言及される)を実行できるようなエミュレーション特性を有し、そのアーキテクチャはターゲットISAと言及される第2のISAに従っている。概して、OS及びアプリケーションプログラムの双方を含むソフトウェアは、ソースISAにコンパイルされ、ハードウェアは、特定のパフォーマンス及び/又はエネルギ効率特性を有する所与のハードウェア手段に具体的に宛てられたターゲットISAを実現する。
図4を参照するに、本発明の別の実施の形態によるプロセッサのブロック図が示されている。図4に示されているように、システム400はプロセッサ410及びメモリ420を含む。メモリ420は、システム及びアプリケーションソフトウェア双方を有する従来のメモリ422と、ターゲットISA用に実現されているソフトウェアを有する隠しメモリ(concealed memory)424とを有する。図示されているように、プロセッサ410はソースコードをター下とコードに変換するエミュレーションエンジン430を有する。エミュレーションはインタープリテーション(interpretation)又は2進変換(binary translation)の何れかによって実行されてよい。しばしばインタープリテーションは最初に遭遇した場合のコードのために使用される。ダイナミックプロファイリングにより頻繁に実行されるコード領域(例えば、ホットスポット)が発見された場合、それらはターゲットISAに変換され、隠れメモリ424のコードキャッシュに保存される。最適化は変換プロセスの位置部分として行われ、非常に頻繁に使用されるコードは後に更に最適化されてもよい。コードの変換されたブロックはコードキャッシュ424に設けられ、それらを反復的に再利用できるようにする。
図4を更に参照するに、マルチコアプロセッサの1つのコアであってもよいプロセッサ410は、命令ポインタアドレスを命令キャッシュ(I-キャッシュ)450に与えるプログラムカウンタ440を含む。図示されているように、I-キャッシュ450は所与の命令アドレスに関するミスについて隠れメモリ部424から直接的にターゲットISA命令を受信してもよい。従って、I-キャッシュ450はターゲットISA命令を保存し、ターゲットISAメモリはデコーダ460に与えられ、デコーダ460は到来する命令を受信するターゲットISAのデコーダであり、マクロ命令レベルであってもよくかつその命令をプロセッサパイプライン470の中で実行するためのマクロ命令に変換してもよい。本発明の範囲はこの例に限定されず、パイプライン470は様々なステージ(段)を含むアウトオブオーダパイプラインであり、命令を実行及び出力する。パイプライン470はサービス妨害攻撃(denial of service attach)を防ぐ用に構築された論理部を含んでいてもよい。そのような論理部は図3のレギュレータ論理部380と同様であってもよく、アトミックメモリ処理の一連のシーケンスを特定し、そのような処理が、実行する他のスレッドのパフォーマンスに影響を及ぼすことを防止する又は遅らせる。
実施の形態は多く他の様々なシステムのタイプで実現されてよい。図5を参照するに、本発明の実施形態によるシステムのブロック図が示されている。図5に示されているように、マイクロプロセッサシステム500は1対1(ポイントツーポイント)相互接続システムであり、ポイントツーポイント総合接続部550を介して結合された第1のプロセッサ570及び第2のプロセッサ580を有する。図5に示されているように、プロセッサ570及び580の各々は、第1及び第2のプロセッサコア(すなわち、プロセッサコア574a及び574b並びにプロセッサコア584a及び584b)を含むマルチコアプロセッサであるが、潜在的に、多くのコアがプロセッサの中に存在していてもよい。そのようなコアは本発明の実施の形態によるレギュレーション論理部を含み、サービス妨害攻撃が実行する他のスレッドに影響を及ぼす影響を減らす又は防ぐ。
図5を更に参照するに、第1のプロセッサ570は、メモリコントローラハブ(MCH)572及びポイントツーポイント(P-P)インターフェース576、578を更に含んでいる。同様に、第2のプロセッサ580もMCH582及びP-Pインターフェース576、588を含んでいる。図5に示されているように、MCHの572、582は各自のメモリ(すなわち、メモリ532及びメモリ534)にプロセッサを結合し、これらのメモリはプロセッサ各自にローカルに取り付けられたメインメモリ(例えば、ダイナミックランダムアクセスメモリ(DRAM))の一部分であってもよい。第1のプロセッサ570及び第2のプロセッサ580はP-P相互接続部552、554を通じてそれぞれチップセット590に結合されていてもよい。図5に示されているように、チップセット590はP-Pインターフェース594及び598を含んでいてもよい。
更に、チップセット590はP-P相互接続部539によりチップセット590とハイパフォーマンスグラフィックスエンジン538を結合するインターフェース592を含んでいる。チップセット590はインターフェース596を介して第1のバス56に結合されていてもよい。図5に示されているように、様々な入力/出力(I/O)装置514が、第1のバス516を第2のバス520に結合するバスブリッジ518と共に第1のバス516に結合されていてもよい。例えば、キーボード/マウス522、通信装置526及びデータストレージ部528等を含む第2のバス520に様々な装置が結合されており、一実施形態ではコード530を含むディスクドライブ又は他の大容量記憶装置等に接続されている。更に、オーディオI/O524は第2のバス520に結合されていてもよい。
図5の実施の形態では、ポイントツーポイント相互接続部を介して結合されたマルチパッケージシステムであるとして例示されているが、本発明の範囲はそのような例に限定されないことに留意を要する。別の実施形態では、フロントサイドのような他の相互接続部が、デュアルシステム又はマルチプロセッサシステムにてプロセッサに一緒に結合されていてもよい。更に、実施の形態はユニポーラシステムで使用されてもよく、例えば単独のコア又は複数のコアと共にプロセッサを使用し、SMTの機能をサポートしてもしていなくてもよいシステムで使用されてもよい。
実施の形態はコードで実現されてもよく、システムが命令を実行するようにプログラムされることが可能な保存された命令を含む記憶媒体に保存されてもよい。記憶媒体は、一時的でない任意の種類の記憶媒体であってよく、例えば、フロッピディスク、光ディスク、光学的ディスク等のようなディスクでもよいし、ソリッドステートドライバ(SSD)、コンパクトディスクリードオンリメモリ(CD-ROM)、再書き込み可能なコンパクトディスク(CD-RW)、磁気光学的ディスク、半導体装置[リードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)(例えば、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM))、消去可能なプログラマブルリードオンリメモリ(EPROM)、フラッシュメメモリ、電気的に消去可能なリードオンリメモリ(EEPROM)]、磁気カード、光学カード、その他の電子命令を保存するのに適した適切な否成るタイプの手段であるがこれらに限定されない。
本発明は限られた数の実施の形態の観点から説明されてきたが、当業者はそれらに対する様々な修正例や変形例を認めるであろう。添付の特許請求の範囲はそのような修正例や変形例は本発明の精神及び範囲に包含されているように意図されている。
国際公開第01/97020号

Claims (20)

  1. 第1のスレッド及び第2のスレッドを実行する第1のコアを有するプロセッサであって、前記第1のコアは、
    前記第1及び第2のスレッドによるメモリ処理の要求を処理するメモリ実行部と、
    第1のアトミックメモリ処理の完了以来ある時間ウィンドウが経過するまで第1のアトミックメモリ処理の完了後、前記第1のスレッドが前記第2のアトミックメモリ処理を実行することを妨げるレギュレータ論理部と
    を有するプロセッサ。
  2. 前記レギュレータ論理部が、前記時間ウィンドウが経過した後に前記第2のアトミックメモリ処理を延期第1のスレッドが実行することを許可する、請求項1に記載のプロセッサ。
  3. 前記第1のコアにおいてロック状態が検出された場合、ロックブレーキング処理を実行する少なくとも1つのロックブレーカを更に有する請求項1に記載のプロセッサ。
  4. 前記レギュレータ論理部が前記第2のアトミックメモリ処理の実行を防止し、前記少なくとも1つのロックブレーカは、前記第1のスレッドにより発行された複数のアトミックメモリ処理に応答するロックブレーキング処理を開始しない、請求項3に記載のプロセッサ。
  5. 前記レギュレータ論理部が複数のトラッカを含み、前記複数のトラッカの各々が前記第1のコアで実行するスレッドに関連付けられており、前記レギュレータ論理部は、前記第1のスレッドに関連付けられているカウンタ値がカウンタ処理の実行中に得られた場合、前記第2のアトミックメモリ処理を前記メモリ実行部に発行することを防ぐ、請求項1に記載のプロセッサ。
  6. 前記レギュレータ論理部は、前記第1のアトミックメモリ処理の終了シーケンスを検出したことに応答してカウンタを起動する、請求項5に記載のプロセッサ。
  7. 前記カウンタの長さは当該プロセッサのマイクロコードによりプログラミング可能である、請求項5に記載のプロセッサ。
  8. サービス妨害攻撃が前記第1のスレッドにより実行された場合、前記レギュレータ論理部は前記第2のスレッドが進行することを可能にする、請求項1に記載のプロセッサ。
  9. 前記レギュレータ論理部によりサービス妨害攻撃が検出された場合、前記レギュレータ論理部は前記第1のスレッドに関連付けられる時間ウィンドウを長くする、請求項8に記載のプロセッサ。
  10. 前記レギュレータ論理部は当該プロセッサのマイクロコードに応答してディセーブルにされる、請求項1に記載のプロセッサ。
  11. 第1のスレッドで実行されるアトミックメモリ処理の終了シーケンスを検出するステップと、
    前記第1のスレッドの提示ウィンドウを提示する期間をカウントするタイマを前記第1のスレッドに関連付けるステップと、
    前記アトミックメモリの処理が完了した後、前記提示ウィンドウの期間が経過するまで、前記第1のスレッドによるメモリクラスタ処理の実行を妨げるステップと
    を有する防止方法。
  12. 前記提示ウィンドウの期間が経過するまで、前記第1のスレッドにより発行された第2のアトミックメモリ処理の要求をバッファの中で保持するステップを更に有する請求項11に記載の防止方法。
  13. 前記アトミックメモリ処理がバスロック処理を含む、請求項11に記載の防止方法。
  14. 前記第1のスレッドにより要求された複数のアトミックメモリ処理の少なくとも一部に基づいて前記提示ウィンドウの長さを制御するステップを更に有する請求項11に記載の防止方法。
  15. 前記提示ウィンドウの間に第2のスレッドがアトミックメモリ処理を実行することを許可した後に、第2の提示ウィンドウの期間が経過するまで、前記第2のスレッドがメモリクラスタ処理の実行を妨げる、請求項11に記載の防止方法。
  16. 前記第1のスレッドにより実行されるサービス妨害攻撃を、前記第2のスレッドの実行から妨げすステップを更に有し、前記第1及び第2のスレッドはマルチコアプロセッサの第1のコアで実行される、請求項15に記載の防止方法。
  17. 前記第1のコアに結合されたブロックブレーカによるロックブレーキング処理を開始することなしに、前記第1のスレッドが前記メモリクラスタ処理の実行を妨害することにより、前記第2のスレッドが進行することが許可される、請求項16に記載の防止方法。
  18. 命令を実行する1つ以上のコアを含むプロセッサと前記プロセッサに結合されたダイナミックランダムアクセスメモリ(DRAM)とを有するシステムであって、前記少なくとも1つのコアは、
    命令を取得してデコードするフロントエンド部と、
    前記命令の内少なくとも1つのオペランドを物理レジスタに関連付ける名称変更部と、
    前記フロントエンド部に結合され、前記少なくとも1つのオペランドを用いて延期命令を実行する実行部と、
    前記実行部に結合され、前記実行部から到来するメモリ要求を処理するメモリ実行部(MEU)と、
    前記MEUに結合され、前記第1のスレッドにより要求された以前のアトミックメモリ処理の終了に応じて、前記MEUに提供された第1のスレッドにより要求された少なくとも1つのアトミックメモリ処理を遅延させるレギュレータ部と
    を有するシステム。
  19. 前記レギュレータ部は、前記第1のスレッドにより要求された少なくとも1つのアドミックメモリ処理を遅延させつつ、前記第2のスレッドにより要求されるアトミックメモリ処理が前記MEUに提供されることを許可する、請求項18に記載のシステム。
  20. 前記少なくとも1つのアトミックメモリ処理の遅延により、前記レギュレータ部は、前記第1のスレッドがサービス妨害攻撃を処理している間に前記第2のスレッドが処理を進行させることを許可し、該遅延により、前記プロセッサの少なくとも1つのロックブレーカはロックブレーキング処理を起動しない、請求項19に記載のシステム。
JP2013530301A 2010-09-22 2011-09-22 プロセッサ、防止方法及びシステム Expired - Fee Related JP5628434B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/887,898 2010-09-22
US12/887,898 US8516577B2 (en) 2010-09-22 2010-09-22 Regulating atomic memory operations to prevent denial of service attack
PCT/US2011/052696 WO2012040425A2 (en) 2010-09-22 2011-09-22 Regulating atomic memory operations to prevent denial of service attack

Publications (2)

Publication Number Publication Date
JP2013541097A true JP2013541097A (ja) 2013-11-07
JP5628434B2 JP5628434B2 (ja) 2014-11-19

Family

ID=45818946

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013530301A Expired - Fee Related JP5628434B2 (ja) 2010-09-22 2011-09-22 プロセッサ、防止方法及びシステム

Country Status (6)

Country Link
US (1) US8516577B2 (ja)
JP (1) JP5628434B2 (ja)
CN (1) CN103140847B (ja)
GB (1) GB2497883B (ja)
TW (1) TWI540504B (ja)
WO (1) WO2012040425A2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9524263B2 (en) * 2012-06-29 2016-12-20 Intel Corporation Method and apparatus for bus lock assistance
JP6609552B2 (ja) * 2013-10-25 2019-11-20 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド バスロック及び変換索引バッファの無効化を行う方法及び装置
US9449008B1 (en) * 2014-03-31 2016-09-20 Amazon Technologies, Inc. Consistent object renaming in distributed systems
US10901940B2 (en) * 2016-04-02 2021-01-26 Intel Corporation Processors, methods, systems, and instructions to atomically store to memory data wider than a natively supported data width
GB2577878B (en) * 2018-10-08 2020-11-11 Advanced Risc Mach Ltd Transition disable indicator

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002149480A (ja) * 2000-11-16 2002-05-24 Matsushita Electric Ind Co Ltd 排他制御方法

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5293621A (en) 1993-01-11 1994-03-08 Unisys Corporation Varying wait interval retry apparatus and method for preventing bus lockout
US5644733A (en) 1995-05-18 1997-07-01 Unisys Corporation Dual coupled partitionable networks providing arbitration logic for managed access to commonly shared busses
US5717876A (en) 1996-02-26 1998-02-10 International Business Machines Corporation Method for avoiding livelock on bus bridge receiving multiple requests
US6141715A (en) 1997-04-03 2000-10-31 Micron Technology, Inc. Method and system for avoiding live lock conditions on a computer bus by insuring that the first retired bus master is the first to resubmit its retried transaction
US6182210B1 (en) 1997-12-16 2001-01-30 Intel Corporation Processor having multiple program counters and trace buffers outside an execution pipeline
US6078981A (en) 1997-12-29 2000-06-20 Intel Corporation Transaction stall technique to prevent livelock in multiple-processor systems
US6178493B1 (en) 1998-02-19 2001-01-23 International Business Machines Corporation Multiprocessor stalled store detection
US7257814B1 (en) 1998-12-16 2007-08-14 Mips Technologies, Inc. Method and apparatus for implementing atomicity of memory operations in dynamic multi-streaming processors
AU2001267057A1 (en) 2000-06-12 2001-12-24 Clearwater Networks, Inc. Method and apparatus for implementing atomicity of memory operations in dynamic multi-streaming processors
US6434673B1 (en) 2000-06-30 2002-08-13 Intel Corporation Optimized configurable scheme for demand based resource sharing of request queues in a cache controller
US6920516B2 (en) 2000-08-31 2005-07-19 Hewlett-Packard Development Company, L.P. Anti-starvation interrupt protocol
US7082500B2 (en) 2003-02-18 2006-07-25 Cray, Inc. Optimized high bandwidth cache coherence mechanism
US7000047B2 (en) 2003-04-23 2006-02-14 International Business Machines Corporation Mechanism for effectively handling livelocks in a simultaneous multithreading processor
US7320100B2 (en) 2003-05-20 2008-01-15 Cray Inc. Apparatus and method for memory with bit swapping on the fly and testing
US7213093B2 (en) * 2003-06-27 2007-05-01 Intel Corporation Queued locks using monitor-memory wait
US7873785B2 (en) * 2003-08-19 2011-01-18 Oracle America, Inc. Multi-core multi-thread processor
US8607241B2 (en) * 2004-06-30 2013-12-10 Intel Corporation Compare and exchange operation using sleep-wakeup mechanism
US7748001B2 (en) 2004-09-23 2010-06-29 Intel Corporation Multi-thread processing system for detecting and handling live-lock conditions by arbitrating livelock priority of logical processors based on a predertermined amount of time
US7516313B2 (en) 2004-12-29 2009-04-07 Intel Corporation Predicting contention in a processor
US7558946B2 (en) 2005-12-12 2009-07-07 Intel Corporation Breaking a lock situation in a processor without detection of the lock situation using a multi-level approach
US8069444B2 (en) 2006-08-29 2011-11-29 Oracle America, Inc. Method and apparatus for achieving fair cache sharing on multi-threaded chip multiprocessors
US7590784B2 (en) 2006-08-31 2009-09-15 Intel Corporation Detecting and resolving locks in a memory unit

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002149480A (ja) * 2000-11-16 2002-05-24 Matsushita Electric Ind Co Ltd 排他制御方法

Also Published As

Publication number Publication date
US20120072984A1 (en) 2012-03-22
JP5628434B2 (ja) 2014-11-19
WO2012040425A3 (en) 2012-06-28
WO2012040425A2 (en) 2012-03-29
US8516577B2 (en) 2013-08-20
GB201305154D0 (en) 2013-05-01
TWI540504B (zh) 2016-07-01
GB2497883B (en) 2018-08-15
GB2497883A (en) 2013-06-26
CN103140847A (zh) 2013-06-05
TW201227505A (en) 2012-07-01
CN103140847B (zh) 2015-11-25

Similar Documents

Publication Publication Date Title
US12020031B2 (en) Methods, apparatus, and instructions for user-level thread suspension
JP4603583B2 (ja) プロセッサ、装置、及び方法
US9940132B2 (en) Load-monitor mwait
Martínez et al. Cherry: Checkpointed early resource recycling in out-of-order microprocessors
JP5894120B2 (ja) ゼロサイクルロード
US10761846B2 (en) Method for managing software threads dependent on condition variables
US7111126B2 (en) Apparatus and method for loading data values
US8898434B2 (en) Optimizing system throughput by automatically altering thread co-execution based on operating system directives
US9891972B2 (en) Lazy runahead operation for a microprocessor
JP5628434B2 (ja) プロセッサ、防止方法及びシステム
US7590784B2 (en) Detecting and resolving locks in a memory unit
US9389864B2 (en) Data processing device and method, and processor unit of same
US20160350167A1 (en) Conditional pattern detector for detecting hangs
US7328327B2 (en) Technique for reducing traffic in an instruction fetch unit of a chip multiprocessor
Wang et al. GCMS: A Global Contention Management Scheme in Hardware Transactional Memory

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140224

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140408

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140626

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140703

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140804

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: 20140902

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141001

R150 Certificate of patent or registration of utility model

Ref document number: 5628434

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees