JP2022538371A - スレッド粒度を提供するマルチスレッドプロセッサ - Google Patents

スレッド粒度を提供するマルチスレッドプロセッサ Download PDF

Info

Publication number
JP2022538371A
JP2022538371A JP2022516175A JP2022516175A JP2022538371A JP 2022538371 A JP2022538371 A JP 2022538371A JP 2022516175 A JP2022516175 A JP 2022516175A JP 2022516175 A JP2022516175 A JP 2022516175A JP 2022538371 A JP2022538371 A JP 2022538371A
Authority
JP
Japan
Prior art keywords
thread
stage
multithreaded processor
decode
values
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
JP2022516175A
Other languages
English (en)
Other versions
JP7194315B2 (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 JP2022538371A publication Critical patent/JP2022538371A/ja
Application granted granted Critical
Publication of JP7194315B2 publication Critical patent/JP7194315B2/ja
Active 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Multi Processors (AREA)
  • Advance Control (AREA)
  • Debugging And Monitoring (AREA)
  • Executing Machine-Instructions (AREA)
  • Power Sources (AREA)

Abstract

マルチスレッドプロセッサは、現在実行中のスレッドを示すスレッド_ID値のシーケンスを出力する正規スレッドマップレジスタを有する。スレッドマップレジスタは、各スレッドに割り当てられる正規シーケンスのサイクル数に粒度を提供するようにプログラム可能である。本発明の一例では、スレッドマップレジスタは、メモリ待ち時間を克服し、スレッドストールを回避するために、連続的又は非連続的に繰り返されるスレッド識別子を有する。本発明の別の例では、割り込み処理の待ち時間を低減するために、各スレッドに別々の割り込みタスクを配置する。【選択図】図1

Description

本発明は、マルチスレッドプロセッサに関する。より詳細には、本発明は、中央処理装置(CPU)の処理能力の可変割合が各スレッドに動的に割り当てられるように、粒度が高く動的なスレッド割り当て特性を有するマルチスレッドプロセッサに関する。
マルチスレッドプロセッサは、各々が独自の個別のスレッドで動作する複数のプロセスをシステムが実行する場合に利用される。従来技術のマルチスレッドプロセッサの例及び使用例は、米国特許第7761688号明細書、第7657683号明細書、及び、第8396063号明細書に記載される。例示的に専用の2スレッドプロセッサを使用して無線通信を行うよう動作する典型的なアプリケーションプログラムでは、プロセッサは、第1のスレッド上の優先度の高いプログラムの命令の実行と第2のスレッド上の優先度の低いプログラムの命令の実行との間で実行サイクルを交互に行い、交互に実行することで各スレッドにCPU処理能力の50%が割り当てられる。加えて、第1のスレッドが外部周辺機器にアクセスし、データが戻るのを待たなければならないときなどのスレッドストール中に、第2のスレッドは第1のスレッドのストールの影響を受けずに実行を継続し得るという点で、各スレッドへのCPU帯域幅の割り当てが保護される。
問題が生じるのは、マルチスレッドプロセッサが帯域幅を不均等に割り当てる必要がある場合、又は、割り当てを動的に変更する必要がある場合である。プロセッサ実行サイクル群を構成する各インターバル中に、インターバル中の各々のスレッドがCPUサイクルの固定割合を受け取るように、各タスクにスレッド使用率の動的割り当てを提供することが望ましい。後続インターバルで、追加のスレッドが追加若しくは削除されてもよく、又は、各スレッドへのCPUサイクルの割り当て割合が変更されてもよい。また、幾つかのスレッドにCPU能力を不均等に割り当て、この割り当てが動的に実行されることが望ましい。
また、マルチスレッドプロセッサでは、割り込みの適時処理も問題となる。割り込み処理において、直前の特定の割り込み処理が完了できるように新しい割り込みは無効化される。次に受信された割り込みは、直前の割り込み処理が完了し、割り込みのマスクが解除されるまで認識されない。直前の割り込み処理のタスクが未完了の間に到着した新たな割り込みを適時に認識する割り込み処理の提供が望まれる。
本発明の第1の目的は、一連のカスケード接続されたステージを有するマルチスレッドスーパースカラプロセッサである。各カスケード接続されたステージは演算結果を後続ステージに提供し、カスケード接続されたステージの第1のステージは、スレッド識別子及び関連するプログラムカウンタで参照されるプログラムメモリアドレスから命令を受け取り、スレッド識別子はスレッド識別子のシーケンスを含むスレッドマップレジスタによって提供される。各スレッド識別子は、プログラムカウンタ及びレジスタファイルの何れが特定のプロセッサステージで使用されるかを示し、スレッド識別子及びスレッド毎のプログラムカウンタを使用して選択された特定の命令は、命令フェッチステージ、命令デコードステージ、デコード/実行ステージ、実行ステージ、ロード/ストアステージ、及びライトバックステージを備えるパイプラインステージのシーケンスに提供され、デコード/実行ステージはスレッド識別子により選択されたレジスタファイルに結合される(coupled)。
本発明の第2の目的は、各割り込みプロセスが特定のスレッドに関連付けられた複数の割り込みプロセスを処理するよう動作可能なマルチスレッドスーパースカラプロセッサである。
本発明の第3の目的は、実行するスレッドのシーケンスを動的に識別するように再プログラム可能なスレッドマップレジスタを有するマルチスレッドスーパースカラプロセッサである。各スレッドはプログラムカウンタレジスタ及びレジスタファイルと関連付けられ、プログラムカウンタレジスタ及びレジスタファイルは、プリフェッチステージ、命令フェッチステージ、命令デコードステージ、デコード/実行ステージ、実行ステージ、ロードストアステージ、及び任意でライトバックステージからなる連続したステージのうち少なくとも1つに結合される。
本発明の第4の目的は、第1のプロトコルプロセスから第2のプロトコルプロセスへのスレッド帯域幅の動的割り当てであり、各プロトコルプロセスは別々のインタフェースを介して到着するパケットを処理し、各スレッドに粒度の高いサイクル割り当て制御を行うマルチスレッドプロセッサの異なるスレッドによって処理される。
本発明の第5の目的は、Bluetooth(登録商標)及びWLANなどの互いに無関係な通信プロトコルの同時処理を行う通信インタフェースであって、Bluetoothインタフェースは、Bluetoothプロトコルの非アクティブ間隙によって隔てられた規則的間隔の間アクティブであり、Bluetoothプロトコルの非アクティブ間隙はWLAN通信に用いられる。通信プロトコルはマルチスレッドプロセッサ上で動作し、Bluetoothのアクティブ間隔中はより多数のスレッドサイクルをBluetoothプロトコルに動的に割り当て、WLANのアクティブ間隔中はより多数のスレッドサイクルをWLANプロトコルに動的に割り当てる。
本発明の一例では、スーパースカラプロセッサは、プリフェッチステージ、フェッチステージ、デコードステージ、デコード/実行ステージ、実行ステージ、ロード/ストアステージ、及び、任意でライトバックステージを順に有する。プリフェッチステージは、スレッドマップレジスタの指示の下、スレッド毎のプログラムカウンタが提供する命令を受け取る。スレッドマップレジスタは、識別されたスレッドを選択するため、スレッド毎のプログラムカウンタにインデックスする正規(canonical)連続(succession)のスレッド識別子を提供する。選択されたプログラムカウンタは命令メモリから命令を受け取るようプリフェッチステージに指示する。デコード/実行ステージはレジスタファイルに結合され、スレッド固有のレジスタセットがアドレス指定されるように、その時点でデコード/実行ステージが実行中のスレッドに関連付けられたレジスタファイルが選択される。
スレッドマップレジスタは実行中の特定のスレッドを識別する。スレッドマップレジスタは、スレッド毎のプログラムカウンタの制限数及びスレッド毎のレジスタファイルの制限数に応じて、任意の数の異なるスレッドを参照し得る。例えば、スレッドマップレジスタは、10のエントリを含み、スレッド毎のプログラムカウンタ及びスレッド毎のレジスタファイルの数は4であってもよい。この場合、スレッド_0が1サイクルを受け取り、スレッド_1が4サイクルを受け取り、スレッド_2が3サイクルを受け取り、スレッド_3が2サイクルを受け取り得るように、4つのスレッドの各々の粒度は10%に指定されてもよい。スレッドレジスタは、正規に実行される[0,1,1,1,1,2,2,2,3,3]の何れかを指定し得るがこれに限られない。スレッドレジスタは、スレッド番号又はスレッドの割り当てを変更するために更新されてもよく、例えば、スレッドレジスタに新しい値[0,0,0,0,1,2,2,2,3,3]を書き込むことによって、スレッド_0を拡張し、スレッド_1を縮小することが可能である。
本発明の別の例では、スーパースカラマルチスレッドプロセッサにおいて、各スレッドがそれぞれ独自の割り込みレジスタを有するように、スレッド毎に割り込みマスクが提供される。本発明のこの例では、スレッド_0への割り込みがスレッド_0によってマスクされ、スレッド_1、スレッド_2...スレッド_nなどの他のスレッドはそれぞれのスレッドに指示された割り込みを別々に処理する能力を有するように、各スレッドはそれぞれ独自の割り込み処理を有する。この例のアーキテクチャでは、各スレッドは異なるプロトコルタイプを処理することができ、例えば、無線プロトコルであるWLAN、Bluetooth、及び、Zigbee(登録商標)のそれぞれのパケット処理は、共通のパケットバッファインタフェースを有するマルチプロトコルベースバンドプロセッサのプロセッサインタフェースに結合されたパケットバッファで処理することができる。この例では、マルチスレッドプロセッサは、割り込み処理を使用してそれぞれ適時に完了されなければならない確認応答要求及び再送要求を処理し、個別の割り込みの各プロトコルタイプは個別のスレッドに専用であり、スレッドレジスタは必要に応じて書き換えられてより多数のスレッドサイクルを適宜割り当てることができる。
図1は、スレッド毎のプログラムカウンタ及びスレッド毎のレジスタファイルを有するマルチスレッドスーパースカラプロセッサのブロック図を示す。 図1Aは、スレッド毎のプログラムカウンタの編成のブロック図を示す。 図1Bは、スレッドマップレジスタの一例のブロック図を示す。 図2Aは、スレッドが連続マッピングされた所与のスレッド割り当てのスレッドマップレジスタの一例であるスレッドマップレジスタを示す。 図2Bは、図2Aのスレッドが非連続マッピングされたスレッドマップレジスタを示す。 図3は、図1のマルチスレッドプロセッサのスレッド毎の割り込みコントローラ及び処理を示す。 図4は、別々のCPUを使用するBluetoothプロセッサ及びWLANプロセッサのブロック図を示す。 図5は、マルチスレッドプロセッサを使用するBluetoothプロセッサ及びWLANプロセッサのブロック図を示す。 図5Aは、マルチスレッドプロセッサに対するプログラムコード及び関連するタスクの割り当て例を示す。 図5Bは、パケットバッファに対するRAMの割り当て例を示す。
図1は、プレフェッチステージ102、フェッチステージ104、デコードステージ106、デコード/実行ステージ108、実行ステージ110、ロード/ストアステージ112、及び、任意のライトバックステージ114からなる順次ステージを有するスーパースカラプロセッサ100に関する本発明の一例を示す。プリフェッチステージ102に送られる命令は、個別のクロックサイクルで、次のステージに必要な任意のコンテキスト及び中間結果を受け継ぎながら後続の各ステージによって順次実行される。本発明の一例では、スレッドマップレジスタ103は、スレッド毎のプログラムカウンタ105に送るためのスレッド識別子(スレッド_ID)の正規シーケンスを提供し、スレッド毎のプログラムカウンタ105は、関連する現在のプログラムカウンタ105のアドレスをプリフェッチステージ102に提供する。プリフェッチステージ102は命令メモリ116から関連する命令を取得し、それを次のクロックサイクルでフェッチステージ104に送る。デコード/実行ステージ108は、デコード/実行ステージ108からの読み出し要求に応答するスレッド毎のレジスタファイル118、又は、ステージ114からのライトバック動作に結合され、各々はスレッド固有であり、したがって、読み出される又はレジスタファイル118に書き込まれるデータは、それを要求する又は提供するスレッド_IDに対応する。
図1Aは、スレッド_0用のPC_T0、スレッド_1用のPC_T1、スレッド_n用のPC_Tnといったスレッド毎のプログラムカウンタ105を示す。各スレッドに1つのプログラムカウンタが使用される。
図1Bはスレッドマップレジスタ103を示し、正規で実行されるスレッド識別子T0130~Tn132のシーケンスを含む。スレッドの数(各スレッドは、特定のステージのCPUサイクルで実行される個別のプロセスである)は、レジスタファイル118の数及びプログラムカウンタ105の数によって制限されるmであり、一方、スレッドマップレジスタ103は、CPU帯域幅をスレッドに均等に割り当てるためにm個のスレッドをサポートしてもよく、又は、スレッド制御を高粒度にするためにn>mであるn個のタイムスロットを提供してもよい。例えば、16個のエントリを有するスレッドマップは4つのスレッドをサポートしてもよく、各スレッドは利用可能なCPU処理能力の1/16の粒度を有し、残りのスレッドへのCPU処理能力の割り当てに応じて、利用可能なCPU処理能力の0/16~16/16の任意の粒度をサポートする。
図2Aは、正規サイクル長204に亘って16個のエントリを有する例示的なスレッドマップレジスタ103を示し、スレッドマップレジスタは16エントリの終端で正規に繰り返し得る。図2Aの本例は4つのスレッド及び順次マッピングについて示し、例えば、スレッドが外部リソースからの結果の受信に遅延があり順次サイクルを実行することができない場合などのスレッドストールのない用途に適し得る。n=16のスレッドマップレジスタ位置について、スレッドマップレジスタは、各タスクにプロセッサアプリケーションの1/16の解像度を提供し、プロセッサはスレッドマップレジスタの位置毎に1つのスレッドで使用され得るが、この場合、各スレッドに固定された時間割り当てを提供する。好ましい使用法では、スレッド識別子の数mは、スレッドマップレジスタの位置の数nよりも少なく、これによって、タスクに対する特定のスレッドの割り当ては、粒度p/nを有し得る。ここで、nは典型的には固定であり、pは特定のスレッドに割り当てられるサイクル数としてプログラム可能で、各スレッドに演算資源をより多く又はより少なく割り当てるために0からnまで変化することが可能である。本発明の別の例では、スレッドマップレジスタの長さnは、タスクサイクル管理においてより大きな粒度を提供するように、又は、より多数のスレッドをサポートするようにプログラム可能であってもよい。
図2Aは、16位置のスレッドマップレジスタ202においてスレッド0、1、2、及び、3(それぞれT0、T1、T2、T3)の4スレッドを有するスレッドマップレジスタの例を示し、それぞれのスレッドに対してプロセッサ能力の12.5%、25%、50%、及び、12.5%が割り当てられる。特定のスレッドが外部リソースの応答を待たなければならないスレッドストールと言う問題が発生する。図2Aの例では、デコード/実行ステージ108は、図示されていない外部共有メモリ又はメディアアクセスコントローラ(MAC)を読み取ることを必要とし、外部リソースの読み取りの遅延に4クロックサイクルを必要とし得る。図2Aに示されるスレッド割り当てで、外部リソースにアクセスするスレッドがT0及びT3である場合、或いは、デバイスへの読み書きの遅延の影響を受ける場合、T0は動作208でスレッドストール状態になり、T3はサイクル210でスレッドストール214状態になる。図2Aに示されるスレッド識別子の編成では、スレッドストールの度に、本来利用可能なCPUサイクルが失われることになる。
図2Bは、図2Aと同じ時間配分を用いるが、図2Aに示されたのと同じスレッドストールの場合についてスレッドシーケンス220を並べ替えた代替マッピングを示す。T0を位置0及び7に、T3を位置1及び8に配置換えしたことが、図2Bの編成に反映されている。スレッドストール212が4クロックサイクルであるのに対し、T0スレッドは、6クロックサイクル224より長いスレッドストールに対してのみストールするので、図2Aの配置では1つのみであるが、図2Bの編成では両方のT0の発生が実行されることになる。同様に、図2Aで2つ目のT3サイクルを保留させるT3ストールは、スレッドストールが継続時間226を持たない限り、図2Bでは発生しない。
図3は、本発明の別の態様であり、無線信号処理の一例である。プロセススレッド308は図1のマルチスレッドプロセッサ上で異なるスレッドとして実行可能であり、マルチスレッドプロセッサはマルチスレッドCPU100の一部であるインタフェース310を有し、各インタフェースは特定のMACに関連付けられる。無線信号は、アンテナ301で受信及び送信される。302によって受信時にベースバンドに変換され、又は、送信時にRFに変調され、マルチプロトコルベースバンドプロセッサ304に提供される。マルチプロトコルMACの特定のインタフェースにパケットが到着すると、特定のスレッドに対する割り込みが割り込みコントローラ306に送信され得る。各割り込みはマルチプロトコルプロセッサで動作する関連プロセス308によってマスク可能である。各プロセスは、関連する割り込みマスク(IM0、IM1、IM2、IM3と示される)を制御することができ、割り込みマスクは割り込みコントローラ306に提供されて、関連プロセスに対する直前の割り込みが完了するまで関連プロセスに新しい割り込みが処理されないように割り込みをマスクする。
本発明の割り込みのマルチタスク処理には、従来技術にはない特有の利点がある。従来技術では、スレッド0上の割り込みサービスルーチンが、複数のパケットインタフェースのパケット確認応答を処理し得る。このタスクでは、パケットの受信後、受信バッファを調べてシーケンス内のパケット欠損を検出し、プロセスは受信したパケットに確認応答するか、欠損したパケットについて送信者に再送要求を行う。パケットの確認応答と再送信には重要なタイミングのウィンドウがあるため、パケット受信後に確認応答又は再送信の要求を適時に行うことが重要である。パケット受信後30us以内に再送要求を行う必要があり、第1の再送信タスク0が完了に5usを要し、第2の再送信タスク1が処理と完了に10usを要し、第3の再送信タスク3が処理と完了に5usを要し、1つのプロセスが1つのスレッド上で3つのタスクを処理する場合を考えてみる。この例では、3つのタスクが共通のスレッドで処理され、従来技術と同様に共通の割り込みマスクが使用される。パケットを受信するとスレッド0上のタスク0を処理するプロセスは、他のパケット確認応答によって現在の確認応答の処理が遅くならないよう割り込みをマスクし、これには5usを必要とする。タスク0の処理中にスレッド0のタスク1に関連する2つ目の割り込みが到着した場合、スレッド0はまだタスク0でビジー状態のため、到着後少なくとも5usまでタスク1は処理されない。また、異なるインタフェースにパケットが集中し、タスク1(10usを要する)がタスク0(5usを要する)の完了を待っている間に、5usを要する3つ目のタスク3が到着する可能性もある。タスク0が完了すると割り込みマスクが除去され、タスク1が割り込みを発生させて検出され、割り込みマスクが再びアサートされ、タスク1の処理が完了する。その後、割り込みマスクが解除されタスク2の割り込みがアサートされ、検出される。その後、割り込みマスクが再びアサートされ、タスク2は要求の到着後早くとも15usも後に開始し、必要な再送要求ウィンドウが経過した20us後に要求完了となる。タスク2の完了後に割り込みマスクが解除されるが、タスク2からの再送要求をリモート局が適時に受信できず、再送信プロトコルに失敗した。従来技術では、先のタスク1及び2の処理後にタスク2の待ち時間が遅れるという問題に対する解決策として、より高速なプロセッサを使用している。さらに、マルチコアプロセッサがMACインタフェースを読み出している間、スレッドロックが発生し得るが、これは先に図2Bで示したようにスレッド識別子を並べ替えることで回避できる可能性がある。この場合、確認応答と再送信のタスクにスレッドサイクルの細かい割り当てが必要になり得るが、3つのタスクをそれぞれ細かい時間割り当ての別々のスレッドに分散させることでインタフェースの読み取り/書き込みの待ち時間を克服し、各スレッドを別々の割り込み及び割り込みマスクに関連付けることによって、割り込みマスクの待ち時間の遅延も克服することができる。
各タスクが単一スレッド上で実行され、各タスクが50MIPSを必要とする従来技術では、割り込みを順次処理する際の待ち時間と遅延のため、3つのタスクを正常に処理するには300MIPSの処理能力が必要となるが、図3の新規の方法では約150MIPSのみを必要とし、これにより、MIPS要求を2倍節約でき、結果として消費電力要件も低減する。
図1のマルチプロトコルプロセッサの別の例では、各々の無線プロトコルは別々のスレッドによって処理されてもよい。例えば、WLAN、Bluetooth、及び、Zigbeeを扱うプロセスをそれぞれ独自のスレッド上の別のプロセスで動作させ、それぞれの再送信プロセスをプロトコル毎に別のプロセスで、それぞれ独自のスレッド上で動作させて処理してもよい。
本発明の別の例では、スレッドマップレジスタは、分離されたスレッド管理プロセスによって検出されたプロセス要求に従って対話形式で変更されてもよい。各ステージからのコンテキストは図1の後続ステージに転送されるので、プリフェッチステージ102が確定的なスレッド_ID及び関連するスレッド毎のプログラムカウンタ105を受け取るためのクロック同期要件に従う限り、スレッドマップレジスタへの変更はいつでも行うことができる。
図4は、通信システムとデータを交換するためのインタフェース480を備えた、無線ローカルエリアネットワーク(WLAN)とBluetooth(BT)を組み合わせた送受信器の例を示す。各プロトコルで必要なWLANとBTの処理動作は特化され、各プロトコルで応答の適時性が求められるため、インタフェースの種類ごとにCPUが必要になる。各インタフェースに対してCPUが短い待ち時間の処理を要求するため、WLAN及びBTの処理は、図4に示されるようなシステムアーキテクチャで行われる。
図4は、アナログフロントエンドとMAC401を備えるWLANプロセッサがWLAN CPU424に結合され、アナログフロントエンドとMAC450を備えるBTプロセスがBT CPU482に結合されている様子を示す。各WLAN CPU424及びBT CPU482は、それぞれのWLANプロセッサ401及びBTプロセッサ450に関連するソフトウェアプログラムによる即時処理を必要とする割り込み及びイベントのバーストに適時に対応することができる。
WLANプロセッサ401において、アンテナ402は、受信信号を低雑音増幅器406につなげ、送信信号を電力増幅器414からつなげるために、送受信スイッチ404に結合される。入力信号は、クロックソース418を使用してベースバンドに混合され408、ローパスフィルタされ410、アナログベースバンド信号はデジタル化され、受信シンボルをデータストリームに復調するADC及びベースバンド複合プロセッサ412で処理されて、シリアルデータインターフェース(SDI)やCPU424などのインタフェースを介してメディアアクセスコントローラ(MAC)422によってレイヤ2パケットに形成される。CPU424は、受信したパケットや送信するパケット、CPU424が実行するプログラムコード、及び、システムがパワーダウンしているときにその他の非永続的な情報を記憶するための関連するRAM(Random Access Memory)428を有する。読み取り専用メモリ(ROM)又はフラッシュメモリ426は、通常、電源投入シーケンス中にフラッシュメモリ/ROMからRAMにダウンロードされるプログラム命令を記憶するために使用される。MAC422は、シリアルデータインターフェース(SDI)などのインタフェース423を介して送信するためのデータを受信し、受信したデータパケットをシーケンス番号とともにCPU424に提供し、これによって、CPU424が欠損データを検出し、再送信を管理し、任意のWLAN認証プロトコルを設定し、カプセル化及びカプセル解除、チャネル管理、パケット集約、並びに、接続管理及び認証などの任意の必要なパケット毎の処理を実行できるようにする。
図4Bは、アナログフロント及びBT MACを備える例示的なBluetoothプロセッサ450を示し、アンテナ452、送受信スイッチ454、低雑音増幅器456、ミキサ458、バンドパスフィルタ460、及び、アナログ/デジタル変換器及びベースバンドプロセッサ462と共に同様な動作をする。アナログ/デジタル変換器及びベースバンドプロセッサ462は、ADC/ベースバンドプロセッサ412がWLANの802.11パケットに対して行うようにベースバンドのBluetooth周波数ホッピングパターンをデータストリームに変換する動作を行う。Bluetooth送信チェーンは、ベースバンドプロセッサ及びDAC470、変調クロック源468を用いてベースバンド周波数ホッピングストリームをRFキャリア周波数に変調するミキサ466、及び、変調されたBluetooth周波数ホッピングストリームを送受信スイッチ454につなげる電力増幅器464を含む。BT CPUは、ペアリングを含む各種接続管理を処理する。
WLAN MAC422は、SPI(Serial Peripheral Interface)などのデジタルインタフェース423を介してWLAN CPU424に結合され、BT MAC480はデジタルインタフェース481を介してBT CPU482に結合される。これにより、図4のアーキテクチャでは、WLAN及びBlutoothの各プロセスがそれぞれ動作するCPU処理能力を個別に確保し、各インタフェースからの結合又はパケット要求の処理に短い待ち時間を実現する。
図5は、図4の代替アーキテクチャを示し、WLANのRFフロントエンド/MAC504(図4の処理401に相当)及びBTのRFフロントエンド/MAC508(図4の処理450に相当)は、それぞれデジタルインタフェース518及び520を介してマルチスレッドCPU510に結合され、マルチスレッドCPU510はROM/フラッシュメモリ512及びRAM514に結合されている。任意で、スレッドマップレジスタ516が存在し、Bluetoothプロセス又はWLANプロセスのいずれかにCPUサイクルの割り当てを提供する。本発明の一例では、スレッドマップレジスタのプロセス_IDエントリの数は固定であり、各スレッド_IDに関連する特定のプロセスにより多い又は少ない数のプロセスサイクルを提供するため、より多い又は少ない数のスレッド_ID値がスレッドマップレジスタにあってもよい。上述したような一度に1命令ずつ受け取るパイプライン型のマルチスレッドプロセッサでは、マルチスレッドプロセッサは次のスレッド_IDを発行するスレッドマップレジスタで決定されたスレッドに対して各命令を受信し、スレッドプロセスの割り当て制御の粒度は命令毎に異なる。スレッドマップレジスタはスレッド_IDを繰り返し正規に発行するので、スレッドへのプロセスの割り当ては、スレッドマップレジスタがサポートし得る値の数の逆数に相当する非常に細かい粒度となる。本発明の一例では、スレッド管理プロセスが一意のスレッド_IDを有するプロセスの一つとして動作してもよく、スレッド管理プロセスは、他のスレッドの活動を調べ、活動レベルに応じて対応するスレッド_IDのエントリ数を増減し、スレッドマップレジスタにスレッド_ID値を割り当てたり、スレッドマップレジスタからスレッド_ID値を解除したりする。通信プロセッサに関連する通信プロセスの活動レベルは、例えば、関連する通信プロセッサが送信又は受信し、スレッドが処理するパケットの数によって決定されてもよく、スレッドマップレジスタにその特定のスレッドのスレッド_ID値がより多く又は少なく存在することを示すために閾値を設定してもよい。スレッド管理プロセスによってスレッドマップレジスタに動的に配置された、より多くの又はより少ないエントリを有する一意のスレッド_IDを持つプロセススレッドの例は、リンク層プロセス、ネットワーク層プロセス、又は、アプリケーション層プロセスを含み、各リンク層、ネットワーク層、又は、アプリケーション層のプロセスは、固有の閾値メトリックを有する複数のプロセスを含み得る。これらのプロセスはそれぞれ、401、450、504、又は508といった特定の通信プロセッサと関連付けられる。閾値メトリック(パケットデータレート、未処理の残りのパケット数、スレッドロードメトリック、又は、スレッドプロセスタスク完了の割合など)が閾値を超える間、スレッドマップレジスタにおけるスレッド_IDの割り当てを増加させてもよい。
図5Aは、メモリ(ROM/フラッシュメモリ512又はRAM514のいずれか)の存在する様々なスレッドへの割り当てを示す。1つのスレッドは、図4のWLAN CPU424によって実行されるタスクに対応するWLANコードであってもよく、もう一つのスレッドは、図4のBT CPU482によって実行されるタスクに対応するBTコードであってもよい。スレッドマップレジスタを管理するために追加のスレッドを割り当て、追加のスレッドによって上述したスレッドマップレジスタ103への様々なタスクの帯域の割り当てを制御してもよく、追加のタスクによってパケットバッファのメモリ管理及び他の優先度が低く実行頻度の低い機能を実行してもよい。スレッドマップ管理タスクは、BT及びWLANインタフェースの使用率を定期的に調査し、需要に応じて各タスクへのCPUサイクルの割り当てを変更してもよい。本発明の一態様では、BluetoothとWLANの動作を排他的に行い、CPUスレッドのインタフェースに対する割り当て(図5AのBTタスク及びWLANタスク)は1つのインタフェース又はもう一つのインタフェースに特化される。
本発明の別の例では、様々なスレッドが、特定の通信プロトコルの異なる部分を処理し得る。例えば、1つのスレッドがレイヤ2及びその他の動作を処理し、もう1つのスレッドがレイヤ3及び特定のプロトコルの応用側面を処理してもよい。WLANプロトコルのいずれかに関する本発明の一態様では、1つのスレッドが、下位MAC機能と総称されることがある基本的な通信態様を処理することができる。WLANとBluetoothの下位MAC機能には、パケット送信、パケット受信、クリアチャネル評価(CCA)、フレーム間間隔、レート制御、送信要求と送信クリア(RTS/CTS)の交換、WLAN及びBluetoothの無線パケット確認応答DATA/ACK、又は、Bluetoothに特有のチャネルホッピングが含まれる。上位MAC機能は、下位MAC機能で実行されない他のISO(国際標準化機構)レイヤ2機能をデータリンク層で実行する。本明細書における上位MAC機能とは、WLANサプリカント(無線ネットワークアクセスポイントへの参加又はログインに関連するプロトコル)、WLANパケットの再送信及び確認応答、標準WPA又はWPA2(Wireless Protected Access)に規定されるようなセキュリティ機能、のいずれかを総称したものである。ISOレイヤ3(ネットワーク層)の機能は、分離されたスレッドで実行されてもよい。レイヤ3機能には、IPパケット形成、TCP再送信と確認応答、SSL暗号化と接続管理、及び、特定のアプリケーション層プロセス用のパケットカプセル化などのアプリケーション層の動作が含まれる。Bluetoothに関する本発明の別の例では、スレッドの1つをBluetoothコントローラ、スタック、再試行、及び、確認応答の処理に割り当て、他のスレッドをアプリケーション層のタスクの処理に割り当ててもよい。このように、特定のプロトコルの2つのタスクは分離されて別々のスレッドに提供され、1つのスレッドからもう1つのスレッドへのデータ通信にはSRAMなどの共通インタフェースを使用してもよい。
アプリケーションによっては、WLAN通信とBluetooth通信が併存し、同時に動作してもよい。この構成例では、WLANパケット処理中はWLAN通信処理に、Bluetoothパケット処理中はBTスレッドサイクルに、CPUスレッドサイクルを動的に割り当てることが可能である。特定の通信プロセッサ401、450、504、又は508に関連付けられた複数のプロセスは、一意のスレッド_ID値で作成され、各スレッド_IDは各関連プロセスの処理帯域幅を提供するためにスレッドマップレジスタ516に置かれ、関連する通信プロセッサが有効でないとき、これらのプロセスは終了されスレッド_IDがスレッドマップレジスタ516から削除されてもよい。同時通信は、一定のスロット間隔でパケットを送信するBluetooth通信の定期通信間隔を利用して行うことができ、BT通信にチャネルが使用されていない大きな時間間隔によって時間的に区切ることも可能である。これらの間隔の間、BTの通信ウィンドウに干渉しないように、WLANパケットの送信及び確認応答が行われてもよい。スレッドマップレジスタ103は、Bluetoothパケット間隔の間はBTに、そしてWLANパケット間隔の間はWLANに、CPU能力のより大きな割合を提供するように動的に変更することができ、それによって図4のアーキテクチャよりも電力消費を低減する。
図4及び図5に示した例は、WLANとBluetoothという特定の異種通信プロトコルのものであるが、これらは説明の目的のためであることが理解されたい。異種通信プロトコルは、全く異なるパケット処理を必要とする一式の通信プロトコルである。例としては、Bluetooth、WLAN、Zigbee、Near Field通信の何れかであり、その他は通信プロトコル分野の当業者には既知である。

Claims (18)

  1. 複数のスレッド上で動作するマルチスレッドプロセッサであって、各スレッドはスレッド_IDによって識別され、前記マルチスレッドプロセッサは、
    プログラム可能なエントリのシーケンスを有するスレッドマップレジスタであって、各エントリはスレッド_IDを示し、前記スレッドマップレジスタへの各要求に応答して後続のエントリのスレッド_IDを提供する前記スレッドマップレジスタと、
    各処理ステージが演算入力を受け取り、演算結果及びコンテキストを生成して、前記演算結果及びコンテキストを後続ステージに転送する複数の順次処理ステージと、を備え、
    前記順次処理ステージの少なくとも1つは、命令メモリから命令を受け取るプリフェッチステージであり、前記プリフェッチステージは前記スレッドマップレジスタへ要求し現在のスレッド_IDを受け取り、前記プリフェッチステージは前記現在のスレッド_IDに関連付けられたプログラムカウンタを選択し、前記プリフェッチステージは前記選択されたプログラムカウンタに関連付けられた命令を取得し、
    前記順次処理ステージの少なくとも1つはレジスタファイルを修正するように動作するデコード/実行ステージであり、前記デコード/実行ステージは複数の前記レジスタファイルに結合され、各レジスタファイルは特定のスレッド_IDに関連付けられる、マルチスレッドプロセッサ。
  2. 前記複数の順次処理ステージは、前記プリフェッチステージ、フェッチステージ、デコードステージ、前記デコード-実行ステージ、命令実行ステージ、ロードストアステージ、及び、前記デコード-実行ステージに結合されたライトバックステージの順に備える、請求項1に記載のマルチスレッドプロセッサ。
  3. 前記ロードストアステージ及び前記命令実行ステージは、前記デコード-実行ステージに結果を送る、請求項2に記載のマルチスレッドプロセッサ。
  4. 前記スレッドマップレジスタの複数のエントリは一意なスレッド_ID値の数よりも多い、請求項1に記載のマルチスレッドプロセッサ。
  5. 前記順次処理ステージのうちの少なくとも1つは、外部メモリに結合されたロードストアである、請求項1に記載のマルチスレッドプロセッサ。
  6. 前記外部メモリはストール状態になることがあり、前記外部メモリへの操作に関連するスレッド_ID値は前記スレッドマップレジスタ中で非連続的位置に配置される、請求項1に記載のマルチスレッドプロセッサ。
  7. 少なくとも2つのスレッド_ID値が、各スレッド_ID値に対して固有の割り込み入力と関連付けられ、前記割り込み入力の各々は、前記関連付けられたスレッド_ID値のみの実行を変化させ、その他のスレッド_ID値の実行は変化させない、請求項1に記載のマルチスレッドプロセッサ。
  8. スレッド_ID値のシーケンスとしてアサートされる値の正規線形配列を有するスレッドマップレジスタと、
    前記スレッドマップレジスタに結合され、前記アサートされたスレッド_ID値に基づいて特定のプログラムカウンタを選択するように動作するプログラムカウンタアレイと、を備えるマルチスレッドプロセッサであって、
    前記選択されたプログラムカウンタの命令は、スレッド_IDに関連付けられたプログラムカウンタに従って命令メモリから命令を取得するように動作するプリフェッチステージ、命令フェッチステージ、命令デコードステージ、命令デコード-実行ステージ、命令実行ステージ、ロードストアステージ、及び、ライトバックステージを連続的に有するパイプラインステージに送られ、
    前記ライトバックステージ、前記ロードストアステージ、及び前記実行ステージはそれぞれ結果をデコード-実行ステージに送り返し、
    前記デコード-実行ステージは複数のレジスタファイルに結合され、各レジスタファイルは前記命令デコードステージによって提供される入力値に関連付けられた特定のスレッド_IDに関連付けられる、マルチスレッドプロセッサ。
  9. 外部インタフェースが前記ロードストアステージに結合され、前記外部インタフェースは、ストール間隔を有する少なくとも1つのスレッドに関連付けられ、前記スレッドに関連付けられた前記スレッドマップレジスタ内のスレッド_ID値のシーケンスは、前記スレッドストール間隔よりも大きいサイクル数だけ互いに分離したスレッドストール間隔を有する、請求項8に記載のマルチスレッドプロセッサ。
  10. 前記スレッドマップレジスタ中の前記スレッド_ID値のシーケンスの少なくとも1つの前記スレッド_ID値が、前記スレッド_ID値のシーケンスにおいて互いに隣接して配置されていない、請求項8に記載のマルチスレッドプロセッサ。
  11. スレッドマップレジスタの値の前記線形配列の前記正規サイクルの間に、より多くの又はより少ない数の特定のスレッド_ID値を割り当てるように前記スレッドマップレジスタが動的に変更される、請求項8に記載のマルチスレッドプロセッサ。
  12. 各スレッド_IDは特定の割り込み入力に関連付けられ、前記特定の割り込み入力がアサートされると、前記特定の割り込み入力はスレッド割り込みルーチンに関連する命令を前記割り込みルーチンが完了するまで実行させる、請求項8に記載のマルチスレッドプロセッサ。
  13. アサートされた前記特定の割り込み入力に関連する前記スレッドがスレッド割り込みルーチンを実行する間、割り込み入力がアサートされていないスレッドに関連する命令は実行を継続する、請求項12に記載のマルチスレッドプロセッサ。
  14. 前記ロードストアステージは外部インタフェースに結合される、請求項8に記載のマルチスレッドプロセッサ。
  15. 前記外部インタフェースは、SPIインタフェース、PCIインタフェース、若しくは、読み込む又は書き込むアドレス及び日付の配信を含むインタフェースのうちの少なくとも1つである、請求項12に記載のマルチスレッドプロセッサ。
  16. スレッド割り当てに粒度を提供するマルチスレッドプロセッサであって、前記マルチスレッドプロセッサは複数の独立したスレッドの命令を実行するように動作し、前記マルチスレッドプロセッサは、
    プログラム可能なスレッド_ID値のシーケンスを有するスレッドマップレジスタであって、複数の独立したスレッドの各々が特定のスレッド_IDに関連付けられ、前記スレッドマップレジスタはプログラム可能な順序でスレッド_ID値を出力するようにプログラム可能であり、各特定のスレッド_IDは前記スレッド_ID値のシーケンス内の一つ以上の位置に関連付けられる前記スレッドマップレジスタと、
    各プログラムカウンタが前記独立したスレッドのうちの特定の1つ及び関連するスレッド_IDに関連付けられる、複数のプログラムカウンタと、
    前記スレッドマップレジスタの前記スレッド_ID値のシーケンスから現在のスレッド_ID値を受け取るように動作するプリフェッチステージであって、前記現在のスレッド_ID値に関連付けられた前記プログラムカウンタを使用して命令メモリからの命令を要求する前記プリフェッチステージと、
    前記プリフェッチステージによって要求された前記命令に対して演算を行う一連のパイプラインステージと、を備えるマルチスレッドプロセッサ。
  17. 前記一連のパイプラインステージは、前記命令を受け取るフェッチステージを備え、前記フェッチステージは、デコードステージ、デコード-実行ステージ、ロードストアステージ、及び、前記デコード-実行ステージに結合されたライトバックステージに順に結合し、前記パイプラインステージの各々が結果及びスレッド_IDを後続ステージに送る、請求項16に記載のマルチスレッドプロセッサ。
  18. 前記デコード-実行ステージは複数のレジスタファイルを含み、各レジスタファイルは前記デコード-実行ステージが受け取ったスレッド_IDに従って選択される、請求項16に記載のマルチスレッドプロセッサ。
JP2022516175A 2019-09-11 2020-09-11 スレッド粒度を提供するマルチスレッドプロセッサ Active JP7194315B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201962899079P 2019-09-11 2019-09-11
US62/899,079 2019-09-11
US16/945,936 US11288072B2 (en) 2019-09-11 2020-08-03 Multi-threaded processor with thread granularity
US16/945,936 2020-08-03
PCT/US2020/050587 WO2021051022A1 (en) 2019-09-11 2020-09-11 Multi-threaded processor with thread granularity

Publications (2)

Publication Number Publication Date
JP2022538371A true JP2022538371A (ja) 2022-09-01
JP7194315B2 JP7194315B2 (ja) 2022-12-21

Family

ID=74849774

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022516175A Active JP7194315B2 (ja) 2019-09-11 2020-09-11 スレッド粒度を提供するマルチスレッドプロセッサ

Country Status (6)

Country Link
US (2) US11288072B2 (ja)
JP (1) JP7194315B2 (ja)
KR (1) KR102478409B1 (ja)
CN (1) CN114730261B (ja)
DE (1) DE112020004311B4 (ja)
WO (1) WO2021051022A1 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12020066B2 (en) 2021-06-11 2024-06-25 International Busin ess Machines Corporation Asynchronous completion notification in a multi-core data processing system
US11645215B2 (en) 2021-06-11 2023-05-09 International Business Machines Corporation Efficient selection of a particular processor thread for handling an interrupt
US11755362B2 (en) 2021-06-11 2023-09-12 International Business Machines Corporation Techniques for handling escalation of interrupts in a data processing system
CN115033472B (zh) * 2022-04-18 2024-03-22 大连理工大学 基于线程循环调度顺序化的中断驱动程序模型检测方法
US11983537B1 (en) * 2022-12-21 2024-05-14 Ceremorphic, Inc. Multi-threaded processor with power granularity and thread granularity
CN115934102B (zh) * 2022-12-29 2023-12-12 格兰菲智能科技有限公司 通用寄存器动态分配方法、装置、计算机设备和存储介质
CN116400982B (zh) * 2023-05-26 2023-08-08 摩尔线程智能科技(北京)有限责任公司 配置中继寄存器模块的方法和装置、计算设备和可读介质
CN117519792A (zh) * 2023-11-06 2024-02-06 海光云芯集成电路设计(上海)有限公司 寄存器释放方法、处理器、芯片及电子设备

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003523561A (ja) * 1999-12-22 2003-08-05 ウビコム インコーポレイテッド 組込み型プロセッサにおいてゼロタイムコンテクストスイッチを用いて命令レベルをマルチスレッド化するシステムおよび方法
JP2006040141A (ja) * 2004-07-29 2006-02-09 Fujitsu Ltd マルチスレッドプロセッサ
US20060066623A1 (en) * 2004-09-29 2006-03-30 Bowen Andrew D Method and system for non stalling pipeline instruction fetching from memory
JP2007058331A (ja) * 2005-08-22 2007-03-08 Canon Inc プロセッサシステム及びマルチスレッドプロセッサ
JP2008015562A (ja) * 2006-06-30 2008-01-24 Kenichiro Ishikawa キャッシュミス/ヒット予想
JP2010086131A (ja) * 2008-09-30 2010-04-15 Nec Electronics Corp マルチスレッドプロセッサ及びその割り込み処理方法
US20100293347A1 (en) * 2009-05-15 2010-11-18 Luttrell Mark A Load/store ordering in a threaded out-of-order processor

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6574725B1 (en) * 1999-11-01 2003-06-03 Advanced Micro Devices, Inc. Method and mechanism for speculatively executing threads of instructions
KR100784412B1 (ko) * 2000-01-27 2007-12-11 엠 디솔루션 코포레이션 개선된 멀티-스레드 신호처리 방법 및 장치
US7327700B2 (en) 2003-05-30 2008-02-05 Redpine Signals, Inc. Flexible multi-channel multi-thread media access controller and physical layer interface for wireless networks
US7761688B1 (en) 2003-12-03 2010-07-20 Redpine Signals, Inc. Multiple thread in-order issue in-order completion DSP and micro-controller
US7263599B2 (en) * 2004-02-06 2007-08-28 Infineon Technologies Thread ID in a multithreaded processor
US7353364B1 (en) * 2004-06-30 2008-04-01 Sun Microsystems, Inc. Apparatus and method for sharing a functional unit execution resource among a plurality of functional units
US7555593B1 (en) * 2006-01-31 2009-06-30 Netlogic Microsystems, Inc. Simultaneous multi-threading in a content addressable memory
US8185722B2 (en) * 2007-03-14 2012-05-22 XMOS Ltd. Processor instruction set for controlling threads to respond to events
US9367321B2 (en) * 2007-03-14 2016-06-14 Xmos Limited Processor instruction set for controlling an event source to generate events used to schedule threads
US8219789B2 (en) * 2007-03-14 2012-07-10 XMOS Ltd. Interface processor
US7617386B2 (en) * 2007-04-17 2009-11-10 Xmos Limited Scheduling thread upon ready signal set when port transfers data on trigger time activation
US7613909B2 (en) * 2007-04-17 2009-11-03 Xmos Limited Resuming thread to service ready port transferring data externally at different clock rate than internal circuitry of a processor
US7676653B2 (en) * 2007-05-09 2010-03-09 Xmos Limited Compact instruction set encoding
US7958333B2 (en) * 2007-05-30 2011-06-07 XMOS Ltd. Processor with memory access stage adapted to fetch an instruction of a thread when no memory access operation is detected
US8966488B2 (en) * 2007-07-06 2015-02-24 XMOS Ltd. Synchronising groups of threads with dedicated hardware logic
US8224884B2 (en) * 2007-07-06 2012-07-17 XMOS Ltd. Processor communication tokens
US8347312B2 (en) * 2007-07-06 2013-01-01 Xmos Limited Thread communications
US8139601B2 (en) * 2007-07-06 2012-03-20 Xmos Limited Token protocol
US20090013331A1 (en) * 2007-07-06 2009-01-08 Xmos Limited Token protocol
US20090013397A1 (en) * 2007-07-06 2009-01-08 Xmos Limited Processor communication tokens
US7657683B2 (en) 2008-02-01 2010-02-02 Redpine Signals, Inc. Cross-thread interrupt controller for a multi-thread processor
US8572356B2 (en) * 2010-01-05 2013-10-29 Oracle America, Inc. Space-efficient mechanism to support additional scouting in a processor using checkpoints
US8627329B2 (en) * 2010-06-24 2014-01-07 International Business Machines Corporation Multithreaded physics engine with predictive load balancing
US9396030B2 (en) * 2013-03-13 2016-07-19 Samsung Electronics Co., Ltd. Quota-based adaptive resource balancing in a scalable heap allocator for multithreaded applications
EP2972794A4 (en) * 2013-03-15 2017-05-03 Soft Machines, Inc. A method for executing blocks of instructions using a microprocessor architecture having a register view, source view, instruction view, and a plurality of register templates
EP2972836B1 (en) * 2013-03-15 2022-11-09 Intel Corporation A method for emulating a guest centralized flag architecture by using a native distributed flag architecture
KR101708591B1 (ko) * 2013-03-15 2017-02-20 소프트 머신즈, 인크. 블록들로 그룹화된 멀티스레드 명령어들을 실행하기 위한 방법
US9858101B2 (en) * 2014-11-13 2018-01-02 Red Hat Israel, Ltd. Virtual machine input/output thread management
US11593154B2 (en) * 2018-12-20 2023-02-28 Intel Corporation Operating system assisted prioritized thread execution
CN112486572A (zh) * 2019-09-11 2021-03-12 硅实验室公司 具有细化线程进程的多线程无线通信处理器
CN112181748A (zh) * 2020-10-14 2021-01-05 深圳壹账通智能科技有限公司 基于环形队列的并发测试方法、装置、设备及存储介质

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003523561A (ja) * 1999-12-22 2003-08-05 ウビコム インコーポレイテッド 組込み型プロセッサにおいてゼロタイムコンテクストスイッチを用いて命令レベルをマルチスレッド化するシステムおよび方法
JP2006040141A (ja) * 2004-07-29 2006-02-09 Fujitsu Ltd マルチスレッドプロセッサ
US20060066623A1 (en) * 2004-09-29 2006-03-30 Bowen Andrew D Method and system for non stalling pipeline instruction fetching from memory
JP2007058331A (ja) * 2005-08-22 2007-03-08 Canon Inc プロセッサシステム及びマルチスレッドプロセッサ
JP2008015562A (ja) * 2006-06-30 2008-01-24 Kenichiro Ishikawa キャッシュミス/ヒット予想
JP2010086131A (ja) * 2008-09-30 2010-04-15 Nec Electronics Corp マルチスレッドプロセッサ及びその割り込み処理方法
US20100293347A1 (en) * 2009-05-15 2010-11-18 Luttrell Mark A Load/store ordering in a threaded out-of-order processor

Also Published As

Publication number Publication date
US11288072B2 (en) 2022-03-29
US20210072995A1 (en) 2021-03-11
KR20220054687A (ko) 2022-05-03
WO2021051022A1 (en) 2021-03-18
CN114730261A (zh) 2022-07-08
DE112020004311T5 (de) 2022-06-23
JP7194315B2 (ja) 2022-12-21
DE112020004311B4 (de) 2024-02-22
US20220171629A1 (en) 2022-06-02
KR102478409B1 (ko) 2022-12-15
US11775306B2 (en) 2023-10-03
CN114730261B (zh) 2023-01-17

Similar Documents

Publication Publication Date Title
JP7194315B2 (ja) スレッド粒度を提供するマルチスレッドプロセッサ
EP0852357B1 (en) Method for handling interrupts in a high speed I/O controller
US8549204B2 (en) Method and apparatus for scheduling transactions in a multi-speed bus environment
US9535760B2 (en) Method and system for dedicating processors for desired tasks
US9703595B2 (en) Multi-core system with central transaction control
CN111095230B (zh) 共享无线电仲裁
JP2007079789A (ja) 計算機システム及びイベント処理方法
US11696364B2 (en) Selective multiple-media access control
US9474084B2 (en) MAC protocol in wireless body area network capable of processing emergency data and wireless network communication method using same
US10531382B2 (en) Offloading MAC/link layer functions
CN103944596B (zh) 基于软件定义的支持多协议传输的通信设备
US20240147459A1 (en) Concurrent use of multiple protocols on a single radio
US20010055281A1 (en) Software modem architecture
CN112486572A (zh) 具有细化线程进程的多线程无线通信处理器
US12045645B2 (en) Multi-thread wireless communications processor with granular thread processes
US12101658B2 (en) Communication processor handling communications protocols on separate threads
US20210076248A1 (en) Communication Processor Handling Communications Protocols on Separate Threads
CN102117261A (zh) 一种芯片内部处理器之间的通信方法
DE102020123498A1 (de) Drahtloser Multi-Thread-Kommunikations-Prozessor mit granularen Thread-Prozessen
US20060048156A1 (en) Unified control store
US20060233189A1 (en) Communication resource scheduling among multiple links
GB2484907A (en) Data processing system with a plurality of data processing units and a task-based scheduling scheme
GB2484899A (en) Data processing system with a plurality of data processing units and a task-based scheduling scheme

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220510

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220510

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20220510

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220830

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221115

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221209

R150 Certificate of patent or registration of utility model

Ref document number: 7194315

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150