(57)【特許請求の範囲】
【請求項１】
第１のスレッド及び第２のスレッドを実行する第１のコアを有するプロセッサであって、前記第１のコアは、
前記第１及び第２のスレッドによるメモリ処理の要求を処理するメモリ実行部と、
第１のアトミックメモリ処理の完了以来ある時間ウィンドウが経過するまで第１のアトミックメモリ処理の完了後、前記第１のスレッドが前記第２のアトミックメモリ処理を実行することを妨げるレギュレータ論理部と
前記第１のコアにおいてロック状態が検出された場合、ロックブレーキング処理を実行する少なくとも１つのロックブレーカと
を有し、前記レギュレータ論理部は前記第２のアトミックメモリ処理の実行を防止し、前記少なくとも１つのロックブレーカは、前記第１のスレッドにより発行された複数のアトミックメモリ処理に応答するロックブレーキング処理を開始しない、プロセッサ。
【請求項２】
第１のスレッド及び第２のスレッドを実行する第１のコアを有するプロセッサであって、前記第１のコアは、
前記第１及び第２のスレッドによるメモリ処理の要求を処理するメモリ実行部と、
第１のアトミックメモリ処理の完了以来ある時間ウィンドウが経過するまで第１のアトミックメモリ処理の完了後、前記第１のスレッドが前記第２のアトミックメモリ処理を実行することを妨げるレギュレータ論理部と
を有し、サービス妨害攻撃が前記第１のスレッドにより実行された場合、前記レギュレータ論理部は前記第２のスレッドが進行することを可能にし、
前記レギュレータ論理部によりサービス妨害攻撃が検出された場合、前記レギュレータ論理部は前記第１のスレッドに関連付けられる時間ウィンドウを長くする、プロセッサ。
【請求項３】
前記レギュレータ論理部が、前記時間ウィンドウが経過した後に前記第２のアトミックメモリ処理を延期第１のスレッドが実行することを許可する、請求項１又は２に記載のプロセッサ。
【請求項４】
前記レギュレータ論理部が複数のトラッカを含み、前記複数のトラッカの各々が前記第１のコアで実行するスレッドに関連付けられており、前記レギュレータ論理部は、前記第１のスレッドに関連付けられているカウンタ値がカウンタ処理の実行中に得られた場合、前記第２のアトミックメモリ処理を前記メモリ実行部に発行することを防ぐ、請求項１又は２に記載のプロセッサ。
【請求項５】
前記レギュレータ論理部は、前記第１のアトミックメモリ処理の終了シーケンスを検出したことに応答してカウンタを起動する、請求項４に記載のプロセッサ。
【請求項６】
前記カウンタの長さは当該プロセッサのマイクロコードによりプログラミング可能である、請求項４に記載のプロセッサ。
【請求項７】
前記レギュレータ論理部は当該プロセッサのマイクロコードに応答してディセーブルにされる、請求項１又は２に記載のプロセッサ。
【請求項８】
防止方法であって、
第１のスレッドで実行されるアトミックメモリ処理の終了シーケンスを検出するステップと、
前記第１のスレッドの提示ウィンドウを提示する期間をカウントするタイマを前記第１のスレッドに関連付けるステップと、
前記アトミックメモリの処理が完了した後、前記提示ウィンドウの期間が経過するまで、前記第１のスレッドによるメモリクラスタ処理の実行を妨げるステップと
を有し、前記提示ウィンドウの間に第２のスレッドがアトミックメモリ処理を実行することを許可した後に、第２の提示ウィンドウの期間が経過するまで、前記第２のスレッドがメモリクラスタ処理の実行を妨げ、
前記第１のスレッドにより実行されるサービス妨害攻撃を、前記第２のスレッドの実行から妨げ、前記第１及び第２のスレッドはマルチコアプロセッサの第１のコアで実行され、
前記第１のコアに結合されたブロックブレーカによるロックブレーキング処理を開始することなしに、前記第１のスレッドが前記メモリクラスタ処理の実行を妨害することにより、前記第２のスレッドが進行することが許可される、防止方法。
【請求項９】
前記提示ウィンドウの期間が経過するまで、前記第１のスレッドにより発行された第２のアトミックメモリ処理の要求をバッファの中で保持するステップを更に有する請求項８に記載の防止方法。
【請求項１０】
前記アトミックメモリ処理がバスロック処理を含む、請求項８に記載の防止方法。
【請求項１１】
前記第１のスレッドにより要求された複数のアトミックメモリ処理の少なくとも一部に基づいて前記提示ウィンドウの長さを制御するステップを更に有する請求項８に記載の防止方法。
【請求項１２】
命令を実行する少なくとも１つのコアを含むプロセッサと前記プロセッサに結合されたダイナミックランダムアクセスメモリ(DRAM)とを有するシステムであって、前記少なくとも１つのコアは、
命令を取得してデコードするフロントエンド部と、
前記命令の内少なくとも１つのオペランドを物理レジスタに関連付ける名称変更部と、
前記フロントエンド部に結合され、前記少なくとも１つのオペランドを用いて延期命令を実行する実行部と、
前記実行部に結合され、前記実行部から到来するメモリ要求を処理するメモリ実行部(MEU)と、
前記MEUに結合され、第１のスレッドにより要求された以前のアトミックメモリ処理の終了に応じて、前記MEUに提供された前記第１のスレッドにより要求された少なくとも１つのアトミックメモリ処理を遅延させるレギュレータ部と
を有し、前記レギュレータ部は、前記第１のスレッドにより要求された少なくとも１つのアドミックメモリ処理を遅延させつつ、第２のスレッドにより要求されるアトミックメモリ処理が前記MEUに提供されることを許可し、
前記少なくとも１つのアトミックメモリ処理の遅延により、前記レギュレータ部は、前記第１のスレッドがサービス妨害攻撃を処理している間に前記第２のスレッドが処理を進行させることを許可し、該遅延により、前記プロセッサの少なくとも１つのロックブレーカはロックブレーキング処理を起動しない、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
開示される実施の形態はプロセッサ、防止方法及びシステム等に関連する。
【背景技術】
【０００２】
最近のプロセッサは、複数のアクティブなスレッドの実行(例えば、シングルコア又はマルチコアプロセッサにおける同時マルチスレッド(simultaneous  multithreading：SMT)モード)を処理したり、或いは1つ以上のコアの論理プロセッサにて複数のスレッドを実行できるようにしている。そのような例では、あるスレッドがバスロックのようなアトミックメモリ処理の無限ループに入った場合であって(例えば、アトミックロック処理は非ライトバック(non-writeback：WB)メモリタイプ、又はWBメモリが使用されているが、オペランドアドレスはキャッシュラインバウンダリを超えている)、別のスレッドがロードを実行する又は処理を保存する必要がある場合、バスロックを実行しているスレッドのみが何らかの転送処理を行うことができる。すなわち、第1のスレッドで実行されるバスロックは非常に近く、新たなバスロックは先行するバスロックの終了後に開始され、ロード又は処理の保存のようなメモリ処理を実行することは他のスレッドにとって禁止される。
【０００３】
そのようなアトミックメモリ処理は、非常に有益であり、他のメモリ処理(例えば、ロードや保存)が、バスロックの進行中に行われてしまうことを防止できる。これは、サービスセキュリティアタックの拒否をなし、ユーザ(例えば、ユーザの特権レベルで実行する、或いはリング3或いは現在の特権レベル(CPL)3で実行する)は他のユーザ/プログラムが機能することを防止できるマクロ命令の非常に小さなループを書き込むことができる。同じコアで動作しているスレッドの処理の影響に加えて、この種の処理/アタックは、同じコアの中で及び/又はシステム内の異なるプロセッサパッケージで動作している異なるコアのユーザ/プログラムの進行をブロックすることさえできる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
開示される実施の形態による課題は、複数のスレッドを処理するシステムにおいて適切な動作を行うプロセッサ、方法及びシステム等を提供することである。
【課題を解決するための手段】
【０００５】
開示される実施の形態によるプロセッサは、
第１のスレッド及び第２のスレッドを実行する第１のコアを有するプロセッサであって、前記第１のコアは、
前記第１及び第２のスレッドによるメモリ処理の要求を処理するメモリ実行部と、
第１のアトミックメモリ処理の完了以来ある時間ウィンドウが経過するまで第１のアトミックメモリ処理の完了後、前記第１のスレッドが前記第２のアトミックメモリ処理を実行することを妨げるレギュレータ論理部と
を有するプロセッサである。
【図面の簡単な説明】
【０００６】
【図１】本発明の一実施形態によるプロセッサのブロック図。
【図２】本発明の一実施形態による方法例を示すフローチャート。
【図３】本発明の一実施形態によるプロセッサコアのブロック図。
【図４】本発明の別の実施形態によるプロセッサコアのブロック図。
【図５】本発明の一実施形態によるシステムのブロック図。
【発明を実施するための形態】
【０００７】
様々な実施形態では、プロセッサの論理装置又はロジックは、所与のスレッドによりアトミックメモリ(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はマクロ命令の流れ(マクロ命令フロー)を並べ替えるための様々なバッファを有し、実行時に必要な様々なリソースを割り当てることに加えて、様々なレジスタファイルの中でストレージ位置に関する論理レジスタの名称変更を行い、例えばエンジンの名称変更論理装置によって、レジスタファイル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)］、磁気カード、光学カード、その他の電子命令を保存するのに適した適切な否成るタイプの手段であるがこれらに限定されない。
【００４０】
本発明は限られた数の実施の形態の観点から説明されてきたが、当業者はそれらに対する様々な修正例や変形例を認めるであろう。添付の特許請求の範囲はそのような修正例や変形例は本発明の精神及び範囲に包含されているように意図されている。
【先行技術文献】
【特許文献】
【００４１】
【特許文献１】国際公開第０１／９７０２０号
【図１】
0005628434.tif 000002
【図２】
0005628434.tif 000003
【図３】
0005628434.tif 000004
【図４】
0005628434.tif 000005
【図５】
0005628434.tif 000006