JP2014197408A - ロックインジケータを有するマルチスレッドプロセッサ - Google Patents
ロックインジケータを有するマルチスレッドプロセッサ Download PDFInfo
- Publication number
- JP2014197408A JP2014197408A JP2014116111A JP2014116111A JP2014197408A JP 2014197408 A JP2014197408 A JP 2014197408A JP 2014116111 A JP2014116111 A JP 2014116111A JP 2014116111 A JP2014116111 A JP 2014116111A JP 2014197408 A JP2014197408 A JP 2014197408A
- Authority
- JP
- Japan
- Prior art keywords
- tlb
- thread
- lock
- lock indicator
- processor
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30083—Power or thermal control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/52—Indexing scheme relating to G06F9/52
- G06F2209/522—Manager
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
【課題】共有リソースの迅速なロックとアンロック、及び、動作電力消費の削減を可能とするロックインジケータを有するマルチスレッドプロセッサを提供する。【解決手段】システム100は、TLB(共有変換索引バッファ)108と制御論理回路106とTLBロックインジケータ110とを備えたマルチスレッドプロセッサコア102を含み、第1のスレッドのTLBミス事象信号を受信することと、TLBロックインジケータをチェックして、アンロック状態のときに第1スレッドの例外ハンドラへのアクセスを許可することと、TLBロックインジケータがロック状態のときには第1スレッドをスリープ状態にし、その後TLBロックインジケータをアンロック状態に移行することと、アンロック状態に移行することに応答して第1スレッドを覚醒してTLBミス事象を引き起こしたパケットの実行を再現することと、を備える。【選択図】図1
Description
本開示は、一般に、ロックインジケータを有するマルチスレッドプロセッサに関する。
技術の進歩は、より小さく、より強力なパーソナルコンピュータをもたらした。例えば、今日、小型で軽く、ユーザーによって簡単に持ち運びができる携帯無線電話機、携帯情報端末(PDAs)、ページング装置などの無線処理デバイスを含む様々な携帯用パーソナルコンピュータデバイスが存在する。すなわち、携帯電話やインターネットプロトコル(IP)電話などの携帯無線電話機は、音声とデータパケットを無線ネットワーク上で通信することができる。さらに、そういった無線電話の多くは、そこに組み込まれる別の型のデバイスを含む。例えば、無線電話は、デジタルスチルカメラ、デジタルビデオカメラ、デジタルレコーダ、オーディオファイルプレーヤーも含む。同様に、上記無線電話は、インターネットにアクセスするために使用されるウェブブラウザアプリケーションなどのソフトウェアアプリケーションを含む実行命令を処理する。そのようなものとして、これらの無線電話は、重要な計算能力を含む。
さらなる計算能力は、電子デバイスにおいて複数のスレッドを同時に処理することができるマルチスレッドプロセッサによって可能になる。電力消費と製造コストを削減するために、マルチスレッドプロセッサは典型的に設計され、例えばキャッシュ、バス、または他のリソース(resource)などの処理リソースが複数のスレッドによって共有される。しかし、ある動作は、単一のスレッドによって共有リソースで確実に遂行されるだけである。例えば、メモリアドレスが2つの異なるスレッドによって同時に書き込まれる時に予測不可能な結果が起こりえる。ソフトウェアロックは、共有リソースがアンロック(unlock)状態で特定のプロセスによって使用可能であるか、ロックされており使用不可能であるかを示すメモリ内の数値、例えばセマフォ(semaphore)など、を提供することによって、共有リソースを管理するために使用される。
ソフトウェアロックは、ソフトウェア命令によって典型的に設定および解放される、そして、例えば、ソフトウェアロックが、出来の悪い、または悪意のあるソフトウェアによってアクセスされる時など信頼できないかもしれない。加えて、共有リソースがロックされたままの間、プロセッサは、プログラム実行を続ける前に、ロックの数値をチェックするために典型的に繰り返し命令を実行する。同様に、ソフトウェアロックを使用する各動作は、ソフトウェアロックを記憶しているメモリの一部にアクセス、比較および/または数値を書き込むことにより、処理の遅延を持ち込む。
特定の実施形態において、マルチスレッドプロセッサの複数の処理スレッドによって共有される変換索引バッファ(translation lookaside buffer;TLB)を含むシステムが開示される。システムは、マルチプロセッサのレジスタ内にTLBロックビットを含む。システムは、特定のスレッドに関連するTLBミス事象(miss event)が検出された時に、ロック構成を有するTLBロックビットに応答して、複数の処理スレッドの特定スレッドをスリープ状態にするように構成された制御論理回路も含む。
別の特定の実施形態において、マルチスレッドプロセッサ内の共有リソースのロック状態を示す手段を含むシステムが開示される。システムは、共有リソースに関連する例外処理命令を処理する前に、共有リソースを自動的にロックする手段を含む。システムは、共有リソースをアンロックする手段をさらに含む。
別の実施形態において、マルチスレッドプロセッサのスレッドと関連する変換索引バッファ(TLB)ミス事象を受信することを含む方法が開示される。方法は、TLBロックインジケータをチェックすることも含む。TLBロックインジケータがアンロックされると、方法は、制御論理回路を使用してTLBに関連する例外ハンドラ(exception handler)へのスレッドによるアクセスを許可する。TLBロックインジケータがロックされると、方法は、制御論理回路を使用して、スレッドをスリープ状態にする。
別の実施形態において、マルチスレッドプロセッサのスレッドと関連する変換索引バッファ(TLB)ミス事象を受信することを含む方法が開示される。スレッドは共有変換索引バッファ(TLB)へのアクセスを有する。方法はTLBロック表示を読み取ることを含む。そして、TLBロックインジケータがロックされると、制御論理回路を使用してスレッドをスリープ状態にする。方法は、命令を受け取り次第、スレッドを起こすことも含む。
別の実施形態において、プロセッサ実行命令を有するコンピュータ読み取り可能媒体が開示される。プロセッサ実行命令は、マルチスレッドプロセッサの複数のスレッドによって共有されたリソースに関連する例外をプロセッサに処理させる。プロセッサ実行命令は、例外が処理された後に、リソースのためのハードウェアロックをプロセッサにアンロックさせる。
開示された実施形態によって提供される1つの顕著な利点は、共有リソースをロックするためのレジスタビットを設定するために論理回路を使用することによる、共有リソースのより迅速なロックとアンロックの動作である。開示された実施形態によって提供される別の顕著な利点は、共有リソースが利用可能になるまでスレッドをスリープ状態にすることによる、共有リソースへのアクセスを待つスレッドの削減された動的電力消費である。
本開示の別の様態、利点、特徴は、下記項目:図面の簡単な説明、発明の詳細な説明、請求項、を含む本明細書全体の総覧の後に明確になるであろう。
図1を参照すると、ロックインジケータを有するマルチスレッドプロセッサを含むシステムの特定の実例となる実施形態が示され、全般として100で示される。システム100は、非コア(non-core)メモリ104に結合されたマルチスレッドプロセッサコア102を含む。マルチスレッドプロセッサコア102は、変換索引バッファ(TLB)108に結合され、TLBロックインジケータ110に結合された制御論理回路106を含む。第1のスレッド112は、TLB 108と制御論理回路106に、作動的に結合される。第2のスレッド114も、TLB 108と制御論理回路106に、作動的に結合される。2つの代表スレッド112と114がシステム100に示されるが、マルチスレッドプロセッサコア102は任意の数のスレッドを含みうることは理解されるであろう。
特定の実施形態において、TLB 108は、仮想アドレスから物理アドレスに変換するために、例えばスレッド112や114などの複数のスレッドから要求を受信するように構成されたマルチスレッドプロセッサコアの共有メモリリソースである。TLB 108は、TLB 108に記憶される仮想アドレスに一致する物理アドレスを戻すように構成される。TLB 108は、要求された仮想アドレスがTLB 108で見つからなかった時に、制御論理回路106にTLBミス事象を信号で送るように構成される。
特定の実施形態において、制御論理回路106は、TLB 108から1つ以上のTLBミス事象を受信し、TLBロックインジケータ110の状態を決定するように構成される。TLBロックインジケータ110がロック構成の時、制御論理回路106は、現行処理状態を保存するように、要求中のスレッド112または114に命令し、スレッドをスリープ状態にするように構成される。さもなければ、TLBロックインジケータ110がアンロック構成の時、制御論理回路106は、TLBロックインジケータ110をロックし、TLBミス事象を処理するために例外ハンドラを起動するように要求スレッド112または114に同時に命令するように構成される。TLBロックインジケータ110をロックすることで、別のスレッドがTLB 108を変更することを防ぐ、そして要求中のスレッドは、複数のスレッドによってTLB 108の入口に同時に起こるデータ書き込み動作から生じる予測不可能な動きの可能性なしに、TLB 108において安全に内容を変更できる。
特定の実施形態において、TLBロックインジケータ110は、マルチスレッドプロセッサコア102のグローバル状態レジスタの1以上のビットを含む。TLBロックインジケータ110は、制御論理回路106からの制御信号に応答する。TLBロックインジケータ110は、少なくとも1つのスレッド112または114が、TLB 108で書き込み動作を行っていること、および他のスレッドによるTLBへのアクセスが制限されていることを示すためにロック構成を有する。例えば、他のスレッドは、TLBロックインジケータ110がロック構成の時、TLB 108への読み取り専用アクセス、アクセス不可、または縮小レベルのアクセスに制限される。加えて、TLBロックインジケータ110は、スレッド112と114によるTLB 108への通常アクセスを可能にするアンロック構成を有する。
特定の実施形態において、第1のスレッド112は、スリープモード論理回路120と例外ハンドラ122を含む。スリープモード論理回路120は、例えば、制御論理回路106から受信されたスリープ命令に応答してプログラムカウンタ(PC)(示されていない)の数値を保存することで、第1のスレッド112の現行状態を保存するように構成される。さらに、スリープモード論理回路120は、状態レジスタ(示されていない)で1つ以上の数値、例えば、ユーザーモード状態ビット、例外状態ビット、TLBミス事象を引き起こした最後に実行された命令パケットに関するデータなど、を記憶するように構成される。
一般的に、第1のスレッド112の例外ハンドラ122は、スレッド112と114によって共有されたリソースに関連する例外を処理するため、および、例外が処理された後に、リソースのためにハードウェアロックをアンロックするために、命令を取り込み、実行する。特定の実施形態において、例外ハンドラ122は、TLBミス事象に応じるために、論理とプロセッサ実行命令を含む。例えば、例外ハンドラ122を起動するために、第1スレッド112が制御論理回路106から命令を受信した後に、例外ハンドラ122は、第1のスレッド112の1つ以上の状態ビットを設定し、第1のスレッド112に監視モード(supervisor mode)に入らせ、非コアメモリ104からの命令などのTLBミス例外処理命令をロードさせる。例外ハンドラ122は、TLBミス事象からの回復を可能にする命令を取り込み、実行するために、実施可能である。例えば、例外ハンドラ122は、ページテーブルなどの非コアメモリリソースに配置されるようにTLBミス事象をトリガする要求された仮想アドレスを引き起こす命令を処理する。例外ハンドラ122は、仮想アドレスの変換をTLB 108に書き込む、またはプログラムする。例外ハンドラ122は、例外処理モードから出て行くために、戻り命令(return instruction)を実行するためにも構成される。戻り命令は、スレッド112を非例外状態に戻すために実施可能であり、制御論理回路106にTLBロックインジケータ110をアンロックさせる。あるいは、戻り命令は、制御論理回路106にアンロック要求を送信せずに例外状態から戻ると、TLBロックインジケータ110をアンロックする。
同様に、特定の実施形態において、第2のスレッド114は、スリープモード論理回路130と例外ハンドラ132を含む。実例となる実施形態において、スリープモード論理回路130と例外ハンドラ132を含む第2のスレッド114は、第1のスレッド112のスリープモード論理回路120と例外ハンドラ122を含む第1のスレッド112、に其々実質的に類似して動作する。
動作中、複数の処理スレッド、例えば代表スレッド112と114など、は、仮想アドレス変換要求をTLB 108に送信する。TLBミス事象が生じると、制御論理回路106は、例外処理命令がTLBミス事象に応答する間、TLB 108でデータを変更することから他のスレッドを排除するために、TLBロックインジケータ110を使用してTLB 108をロックする。例えば、TLBロックインジケータ110は、TLB 108が他のスレッドによるアクセスからロックされたことを示すために、制御論理回路106によって設定されるグローバル制御レジスタで1つ以上のビットを含む。
実例となる実施形態において、制御論理回路106はソフトウェアプロセスの命令を実行することによってではなく、組み込みハードウェアプロセスを通してTLBロックインジケータ110を設定するように構成され、それによってTLBミス事象へのより早い応答、プロセッサ性能の向上、悪意のある、または出来の悪いソフトウェアへの脆弱性の縮小を可能にする。さらなるパフォーマンスの利点は、TLBロックインジケータ110として、マルチスレッドプロセッサコア102内のグローバルレジスタビットを使用することによって可能になる。例えば、制御論理回路106は、TLBロックインジケータ110の状態を直接的に設定、クリア、決定するように構成され、TLBミス事象への応答は、例えばプロセッサ非コアメモリ104においてセマフォなどのロックインジケータ数値を記憶または検索するよりも、著しく迅速になる。
TLBミス事象によりTLB 108がロックされる時、制御論理回路106は、TLBミス事象に応答する例外ハンドラ112や132を起動するために、TLBミス事象を生成するスレッド112または114に命令する。制御論理回路106が、TLBミス事象が処理されたことを示す戻り命令や他の信号を例外ハンドラ122や132から受信すると、制御論理回路106はTLBロックインジケータ110をアンロックする。
特定の実施形態において、TLB 108が第1のスレッド112による例外処理のためにロックされている間、第2のスレッド114もTLBミス事象を起こす仮想アドレス変換を要求する。第2のスレッド114に関連するTLBミス事象を知らされ、制御論理回路106は、TLBロックインジケータ110がロック構成状態であると決定し、第2のスレッド114にスリープ状態になるように命令する。例えば、制御論理回路106は、第2のスレッド114に現行状態を保存し、TLBミス事象を引き起こした最後に実行されたパケットのアドレスを記憶し、第2のスレッド114がその間に命令を処理しない待ち状態(wait state)に入るように命令する。TLBロックインジケータ110がロック状態のままでいる間、追加スレッドはTLBミス事象に直面し、制御論理回路106によってスリープ状態にされる。
制御論理回路106は、例えば、例外ハンドラ122によって実行される戻り命令(return instruction)を通して、第1のスレッド112に関連するTLBミス事象が処理されたと知らされる時、制御論理回路106はTLBロックインジケータ110をアンロックし、1つ以上の処理スレッドが、TLB108がロックされたことにより、スリープ状態であるか否かを決定する。もしそうならば、制御論理回路106は、処理を再開するために、1つ以上のスリープ状態のスレッド、例えば第2のスレッド114など、を覚醒(awaken)する。
例えば、第2のスレッド114は覚醒される、そして、第2のスレッド114がスリープ状態に置かれるより直前に実行され、TLBミス事象を起こした命令パケットを再現する。再現された命令パケットは、TLB 108で仮想アドレスの変換のために要求を繰り返す。第1のスレッド112によって行われた例外処理の結果として、第2のスレッドによって要求された仮想アドレス変換は、TLB 108に潜在的に記憶される。そうでないならば、第2のTLBミス事象が起き、それに応答して、制御論理回路106はTLBロックインジケータ110をロック構成に再設定し、第2のスレッド114の例外ハンドラ132に、第2のTLBミス事象を処理するための命令を処理し始めるように命令する。
図2を参照すると、共有リソースのためのハードウェアロックを含む処理システムの特定の実例となる実施形態が示され、全般として200で表される。処理システム200は、バスインターフェース208を通して命令キャッシュ210に結合されるメモリ202を含む。処理システム200は、バスインターフェース208を通してメモリ202に結合されるデータキャッシュ212も含む。命令キャッシュ210は、バス211を通してシーケンサ214に結合される。特定の例において、シーケンサ214は、割込みレジスタ(示されていない)から検索された汎用割り込み(general interrupts)216も受信する。特定の実施形態において、命令キャッシュ210は、バス211に結合され、処理システム200の特定スレッドに関連付けられた複数の現行命令レジスタを通してシーケンサ214に結合される。特定の実施形態において、処理システム200は、6つのスレッドを含むインタリーブ・マルチスレッド・プロセッサ(interleaved multi-threaded processor)である。
特定の実施形態において、バス211は64ビットバスであり、シーケンサ214は、各32ビットの長さを有する複数の命令を含む命令パケットを通してメモリ202から命令を取り戻すように構成される。バス211は、第1の命令実行ユニット218、第2の命令実行ユニット220、第3の命令実行ユニット222、第4の命令実行ユニット224に結合される。各命令実行ユニット218、220、222、224は、第2のバス228を通して汎用レジスタファイル226に結合される。汎用レジスタファイル226は、第3のバス230を通してシーケンサ214とデータキャッシュ212にも結合される。
シーケンサ214は、スレッド固有監視制御レジスタ232とグローバル制御レジスタ234へのアクセスを有する制御論理回路270を含み、または、結合される。制御論理回路270は、変換索引バッファ(TLB)272にさらに結合される。TLB 272は、仮想から物理アドレスへの変換を提供するため、および、要求されたアドレスがTLB 272に記憶されていない時に、TLBミス事象を制御論理回路270に信号で送るために、1つ以上の実行ユニット218、220、222、224へアクセス可能である。
特定の実施形態において、各スレッド固有監視制御レジスタ232は、スリープフィールド280、例外フィールド282、再開アドレスフィールド284などの複数のビットフィールドを含む。スリープフィールド280は、関連スレッドがアクティブ状態とスリープ状態との間で移行するか否かを示す1つ以上の数値やビット設定を記憶する。例外フィールド282は、一般の例外やTLBミス例外などの特定の種類の例外を示すために1つ以上の数値を記憶する。再開アドレスフィールド284は、スレッドが覚醒する時、実行を再開するために、命令パケットや実行パケットを配置するためのアドレスやポインタを記憶する。例えば、スレッドが、TLB 272がロックされている間に起きるTLBミス事象に応答してスリープ状態に置かれた時、スレッドは、TLBミス事象にアドレスフィールド284を再開させる命令のアドレスを記憶する。特定の実施形態において、スリープフィールド280の数値は、スリープインジケータから覚醒インジケータに移行するとき、関連スレッドは、再開アドレスフィールド284に記憶された数値によって示された命令パケットや実行パケットを再ロードし、実行を開始する。
特定の実施形態において、グローバル制御レジスタ234は、スレッドウェーク(thread wake)先入れ先出しバッファ(FIFO)290などのスリープ状態のスレッドを覚醒するための順序を示すために、1つ以上のフィールドを含む。スレッドウェークFIFO 290は、TLBロック292がロック構成の間に起こるTLBミス事象に応答してスリープ状態にされているシステム200の1つ以上の処理スレッドを識別するために、1つ以上のインジケータを含む。スレッドウェークFIFO 290は、制御論理回路270が、一致した順序でスリープ状態のスレッドを検索するために実施可能であるように、スレッドがスリープ状態に置かれる順番にスレッドインジケータを記憶するように構成される。TLBロック292は、単一のビット、TLB 272がロック状態かアンロック状態かを示す数値、を含む。
特定の実施形態において、制御論理回路270は、TLB 272で1つ以上のミス事象の表示 (indication)を受信するように構成される。制御論理回路270は、TLBロック292の状態を最初にチェックすることで、TLBミス事象に応答するように構成される。TLBロック292が、TLB 272はアンロック状態であると示す時、制御論理回路270は、TLBミス事象が起こったことを示し、スレッドに例外ハンドラを起動させるように命令を出すために、TLBロック値292をロック状態に移行し、対応するスレッド固有監視制御レジスタ232の例外フィールド282に数値を書き込む。
制御論理回路270は、例えば、TLBミス事象を引き起こす仮想アドレス変換がTLB 272にプログラムされる時など、TLBミス事象が処理された時に、例外ハンドラから命令や信号を受信するように、さらに構成される。それに応答して、制御論理回路270は、1つ以上のスレッドが覚醒されるべきか否かを決定するために、TLBロック292をアンロックし、スレッドウェークFIFO 290をチェックするように構成される。もしそうならば、制御論理回路270は、例えば、スレッドの優劣、他のメカニズム、またはそれらの組み合わせに基づいたスレッドウェークFIFO 290の記憶装置の順序、処理システム200の処理の順序、または、1つ以上のアルゴリズムを通して決定された順序で、1つ以上のスレッドを覚醒するように構成される。
制御論理回路270は、TLBロック292がロック状態の間、例えばTLB 272で少なくとも1つの項目を変更することを含む別のスレッドによる例外処理の間など、に起きるTLBミス事象に応答するように構成される。制御論理回路270は、最近のTLBミス事象に関連するスレッドに、最近のTLBミス事象と関連のある例外ハンドラを開始することなく、最近の命令パケットや実行パケットのアドレスを再開アドレスフィールド284に記憶させ、スリープ状態にするために、スレッド固有監視制御レジスタ232に書き込むように構成される。制御論理270は、現行スレッドがスリープに置かれている時、現行スレッドに関連するプログラムカウンタを増やさないようにも構成される。制御論理回路270は、スレッドウェークFIFO 290で現行スレッドの識別子を記憶するように、さらに構成される。
図3を参照すると、マルチスレッドプロセッサでロックインジケータを使用する方法の特定の実例となる実施形態が示され、全般として300で表される。図3の実例となる実施形態において、ロックインジケータは、複数の処理スレッド間で共有された変換索引バッファ(TLB)に関連するレジスタビットなどのハードウェアロックである。実例となる実施形態において、方法300は、図1の制御論理回路106や図2の制御論理回路270などのマルチスレッドプロセッサの制御論理回路によって実行される。
302で、マルチスレッドプロセッサのスレッドに関連するTLBミス事象が受信される。特定の実施形態において、TLBミス事象は、ソフトウェア管理TLBで発生する。304へ続き、TLBロックインジケータがチェックされる。TLBロックインジケータは、図2のTLBロック292などのグローバル制御レジスタの1つ以上のレジスタビットを含む。306に進み、TLBロックインジケータがロックされたかアンロックされたかについての決定がなされる。
TLBロックインジケータがロックされていると決定されると、処理は、スレッドが、制御論理回路を使用してスリープ状態におかれる308に進む。310に進み、特定の実施形態において、TLBロックを引き起こす例外ハンドラの状態が決定される。312に進み、例えば、例外ハンドラが動作を完了していないなどの、例外が処理されていないと決定されると、処理は310に戻る。例外が処理されると決定されると、特定の実施形態において、処理は、TLBロックインジケータがロック状態からアンロック状態に変換され、314に続く。316に進み、ロック状態からアンロック状態へのTLBロックインジケータ変換の後、TLBミス事象を引き起こしたパケットの実行が再現される。
306にもどり、TLBロックインジケータがアンロックされると決定されると、処理は、TLBに関連する例外ハンドラへのスレッドによるアクセスが制御論理回路を使用して許可され、318に進む。320に進み、TLBロックインジケータは、アクセスが許可された時、制御論理回路を使用してロックされる。実例となる実施形態において、例外ハンドラはTLBロックインジケータをロック状態に設定する。
322に移動すると、TLBミス事象に関する結果が計算される。例えば、TLBに位置しないアドレスのための仮想アドレス変換はページテーブルにアクセスすることで決定される。324に続き、特定の実施形態において、ページテーブルからの結果はTLBにプログラムされる。
326に進み、TLBロックインジケータはアンロックに設定される。TLBロックインジケータをアンロックすることと同時に、328で、処理は、例外ハンドラから戻る。特定の実施形態において、TLBロックインジケータは、例外ハンドラから戻り次第、自動的にアンロックされる。
図4を参照すると、共有リソースのためにロックインジケータを有するマルチスレッドプロセッサで動作の特定の実例となる実施形態が示され、全般として400で表される。図400は、代表スレッド(スレッド0、スレッド1、スレッド2、スレッド3)などの複数のスレッドに関連する動作を示す。制御ユニットに関連する動作と、TLBロックインジケータに関連した動作も示される。動作間の時間的関係は、時間0−時間5とラベル付けされた6つの代表的な連続した期間によって識別される。特定の実施形態において、制御ユニットは、図1の制御論理回路108や図2の制御論理回路270などの制御論理回路を含む。
時間0において、TLBアクセスはスレッド0のために確保され、スレッド0はTLBミス事象402に出会う。TLBミス事象402に応答して、信号403が制御ユニットに送られる。信号403の受信をうけて、制御ユニットはチェックロック動作404を処理する。チェックロック動作404は、TLBロックインジケータがロック設定かアンロック設定かを決定する。図4の実例となる実施形態において、チェックロック動作404は、TLBロックインジケータがアンロック状態406であるか否かを決定する。
TLBロックインジケータがアンロック状態406であると決定することに応答して、制御ユニットは、TLBロックインジケータをロック状態410にするために、セットロック動作408を行う。さらに、制御ユニットは信号409をスレッド0に送る。信号409に応答して、スレッド0はTLBミス例外ハンドラ412を起動する。
時間1の間、TLBアクセスは、スレッド1のために確保される。スレッド0がTLBミス例外ハンドラ412を実行している間、スレッド1は、同様にTLBミス事象414を起こすTLBアクセス試行を行う。TLBミス事象414は、信号415を通して制御ユニットに伝達される。制御ユニットは、TLBロックインジケータがロック状態418にあるか決定するチェックロック動作416を行う。TLBロックインジケータがロック状態418のため、制御ユニットは、420で、スレッド1をスリープ状態にする信号419を送る。信号419に応答して、スレッド1は、例えば、プログラムカウンタ値、スレッドコンテキスト値、他の状態情報やそれらの任意の組み合わせを記憶することによってなど、スレッドの現行状態を保存し、活性低下状態に入る。
時間2の間、TLBアクセスはスレッド2のために確保される。スレッド0がTLBミス例外ハンドラ412を実行し続ける間、及び、スレッド1がスリープ状態の間、スレッド2はTLBアクセス動作422を行う。同様に、時間3の間、TLBアクセスは、TLBアクセス動作424を行うスレッド3のために確保される。
時間4の間、スレッド0のTLBミス例外ハンドラ412は、処理を終了する。例えば、TLBミス例外ハンドラ412はページテーブルにアクセスし、TLBミス事象402を引き起こす仮想アドレス変換を決定し、TLBに変換をプログラムし、戻り命令を実行する。信号425は、TLBミス例外ハンドラ412が完了したことを制御ユニットに知らせる。TLBミス例外ハンドラ412の完了に応答して、制御ユニットは、TLBロックインジケータをアンロック構成428に移行するために、設定ロック動作426を行う。
制御論理回路は、TLBロックインジケータが、いつロック状態418でなくなったかを決定するためにチェックロック動作を行う。例えば、チェックロック動作は、制御ユニットによって決定された指定された事象に応答して、または、信号425などの例外ハンドラの完了を示す信号に自動的に応答して、指定された間隔で、制御ユニットによって周期的に従事させられる。セットロック動作426に応答して、または、チェックロック動作430に応答して、若しくは、それらの任意の組み合わせに応答して、TLBロックインジケータはアンロック状態428にあることが決定される。
制御ユニットは、432で、覚醒するために次のスレッドを決定する。図4に示されるように、スレッド1は、TLBロックインジケータがロック状態418にある間、TLBミスに応答して、スリープ状態に置かれた第1のスレッドである。従って、時間5で、制御ユニットは、スレッド1を覚醒するために信号433を送り、それに応答してスレッド1がウェーク動作を行い、命令パケット動作の実行を再現する(434)。
特定の実施形態において、パケット動作のウェークや再現434の実行は、スレッド1がスリープ状態420に置かれる前に保存されたスレッド1の前回の状態を再ロードし、TLBミス事象414を生成するパケットの実行を再現する。特定の実施形態において、要求された仮想アドレスは、TLBミス例外ハンドラ412によってTLBにロードされる。さもなければ、別のTLBミス事象は、命令パケットの実行434を再現することに起因し、制御ユニットは、TLBミス401に限っては、ある意味で実質的に類似して応答する。
図5は、共有リソースのためのロックインジケータを有するマルチスレッドプロセッサを含む代表的な無線通信デバイス500のブロック図である。無線通信デバイス500は、TLB 564などの共有リソースを含むマルチスレッドデジタル信号プロセッサ(DSP)510と、TLB 564に結合され、TLBロックインジケータ568にさらに結合された制御論理回路566を含む。制御論理回路566は、図1−4に開示されているように、システムと方法に従って動作するように構成される。
図5は、デジタル信号プロセッサ510とディスプレイ528に結合されたディスプレイコントローラ526も示す。さらに、入力デバイス530はデジタル信号プロセッサ510に結合される。そのうえ、メモリ532はデジタル信号プロセッサ510に結合される。符号器/復号器(CODEC)534も、デジタル信号プロセッサ510に結合される。スピーカ536とマイクロフォン538は、CODEC 534に結合される。
図5は、無線コントローラ540がデジタル信号プロセッサ510や無線アンテナ542に結合されうることも示す。特定の実施形態において、電源544はオンチップシステム522に結合される。さらに、特定の実施形態において、図5で示されるように、ディスプレイ528、入力デバイス530、スピーカ536、マイクロフォン538、無線アンテナ542、電源544はオンチップ522の外にある。しかしながら、其々がオンチップシステム522のコンポーネントに結合される。
制御論理回路566は、TLBロックインジケータ568に関連してTLB 564にアクセスするための要求を制御することに必ずしも限定される必要がないことは理解されるべきである。その代わりとして、制御論理回路566は、ディスプレイコントローラ526、CODEC 534、無線コントローラ540、DSP 510に結合された、若しくはDSP 510の任意の別のコンポーネント、またはそれらの任意の組み合わせなどの1つ以上の別の共有リソースへのアクセスを制御するために実施可能である。
開示されたシステムと方法に関連して、マルチスレッドプロセッサで共有リソースのロック状態を示すためのメカニズムの実例、例えば、図1のTLBロックインジケータ110や図2のTLBロック292など、が提供される。共有リソースは、図1の制御論理回路106や図2の制御論理回路270などの制御回路構成の動作によって、共有リソースに関連する例外処理命令を処理する前に自動的にロックされる。共有リソースは、また、図1の制御論理回路106や図2の制御論理回路270などの制御回路構成の動作、または、共有リソースをアンロックするための例外ハンドラの1つ以上の命令などの実行命令の動作によってアンロックされる。
当業者は、本明細書に開示された実施形態と関連して記述されている様々な実例となる論理ブロック、構成、モジュール、回路、アルゴリズムステップ(algorithm steps)が電子ハードウェア、コンピュータソフトウェアまたは両方の組み合わせとして実施されることを、さらに認識するであろう。このハードウェアとソフトウェアの互換性を明確に示すために、様々な実例となるコンポーネント、ブロック、構成、モジュール、回路、ステップをそれらの機能性という観点から一般的に上に記述されている。ハードウェア、ソフトウェア、またはハードウェアとソフトウェアの組み合わせとして上記機能性が実施されるか否かは、特定のアプリケーションとシステム全般に課された設計制約とに依存する。当業者は各特定アプリケーションについて様々な方法で上記機能性を実施することができるが、このような実施の決定は本発明の範囲からの逸脱の原因になるとして解釈されるべきではない。
本明細書に開示された実施形態に関して示される方法またはアルゴリズムのステップは、直接的にハードウェア、プロセッサによって実行されるソフトウェアモジュール、または二つの組み合わせに組み込まれる。ソフトウェアモジュールは、ランダムアクセスメモリ(RAM)、フラッシュメモリ、読み取り専用メモリ(ROM)、消去可能PROM(EPROM)、電気的消去可能PROM(EEPROM)、レジスタ、ハードディスク、取外し可能ディスク、CD-ROM、または本技術分野において周知の記憶媒体の他の形態に存する。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるプロセッサに結合される。代替において、記憶媒体はプロセッサに一体化される。プロセッサと記憶媒体はASICに存する。ASICは、計算デバイスまたはユーザー端末に存する。代替において、プロセッサと記憶媒体は、個別コンポーネントとして、計算デバイスまたはユーザー端末に存する。
開示された実施形態の以上の記述は、当業者に本発明の実施及び使用を可能にするために提供される。これらの実施形態への様々な変更は当業者には容易に明らかであり、本明細書において定義された包括的な原理は、本発明の精神または範囲を逸脱することなく他の実施形態に適用可能である。従って、本発明は本明細書に記載の実施形態に制限されるものではなく、本明細書で開示される原理及び新規な特徴と合致する最も広い範囲が与えられるべきである。
開示された実施形態の以上の記述は、当業者に本発明の実施及び使用を可能にするために提供される。これらの実施形態への様々な変更は当業者には容易に明らかであり、本明細書において定義された包括的な原理は、本発明の精神または範囲を逸脱することなく他の実施形態に適用可能である。従って、本発明は本明細書に記載の実施形態に制限されるものではなく、本明細書で開示される原理及び新規な特徴と合致する最も広い範囲が与えられるべきである。
以下に、本願の当初の特許請求の範囲に記載された発明を付記する。
[1]マルチスレッドプロセッサのスレッドに関連する変換索引バッファ(TLB)ミス事象を受信することと;
TLBロックインジケータをチェックすることと;
前記TLBロックインジケータがアンロックされている時、前記スレッドによるTLBに関連する例外ハンドラへのアクセスを許可することと;
前記TLBロックインジケータがロックされている時、前記スレッドをスリープ状態にすることと;
を備える方法。
[2]アクセスが許可されている時に、前記TLBロックインジケータをロックすることをさらに備える、[1]の方法。
[3]ロック状態からアンロック状態に前記TLBロックインジケータを移行することをさらに備える、[1]の方法。
[4]前記TLBロックインジケータが前記ロック状態から前記アンロック状態に移行した後に、前記TLBミス事象を引き起こすパケットの実行を再現することをさらに備える、[3]の方法。
[5]前記TLBがソフトウェア管理TLBを備える、[1]の方法。
[6]前記TLBミス事象に関する結果を計算することと;
前記結果を前記TLBにプログラムすることと;
前記TLBロックインジケータをアンロック状態に設定することと;
前記例外ハンドラから戻ることと;
をさらに備える、[1]の方法。
[7]前記例外ハンドラから戻り次第、前記TLBロックインジケータを自動的にアンロックすることをさらに備える、[6]の方法。
[8]前記例外ハンドラが前記TLBロックインジケータを設定する、[1]の方法。
[9]マルチスレッドプロセッサのスレッドに関連する変換索引バッファ(TLB)ミス事象を受信することと、なお、前記スレッドは共有変換索引バッファ(TLB)へのアクセスを有する;
TLBロックインジケータを読み取ること、および前記TLBロックインジケータがロック状態の時、前記スレッドをスリープ状態にすることと;
命令を受け取り次第、前記スレッドを覚醒することと;
を備える方法。
[10]前記TLBは、第1の時間の間、第1のスレッドのために確保され、前記TLBは、第2の時間の間、第2のスレッドのために確保され、第3のスレッドは、前記第1の時間帯と前記第2の時間の間スリープ状態にされる、[10]の方法。
[11]前記第3のスレッドは、第3の時間の間、覚醒される、[10]の方法。
[12]前記第3のスレッドを覚醒した後、前記第3のスレッドがスリープ状態にされる前に、前記第3のスレッドによって実行される命令パケットの実行を再現することをさらに備える、[10]の方法。
[13]マルチスレッドプロセッサの複数の処理スレッドによって共有された変換索引バッファ(TLB)と;
前記マルチスレッドプロセッサのレジスタ内のTLBロックビットと;
特定のスレッドに関連するTLBミス事象が検出された時に、ロック構成を有する前記TLBロックビットに応答して、前記複数の処理スレッドの前記特定のスレッドをスリープ状態にするように構成された制御論理回路と;
を備えるシステム。
[14]前記TLBミス事象は前記特定のスレッドの実行パケットに関連し、前記制御論理回路は、前記実行パケットを記憶するように、および、前記特定のスレッドがスリープ状態におかれる時に前記特定のスレッドに関連したプログラムカウンタを増やさないように、さらに構成される、[13]のシステム。
[15]前記特定のスレッドは、前記TLBミス事象に応答して、例外ハンドラを起動することなく、スリープ状態にされる、[13]のシステム。
[16]前記制御論理回路は、前記TLBロックビットを前記ロック構成に設定するため、および、アンロック構成を有する前記TLBロックビットに応答して前記TLBミス事象に関連する例外ハンドラを同時に開始するようにさらに構成される、[13]のシステム。
[17]前記TLBロックビットは、前記制御論理回路によってロックされ、前記例外ハンドラの命令によってアンロックされるように構成される、[16]のシステム。
[18]前記制御論理回路は、別のTLBミス事象に応答して、前記複数の処理スレッドの別のスレッドもスリープ状態におかれる時に、前記特定のスレッドを覚醒するための順序を示すデータを記憶するように構成される、[13]のシステム。
[19]前記特定のスレッドを覚醒するために、前記順序を示す前記データは、先入れ先出しバッファ(FIFO)に記憶される、[18]のシステム。
[20]プロセッサ実行命令を有するコンピュータ読み取り可能媒体であって、プロセッサ実行命令はプロセッサに:
マルチスレッドプロセッサの複数のスレッドによって共有されたリソースに関連する例外を処理させ;
前記例外が処理された後に、前記リソースのためにハードウェアロックをアンロックさせるコンピュータ読み取り可能媒体。
[21]前記共有リソースは、前記マルチスレッドプロセッサのコアメモリリソースである、[20]のコンピュータ読み取り可能媒体。
[22]前記コアメモリリソースは変換索引バッファ(TLB)であり、前記例外はTLBミスによって引き起こされる、[21]のコンピュータ読み取り可能媒体。
[23]前記ハードウェアロックは、グローバルレジスタの少なくとも1つのビットを含み、前記ハードウェアロックは、前記例外が処理される前に、前記プロセッサの制御論理回路によってロックされるように構成される、[20]のコンピュータ読み取り可能媒体。
[24]マルチスレッドプロセッサの共有リソースのロック状態を示す手段と;
前記共有リソースに関連する例外処理命令を処理する前に、前記共有リソースを自動的にロックする手段と;
前記共有リソースをアンロックする手段と;
を備えるシステム。
[25]前記共有リソースがロックされている間に起こる例外事象に応答して、スレッドの状態を保存する手段と;
前記状態が保存された後に、前記スレッドをスリープ状態にする手段と;
をさらに備える、[24]のシステム。
以下に、本願の当初の特許請求の範囲に記載された発明を付記する。
[1]マルチスレッドプロセッサのスレッドに関連する変換索引バッファ(TLB)ミス事象を受信することと;
TLBロックインジケータをチェックすることと;
前記TLBロックインジケータがアンロックされている時、前記スレッドによるTLBに関連する例外ハンドラへのアクセスを許可することと;
前記TLBロックインジケータがロックされている時、前記スレッドをスリープ状態にすることと;
を備える方法。
[2]アクセスが許可されている時に、前記TLBロックインジケータをロックすることをさらに備える、[1]の方法。
[3]ロック状態からアンロック状態に前記TLBロックインジケータを移行することをさらに備える、[1]の方法。
[4]前記TLBロックインジケータが前記ロック状態から前記アンロック状態に移行した後に、前記TLBミス事象を引き起こすパケットの実行を再現することをさらに備える、[3]の方法。
[5]前記TLBがソフトウェア管理TLBを備える、[1]の方法。
[6]前記TLBミス事象に関する結果を計算することと;
前記結果を前記TLBにプログラムすることと;
前記TLBロックインジケータをアンロック状態に設定することと;
前記例外ハンドラから戻ることと;
をさらに備える、[1]の方法。
[7]前記例外ハンドラから戻り次第、前記TLBロックインジケータを自動的にアンロックすることをさらに備える、[6]の方法。
[8]前記例外ハンドラが前記TLBロックインジケータを設定する、[1]の方法。
[9]マルチスレッドプロセッサのスレッドに関連する変換索引バッファ(TLB)ミス事象を受信することと、なお、前記スレッドは共有変換索引バッファ(TLB)へのアクセスを有する;
TLBロックインジケータを読み取ること、および前記TLBロックインジケータがロック状態の時、前記スレッドをスリープ状態にすることと;
命令を受け取り次第、前記スレッドを覚醒することと;
を備える方法。
[10]前記TLBは、第1の時間の間、第1のスレッドのために確保され、前記TLBは、第2の時間の間、第2のスレッドのために確保され、第3のスレッドは、前記第1の時間帯と前記第2の時間の間スリープ状態にされる、[10]の方法。
[11]前記第3のスレッドは、第3の時間の間、覚醒される、[10]の方法。
[12]前記第3のスレッドを覚醒した後、前記第3のスレッドがスリープ状態にされる前に、前記第3のスレッドによって実行される命令パケットの実行を再現することをさらに備える、[10]の方法。
[13]マルチスレッドプロセッサの複数の処理スレッドによって共有された変換索引バッファ(TLB)と;
前記マルチスレッドプロセッサのレジスタ内のTLBロックビットと;
特定のスレッドに関連するTLBミス事象が検出された時に、ロック構成を有する前記TLBロックビットに応答して、前記複数の処理スレッドの前記特定のスレッドをスリープ状態にするように構成された制御論理回路と;
を備えるシステム。
[14]前記TLBミス事象は前記特定のスレッドの実行パケットに関連し、前記制御論理回路は、前記実行パケットを記憶するように、および、前記特定のスレッドがスリープ状態におかれる時に前記特定のスレッドに関連したプログラムカウンタを増やさないように、さらに構成される、[13]のシステム。
[15]前記特定のスレッドは、前記TLBミス事象に応答して、例外ハンドラを起動することなく、スリープ状態にされる、[13]のシステム。
[16]前記制御論理回路は、前記TLBロックビットを前記ロック構成に設定するため、および、アンロック構成を有する前記TLBロックビットに応答して前記TLBミス事象に関連する例外ハンドラを同時に開始するようにさらに構成される、[13]のシステム。
[17]前記TLBロックビットは、前記制御論理回路によってロックされ、前記例外ハンドラの命令によってアンロックされるように構成される、[16]のシステム。
[18]前記制御論理回路は、別のTLBミス事象に応答して、前記複数の処理スレッドの別のスレッドもスリープ状態におかれる時に、前記特定のスレッドを覚醒するための順序を示すデータを記憶するように構成される、[13]のシステム。
[19]前記特定のスレッドを覚醒するために、前記順序を示す前記データは、先入れ先出しバッファ(FIFO)に記憶される、[18]のシステム。
[20]プロセッサ実行命令を有するコンピュータ読み取り可能媒体であって、プロセッサ実行命令はプロセッサに:
マルチスレッドプロセッサの複数のスレッドによって共有されたリソースに関連する例外を処理させ;
前記例外が処理された後に、前記リソースのためにハードウェアロックをアンロックさせるコンピュータ読み取り可能媒体。
[21]前記共有リソースは、前記マルチスレッドプロセッサのコアメモリリソースである、[20]のコンピュータ読み取り可能媒体。
[22]前記コアメモリリソースは変換索引バッファ(TLB)であり、前記例外はTLBミスによって引き起こされる、[21]のコンピュータ読み取り可能媒体。
[23]前記ハードウェアロックは、グローバルレジスタの少なくとも1つのビットを含み、前記ハードウェアロックは、前記例外が処理される前に、前記プロセッサの制御論理回路によってロックされるように構成される、[20]のコンピュータ読み取り可能媒体。
[24]マルチスレッドプロセッサの共有リソースのロック状態を示す手段と;
前記共有リソースに関連する例外処理命令を処理する前に、前記共有リソースを自動的にロックする手段と;
前記共有リソースをアンロックする手段と;
を備えるシステム。
[25]前記共有リソースがロックされている間に起こる例外事象に応答して、スレッドの状態を保存する手段と;
前記状態が保存された後に、前記スレッドをスリープ状態にする手段と;
をさらに備える、[24]のシステム。
Claims (25)
- マルチスレッドプロセッサのスレッドに関連する変換索引バッファ(TLB)ミス事象を受信することと;
TLBロックインジケータをチェックすることと;
前記TLBロックインジケータがアンロックされている時、前記スレッドによるTLBに関連する例外ハンドラへのアクセスを許可することと;
前記TLBロックインジケータがロックされている時、前記スレッドをスリープ状態にすることと;
を備える方法。 - アクセスが許可されている時に、前記TLBロックインジケータをロックすることをさらに備える、請求項1の方法。
- ロック状態からアンロック状態に前記TLBロックインジケータを移行することをさらに備える、請求項1の方法。
- 前記TLBロックインジケータが前記ロック状態から前記アンロック状態に移行した後に、前記TLBミス事象を引き起こすパケットの実行を再現することをさらに備える、請求項3の方法。
- 前記TLBがソフトウェア管理TLBを備える、請求項1の方法。
- 前記TLBミス事象に関する結果を計算することと;
前記結果を前記TLBにプログラムすることと;
前記TLBロックインジケータをアンロック状態に設定することと;
前記例外ハンドラから戻ることと;
をさらに備える、請求項1の方法。 - 前記例外ハンドラから戻り次第、前記TLBロックインジケータを自動的にアンロックすることをさらに備える、請求項6の方法。
- 前記例外ハンドラが前記TLBロックインジケータを設定する、請求項1の方法。
- マルチスレッドプロセッサのスレッドに関連する変換索引バッファ(TLB)ミス事象を受信することと、なお、前記スレッドは共有変換索引バッファ(TLB)へのアクセスを有する;
TLBロックインジケータを読み取ること、および前記TLBロックインジケータがロック状態の時、前記スレッドをスリープ状態にすることと;
命令を受け取り次第、前記スレッドを覚醒することと;
を備える方法。 - 前記TLBは、第1の時間の間、第1のスレッドのために確保され、前記TLBは、第2の時間の間、第2のスレッドのために確保され、第3のスレッドは、前記第1の時間帯と前記第2の時間の間スリープ状態にされる、請求項10の方法。
- 前記第3のスレッドは、第3の時間の間、覚醒される、請求項10の方法。
- 前記第3のスレッドを覚醒した後、前記第3のスレッドがスリープ状態にされる前に、前記第3のスレッドによって実行される命令パケットの実行を再現することをさらに備える、請求項10の方法。
- マルチスレッドプロセッサの複数の処理スレッドによって共有された変換索引バッファ(TLB)と;
前記マルチスレッドプロセッサのレジスタ内のTLBロックビットと;
特定のスレッドに関連するTLBミス事象が検出された時に、ロック構成を有する前記TLBロックビットに応答して、前記複数の処理スレッドの前記特定のスレッドをスリープ状態にするように構成された制御論理回路と;
を備えるシステム。 - 前記TLBミス事象は前記特定のスレッドの実行パケットに関連し、前記制御論理回路は、前記実行パケットを記憶するように、および、前記特定のスレッドがスリープ状態におかれる時に前記特定のスレッドに関連したプログラムカウンタを増やさないように、さらに構成される、請求項13のシステム。
- 前記特定のスレッドは、前記TLBミス事象に応答して、例外ハンドラを起動することなく、スリープ状態にされる、請求項13のシステム。
- 前記制御論理回路は、前記TLBロックビットを前記ロック構成に設定するため、および、アンロック構成を有する前記TLBロックビットに応答して前記TLBミス事象に関連する例外ハンドラを同時に開始するようにさらに構成される、請求項13のシステム。
- 前記TLBロックビットは、前記制御論理回路によってロックされ、前記例外ハンドラの命令によってアンロックされるように構成される、請求項16のシステム。
- 前記制御論理回路は、別のTLBミス事象に応答して、前記複数の処理スレッドの別のスレッドもスリープ状態におかれる時に、前記特定のスレッドを覚醒するための順序を示すデータを記憶するように構成される、請求項13のシステム。
- 前記特定のスレッドを覚醒するために、前記順序を示す前記データは、先入れ先出しバッファ(FIFO)に記憶される、請求項18のシステム。
- プロセッサ実行命令を有するコンピュータ読み取り可能媒体であって、プロセッサ実行命令はプロセッサに:
マルチスレッドプロセッサの複数のスレッドによって共有されたリソースに関連する例外を処理させ;
前記例外が処理された後に、前記リソースのためにハードウェアロックをアンロックさせるコンピュータ読み取り可能媒体。 - 前記共有リソースは、前記マルチスレッドプロセッサのコアメモリリソースである、請求項20のコンピュータ読み取り可能媒体。
- 前記コアメモリリソースは変換索引バッファ(TLB)であり、前記例外はTLBミスによって引き起こされる、請求項21のコンピュータ読み取り可能媒体。
- 前記ハードウェアロックは、グローバルレジスタの少なくとも1つのビットを含み、前記ハードウェアロックは、前記例外が処理される前に、前記プロセッサの制御論理回路によってロックされるように構成される、請求項20のコンピュータ読み取り可能媒体。
- マルチスレッドプロセッサの共有リソースのロック状態を示す手段と;
前記共有リソースに関連する例外処理命令を処理する前に、前記共有リソースを自動的にロックする手段と;
前記共有リソースをアンロックする手段と;
を備えるシステム。 - 前記共有リソースがロックされている間に起こる例外事象に応答して、スレッドの状態を保存する手段と;
前記状態が保存された後に、前記スレッドをスリープ状態にする手段と;
をさらに備える、請求項24のシステム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/949,284 US8140823B2 (en) | 2007-12-03 | 2007-12-03 | Multithreaded processor with lock indicator |
US11/949,284 | 2007-12-03 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013034561A Division JP2013145568A (ja) | 2007-12-03 | 2013-02-25 | ロックインジケータを有するマルチスレッドプロセッサ |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2014197408A true JP2014197408A (ja) | 2014-10-16 |
Family
ID=40427128
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010537031A Pending JP2011505647A (ja) | 2007-12-03 | 2008-12-03 | ロックインジケータを有するマルチスレッドプロセッサ |
JP2013034561A Pending JP2013145568A (ja) | 2007-12-03 | 2013-02-25 | ロックインジケータを有するマルチスレッドプロセッサ |
JP2014116111A Pending JP2014197408A (ja) | 2007-12-03 | 2014-06-04 | ロックインジケータを有するマルチスレッドプロセッサ |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010537031A Pending JP2011505647A (ja) | 2007-12-03 | 2008-12-03 | ロックインジケータを有するマルチスレッドプロセッサ |
JP2013034561A Pending JP2013145568A (ja) | 2007-12-03 | 2013-02-25 | ロックインジケータを有するマルチスレッドプロセッサ |
Country Status (6)
Country | Link |
---|---|
US (1) | US8140823B2 (ja) |
EP (1) | EP2232370B1 (ja) |
JP (3) | JP2011505647A (ja) |
KR (1) | KR101146359B1 (ja) |
CN (1) | CN101884029B (ja) |
WO (1) | WO2009073722A1 (ja) |
Families Citing this family (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8640141B2 (en) | 2008-02-01 | 2014-01-28 | International Business Machines Corporation | Wake-and-go mechanism with hardware private array |
US8225120B2 (en) * | 2008-02-01 | 2012-07-17 | International Business Machines Corporation | Wake-and-go mechanism with data exclusivity |
US8250396B2 (en) * | 2008-02-01 | 2012-08-21 | International Business Machines Corporation | Hardware wake-and-go mechanism for a data processing system |
US8316218B2 (en) | 2008-02-01 | 2012-11-20 | International Business Machines Corporation | Look-ahead wake-and-go engine with speculative execution |
US8788795B2 (en) | 2008-02-01 | 2014-07-22 | International Business Machines Corporation | Programming idiom accelerator to examine pre-fetched instruction streams for multiple processors |
US8880853B2 (en) * | 2008-02-01 | 2014-11-04 | International Business Machines Corporation | CAM-based wake-and-go snooping engine for waking a thread put to sleep for spinning on a target address lock |
US8612977B2 (en) | 2008-02-01 | 2013-12-17 | International Business Machines Corporation | Wake-and-go mechanism with software save of thread state |
US8145849B2 (en) * | 2008-02-01 | 2012-03-27 | International Business Machines Corporation | Wake-and-go mechanism with system bus response |
US8312458B2 (en) | 2008-02-01 | 2012-11-13 | International Business Machines Corporation | Central repository for wake-and-go mechanism |
US8015379B2 (en) * | 2008-02-01 | 2011-09-06 | International Business Machines Corporation | Wake-and-go mechanism with exclusive system bus response |
US8127080B2 (en) * | 2008-02-01 | 2012-02-28 | International Business Machines Corporation | Wake-and-go mechanism with system address bus transaction master |
US8341635B2 (en) | 2008-02-01 | 2012-12-25 | International Business Machines Corporation | Hardware wake-and-go mechanism with look-ahead polling |
US8725992B2 (en) | 2008-02-01 | 2014-05-13 | International Business Machines Corporation | Programming language exposing idiom calls to a programming idiom accelerator |
US8732683B2 (en) * | 2008-02-01 | 2014-05-20 | International Business Machines Corporation | Compiler providing idiom to idiom accelerator |
US8386822B2 (en) * | 2008-02-01 | 2013-02-26 | International Business Machines Corporation | Wake-and-go mechanism with data monitoring |
US8516484B2 (en) | 2008-02-01 | 2013-08-20 | International Business Machines Corporation | Wake-and-go mechanism for a data processing system |
US8171476B2 (en) | 2008-02-01 | 2012-05-01 | International Business Machines Corporation | Wake-and-go mechanism with prioritization of threads |
US8452947B2 (en) | 2008-02-01 | 2013-05-28 | International Business Machines Corporation | Hardware wake-and-go mechanism and content addressable memory with instruction pre-fetch look-ahead to detect programming idioms |
US8479166B2 (en) * | 2008-08-25 | 2013-07-02 | International Business Machines Corporation | Detecting locking discipline violations on shared resources |
US8230201B2 (en) | 2009-04-16 | 2012-07-24 | International Business Machines Corporation | Migrating sleeping and waking threads between wake-and-go mechanisms in a multiple processor data processing system |
US8145723B2 (en) | 2009-04-16 | 2012-03-27 | International Business Machines Corporation | Complex remote update programming idiom accelerator |
US8082315B2 (en) * | 2009-04-16 | 2011-12-20 | International Business Machines Corporation | Programming idiom accelerator for remote update |
US8886919B2 (en) * | 2009-04-16 | 2014-11-11 | International Business Machines Corporation | Remote update programming idiom accelerator with allocated processor resources |
JP5428617B2 (ja) * | 2009-07-28 | 2014-02-26 | 富士通株式会社 | プロセッサ及び演算処理方法 |
CN102486753B (zh) * | 2009-11-30 | 2015-09-16 | 国际商业机器公司 | 构建及允许访问高速缓存的方法、设备及存储系统 |
US8775836B2 (en) * | 2010-12-23 | 2014-07-08 | Intel Corporation | Method, apparatus and system to save processor state for efficient transition between processor power states |
US9633407B2 (en) * | 2011-07-29 | 2017-04-25 | Intel Corporation | CPU/GPU synchronization mechanism |
US9009410B2 (en) * | 2011-08-23 | 2015-04-14 | Ceva D.S.P. Ltd. | System and method for locking data in a cache memory |
TWI454905B (zh) | 2011-09-30 | 2014-10-01 | Intel Corp | 在多核心平台中之受限制的啓動技術 |
CN102426540B (zh) * | 2011-11-14 | 2013-06-05 | 苏州阔地网络科技有限公司 | 一种分布式即时通信软件中全局会话备份切换方法及装置 |
CN103377086A (zh) * | 2012-04-27 | 2013-10-30 | 华为技术有限公司 | 用于异步多核系统操作共享资源的方法、装置及系统 |
GB2499277B (en) | 2012-08-30 | 2014-04-02 | Imagination Tech Ltd | Global register protection in a multi-threaded processor |
US9501332B2 (en) * | 2012-12-20 | 2016-11-22 | Qualcomm Incorporated | System and method to reset a lock indication |
US10007323B2 (en) | 2012-12-26 | 2018-06-26 | Intel Corporation | Platform power consumption reduction via power state switching |
US9361116B2 (en) | 2012-12-28 | 2016-06-07 | Intel Corporation | Apparatus and method for low-latency invocation of accelerators |
US9417873B2 (en) | 2012-12-28 | 2016-08-16 | Intel Corporation | Apparatus and method for a hybrid latency-throughput processor |
US10140129B2 (en) | 2012-12-28 | 2018-11-27 | Intel Corporation | Processing core having shared front end unit |
US20140189333A1 (en) * | 2012-12-28 | 2014-07-03 | Oren Ben-Kiki | Apparatus and method for task-switchable synchronous hardware accelerators |
US10346195B2 (en) | 2012-12-29 | 2019-07-09 | Intel Corporation | Apparatus and method for invocation of a multi threaded accelerator |
US10114752B2 (en) | 2014-06-27 | 2018-10-30 | International Business Machines Corporation | Detecting cache conflicts by utilizing logical address comparisons in a transactional memory |
GB2529899B (en) * | 2014-09-08 | 2021-06-23 | Advanced Risc Mach Ltd | Shared Resources in a Data Processing Apparatus for Executing a Plurality of Threads |
US9665376B2 (en) * | 2014-12-15 | 2017-05-30 | International Business Machines Corporation | Sharing program interrupt logic in a multithreaded processor |
KR101638136B1 (ko) * | 2015-05-14 | 2016-07-08 | 주식회사 티맥스 소프트 | 멀티 스레드 구조에서 작업 분배 시 스레드 간 락 경쟁을 최소화하는 방법 및 이를 사용한 장치 |
GB2539958B (en) * | 2015-07-03 | 2019-09-25 | Advanced Risc Mach Ltd | Data processing systems |
JP2018041204A (ja) | 2016-09-06 | 2018-03-15 | 東芝メモリ株式会社 | メモリ装置及び情報処理システム |
KR101823129B1 (ko) * | 2016-11-24 | 2018-03-09 | 주식회사 실크로드소프트 | 컴퓨팅 장치의 리소스를 분배하는 컴퓨터 프로그램, 방법 및 장치 |
KR102468506B1 (ko) * | 2016-11-24 | 2022-11-21 | 주식회사 실크로드소프트 | 컴퓨팅 장치의 리소스를 분배하는 컴퓨터 프로그램, 방법 및 장치 |
CN107451257A (zh) * | 2017-07-31 | 2017-12-08 | 郑州云海信息技术有限公司 | 一种基于分布式文件系统的可维护性系统和方法 |
US11361400B1 (en) | 2021-05-06 | 2022-06-14 | Arm Limited | Full tile primitives in tile-based graphics processing |
US12013791B2 (en) | 2021-06-01 | 2024-06-18 | International Business Machines Corporation | Reset dynamic address translation protection instruction |
US11593275B2 (en) | 2021-06-01 | 2023-02-28 | International Business Machines Corporation | Operating system deactivation of storage block write protection absent quiescing of processors |
US11983538B2 (en) * | 2022-04-18 | 2024-05-14 | Cadence Design Systems, Inc. | Load-store unit dual tags and replays |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030236816A1 (en) * | 2002-06-20 | 2003-12-25 | Lakshminarayanan Venkatasubramanian | Spin-yielding in multi-threaded systems |
US20040267996A1 (en) * | 2003-06-27 | 2004-12-30 | Per Hammarlund | Queued locks using monitor-memory wait |
US20060294341A1 (en) * | 2005-06-23 | 2006-12-28 | Erich Plondke | Shared translation look-aside buffer and method |
US20070050595A1 (en) * | 2005-08-25 | 2007-03-01 | Kimming So | System and method for synchronizing translation lookaside buffer access in a multithread processor |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6754784B1 (en) * | 2000-02-01 | 2004-06-22 | Cirrus Logic, Inc. | Methods and circuits for securing encached information |
US20010052053A1 (en) * | 2000-02-08 | 2001-12-13 | Mario Nemirovsky | Stream processing unit for a multi-streaming processor |
US6742103B2 (en) * | 2000-08-21 | 2004-05-25 | Texas Instruments Incorporated | Processing system with shared translation lookaside buffer |
US7159220B2 (en) * | 2001-09-28 | 2007-01-02 | Intel Corporation | Flexible acceleration of java thread synchronization on multiprocessor computers |
AU2003250575A1 (en) * | 2002-08-07 | 2004-02-25 | Mmagix Technology Limited | Apparatus, method and system for a synchronicity independent, resource delegating, power and instruction optimizing processor |
US7188229B2 (en) * | 2004-01-17 | 2007-03-06 | Sun Microsystems, Inc. | Method and apparatus for memory management in a multi-processor computer system |
JP4576172B2 (ja) * | 2004-07-29 | 2010-11-04 | 富士通株式会社 | 演算処理装置,情報処理装置及び演算処理装置の制御方法 |
US20070136725A1 (en) * | 2005-12-12 | 2007-06-14 | International Business Machines Corporation | System and method for optimized preemption and reservation of software locks |
-
2007
- 2007-12-03 US US11/949,284 patent/US8140823B2/en active Active
-
2008
- 2008-12-03 CN CN200880119089.6A patent/CN101884029B/zh active Active
- 2008-12-03 WO PCT/US2008/085402 patent/WO2009073722A1/en active Application Filing
- 2008-12-03 JP JP2010537031A patent/JP2011505647A/ja active Pending
- 2008-12-03 EP EP08856823.3A patent/EP2232370B1/en active Active
- 2008-12-03 KR KR1020107014736A patent/KR101146359B1/ko not_active IP Right Cessation
-
2013
- 2013-02-25 JP JP2013034561A patent/JP2013145568A/ja active Pending
-
2014
- 2014-06-04 JP JP2014116111A patent/JP2014197408A/ja active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030236816A1 (en) * | 2002-06-20 | 2003-12-25 | Lakshminarayanan Venkatasubramanian | Spin-yielding in multi-threaded systems |
JP2004021985A (ja) * | 2002-06-20 | 2004-01-22 | Hewlett-Packard Development Co Lp | マルチスレッドシステムにおけるスピン−放棄 |
US20040267996A1 (en) * | 2003-06-27 | 2004-12-30 | Per Hammarlund | Queued locks using monitor-memory wait |
JP2007520769A (ja) * | 2003-06-27 | 2007-07-26 | インテル コーポレイション | モニタメモリ待機を用いたキューされたロック |
US20060294341A1 (en) * | 2005-06-23 | 2006-12-28 | Erich Plondke | Shared translation look-aside buffer and method |
US20070050595A1 (en) * | 2005-08-25 | 2007-03-01 | Kimming So | System and method for synchronizing translation lookaside buffer access in a multithread processor |
Also Published As
Publication number | Publication date |
---|---|
JP2011505647A (ja) | 2011-02-24 |
US20090144519A1 (en) | 2009-06-04 |
CN101884029A (zh) | 2010-11-10 |
KR20100101629A (ko) | 2010-09-17 |
CN101884029B (zh) | 2014-09-03 |
EP2232370A1 (en) | 2010-09-29 |
EP2232370B1 (en) | 2015-11-04 |
US8140823B2 (en) | 2012-03-20 |
WO2009073722A1 (en) | 2009-06-11 |
JP2013145568A (ja) | 2013-07-25 |
KR101146359B1 (ko) | 2012-05-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2014197408A (ja) | ロックインジケータを有するマルチスレッドプロセッサ | |
US8161247B2 (en) | Wait loss synchronization | |
JP4764360B2 (ja) | メモリ属性を用いるための技術 | |
TWI512448B (zh) | 用以啟用處理器等待狀態之指令 | |
US8539485B2 (en) | Polling using reservation mechanism | |
JP3309425B2 (ja) | キャッシュ制御装置 | |
US7941652B2 (en) | Apparatus and computer program product for implementing atomic data tracing | |
JP5254342B2 (ja) | n−ウェイキャッシュを用いるシステムおよび方法 | |
TWI597600B (zh) | 在運行狀態下藉由減少每個時脈的指令率之微處理器及其省電方法 | |
JP4568292B2 (ja) | キャッシュライン・ポーリングを実行する方法、装置、プログラム及び情報処理システム | |
JP2011507109A (ja) | マルチスレッド・プロセッサのための共有割込みコントローラ | |
KR101671846B1 (ko) | 트랜잭셔널 메모리 동작들을 수행하도록 구성된 프로세서 | |
JP2007323192A (ja) | キャッシュメモリ装置および処理方法 | |
US20230161704A1 (en) | Computing system with direct invalidation in a hierarchical cache structure based on at least one designated key identification code | |
WO2012054020A1 (en) | Low power execution of a multithreaded program | |
US20140250442A1 (en) | Conditional Notification Mechanism | |
US8719499B2 (en) | Cache-line based notification | |
JP2009037403A (ja) | マルチコアプロセッサにおけるコアメモリの有効活用方法 | |
US9411663B2 (en) | Conditional notification mechanism | |
US8438569B2 (en) | Broadcasting a condition to threads executing on a plurality of on-chip processors | |
CN111459261A (zh) | 磁盘唤醒方法、装置、电子设备及存储介质 | |
JP2009258984A (ja) | 情報処理装置およびロード制御方法 | |
US20020169930A1 (en) | Memory access control system, method thereof and host bridge | |
US11971821B2 (en) | Computing system with write-back and invalidation in a hierarchical cache structure based on at least one designated key identification code | |
JP5593195B2 (ja) | データ処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20150522 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20150623 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20151117 |