JP2003523561A - 組込み型プロセッサにおいてゼロタイムコンテクストスイッチを用いて命令レベルをマルチスレッド化するシステムおよび方法 - Google Patents

組込み型プロセッサにおいてゼロタイムコンテクストスイッチを用いて命令レベルをマルチスレッド化するシステムおよび方法

Info

Publication number
JP2003523561A
JP2003523561A JP2001547274A JP2001547274A JP2003523561A JP 2003523561 A JP2003523561 A JP 2003523561A JP 2001547274 A JP2001547274 A JP 2001547274A JP 2001547274 A JP2001547274 A JP 2001547274A JP 2003523561 A JP2003523561 A JP 2003523561A
Authority
JP
Japan
Prior art keywords
thread
time
threads
state
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.)
Granted
Application number
JP2001547274A
Other languages
English (en)
Other versions
JP4693326B2 (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 JP2003523561A publication Critical patent/JP2003523561A/ja
Application granted granted Critical
Publication of JP4693326B2 publication Critical patent/JP4693326B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/324Power saving characterised by the action undertaken by lowering clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3275Power saving in memory, e.g. RAM, cache
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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/461Saving or restoring of program or task context
    • 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)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)

Abstract

(57)【要約】 組込み型プロセッサにおいてマルチスレッド化を可能にするためのシステムおよび方法であって、マルチスレッド環境においてコンテクストスイッチを行い、複数のスレッド(1010)を複数のハードリアルタイム(802)および非リアルタイム(1014)優先順位レベルにスケジューリングし、マルチスレッド環境において複数のメモリブロックからデータおよび命令をフェッチし、および、コアプロセッサにおいて複数のスレッドを修正して特定のスレッドを有効にするシステムおよび方法。

Description

【発明の詳細な説明】
【0001】 関連出願 本出願は、1999年12月22日付の米国仮出願番号60/171,731、2000年6月22日付
の米国仮出願番号60/213,745、および2000年12月1日付の米国仮出願番号60/250,
781に基づいて優先権を主張し、これらは、ここで参照することによってすべて
包含される。
【0002】
【発明の属する技術分野】
本発明は、組込み型プロセッサアーキテクチャの分野に関する。
【0003】
【従来の技術】
マイクロコントローラなどの従来の組込み型プロセッサは、一度に1つの割り
込みにしか応答することができないので、単一のハードリアルタイム同期プロセ
スのみをサポートしている。Virtual Peripheral(VP)とよばれるハードウェア
機能のソフトウェア実装のほとんどは、非同期に応答するので、これらの割り込
みも非同期である。VPの例には、イーサネット(登録商標)周辺装置(例えば
100Mbitおよび10Mbitの送受信速度)、12Mbps USBなどの高速シリアル標準規格
の周辺装置、IEEE-1394 FireWire 音声処理および圧縮:ADPCM、G.729、Acoustic
al Echo Cancellation(AFC)、画像処理周辺装置、モデム、IRDA(1.5Mおよび4Mb
ps)などの無線周辺装置、および、Bluetooth互換システムなどが含まれる。こ
れらのVPは、家庭用PNA(Programmable Network Access)システム、VoIP(Voice
over Internet Protocol)システム、および、非対称型デジタル加入者線(ADSL
)などの様々なデジタル加入者線システムの一部として用いることができると共
に、機械制御などの従来の組込み型システムアプリケーションにも用いることが
できる。
【0004】 割り込みは、イベントが発生したことを示す中央演算処理装置(CPU)に対
する信号 である。従来の組込み型プロセッサは、外部ハードウェア割り込み、
タイマ割り込みおよびソフトウェア割り込みを含む様々な割り込みをサポートし
ている。従来のシステムにおいて、割り込みが発生すると、CPUは、現在の命
令を終了し、CPUコンテクストをセーブし(最低でもプログラムカウンタはセ
ーブする)、その割り込みに応じる割り込みサービスルーチン(ISR)のアド
レスへジャンプする。ISRが完了して割り込みに対して応答が返されると、C
PUは、割り込みからの復帰命令を実行して先のCPUコンテクストを回復し、
割り込みを受けた位置からメインコードを再び実行する。
【0005】 CPUは、複数の割り込みを受信しても、これらを処理できなければならない
。従来のシステムの中には、第1の割り込みを処理中に第2の割り込みが生じる
と、第1の割り込みが処理されるまで第2の割り込みが無視されるものもある。
図1は、従来の割り込み応答を示している。「メイン」コードが第1の割り込み
「A INT」によって中断されると、CPUは、その後、この割り込みに対す
るISRを処理する。第1の割り込みの処理中に第2の割り込み「B INT」
が受信される。この従来のシステムにおいては、第2の割り込み対するISRは
、第1の割り込みに対するISRが完了するまで開始されない。
【0006】 別の従来のシステムとしては、2レベルの割り込み優先順位を利用し、優先順
位の高い方の割り込みが優先順位の低い方の割り込みに割り込むことができるが
同じ優先順位の割り込みには割り込めないという規則を用いているものもある。
【0007】 組込み型プロセッサには、多数の割り込みソースがあるので、いずれの割り込
みソースがプロセッサに割り込みをかけることができるかを選択するための何ら
かの手段が存在しなければならない。従来のシステムにおいては、この選択は、
制御(マスク)レジスタを使用することによって行なわれる。
【0008】 上述のように、CPUは、割り込みが生じると、適切な割り込みサービスルー
チン(ISR)のアドレスをプログラムカウンタにロードする。この一実施形態
では、割り込み番号をランダムアクセスメモリ(RAM)への索引として用い、
例えば割り込みベクトルテーブルを用いて、動的ISRアドレス(例えばIntel
社の8x86プロセッサで使用されているような)を検索することである。この割り
込みベクトルテーブルの大きさは、通常、限られた数の割り込みしか有しないこ
と、または、割り込み同士をグループ化して同じアドレスを使用することによっ
て、制限されている。グループ化された割り込みは、その後、割り込みのソース
を判定するためにさらに分析される。
【0009】 1以上の割り込みの処理に伴う問題は、上述のように、その割り込みを処理す
る前に、CPUのコンテクストを格納しなければならないことにある。この格納
は、CPUがISRの処理を終えたあと、割り込みを受信したときと同じ位置か
ら処理を続行するために必要とされる。プログラムカウンタおよびその他様々な
レジスタなどのコンテクスト情報の格納は、通常、少なくとも1クロックサイク
ルを必要とし、もっと多くのクロックサイクルを必要とする場合もある。この遅
延は、CPUの有効処理速度を低減させてしまう。
【0010】 コンテクスト格納は、RISCベースのプロセッサなど、多くの従来のプロセ
ッサで用いられており、これらは、単一のレジスタ集合、例えば32個のレジス
タ(R0〜R31)を含んでいる。しかし、これらのレジスタは、所望の処理タ
スクを行うのに不充分な場合がある。そのため、プロセッサは、コンテクストを
切り替えるために、レジスタ値を頻繁にセーブおよびリストアしなければならな
くなる。コンテクストの切り替えは、割り込みを処理するとき、または、マルチ
スレッド環境において別のプログラムスレッドに切り替えるときに発生する。命
令を用いて古いコンテクストがスタックにセーブされ、コンテクストが切り替え
られ、その後、新しいスレッド用の先のコンテクストが命令を用いてスタックの
値を引き出すことによってリストアされる。これによって、次のようなものを含
めて、様々な問題が生じる。(1)各コンテクスト切り替えに対してセーブおよ
びリストア動作が頻繁に必要とされるので、プロセッサの性能を大幅に低下させ
る。(2)コンテクストを切り替えるために必要とされるオーバヘッドによって
、重要なタスクを適切に実行できない場合がある。
【0011】 例えば、プログラムが100クロックサイクルごとにポート位置の値を取得す
るためにそのポート位置を読み出す必要があり、その読み出し動作に5クロック
サイクルしか要しないものと仮定すると、仮に、プログラムが、コンテクスト切
り替えのために32個のレジスタを必要とし、そのセーブ動作およびリストア動
作のそれぞれが各レジスタについて2つの命令を必要とする場合、コンテクスト
のスイッチおよびリストアには、128個の命令が必要となり、読み出し動作は
毎100クロックサイクルごとに行わなければならないので、タスクを完全に実
行することができなくなる。
【0012】 従来のシステムは、タイムクリティカルなタスク用の専用ハードウェア、また
はフロントエンド専用ロジックを用いることによってデータを取り込み、それを
ファースト・イン・ファーストアウト(FIFO)バッファにプットし、ソフト
ウェアで処理することによって、この問題を解決しようと試みてきた。これらの
技術に伴ういくつかの問題としては、(1)専用フロントエンドロジックを必要
とすること、および(2)多くのメモリを必要とすることがある。例えば、FI
FOは、使用できない空間を増加させ、他のいかなる機能にも利用することがで
きない。
【0013】 従来の組込み型プロセッサシステムの割り込み処理に関する他の問題は、クリ
ティカルなタイミング要件を有する割り込みが失敗する場合があるということで
ある。図1を参照すると、割り込みAおよび割り込みBがいずれもタイムクリテ
ィカルである場合、これらがいずれも高優先順位を有するようにスケジューリン
グされるので(優先順位を利用できる場合)、割り込みAは適当な時点で処理さ
れるが、割り込みBは、割り込みAが処理され終わるまで処理されない。この遅
延によって、割り込みBは、所定の時間内に処理されないことがあるので、失敗
する場合がある。即ち、従来のシステムは、割り込みが処理される時間に関して
、適当な確実性を提供しない。
【0014】 組込み型プロセッサは、特定の目的に使用されるプロセッサである。組込み型
プロセッサは、通常、何らかのメモリおよび周辺機能をチップ上に集積させてい
る。従来の組込み型プロセッサは、複数のハードウェアスレッドを用いて動作す
る能力を持たない。
【0015】 パイプラインプロセッサは、第1の命令の実行が完了する前に第2の命令を開
始するプロセッサである。即ち、複数の命令が、異なるステージのそれぞれにお
いて、同時に「パイプライン」に存在する。図3は、従来のパイプラインを例示
している。
【0016】 フェッチステージ(F)は、メモリから命令をフェッチし、通常1サイクル当
たり1命令をフェッチする。デコードステージ(D)は、実行すべき命令機能を
解読して必要とされるリソースを識別する。リソースには、汎用レジスタ、バス
および機能ユニットなどが含まれる。発行(I)ステージは、リソースを予約す
る。例えば、パイプライン制御のインターロックがこのステージに保持される。
発行ステージの間に、レジスタからオペランドも読み出される。命令は、複数存
在し得る実行ステージ(E)のうちの1つにおいて実行される。最後のライトバ
ックステージ(W)は、結果をレジスタに書き込むために用いられる。
【0017】 従来のパイプラインプロセッサが抱える問題は、CPUの速度が増大すること
に伴って、待機状態にすることなく、即ち、命令パイプラインをストールさせる
ことなく、フラッシュメモリから命令オペコードをフェッチすることが困難にな
るということである。より高速のメモリ、例えばスタティックRAM(SRAM
)を用いて命令フェッチ回数を増加させることができるが、組込み型プロセッサ
に必要とされる空間および電力も増加してしまう。従来のシステムは、様々な技
術を用いてこの問題を解決しようと試みてきた。かかる技術の1つには、フラッ
シュメモリからフェッチおよび実行することがある。しかし、この技術は、従来
のプロセッサの実行速度を、例えば40MIPS(1秒当たり4千万命令)にま
で制限する場合があり、この速度は多くのアプリケーションにとって満足なもの
でない。
【0018】 他の技術としては、プログラムコードをフラッシュメモリその他の不揮発メモ
リから高速なSRAMにロードし、その後すべてのプログラムコードをSRAM
から実行することがある。上述のように、この解決方法の問題点は、SRAMが
かなり大きな空間をダイ上に必要とし(相当するフラッシュメモリに比較して約
5倍の空間を必要とする)、動作させるためにかなりの電力を必要とすることで
ある。
【0019】 第3の技術としては、フラッシュメモリおよびSRAMキャッシュを用いるこ
とがある。参照するプログラムがSRAM内にあれば全速力での実行が可能にな
るが、そうでなければキャッシュミスが発生し、次のキャッシュロードの間に長
い待ち時間が生じる。かかるシステムは、実行時間が予測不能かつ判定不能にな
り、これは通常、実時間性に制約があるプロセッサにとって許容されない。この
実時間性の制約は、IEEE802.3(Ethernet(登録商標))、USB、HomePNA1.1また
はSPI(シリアル周辺装置インタフェース)等の標準規格に必要とされるタイミン
グに適合させるために課せられる制約である。これらの標準規格では、イベント
が発生してから一定量の時間内に応答が生成されることを必要とする。
【0020】
【発明が解決しようとする課題】
従って、(1)組込み型プロセッサにおいてマルチスレッド化を可能にし、(
2)マルチスレッド環境においてゼロタイムコンテクストスイッチを行い、(3
)マルチスレッドに対して複数のハードリアルタイムおよび非リアルタイム優先
順位レベルを許容するようにスケジューリングし、(4)マルチスレッド環境に
おいてデータおよび命令を複数のメモリブロックからフェッチし、および(5)
特定のスレッドがマルチスレッドの複数の状態を命令パイプラインに格納できる
ようにする、システムおよび方法が必要とされている。
【0021】 本発明は、デジタル信号プロセッサ(DSP)と共に用いることも可能であり
、その場合、本発明によって、より小さいメモリバッファ、より高速の応答時間
および入出力遅延時間の低減が可能になる。
【0022】
【課題を解決するための手段】
本発明は、組込み型プロセッサにおいてマルチスレッド化を可能にし、マルチ
スレッド環境においてゼロタイムコンテクストスイッチを行い、複数のハードリ
アルタイムおよび非リアルタイム優先順位レベルを許容するように複数のハード
ウェアスレッドをスケジューリングし、マルチスレッド環境においてデータおよ
び命令を複数のメモリブロックからフェッチし、特定のスレッドがマルチスレッ
ドの複数の状態を命令パイプラインに格納できるようにする、システムおよび方
法である。
【0023】
【発明の実施の形態】
図面を参照して、本発明の好ましい実施形態をこれから説明する。図面におい
て、同じ符号は、同一または機能的に類似した構成要素を示している。また、図
面において、各符号の一番左の桁は、その符号が最初に使用された図面の番号に
対応している。
【0024】 本発明は、上述した問題を解決するシステムおよび方法である。具体的には、
本発明は、組込み型プロセッサにおいてマルチスレッド化を可能にし、マルチス
レッド環境においてゼロタイムコンテクストスイッチを行い、多数のハードリア
ルタイムおよび非リアルタイム優先順位レベルを許容するようにマルチスレッド
をスケジューリングし、マルチスレッド環境においてデータおよび命令を複数の
メモリブロックからフェッチし、特定のスレッドがマルチスレッドの複数の状態
を命令パイプラインに格納できるようにするものである。
【0025】 本発明は、複数のプログラムスレッドを単一プロセッサ上で同時実行している
ように見せると共に、スレッド間の実行の自動切替を可能にすることによって、
従来の組込み型プロセッサの制限を克服している。本発明は、ゼロタイムコンテ
クストスイッチ能力、自動スレッドスケジューラおよび複数種類のメモリ(例え
ばSRAMおよびフラッシュメモリ)からのフェッチコードを有することによっ
て、これを達成する。この同時実行の態様は、プロセッサのパイプラインを利用
可能なスレッド間で時分割多重化することによって達成される。
【0026】 本発明のマルチスレッド化能力によって、複数のスレッドがパイプラインに同
時に存在することが可能になる。図2は、マルチスレッド環境における割り込み
応答を例示している。スレッドAおよびBは、いずれもハードリアルタイム(H
RT)スレッドであり、それぞれ割り込みAおよびBに依存してストールしてい
る。スレッドCは、メインコードスレッドであり、非リアルタイム(NRT)で
ある。割り込みAが発生すると、スレッドAが再開され、スレッドAは、スレッ
ドCとインタリーブされる。スレッドCは、NRTなので、もはや完全なパイプ
ラインスループットを有しなくなる。割り込みBが発生すると、スレッドBが再
開され、スレッドBは、スレッドAと同じ優先順位であるので、パイプラインに
インタリーブされ、その時点でスレッドCが完全にストールする。メインコード
であるスレッドCは、HRTスレッドがパイプラインスループットのすべてを使
用してはいないときにのみ、実行を継続する。
【0027】 図5は、本発明の一実施形態による組込み型プロセッサを例示している。この
組込み型プロセッサは、フェーズロックドループ(PLL)即ちウォッチドッグ
タイマーなどの周辺装置ブロックを含むことができる。また、この組込み型プロ
セッサは、シャドウSRAM付きフラッシュメモリを含むこともできる。シャド
ウSRAMは、プログラムに対してより高速なアクセスを提供する。半導体製造
プロセスによっては、SRAMのアクセスは、フラッシュメモリのアクセスより
も速い場合がある。シャドウSRAMへのプログラムのロードは、プログラム制
御で行なわれる。また、この組込み型プロセッサは、従来のSRAMデータメモ
リ、CPUコア、Virtual Peripheralサポートロジックと呼ばれる入出力(I/
O)サポートロジック、および、有限インパルス応答(FIR)フィルタコプロ
セッサも含む。本発明のマルチスレッド化態様は、マルチスレッドコンテクスト
およびスレッド選択ロジックが内在する場合、CPUの大部分を占める。さらに
、マルチスレッド化の実施形態によっては、同一チップ上にコプロセッサまたは
DSPコアも存在する場合がある。
【0028】 上述のように、本発明の特徴は、スレッドコンテクストをオーバヘッドなしに
切り替える能力にある。オーバヘッドのないコンテクストスイッチは、フェッチ
ユニットが命令をフェッチするために使用するプログラムカウンタを制御するこ
とによって、達成される。図4は、本発明の一実施形態によるマルチスレッド化
されたフェッチ切替パイプラインを例示している。プロセッサは、すべてのレジ
スタアクセスが正しいスレッドのコンテクスト内の正しいレジスタに関連する限
り、パイプライン内の異なるステージにおいて異なるスレッドからの情報を用い
て機能する。
【0029】 毎サイクルごとに(または毎特定量ごと、即ちあるセット数のサイクルまたは
命令ごとに)スレッドを切り替えることによって、システムは、アクティブな同
優先順位のスレッドの数に依存するジャンプ(パイプラインのフラッシュを必要
とする)によるペナルティも低減/除去する。跳んでいるスレッドをフラッシュ
する必要しかないので、その他のスレッドがすでにパイプラインに存在していれ
ば、フラッシュが回避/低減される。
【0030】 ゼロタイムコンテクストスイッチは、いかなる時間ペナルティを招くこともな
く、あるプログラムコンテクストと別のプログラムコンテクストとの間を切り替
える能力である。これは、コンテクストスイッチがマシン命令間で行なわれるこ
とを意味している。同様の発想は、コンテクスト間のスイッチのコストがゼロで
はないが小さい、低オーバーヘッドコンテクストスイッチに適用することもでき
る。本発明は、これらの状況のいずれをも包含しているが、分かりやすくする目
的で、ゼロタイムコンテクストスイッチを以下で説明する。ゼロタイムコンテク
ストスイッチと低オーバーヘッドコンテクストスイッチとの違いは、当業者には
明らかであろう。上述のように、プログラムコンテクストは、マシンの状態を表
すレジスタの集まりである。コンテクストには、通常、プログラムカウンタ、状
態レジスタおよび複数のデータレジスタが含まれる。すべてのプログラム間で共
用する他の何らかのレジスタを含むことも可能である。
【0031】 命令がパイプラインに渡されるとき、コンテクスト番号も一緒に渡される。こ
のコンテクスト番号は、プログラムカウンタをロードするために使用するコンテ
クストレジスタを定め、レジスタ値をロードまたはセーブする。これによって、
各パイプラインステージが個別のコンテクストで動作できるようになっている。
コンテクスト間の切り替えは、単に異なるコンテクスト番号を用いることによっ
て行なわれる。
【0032】 図6は、本発明の一実施形態によるスレッドごとのコンテクストの例を示して
いる。この例におけるコンテクストには、図示のように、32個の汎用レジスタ
、8個のアドレスレジスタ、および、様々なその他の情報が含まれている。スレ
ッドのコンテクストの一部として格納されるデータの種類は、図6に例示するも
のとは異なる場合もある。
【0033】 本発明は、ゼロタイムコンテクストスイッチによって2以上のコンテクスト間
を迅速に(すべての命令をできる限り頻繁に)切り替えるという利点を有する、
命令レベルでマルチスレッド化するシステムおよび方法である。各コンテクスト
が実行に要する時間の量は、「量子時間」(quantum)と呼ばれる。最小の量子時
間は、1命令に相当する1クロックサイクルである。マルチサイクル命令の場合
、量子時間は1命令よりも小さい場合がある(即ち、タイムスライスの分解能は
、スレッドが実行している命令ではなく、単に量子時間によって決まる)。
【0034】 利用可能なコンテクスト間での利用可能な処理時間の割り当ては、スケジュー
リングアルゴリズムによって実施される。S.Eggers他による「Simultaneous Mul
tithreading:APlatform for Next Generation Processors」IEEE Micro, pp.12-
19(1997年9/10月)など、従来のマルチスレッド化システムにおいては、コンテ
クスト間での量子時間の割り当ては、キャッシュ内の命令の利用可能性などの外
部刺激によって決まる。
【0035】 本発明においては、量子時間の割り当てが固定のスケジュールに従って行なわ
れる場合に利点が生じる。このコンテクストのスケジューリングは、厳密なスケ
ジューリング、やや柔軟なスケジューリングおよび自由なスケジューリングの3
つに大別することができる。
【0036】 図7aは、本発明の一実施形態による厳密なスケジューリングの例を示してい
る。図7bは、本発明の一実施形態によるやや柔軟なスケジューリングの例を示
している。図7cは、本発明の実施形態による自由なスケジューリングの例を示
している。
【0037】 図7aを参照すると、図4に例示したスレッドコントローラ等のスケジューラ
を用いて厳密なスケジューリングを行う場合、スケジュールは固定され、短時間
にわたって変化しない。例えば、スケジュールが図7aに示すように「ABAC
」とプログラムされている場合、スレッドの実行時シーケンスは、図7aに示す
ように「ABACABACABAC...」となる。厳密にスケジューリングされ
たスレッドは、一秒当たりに実行される命令の数が厳密であることからハードリ
アルタイム(HRT)スレッドと呼ばれ、HRTスレッドは、厳しいタイミング
要件を満たすことのできる決定性性能(deterministic performance)を有する
【0038】 図7bを参照すると、スケジューラがやや柔軟なスケジューリング技術を用い
る場合、スケジュールのいくらかが固定され、残りの利用可能な量子時間は、非
リアルタイム(NRT)スレッドで満たされている。例えば、スケジュールが「
A*B*」とプログラムされていて、「*」が任意のNRTスレッドを実行する
ことができるワイルドカードであるものとすると、スレッドの実行時シーケンス
は、NRTスレッドであるスレッドD、EおよびFを用いて、図7bに示すように
「ADBEAFBEAFBE...」のようになる。
【0039】 厳密なスケジューリングまたはやや柔軟なスケジューリングを用いることの利
点は、各HRTスレッドに対する実行時間の割り当てが設定されているので、各
スレッドを実行するために必要な時間が予測可能であることにある。スレッドが
多い場合、スレッドが所定の時間内で実行を完了する必要がある場合があるので
、かかる予測可能性は、重要である。これに対して、従来のシステムを参照して
上述した割り込みサービスルーチンは、ハードリアルタイムスレッドが予測可能
な時間で完了することを保証していない。
【0040】 ハードリアルタイムスレッドについてのこれらの静的およびやや柔軟なスケジ
ュールは、プログラム可能な量子時間サイクルテーブルを用いて達成される。テ
ーブル内の各エントリは、利用可能な量子時間サイクルを表し、そのサイクルが
割り当てられるハードリアルタイムスレッドを提供する。テーブルは、例えば6
4エントリまでの可変長である。テーブルの端に達すると、スケジューラは、テ
ーブル内の最初の要素から続けて、無限に繰り返すシーケンスを提供する。例え
ば、図7dは、本発明の一実施形態による3つのハードリアルタイムスレッドを
用いたやや柔軟なスレッドスケジュールの例である。スレッドAには時間の50
%がスケジュールされ、スレッドBには時間の25%の時間がスケジュールされ
、および、スレッドCには時間の12.5%がスケジュールされている。CPU
が200MIPSのクロックである場合、これらは、スレッドAが100MIPSの専用
CPU実行速度を有し、スレッドBが50MIPSの専用CPU実行速度を有し、ス
レッドCが25MIPSの専用CPU実行速度を有し、残りのスレッド(例えば、非
リアルタイムスレッド)が25MIPSの最小CPU実行速度を有することに等しい
【0041】 従って、各ハードリアルタイムスレッドは、テーブルで指定されたように命令
スロットが割り当てられるので、指定した実行速度が保証され、各々が保証され
た決定性性能を有する。本発明によって与えられる予測可能性は、ハードリアル
タイムスレッドを実行するために必要とされる時間が分かり、また、スレッドを
確実に完了させるためにプログラムが追加の時間を割り当てる必要がなくなるの
で、プログラムの効率を大幅に向上させる。即ち、各ハードリアルタイムスレッ
ドに対する割り込み待ち時間は、その静的割り当ての分解能内に判定される。こ
の待ち時間は、パイプライン長とスレッドが次にスケジューリングされるまでの
時間とによって判定される。付加されるスケジューリングジッタは、同期クロッ
クと同期する非同期割り込みと同じであると考えることができる。例えば、25
%の割り当てをもつスレッドは、システムクロックの25%で動作しているクロ
ックに関して、決定性割り込み待ち時間を有することになる。
【0042】 このテーブルは、ハードリアルタイムタスクのために命令スロットを予約して
いるが、これは、他の非リアルタイムタスクもその命令スロットで実行できない
ことを意味しているのではない。例えば、スロットCは、ほとんどの時間、アイ
ドル状態である場合がある。例えば、スレッドCが115.2kbpsのUAR
Tを表す場合、スレッドCは、データを送受信するときにしか決定性性能を必要
としない。スレッドは、アクティブでない場合、スケジューリングされる必要が
ない。スケジューラは、すべての空き命令スロットおよびスレッドに割り当てら
れているがアクティブではない命令スロットを、非リアルタイムスレッドのため
に利用することができる。
【0043】 利用可能なMIPSのうちの50%より多くを単一スロットに割り当てること
ができ、これによって、同一のスレッドからの連続する命令相互間の遅延時間が
非決定性になるが、同じにはならない。アプリケーションによっては、この命令
相互間の遅延のばらつきは欠点でない場合もある。例えば、あるスレッドをスロ
ット1,2,3,4,5,6,7,9,...にスケジューリングすることによって、CPUの利用
可能なMIPSの75%を達成できる場合もある。ある種のNRTスレッドのス
ケジューリングは、各スレッドをとおして回転する。即ち、スレッドは、各アク
ティブなスレッドから実行された1命令を用いて、順番にスケジューリングされ
る。この種のやや柔軟なスケジューリングによって、非リアルタイムスレッドを
スケジュール内の空きスロットに(例えば、図7dに「*」でラベル付けされた
量子時間に)スケジューリングすることが可能になり、スロット内において、ス
ケジューリングされたハードリアルタイムスレッドは、上述のように非アクティ
ブである(例えば、スレッドBがアクティブでないとすれば、スレッドBの位置
において)。この種のスケジューリングは、しばしば「ラウンドロビン」スケジ
ューリングと呼ばれる。
【0044】 非リアルタイムシステムについて、複数レベルの優先順位がサポートされる。
低優先順位のスレッドは、高優先順位のスレッドに対して常に道をゆずる。高レ
ベル優先順位によって、低優先順位のスレッドに対して複数命令の微小な動作が
可能になるので、リアルタイムオペレーティングシステム(RTOS)のソフト
ウェアでの実施が可能になる。RTOSカーネルのNRTスレッドが、その制御
下で他のNRTスレッドよりも高い優先順位を有している場合、その高優先順位
のスレッドが動作している間は、いかなる低優先順位のスレッドもスケジューリ
ングされないことが保証される。それゆえ、RTOSカーネルは、他のNRTス
レッドによって割り込みを受ける可能性を考慮することなく、動作を実行するこ
とができる。
【0045】 図7cを参照すると、自由なスケジューリング技術を利用する場合、非リアル
タイムスレッド用に特に予約される量子時間はなく、いずれの量子時間もリアル
タイムスレッドのために用いることができる。
【0046】 スレッドは、静的なスケジュールを有し(即ち、スレッドには、HRTテーブ
ルの固定スロットが割り当てられる)、スレッドには、NRTスレッドとしてフ
ラグを立てることもできる。従って、スレッドは、HRTテーブルによる割り当
てにしたがって最小実行速度が保証されているが、他のスロットをNRTスレッ
ドとして用いることによって、さらに高速に実行することもできる。
【0047】 本発明には、複数のソフトウェアスレッドを実行し、これらのスレッド間を自
動的に切り替えるためのハードウェア支援機能が含まれ、以下にこれを説明する
。このマルチスレッド化支援機能には、リアルタイムおよび非リアルタイムタス
クのスケジューリング、バイナリおよびカウンティングセマフォ(割り込み)に
よるタスク間通信、高速割り込み応答、並びに、コンテクストスイッチおよび増
分リンクなどを含む、様々な特徴が含まれる。
【0048】 マルチスレッド化支援機能を組込み型プロセッサのコアに含めることによって
、コンテクストスイッチのためのオーバーヘッドをゼロまで低減させることがで
きる。ゼロタイムコンテクストスイッチは、個々の命令間でのコンテクストスイ
ッチを可能にする。ゼロタイムコンテクストスイッチは、コアの時分割多重化の
ようなものと考えることができる。
【0049】 本発明の一実施形態においては、フラッシュメモリが複数の独立したブロック
に分割されている場合であっても、SRAMとフラッシュメモリとの両方からコ
ードをフェッチすることを可能にしている。このことは、本発明のスレッドスケ
ジューリングを複雑にしている。本発明において、各メモリブロックは、スレッ
ドの全体的なスケジューリングとは独立にスケジューリングされる。図8は、本
発明の一実施形態による2レベルのスケジューリングを用いたスレッドフェッチ
ロジックを例示している。
【0050】 本発明の一実施形態において、フェッチされた命令は、複数種のメモリに格納
することができる。例えば、命令は、SRAMおよびフラッシュメモリに格納す
ることができる。上述のように、命令等のデータをSRAMからアクセスする場
合、同じデータまたは命令をフラッシュメモリからアクセスするよりも高速であ
る。この実施形態においては、ハードリアルタイムスレッドが単一サイクルでフ
ェッチされ、ハードリアルタイムスレッドについてのすべての命令がSRAMに
格納されるようにすることが好ましい。これに対して、非リアルタイムスレッド
からフェッチする命令は、SRAMまたはフラッシュメモリのうちのいずれに格
納してもよい。
【0051】 図8を参照すると、シャドウSRAM内の命令は、HRTスレッドセレクタ80
2またはNRTシャドウスレッドセレクタ804からのポインタに基づいてフェッチ
される。フラッシュメモリからの命令は、NRTフラッシュスレッドセレクタ80
6からのポインタに基づいてフェッチされる。スレッドセレクタ802,804,806につ
いては、以下でさらに詳しく説明する。SRAMおよびフラッシュメモリの出力
は、マルチプレクサ(MUX)810に入力され、マルチプレクサは、ポストフェ
ッチセレクタ812からの出力に基づいて、以下で説明するように、適切な命令を
出力する。その後、MUXの出力をデコードし、従来のパイプラインプロセスま
たは以下で説明する修正したパイプラインプロセスを用いて、実行を継続するこ
とができる。
【0052】 図9は、本発明の一実施形態によるHRTスレッドセレクタ802を例示してい
る。上で示したように、シャドウSRAM820は、単一サイクルランダムアクセ
ス命令フェッチを提供する。この実施形態において、ハードリアルタイム(HR
T)スレッドは、単一サイクルの判定を必要とするので、かかるHRTスレッド
がSRAMからしか実行できない場合がある。HRTスレッドコントローラ802
は、複数のHRTスケジュールテーブルの選択を可能にするバンクセレクタ902
を含んでいる。バンクセレクタは、任意のある時点においていずれのテーブルが
使用中であるかを判定する。複数テーブルの使用によって、既に実行されている
HRTスレッドに影響を与えることなく、新しいスケジュールを構築することが
できるようになる。カウンタ904は、HRTセレクタ802内のレジスタにおけるタ
イムスライスを指し示すために用いられる。カウンタ904は、最後のエントリに
達したとき、即ちタイムスライス63が読み出されたときに、リセットされる。カ
ウンタ904はバンクセレクタ902とともに用いられ、後続のサイクルにおいてシャ
ドウSRAMにフェッチされることになるスレッドを識別する。識別されたスレ
ッドがアクティブである(例えばサスペンドされていない)場合、識別されたス
レッドのプログラムカウンタ(PC)が獲得され、後続のサイクルにおいてシャ
ドウSRAMのアドレスとして用いられる。例えば、図9に関して説明すると、
バンクセレクタ902およびカウンタ904に基づいてタイムスライス番号1が識別さ
れた場合、このタイムスライスによって識別されたスレッドは、後続のサイクル
においてSRAMによってフェッチされることになるスレッドを表している。図
9に記載したブロックの出力は、信号の集合である。8つの信号を用いて、8ス
レッドのうちのいずれがフェッチされることになるかを判定する。もちろん、本
発明は、8スレッドのみの制御に限定されるわけではない。さらに多くの信号を
用いてさらに多くのスレッドを制御することもできる。信号の1つは、フェッチ
すべきHRTスレッドが存在しないことを示すために用いられる。
【0053】 図10は、本発明の一実施形態によるNRTシャドウSRAMスレッドセレク
タ804およびシャドウSRAMアクセスロジックを例示している。NRTシャド
ウスレッドセレクタ804には、利用可能なスレッド識別装置1010、シャドウSR
AMからフェッチされた過去の動的スレッドを識別するためのレジスタ1012、お
よび、フリップフロップ(F/F)が含まれる。レジスタおよび利用可能なスレ
ッド識別装置1010(以下で説明する)は、スレッドセレクタユニットによって受
信され、次のサイクルにおいて(存在すれば)SRAMによってアクセスされる
べきスレッドを識別する。スレッドセレクタ1014は、1012から受信した最後のス
レッド番号と1010から受信した利用可能なスレッド識別装置とを用いて次にフェ
ッチすべきスレッドを判定し、NRTスレッドの正しいラウンドロビン選択を保
証する。
【0054】 図11は、本発明の一実施形態によるNRT利用可能スレッド識別装置1010を
例示している。NRT利用可能スレッド識別装置1010は、各スレッドについて、
そのスレッドがアクティブであるか否か、そのスレッドが動的なものとして識別
されているか否か、および、そのスレッドが高優先順位なものとしてマークされ
ているか否かに基づいて、出力を生成する。アクティブ、動的、高優先順位のス
レッドが存在しない場合、NRT利用可能スレッド識別装置1010は、各スレッド
について、そのスレッドがアクティブであるか否か、そのスレッドが動的(NR
T)なものとして識別されているか否か、および、そのスレッドが低優先順位な
ものとしてマークされているか否かに基づいて、出力を生成する。
【0055】 NRTシャドウSRAMスレッドセレクタ804は、各スレッドについて、NR
Tスケジュール可能出力が真であるか否か、および、そのスレッドのPCがシャ
ドウSRAMを指しているか否かを判定するロジックに基づいて、シャドウNR
Tスケジュール可能ロジック出力を生成する。PCがシャドウSRAM内の位置
を指しているか否かの判定は、アドレスを検査することによって、即ち、シャド
ウSRAMおよびフラッシュメモリがアドレス空間内の異なる領域にマップされ
ていることを検査することによって、行なわれる。
【0056】 上述のように、NRT利用可能スレッド識別装置1010は、利用可能なスレッド
を識別し、これらのスレッドのうちの1つは、過去に選択され、シャドウRAM
から連続的にフェッチされ、パイプラインによって使用されて、レジスタ1012に
格納されている過去のスレッドに基づいて選択される。
【0057】 HRTスレッドセレクタ802が、そのサイクルがNRTスレッドのために利用
可能であることを示す場合、選択されたスレッドのPCが取得され、次のサイク
ルにおいてシャドウSRAMアクセスのためのアドレスとして使用される。
【0058】 現在のシャドウSRAMアクセスがNRTスレッド(過去のサイクルで選択さ
れた)でなく、かつ、ポストフェッチセレクタ812がそのシャドウSRAMをデ
コードステージのためのソースとして選択しない限り、選択されたスレッド番号
(「スレッドなし」の場合も含む)がレジスタ1012にラッチされる。即ち、現在
のシャドウSRAMアクセスがHRTスレッドである場合、現在のシャドウSR
AMアクセスが非スレッドである場合、または、現在のSRAMアクセスがポス
トフェッチセレクタ812によって選択されたNRTスレッドである場合にのみ、
選択されたスレッド番号が「過去のスレッド」であるものとしてラッチされる。
ポストフェッチセレクタ812は、以下でさらに詳細に説明する。
【0059】 図12は、本発明の一実施形態によるNRTフラッシュメモリスレッドセレク
タ806を例示している。フラッシュ読み出し専用メモリ(ROM)は、そのデー
タにアクセスするために複数のクロックサイクルを必要とする。本発明のこの実
施形態においては、フラッシュROMからの命令速度を向上させるために、フラ
ッシュメモリが4つのブロックに分割され、それぞれがアドレス空間における4
つの範囲に対応している。これらのブロックは、図8において、フラッシュA、
フラッシュB、フラッシュCおよびフラッシュDとして示されている。各ブロッ
クは独立にフェッチすることができ、そのため、各ブロックは、そのブロックか
らいずれのスレッドをフェッチすることができるかを判定するために、各自のN
RTスレッドセレクタ806を必要とする。上述のように、NRTスレッドだけは
、フラッシュROMから実行することができる。
【0060】 アクティブなスレッドの集合とPCがこのフラッシュブロックに存在するスレ
ッドの集合との交差が、利用可能スレッド識別装置1010によって生成され、スレ
ッドセレクタ1214によって受信される。スレッドセレクタ1214は、過去のスレッ
ド番号を用いて次のスレッドをラウンドロビンの方法で選択する。スレッドPC
のユニット1214は、選択されたスレッドに対するプログラムカウンタ(PC)を
判定し、このPCをアドレスに従ってフラッシュブロックに渡す。フラッシュメ
モリの出力は2重バッファリングされており、後続のフェッチ動作が開始された
後でもその出力が「有効」にとどまるようにしている。
【0061】 図13は、本発明の一実施形態によるポストフェッチセレクタを例示している
。フラッシュブロックおよびSRAMブロックのそれぞれがスレッドを選択した
後、ポストフェッチセレクタ812は、そのスレッドをパイプラインに渡すスレッ
ドとして選択する。HRTスレッドがアクティブであれば、これが常に選択され
る。そうでなければNRTスレッドが選択される。この例においては、フラッシ
ュ/シャドウSRAMリソースは、ソースセレクタ1302によってNRTスレッド
が選択された元の最後のフラッシュ(またはシャドウSRAM)ブロックに応じ
て、ラウンドロビンの順で選択される。
【0062】 本発明の別の態様は、関連するスレッドまたは他のスレッドについてのスレッ
ド状態をセーブおよびリストアする能力である。マルチスレッドCPUは、機能
ユニットの集合に対してインターリーブされた複数のスレッドの実行を有する。
CPU状態は、各スレッドに対して複製される。スレッドによっては、他のスレ
ッドの状態を読み出しまたは書き込みできる必要があるスレッドもある。例えば
、1スレッドで動作しているリアルタイムオペレーティングシステム(RTOS
)は、単一のハードウェアスレッドに対して多重の複数のソフトウェアスレッド
の実行を必要とする場合があり、そのため、RTOSは、かかるソフトウェアス
レッドの状態をセーブおよびリストアできる必要がある場合がある。
【0063】 他のプロセッサは、各ハードウェアスレッド上で動作する個別のオペレーティ
ングシステム(OS)カーネルを有し、カーネルはこれらのスレッドの状態をセ
ーブおよびリストアすることに責任を負っている。これは、既存のRTOSから
のコードがハードウェアスレッドを制御することに用いられる場合、適当ではな
い。
【0064】 本発明と共に用いることのできる命令集合の1種は、1つの一般的なソース(
メモリまたはレジスタ)、1つのレジスタソースおよび1つの一般的な宛先を用
いて、命令集合を記憶するためのメモリである。本発明は、1つのスレッドにそ
の一般的なソースあるいは一般的な宛先またはその両方を設定し、他のスレッド
の状態を用いることを可能にする。プロセッサ状態ワードにおける2つのフィー
ルド、ソーススレッドおよび宛先スレッドが使用され、レジスタまたはメモリに
対するソースおよび/または宛先アクセスについての正常なスレッドIDを上書
きする。
【0065】 本発明は、従来の単一スレッドのCPUからのRTOSコードを新しいマルチ
スレッドのアーキテクチャに容易に移植することを可能にする。本発明は、作業
者スレッドと管理者スレッドとの間に提示する単純な方法を与える。
【0066】 本発明の他の実施形態において、上述のマルチスレッド化システムは、さらに
強力なパイプライン構造と共に用いられる。図14は、本発明の一実施形態によ
るマルチスレッド化された発行スイッチパイプラインを例示している。従来のパ
イプライン処理環境においては、フェッチおよびデコードステージは、そのフェ
ッチおよびデコードステージがいつ行なわれたに関わらず、同一の出力になる。
これに対して、本発行ステージはデータ依存であり、このステージは、データを
ソースレジスタから取得するので、この動作の結果は、発行動作の時点における
ソースレジスタのデータに依存している。本発明のこの実施形態においては、ス
レッド選択決定は、発行ステージの入力に対して遅延される。
【0067】 本発明の一実施形態において、発行スイッチは、図14に示すように、フェッ
チおよび発行ステージにおいてスレッドラッチを使用することによって、実施さ
れる。この発行ステージは、いずれのスレッドを実行すべきかを、優先順位およ
びスレッドスイッチアルゴリズム(プリフェッチ選択に従う)に基づくだけでな
く、データおよびリソース依存性にも基づいて決定する。フェッチおよび発行ス
テージ内のラッチの数を増やすことによって、いかなる数のスレッドも扱うこと
ができる。
【0068】 図15は、本発明の一実施形態によるマルチスレッド化された並列デコードパ
イプラインを例示している。図15は、並列フェッチおよびデコード拡張を示し
ている。並列フェッチステージは、各サイクルごとにメモリアクセスを必要とす
るので、プリフェッチシステムなしに、または、プログラムメモリをマルチポー
ト化することなく並列化することができない。プログラムメモリのマルティポー
ト化は、すべてのスレッドのそれぞれが利用性のほとんどない各自のポートを有
する必要があるので、経済的な解決方法ではない。プリフェッチシステムを用い
て、一時的にプログラムメモリの線をフェッチすることによって、バス競合を低
減することができる。すべてのスレッドのそれぞれについてバッファ線を実装し
、これらのバッファ線をフェッチステージとデコードステージとの間でマルチポ
ートした場合、フェッチユニットは命令を任意のスレッドから並列に供給するこ
とができる。その結果、スレッドスイッチをよりよくパイプラインフラッシュか
ら隠し、割り込み待ち時間を減少させることができる。例えば、ジャンプフラッ
シュの改善は、完全に同一ではない優先順位の開始すべきスレッドが存在し、低
い方の優先順位のスレッドが開始される場合に行なわれる。割り込み待ち時間の
改善は、既にフェッチおよびデコードされて割り込みに対して発行を準備してい
るISRコードを開始することによってなされる。
【0069】 図16は、本発明の一実施形態によるマルチスレッド化されたスーパースカラ
ーパイプラインを例示している。図16において、機能ユニットを最大限利用す
るために、複数の命令が同一のスレッドまたは異なるスレッドから並列に実行さ
れる。発行ステージは、スレッド選択、リソース割り当ておよびデータ依存物保
護について責任を負う。そのため、発行ステージは、スレッドのスケジューリン
グを最適化して、最大限のリソース利用および最大限のトータルスループットを
保証している。それより前のステージ(フェッチステージおよびデコードステー
ジ)は、発行スレッドセレクタから利用可能なスレッドのプールを維持しようと
試みる。
【0070】 本発明の組込み型プロセッサのマルチスレッド化の特徴の1つは、独立に書か
れてオブジェクト形態で配布されているVirtual Peripheral(VP)を統合する
能力である。VPが極めて厳しいジッタ許容差を有していても、異なるVPに対
して互いの影響を考慮することなく、これらを結合することができる。
【0071】 例えば、次のようなVPおよびジッタ許容差を考える。(1)UART 11
5.2kbps、217ns(ナノセカンド)、(2)10BaseTイーサネ
ット、10ns、(3)TCP/IPスタック、10ms(ミリセカンド)、お
よび、(4)アプリケーションコード、50ms。設計者がこれらのVPを統合
してシステムを作成した場合、設計者は、静的スケジュールテーブルを判定する
必要がほとんどない。
【0072】 TCP/IPおよびアプリケーションコードは、タイミングの影響を受けない
ので、いずれのVPもNRTスレッドとしてスケジューリングされる。他の2つ
のVPは、外部イベントに対して決定性応答を必要とするので、ハードリアルタ
イムスレッドとしてスケジューリングされなければならない。目的のCPU速度
が200MHzであるとき、イーサネットVPは、MIPSの50%、即ち5n
sの応答を必要とし、その命令間に1より大きな命令遅延を有することができな
い。UART VPは、MIPSの1%未満しか必要としないが、そのジッタ許
容差内でサービスされることを必要とするので、テーブル内に4回スケジュール
される。
【0073】 その結果、これら4つのVPは、それぞれが異なるベンダー製であっても、い
かなるコードも修正することなく、各スレッドが必要とする全計算能力に占める
割合を判定するための何らかの単純な数学的処理を必要とするだけで、統合する
ことができる。これらのVPは、タイミングを必要とするスレッドの各々がその
ジッタ性能を保証されているので、いかなるタイミング問題を伴うことなく同時
に動作する。
【0074】 もちろん、VPは、互いに通信できても、同時に動作するだけである。これは
、適切な高レベルAPIの定義を必要とし、その詳細は当業者には明らかであろ
う。
【0075】 表1は、受信UARTスレッドの例である:
【表1】
【0076】 スレッドは、開始ビットのエッジが下がるまでは自身をサスペンドする。この
割り込みが発生すると、スレッドが再開され、入ってくるデータのタイミングは
、開始エッジが検出された正確な時間に基づく。この技術によって、さらに高い
精度が可能になり、よって組込み型プロセッサの動作が改善される。
【0077】 スレッドは、受信された各ビットについて、次のタイマ割り込みがあるまでは
自身をサスペンドする(RTCCタイマは、各スレッドについて独立であるので
、他のVPと衝突することがない)。
【0078】 バイトの完了時、コードは、バイトを読み出し可能なアプリケーション層にソ
フトウェア割り込みの信号を発行する。この「割り込み」命令は、単に割り込み
フラグを設定するだけである。アプリケーション層は、この割り込みフラグをポ
ーリングされるか、または、サスペンドされた後この割り込みによって再開され
る。
【0079】 送信UARTスレッドの例を表2に示す:
【表2】
【0080】 スレッドは、ユーザー定義の送信開始ソフトウェア割り込み(TxStart)に応
じて自身をサスペンドする。この割り込みがアプリケーションスレッドによって
トリガされると、送信UARTスレッドが再開され、送信すべきバイトが内部レ
ジスタ(UartTxBits)に送信される。この時点でアプリケーションは、第2のバ
イトを自由に送信することができ、そのため、割り込みフラグがクリアされ、Ua
rtTxEmpty割り込みがトリガされる。
【0081】 このバイトは、各ビットの後に続く次のRTTC割り込みをサスペンドするこ
とによって、送信される(RTTCタイマは、各スレッドについて独立なので、
他のVPと衝突することがない)。
【0082】 送信が完了すると、スレッドは、送信開始割り込みに応じて再びサスペンドす
る。送信開始割り込みを最後のバイトの送信中にトリガーして、スレッドを直ち
に再開できるようにすることも可能である。
【0083】 ここまで本発明を具体的に例示し、特定の実施形態およびいくつかの代替の実
施形態を参照して説明してきたが、当業者であれば、本発明の思想と範囲から逸
脱することなく形態および細部の様々な変更を行うことが可能であることが容易
に分かるであろう。
【図面の簡単な説明】
【図1】 従来の割り込み応答を示す図である。
【図2】 マルチスレッド化された環境における割り込み応答を示す図である。
【図3】 従来のパイプラインを示す図である。
【図4】 本発明の一実施形態によるマルチスレッド化されたフェッチスイッチパイプラ
インを示す図である。
【図5】 本発明の一実施形態による組込み型プロセッサを示す図である。
【図6】 本発明の一実施形態によるスレッドごとのコンテクストの例を示す図である。
【図7a】 本発明の一実施形態による厳密なスケジューリングの例を示す図である。
【図7b】 本発明の一実施形態によるやや柔軟なスケジューリングの例を示す図である。
【図7c】 本発明の一実施形態による自由なスケジューリングの例を示す図である。
【図7d】 本発明の一実施形態による3つのハードリアルタイムスレッドを用いたやや柔
軟なスケジューリングを示す図である。
【図8】 本発明の一実施形態による2レベルのスケジューリングを用いたスレッドフェ
ッチアルゴリズムを示す図である。
【図9】 本発明の一実施形態によるHRTスレッドセレクタを示す図である。
【図10】 本発明の一実施形態によるNRTシャドウSRAMスレッドセレクタおよびS
RAMアクセスロジックを示す図である。
【図11】 本発明の一実施形態によるNRTスレッド利用可能性セレクタを示す図である
【図12】 本発明の一実施形態によるNRTフラッシュメモリスレッドセレクタを示す図
である。
【図13】 本発明の一実施形態によるポストフェッチセレクタを示す図である。
【図14】 本発明の一実施形態によるマルチスレッド化された発行スイッチパイプライン
を示す図である。
【図15】 本発明の一実施形態によるパイプライン化されたフェッチ並行デコードパイプ
ラインを示す図である。
【図16】 本発明の一実施形態によるマルチスレッド化されたスーパースカラーパイプラ
インを示す図である。
───────────────────────────────────────────────────── フロントページの続き (31)優先権主張番号 60/250,781 (32)優先日 平成12年12月1日(2000.12.1) (33)優先権主張国 米国(US) (81)指定国 EP(AT,BE,CH,CY, DE,DK,ES,FI,FR,GB,GR,IE,I T,LU,MC,NL,PT,SE,TR),OA(BF ,BJ,CF,CG,CI,CM,GA,GN,GW, ML,MR,NE,SN,TD,TG),AP(GH,G M,KE,LS,MW,MZ,SD,SL,SZ,TZ ,UG,ZW),EA(AM,AZ,BY,KG,KZ, MD,RU,TJ,TM),AE,AG,AL,AM, AT,AU,AZ,BA,BB,BG,BR,BY,B Z,CA,CH,CN,CR,CU,CZ,DE,DK ,DM,DZ,EE,ES,FI,GB,GD,GE, GH,GM,HR,HU,ID,IL,IN,IS,J P,KE,KG,KP,KR,KZ,LC,LK,LR ,LS,LT,LU,LV,MA,MD,MG,MK, MN,MW,MX,MZ,NO,NZ,PL,PT,R O,RU,SD,SE,SG,SI,SK,SL,TJ ,TM,TR,TT,TZ,UA,UG,UZ,VN, YU,ZA,ZW (72)発明者 ウォーターズ,クリストファー,ジェイ, エフ アメリカ合衆国カリフォルニア州94301 パロアルト ユニバーシティ アベニュー 1170 (72)発明者 ミマログル,チベット アメリカ合衆国カリフォルニア州94087 サニーベイル グロウセスター コート 1040 (72)発明者 フォトランド,デイビッド,アラン アメリカ合衆国カリフォルニア州95129 サンノゼ カピストラーノ アベニュー 4863 Fターム(参考) 5B098 BA15 CC01 DD03 GA05 GA08

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】 プログラムコンテクスト間をスイッチするためのコンピュータベースのシステ
    ムであって、 実行パイプラインにおいて第1のプログラムスレッドおよび第2のプログラ
    ムスレッドを有することのできる組込み型パイプラインプロセッサと、 前記組込み型プロセッサの第1の状態を格納することができるデータ記憶装
    置の第1の集合と、 前記組込み型プロセッサの第2の状態を格納することができるデータ記憶装
    置の第2の集合と、 前記組込み型プロセッサが実行すべき前記プログラムスレッドを識別するた
    めのスレッドスケジューラと、 からなり、 前記プロセッサが、前記第1のスレッドにおける第1のプログラム命令の実行
    の最後と前記第2のスレッドにおける第2のプログラム命令の実行の最初との間
    で、前記第1の状態と前記第2の状態とを切り替えるシステム。
  2. 【請求項2】 前記第1の状態が前記第1のプログラムスレッドの実行中における前記組込み
    型プロセッサの状態である、請求項1のシステム。
  3. 【請求項3】 前記第2の状態が前記第2のプログラムスレッドの実行中における前記組込み
    型プロセッサの状態である、請求項1のシステム。
  4. 【請求項4】 前記プロセッサは、状態選択レジスタを変更することによって前記第1の状態
    と前記第2の状態とを切り替える、請求項1のシステム。
  5. 【請求項5】 前記スレッドスケジューラは、 少なくとも1つのハードリアルタイム(HRT)スレッドおよび少なくとも
    1つの非リアルタイムスレッドを識別するためのスレッド識別装置と、 前記HRTの実行が所定の時間内で行われることを保証するように前記HR
    Tスレッドを利用可能な量子時間に規則正しくスケジューリングするためのHR
    Tスケジューラと、 を含む、請求項1のシステム。
  6. 【請求項6】 前記時間量が少なくとも1つの命令サイクルである、請求項5のシステム。
  7. 【請求項7】 前記スレッドスケジューラは、前記HRTが完了している場合、スケジューリ
    ングされたHRTスレッドを置き換えるように非リアルタイム(NRT)スレッ
    ドをスケジューリングする、請求項5のシステム。
  8. 【請求項8】 前記スレッドスケジューラは、非リアルタイム(NRT)スレッドの実行をH
    RTスレッドに割り当てられていない量子時間にスケジューリングする、請求項
    5のシステム。
  9. 【請求項9】 前記スレッドスケジューラは、実行されるべきNRTスレッドを規則正しくス
    ケジューリングする、請求項8のシステム。
  10. 【請求項10】 前記システムは、 プログラム命令を格納し、前記プロセッサが第1のフェッチ周期の間に命令
    をフェッチするための第1の記憶装置と、 プログラム命令を格納し、前記プロセッサが第2のフェッチ周期の間に命令
    をフェッチするための第2の記憶装置とをさらに含み、 前記第1のフェッチ周期が実質的に前記第2のフェッチ周期よりも短い、請求
    項5のシステム。
JP2001547274A 1999-12-22 2000-12-21 組込み型プロセッサにおいてゼロタイムコンテクストスイッチを用いて命令レベルをマルチスレッド化するシステムおよび方法 Expired - Lifetime JP4693326B2 (ja)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US17173199P 1999-12-22 1999-12-22
US60/171,731 1999-12-22
US21374500P 2000-06-22 2000-06-22
US60/213,745 2000-06-22
US25078100P 2000-12-01 2000-12-01
US60/250,781 2000-12-01
PCT/US2000/035242 WO2001046827A1 (en) 1999-12-22 2000-12-21 System and method for instruction level multithreading in an embedded processor using zero-time context switching

Publications (2)

Publication Number Publication Date
JP2003523561A true JP2003523561A (ja) 2003-08-05
JP4693326B2 JP4693326B2 (ja) 2011-06-01

Family

ID=27390013

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001547274A Expired - Lifetime JP4693326B2 (ja) 1999-12-22 2000-12-21 組込み型プロセッサにおいてゼロタイムコンテクストスイッチを用いて命令レベルをマルチスレッド化するシステムおよび方法

Country Status (5)

Country Link
US (2) US7925869B2 (ja)
EP (1) EP1247195A4 (ja)
JP (1) JP4693326B2 (ja)
AU (1) AU2597401A (ja)
WO (1) WO2001046827A1 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007109057A (ja) * 2005-10-14 2007-04-26 Hitachi Ltd プロセッサ
JP2008504572A (ja) * 2004-06-23 2008-02-14 クリエイティヴ テクノロジー リミテッド デジタルメディアストリームの処理
JP2008047145A (ja) * 2005-03-18 2008-02-28 Marvell World Trade Ltd デュアルスレッドプロセッサ
US9229765B2 (en) 2011-12-13 2016-01-05 Samsung Electronics Co., Ltd. Guarantee real time processing of soft real-time operating system by instructing core to enter a waiting period prior to transferring a high priority task
JP2022538371A (ja) * 2019-09-11 2022-09-01 レッドパイン シグナルズ インコーポレイティド スレッド粒度を提供するマルチスレッドプロセッサ

Families Citing this family (135)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7120783B2 (en) * 1999-12-22 2006-10-10 Ubicom, Inc. System and method for reading and writing a thread state in a multithreaded central processing unit
AU2597401A (en) * 1999-12-22 2001-07-03 Ubicom, Inc. System and method for instruction level multithreading in an embedded processor using zero-time context switching
US7308686B1 (en) 1999-12-22 2007-12-11 Ubicom Inc. Software input/output using hard real time threads
US6845419B1 (en) * 2000-01-24 2005-01-18 Freescale Semiconductor, Inc. Flexible interrupt controller that includes an interrupt force register
US7162615B1 (en) * 2000-06-12 2007-01-09 Mips Technologies, Inc. Data transfer bus communication using single request to perform command and return data to destination indicated in context to allow thread context switch
US7010612B1 (en) 2000-06-22 2006-03-07 Ubicom, Inc. Universal serializer/deserializer
US7047396B1 (en) 2000-06-22 2006-05-16 Ubicom, Inc. Fixed length memory to memory arithmetic and architecture for a communications embedded processor system
US8762581B2 (en) * 2000-12-22 2014-06-24 Avaya Inc. Multi-thread packet processor
GB2372847B (en) * 2001-02-19 2004-12-29 Imagination Tech Ltd Control of priority and instruction rates on a multithreaded processor
US20030120896A1 (en) * 2001-06-29 2003-06-26 Jason Gosior System on chip architecture
GB2379299B (en) * 2001-09-04 2006-02-08 Imagination Tech Ltd A texturing system
US20030142818A1 (en) * 2001-09-28 2003-07-31 Nec Usa, Inc. Techniques for efficient security processing
JP3813930B2 (ja) * 2002-01-09 2006-08-23 松下電器産業株式会社 プロセッサ及びプログラム実行方法
US7117346B2 (en) 2002-05-31 2006-10-03 Freescale Semiconductor, Inc. Data processing system having multiple register contexts and method therefor
US20030225817A1 (en) * 2002-06-04 2003-12-04 Prashanth Ishwar Concurrent execution of kernel work and non-kernel work in operating systems with single-threaded kernel
US20050033889A1 (en) * 2002-10-08 2005-02-10 Hass David T. Advanced processor with interrupt delivery mechanism for multi-threaded multi-CPU system on a chip
US20050044324A1 (en) * 2002-10-08 2005-02-24 Abbas Rashid Advanced processor with mechanism for maximizing resource usage in an in-order pipeline with multiple threads
US7924828B2 (en) * 2002-10-08 2011-04-12 Netlogic Microsystems, Inc. Advanced processor with mechanism for fast packet queuing operations
US7627721B2 (en) 2002-10-08 2009-12-01 Rmi Corporation Advanced processor with cache coherency
US7334086B2 (en) * 2002-10-08 2008-02-19 Rmi Corporation Advanced processor with system on a chip interconnect technology
US7984268B2 (en) * 2002-10-08 2011-07-19 Netlogic Microsystems, Inc. Advanced processor scheduling in a multithreaded system
US8015567B2 (en) 2002-10-08 2011-09-06 Netlogic Microsystems, Inc. Advanced processor with mechanism for packet distribution at high line rate
US7346757B2 (en) 2002-10-08 2008-03-18 Rmi Corporation Advanced processor translation lookaside buffer management in a multithreaded system
US8037224B2 (en) 2002-10-08 2011-10-11 Netlogic Microsystems, Inc. Delegating network processor operations to star topology serial bus interfaces
US7461213B2 (en) 2002-10-08 2008-12-02 Rmi Corporation Advanced processor system using request, data, snoop, and response rings
US8478811B2 (en) * 2002-10-08 2013-07-02 Netlogic Microsystems, Inc. Advanced processor with credit based scheme for optimal packet flow in a multi-processor system on a chip
US7961723B2 (en) 2002-10-08 2011-06-14 Netlogic Microsystems, Inc. Advanced processor with mechanism for enforcing ordering between information sent on two independent networks
US9088474B2 (en) * 2002-10-08 2015-07-21 Broadcom Corporation Advanced processor with interfacing messaging network to a CPU
US8176298B2 (en) * 2002-10-08 2012-05-08 Netlogic Microsystems, Inc. Multi-core multi-threaded processing systems with instruction reordering in an in-order pipeline
US6842848B2 (en) * 2002-10-11 2005-01-11 Sandbridge Technologies, Inc. Method and apparatus for token triggered multithreading
US7822950B1 (en) * 2003-01-22 2010-10-26 Ubicom, Inc. Thread cancellation and recirculation in a computer processor for avoiding pipeline stalls
JP4750350B2 (ja) 2003-03-13 2011-08-17 パナソニック株式会社 タスク切換装置、方法及びプログラム
US7401207B2 (en) * 2003-04-25 2008-07-15 International Business Machines Corporation Apparatus and method for adjusting instruction thread priority in a multi-thread processor
US7360062B2 (en) * 2003-04-25 2008-04-15 International Business Machines Corporation Method and apparatus for selecting an instruction thread for processing in a multi-thread processor
US7401208B2 (en) * 2003-04-25 2008-07-15 International Business Machines Corporation Method and apparatus for randomizing instruction thread interleaving in a multi-thread processor
US7653912B2 (en) * 2003-05-30 2010-01-26 Steven Frank Virtual processor methods and apparatus with unified event notification and consumer-producer memory operations
EP1669868A4 (en) * 2003-09-30 2009-03-25 Sanyo Electric Co PROCESSOR AND INTEGRATED CIRCUIT WITH CONVERTIBLE CIRCUIT AND PROCESSING PROCESS THEREFORE
US7360064B1 (en) 2003-12-10 2008-04-15 Cisco Technology, Inc. Thread interleaving in a multithreaded embedded processor
US7441101B1 (en) * 2003-12-10 2008-10-21 Cisco Technology, Inc. Thread-aware instruction fetching in a multithreaded embedded processor
US8661332B2 (en) * 2004-04-30 2014-02-25 Microsoft Corporation Method and apparatus for document processing
US7359902B2 (en) * 2004-04-30 2008-04-15 Microsoft Corporation Method and apparatus for maintaining relationships between parts in a package
US7383500B2 (en) 2004-04-30 2008-06-03 Microsoft Corporation Methods and systems for building packages that contain pre-paginated documents
US7580948B2 (en) * 2004-05-03 2009-08-25 Microsoft Corporation Spooling strategies using structured job information
US8363232B2 (en) 2004-05-03 2013-01-29 Microsoft Corporation Strategies for simultaneous peripheral operations on-line using hierarchically structured job information
US7634775B2 (en) * 2004-05-03 2009-12-15 Microsoft Corporation Sharing of downloaded resources
US7607141B2 (en) * 2004-05-03 2009-10-20 Microsoft Corporation Systems and methods for support of various processing capabilities
US8243317B2 (en) * 2004-05-03 2012-08-14 Microsoft Corporation Hierarchical arrangement for spooling job data
US20050246384A1 (en) * 2004-05-03 2005-11-03 Microsoft Corporation Systems and methods for passing data between filters
US7755786B2 (en) 2004-05-03 2010-07-13 Microsoft Corporation Systems and methods for support of various processing capabilities
US7519899B2 (en) * 2004-05-03 2009-04-14 Microsoft Corporation Planar mapping of graphical elements
US7565659B2 (en) * 2004-07-15 2009-07-21 International Business Machines Corporation Light weight context switching
US7890735B2 (en) 2004-08-30 2011-02-15 Texas Instruments Incorporated Multi-threading processors, integrated circuit devices, systems, and processes of operation and manufacture
US20060069848A1 (en) * 2004-09-30 2006-03-30 Nalawadi Rajeev K Flash emulation using hard disk
US7460476B1 (en) * 2004-10-18 2008-12-02 Ubicom, Inc. Automatic adaptive network traffic prioritization and shaping
US7584111B2 (en) * 2004-11-19 2009-09-01 Microsoft Corporation Time polynomial Arrow-Debreu market equilibrium
US8756605B2 (en) * 2004-12-17 2014-06-17 Oracle America, Inc. Method and apparatus for scheduling multiple threads for execution in a shared microprocessor pipeline
US7631130B2 (en) * 2005-02-04 2009-12-08 Mips Technologies, Inc Barrel-incrementer-based round-robin apparatus and instruction dispatch scheduler employing same for use in multithreading microprocessor
DE102005011124B4 (de) * 2005-03-10 2006-12-28 Siemens Ag Verfahren und Vorrichtung zur Übertragung von Bilddaten
US7950012B2 (en) * 2005-03-16 2011-05-24 Oracle America, Inc. Facilitating communication and synchronization between main and scout threads
US20060212853A1 (en) * 2005-03-18 2006-09-21 Marvell World Trade Ltd. Real-time control apparatus having a multi-thread processor
JP4580845B2 (ja) * 2005-08-24 2010-11-17 パナソニック株式会社 タスク実行装置
US7913255B2 (en) * 2005-10-20 2011-03-22 Qualcomm Incorporated Background thread processing in a multithread digital signal processor
WO2007068865A1 (en) * 2005-12-15 2007-06-21 Arm Limited Instruction issue control within a multithreaded processor
US8327115B2 (en) 2006-04-12 2012-12-04 Soft Machines, Inc. Plural matrices of execution units for processing matrices of row dependent instructions in single clock cycle in super or separate mode
US7369450B2 (en) * 2006-05-26 2008-05-06 Freescale Semiconductor, Inc. Nonvolatile memory having latching sense amplifier and method of operation
US20080126754A1 (en) * 2006-07-28 2008-05-29 Padauk Technologies Corporation, R.O.C. Multiple-microcontroller pipeline instruction execution method
WO2008031054A2 (en) 2006-09-07 2008-03-13 Black Lab Security Systems, Inc. Creating and using a specific user unique id for security login authentication
WO2008031050A2 (en) * 2006-09-07 2008-03-13 Black Lab Security Systems, Inc. Method of controlling a 32/64-bit parallel thread execution within a microsoft pc or server operating system utility program
US8537167B1 (en) * 2006-10-17 2013-09-17 Nvidia Corporation Method and system for using bundle decoders in a processing pipeline
US9124767B2 (en) * 2006-10-25 2015-09-01 Microsoft Technology Licensing, Llc Multi-DVR media content arbitration
US7493436B2 (en) * 2006-10-26 2009-02-17 International Business Machines Corporation Interrupt handling using simultaneous multi-threading
JP2008123045A (ja) * 2006-11-08 2008-05-29 Matsushita Electric Ind Co Ltd プロセッサ
EP2523101B1 (en) 2006-11-14 2014-06-04 Soft Machines, Inc. Apparatus and method for processing complex instruction formats in a multi- threaded architecture supporting various context switch modes and virtualization schemes
US8285958B1 (en) * 2007-08-10 2012-10-09 Mcafee, Inc. System, method, and computer program product for copying a modified page table entry to a translation look aside buffer
JP2009059310A (ja) * 2007-09-03 2009-03-19 Panasonic Corp プログラム制御装置
DE102007051803A1 (de) * 2007-10-30 2009-05-07 Infineon Technologies Ag Verfahren und Vorrichtung zur Datenverarbeitung
US7941646B2 (en) * 2007-12-31 2011-05-10 Freescale Semicondoctor, Inc. Completion continue on thread switch based on instruction progress metric mechanism for a microprocessor
US9063778B2 (en) * 2008-01-09 2015-06-23 Microsoft Technology Licensing, Llc Fair stateless model checking
US9596324B2 (en) * 2008-02-08 2017-03-14 Broadcom Corporation System and method for parsing and allocating a plurality of packets to processor core threads
DE102008010943A1 (de) * 2008-02-25 2009-09-03 Fujitsu Siemens Computers Gmbh Verfahren zur Behandlung von Unterbrechungsaufforderungen bei einem Prozessor
US7559061B1 (en) 2008-03-16 2009-07-07 International Business Machines Corporation Simultaneous multi-threading control monitor
US8392924B2 (en) * 2008-04-03 2013-03-05 Sharp Laboratories Of America, Inc. Custom scheduling and control of a multifunction printer
US8102552B2 (en) * 2008-04-03 2012-01-24 Sharp Laboratories Of America, Inc. Performance monitoring and control of a multifunction printer
JP5330384B2 (ja) * 2008-06-25 2013-10-30 パナソニック株式会社 情報処理装置、情報処理方法及び情報処理プログラム
US20120297395A1 (en) * 2008-08-18 2012-11-22 Exludus Inc. Scalable work load management on multi-core computer systems
JP5173712B2 (ja) 2008-09-30 2013-04-03 ルネサスエレクトロニクス株式会社 マルチスレッドプロセッサ
JP5173711B2 (ja) * 2008-09-30 2013-04-03 ルネサスエレクトロニクス株式会社 マルチスレッドプロセッサ及びそのハードウェアスレッドのスケジュール方法
JP5173714B2 (ja) * 2008-09-30 2013-04-03 ルネサスエレクトロニクス株式会社 マルチスレッドプロセッサ及びその割り込み処理方法
DE102009055752A1 (de) * 2009-11-25 2011-05-26 Robert Bosch Gmbh Verfahren zum Ermöglichen einer sequentiellen, nicht blockierenden Abarbeitung von Anweisungen in nebenläufigen Tasks in einer Steuereinrichtung
US8560814B2 (en) * 2010-05-04 2013-10-15 Oracle International Corporation Thread fairness on a multi-threaded processor with multi-cycle cryptographic operations
US8589942B2 (en) 2010-05-07 2013-11-19 Qualcomm Incorporated Non-real time thread scheduling
US8873637B2 (en) 2010-05-14 2014-10-28 Qualcomm Incorporated Hardware pixel processing pipeline and video processing instructions
KR101685247B1 (ko) 2010-09-17 2016-12-09 소프트 머신즈, 인크. 조기 원거리 분기 예측을 위한 섀도우 캐시를 포함하는 단일 사이클 다중 분기 예측
CN108376097B (zh) 2011-03-25 2022-04-15 英特尔公司 用于通过使用由可分割引擎实例化的虚拟核来支持代码块执行的寄存器文件段
KR101966712B1 (ko) 2011-03-25 2019-04-09 인텔 코포레이션 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 메모리 프래그먼트
EP2689327B1 (en) 2011-03-25 2021-07-28 Intel Corporation Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines
US8589934B2 (en) * 2011-04-01 2013-11-19 Arm Limited Controlling priority levels of pending threads awaiting processing
CN103649931B (zh) * 2011-05-20 2016-10-12 索夫特机械公司 用于支持由多个引擎执行指令序列的互连结构
KR101639853B1 (ko) 2011-05-20 2016-07-14 소프트 머신즈, 인크. 복수의 엔진에 의해 명령어 시퀀스들의 실행을 지원하기 위한 자원들 및 상호접속 구조들의 비집중 할당
CN102495726B (zh) * 2011-11-15 2015-05-20 无锡德思普科技有限公司 机会多线程方法及处理器
WO2013077876A1 (en) 2011-11-22 2013-05-30 Soft Machines, Inc. A microprocessor accelerated code optimizer
KR101703401B1 (ko) 2011-11-22 2017-02-06 소프트 머신즈, 인크. 다중 엔진 마이크로프로세서용 가속 코드 최적화기
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
WO2014151043A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for emulating a guest centralized flag architecture by using a native distributed flag architecture
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
WO2014151018A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for executing multithreaded instructions grouped onto blocks
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
US9471318B2 (en) 2013-03-15 2016-10-18 International Business Machines Corporation System management and instruction counting
US9558000B2 (en) 2014-02-06 2017-01-31 Optimum Semiconductor Technologies, Inc. Multithreading using an ordered list of hardware contexts
US9766894B2 (en) 2014-02-06 2017-09-19 Optimum Semiconductor Technologies, Inc. Method and apparatus for enabling a processor to generate pipeline control signals
US9804846B2 (en) 2014-03-27 2017-10-31 International Business Machines Corporation Thread context preservation in a multithreading computer system
US9417876B2 (en) 2014-03-27 2016-08-16 International Business Machines Corporation Thread context restoration in a multithreading computer system
US10102004B2 (en) 2014-03-27 2018-10-16 International Business Machines Corporation Hardware counters to track utilization in a multithreading computer system
US9594660B2 (en) 2014-03-27 2017-03-14 International Business Machines Corporation Multithreading computer system and program product for executing a query instruction for idle time accumulation among cores
US9354883B2 (en) * 2014-03-27 2016-05-31 International Business Machines Corporation Dynamic enablement of multithreading
US9921848B2 (en) 2014-03-27 2018-03-20 International Business Machines Corporation Address expansion and contraction in a multithreading computer system
US20170132003A1 (en) * 2015-11-10 2017-05-11 Futurewei Technologies, Inc. System and Method for Hardware Multithreading to Improve VLIW DSP Performance and Efficiency
US10499066B2 (en) * 2017-04-14 2019-12-03 Nokia Technologies Oy Method and apparatus for improving efficiency of content delivery based on consumption data relative to spatial data
JP6874706B2 (ja) * 2018-02-07 2021-05-19 オムロン株式会社 アプリケーションプログラムを生成する方法、装置、プログラム
US11119972B2 (en) * 2018-05-07 2021-09-14 Micron Technology, Inc. Multi-threaded, self-scheduling processor
US11126587B2 (en) * 2018-05-07 2021-09-21 Micron Technology, Inc. Event messaging in a system having a self-scheduling processor and a hybrid threading fabric
US11119782B2 (en) * 2018-05-07 2021-09-14 Micron Technology, Inc. Thread commencement using a work descriptor packet in a self-scheduling processor
US10866834B2 (en) * 2019-03-29 2020-12-15 Intel Corporation Apparatus, method, and system for ensuring quality of service for multi-threading processor cores
US11687364B2 (en) 2019-07-30 2023-06-27 Samsung Electronics Co., Ltd. Methods and apparatus for cache-aware task scheduling in a symmetric multi-processing (SMP) environment
US12101658B2 (en) * 2019-09-11 2024-09-24 Silicon Laboratories Inc. Communication processor handling communications protocols on separate threads
DE102020123498A1 (de) * 2019-09-11 2021-03-11 Silicon Laboratories Inc. Drahtloser Multi-Thread-Kommunikations-Prozessor mit granularen Thread-Prozessen
US12045645B2 (en) 2019-09-11 2024-07-23 Silicon Laboratories Inc. Multi-thread wireless communications processor with granular thread processes
US11983537B1 (en) * 2022-12-21 2024-05-14 Ceremorphic, Inc. Multi-threaded processor with power granularity and thread granularity

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999021081A1 (en) * 1997-10-23 1999-04-29 International Business Machines Corporation Method and apparatus for selecting thread switch events in a multithreaded processor

Family Cites Families (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4110831A (en) * 1977-06-29 1978-08-29 International Business Machines Corporation Method and means for tracking digit significance in arithmetic operations executed on decimal computers
JPS61110256A (ja) 1984-11-02 1986-05-28 Hitachi Ltd 複数の演算部を有するプロセツサ
US4777587A (en) * 1985-08-30 1988-10-11 Advanced Micro Devices, Inc. System for processing single-cycle branch instruction in a pipeline having relative, absolute, indirect and trap addresses
JPH0827716B2 (ja) * 1985-10-25 1996-03-21 株式会社日立製作所 データ処理装置及びデータ処理方法
US4939735A (en) * 1988-07-21 1990-07-03 International Business Machines Corporation Information handling system having serial channel to control unit link
US5163146A (en) 1988-10-14 1992-11-10 International Business Machines Corporation System responsive to interrupt levels for changing and restoring clock speed by changing and restoring a register value
GB2234613B (en) * 1989-08-03 1993-07-07 Sun Microsystems Inc Method and apparatus for switching context of state elements in a microprocessor
US5197130A (en) 1989-12-29 1993-03-23 Supercomputer Systems Limited Partnership Cluster architecture for a highly parallel scalar/vector multiprocessor system
EP0436341B1 (en) * 1990-01-02 1997-05-07 Motorola, Inc. Sequential prefetch method for 1, 2 or 3 word instructions
US5247636A (en) 1990-05-31 1993-09-21 International Business Machines Corporation Digital processor clock circuit
US5179672A (en) * 1990-06-19 1993-01-12 International Business Machines Corporation Apparatus and method for modeling parallel processing of instructions using sequential execution hardware
JP2507833B2 (ja) 1990-12-25 1996-06-19 三菱電機株式会社 マイクロコンピュ−タ
US5524250A (en) * 1991-08-23 1996-06-04 Silicon Graphics, Inc. Central processing unit for processing a plurality of threads using dedicated general purpose registers and masque register for providing access to the registers
JPH05108341A (ja) 1991-10-16 1993-04-30 Hitachi Ltd マイクロプロセツサ
US5404469A (en) * 1992-02-25 1995-04-04 Industrial Technology Research Institute Multi-threaded microprocessor architecture utilizing static interleaving
US5553305A (en) * 1992-04-14 1996-09-03 International Business Machines Corporation System for synchronizing execution by a processing element of threads within a process using a state indicator
US5515538A (en) * 1992-05-29 1996-05-07 Sun Microsystems, Inc. Apparatus and method for interrupt handling in a multi-threaded operating system kernel
US5260703A (en) * 1992-08-27 1993-11-09 Quantum Corporation Data encoding and decoding within PRML class IV sampling data detection channel of disk drive
DE69429204T2 (de) * 1993-03-26 2002-07-25 Cabletron Systems Inc Ablaufssteuerungsverfahren und -gerät für ein Kommunikationsnetzwerk
DE69518403T2 (de) * 1994-01-10 2001-03-29 The Dow Chemical Co., Midland Ein massiv multiplexierter, superskalarer prozessor mit harvard-architektur
US5778882A (en) * 1995-02-24 1998-07-14 Brigham And Women's Hospital Health monitoring system
JP2931890B2 (ja) 1995-07-12 1999-08-09 三菱電機株式会社 データ処理装置
US5727211A (en) * 1995-11-09 1998-03-10 Chromatic Research, Inc. System and method for fast context switching between tasks
US5865624A (en) * 1995-11-09 1999-02-02 Hayashigawa; Larry Reactive ride simulator apparatus and method
US5867725A (en) 1996-03-21 1999-02-02 International Business Machines Corporation Concurrent multitasking in a uniprocessor
JP3546980B2 (ja) * 1996-03-29 2004-07-28 松下電器産業株式会社 データ処理装置
US5944816A (en) 1996-05-17 1999-08-31 Advanced Micro Devices, Inc. Microprocessor configured to execute multiple threads including interrupt service routines
US5933627A (en) * 1996-07-01 1999-08-03 Sun Microsystems Thread switch on blocked load or store using instruction thread field
US20030110344A1 (en) * 1996-09-18 2003-06-12 Andre Szczepanek Communications systems, apparatus and methods
US5996066A (en) 1996-10-10 1999-11-30 Sun Microsystems, Inc. Partitioned multiply and add/subtract instruction for CPU with integrated graphics functions
US6009505A (en) 1996-12-02 1999-12-28 Compaq Computer Corp. System and method for routing one operand to arithmetic logic units from fixed register slots and another operand from any register slot
US6317774B1 (en) * 1997-01-09 2001-11-13 Microsoft Corporation Providing predictable scheduling of programs using a repeating precomputed schedule
US6766515B1 (en) * 1997-02-18 2004-07-20 Silicon Graphics, Inc. Distributed scheduling of parallel jobs with no kernel-to-kernel communication
US6314511B2 (en) * 1997-04-03 2001-11-06 University Of Washington Mechanism for freeing registers on processors that perform dynamic out-of-order execution of instructions using renaming registers
JPH1165840A (ja) * 1997-08-11 1999-03-09 Sony Corp 演算処理装置およびその方法
US6026503A (en) * 1997-08-12 2000-02-15 Telrad Communication And Electronic Industries Ltd. Device and method for debugging systems controlled by microprocessors
US5933650A (en) 1997-10-09 1999-08-03 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
US6378018B1 (en) 1997-10-10 2002-04-23 Intel Corporation Memory device and system including a low power interface
US6567839B1 (en) * 1997-10-23 2003-05-20 International Business Machines Corporation Thread switch control in a multithreaded processor system
US6076157A (en) * 1997-10-23 2000-06-13 International Business Machines Corporation Method and apparatus to force a thread switch in a multithreaded processor
US6061710A (en) * 1997-10-29 2000-05-09 International Business Machines Corporation Multithreaded processor incorporating a thread latch register for interrupt service new pending threads
US6016542A (en) * 1997-12-31 2000-01-18 Intel Corporation Detecting long latency pipeline stalls for thread switching
US6374286B1 (en) * 1998-04-06 2002-04-16 Rockwell Collins, Inc. Real time processor capable of concurrently running multiple independent JAVA machines
US6134653A (en) 1998-04-22 2000-10-17 Transwitch Corp. RISC processor architecture with high performance context switching in which one context can be loaded by a co-processor while another context is being accessed by an arithmetic logic unit
US6460116B1 (en) * 1998-09-21 2002-10-01 Advanced Micro Devices, Inc. Using separate caches for variable and generated fixed-length instructions
US6163839A (en) * 1998-09-30 2000-12-19 Intel Corporation Non-stalling circular counterflow pipeline processor with reorder buffer
US6366998B1 (en) 1998-10-14 2002-04-02 Conexant Systems, Inc. Reconfigurable functional units for implementing a hybrid VLIW-SIMD programming model
US6421701B1 (en) * 1999-01-29 2002-07-16 International Business Machines Corporation Method and system for replication support in a remote method invocation system
US6542991B1 (en) * 1999-05-11 2003-04-01 Sun Microsystems, Inc. Multiple-thread processor with single-thread interface shared among threads
US6493741B1 (en) * 1999-10-01 2002-12-10 Compaq Information Technologies Group, L.P. Method and apparatus to quiesce a portion of a simultaneous multithreaded central processing unit
AU2597401A (en) * 1999-12-22 2001-07-03 Ubicom, Inc. System and method for instruction level multithreading in an embedded processor using zero-time context switching
US6694425B1 (en) * 2000-05-04 2004-02-17 International Business Machines Corporation Selective flush of shared and other pipeline stages in a multithread processor
US6728722B1 (en) * 2000-08-28 2004-04-27 Sun Microsystems, Inc. General data structure for describing logical data spaces

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999021081A1 (en) * 1997-10-23 1999-04-29 International Business Machines Corporation Method and apparatus for selecting thread switch events in a multithreaded processor

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008504572A (ja) * 2004-06-23 2008-02-14 クリエイティヴ テクノロジー リミテッド デジタルメディアストリームの処理
JP2008047145A (ja) * 2005-03-18 2008-02-28 Marvell World Trade Ltd デュアルスレッドプロセッサ
JP4610593B2 (ja) * 2005-03-18 2011-01-12 マーベル ワールド トレード リミテッド デュアルスレッドプロセッサ
JP2007109057A (ja) * 2005-10-14 2007-04-26 Hitachi Ltd プロセッサ
US9229765B2 (en) 2011-12-13 2016-01-05 Samsung Electronics Co., Ltd. Guarantee real time processing of soft real-time operating system by instructing core to enter a waiting period prior to transferring a high priority task
JP2022538371A (ja) * 2019-09-11 2022-09-01 レッドパイン シグナルズ インコーポレイティド スレッド粒度を提供するマルチスレッドプロセッサ
JP7194315B2 (ja) 2019-09-11 2022-12-21 レッドパイン シグナルズ インコーポレイティド スレッド粒度を提供するマルチスレッドプロセッサ

Also Published As

Publication number Publication date
EP1247195A1 (en) 2002-10-09
US7082519B2 (en) 2006-07-25
JP4693326B2 (ja) 2011-06-01
AU2597401A (en) 2001-07-03
US7925869B2 (en) 2011-04-12
EP1247195A4 (en) 2005-01-05
US20030037228A1 (en) 2003-02-20
US20020002667A1 (en) 2002-01-03
WO2001046827A1 (en) 2001-06-28

Similar Documents

Publication Publication Date Title
JP4693326B2 (ja) 組込み型プロセッサにおいてゼロタイムコンテクストスイッチを用いて命令レベルをマルチスレッド化するシステムおよび方法
US7120783B2 (en) System and method for reading and writing a thread state in a multithreaded central processing unit
US7627770B2 (en) Apparatus and method for automatic low power mode invocation in a multi-threaded processor
US8996761B2 (en) Virtual queue processing circuit and task processor
US9779042B2 (en) Resource management in a multicore architecture
US7600135B2 (en) Apparatus and method for software specified power management performance using low power virtual threads
US9032404B2 (en) Preemptive multitasking employing software emulation of directed exceptions in a multithreading processor
US20040172631A1 (en) Concurrent-multitasking processor
US8776079B2 (en) Task processor
US20050015768A1 (en) System and method for providing hardware-assisted task scheduling
US8963933B2 (en) Method for urgency-based preemption of a process
US20100287360A1 (en) Task Processing Device
EP1730628A1 (en) Resource management in a multicore architecture
US11392407B2 (en) Semiconductor device
US8595747B2 (en) Efficient task scheduling by assigning fixed registers to scheduler
WO2008021435A1 (en) A multi-thread processor with multiple program counters
WO2002046887A2 (en) Concurrent-multitasking processor
US11461134B2 (en) Apparatus and method for deferral scheduling of tasks for operating system on multi-core processor
WO1999046679A1 (en) Apparatus, method and article of manufacture for use with a priority based real-time operating system

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071121

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071121

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100720

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20101020

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20101027

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110120

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110222

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140304

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4693326

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term