(57)【要約】ロックインジケータを有するマルチスレッドプロセッサを含むシステムと方法が開示される。実施形態において、システムは、マルチスレッドプロセッサ内の共有リソースのロック状態を示す手段を含む。システムは共有リソースに関連する例外処理命令を処理する前に、共有リソースを自動的にロックする手段を含む。システムは、共有リソースをアンロックする手段をさらに含む。【選択図】１
2011505647.tif 000002
【特許請求の範囲】
【請求項１】
マルチスレッドプロセッサのスレッドに関連する変換索引バッファ（ＴＬＢ）ミス事象を受信することと；
ＴＬＢロックインジケータをチェックすることと；
前記ＴＬＢロックインジケータがアンロックされた時、前記スレッドによるＴＬＢに関連する例外ハンドへのアクセスを許可することと；
前記ＴＬＢロックインジケータがロックされた時、前記スレッドをスリープ状態にすることと；
を備える方法。
【請求項２】
アクセスが許可された時に、前記ＴＬＢロックインジケータをロックすることをさらに備える、請求項１の方法。
【請求項３】
ロック状態からアンロック状態に前記ＴＬＢロックインジケータを移行することをさらに備える、請求項の方法。
【請求項４】
前記ＴＬＢロックインジケータが前記ロック状態から前記アンロック状態に移行した後に、前記ＴＬＢミス事象を引き起こすパケットの実行を再現することをさらに備える、請求項３の方法。
【請求項５】
前記ＴＬＢがソフトウェア管理ＴＬＢを備える、請求項１の方法。
【請求項６】
前記ＴＬＢミス事象に関する結果を計算することと；
前記結果を前記ＴＬＢにプログラムすることと；
前記ＴＬＢロックインジケータをアンロック状態に設定することと；
前記例外ハンドラから戻ることと；
をさらに備える、請求項１の方法。
【請求項７】
前記例外ハンドラから戻り次第、前記ＴＬＢロックインジケータを自動的にアンロックすることをさらに備える、請求項６の方法。
【請求項８】
前記例外ハンドラが前記ＴＬＢロックインジケータを設定する、請求項１の方法。
【請求項９】
マルチスレッドプロセッサのスレッドに関連する変換索引バッファ（ＴＬＢ）ミス事象を受信することと、なお、前記スレッドは共有変換索引バッファ（ＴＬＢ）へのアクセスを有する；
ＴＬＢロックインジケータを読み取ること、および前記ＴＬＢロックインジケータがロック状態の時、前記スレッドをスリープ状態にすることと；
命令を受け取り次第、前記スレッドを起こすことと；
を備える方法。
【請求項１０】
前記ＴＬＢは、第１の時間の間、第１のスレッドのために確保され、前記ＴＬＢは、第２の時間の間、第２のスレッドのために確保され、第３のスレッドは、前記第１の時間帯と前記第２の時間の間スリープ状態にされる、請求項１０の方法。
【請求項１１】
前記第３のスレッドは、第３の時間の間、覚醒される、請求項１０の方法。
【請求項１２】
前記第３のスレッドを覚醒した後、前記第３のスレッドがスリープ状態にされる前に、前記第３のスレッドによって実行される命令パケットの実行を再現することをさらに備える、請求項１０の方法。
【請求項１３】
マルチスレッドプロセッサの複数の処理スレッドによって共有された変換索引バッファ（ＴＬＢ）と；
前記マルチスレッドプロセッサのレジスタ内のＴＬＢロックビットと；
特定のスレッドに関連するＴＬＢミス事象が検出された時に、ロック構成を有する前記ＴＬＢロックビットに応答して、前記複数の処理スレッドの前記特定のスレッドをスリープ状態にするように構成された制御論理回路と；
を備えるシステム。
【請求項１４】
前記ＴＬＢミス事象は前記特定のスレッドの実行パケットに関連し、前記制御論理回路は、前記実行パケットを記憶するように、および、前記特定のスレッドがスリープ状態におかれる時に前記特定のスレッドに関連したプログラムカウンタを増やさないように、さらに構成される、請求項１３のシステム。
【請求項１５】
前記特定のスレッドは、前記ＴＬＢミス事象に応答して、例外ハンドラを起動することなく、スリープ状態にされる、請求項１３のシステム。
【請求項１６】
前記制御論理回路は、前記ＴＬＢロックビットを前記ロック構成に設定するため、および、アンロック構成を有する前記ＴＬＢロックビットに応答して前記ＴＬＢミス事象に関連する例外ハンドラを同時に開始するようにさらに構成される、請求項１３のシステム。
【請求項１７】
前記ＴＬＢロックビットは、前記制御論理回路によってロックされ、前記例外ハンドラの命令によってアンロックされるように構成される、請求項１６のシステム。
【請求項１８】
前記制御論理回路は、別のＴＬＢミス事象に応答して、前記複数の処理スレッドの別のスレッドもスリープ状態におかれる時に、前記特定のスレッドを覚醒するための順序を示すデータを記憶するように構成される、請求項１３のシステム。
【請求項１９】
前記特定のスレッドを覚醒するために、前記順序を示す前記データは、先入れ先出し方式（ＦＩＦＯ）に記憶される、請求項１８のシステム。
【請求項２０】
プロセッサ実行命令を有するコンピュータ読み取り可能媒体であって、プロセッサ実行命令はプロセッサに：
マルチスレッドプロセッサの複数のスレッドによって共有されたリソースに関連する例外を処理させ；
前記例外が処理された後に、前記リソースのためにハードウェアロックをアンロックさせるコンピュータ読み取り可能媒体。
【請求項２１】
前記共有リソースは、前記マルチスレッドプロセッサのコアメモリリソースである、請求項２０のコンピュータ読み取り可能媒体。
【請求項２２】
前記コアメモリリソースは変換索引バッファ（ＴＬＢ）であり、前記例外はＴＬＢミスによって引き起こされる、請求項２１のコンピュータ読み取り可能媒体。
【請求項２３】
前記ハードウェアロックは、グローバルレジスタの少なくとも１つのビットを含み、前記ハードウェアロックは、前記例外が処理される前に、前記プロセッサの制御論理回路によってロックされるように構成される、請求項２０のコンピュータ読み取り可能媒体。
【請求項２４】
マルチスレッドプロセッサの共有リソースのロック状態を示す手段と；
前記共有リソースに関連する例外処理命令を処理する前に、前記共有リソースを自動的にロックする手段と；
前記共有リソースをアンロックする手段と；
を備えるシステム。
【請求項２５】
前記共有リソースがロックされている間に起こる例外事象に応答して、スレッドの状態を保存する手段と；
前記状態が保存された後に、前記スレッドをスリープ状態にする手段と；
をさらに備える、請求項２４のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に、ロックインジケータを有するマルチスレッドプロセッサに関する。
【背景技術】
【０００２】
技術の進歩は、より小さく、より強力なパーソナルコンピュータをもたらした。例えば、今日、小型で軽く、ユーザーによって簡単に持ち運びができる携帯無線電話機、携帯情報端末（ＰＤＡｓ）、ページング装置などの無線処理デバイスを含む様々な携帯用パーソナルコンピュータデバイスが存在する。すなわち、携帯電話やインターネットプロトコル（ＩＰ）電話などの携帯無線電話機は、音声とデータパケットを無線ネットワーク上で通信することができる。さらに、そういった無線電話の多くは、そこに組み込まれる別の型のデバイスを含む。例えば、無線電話は、デジタルスチルカメラ、デジタルビデオカメラ、デジタルレコーダ、オーディオファイルプレーヤーも含む。同様に、上記無線電話は、インターネットにアクセスするために使用されるウェブブラウザアプリケーションなどのソフトウェアアプリケーションを含む実行命令を処理する。そのようなものとして、これらの無線電話は、重要な計算能力を含む。
【０００３】
さらなる計算能力は、電子デバイスにおいて複数のスレッドを同時に処理することができるマルチスレッドプロセッサによって可能になる。電力消費と製造コストを削減するために、マルチスレッドプロセッサは典型的に設計され、例えばキャッシュ、バス、または他のリソース（resource）などの処理リソースが複数のスレッドによって共有される。しかし、ある動作は、単一のスレッドによって共有リソースで確実に遂行されるだけである。例えば、メモリアドレスが２つの異なるスレッドによって同時に書き込まれる時に予測不可能な結果が起こりえる。ソフトウェアロックは、共有リソースがアンロック（unlock）状態で特定のプロセスによって使用可能であるか、ロックされており使用不可能であるかを示すメモリ内の数値、例えばセマフォ（semaphore）など、を提供することによって、共有リソースを管理するために使用される。
【０００４】
ソフトウェアロックは、ソフトウェア命令によって典型的に設定および解放される、そして、例えば、ソフトウェアロックが、出来の悪い、または悪意のあるソフトウェアによってアクセスされる時など信頼できないかもしれない。加えて、共有リソースがロックされたままの間、プロセッサは、プログラム実行を続ける前に、ロックの数値をチェックするために典型的に繰り返し命令を実行する。同様に、ソフトウェアロックを使用する各動作は、ソフトウェアロックを記憶しているメモリの一部にアクセス、比較および／または数値を書き込むことにより、処理の遅延を持ち込む。
【発明の概要】
【０００５】
特定の実施形態において、マルチスレッドプロセッサの複数の処理スレッドによって共有される変換索引バッファ（translation lookaside buffer;ＴＬＢ）を含むシステムが開示される。システムは、マルチプロセッサのレジスタ内にＴＬＢロックビットを含む。システムは、特定のスレッドに関連するＴＬＢミス事象（miss event）が検出された時に、ロック構成を有するＴＬＢロックビットに応答して、複数の処理スレッドの特定スレッドをスリープ状態にするように構成された制御論理回路も含む。
【０００６】
別の特定の実施形態において、マルチスレッドプロセッサ内の共有リソースのロック状態を示す手段を含むシステムが開示される。システムは、共有リソースに関連する例外処理命令を処理する前に、共有リソースを自動的にロックする手段を含む。システムは、共有リソースをアンロックする手段をさらに含む。
【０００７】
別の実施形態において、マルチスレッドプロセッサのスレッドと関連する変換索引バッファ（ＴＬＢ）ミス事象を受信することを含む方法が開示される。方法は、ＴＬＢロックインジケータをチェックすることも含む。ＴＬＢロックインジケータがアンロックされると、方法は、制御論理回路を使用してＴＬＢに関連する例外ハンドラ（exception handler）へのスレッドによるアクセスを許可する。ＴＬＢロックインジケータがロックされると、方法は、制御論理回路を使用して、スレッドをスリープ状態にする。
【０００８】
別の実施形態において、マルチスレッドプロセッサのスレッドと関連する変換索引バッファ（ＴＬＢ）ミス事象を受信することを含む方法が開示される。スレッドは共有変換索引バッファ（ＴＬＢ）へのアクセスを有する。方法はＴＬＢロック表示を読み取ることを含む。そして、ＴＬＢロックインジケータがロックされると、制御論理回路を使用してスレッドをスリープ状態にする。方法は、命令を受け取り次第、スレッドを起こすことも含む。
【０００９】
別の実施形態において、プロセッサ実行命令を有するコンピュータ読み取り可能媒体が開示される。プロセッサ実行命令は、マルチスレッドプロセッサの複数のスレッドによって共有されたリソースに関連する例外をプロセッサに処理させる。プロセッサ実行命令は、例外が処理された後に、リソースのためのハードウェアロックをプロセッサにアンロックさせる。
【００１０】
開示された実施形態によって提供される１つの顕著な利点は、共有リソースをロックするためのレジスタビットを設定するために論理回路を使用することによる、共有リソースのより迅速なロックとアンロックの動作である。開示された実施形態によって提供される別の顕著な利点は、共有リソースが利用可能になるまでスレッドをスリープ状態にすることによる、共有リソースへのアクセスを待つスレッドの削減された動的電力消費である。
【００１１】
本開示の別の様態、利点、特徴は、下記項目：図面の簡単な説明、発明の詳細な説明、請求項、を含む本明細書全体の総覧の後に明確になるであろう。
【図面の簡単な説明】
【００１２】
【図１】図１は、ロックインジケータを有するマルチスレッドプロセッサを含むシステムの実施形態のブロック図である。
【図２】図２は、共有リソースのためにハードウェアロックを含む処理システムの実施形態のブロック図の例である。
【図３】図３は、マルチスレッドプロセッサでロックインジケータを使用する方法の実施形態のフローチャートである。
【図４】図４は、ロックインジケータを有するマルチスレッドプロセッサでの動作の実施形態を示す一般図である
【図５】図５は、共有リソースのためにロックインジケータを有するマルチスレッドプロセッサを含む実例となる通信デバイスのブロック図である。
【発明の詳細な説明】
【００１３】
図１を参照すると、ロックインジケータを有するマルチスレッドプロセッサを含むシステムの特定の実例となる実施形態が示され、全般として１００で示される。システム１００は、非コア（non-core）メモリ１０４に結合されたマルチスレッドプロセッサコア１０２を含む。マルチスレッドプロセッサコア１０２は、変換索引バッファ（ＴＬＢ）１０８に結合され、ＴＬＢロックインジケータ１１０に結合された制御論理回路１０６を含む。第１のスレッド１１２は、ＴＬＢ １０８と制御論理回路１０６に、作動的に結合される。第２のスレッド１１４も、ＴＬＢ １０８と制御論理回路１０６に、作動的に結合される。２つの代表スレッド１１２と１１４がシステム１００に示されるが、マルチスレッドプロセッサコア１０２は任意の数やスレッドを含みうることは理解されるであろう。
【００１４】
特定の実施形態において、ＴＬＢ １０８は、仮想アドレスから物理アドレスに変換するために、例えばスレッド１１２や１１４などの複数のスレッドから要求を受信するように構成されたマルチスレッドプロセッサコアの共有メモリリソースである。ＴＬＢ １０８は、ＴＬＢ １０８に記憶される仮想アドレスに一致する物理アドレスを戻すように構成される。ＴＬＢ １０８は、要求された仮想アドレスがＴＬＢ １０８で見つからなかった時に、制御論理回路１０６にＴＬＢミス事象を信号で送るように構成される。
【００１５】
特定の実施形態において、制御論理回路１０６は、ＴＬＢ １０８から１つ以上のＴＬＢミス事象を受信し、ＴＬＢロックインジケータ１１０の状態を決定するように構成される。ＴＬＢロックインジケータ１１０がロック構成の時、制御論理回路１０６は、現行処理状態を保存するように、要求中のスレッド１１２または１１４に命令し、スレッドをスリープ状態にするように構成される。さもなければ、ＴＬＢロックインジケータ１１０がアンロック構成の時、制御論理回路１０６は、ＴＬＢロックインジケータ１１０をロックし、ＴＬＢミス事象を処理するために例外ハンドラを起動するように要求スレッド１１２または１１４に同時に命令するように構成される。ＴＬＢロックインジケータ１１０をロックすることで、別のスレッドがＴＬＢ １０８を変更することを防ぐ、そして要求中のスレッドは、複数のスレッドによってＴＬＢ １０８の入口に同時に起こるデータ書き込み動作から生じる予測不可能な動きの可能性なしに、ＴＬＢ １０８において安全に内容を変更できる。
【００１６】
特定の実施形態において、ＴＬＢロックインジケータ１１０は、マルチスレッドプロセッサコア１０２のグローバル状態レジスタの１つ以上のビットを含む。ＴＬＢロックインジケータ１１０は、制御論理回路１０６からの制御信号によく応答する。ＴＬＢロックインジケータ１１０は、少なくとも１つのスレッド１１２または１１４が、ＴＬＢ １０８で書き込み動作を行っていること、および他のスレッドによるＴＬＢへのアクセスが制限されていることを示すためにロック構成を有する。例えば、他のスレッドは、ＴＬＢロックインジケータ１１０がロック構成の時、ＴＬＢ １０８への読み取り専用アクセス、アクセス不可、または縮小レベルのアクセスに制限される。加えて、ＴＬＢロックインジケータ１１０は、スレッド１１２と１１４によるＴＬＢ １０８への通常アクセスを可能にするアンロック構成を有する。
【００１７】
特定の実施形態において、第１のスレッド１１２は、スリープモード論理回路１２０と例外ハンドラ１２２を含む。スリープモード論理回路１２０は、例えば、制御論理回路１０６から受信されたスリープ命令に応答してプログラムコンピュータ（ＰＣ）（示されていない）の数値を保存することで、第１のスレッド１１２の現行状態を保存するように構成される。さらに、スリープモード論理回路１２０は、状態レジスタ（示されていない）で１つ以上の数値、例えば、ユーザーモード状態ビット、例外状態ビット、ＴＬＢミス事象を引き起こした最後に実行された命令パケットに関するデータなど、を記憶するように構成される。
【００１８】
一般的に、第１のスレッド１１２の例外ハンドラ１２２は、スレッド１１２と１１４によって共有されたリソースに関連する例外を処理するため、および、例外が処理された後に、リソースのためにハードウェアロックをアンロックするために、命令を取り込み、実行する。特定の実施形態において、例外ハンドラ１２２は、ＴＬＢミス事象に応じるために、論理とプロセッサ実行命令を含む。例えば、例外ハンドラ１２２を起動するために、第１スレッド１１２が制御論理回路１０６から命令を受信した後に、例外ハンドラ１２２は、第１のスレッド１１２の１つ以上の状態ビットを設定し、第１のスレッド１１２に監視モードに入らせ、非コアメモリ１０４からの命令などのＴＬＢ行方不明例外処理命令をロードさせる。例外ハンドラ１２２は、ＴＬＢミス事象からの回復を可能にする命令を取り込み、実行するために、実施可能である。例えば、例外ハンドラ１２２は、ページテーブルなどの非コアメモリリソースに配置されるようにＴＬＢミス事象をトリガする要求された仮想アドレスを引き起こす命令を処理する。例外ハンドラ１２２は、仮想アドレスの変換をＴＬＢ １０８に書き込む、またはプログラムする。例外ハンドラ１２２は、例外処理モードから出て行くために、戻り命令（return instruction）を実行するためにも構成される。戻り命令は、スレッド１１２を非例外状態に戻すために実施可能であり、制御論理回路１０６にＴＬＢロックインジケータ１１０をアンロックさせる。あるいは、戻り命令は、制御論理回路１０６にアンロック要求を送信せずに例外状態から戻ると、ＴＬＢロックインジケータ１１０をアンロックする。
【００１９】
同様に、特定の実施形態において、第２のスレッド１１４は、スリープモード論理回路１３０と例外ハンドラ１３２を含む。実例となる実施形態において、スリープモード論理回路１３０と例外ハンドラ１３２を含む第２のスレッド１１４は、第１のスレッド１１２のスリープモード論理回路１２０と例外ハンドラ１２２を含む第１のスレッド１１２、に其々実質的に類似して動作する。
【００２０】
動作中、複数の処理スレッド、例えば代表スレッド１１２と１１４など、は、仮想アドレス変換要求をＴＬＢ １０８に送信する。ＴＬＢミス事象が終わる時、制御論理回路１０６は、例外処理命令がＴＬＢミス事象に応答する間、ＴＬＢ １０８でデータを変更することから他のスレッドを排除ために、ＴＬＢロックインジケータ１１０を使用してＴＬＢ １０８をロックする。例えば、ＴＬＢロックインジケータ１１０は、ＴＬＢ １０８が他のスレッドによるアクセスからロックされたことを示すために、制御論理回路１０６によって設定されるグローバル制御レジスタで１つ以上のビットを含む。
【００２１】
実例となる実施形態において、制御論理回路１０６はソフトウェアプロセスの命令を実行することによってではなく、組み込みハードウェアプロセスを通してＴＬＢロックインジケータ１１０を設定するように構成され、それによってＴＬＢミス事象へのより早い応答、プロセッサ性能の向上、悪意のある、または出来の悪いソフトウェアへの脆弱性の縮小を可能にする。さらなるパフォーマンスの利点は、ＴＬＢロックインジケータ１１０として、マルチスレッドプロセッサコア１０２内のグローバルレジスタビットを使用することによって可能になる。例えば、制御論理回路１０６は、ＴＬＢロックインジケータ１１０の状態を直接的に設定、クリア、決定するように構成され、ＴＬＢミス事象への応答は、例えばプロセッサ非コアメモリ１０４においてセマフォなどのロックインジケータ数値を記憶または検索するよりも、著しく迅速になる。
【００２２】
ＴＬＢミス事象によりＴＬＢ １０８がロックされる時、制御論理回路１０６は、ＴＬＢミス事象に応答する例外ハンドラ１１２や１３２を起動するために、ＴＬＢミス事象を生成するスレッド１１２または１１４に命令する。制御論理回路１０６が、ＴＬＢミス事象が処理されたことを示す戻り命令や他の信号を例外ハンドラ１２２や１３２から受信すると、制御論理回路１０６はＴＬＢロックインジケータ１１０をアンロックする。
【００２３】
特定の実施形態において、ＴＬＢ １０８は、例外処理のために、第１のスレッド１１２によってロックされ、第２のスレッド１１４もＴＬＢミス事象を起こす仮想アドレス変換を要求する。第２のスレッド１１４に関連するＴＬＢミス事象を知らされ、制御論理回路１０６は、ＴＬＢロックインジケータ１１０がロック構成状態であると決定し、第２のスレッド１１４にスリープ状態になるように命令する。例えば、制御論理回路１０６は、第２のスレッド１１４に現行状態を保存し、ＴＬＢミス事象を引き起こした最後に実行されたパケットのアドレスを記憶し、第２のスレッド１１４が命令を処理する間、待ち状態（wait state）に入るように命令する。ＴＬＢロックインジケータ１１０がロック状態のままでいる間、追加スレッドはＴＬＢミス事象に直面し、制御論理回路１０６によってスリープ状態にされる。
【００２４】
制御論理回路１０６は、例えば、例外ハンドラ１２２によって実行される戻り命令を通して、第１のスレッド１１２に関連するＴＬＢミス事象が処理されたと知らされる時、制御論理回路１０６はＴＬＢロックインジケータ１１０をアンロックし、１つ以上の処理スレッドが、ＴＬＢ１０６がロックされたことにより、スリープ状態であるか否かを決定する。もしそうならば、制御論理回路１０６は、処理を再開するために、１つ以上のスリープ状態のスレッド、例えば第１のスレッド１１４など、を覚醒（awaken）する。
【００２５】
例えば、第２のスレッド１１４は覚醒される、そして、第２のスレッド１１４がスリープ状態に置かれるより先に直ちに実行され、ＴＬＢミス事象を起こす命令パケットを再現する。再現された命令パケットは、ＴＬＢ １０８で仮想アドレスの変換のために要求を繰り返す。第１のスレッド１１２によって行われた例外処理の結果として、第２のスレッドによって要求された仮想アドレス変換は、ＴＬＢ １０８に潜在的に記憶される。そうでないならば、第２のＴＬＢミス事象が起き、それに応答して、制御論理回路１０６はＴＬＢロックインジケータ１１０をロック構成に再設定し、第２のスレッド１１４の例外ハンドラ１３２に、第２のＴＬＢミス事象を処理するための命令を処理し始めるように命令する。
【００２６】
図２を参照すると、共有リソースのためのハードウェアロックを含む処理システムの特定の実例となる実施形態が示され、全般として２００で表される。処理システム２００は、バスインターフェース２０８を通して命令キャッシュ２１０に結合されるメモリ２０２を含む。処理システム２００は、バスインターフェース２０８を通してメモリ２０２に結合されるデータキャッシュ２１２も含む。命令キャッシュ２１０は、バス２１１を通してシーケンサ２１４に結合される。特定の例において、シーケンサ２１４は、割込みレジスタ（示されていない）から検索された汎用割り込み（general interrupts）２１６も受信する。特定の実施形態において、命令キャッシュ２１０は、バス２１１に結合され、処理システム２００の特定スレッドに関連付けられた複数の現行命令レジスタを通してシーケンサ２１４に結合される。特定の実施形態において、処理システム２００は、６つのスレッドを含むインタリーブ・マルチスレッド・プロセッサ（interleaved multi-threaded processor）である。
【００２７】
特定の実施形態において、バス２１１は６４ビットバスであり、シーケンサ２１４は、各３２ビットの長さを有する複数の命令を含む命令パケットを通してメモリ２０２から命令を取り戻すように構成される。バス２１１は、第１の命令実行ユニット２１８、第２の命令実行ユニット２２０、第３の命令実行ユニット２２２、第４の命令実行ユニット２２４に結合される。各命令実行ユニット２１８、２２０、２２２、２２４は、第２のバス２２８を通して汎用レジスタファイル２２６に結合される。汎用レジスタファイル２２６は、第３のバス２３０を通してシーケンサ２１４とデータキャッシュ２１２にも結合される。
【００２８】
シーケンサ２１４は、スレッド固有監視制御レジスタ２３２とグローバル制御レジスタ２３４へのアクセスを有する制御論理回路２７０を含み、または、結合される。制御論理回路２７０は、変換索引バッファ（ＴＬＢ）２７２にさらに結合される。ＴＬＢ ２７２は、仮想から物理アドレスへの変換を提供するため、および、要求されたアドレスがＴＬＢ ２７２に記憶されていない時に、ＴＬＢミス事象を制御論理回路２７０に信号で送るために、１つ以上の実行ユニット２１８、２２０、２２２、２２４へアクセス可能である。
【００２９】
特定の実施形態において、各スレッド固有監視制御レジスタ２３２は、スリープフィールド２８０、例外フィールド２８２、再開アドレスフィールド２８４などの複数のビットフィールドを含む。スリープフィールド２８０は、関連スレッドがアクティブ状態とスリープ状態との間で移行するか否かを示す１つ以上の数値やビット設定を記憶する。例外フィールド２８２は、一般の例外やＴＬＢミス例外などの特定の種類の例外を示すために１つ以上の数値を記憶する。再開アドレスフィールド２８４は、スレッドが覚醒する時、実行を再開するために、命令パケットや実行パケットを配置するためのアドレスやポインタを記憶する。例えば、スレッドが、ＴＬＢ ２７２がロックされている間に起きるＴＬＢミス事象に応答してスリープ状態に置かれた時、スレッドは、ＴＬＢミス事象にアドレスフィールド２８４を再開させる命令のアドレスを記憶する。特定の実施形態において、スリープフィールド２８０の数値は、スリープインジケータから覚醒インジケータに移行するとき、関連スレッドは、再開アドレスフィールド２８４に記憶された数値によって示された命令パケットや実行パケットを再ロードし、実行を開始する。
【００３０】
特定の実施形態において、グローバル制御レジスタ２３４は、スレッドウェーク（thread wake）先入れ先出し方式（ＦＩＦＯ）２９０などのスリープ状態のスレッドを覚醒するための順序を示すために、1つ以上のフィールドを含む。スレッドウェークＦＩＦＯ ２９０は、ＴＬＢロック２９２がロック構成の間に起こるＴＬＢミス事象に応答してスリープ状態にされているシステム２００の１つ以上の処理スレッドを識別するために、１つ以上のインジケータを含む。スレッドウェークＦＩＦＯ ２９０は、制御論理回路２７０が、一致した順序でスリープ状態のスレッドを検索するために実施可能であるように、スレッドがスリープ状態に置かれる順番にスレッドインジケータを記憶するように構成される。ＴＬＢロック２９２は、単一のビット、ＴＬＢ ２７２がロック状態かアンロック状態かを示す数値、を含む。
【００３１】
特定の実施形態において、制御論理回路２７０は、ＴＬＢ ２７２で１つ以上のミス事象の表示 （indication）を受信するように構成される。制御論理回路２７０は、ＴＬＢロック２９２の状態を最初にチェックすることで、ＴＬＢミス事象に応答するように構成される。ＴＬＢロック２９２が、ＴＬＢ ２７２はアンロック状態であると示す時、制御論理回路２７０は、ＴＬＢミス事象が起こったことを示し、スレッドに例外ハンドラを起動させるように命令を出すために、ＴＬＢロック値２９２をロック状態に移行し、対応するスレッド固有監視制御レジスタ２３２の例外フィールド２８２に数値を書き込む。
【００３２】
制御論理回路２７０は、例えば、ＴＬＢミス事象を引き起こす仮想アドレス変換がＴＬＢ ２７２にプログラムされる時など、ＴＬＢミス事象が処理された時に、例外ハンドラから命令や信号を受信するように、さらに構成される。それに応答して、制御論理回路２７０は、１つ以上のスレッドが覚醒されるべきか否かを決定するために、ＴＬＢロック２９２をアンロックし、スレッドウェークＦＩＦＯ ２９０をチェックするように構成される。もしそうならば、制御論理回路２７０は、例えば、スレッドの優劣、他のメカニズム、またはそれらの組み合わせに基づいたスレッドウェークＦＩＦＯ ２９０の記憶装置の順序、処理システム２００の処理の順序、または、１つ以上のアルゴリズム通して決定された順序で、１つ以上のスレッドを覚醒するように構成される。
【００３３】
制御論理回路２７０は、ＴＬＢロック２９２がロック状態の間、例えばＴＬＢ ２７２で少なくとも１つの項目を変更することを含む別のスレッドによる例外処理の間など、に起きるＴＬＢミス事象に応答するように構成される。制御論理回路２７０は、最近のＴＬＢミス事象に関連するスレッドに、最近のＴＬＢミス事象と関連のある例外ハンドラを開始することなく、最近の命令パケットや実行パケットのアドレスを再開アドレスフィールド２８４に記憶させ、スリープ状態にするために、スレッド固有監視制御レジスタ２３２に書き込むように構成される。制御論理２７０は、現行スレッドがスリープに置かれている時、現行スレッドに関連するプログラムカウンタを増やさないようにも構成される。制御論理回路２７０は、スレッドウェークＦＩＦＯ ２９０で現行スレッドの識別子を記憶するように、さらに構成される。
【００３４】
図３を参照すると、マルチスレッドプロセッサでロックインジケータを使用する方法の特定の実例となる実施形態が示され、全般として３００で表される。図３の実例となる実施形態において、ロックインジケータは、複数の処理スレッド間で共有された変換索引バッファ（ＴＬＢ）に関連するレジスタビットなどのハードウェアロックである。実例となる実施形態において、方法３００は、図１の制御論理回路１０６や図２の制御論理回路２７０などのマルチスレッドプロセッサの制御論理回路によって実行される。
【００３５】
３０２で、マルチスレッドプロセッサのスレッドに関連するＴＬＢミス事象が受信される。特定の実施形態において、ＴＬＢミス事象は、ソフトウェア管理ＴＬＢで発生する。３０４へ続き、ＴＬＢロックインジケータがチェックされる。ＴＬＢロックインジケータは、図２のＴＬＢロック２９２などのグローバル制御レジスタの１つ以上のレジスタビットを含む。３０６に進み、ＴＬＢロックインジケータがロックされたかアンロックされたかについての決定がなされる。
【００３６】
ＴＬＢロックインジケータがロックされていると決定されると、処理は、スレッドが、制御論理回路を使用してスリープ状態におかれる３０８に進む。３１０に進み、特定の実施形態において、ＴＬＢロックを引き起こす例外ハンドラの状態が決定される。３１２に進み、例えば、例外ハンドラが動作を完了していないなどの、例外が処理されていないと決定されると、処理は３１０に戻る。例外が処理されると決定されると、特定の実施形態において、処理は、ＴＬＢロックインジケータがロック状態からアンロック状態に変換され、３１４に続く。３１６に進み、ロック状態からアンロック状態へのＴＬＢロックインジケータ変換の後、ＴＬＢミス事象を引き起こすパケットの実行が再現される。
【００３７】
３０６にもどり、ＴＬＢロックインジケータがアンロックされると決定されると、処理は、ＴＬＢに関連する例外ハンドラへのスレッドによるアクセスが制御論理回路を使用して許可され、３１８に進む。３２０に進み、ＴＬＢロックインジケータは、アクセスが許可された時、制御論理回路を使用してロックされる。実例となる実施形態において、例外ハンドラはＴＬＢロックインジケータをアンロック状態に設定する。
【００３８】
３２２に移動すると、ＴＬＢミス事象に関する結果が計算される。例えば、ＴＬＢに位置しないアドレスのための仮想アドレス変換はページテーブルにアクセスすることで決定される。３２４に続き、特定の実施形態において、ページテーブルからの結果はＴＬＢにプログラムされる。
【００３９】
３２６に進み、ＴＬＢロックインジケータはアンロックに設定される。ＴＬＢロックインジケータをアンロックすることと同時に、３２８で、処理は、例外ハンドラから戻る。特定の実施形態において、ＴＬＢロックインジケータは、例外ハンドラから戻り次第、自動的にアンロックされる。
【００４０】
図４を参照すると、共有リソースのためにロックインジケータを有するマルチスレッドプロセッサで動作の特定の実例となる実施形態が示され、全般として４００で表される。図４００は、代表スレッド（スレッド０、スレッド１、スレッド２、スレッド３）などの複数のスレッドに関連する動作を示す。制御ユニットに関連する動作と、ＴＬＢロックインジケータに関連した動作も示される。動作間の時間的関係は、時間０−時間５とラベル付けされた６つの代表的な連続した期間によって識別される。特定の実施形態において、制御ユニットは、図１の制御論理回路１０８や図２の制御論理回路２７０などの制御論理回路を含む。
【００４１】
時間０において、ＴＬＢアクセスはスレッド０のために確保され、スレッド０はＴＬＢミス事象４０２に出会う。ＴＬＢミス事象４０２に応答して、信号４０３が制御ユニットに送られる。信号４０３の受信をうけて、制御ユニットはチェックロック動作４０４を処理する。チェックロック動作４０４は、ＴＬＢロックインジケータがロック設定かアンロック設定かを決定する。図４の実例となる実施形態において、チェックロック動作４０４は、ＴＬＢロックインジケータがアンロック状態４０６であるか否かを決定する。
【００４２】
ＴＬＢロックインジケータがアンロック状態４０６であると決定することに応答して、制御ユニットは、ＴＬＢロックインジケータをロック状態４１０にするために、セットロック動作４０８を行う。さらに、制御ユニットは信号４０９をスレッド０に送る。信号４０９に応答して、スレッド０はＴＬＢミス例外ハンドラ４１２を起動する。
【００４３】
時間１の間、ＴＬＢアクセスは、スレッド１のために確保される。スレッド０がＴＬＢミス例外ハンドラ４１２を実行している間、スレッド１は、同様にＴＬＢミス事象４１４を起こすＴＬＢアクセス試行を行う。ＴＬＢミス事象４１４は、信号４１５を通して制御ユニットに伝達される。制御ユニットは、ＴＬＢロックインジケータがロック状態４１８にあるか決定するチェックロック動作４１６を行う。ＴＬＢロックインジケータがロック状態４１８のため、制御ユニットは、４２０で、スレッド１をスリープ状態にする信号４１９を送る。信号４１９に応答して、スレッド１は、例えば、プログラムカウンタ値、スレッドコンテキスト値、他の状態情報やそれらの任意の組み合わせを記憶することによってなど、スレッドの現行状態を保存し、活性低下状態に入る。
【００４４】
時間２の間、ＴＬＢアクセスはスレッド２のために確保される。スレッド０がＴＬＢミス例外ハンドラ４１２を実行し続ける間、及び、スレッド１がスリープ状態の間、スレッド２はＴＬＢアクセス動作４２２を行う。同様に、時間３の間、ＴＬＢアクセスは、ＴＬＢアクセス動作４２４を行うスレッド３のために確保される。
【００４５】
時間４の間、スレッド０のＴＬＢミス例外ハンドラ４１２は、処理を終了する。例えば、ＴＬＢミス例外ハンドラ４１２はページテーブルにアクセスし、ＴＬＢミス事象４０２を引き起こす仮想アドレス変換を決定し、ＴＬＢに変換をプログラムし、戻り命令を実行する。信号４２５は、ＴＬＢミス例外ハンドラ４１２が完了したことを制御ユニットに知らせる。ＴＬＢミス例外ハンドラ４１２の完了に応答して、制御ユニットは、ＴＬＢロックインジケータをアンロック構成４２８に移行するために、設定ロック動作４２６を行う。
【００４６】
制御論理回路は、ＴＬＢロックインジケータが、いつロック状態４１８でなくなったかを決定するためにチェックロック動作を行う。例えば、チェックロック動作は、制御ユニットによって決定された指定された事象に応答して、または、信号４２５などの例外ハンドラの完了を示す信号に自動的に応答して、指定された間隔で、制御ユニットによって周期的に従事させられる。セットロック動作４２６に応答して、または、チェックロック動作４３０に応答して、若しくは、それらの任意の組み合わせに応答して、ＴＬＢロックインジケータはアンロック状態４２８にあることが決定される。
【００４７】
制御ユニットは、４３２で、覚醒するために次のスレッドを決定する。図４に示されるように、スレッド１は、ＴＬＢロックインジケータがロック状態４１８にある間、ＴＬＢミスに応答して、スリープ状態に置かれた第１のスレッドである。従って、時間５で、制御ユニットは、スレッド１がウェーク動作を行い、命令パケット動作の実行を再現すること（４３４）に応答して、スレッド１を覚醒するために信号４３３を送る。
【００４８】
特定の実施形態において、パケット動作のウェークや再現４３４の実行は、スレッド１がスリープ状態４２０に置かれる前に保存されたスレッド１の前回の状態を再ロードし、ＴＬＢミス事象４１４を生成するパケットの実行を再現する。特定の実施形態において、要求された仮想アドレスは、ＴＬＢミス例外ハンドラ４１２によってＴＬＢにロードされる。さもなければ、別のＴＬＢミス事象は、命令パケットの実行４３４を再現することに起因し、制御ユニットは、ＴＬＢミス４０１に限っては、ある意味で実質的に類似して応答する。
【００４９】
図５は、共有リソースのためのロックインジケータを有するマルチスレッドプロセッサを含む代表的な無線通信デバイス５００のブロック図である。無線通信デバイス５００は、ＴＬＢ ５６４などの共有リソースを含むマルチスレッドデジタル信号プロセッサ（ＤＳＰ）５１０と、ＴＬＢ ５６４に結合され、ＴＬＢロックインジケータ５６８にさらに結合された制御論理回路５６６を含む。制御論理回路５６６は、図１−４に開示されているように、システムと方法に従って動作するように構成される。
【００５０】
図５は、デジタル信号プロセッサ５１０とディスプレイ５２８に結合されたディスプレイコントローラ５２６も示す。さらに、入力デバイス５３０はデジタル信号プロセッサ５１０に結合される。そのうえ、メモリ５３２はデジタル信号プロセッサ５１０に結合される。符号器/復号器（ＣＯＤＥＣ）５３４も、デジタル信号プロセッサ５１０に結合される。スピーカ５３６とマイクロフォン５３８は、ＣＯＤＥＣ ５３４に結合される。
【００５１】
図５は、無線コントローラ５４０がデジタル信号プロセッサ５１０や無線アンテナ５４２に結合されうることも示す。特定の実施形態において、電源５４４はオンチップシステム５２２に結合される。さらに、特定の実施形態において、図５で示されるように、ディスプレイ５２８、入力デバイス５３０、スピーカ５３６、マイクロフォン５３８、無線アンテナ５４２、電源５４４はオンチップ５２２の外にある。しかしながら、其々がオンチップシステム５２２のコンポーネントに結合される。
【００５２】
制御論理回路５６６は、ＴＬＢロックインジケータ５６８に関連してＴＬＢ ５６４にアクセスするための要求を制御することに必ずしも限定される必要がないことは理解されるべきである。その代わりとして、制御論理回路５６６は、ディスプレイコントローラ５２６、ＣＯＤＥＣ ５３４、無線コントローラ５４０、ＤＳＰ ５１０に結合された、若しくはＤＳＰ ５１０の任意の別のコンポーネント、またはそれらの任意の組み合わせなどの１つ以上の別の共有リソースへのアクセスを制御するために実施可能である。
【００５３】
開示されたシステムと方法に関連して、マルチスレッドプロセッサで共有リソースのロック状態を示すためのメカニズムの実例、例えば、図１のＴＬＢロックインジケータ１１０や図２のＴＬＢロック２９２など、が提供される。共有リソースは、図１の制御論理回路１０６や図２の制御論理回路２７０などの制御回路構成の動作によって、共有リソースに関連する例外処理命令を処理する前に自動的にロックされる。共有リソースは、また、図１の制御論理回路１０６や図２の制御論理回路２７０などの制御回路構成の動作、または、共有リソースをアンロックするための例外ハンドラの１つ以上の命令などの実行命令の動作によってアンロックはされる。
【００５４】
当業者は、本明細書に開示された実施形態と関連して記述されている様々な実例となる論理ブロック、構成、モジュール、回路、アルゴリズムステップ（algorithm steps）が電子ハードウェア、コンピュータソフトウェアまたは両方の組み合わせとして実施されることを、さらに認識するであろう。このハードウェアとソフトウェアの互換性を明確に示すために、様々な実例となるコンポーネント、ブロック、構成、モジュール、回路、ステップをそれらの機能性という観点から一般的に上に記述されている。ハードウェア、ソフトウェア、またはハードウェアとソフトウェアの組み合わせとして上記機能性が実施されるか否かは、特定のアプリケーションとシステム全般に課された設計制約とに依存する。当業者は各特定アプリケーションについて様々な方法で上記機能性を実施することができるが、このような実施の決定は本発明の範囲からの逸脱の原因になるとして解釈されるべきではない。
【００５５】
本明細書に開示された実施形態に関して示される方法またはアルゴリズムのステップは、直接的にハードウェア、プロセッサによって実行されるソフトウェアモジュール、または二つの組み合わせに組み込まれる。ソフトウェアモジュールは、ランダムアクセスメモリ（RAM）、フラッシュメモリ、読み取り専用メモリ（ROM）、消去可能PROM（EPROM）、電気的消去可能PROM（EEPROM）、レジスタ、ハードディスク、取外し可能ディスク、CD-ROM、または本技術分野において周知の記憶媒体の他の形態に存する。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるプロセッサに結合される。代替において、記憶媒体はプロセッサに一体化される。プロセッサと記憶媒体はASICに存する。ASICは、計算デバイスまたはユーザー端末に存する。代替において、プロセッサと記憶媒体は、個別コンポーネントとして、計算デバイスまたはユーザー端末に存する。
【００５６】
開示された実施形態の以上の記述は、当業者に本発明の実施及び使用を可能にするために提供される。これらの実施形態への様々な変更は当業者には容易に明らかであり、本明細書において定義された包括的な原理は、本発明の精神または範囲を逸脱することなく他の実施形態に適用可能である。従って、本発明は本明細書に記載の実施形態に制限されるものではなく、本明細書で開示される原理及び新規な特徴と合致する最も広い範囲が与えられるべきである。
【図１】
2011505647.tif 000003
【図２】
2011505647.tif 000004
【図３】
2011505647.tif 000005
【図４】
2011505647.tif 000006
【図５】
2011505647.tif 000007
【国際調査報告】
2011505647.tif 000008
2011505647.tif 000009
2011505647.tif 000010