(57)【要約】      （修正有）【課題】コンピュータシステムまたは集積回路内の複数のクロックドメインにおいて、決定性を促進し、プログラムのデバッグや最適化を容易にする。【解決手段】１つ以上の実行ユニット１０５内に、複数の異なる周波数および位相を有する複数の異なるクロック信号に共通したクロックパルスを生成する、ユニバーサルクロックパルス発生器１１９を設け、前記ユニバーサルクロックパルス発生器１１９のクロックパルスに比例した周波数で、初期値から閾値までをカウントするカウンタが前記閾値に到達した結果、前記実行ユニット１０５が停止ステートからアクティベートされることにより、プロセッサシステム１００内の複数の異なるクロックドメインを有する実行リソースが、決定性を有するステートに置かれる。【選択図】図１
2010020752.tif 000002
【特許請求の範囲】
【請求項１】
複数の異なる周波数および位相を有する複数の異なるクロック信号に共通したクロックパルスを生成する、ユニバーサルクロックパルス発生器（ＵＣＰＧ）と、
前記ＵＣＰＧのクロックパルスに比例した周波数で、初期値から閾値までをカウントするカウンタと、
前記カウンタが前記閾値に到達した結果、停止ステートからアクティベートされる、少なくとも１つの実行ユニットと、
を備える装置。
【請求項２】
前記少なくとも１つの実行ユニットは、前記カウンタを初期ステートへリセットする、請求項１に記載の装置。
【請求項３】
前記初期値は非０値であり、前記閾値は０値である、請求項１に記載の装置。
【請求項４】
前記ＵＣＰＧのクロックパルスの周波数は、前記カウンタのカウントの変化の前記周波数に等しい、請求項１に記載の装置。
【請求項５】
命令デコーダと、命令スケジューラと、命令リタイアメントユニットと、を更に備える、請求項１に記載の装置。
【請求項６】
ソフトウェアプログラムを含むメモリと、
少なくとも１つの実行ユニットと、複数の機能に対応した複数のクロックドメインと、を有し、前記ソフトウェアプログラムを実行するプロセッサと、
前記少なくとも１つの実行ユニットにおいて、前記複数のクロックドメインに対する決定性を促進するロジックと、を備え、
前記ロジックは、ユニバーサルクロックパルスに対応したレートで、初期ステートから閾値までをカウントするカウンタを含み、
前記ユニバーサルクロックパルスは、前記複数のクロックドメインからの複数のクロックに同期する、システム。
【請求項７】
前記ソフトウェアプログラムのデバッグを支援する、周期的システム管理割り込み（ＰＳＭＩ）ロジックを更に備え、
前記ＰＳＭＩロジックは、前記決定性を促進するロジックに従って、前記複数のクロックドメインと同期する、請求項６に記載のシステム。
【請求項８】
前記プロセッサは、ＣＰＵ、グラフィックスエンジン、メモリ制御ユニット、および少なくとも１つの周辺制御ユニットを含む、請求項７に記載のシステム。
【請求項９】
複数のプロセッサを更に備える、請求項８に記載のシステム。
【請求項１０】
前記複数のプロセッサのうち、少なくとも２つは、複数のクロックドメインを有する、請求項９に記載のシステム。
【請求項１１】
カウンタを初期値に初期化する段階と、
前記カウンタに結合した実行ユニットを停止する段階と
ユニバーサルクロックパルス発生器（ＵＣＰＧ）信号の周波数に比例したレートで前記カウンタの値を変化させる段階と、
前記カウンタが閾値に到達した後、前記実行ユニットをアクティベートする段階と、
を備える方法。
【請求項１２】
前記実行ユニットは、前記カウンタを初期値にさせる、請求項１１に記載の方法。
【請求項１３】
前記ＵＣＰＧ信号は、複数のクロックドメインからの複数のクロック信号を表す、請求項１１に記載の方法。
【請求項１４】
前記実行ユニットは、前記カウンタの値が前記閾値に到達した後、インタラプト信号を生成することによりアクティベートされる、請求項１１に記載の方法。
【請求項１５】
前記カウンタの初期値が非０値であり、前記閾値が０値である、請求項１１に記載の方法。
【請求項１６】
命令セットを記録した機械読み取り可能な媒体であって、
機械によって実行されると、機械に
実行ユニット内で複数の命令を実行する段階と、
複数のクロックドメインからの複数のクロックが表す、ユニバーサルクロックパルスに比例したレートで閾値までカウントして、前記閾値に到達した場合に、実行を停止ステートからアクティベートさせるカウンタを含む決定性ロジックが、前記複数のクロックドメインからの前記複数のクロックに関連して前記実行を既知のステートにした結果生じた決定性を有する時点で、複数の命令で周期的システム管理割り込み（ＰＭＳＩ）信号を生成する段階と、
を備える
方法を実行させる、機械で読み取り可能な媒体。
【請求項１７】
前記初期値が０以上の値であり、前記閾値が０である、請求項１６に記載の機械で読み取り可能な媒体。
【請求項１８】
前記初期値が０であり、前記閾値が０以上の値である、請求項１６に記載の機械で読み取り可能な媒体。
【請求項１９】
前記実行ユニットがシステムオンチップ（ＳｏＣ）プロセッサに関連した、請求項１６に記載の機械で読み取り可能な媒体。
【請求項２０】
前記ＳｏＣプロセッサは、少なくとも１つのＣＰＵ、グラフィックスエンジン、メモリコントローラ、および少なくとも１つの周辺コントローラを含む、請求項１９に記載の機械で読み取り可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、一般的に情報処理に関する。特に、コンピュータシステムおよびマイクロプロセッサにおけるクロッキング分野に関する。
【背景技術】
【０００２】
今日のマイクロプロセッサに、より多くの機能が統合されるに従い、プロセッサ内の機能ユニットが、異なるクロック周波数またはフェーズなどで動作する必要がある場合がある。同一プロセッサ内のクロックドメイン数が増加するに伴い、テストなどを目的とした、決定性の促進は、より複雑になる。いつくかのテストテクニックは、周期的システム管理割り込み（ＰＭＳＩ）を用い、プロセッサで実行されるプログラムを段階的に経て、処理の結果をプログラムの様々な段階で返してよい。
【０００３】
ＰＳＭＩとは、循環バッファ内の外部バスアクティビティをロジックアナライザがトレースするデバック方法であり、その間、連続した２つの１がロジックアナライザバッファに常に存在するような頻度で、システム管理割り込み（ＳＭＩ）が周期的に生成される。ＰＳＭＩハンドラは、後にプロセッサのエミュレータまたはソフトウェアモデルでプロセッサの内部ステートの殆どを再構築できるように、プロセッサの内部ステートをメモリに保存する。また、トレース情報は、バグの再生に使用される。
【０００４】
一般的に、ＰＳＭＩは、処理リソースに依存する。処理リソースとは、実行リソースなどであり、プロセッサが決定性のある結果を返すように、プロセッサ内の他のイベントと同期する。クロックドメイン数が、例えば、同じプロセッサ内により多くの機能が統合されることを理由に増加すると、ＰＳＭＩテクニックの使用はより難しくなる。
【図面の簡単な説明】
【０００５】
本発明の実施形態は、添付図面の図に例示的に示されており、発明を限定するものではない。また、同一の参照番号は類似の要素を示す。
【０００６】
【図１】本発明の少なくとも１つの実施形態が使用され得る、マイクロプロセッサのブロック図である。
【０００７】
【図２】本発明の少なくとも１つの実施形態が使用され得る、共有バスを有するコンピュータシステムのブロック図である。
【０００８】
【図３】本発明の少なくとも１つの実施形態が使用され得る、ポイントツーポイントインターコネクトのコンピュータシステムのブロック図である。
【０００９】
【図４】本発明の少なくとも１つの実施形態が実装され得る、ロジックのブロック図である。
【００１０】
【図５】本発明の少なくとも１つの実施形態の実行に使用され得る動作の系統線図である。
【発明を実施するための形態】
【００１１】
図１は、本発明の少なくとも１つの実施形態が使用され得る、マイクロプロセッサのブロック図である。具体的に、図１は、１つ以上のプロセッサコア１０５および１１０を有する、マイクロプロセッサ１００を示し、プロセッサコアは、少なくとも１つの非ＣＰＵ機能ユニット１０７および１１３をそれぞれ有する。また図１は、非ＣＰＵ機能ユニット１０７および１１３が実行しない別の動作を実行し得る、少なくとも１つの別の非ＣＰＵ機能ユニット１１５を示す。ある実施形態では、非ＣＰＵ機能ユニット１０７、１１３、および、１１５は、グラフィックス処理、メモリ、および、音声、ビデオ、ディスクなどの周辺制御、デジタル信号処理などの機能を含んでよい。また、ある実施形態では、マイクロプロセッサ１００は、Ｉ／Ｏ制御など、図１に示されないその他のロジックを含んでよい。少なくとも１つの実施形態によると、複数のクロックドメインを有するプロセッサにおける、決定性の促進テクニックを実現するため、マルチプロセッサシステムの各マイクロプロセッサ、あるいはマルチコアプロセッサの各プロセッサコアは、ロジック１１９を含む、あるいはロジック１１９に関連してよい。ある実施形態では、ロジックは、１つ以上の実行リソースをプロセッサ内の１つ以上のクロックまたはイベントと同期させるべく、ハードウェア回路を含んでよい。また、別の実施形態では、ロジック１１９は、複数のクロックドメインを有するプロセッサ内の実行リソースの決定性を促進するべく、ソフトウエアを含んでよい。別の実施形態では、ここに記載する、決定性促進のためのテクニックを実行するべく、ハードウェアとソフトウエアの組み合わせを用いてよい。
【００１２】
ある実施形態では、アプリケーション、オペレーティングシステム、ＢＩＯＳ、ファームウェアなどのソフトウェアプログラムの改善、デバッグ、または最適化を支援するべく、ロジックを集積回路内あるいはその外側で使用することにより、プロセッサ内に多様な機能を持つことによって、複数のクロックドメインを有するプロセッサ内の実行リソースを決定性のあるステートに置くことができる。例えば、ある実施形態では、ロジック１１９は、ユニバーサルクロックパルス発生器（ＵＣＰＧ）を含んでよく、複数の異なる周波数あるいは位相を有する複数の異なるクロックの共通のクロックエッジ、またはイベントに基づいて、共通クロックパルスを生成してよい。ある実施形態では、カウンタのステートの変更にＵＣＰＧの出力を用いる。ＵＣＰＧ信号は、実行リソースにデバッグまたは最適化の対象のプログラムに関連した命令の処理を特定の閾カウント値またはその値以上で開始させ、実行リソースが、プロセッサ内の様々なクロックに対して決定性のあるステートであることを促進する。
【００１３】
例えば、ある実施形態では、カウンタが初期値へと初期化され、同期される実行ユニットが停止する。ＵＣＰＧからの信号エッジが、カウンタをデクリメント（または、ある実施形態ではインクリメント）すると、カウンタが特定の閾値、例えば「０」などに到達し、実行ユニットにインタラプトが発生する。その後、ＵＣＰＧ信号の生成に寄与する、プロセッサ内の様々なクロックに対して決定性のある時点で、実行ユニットが命令の実行を開始する。プロセッサ内の様々なクロックドメインに対して決定性のあるステートにおける実行では、ＰＳＭＩなどのテクニックを用い、処理コードのデバッグまたは最適化を、より信頼性のある方法で行ってよい。ある実施形態では、複数のプロセッサコア、あるいはグラフィックス、メモリ制御、または様々な周辺制御（例えば、システムオンチップ（ＳｏＣ）プロセッサなど）の、複数の異なる機能を有するプロセッサで、ここに記載するテクニックを使用してよい。ここに開示したテクニックは、複数の機能が別個の集積回路に分散された、コンピュータシステムで使用されてよい。
【００１４】
例えば、図２は、本発明の少なくとも１つの実施形態が使用され得る、フロントサイドバス（ＦＳＢ）コンピュータシステムを示す。プロセッサ２０１、２０５、２１０、または２１５は、プロセッサコア２２３、２２７、２３３、２３７、２４３、２４７、２５３、２５７の１つの内の、あるいはそれに関連した、ローカルレベル１（Ｌ１）キャッシュメモリ２２０、２２５、２３０、２３５、２４０、２４５、２５０、２５５のいずれかからの情報にアクセス可能である。さらに、プロセッサ２０１、２０５、２１０、および２１５のいずれもが、共有レベル２（Ｌ２）キャッシュ２０３、２０７、２１３、２１７、の１つ、あるいはチップセット２６５を介したシステムメモリ２６０からの情報にアクセス可能である。図２の１つ以上のプロセッサは、ロジック２１９を含むあるいはロジック２１９に関連し、複数のクロックドメインにおける処理の決定性を促進してよい。
【００１５】
図２に示すＦＳＢコンピュータシステムに加え、ポイントツーポイント（Ｐ２Ｐ）インターコネクトシステムおよびリングインターコネクトシステムを含む、その他のシステム構成を、本発明の様々な実施形態と共に使用してよい。例えば、図３のポイントツーポイントシステムは、複数のプロセッサを有してよく、その内２つのプロセッサ３７０および３８０のみが例として示されている。プロセッサ３７０および３８０は、メモリ３２および３４に接続するローカルメモリコントローラハブ（ＭＣＨ）３７２および３８２をそれぞれ含んでよい。プロセッサ３７０および３８０は、ポイントツーポイントインターフェース回路３７８および３８８を使用し、ポイントツーポイントインターフェース３５０を介してデータを交換してよい。プロセッサ３７０および３８０は、ポイントツーポイントインターフェース回路３７６、３９４、３８６、および３９８を使用し、個別のポイントツーポイントインターフェース３５２および３５４を介して、チップセット３９０とデータをそれぞれ交換してよい。また、チップセット３９０も、高性能グラフィックスインターフェース３３９を介して、高性能グラフィックスインターフェース回路３３８とデータを交換してよい。本発明の実施形態は、あらゆる数のプロセッサコアを有する、あらゆるプロセッサ内にあってよく、あるいは、図３の各ポイントツーポイントバスエージェント内にあってよい。ある実施形態では、あらゆるプロセッサコアが、ローカルキャッシュメモリ（図示なし）を含む、あるいはローカルキャッシュメモリに関連してよい。さらに、共有キャッシュ（図示なし）は、両方のプロセッサとは異なるいずれかのプロセッサに含まれ、ポイントツーポイントインターコネクトを介してプロセッサに接続されてよい。これにより、プロセッサが低電力モードの場合、共有キャッシュに、プロセッサのいずれかまたは両方のローカルキャッシュの情報を格納してよい。システム内のプロセッサまたは他の集積回路内の実行決定性を促進するべく、図３の１つ以上のプロセッサまたはコアは、ロジックを含む、あるいはロジックと関連してよい。ここに記載したように、ロジックは、１つ以上のカウンタのようなストレージを含む、あるいはストレージと関連してよい。またロジックは、ＰＳＭＩなどのテクニックを用いてプログラムデバッグまたは最適化を促進するべく、決定性を有するステートに実行リソースを置く、ＵＣＰＧを含んでよい。
【００１６】
図４は、本発明の少なくとも１つの実施形態を実行する、ロジックのブロック図である。ある実施形態では、ロジック４１９は、複数の異なる（あるいは同じ）周波数および／または位相を有する、複数のクロックパルス４０３を受信し、異なるクロックパルスの共通ステートに対応した周波数および位相を有する、共通クロックパルスを生成する、ＵＣＰＧ４０１を含む。例えば、ある実施形態では、カウンタは、非０値が０になるまでカウントダウンを行う。ＵＣＰＧは、複数の異なるテクニックを実装し、それぞれに位相または周波数が異なってよい複数のクロック信号に対して、決定性のある信号を生成してよい。また、ある実施形態では、ロジック４１９は、ＵＣＰＧからの出力信号４０７に対応する周波数で、初期値から閾値までカウントを行う、カウンタ４０５を含んでよい。例えば、ある実施形態では、カウンタが非０値に設定され、例えば「０」の閾値までカウントダウンされる。一方で、別の実施形態では、カウンタが例えば「０」の値に初期化され、閾値までカウントアップされる。ある実施形態では、カウンタ４０５は、複数のカウンタであってよく、それぞれに関連し合って、あるいは独立して、１つ以上の実行リソースを、少なくとも２つの異なるクロックドメインに対して決定性を有するステートに置いてよい。
【００１７】
カウンタが閾値に到達した場合、少なくとも１つの実行ユニット４１０の停止状態をインタラプトして、少なくとも１つの実行ユニットをＵＣＰＧクロックパルスに対して決定性を有するステートとする。これにより、ＵＣＰＧクロックパルスが示すクロックに対し、実行ユニットが決定性を有するステートとなるようにする。ロジック４１９あるいはＰＳＭＩなどのデバッグまたは最適化テクニックの使用は、複数のクロックドメインを有するプロセッサで実行されるプログラムの開発およびデバッグに有用である。
【００１８】
図５は、実施形態が使用されるプロセッサまたはシステムの構成に関わらず、本発明の少なくとも１つの実施形態の実行に使用され得る、動作の系統線図である。動作５０１では、カウンタが初期ステートに初期化される。ある実施例では、初期ステートは０以上の値を示す。動作５０５では、対応する実行ユニットまたは複数の実行ユニットが停止する。動作５１０では、ユニバーサルクロックパルス発生器（ＵＣＰＧ）が、ＵＣＰＧクロックパルスのエッジに同期してカウンタをデクリメントさせる。ある実施形態では、ＵＣＰＧクロックパルスは、カウンタ値をインクリメントさせる。動作５１５では、カウンタが閾値に到達すると、対応する実行ユニットまたは複数の実行ユニットがアクティベートされ、動作５２０のＵＣＰＧクロックパルスが示すクロックに対して決定性を有する方法で命令を実行する。実行ユニットが、ＵＣＰＧクロックパルスと同期したプロセッサ内の様々なクロックに対して決定性を有するステートにある、ＰＳＭＩなどのデバッグまたは最適化のテクニックは、複数のクロックドメインを有するプロセッサで実行される、ソフトウェアプログラムの開発およびデバッグに使用されてよい。
【００１９】
少なくとも１つの実施形態の１つ以上の側面は、プロセッサ内の様々なロジックを表す、機械で読み取り可能な媒体に記録された代表的なデータで実施されてよい。データは機械で読み取られると、ここに記載されたテクニックを実行させるべく機械にロジックを組み立てさせる。このようなデータは、「ＩＰコア」と呼ばれ、有体の機械で読み取り可能な媒体（「テープ」）に記録してよく、実際にロジックやプロセッサを製造する製造機器にロードすべく、様々な消費者または製造施設に供給してよい。
【００２０】
ここでは、マイクロアキテクチャのメモリ領域におけるアクセスを管理する方法と装置について記載した。上記の記載は、例示を目的としており、発明を制限するものではないと理解されるべきである。上記の記載を読み、理解した当業者には、数多くの他の実施形態が明白になるであろう。このため、発明の範囲は、添付の請求項とともに、それらが当然有する等価物の全範囲を参照して決定されるべきである。
【図１】
2010020752.tif 000003
【図２】
2010020752.tif 000004
【図３】
2010020752.tif 000005
【図４】
2010020752.tif 000006
【図５】
2010020752.tif 000007
【手続補正書】
【提出日】平成21年4月10日(2009.4.10)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の異なる周波数および位相を有する複数の異なるクロック信号に共通したクロックパルスを生成する、ユニバーサルクロックパルス発生器（ＵＣＰＧ）と、
前記ＵＣＰＧのクロックパルスに比例した周波数で、初期値から閾値までをカウントするカウンタと、
前記カウンタが前記閾値に到達した結果、停止ステートからアクティベートされる、少なくとも１つの実行ユニットと、
を備える装置。
【請求項２】
前記少なくとも１つの実行ユニットは、前記カウンタを初期ステートへリセットする、請求項１に記載の装置。
【請求項３】
前記初期値は非０値であり、前記閾値は０値である、請求項１に記載の装置。
【請求項４】
前記ＵＣＰＧのクロックパルスの周波数は、前記カウンタのカウントの変化の前記周波数に等しい、請求項１に記載の装置。
【請求項５】
命令デコーダと、命令スケジューラと、命令リタイアメントユニットと、を更に備える、請求項１に記載の装置。
【請求項６】
ソフトウェアプログラムを含むメモリと、
少なくとも１つの実行ユニットと、複数の機能に対応した複数のクロックドメインと、を有し、前記ソフトウェアプログラムを実行するプロセッサと、
前記少なくとも１つの実行ユニットにおいて、前記複数のクロックドメインに対する決定性を促進するロジックと、を備え、
前記ロジックは、ユニバーサルクロックパルスに対応したレートで、初期ステートから閾値までをカウントするカウンタを含み、
前記ユニバーサルクロックパルスは、前記複数のクロックドメインからの複数のクロックに同期する、システム。
【請求項７】
前記ソフトウェアプログラムのデバッグを支援する、周期的システム管理割り込み（ＰＳＭＩ）ロジックを更に備え、
前記ＰＳＭＩロジックは、前記決定性を促進するロジックに従って、前記複数のクロックドメインと同期する、請求項６に記載のシステム。
【請求項８】
前記プロセッサは、ＣＰＵ、グラフィックスエンジン、メモリ制御ユニット、および少なくとも１つの周辺制御ユニットを含む、請求項７に記載のシステム。
【請求項９】
複数のプロセッサを更に備える、請求項８に記載のシステム。
【請求項１０】
前記複数のプロセッサのうち、少なくとも２つは、複数のクロックドメインを有する、請求項９に記載のシステム。
【請求項１１】
カウンタを初期値に初期化する段階と、
前記カウンタに結合した実行ユニットを停止する段階と
ユニバーサルクロックパルス発生器（ＵＣＰＧ）信号の周波数に比例したレートで前記カウンタの値を変化させる段階と、
前記カウンタが閾値に到達した後、前記実行ユニットをアクティベートする段階と、
を備える方法。
【請求項１２】
前記実行ユニットは、前記カウンタを初期値にさせる、請求項１１に記載の方法。
【請求項１３】
前記ＵＣＰＧ信号は、複数のクロックドメインからの複数のクロック信号を表す、請求項１１に記載の方法。
【請求項１４】
前記実行ユニットは、前記カウンタの値が前記閾値に到達した後、インタラプト信号を生成することによりアクティベートされる、請求項１１に記載の方法。
【請求項１５】
前記カウンタの初期値が非０値であり、前記閾値が０値である、請求項１１に記載の方法。
【請求項１６】
コンピュータに、
実行ユニット内で複数の命令を実行する段階と、
複数のクロックドメインからの複数のクロックが表す、ユニバーサルクロックパルスに比例したレートで閾値までカウントして、前記閾値に到達した場合に、実行を停止ステートからアクティベートさせるカウンタを含む決定性ロジックが、前記複数のクロックドメインからの前記複数のクロックに関連して前記実行を既知のステートにした結果生じた決定性を有する時点で、複数の命令で周期的システム管理割り込み（ＰＭＳＩ）信号を生成する段階と、
を実行させるプログラム。
【請求項１７】
前記初期値が０以上の値であり、前記閾値が０である、請求項１６に記載のプログラム。
【請求項１８】
前記初期値が０であり、前記閾値が０以上の値である、請求項１６に記載のプログラム。
【請求項１９】
前記実行ユニットがシステムオンチップ（ＳｏＣ）プロセッサに関連した、請求項１６に記載のプログラム。
【請求項２０】
前記ＳｏＣプロセッサは、少なくとも１つのＣＰＵ、グラフィックスエンジン、メモリコントローラ、および少なくとも１つの周辺コントローラを含む、請求項１９に記載のプログラム。
【外国語明細書】
2010020752.tif 000008
2010020752.tif 000009
2010020752.tif 000010
2010020752.tif 000011
2010020752.tif 000012
2010020752.tif 000013
2010020752.tif 000014
2010020752.tif 000015
2010020752.tif 000016
2010020752.tif 000017
2010020752.tif 000018
2010020752.tif 000019
2010020752.tif 000020
2010020752.tif 000021