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
Links
- 238000000034 method Methods 0.000 title abstract description 22
- 238000013500 data storage Methods 0.000 claims 2
- 230000004044 response Effects 0.000 description 13
- 230000002093 peripheral effect Effects 0.000 description 10
- 230000005540 biological transmission Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 239000000872 buffer Substances 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 241001522296 Erithacus rubecula Species 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 101150012579 ADSL gene Proteins 0.000 description 1
- 102100020775 Adenylosuccinate lyase Human genes 0.000 description 1
- 108700040193 Adenylosuccinate lyases Proteins 0.000 description 1
- FXWALQSAZZPDOT-NMUGVGKYSA-N Arg-Thr-Cys-Cys Chemical compound SC[C@@H](C(O)=O)NC(=O)[C@H](CS)NC(=O)[C@H]([C@H](O)C)NC(=O)[C@@H](N)CCCNC(N)=N FXWALQSAZZPDOT-NMUGVGKYSA-N 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000011010 flushing procedure Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000001151 other effect Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 238000007616 round robin method Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000003643 water by type Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/324—Power saving characterised by the action undertaken by lowering clock frequency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/325—Power saving in peripheral device
- G06F1/3275—Power saving in memory, e.g. RAM, cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Advance Control (AREA)
Abstract
Description
の米国仮出願番号60/213,745、および2000年12月1日付の米国仮出願番号60/250,
781に基づいて優先権を主張し、これらは、ここで参照することによってすべて
包含される。
込みにしか応答することができないので、単一のハードリアルタイム同期プロセ
スのみをサポートしている。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
)などの様々なデジタル加入者線システムの一部として用いることができると共
に、機械制御などの従来の組込み型システムアプリケーションにも用いることが
できる。
する信号 である。従来の組込み型プロセッサは、外部ハードウェア割り込み、
タイマ割り込みおよびソフトウェア割り込みを含む様々な割り込みをサポートし
ている。従来のシステムにおいて、割り込みが発生すると、CPUは、現在の命
令を終了し、CPUコンテクストをセーブし(最低でもプログラムカウンタはセ
ーブする)、その割り込みに応じる割り込みサービスルーチン(ISR)のアド
レスへジャンプする。ISRが完了して割り込みに対して応答が返されると、C
PUは、割り込みからの復帰命令を実行して先のCPUコンテクストを回復し、
割り込みを受けた位置からメインコードを再び実行する。
。従来のシステムの中には、第1の割り込みを処理中に第2の割り込みが生じる
と、第1の割り込みが処理されるまで第2の割り込みが無視されるものもある。
図1は、従来の割り込み応答を示している。「メイン」コードが第1の割り込み
「A INT」によって中断されると、CPUは、その後、この割り込みに対す
るISRを処理する。第1の割り込みの処理中に第2の割り込み「B INT」
が受信される。この従来のシステムにおいては、第2の割り込み対するISRは
、第1の割り込みに対するISRが完了するまで開始されない。
位の高い方の割り込みが優先順位の低い方の割り込みに割り込むことができるが
同じ優先順位の割り込みには割り込めないという規則を用いているものもある。
みソースがプロセッサに割り込みをかけることができるかを選択するための何ら
かの手段が存在しなければならない。従来のシステムにおいては、この選択は、
制御(マスク)レジスタを使用することによって行なわれる。
チン(ISR)のアドレスをプログラムカウンタにロードする。この一実施形態
では、割り込み番号をランダムアクセスメモリ(RAM)への索引として用い、
例えば割り込みベクトルテーブルを用いて、動的ISRアドレス(例えばIntel
社の8x86プロセッサで使用されているような)を検索することである。この割り
込みベクトルテーブルの大きさは、通常、限られた数の割り込みしか有しないこ
と、または、割り込み同士をグループ化して同じアドレスを使用することによっ
て、制限されている。グループ化された割り込みは、その後、割り込みのソース
を判定するためにさらに分析される。
る前に、CPUのコンテクストを格納しなければならないことにある。この格納
は、CPUがISRの処理を終えたあと、割り込みを受信したときと同じ位置か
ら処理を続行するために必要とされる。プログラムカウンタおよびその他様々な
レジスタなどのコンテクスト情報の格納は、通常、少なくとも1クロックサイク
ルを必要とし、もっと多くのクロックサイクルを必要とする場合もある。この遅
延は、CPUの有効処理速度を低減させてしまう。
ッサで用いられており、これらは、単一のレジスタ集合、例えば32個のレジス
タ(R0〜R31)を含んでいる。しかし、これらのレジスタは、所望の処理タ
スクを行うのに不充分な場合がある。そのため、プロセッサは、コンテクストを
切り替えるために、レジスタ値を頻繁にセーブおよびリストアしなければならな
くなる。コンテクストの切り替えは、割り込みを処理するとき、または、マルチ
スレッド環境において別のプログラムスレッドに切り替えるときに発生する。命
令を用いて古いコンテクストがスタックにセーブされ、コンテクストが切り替え
られ、その後、新しいスレッド用の先のコンテクストが命令を用いてスタックの
値を引き出すことによってリストアされる。これによって、次のようなものを含
めて、様々な問題が生じる。(1)各コンテクスト切り替えに対してセーブおよ
びリストア動作が頻繁に必要とされるので、プロセッサの性能を大幅に低下させ
る。(2)コンテクストを切り替えるために必要とされるオーバヘッドによって
、重要なタスクを適切に実行できない場合がある。
るためにそのポート位置を読み出す必要があり、その読み出し動作に5クロック
サイクルしか要しないものと仮定すると、仮に、プログラムが、コンテクスト切
り替えのために32個のレジスタを必要とし、そのセーブ動作およびリストア動
作のそれぞれが各レジスタについて2つの命令を必要とする場合、コンテクスト
のスイッチおよびリストアには、128個の命令が必要となり、読み出し動作は
毎100クロックサイクルごとに行わなければならないので、タスクを完全に実
行することができなくなる。
はフロントエンド専用ロジックを用いることによってデータを取り込み、それを
ファースト・イン・ファーストアウト(FIFO)バッファにプットし、ソフト
ウェアで処理することによって、この問題を解決しようと試みてきた。これらの
技術に伴ういくつかの問題としては、(1)専用フロントエンドロジックを必要
とすること、および(2)多くのメモリを必要とすることがある。例えば、FI
FOは、使用できない空間を増加させ、他のいかなる機能にも利用することがで
きない。
ティカルなタイミング要件を有する割り込みが失敗する場合があるということで
ある。図1を参照すると、割り込みAおよび割り込みBがいずれもタイムクリテ
ィカルである場合、これらがいずれも高優先順位を有するようにスケジューリン
グされるので(優先順位を利用できる場合)、割り込みAは適当な時点で処理さ
れるが、割り込みBは、割り込みAが処理され終わるまで処理されない。この遅
延によって、割り込みBは、所定の時間内に処理されないことがあるので、失敗
する場合がある。即ち、従来のシステムは、割り込みが処理される時間に関して
、適当な確実性を提供しない。
プロセッサは、通常、何らかのメモリおよび周辺機能をチップ上に集積させてい
る。従来の組込み型プロセッサは、複数のハードウェアスレッドを用いて動作す
る能力を持たない。
始するプロセッサである。即ち、複数の命令が、異なるステージのそれぞれにお
いて、同時に「パイプライン」に存在する。図3は、従来のパイプラインを例示
している。
たり1命令をフェッチする。デコードステージ(D)は、実行すべき命令機能を
解読して必要とされるリソースを識別する。リソースには、汎用レジスタ、バス
および機能ユニットなどが含まれる。発行(I)ステージは、リソースを予約す
る。例えば、パイプライン制御のインターロックがこのステージに保持される。
発行ステージの間に、レジスタからオペランドも読み出される。命令は、複数存
在し得る実行ステージ(E)のうちの1つにおいて実行される。最後のライトバ
ックステージ(W)は、結果をレジスタに書き込むために用いられる。
に伴って、待機状態にすることなく、即ち、命令パイプラインをストールさせる
ことなく、フラッシュメモリから命令オペコードをフェッチすることが困難にな
るということである。より高速のメモリ、例えばスタティックRAM(SRAM
)を用いて命令フェッチ回数を増加させることができるが、組込み型プロセッサ
に必要とされる空間および電力も増加してしまう。従来のシステムは、様々な技
術を用いてこの問題を解決しようと試みてきた。かかる技術の1つには、フラッ
シュメモリからフェッチおよび実行することがある。しかし、この技術は、従来
のプロセッサの実行速度を、例えば40MIPS(1秒当たり4千万命令)にま
で制限する場合があり、この速度は多くのアプリケーションにとって満足なもの
でない。
リから高速なSRAMにロードし、その後すべてのプログラムコードをSRAM
から実行することがある。上述のように、この解決方法の問題点は、SRAMが
かなり大きな空間をダイ上に必要とし(相当するフラッシュメモリに比較して約
5倍の空間を必要とする)、動作させるためにかなりの電力を必要とすることで
ある。
とがある。参照するプログラムがSRAM内にあれば全速力での実行が可能にな
るが、そうでなければキャッシュミスが発生し、次のキャッシュロードの間に長
い待ち時間が生じる。かかるシステムは、実行時間が予測不能かつ判定不能にな
り、これは通常、実時間性に制約があるプロセッサにとって許容されない。この
実時間性の制約は、IEEE802.3(Ethernet(登録商標))、USB、HomePNA1.1また
はSPI(シリアル周辺装置インタフェース)等の標準規格に必要とされるタイミン
グに適合させるために課せられる制約である。これらの標準規格では、イベント
が発生してから一定量の時間内に応答が生成されることを必要とする。
2)マルチスレッド環境においてゼロタイムコンテクストスイッチを行い、(3
)マルチスレッドに対して複数のハードリアルタイムおよび非リアルタイム優先
順位レベルを許容するようにスケジューリングし、(4)マルチスレッド環境に
おいてデータおよび命令を複数のメモリブロックからフェッチし、および(5)
特定のスレッドがマルチスレッドの複数の状態を命令パイプラインに格納できる
ようにする、システムおよび方法が必要とされている。
、その場合、本発明によって、より小さいメモリバッファ、より高速の応答時間
および入出力遅延時間の低減が可能になる。
スレッド環境においてゼロタイムコンテクストスイッチを行い、複数のハードリ
アルタイムおよび非リアルタイム優先順位レベルを許容するように複数のハード
ウェアスレッドをスケジューリングし、マルチスレッド環境においてデータおよ
び命令を複数のメモリブロックからフェッチし、特定のスレッドがマルチスレッ
ドの複数の状態を命令パイプラインに格納できるようにする、システムおよび方
法である。
て、同じ符号は、同一または機能的に類似した構成要素を示している。また、図
面において、各符号の一番左の桁は、その符号が最初に使用された図面の番号に
対応している。
本発明は、組込み型プロセッサにおいてマルチスレッド化を可能にし、マルチス
レッド環境においてゼロタイムコンテクストスイッチを行い、多数のハードリア
ルタイムおよび非リアルタイム優先順位レベルを許容するようにマルチスレッド
をスケジューリングし、マルチスレッド環境においてデータおよび命令を複数の
メモリブロックからフェッチし、特定のスレッドがマルチスレッドの複数の状態
を命令パイプラインに格納できるようにするものである。
ように見せると共に、スレッド間の実行の自動切替を可能にすることによって、
従来の組込み型プロセッサの制限を克服している。本発明は、ゼロタイムコンテ
クストスイッチ能力、自動スレッドスケジューラおよび複数種類のメモリ(例え
ばSRAMおよびフラッシュメモリ)からのフェッチコードを有することによっ
て、これを達成する。この同時実行の態様は、プロセッサのパイプラインを利用
可能なスレッド間で時分割多重化することによって達成される。
時に存在することが可能になる。図2は、マルチスレッド環境における割り込み
応答を例示している。スレッドAおよびBは、いずれもハードリアルタイム(H
RT)スレッドであり、それぞれ割り込みAおよびBに依存してストールしてい
る。スレッドCは、メインコードスレッドであり、非リアルタイム(NRT)で
ある。割り込みAが発生すると、スレッドAが再開され、スレッドAは、スレッ
ドCとインタリーブされる。スレッドCは、NRTなので、もはや完全なパイプ
ラインスループットを有しなくなる。割り込みBが発生すると、スレッドBが再
開され、スレッドBは、スレッドAと同じ優先順位であるので、パイプラインに
インタリーブされ、その時点でスレッドCが完全にストールする。メインコード
であるスレッドCは、HRTスレッドがパイプラインスループットのすべてを使
用してはいないときにのみ、実行を継続する。
組込み型プロセッサは、フェーズロックドループ(PLL)即ちウォッチドッグ
タイマーなどの周辺装置ブロックを含むことができる。また、この組込み型プロ
セッサは、シャドウSRAM付きフラッシュメモリを含むこともできる。シャド
ウSRAMは、プログラムに対してより高速なアクセスを提供する。半導体製造
プロセスによっては、SRAMのアクセスは、フラッシュメモリのアクセスより
も速い場合がある。シャドウSRAMへのプログラムのロードは、プログラム制
御で行なわれる。また、この組込み型プロセッサは、従来のSRAMデータメモ
リ、CPUコア、Virtual Peripheralサポートロジックと呼ばれる入出力(I/
O)サポートロジック、および、有限インパルス応答(FIR)フィルタコプロ
セッサも含む。本発明のマルチスレッド化態様は、マルチスレッドコンテクスト
およびスレッド選択ロジックが内在する場合、CPUの大部分を占める。さらに
、マルチスレッド化の実施形態によっては、同一チップ上にコプロセッサまたは
DSPコアも存在する場合がある。
切り替える能力にある。オーバヘッドのないコンテクストスイッチは、フェッチ
ユニットが命令をフェッチするために使用するプログラムカウンタを制御するこ
とによって、達成される。図4は、本発明の一実施形態によるマルチスレッド化
されたフェッチ切替パイプラインを例示している。プロセッサは、すべてのレジ
スタアクセスが正しいスレッドのコンテクスト内の正しいレジスタに関連する限
り、パイプライン内の異なるステージにおいて異なるスレッドからの情報を用い
て機能する。
命令ごとに)スレッドを切り替えることによって、システムは、アクティブな同
優先順位のスレッドの数に依存するジャンプ(パイプラインのフラッシュを必要
とする)によるペナルティも低減/除去する。跳んでいるスレッドをフラッシュ
する必要しかないので、その他のスレッドがすでにパイプラインに存在していれ
ば、フラッシュが回避/低減される。
く、あるプログラムコンテクストと別のプログラムコンテクストとの間を切り替
える能力である。これは、コンテクストスイッチがマシン命令間で行なわれるこ
とを意味している。同様の発想は、コンテクスト間のスイッチのコストがゼロで
はないが小さい、低オーバーヘッドコンテクストスイッチに適用することもでき
る。本発明は、これらの状況のいずれをも包含しているが、分かりやすくする目
的で、ゼロタイムコンテクストスイッチを以下で説明する。ゼロタイムコンテク
ストスイッチと低オーバーヘッドコンテクストスイッチとの違いは、当業者には
明らかであろう。上述のように、プログラムコンテクストは、マシンの状態を表
すレジスタの集まりである。コンテクストには、通常、プログラムカウンタ、状
態レジスタおよび複数のデータレジスタが含まれる。すべてのプログラム間で共
用する他の何らかのレジスタを含むことも可能である。
のコンテクスト番号は、プログラムカウンタをロードするために使用するコンテ
クストレジスタを定め、レジスタ値をロードまたはセーブする。これによって、
各パイプラインステージが個別のコンテクストで動作できるようになっている。
コンテクスト間の切り替えは、単に異なるコンテクスト番号を用いることによっ
て行なわれる。
いる。この例におけるコンテクストには、図示のように、32個の汎用レジスタ
、8個のアドレスレジスタ、および、様々なその他の情報が含まれている。スレ
ッドのコンテクストの一部として格納されるデータの種類は、図6に例示するも
のとは異なる場合もある。
を迅速に(すべての命令をできる限り頻繁に)切り替えるという利点を有する、
命令レベルでマルチスレッド化するシステムおよび方法である。各コンテクスト
が実行に要する時間の量は、「量子時間」(quantum)と呼ばれる。最小の量子時
間は、1命令に相当する1クロックサイクルである。マルチサイクル命令の場合
、量子時間は1命令よりも小さい場合がある(即ち、タイムスライスの分解能は
、スレッドが実行している命令ではなく、単に量子時間によって決まる)。
リングアルゴリズムによって実施される。S.Eggers他による「Simultaneous Mul
tithreading:APlatform for Next Generation Processors」IEEE Micro, pp.12-
19(1997年9/10月)など、従来のマルチスレッド化システムにおいては、コンテ
クスト間での量子時間の割り当ては、キャッシュ内の命令の利用可能性などの外
部刺激によって決まる。
れる場合に利点が生じる。このコンテクストのスケジューリングは、厳密なスケ
ジューリング、やや柔軟なスケジューリングおよび自由なスケジューリングの3
つに大別することができる。
る。図7bは、本発明の一実施形態によるやや柔軟なスケジューリングの例を示
している。図7cは、本発明の実施形態による自由なスケジューリングの例を示
している。
を用いて厳密なスケジューリングを行う場合、スケジュールは固定され、短時間
にわたって変化しない。例えば、スケジュールが図7aに示すように「ABAC
」とプログラムされている場合、スレッドの実行時シーケンスは、図7aに示す
ように「ABACABACABAC...」となる。厳密にスケジューリングされ
たスレッドは、一秒当たりに実行される命令の数が厳密であることからハードリ
アルタイム(HRT)スレッドと呼ばれ、HRTスレッドは、厳しいタイミング
要件を満たすことのできる決定性性能(deterministic performance)を有する
。
る場合、スケジュールのいくらかが固定され、残りの利用可能な量子時間は、非
リアルタイム(NRT)スレッドで満たされている。例えば、スケジュールが「
A*B*」とプログラムされていて、「*」が任意のNRTスレッドを実行する
ことができるワイルドカードであるものとすると、スレッドの実行時シーケンス
は、NRTスレッドであるスレッドD、EおよびFを用いて、図7bに示すように
「ADBEAFBEAFBE...」のようになる。
点は、各HRTスレッドに対する実行時間の割り当てが設定されているので、各
スレッドを実行するために必要な時間が予測可能であることにある。スレッドが
多い場合、スレッドが所定の時間内で実行を完了する必要がある場合があるので
、かかる予測可能性は、重要である。これに対して、従来のシステムを参照して
上述した割り込みサービスルーチンは、ハードリアルタイムスレッドが予測可能
な時間で完了することを保証していない。
ュールは、プログラム可能な量子時間サイクルテーブルを用いて達成される。テ
ーブル内の各エントリは、利用可能な量子時間サイクルを表し、そのサイクルが
割り当てられるハードリアルタイムスレッドを提供する。テーブルは、例えば6
4エントリまでの可変長である。テーブルの端に達すると、スケジューラは、テ
ーブル内の最初の要素から続けて、無限に繰り返すシーケンスを提供する。例え
ば、図7dは、本発明の一実施形態による3つのハードリアルタイムスレッドを
用いたやや柔軟なスレッドスケジュールの例である。スレッドAには時間の50
%がスケジュールされ、スレッドBには時間の25%の時間がスケジュールされ
、および、スレッドCには時間の12.5%がスケジュールされている。CPU
が200MIPSのクロックである場合、これらは、スレッドAが100MIPSの専用
CPU実行速度を有し、スレッドBが50MIPSの専用CPU実行速度を有し、ス
レッドCが25MIPSの専用CPU実行速度を有し、残りのスレッド(例えば、非
リアルタイムスレッド)が25MIPSの最小CPU実行速度を有することに等しい
。
スロットが割り当てられるので、指定した実行速度が保証され、各々が保証され
た決定性性能を有する。本発明によって与えられる予測可能性は、ハードリアル
タイムスレッドを実行するために必要とされる時間が分かり、また、スレッドを
確実に完了させるためにプログラムが追加の時間を割り当てる必要がなくなるの
で、プログラムの効率を大幅に向上させる。即ち、各ハードリアルタイムスレッ
ドに対する割り込み待ち時間は、その静的割り当ての分解能内に判定される。こ
の待ち時間は、パイプライン長とスレッドが次にスケジューリングされるまでの
時間とによって判定される。付加されるスケジューリングジッタは、同期クロッ
クと同期する非同期割り込みと同じであると考えることができる。例えば、25
%の割り当てをもつスレッドは、システムクロックの25%で動作しているクロ
ックに関して、決定性割り込み待ち時間を有することになる。
いるが、これは、他の非リアルタイムタスクもその命令スロットで実行できない
ことを意味しているのではない。例えば、スロットCは、ほとんどの時間、アイ
ドル状態である場合がある。例えば、スレッドCが115.2kbpsのUAR
Tを表す場合、スレッドCは、データを送受信するときにしか決定性性能を必要
としない。スレッドは、アクティブでない場合、スケジューリングされる必要が
ない。スケジューラは、すべての空き命令スロットおよびスレッドに割り当てら
れているがアクティブではない命令スロットを、非リアルタイムスレッドのため
に利用することができる。
ができ、これによって、同一のスレッドからの連続する命令相互間の遅延時間が
非決定性になるが、同じにはならない。アプリケーションによっては、この命令
相互間の遅延のばらつきは欠点でない場合もある。例えば、あるスレッドをスロ
ット1,2,3,4,5,6,7,9,...にスケジューリングすることによって、CPUの利用
可能なMIPSの75%を達成できる場合もある。ある種のNRTスレッドのス
ケジューリングは、各スレッドをとおして回転する。即ち、スレッドは、各アク
ティブなスレッドから実行された1命令を用いて、順番にスケジューリングされ
る。この種のやや柔軟なスケジューリングによって、非リアルタイムスレッドを
スケジュール内の空きスロットに(例えば、図7dに「*」でラベル付けされた
量子時間に)スケジューリングすることが可能になり、スロット内において、ス
ケジューリングされたハードリアルタイムスレッドは、上述のように非アクティ
ブである(例えば、スレッドBがアクティブでないとすれば、スレッドBの位置
において)。この種のスケジューリングは、しばしば「ラウンドロビン」スケジ
ューリングと呼ばれる。
低優先順位のスレッドは、高優先順位のスレッドに対して常に道をゆずる。高レ
ベル優先順位によって、低優先順位のスレッドに対して複数命令の微小な動作が
可能になるので、リアルタイムオペレーティングシステム(RTOS)のソフト
ウェアでの実施が可能になる。RTOSカーネルのNRTスレッドが、その制御
下で他のNRTスレッドよりも高い優先順位を有している場合、その高優先順位
のスレッドが動作している間は、いかなる低優先順位のスレッドもスケジューリ
ングされないことが保証される。それゆえ、RTOSカーネルは、他のNRTス
レッドによって割り込みを受ける可能性を考慮することなく、動作を実行するこ
とができる。
タイムスレッド用に特に予約される量子時間はなく、いずれの量子時間もリアル
タイムスレッドのために用いることができる。
ルの固定スロットが割り当てられる)、スレッドには、NRTスレッドとしてフ
ラグを立てることもできる。従って、スレッドは、HRTテーブルによる割り当
てにしたがって最小実行速度が保証されているが、他のスロットをNRTスレッ
ドとして用いることによって、さらに高速に実行することもできる。
動的に切り替えるためのハードウェア支援機能が含まれ、以下にこれを説明する
。このマルチスレッド化支援機能には、リアルタイムおよび非リアルタイムタス
クのスケジューリング、バイナリおよびカウンティングセマフォ(割り込み)に
よるタスク間通信、高速割り込み応答、並びに、コンテクストスイッチおよび増
分リンクなどを含む、様々な特徴が含まれる。
、コンテクストスイッチのためのオーバーヘッドをゼロまで低減させることがで
きる。ゼロタイムコンテクストスイッチは、個々の命令間でのコンテクストスイ
ッチを可能にする。ゼロタイムコンテクストスイッチは、コアの時分割多重化の
ようなものと考えることができる。
に分割されている場合であっても、SRAMとフラッシュメモリとの両方からコ
ードをフェッチすることを可能にしている。このことは、本発明のスレッドスケ
ジューリングを複雑にしている。本発明において、各メモリブロックは、スレッ
ドの全体的なスケジューリングとは独立にスケジューリングされる。図8は、本
発明の一実施形態による2レベルのスケジューリングを用いたスレッドフェッチ
ロジックを例示している。
することができる。例えば、命令は、SRAMおよびフラッシュメモリに格納す
ることができる。上述のように、命令等のデータをSRAMからアクセスする場
合、同じデータまたは命令をフラッシュメモリからアクセスするよりも高速であ
る。この実施形態においては、ハードリアルタイムスレッドが単一サイクルでフ
ェッチされ、ハードリアルタイムスレッドについてのすべての命令がSRAMに
格納されるようにすることが好ましい。これに対して、非リアルタイムスレッド
からフェッチする命令は、SRAMまたはフラッシュメモリのうちのいずれに格
納してもよい。
2またはNRTシャドウスレッドセレクタ804からのポインタに基づいてフェッチ
される。フラッシュメモリからの命令は、NRTフラッシュスレッドセレクタ80
6からのポインタに基づいてフェッチされる。スレッドセレクタ802,804,806につ
いては、以下でさらに詳しく説明する。SRAMおよびフラッシュメモリの出力
は、マルチプレクサ(MUX)810に入力され、マルチプレクサは、ポストフェ
ッチセレクタ812からの出力に基づいて、以下で説明するように、適切な命令を
出力する。その後、MUXの出力をデコードし、従来のパイプラインプロセスま
たは以下で説明する修正したパイプラインプロセスを用いて、実行を継続するこ
とができる。
る。上で示したように、シャドウ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スレッドが存在しないことを示すために用いられる。
タ804およびシャドウSRAMアクセスロジックを例示している。NRTシャド
ウスレッドセレクタ804には、利用可能なスレッド識別装置1010、シャドウSR
AMからフェッチされた過去の動的スレッドを識別するためのレジスタ1012、お
よび、フリップフロップ(F/F)が含まれる。レジスタおよび利用可能なスレ
ッド識別装置1010(以下で説明する)は、スレッドセレクタユニットによって受
信され、次のサイクルにおいて(存在すれば)SRAMによってアクセスされる
べきスレッドを識別する。スレッドセレクタ1014は、1012から受信した最後のス
レッド番号と1010から受信した利用可能なスレッド識別装置とを用いて次にフェ
ッチすべきスレッドを判定し、NRTスレッドの正しいラウンドロビン選択を保
証する。
例示している。NRT利用可能スレッド識別装置1010は、各スレッドについて、
そのスレッドがアクティブであるか否か、そのスレッドが動的なものとして識別
されているか否か、および、そのスレッドが高優先順位なものとしてマークされ
ているか否かに基づいて、出力を生成する。アクティブ、動的、高優先順位のス
レッドが存在しない場合、NRT利用可能スレッド識別装置1010は、各スレッド
について、そのスレッドがアクティブであるか否か、そのスレッドが動的(NR
T)なものとして識別されているか否か、および、そのスレッドが低優先順位な
ものとしてマークされているか否かに基づいて、出力を生成する。
Tスケジュール可能出力が真であるか否か、および、そのスレッドのPCがシャ
ドウSRAMを指しているか否かを判定するロジックに基づいて、シャドウNR
Tスケジュール可能ロジック出力を生成する。PCがシャドウSRAM内の位置
を指しているか否かの判定は、アドレスを検査することによって、即ち、シャド
ウSRAMおよびフラッシュメモリがアドレス空間内の異なる領域にマップされ
ていることを検査することによって、行なわれる。
を識別し、これらのスレッドのうちの1つは、過去に選択され、シャドウRAM
から連続的にフェッチされ、パイプラインによって使用されて、レジスタ1012に
格納されている過去のスレッドに基づいて選択される。
可能であることを示す場合、選択されたスレッドのPCが取得され、次のサイク
ルにおいてシャドウSRAMアクセスのためのアドレスとして使用される。
れた)でなく、かつ、ポストフェッチセレクタ812がそのシャドウSRAMをデ
コードステージのためのソースとして選択しない限り、選択されたスレッド番号
(「スレッドなし」の場合も含む)がレジスタ1012にラッチされる。即ち、現在
のシャドウSRAMアクセスがHRTスレッドである場合、現在のシャドウSR
AMアクセスが非スレッドである場合、または、現在のSRAMアクセスがポス
トフェッチセレクタ812によって選択されたNRTスレッドである場合にのみ、
選択されたスレッド番号が「過去のスレッド」であるものとしてラッチされる。
ポストフェッチセレクタ812は、以下でさらに詳細に説明する。
タ806を例示している。フラッシュ読み出し専用メモリ(ROM)は、そのデー
タにアクセスするために複数のクロックサイクルを必要とする。本発明のこの実
施形態においては、フラッシュROMからの命令速度を向上させるために、フラ
ッシュメモリが4つのブロックに分割され、それぞれがアドレス空間における4
つの範囲に対応している。これらのブロックは、図8において、フラッシュA、
フラッシュB、フラッシュCおよびフラッシュDとして示されている。各ブロッ
クは独立にフェッチすることができ、そのため、各ブロックは、そのブロックか
らいずれのスレッドをフェッチすることができるかを判定するために、各自のN
RTスレッドセレクタ806を必要とする。上述のように、NRTスレッドだけは
、フラッシュROMから実行することができる。
ッドの集合との交差が、利用可能スレッド識別装置1010によって生成され、スレ
ッドセレクタ1214によって受信される。スレッドセレクタ1214は、過去のスレッ
ド番号を用いて次のスレッドをラウンドロビンの方法で選択する。スレッドPC
のユニット1214は、選択されたスレッドに対するプログラムカウンタ(PC)を
判定し、このPCをアドレスに従ってフラッシュブロックに渡す。フラッシュメ
モリの出力は2重バッファリングされており、後続のフェッチ動作が開始された
後でもその出力が「有効」にとどまるようにしている。
。フラッシュブロックおよびSRAMブロックのそれぞれがスレッドを選択した
後、ポストフェッチセレクタ812は、そのスレッドをパイプラインに渡すスレッ
ドとして選択する。HRTスレッドがアクティブであれば、これが常に選択され
る。そうでなければNRTスレッドが選択される。この例においては、フラッシ
ュ/シャドウSRAMリソースは、ソースセレクタ1302によってNRTスレッド
が選択された元の最後のフラッシュ(またはシャドウSRAM)ブロックに応じ
て、ラウンドロビンの順で選択される。
ド状態をセーブおよびリストアする能力である。マルチスレッドCPUは、機能
ユニットの集合に対してインターリーブされた複数のスレッドの実行を有する。
CPU状態は、各スレッドに対して複製される。スレッドによっては、他のスレ
ッドの状態を読み出しまたは書き込みできる必要があるスレッドもある。例えば
、1スレッドで動作しているリアルタイムオペレーティングシステム(RTOS
)は、単一のハードウェアスレッドに対して多重の複数のソフトウェアスレッド
の実行を必要とする場合があり、そのため、RTOSは、かかるソフトウェアス
レッドの状態をセーブおよびリストアできる必要がある場合がある。
ングシステム(OS)カーネルを有し、カーネルはこれらのスレッドの状態をセ
ーブおよびリストアすることに責任を負っている。これは、既存のRTOSから
のコードがハードウェアスレッドを制御することに用いられる場合、適当ではな
い。
メモリまたはレジスタ)、1つのレジスタソースおよび1つの一般的な宛先を用
いて、命令集合を記憶するためのメモリである。本発明は、1つのスレッドにそ
の一般的なソースあるいは一般的な宛先またはその両方を設定し、他のスレッド
の状態を用いることを可能にする。プロセッサ状態ワードにおける2つのフィー
ルド、ソーススレッドおよび宛先スレッドが使用され、レジスタまたはメモリに
対するソースおよび/または宛先アクセスについての正常なスレッドIDを上書
きする。
スレッドのアーキテクチャに容易に移植することを可能にする。本発明は、作業
者スレッドと管理者スレッドとの間に提示する単純な方法を与える。
強力なパイプライン構造と共に用いられる。図14は、本発明の一実施形態によ
るマルチスレッド化された発行スイッチパイプラインを例示している。従来のパ
イプライン処理環境においては、フェッチおよびデコードステージは、そのフェ
ッチおよびデコードステージがいつ行なわれたに関わらず、同一の出力になる。
これに対して、本発行ステージはデータ依存であり、このステージは、データを
ソースレジスタから取得するので、この動作の結果は、発行動作の時点における
ソースレジスタのデータに依存している。本発明のこの実施形態においては、ス
レッド選択決定は、発行ステージの入力に対して遅延される。
チおよび発行ステージにおいてスレッドラッチを使用することによって、実施さ
れる。この発行ステージは、いずれのスレッドを実行すべきかを、優先順位およ
びスレッドスイッチアルゴリズム(プリフェッチ選択に従う)に基づくだけでな
く、データおよびリソース依存性にも基づいて決定する。フェッチおよび発行ス
テージ内のラッチの数を増やすことによって、いかなる数のスレッドも扱うこと
ができる。
イプラインを例示している。図15は、並列フェッチおよびデコード拡張を示し
ている。並列フェッチステージは、各サイクルごとにメモリアクセスを必要とす
るので、プリフェッチシステムなしに、または、プログラムメモリをマルチポー
ト化することなく並列化することができない。プログラムメモリのマルティポー
ト化は、すべてのスレッドのそれぞれが利用性のほとんどない各自のポートを有
する必要があるので、経済的な解決方法ではない。プリフェッチシステムを用い
て、一時的にプログラムメモリの線をフェッチすることによって、バス競合を低
減することができる。すべてのスレッドのそれぞれについてバッファ線を実装し
、これらのバッファ線をフェッチステージとデコードステージとの間でマルチポ
ートした場合、フェッチユニットは命令を任意のスレッドから並列に供給するこ
とができる。その結果、スレッドスイッチをよりよくパイプラインフラッシュか
ら隠し、割り込み待ち時間を減少させることができる。例えば、ジャンプフラッ
シュの改善は、完全に同一ではない優先順位の開始すべきスレッドが存在し、低
い方の優先順位のスレッドが開始される場合に行なわれる。割り込み待ち時間の
改善は、既にフェッチおよびデコードされて割り込みに対して発行を準備してい
るISRコードを開始することによってなされる。
ーパイプラインを例示している。図16において、機能ユニットを最大限利用す
るために、複数の命令が同一のスレッドまたは異なるスレッドから並列に実行さ
れる。発行ステージは、スレッド選択、リソース割り当ておよびデータ依存物保
護について責任を負う。そのため、発行ステージは、スレッドのスケジューリン
グを最適化して、最大限のリソース利用および最大限のトータルスループットを
保証している。それより前のステージ(フェッチステージおよびデコードステー
ジ)は、発行スレッドセレクタから利用可能なスレッドのプールを維持しようと
試みる。
れてオブジェクト形態で配布されているVirtual Peripheral(VP)を統合する
能力である。VPが極めて厳しいジッタ許容差を有していても、異なるVPに対
して互いの影響を考慮することなく、これらを結合することができる。
5.2kbps、217ns(ナノセカンド)、(2)10BaseTイーサネ
ット、10ns、(3)TCP/IPスタック、10ms(ミリセカンド)、お
よび、(4)アプリケーションコード、50ms。設計者がこれらのVPを統合
してシステムを作成した場合、設計者は、静的スケジュールテーブルを判定する
必要がほとんどない。
ので、いずれのVPもNRTスレッドとしてスケジューリングされる。他の2つ
のVPは、外部イベントに対して決定性応答を必要とするので、ハードリアルタ
イムスレッドとしてスケジューリングされなければならない。目的のCPU速度
が200MHzであるとき、イーサネットVPは、MIPSの50%、即ち5n
sの応答を必要とし、その命令間に1より大きな命令遅延を有することができな
い。UART VPは、MIPSの1%未満しか必要としないが、そのジッタ許
容差内でサービスされることを必要とするので、テーブル内に4回スケジュール
される。
かなるコードも修正することなく、各スレッドが必要とする全計算能力に占める
割合を判定するための何らかの単純な数学的処理を必要とするだけで、統合する
ことができる。これらのVPは、タイミングを必要とするスレッドの各々がその
ジッタ性能を保証されているので、いかなるタイミング問題を伴うことなく同時
に動作する。
、適切な高レベルAPIの定義を必要とし、その詳細は当業者には明らかであろ
う。
割り込みが発生すると、スレッドが再開され、入ってくるデータのタイミングは
、開始エッジが検出された正確な時間に基づく。この技術によって、さらに高い
精度が可能になり、よって組込み型プロセッサの動作が改善される。
自身をサスペンドする(RTCCタイマは、各スレッドについて独立であるので
、他のVPと衝突することがない)。
フトウェア割り込みの信号を発行する。この「割り込み」命令は、単に割り込み
フラグを設定するだけである。アプリケーション層は、この割り込みフラグをポ
ーリングされるか、または、サスペンドされた後この割り込みによって再開され
る。
じて自身をサスペンドする。この割り込みがアプリケーションスレッドによって
トリガされると、送信UARTスレッドが再開され、送信すべきバイトが内部レ
ジスタ(UartTxBits)に送信される。この時点でアプリケーションは、第2のバ
イトを自由に送信することができ、そのため、割り込みフラグがクリアされ、Ua
rtTxEmpty割り込みがトリガされる。
とによって、送信される(RTTCタイマは、各スレッドについて独立なので、
他のVPと衝突することがない)。
る。送信開始割り込みを最後のバイトの送信中にトリガーして、スレッドを直ち
に再開できるようにすることも可能である。
施形態を参照して説明してきたが、当業者であれば、本発明の思想と範囲から逸
脱することなく形態および細部の様々な変更を行うことが可能であることが容易
に分かるであろう。
インを示す図である。
軟なスケジューリングを示す図である。
ッチアルゴリズムを示す図である。
RAMアクセスロジックを示す図である。
。
である。
を示す図である。
ラインを示す図である。
インを示す図である。
Claims (10)
- 【請求項1】 プログラムコンテクスト間をスイッチするためのコンピュータベースのシステ
ムであって、 実行パイプラインにおいて第1のプログラムスレッドおよび第2のプログラ
ムスレッドを有することのできる組込み型パイプラインプロセッサと、 前記組込み型プロセッサの第1の状態を格納することができるデータ記憶装
置の第1の集合と、 前記組込み型プロセッサの第2の状態を格納することができるデータ記憶装
置の第2の集合と、 前記組込み型プロセッサが実行すべき前記プログラムスレッドを識別するた
めのスレッドスケジューラと、 からなり、 前記プロセッサが、前記第1のスレッドにおける第1のプログラム命令の実行
の最後と前記第2のスレッドにおける第2のプログラム命令の実行の最初との間
で、前記第1の状態と前記第2の状態とを切り替えるシステム。 - 【請求項2】 前記第1の状態が前記第1のプログラムスレッドの実行中における前記組込み
型プロセッサの状態である、請求項1のシステム。 - 【請求項3】 前記第2の状態が前記第2のプログラムスレッドの実行中における前記組込み
型プロセッサの状態である、請求項1のシステム。 - 【請求項4】 前記プロセッサは、状態選択レジスタを変更することによって前記第1の状態
と前記第2の状態とを切り替える、請求項1のシステム。 - 【請求項5】 前記スレッドスケジューラは、 少なくとも1つのハードリアルタイム(HRT)スレッドおよび少なくとも
1つの非リアルタイムスレッドを識別するためのスレッド識別装置と、 前記HRTの実行が所定の時間内で行われることを保証するように前記HR
Tスレッドを利用可能な量子時間に規則正しくスケジューリングするためのHR
Tスケジューラと、 を含む、請求項1のシステム。 - 【請求項6】 前記時間量が少なくとも1つの命令サイクルである、請求項5のシステム。
- 【請求項7】 前記スレッドスケジューラは、前記HRTが完了している場合、スケジューリ
ングされたHRTスレッドを置き換えるように非リアルタイム(NRT)スレッ
ドをスケジューリングする、請求項5のシステム。 - 【請求項8】 前記スレッドスケジューラは、非リアルタイム(NRT)スレッドの実行をH
RTスレッドに割り当てられていない量子時間にスケジューリングする、請求項
5のシステム。 - 【請求項9】 前記スレッドスケジューラは、実行されるべきNRTスレッドを規則正しくス
ケジューリングする、請求項8のシステム。 - 【請求項10】 前記システムは、 プログラム命令を格納し、前記プロセッサが第1のフェッチ周期の間に命令
をフェッチするための第1の記憶装置と、 プログラム命令を格納し、前記プロセッサが第2のフェッチ周期の間に命令
をフェッチするための第2の記憶装置とをさらに含み、 前記第1のフェッチ周期が実質的に前記第2のフェッチ周期よりも短い、請求
項5のシステム。
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)
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)
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)
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)
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 |
-
2000
- 2000-12-21 AU AU25974/01A patent/AU2597401A/en not_active Abandoned
- 2000-12-21 WO PCT/US2000/035242 patent/WO2001046827A1/en not_active Application Discontinuation
- 2000-12-21 US US09/748,098 patent/US7925869B2/en not_active Expired - Fee Related
- 2000-12-21 JP JP2001547274A patent/JP4693326B2/ja not_active Expired - Lifetime
- 2000-12-21 EP EP00989474A patent/EP1247195A4/en not_active Withdrawn
-
2002
- 2002-10-01 US US10/263,068 patent/US7082519B2/en not_active Expired - Lifetime
Patent Citations (1)
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)
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 |