JP5222937B2 - 時限ポート - Google Patents

時限ポート Download PDF

Info

Publication number
JP5222937B2
JP5222937B2 JP2010503479A JP2010503479A JP5222937B2 JP 5222937 B2 JP5222937 B2 JP 5222937B2 JP 2010503479 A JP2010503479 A JP 2010503479A JP 2010503479 A JP2010503479 A JP 2010503479A JP 5222937 B2 JP5222937 B2 JP 5222937B2
Authority
JP
Japan
Prior art keywords
port
processor
thread
data
time value
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.)
Active
Application number
JP2010503479A
Other languages
English (en)
Other versions
JP2010525436A (ja
Inventor
メイ,マイケル,デービット
ヘディンガー,ペーター
ディクソン,アラスター
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xmos Ltd
Original Assignee
Xmos Ltd
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 Xmos Ltd filed Critical Xmos Ltd
Publication of JP2010525436A publication Critical patent/JP2010525436A/ja
Application granted granted Critical
Publication of JP5222937B2 publication Critical patent/JP5222937B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • 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
    • 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

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)
  • Bus Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Microcomputers (AREA)
  • Information Transfer Systems (AREA)

Description

本発明は、少なくとも1つの時限ポートを有するプロセッサ、および特に他のプロセッサまたは外部装置と接続するためのインタフェースプロセッサに関する。
プロセッサ設計者が直面している問題の1つは、プロセッサとの通信を必要とする外部装置が増え続けており、そのような外部装置を処理することである。一般に、この処理は、外部装置に接続されたポートで生じるアクティビティを処理するための割り込み処理機能をプロセッサに提供することにより行われる。例えば1つのポートで複数の外部装置に対応するために、より高性能なインタフェースロジックが使用されるようになってきている。
様々な異なる状況でインタフェーシングが必要とされている。本明細書で背景例として述べる1つの状況は、モバイルアプリケーションの処理にある。
図1は、モバイルアプリケーションプロセッサ2の例示的な応用例を示す。アプリケーションプロセッサ2は、CPU4と、複数の周辺装置8と接続する複数のインタフェースコントローラ6とを含む。インタフェースコントローラには、ハードドライブ(HDD)8aおよびSDRAMメモリ8bと接続するためのメモリコントローラ6aと、カメラ8cと接続するためのビデオコントローラ6bと、液晶ディスプレイ(LCD)8dと接続するためのディスプレイコントローラ6cと、マイクロフォン8e、スピーカ8fおよびヘッドセット8gと接続するための音声コントローラ6dと、キーボード8h、汎用シリアルバス(USB)デバイス8i、セキュアデジタル(SD)カード8j、マルチメディアカード(MMC)8k、および万能非同期レシーバ/トランスミッタ(UART)装置81と接続するための接続コントローラ6eが挙げられる。インタフェースコントローラ6は、一般に、バス3を介してCPU4に接続される。システムは、また、電源コントローラ10と無線プロセッサ12を含む。
インタフェースコントローラ6は、多少概略的に示されているが、何らかの専用入出力ロジックまたは特別に構成されたポートを概略的に表わしていることに注意されたい。
従来、外部インタフェーシングは、割り込みまたはポーリングを使用して達成されている。割り込みが使用されるとき、外部周辺装置は、プロセッサに入力する準備ができているデータがあること、またはプロセッサからのデータを必要とすることをプロセッサに知らせる信号を送る。ポーリングを使用するとき、プロセッサは、常にデバイスの状態を確認して、データを提供するか受け入れる準備ができているかどうかを判定する。
図1のようなアプリケーションプロセッサ2を実現する1つの可能性は、特定用途向け集積回路マイクロコントローラ(ASiC)を使用することである。ASICは、特定用途に専用化されその用途に適するように最適化されたマイクロプロセッサを含む場合があるハードワイヤードデバイスである。ASICは、所定の機能では、一般に、他の選択肢よりの安価で消費電力が少ない。しかしながら、ASICは、設計が複雑で、予め設計されなければならず、構成の変更が容易ではない。
別の可能性は、フィールドプログラマブルゲートアレイ(FPGA)デバイスを使用することである。FPGAは、製造後に「現地で」構成することができる半導体デバイスである。FPGAを構成するには、最初に、コンピュータを使用して、例えば、回路図を描くかまたは機能を示すテキストファイルを作成することにより、所望の論理機能をモデル化する。FPGAは、静的に構成された相互接続を介して通信するルックアップテーブルの配列を含む。コンピュータモデルは、FPGAベンダから提供されたソフトウェアを使用してコンパイルされ、このソフトウェアは、FPGAルックアップテーブルにダウンロードすることができるバイナリファイルを作成する。これにより、機器の製造業者は、FPGAを調整して自分自身の個別のニーズを満たすことができる。
この例では、インタフェースコントローラ6は、FPGAとして実現される。これには、携帯電話の製造業者が、汎用FPGAデバイス2を購入し、次にそれを自分の望む用途に固有になるように現場で(すなわち現地で)構成できるという利点がある。しかしながら、FPGAの欠点は、ASICより高価で、速度が遅く、電力を消費することである。
代替例では、チップ全体2がFPGAで実現されてもよく、あるいはチップ2が、チップ2とそれぞれの周辺装置8との間に個別のFPGAチップが接続された汎用プロセッサでもよい。しかしながら、これらの選択肢は、ほとんどの携帯電話や他の消費者機器では、より高価で大量の電力を消費する。
価格、速度、限界およびエネルギー消費レベルがASICより優れたFPGAの設定可能性を達成すると好都合である。この目的を達成する際の1つの特定の課題は、プロセッサとその環境間の対話のタイミングを適切にすることである。
本発明の1つの態様によれば、インタフェース部分と内部環境とを有するプロセッサが提供され、インタフェース部分は、現在時間値を受け取るように構成された少なくとも1つのポートと、前記ポートと関連付けられて、トリガ時間値を記憶するように構成された第1のレジスタと、現在時間値がトリガ時間値と一致するかどうかを検出し、前記一致が検出された場合には、ポートと外部環境との間でデータを転送しかつレディ信号を変化させて転送を示すように構成された比較ロジックとを含み、内部環境は、少なくとも1つのポートと内部環境との間でデータを転送するための実行ユニットと、実行ユニットによって実行するための一連の命令をそれぞれ含む複数のスレッドをスケジューリングするためのスレッドスケジューラであって、レディ信号に応じて実行するために前記スレッドの1つまたは複数をスケジューリングするステップを含むスレッドスケジューラとを含む。
これにより、スレッドのスケジューリングをデータの転送のタイミングと密接に関連づけることができ、それにより、それらのスレッドによって処理される入出力操作に対する応答時間の正確な制御が実現される。
実施形態では、スレッドスケジューラは、1組の実行可能スレッドを維持するように構成されてもよく、スレッドスケジューラによる前記スケジューリングするステップは、前記1組の実行可能スレッドからスレッドを除外することによってそのスレッドをサスペンドするステップを含んでもよい。スレッドをサスペンドするこの手法は、高速反応時間が必要とされるときに割り込みを使用するのに好ましい。スレッドのサスペンドを使用することによって、スレッドスケジューラは、関連アクティビティを予想してスレッドを実行するために準備をすることができ、即ち、プロセッサは、反応する「準備のできた(primed)」レディ状態である。これと対照的に、割り込みを使用すると、実行ユニットは、関連ない可能性のあるコードを実行している間に外部装置からの信号によって割り込まれる。割り込まれた場合、現在のプログラム状態を保存した後でなければ割り込みを実行できない。したがって、割り込みを使用する反応時間はかなり遅い。ポーリングは、連続的な照会と応答が必要になるためエネルギー効率はあまり高くない。
プロセッサは、現在時間値を出力するように構成されたカウンタを含んでもよく、前記少なくとも1つのポートは、カウンタから現在時間値を受け取るように構成される。
プロセッサは、複数のポートと複数の第1のレジスタを含んでもよく、各第1のレジスタは、それぞれのポートと関連付けられかつそれぞれのトリガ時間値を記憶するように構成され、スレッドスケジューラによる前記スケジューリングするステップは、レディ信号に応じて実行するための前記スレッドの1つまたは複数をスケジューリングするステップを含むことができる。
転送は、入力操作を含んでもよく、それにより、データが、前記外部環境からの少なくとも1つのポートに取り込まれ、前記変化させるステップは、前記レディ信号を、データを内部環境に入力できることを示す第1の状態に設定するステップを含んでもよい。転送は、出力操作を含んでもよく、それにより、データが、前記少なくとも1つのポートのそれぞれから外部環境に提供され、前記変化させるステップは、前記レディ信号を、少なくとも1つのポートが内部環境との間でデータをさらに転送できることを示す第2の状態に設定するステップを含んでもよい。
実行ユニットは、前記レディ信号のそれぞれが第1の状態にある場合に、ポートから内部環境にデータを入力する入力命令を実行するように構成されてもよく、入力命令は、前記1つまたは複数の関連スレッドのシーケンスの構成命令である。実行ユニットは、前記レディ信号のそれぞれが第2の状態にある場合に、内部環境からポートにデータを出力する出力命令を実行するように構成されてもよく、出力命令は、前記1つまたは複数の関連スレッドのシーケンスの構成命令である。
実行ユニットは、入力命令の完了時に前記それぞれのレディ信号を第2の状態にセットするように構成されてもよい。実行ユニットは、出力命令の完了時に前記それぞれのレディ信号を第1の状態にセットするように構成されてもよい。
スレッドスケジューラによる前記スケジューリングするステップは、それぞれのレディ信号が前記第1の状態にセットされるまで入力命令のスレッドの実行をサスペンドするステップを含んでもよい。スレッドスケジューラによる前記スケジューリングするステップは、それぞれのレディ信号が前記第2の状態にセットされるまで出力命令のスレッドの実行をサスペンドするステップを含んでもよい。
転送は、入力操作と出力操作の両方を含んでもよく、実行ユニットは、入力命令と出力命令を実行するように構成されてもよい。
実行ユニットは、前記第1のレジスタのうちの1つにトリガ時間値を記憶するセットトリガ時間命令を実行するように構成されてもよい。
前記外部環境は、前記プロセッサが収容された集積回路の少なくとも1つのピンを含んでもよい。前記外部環境は、前記プロセッサが収容された集積回路上の別のプロセッサを含んでもよい。ポートと内部環境との間のデータの転送は、そのポートと実行ユニットとの間の転送を含んでもよい。内部環境は、バスを含み、ポートと内部環境との間のデータの転送は、そのポートとバスとの間の転送を含んでもよい。内部環境は、複数組の第2のレジスタを含み、各組の第2のレジスタは、前記複数のスレッドのそれぞれに関する情報を記憶し、ポートと内部環境との間の転送は、そのポートと前記第2のレジスタのうちの1つとの間の転送を含んでもよい。
前記少なくとも1つのポートは、タイムスタンプモードで動作可能でよく、それによりポートは、タイムスタンプをポートと外部環境との間のデータの転送と関連付ける。インタフェース部分は、前記少なくとも1つのポートと関連付けられた第3のレジスタを含んでもよく、タイムスタンプの前記関連付けは、タイムスタンプされた転送を実行する際に現在時間値を第3のレジスタに記憶するステップを含む。実行ユニットは、タイムスタンプを、第3のレジスタから、タイムスタンプされた転送と関連付けられたスレッドの前記第2のレジスタのうちの1つに転送するように構成されてもよい。
実行ユニットは、ポートからデータの入力と関連付けられたタイムスタンプを読み出し、トリガ時間値をタイムスタンプと指定時間間隔を加えたものに設定して、時間間隔が経過した後でポートから外部環境へのデータの出力をトリガするように構成されてもよい。
プロセッサは、現在時間を実行ユニットに転送するように構成された少なくとも1つのタイマを含んでもよい。タイマは、ウェイクアップ時間値を記憶するように構成された第4のレジスタと、現在時間値がウェイクアップ時間値と一致した場合に指示を生成するように構成された比較ロジックとを含んでもよく、スレッドスケジューラによる前記スケジューリングするステップは、時限スレッドの実行を、指示を受け取るまでサスペンドするようにスケジューリングするステップを含んでもよい。実行ユニットは、指示に応じてタイマから現在時間を読み出すように構成されてもよい。
指示は、スレッドスケジューラに送られたスレッド識別子を含んでもよく、このスレッド識別子は時限スレッドを識別する。指示は、実行ユニットに送られた継続点ベクトルを含んでもよく、継続点ベクトルは、時限スレッド内の実行が再開されるポイントを指定する。実行ユニットは、前記継続点ベクトルをセットするセットベクトル命令を実行するように構成されてもよい。
本発明の別の態様によれば、インタフェース部分と内部環境とを有し、インタフェース部分が、少なくとも1つのポートと、前記ポートと関連付けられた第1のレジスタとを含み、内部環境が、実行ユニットとスレッドスケジューラとを含むプロセッサにおいてスレッドをスケジューリングする方法が提供され、この方法は、現在時間値をポートに受け取るステップと、トリガ時間値を第1のレジスタに記憶するステップと、現在時間値をトリガ時間値と比較して、現在時間値がトリガ時間値と一致するかどうか検出するステップと、前記一致が検出された場合に、ポートと外部環境との間でデータを転送し、転送を示すためにレディ信号を変化させるステップと、スレッドスケジューラを操作して、実行ユニットにより実行するための一連の命令をそれぞれ含む複数のスレッドをスケジューリングするステップであって、レディ信号に応じて実行するために1つまたは複数の前記スレッドをスケジューリングするステップを含むスケジューリングするステップと、実行ユニットを操作して少なくとも1つのポートと内部環境との間でデータを転送するステップとを含む。
本発明の別の態様によれば、モバイルアプリケーションプロセッサと、少なくとも1つの周辺装置と、モバイルアプリケーションプロセッサと周辺装置との間に接続されたインタフェースプロセッサとを有し、インタフェースプロセッサが、インタフェース部分と内部環境を有する移動端末であって、インタフェース部分は、現在時間値を受け取るように構成された少なくとも1つのポートと、前記ポートと関連付けられて、トリガ時間値を記憶するように構成された第1のレジスタと、現在時間値がトリガ時間値と一致するかどうかを検出し、前記一致が検出された場合には、ポートとモバイルアプリケーションプロセッサまたは周辺装置との間でデータを転送し、転送を示すためにレディ信号を変化させるように構成された比較ロジックとを含み、内部環境は、少なくとも1つのポートと内部環境との間でデータを転送するための実行ユニットと、実行ユニットによる実行のために一連の命令をそれぞれ含む複数のスレッドをスケジューリングするためのスレッドスケジューラであって、レディ信号に応じて実行するための1つまたは複数の前記スレッドをスケジューリングするステップとを含むスレッドスケジューラとを含む。

本発明の別の態様によれば、相互接続されたプロセッサの配列が提供され、前記プロセッサのうちの少なくとも1つが、インタフェース部分と内部環境とを有し、前記インタフェース部分は、現在時間値を受け取るように構成された少なくとも1つのポートと、前記ポートと関連付けられて、トリガ時間値を記憶するように構成された第1のレジスタと、現在時間値がトリガ時間値と一致するかどうかを検出し、前記一致が検出された場合には、ポートと配列内の別のプロセッサとの間でデータを転送し、転送を示すためにレディ信号を変化させるように構成された比較ロジックとを含み、内部環境は、少なくとも1つのポートと内部環境との間でデータを転送するための実行ユニットと、実行ユニットによる実行のために一連の命令をそれぞれ含む複数のスレッドをスケジューリングするためのスレッドスケジューラであって、レディ信号に応じて実行するための1つまたは複数の前記スレッドをスケジューリングするステップを含むスレッドスケジューラとを含む。
本発明の別の態様によれば、インタフェース部分と内部環境とを有するプロセッサが提供され、インタフェース部分は、現在時間値を受け取るように構成されたポート手段と、前記ポート手段と関連付けられて、トリガ時間値を記憶するためのレジスタ手段と、現在時間値がトリガ時間値と一致するかどうかを検出し、前記一致が検出された場合には、ポート手段と外部環境との間でデータを転送し、転送を示すためにレディ信号を変化させるように構成された比較手段とを含み、内部環境は、少なくとも1つのポート手段と内部環境との間でデータを転送するための実行手段と、実行手段によって実行するための一連の命令をそれぞれ含む複数のスレッドをスケジューリングするためのスレッドスケジューリング手段であって、レディ信号に応じて実行するために1つまたは複数の前記スレッドをスケジューリングするステップを含むスレッドスケジューリング手段とを含む。
本発明の別の態様によれば、インタフェース部分と内部環境とを有し、インタフェース部分が、少なくとも1つのポートと、前記ポートと関連付けられた第1のレジスタとを含み、内部環境が、実行ユニットとスレッドスケジューラを含むプロセッサにおいてスレッドをスケジューリングするためのコンピュータプログラム製品が提供され、プログラムは、コンピュータ上で実行されたときに、現在時間値をポートに受け取るステップと、トリガ時間値を第1のレジスタに記憶するステップと、現在時間値をトリガ時間値と比較して現在時間値がトリガ時間値と一致するかどうかを検出するステップと、前記一致が検出された場合には、ポートと外部環境との間でデータを転送し、転送を示すためにレディ信号を変化させるステップと、スレッドスケジューラを操作して、実行ユニットに実行させるための一連の命令をそれぞれ含む複数のスレッドをスケジューリングするステップであって、レディ信号に応じて実行するために前記スレッドの1つまたは複数をスケジューリングするステップを含むステップと、少なくとも1つのポートと内部環境との間でデータを転送するステップとを実行するコードを含む。
本発明をよりよく理解し本発明をどのように実施できるかを示すために、次に、例として、対応する図面について言及する。
当該技術分野で既知のFPGAデバイスの例示的な応用例を示す図である。 インタフェースプロセッサの例示的な応用例を示す図である。 インタフェースプロセッサの別の応用例を示す図である。 インタフェースプロセッサの構造の概略図である。 時限ポートの概略図である。 スレッドレジスタセットの概略図である。 タイマの概略図である。 時限ポートの動作を示す流れ図である。 タイマの動作を示す流れ図である。
図2は、携帯電話におけるインタフェースプロセッサの応用例を示す。モバイルアプリケーションプロセッサ2は、複数の周辺装置8との通信を必要とする。図1と同じように、アプリケーションプロセッサ2は、バス3、CPU4、およびハードドライブ(HDD)8aとSDRAMメモリ8bを接続するためのメモリコントローラ6a、ならびに電源コントローラ10と無線プロセッサ12を含む。
しかしながら、図2の構成では、専用コントローラ6の代わりに、CPU4が、汎用ポート7を介して外部と通信することができる。この例では、カメラ8cおよび液晶ディスプレイ8dと接続するための汎用ポート7aおよび7bが提供され、マイクロフォン8e、スピーカ8fおよびヘッドセット8gと接続するための汎用ポート7cが提供され、キーボード8h、汎用シリアルバス(USB)デバイス8i、セキュアデジタル(SD)カード8j、マルチメディアカード(MMC)8kおよび汎用非同期レシーバ/トランスミッタ(UART)デバイス81と接続するための汎用ポート7dが提供される。
図2では、インタフェースプロセッサ14a、14bおよび14cが、関連ポート7の出力側に配置されており、第1のインタフェースプロセッサ14aは、画像装置8c〜8dと汎用ポート7a〜7bとの間に接続され、第2のインタフェースプロセッサ14bは、音声装置8e〜8gとの間に接続されており、第3のインタフェースプロセッサ14bが、汎用ポート7dと様々な接続装置8h〜8mとの間に接続されている。後述するように、インタフェースプロセッサ14a〜14cによって、応用例に固有の表示機能、音声機能および接続機能が実現されるので、ポート7は汎用ポートでよい。インタフェースプロセッサ14は、他の場合にはFPGAによって提供される適応性と設定可能性を提供するので、ポート7は、FPGAロジックを使用しなくてもよい。インタフェースプロセッサ14aは、ポート7aおよび7bに接続されたポート22aおよび22bと、外部装置8cおよび8gに接続されたポート22c、22d、22eおよび22fとを有する。図2に示していないが、インタフェースプロセッサ14bおよび14cは、同様のポートを有する。
インタフェースプロセッサは、通常、インタフェースを介してデータを転送するために使用される固有プロトコルの実施、パラレル形式とシリアル形式間の変換を含むデータの再フォーマット、および場合によってはデータの符号化、圧縮、暗号化などのより高度な機能に関与する。
インタフェースプロセッサの別の応用例は、図2aに示した多重プロセッサチップ202内のタイルとしてのものである。このチップ202は、チップ202上のプロセッサ間の通信を支援する高性能相互接続204と、複数のチップからシステムを容易に構成できるようにするチップ間リンク206とを使用する。各プロセッサ14は、ポート22を介して、そのチップ間リンク206と高性能相互接続204に接続される。
以下でより詳しく述べるインタフェースプロセッサの重要な特徴は、ポート22におけるアクティビティを管理する機能である。各インタフェースプロセッサは、CPU、メモリおよび通信を含む。CPUとポート間の直接接続と応答接続を可能にするために、各プロセッサは、いくつかの並行プログラムスレッドを実行するためのハードウェア支援を有し、各プログラムスレッドは、一連の命令を含み、それらの命令の少なくとも幾つかは、具体的には、ポートにおけるアクティビティを処理する役割を持つ。以下でより詳しく述べるように、ハードウェア支援には次のようなものがある。
−各スレッドごとに1組のレジスタ
−実行するスレッドを動的に選択するスレッドスケジューラ
−入出力に使用される1組のポート(ポート22)
−入出力を外部時間領域と同期させるための1組のドックジェネレータ
−実時間の実行を制御する1組のタイマ
各プロセッサ上で小さな1組のスレッドを使用して、通信または入出力が、プロセッサによって処理される他の保留タスクと一緒に進行することを可能にし、また幾つかのスレッドを継続させながら同時に他のスレッドをサスペンドしてリモートインタフェースプロセッサとの間の通信を保留することによって相互接続における待ち時間を隠すことができる。
図3は、本発明の一実施形態によるインタフェースプロセッサ14の例示的アーキテクチャを概略的に示す。プロセッサ14は、スレッドスケジューラ18の制御下で命令のスレッドを実行する実行ユニット16を含む。プロセッサ14は、更に、バス13、プログラムコードと他のデータを保持するためのランダムアクセスメモリ(RAM)24、およびブートコードなどの永久情報を記憶するための読み出し専用メモリ(ROM)(図示せず)を含む。
スレッドスケジューラ18は、実行ユニット16が実行しなければならないスレッドを動的に選択する。従来、スレッドスケジューラの機能は、単に、プロセッサが完全に占有されたままになるようにプログラムメモリからのスレッドをスケジューリングすることである。しかしながら、本発明によれば、スレッドスケジューラ18によるスケジューリングは、ポート22におけるアクティビティとも関連付けられる。この点に関して、スレッドスケジューラは、ポートにおける入力または出力アクティビティの結果としてスレッドが実行可能になるときの遅延を最小限に抑えるために、ポート22に直接結合されてもよいことに注意されたい。
スレッドスケジューラ18が検討中のm個のスレッドはそれぞれ、スレッドスケジューラ18がアクセスするレジスタ20のバンク内のそれぞれの組のスレッドレジスタ201...20mによって表わされる。また、メモリ24からフェッチされた命令を実行ユニット16に発行する前に、その命令を一時的に保持するための命令バッファ(INSTR)19も提供される。これらのレジスタの詳細は後述する。
スレッドスケジューラ18は、m個のスレッドのうち、「実行(run)」と呼ばれる1組n個の実行可能スレッドを維持し、その実行可能スレッドから、好ましくはラウンドロビン方式で次々に命令を取得する。スレッドが継続できないとき、そのスレッドは、実行セットから除外されることによりサスペンドされる。この理由は、例えば、スレッドが以下のタイプのアクティビティのうちの1つ又は複数を待っているからである。
−レジスタが、実行できる前に初期化されている。
−レジスタが、準備ができていないポート又はデータが利用可能でないポートから入力を試みた。
−レジスタが、準備ができていないポート又はデータの余地のないポートへの出力を試みた。
−ポートが入力の準備ができたときに生成される可能性のある1つまたは複数のイベントを待機させる命令を実行した。
本明細書で使用される用語「イベント」が、基本的な入出力操作と少し異なる特定のタイプの操作を指すことに注意されたい。その違いは、図4と図5に関連して後述する。
また、プロセッサは、第1のタイミング信号を第1のクロック信号ck1の形で出力する第1のクロックジェネレータ171と、第2のタイミング信号を第2のクロック信号ck2、ck2’およびck2”の形でそれぞれの出力する複数の第2のクロックジェネレータ172と、第3のタイミング信号を第3のクロック信号ck3の形で出力する第3のクロックジェネレータ173とを含む。用語の都合上、ポート22および第2のクロックck2、ck2’およびck2”を、概略的にプロセッサのインタフェース部分と見なす場合があり、また、実行ユニット16、スレッドスケジューラ18、第1のクロック171、第3のクロック173、およびバス13やメモリ24などの他の構成要素を、概略的にプロセッサの内部環境と見なす場合がある。プロセッサが対話する任意の外部装置、エンティティ、または刺激は、外部環境の一部と見なされることがある。
第1および第3のクロックジェネレータ171〜173は、好ましくはクロックソースである。第2のクロックジェネレータ172はそれぞれ、1ビットポートを介して受け取った第1のドック信号ck1、第3のクロック信号ck3、および外部クロック信号のうちのいずれかから、それぞれのクロック信号ck2、ck2’およびck2”を取得するように構成される。また、第2のクロックジェネレータ172はそれぞれ、受け取ったクロック信号を必要に応じて特定の除数で割るための8ビット分周器を有する。各クロックジェネレータ172は、受け取ったクロック信号を選択するために、そのジェネレータによって使用されるそれぞれのクロックソースの識別子を記憶するソースレジスタSIDを含む。スイッチボックス56が、第1のクロック信号ck1または外部クロック信号のいずれかをそれぞれの第2のクロックジェネレータ172に接続するように構成される。従って、第2のクロックジェネレータ172は、異なるクロックソースおよび/または分周要素(division factor)を有することができる。
実行ユニット16とスレッドスケジューラ18は、第1のクロック信号ck1によってクロックされる。即ち、スレッドは、第1のクロック信号ck1と合わせて実行セットから次々にスケジューリングされ、それらのスレッドの命令は、メモリ24からフェッチされ、実行ユニット16に発行され、第1のクロック信号ck1に合わせて実行される。これらの命令のいくつかは、入力命令と出力命令を含み、その結果、内部とポートの間のデータの転送は、第1のクロック信号ck1に合わせて実行される。すなわち、これらのタスクは、第1のクロック信号ck1のエッジでトリガされる。
クロックモードの場合、各ポート22は、特定の第2のクロック信号によってクロックされる。スイッチボックス52によって第2の信号ck2、ck2’およびck2”のどれをポート22のどれに出力するように選択してもよい。選択を容易にするために、各ポート22は、対応するレジスタCKID54と関連付けられ、レジスタCKID54は、第2のクロックジェネレータ172のうちの1つの識別子を記憶する。スイッチボックス52は、第2のクロック信号を、識別されたクロックジェネレータから対応するポートに供給するように構成される。以下の考察では、ポート22をクロックするために第2のクロック信号ck2が選択されると仮定する。即ち、データは、ポート22と外部環境の間で第2のクロック信号ck2と合わせて転送され、またデータの入力可用性とポートの出力可用性が、第2のクロック信号ck2と合わせて信号伝達される。すなわち、これらのタスクは、第2のクロック信号ck2のエッジでトリガされる。ポート22の動作は、図4と関連してより詳細に後述する。
クロック領域間でデータを転送するとき、準安定性を回避するために何らかの同期が必要とされ、この準安定性は、データ信号が変化状態のときにデータが何らかの事情で読み出された場合に生じる問題であることに注意されたい。準安定性を回避するための同期技術は、当該技術分野で周知であり、本明細書ではこれ以上言及しない。
プロセッサ14は、クロックジェネレータ172に加えて、第1のクロック信号ck1によってクロックされるカウンタ57を含む。カウンタから出力される値は、単純にオン・オフに変化するクロック信号と異なり、第1のクロック信号ck1の複数サイクルにわたって累積的に増分する。従って、このカウンタ57から出力された値は、カウンタが最後にリセットされてから経過した時間の長さである現在システム時間(tm)を表わす。
これと関連して、システム時間カウンタ57にはいくつかのタイマ58が提供される。タイマ58自体は、時間値をカウントせずに、その代わりに各タイマ58は、カウンタ57から実行ユニット16(図示しない接続により)に時間値tmを転送する働きをする。タイマが無条件モードの場合、実行ユニットは、単純にタイマ58によって現在時間値tmを読み出すことができる。タイマ58が条件付きモードの場合、実行ユニットは、タイマと関連付けられたレジスタTIME59に記憶されたトリガ時間値より時間値が後になった後でのみタイマ58から時間値tmを読み出す。対応するスレッドは、トリガ時間値が現在時間値と一致するまで休止されてもよい。図6と関連して後述するように、タイマを使用してイベントを生成する場合もある。
さらに、時間カウンタ57を使用して、ポート22を介したデータの入出力のタイミングを制御することができる。時限モードの場合、ポート22は、第2のクロック信号ck2のエッジによってではなく指定した時間の検出によってトリガされる。これにより、外部装置と対話するときに応答時間の正確な制御が可能になり有利である。トリガ時間値を記憶するために、独立したそれぞれのTIMEレジスタ55が各ポート22と関連付けられる。各ポート22は、カウンタ57から現在システム時間値tmを受け取り、ポートが時限モードのときに、現在時間値tmが、それぞれのTIMEレジスタ55に記憶されたトリガ時間値と一致するときだけデータがポートと外部環境間で転送されるように構成された比較ロジックを含む。すなわち、一致が検出されたとき、入力データが、外部環境からポート内にサンプリングされるか、出力データが、ポートから外部環境に提示される。また、このポートと外部環境間の転送は、一致が検出されたときだけ信号伝達される。これは、転送の代わりであり、信号伝達は、第2のクロック信号ck2のエッジによってトリガされる。
さらに、時間カウンタ57との接続により、各ポートは、入って来たデータに入力時間をタイムスタンプし、そのタイムスタンプをスレッドに利用可能にすることができる。
反応時間を迅速にするために、スレッドスケジューラ18と実行ユニット16の間に、実行ユニット16がどのスレッドをフェッチし実行すべきかをスレッドスケジューラ18が制御できるようにする直接ハードワイヤード接続28が提供されると好都合である。また、スレッドスケジューラ18と各ポート22の間に直接ハードワイヤードパス30a、30b、30cが提供され、スレッドスケジューラ18と各レジスタ20の間に直接ハードワイヤードパス291...29mが提供される。これらの直接パスは、スレッドスケジューラが、それぞれのスレッドをポート22の1つまたは複数と関連付け、特に、特定のアクティビティが生じたときにポートからレディ指示を戻し、プロセッサが、ポート22において生じたアクティビティまたは刺激に対して迅速に応答することを可能にする制御パスを提供することが好ましい。ポートに対するスレッドスケジューラの動作は、図4と図6と関連して後述する。
実行ユニット16は、また、直接接続27および31を介して各ポート22a〜22cと各レジスタ201〜20mにアクセスし、これにより、コアプロセッサとレジスタと外部環境との間に直接リンクが提供される。これらの直接パスは、更に、実行ユニットが状態をポートに渡すことを可能にする制御パスを提供することが好ましい。これは、図4に関して後で更に詳しく検討される。また、直接パス27および31は、スレッドレジスタ20とポート22の間で直接データを入出力することを可能にし、それによりスレッドが外部環境と直接通信することを可能にする。例えば、データは、メモリ24に書き込まれてからフェッチされるのではなく、外部装置からスレッドのオペランドレジスタのうちの1つに直接書き込まれてもよい。これと反対に、操作後に、オペランドレジスタからのデータが、実行ユニット16によってピックアップされ、ポート22から直接送出されてもよい。これにより、応答時間が大幅に改善される。
「直接接続」または「直接パス」は、実行ユニットとプログラムメモリ24の間の接続とは別の接続を意味することに注意されたい。したがって、例えば、スレッドスケジューラ18と実行ユニット16は、ポート22から入力されたデータを記憶し後でメモリ24からフェッチすることなく、そのデータにアクセスする。詳細には、実行ユニット16とメモリ24間の接続がバス13を介している場合、「直接」接続またはパスは、バスと別のものを意味する。したがって、ポート22とレジスタ20とスレッドスケジューラ18と実行ユニット16との間の様々な通信はすべて、バスアービトレーションを必要とせずに行うことができ、反応時間が改善される。また、ポート22は、バス13との更に他の接続(図示せず)を備えてもよい。
この用途で使用される用語「ポート」は、「ピンポート」または「データポート」のどちらを指すこともある。ピンポートは、単一ピンに対する直接インタフェースである。これは、プロセッサチップの物理的境界にあるピンに生じる信号の個別の論理的遷移(すなわち、立ち上がりと立ち下がり)を検出する役割をするロジックである。データポートは、一般に入出力バッファに蓄積されかつ一般にワードなどのデータの一部分を構成する1つまたは複数のビットを処理することができるという点で「より高レベル」である。立ち上がりと立ち下がりを検出する代わりに、データポートは、特定の瞬間におけるビットの状態または論理レベルを処理する。データポートは、オンチップでもオフチップでもよく、あるいは同一チップ上に埋め込まれた別のプロセッサへのポートでもよい。
図4は、本発明の好ましい実施形態によるポートに22を概略的に示す。ポート22は、プロセッサ14との間で入出力データをやりとりするための入出力バッファ32を含む。さらに、各ポート22は、ポートで生じるアクティビティを監視し、特定のアクティビティの発生を、少なくとも1つのレディビットまたはフラグ37によって信号伝達するためのアクティビティ処理ロジック36を含む。レディフラグ37は、直接パス30によってスレッドスケジューラに信号伝達されることが好ましく、また、直接接続31によって実行ユニットにより制御されてもよい。図4に示したように、直接接続31が、いくつかの接続を含むことが好ましいことに注意されたい。ポートが検出する可能性のある潜在的アクティビティは、次のものがある。
−データがポートに入力されたこと
−特定のデータがポートに入力されたこと
−ポートが出力に利用可能になったこと、および/または
−特定の時間に達したこと
そのようなアクティビティの検出を容易にするために、ポート22は、1組のレジスタ38を備える。これらのレジスタは、関連スレッドの識別を記憶するためのスレッド識別子(TID)レジスタ、1つまたは複数の状態を記憶するための制御(CTRL)レジスタ、実行がサスペンドされたプログラム内の位置を記憶するための継続点ベクトル(VECTOR)レジスタ、および状態と関連付けられた任意のデータを記憶するためのデータ(DATA)レジスタを含む。値TIDは、直接パス30(図3では30a、30b、30cになる)によってスレッドスケジューラ18によりレジスタ38に書き込まれ、値VECTOR、CTRLおよびDATAは、直接パス31によって実行ユニット16により書き込まれる。TIDは、関連スレッドを識別するために、所望のアクティビティを検出したときにスレッドスケジューラ18に戻される。レジスタ38は、また、ポートのクロックジェネレータ172を識別するクロックジェネレータ識別子レジスタCKID54、指定された時間値を記憶するトリガ時間レジスタTIME55、およびタイムスタンプレジスタTSTAMPを含む。アクティビティロジックは、また、さらに詳しく後述するイネーブルフラグ39を含む。
レジスタ38は、図4では、ポート22内に含まれるように示されているが、レジスタ38は、実際には、プロセッサ14内のどこか他の場所にあってもよく、単純にポート22と関連付けられてもよいことに注意されたい。
入出力バッファの内容は、外部環境から見える。すなわち、ポートがオフチップポートの場合は、入出力バッファ32内のデータがピンに現われ、ポートが別のプロセッサへのオンチップポートの場合は、入出力バッファ内のデータは、プロセッサ間の相互接続204上に現われる。また、入出力バッファ内のデータは、バス13用のバスドライバの入力に現われ、更に、31などの直接接続を介して実行ユニット16によってアクセス可能である。
実行ユニット16、スレッドスケジューラ18、およびバス13は、第1のクロック信号ck1によってクロックされる。ポート22がクロックモードの場合は、入出力バッファ32とアクティビティロジック36が、以下のように特定の第2のクロック信号ck2によってクロックされる。
入力を実行するとき、データは、第2のクロック信号ck2のエッジで外部環境から(例えば、ピンから)の入出力バッファに取り込まれる。また、アクティビティロジック36は、第2のクロック信号のエッジでレディビット37をアサートする。レディビット37は、直接接続30を介して、第1のクロック信号ck1のエッジでスレッドスケジューラによって検出される。スレッドスケジューラは、アサートされたレディビットを検出することによって、関連スレッドが実行セット内にあることを保証する。次に、入力データは、データを1つまたは複数の実行ユニットのレジスタ(スレッドレジスタ20を含む可能性もある)に入れるかバス13に入れることによってそのスレッドの入力命令の実行を完了することにより、第1のクロック信号ck1に合わせて実行ユニットによって処理される。入力が完了した後で、実行ユニット16は、直接パス31によって第1のクロックck1信号のエッジでレディビット37をデアサートする。
また、CTRLおよびDATAレジスタ38に条件が設定された場合は、条件が満たされることをアクティビティロジック36が見出したときだけ、第1のクロックck1のエッジで取り込まれたデータは、設定された条件とレディビット37と比較されることに注意されたい。
出力を実行するために、入出力バッファ32が、入力に現在関与しておらずかつ前の出力にも関与していないことを示すために、レディビット37はデアサートされなければならない。レディビット37がデアサートされたと仮定すると、このことは、直接パス30を介して、第1のクロック信号ck1のエッジでスレッドスケジューラによって検出される。スレッドスケジューラは、デアサートされたレディビットを検出することによって、関連スレッドが実行セット内にあることを保証する。次に、実行ユニット16は、1つ又は複数の実行ユニットのレジスタ(スレッドレジスタ20を含む可能性がある)からのデータを提示するか、そのそのデータをバス13から入手可能にすることによって、そのスレッドの出力命令の実行を第1のクロック信号ck1に合わせて完了することによって、入出力バッファ32が出力データを利用可能にする。出力命令を実行する際に、実行ユニット16は、また、直接パス31によってレディビット37をアサートし、これは、入出力バッファ32が、現在出力で占有されており他の後の出力に利用可能できなくなっていることを示す。次に、出力データは、第2のクロック信号ck2のエッジに合わせて入出力バッファ32内にクロック入力され、外部環境に見えるようになる。また、アクティビティロジック36は、第2のクロック信号ck2のエッジで再びレディビット37をデアサートして、出力が外部環境に提示されたことを示す。
一方、ポート22が時限モードの場合は、入出力バッファ32とアクティビティロジック36が、以下のように指定された時間でトリガされる。
入力を実行するときは、システムタイマカウンタ57から受け取った現在システム時間値tmが、TIMEレジスタ55に記憶されたトリガ時間値と一致することをアクティビティ36が検出したときに、データが、外部環境から(例えば、ピンから)入出力バッファに取り込まれる。また、アクティビティロジック36は、この一致を検出するとレディビット37をアサートする。レディビット37は、直接接続30によって、第1のクロック信号ck1のエッジでスレッドスケジューラによって検出される。スレッドスケジューラは、アサートされたレディビットを検出することにより、関連スレッドが実行セット内にあることを保証する。次に、入力データは、データを1つまたは複数の実行ユニットのレジスタ(潜在的にスレッドレジスタ20を含む)に入れるかバス13に入れることにより、そのスレッドの入力命令の実行を完了することによって、実行ユニットによって第1のクロック信号ck1に合わせて処理される。入力が完了した後で、実行ユニット16は、直接パス31によって第1のクロックck1信号のエッジでレディビット37をデアサートする。
前述のように出力を実行するために、入出力バッファ32が、現在入力に関与しておらずかつ前の出力にも関与していないことを示すためにレディビット37はデアサートされなければならない。レディビット37がデアサートされたと仮定すると、これは、直接パス30を介して、スレッドスケジューラによって第1のクロック信号ck1のエッジで検出される。デアサートされたレディビットを検出することによって、スレッドスケジューラは、関連スレッドが実行セット内にあることを保証する。この場合も、実行ユニット16は、次に、1つまたは複数の実行ユニットのレジスタ(スレッドレジスタ20を含む可能性がある)からデータを提示するかそのデータをバス13から入手可能にすることによって、そのスレッドの出力命令の実行を第1のクロック信号ck1に合わせて完了することにより、出力データを入出力バッファ32に利用可能にする。出力命令を実行する際に、実行ユニット16は、また、直接パス31を介してレディビット37をアサートし、これは、入出力バッファ32が現在出力に関与しておりかつ他の後の出力にも利用可能でないことを示す。アクティビティロジック36は、システム時間カウンタ57から受け取った現在システム時間tmが、TIMEレジスタ55に記憶されたトリガ時間と一致することを検出したとき、入出力バッファ32をトリガして内部環境から出力データを取得し、これによりデータは外部環境から見えるようになる。アクティビティロジック36は、また、この一致を検出するとレディビット37をデアサートして、出力が外部環境に提示されたことを示す。
ポートが時限モードにあるときは、CTRLおよびDATAレジスタ内のどの状態も無視される。
ポート22は、さらに、タイムスタンプモードを有し、それにより、アクティビティロジック36は、外部環境から入出力バッファ32にデータが入力され取り込まれたときにシステム時間値tmを記録する。このタイムスタンプは、ポートと関連付けられたタイムスタンプレジスタTSTAMPに記憶される。実行ユニット16は、TSTAMPレジスタからタイムスタンプを読み出し、そのタイムスタンプを、入力を処理しているスレッドのオペランドレジスタOP(以下を参照)のうちの1つに記憶する働きをする。ポートがタイムスタンプモードの場合は、TSTAMPレジスタが読み出されるまでレディビット37はクリアされない。
したがって、このタイムスタンプ機能は、それぞれのスレッド用の1組のレジスタと連動して、ポートにおいて入力にタイムスタンプし、次にそのタイムスタンプをその入力に関与するスレッドのレジスタに転送することを可能にすると好都合である。
本発明の特に好都合な実施形態では、タイムスタンプされた入力は、特定のスレッドによって処理される出力と入力の間の相対的なタイミングを正確に制御するために、時間が決められた出力と共に使用されてもよい。すなわち、本発明は、入力後の特定サイクル数だけスレッドが出力を実行することを可能にしてもよい。この場合、スレッドは、ポート22のTSTAMPレジスタからタイムスタンプを読み出し、次に(同一ポートか別のポートの)TIMEレジスタ55内のトリガ時間値を、タイムスタンプとその特定サイクル数を加えた値に設定する。
図5は、スレッドを表現するために使用されるスレッドレジスタ20の例示的なバンクを示す。バンク20は、スレッドスケジューラ16が現在検討中のそれぞれのスレッドT1〜Tmに対応する複数組のレジスタを含む。この好ましい例では、各スレッドの状態は、2個の制御レジスタ、4個のアクセスおよび12個のオペランドレジスタの合計18個のレジスタによって表わされる。これらのレジスタは以下の通りである。
制御レジスタ:
−PCはプログラムカウンタである。
−SRは状態レジスタである
アクセスレジスタ:
−GPはグローバルプールポインタである。
−DPはデータポインタである。
−SPはスタックポインタである。
−LRはリンクレジスタである。
オペランドレジスタ:OP1...OP12
制御レジスタは、スレッドの実行を制御する際に使用される、スレッドの状態に関する情報を記憶する。特に、スレッドがイベントまたは割り込みを受け入れる能力は、スレッド状態レジスタSRに保持された情報によって制御される。アクセスレジスタは、プロシージャのローカル変数に使用されたスタックポインタ、プロシージャ間で共用されるデータに通常使用されるデータポインタ、および大きな定数とプロシージャエントリポイントにアクセスするために使用される特定のプールポインタを含む。オペランドレジスタOP1...OP12は、算術および論理演算を実行し、データ構造にアクセスし、サブルーチンを呼び出す命令によって使用される。また、タイムスタンプされた入力を使用するとき、スレッドは、スレッドのオペランドレジスタOPのうちの1つにタイムスタンプを読み込む。
また、スレッドの実際の命令を一時的に記憶するために、いくつかの命令バッファ(INSTR)19が提供される。各命令バッファは、好ましくは各命令が16ビット長で1バッファ当たり4つの命令を可能にする64ビット長であることが好ましい。命令は、スレッドスケジューラ18の制御下でプログラムメモリ24からフェッチされ、一時的に命令バッファ19に入れられる。
実行ユニットは、レジスタ20とバッファ19のそれぞれにアクセスする。さらに、スレッドスケジューラ18は、各スレッドごとに少なくとも状態レジスタSRにアクセスする。
前述のように、用語「イベント」は、本明細書で使用されるとき、特定のタイプの操作、またはその特定タイプの操作に対応するアクティビティを指す。イベントベースの操作は、基本的な入出力操作と少し異なり、以下のように働く。最初に、実行ユニット16からの継続点ベクトルと、スレッドスケジューラ18からのスレッド識別子を、好ましくは直接パス31および30を介してポート22と関連付けられたVECTORおよびTIDレジスタ38に転送するによって、スレッド用のイベントが設定される。また、関連した条件および条件データが、ポート22のCTRLおよびDATAレジスタ38に書き込まれてもよい。このように、イベントは、ポートで設定されるが、必ずしもイネーブルされるとは限らない。ポートがイベントの指示を生成できるようにするために、好ましくは直接パス30を介したスレッドスケジューラ18によって、ポートのイネーブルフラグ39がアサートされなければならない。さらに、スレッド自体がイベントを受け入れることができるようにするために、それぞれの状態レジスタSR内のスレッドのイベントイネーブル(EE)フラグが、イベントイネーブルに設定されなければならない。このようにイベントが設定されイネーブルされた後で、スレッドはサスペンドされて、スレッドスケジューラ18に作用するイベントベースの待機命令を使用してイベントを待つことができる。この時点で、関連命令バッファ19から現在の保留命令が廃棄されてもよい。イベントが生じたとき、例えば何らかのデータがポートに入力されたとき、その発生は、スレッド識別子と継続点ベクトルをポート22からスレッドスケジューラ18と実行ユニット16に戻すことによって信号伝達され、継続点ベクトルにおける命令を、プログラムメモリ24から命令バッファ19にフェッチすることが可能になり、実行がコード内の適切な点で再開される。イベントが生じたとき、発生後すぐにスレッドがイベントに反応するのを防ぐために、それぞれの状態レジスタSR内のスレッドのEEフラグがイベントディスエーブルに設定されてもよい。イネーブルフラグ39は、イベントが生じたときにスレッドが命令を実行する結果としてデアサートされてもよい。
1つ又は複数のポートからのイベントを待つためにいくつかのポートをセットアップしている間にイネーブルフラグ39をアサートすることができる。また、スレッドのEEフラグは、1組のポートイネーブルフラグをイネーブルする前にイベントイネーブルに設定されてもよく、この場合、イネーブルされ準備ができている第1のポートは、現在の命令を廃棄し、継続点ベクトルにおける命令をすぐにフェッチし実行することによって実行を進行させるイベントを生成する。
ポートのイネーブルフラグ39と状態レジスタEEフラグの利点は、イベントのイネーブル化とディスエーブル化が、待機命令によってイベントのセットアップとスレッドの停止の両方から分離され、特定のスレッドおよび/または様々な異なるスレッドの異なる入出力状態を容易に切り換えることができることである。例えば、イベントがディスエーブルされた場合でも、ポート22においてイベントがセットアップされたままでもよい。したがって、イベントが既に1回生じたことがあるが、スレッド識別子、継続点ベクトルおよび条件が、ポート22のTID、VECTOR、CTRLおよびDATAレジスタ38に記憶されたままなので、イベントは、スレッドによって再使用されることがある。従って、スレッドが、イベントを再使用しなければならない場合、ポートのレジスタ38を再書き込みする必要はないが、代わりに、ポートのイネーブルフラグ39を単純にリアサートしかつ/またはスレッドの状態レジスタSR内のEEフラグをイベントイネーブルに再設定することができる。次に、さらに別の待機命令が、スレッドをサスペンドして同じイベントの再発生を保留にする。
さらに、継続点ベクトルを使用することにより、1スレッド当たり複数のイベントをイネーブルすることができる。すなわち、所定のスレッドは、継続点ベクトルをポート22aに送ることによって1つのポート22aに1つのイベントをセットアップすることができ、異なる継続点ベクトルを他のポート22に転送することによって別のポート22bに別のイベントをセットアップすることができる。スレッドは、また、それぞれのポートごとに異なるイネーブルフラグ39を別々にアサートまたはデアサートすることによって、異なるイベントを個別にイネーブルしディスエーブルすることができる。次に、待機命令により、スレッドがサスペンドされて、イネーブルされた任意のイベントが待機させられる。
スレッドスケジューラ18は、基本的入出力操作を使用するイベントと対照的に、継続点ベクトルをVECTORレジスタに送らず、状態レジスタSR内のポートのイネーブルフラグ39またはEEフラグを使用しない。その代わりに、保留命令が単純に命令バッファ19内に残されたままであり、必要に応じて、実行が単純に休止されて、レディフラグ37によって示されたように、ポートの入力または出力可用性が保留される。実施形態では、基本的入出力に従ったスケジューリングのためにTIDレジスタだけを必要とする場合がある。基本的入出力は、CTRLレジスタとDATAレジスタ内の状態を使用する場合も使用しない場合もあり、そのような状態が使用されない場合、入出力は、単純に、ポートが準備ができしだいすぐに完了する。
また、イベントに続いてスレッドの実行が再開された後で、当然ながらスレッドが次に基本的入出力操作を実行する場合があることに注意されたい。これと反対に、基本的入出力に続いてスレッドが再開された後、次にそのスレッドがイベント操作を含む場合がある。スレッドには、そのようなイベントと入出力の任意のチェーンが含まれてもよい。例えば、イベントがディスエーブルされており(すなわち、ポートのイネーブルフラグ39および/または状態レジスタのEEフラグがデアサートされている)、かつイベントベクトルと状態がレジスタ38内に設定されたままである間に、2つのイベントベース待機操作の間に基本的入出力操作が挟まれてもよい。すなわち、イベントは、第1のイベントベース待機操作が完了した後でディスエーブルされ、次に同じポートを使用して基本的入出力が実行され、次に第2のイベントベース待機操作で使用するために同じイベントが再びイネーブル(re-enable)される。前述のように、基本的入出力操作は、スレッドを休止し休止解除(un-pause)するが、状態レジスタ内のポートのイネーブルフラグ39にもEEフラグにも作用せず、制御をイベントベクトルに移しもしない。
また、タイマ58を使用してイベントを生成することができる。図6に、例示的なタイマ58を示す。前述のように、タイマ58自体は、タイマ値tmを生成しないが、その代りにシステム時間カウンタ57からタイマ値tmを受け取る。タイマ58は、現在システム時間値tmがTIMEレジスタ59に記憶されたトリガ時間値と一致したときに指示を生成する目覚まし時計と考えることができる。
各タイマ58は、ポート22と同様に、レディフラグ37’とタイマイベントイネーブルフラグ39’を有するアクティビティロジック36’を含む。各タイマ58は、また、ポート22と同じようにCTRLレジスタ、TIDレジスタおよびVECTORレジスタを含むレジスタ38を含む。レジスタ38は、また、条件データがトリガ時間であるという点でポート22のDATAレジスタに対応するTIMEレジスタ59を含む。
スレッド用のタイマイベントをセットアップするために、タイマ用のタイマイベントイネーブルフラグ39’をセットする。実行ユニットは、また、タイマ出力がトリガ時間を条件とすることを指定するように制御レジスタCTRLを構成し、トリガ時間をTIMEレジスタ59に記憶し、そのスレッドの継続点ベクトルをVECTORレジスタに記憶する。スレッドスケジューラ18は、スレッドの識別子をTIDレジスタに記憶する。最後に、実行ユニット16は、待機命令を実行する結果として、スレッドの状態レジスタSR内のスレッドイベントイネーブルフラグEEをセットする。アクティビティロジック36’は、時間カウンタ57から受け取った現在システム時間tmが、TIMEレジスタ59に記憶されたトリガ時間と一致することを検出したとき、レディフラグ37’をアサートし、TIDレジスタからのスレッド識別子をスレッドスケジューラ18に戻し、継続点ベクトルをVECTORレジスタから実行ユニット16に戻す。次に、実行ユニットは、スレッドスケジューラ18の指示に従って、スレッドの継続点ベクトルによって指定されたコード内のポイントにおけるスレッドの実行を継続する。
したがって、ポート22と同じようにタイマ58を使用してどのようにイベントを生成できるかが分かる。そのようなタイマイベントを使用して、例えば、指定された時間期間(例えば、1ミリ秒)ごとに1回スレッドをウェイクアップすることができる。
タイマ59のタイマイベントイネーブルフラグ39’がセットされない場合は、図3に関して前述したように、単純にTIMEレジスタ59を使用して、実行ユニットがタイマ58からシステム時間tmを読み出すことができるようになる時間を決定することができる。これにより、タイマを読み出そうとするスレッドは、現在時間がその時間になっていない場合に休止する。
次に、図7の流れ図に関して、時限ポート22を使用するデータの例示的な転送を説明する。ステップ100で、実行ユニット16は、スレッドスケジューラ18の指示下でスレッドの実行を始める。ステップ102で、実行ユニット16は、トリガ時間値をポート22のTIMEレジスタ55に送る。ステップ104で、実行ユニットは、ポート22を時限モードに設定する。ステップ106で、実行ユニットは、スレッド内の入力命令または出力命令に遭遇し、出力命令の場合には、実行ユニットは、入出力バッファ32が出力データを利用できるようにすることによって出力命令を部分的に完了する。トリガ時間にまだ達していないと仮定すると、ポート22のレディビット37はまだセットされない。スレッドスケジューラ18は、これを検出し、実行セットから除外することによってスレッドを休止する。次に、ポート22は、スレッドスケジューラ18ではなく、そのスレッドに関与する。ステップ108で、ポート22のアクティビティロジック36は、システムタイマカウンタ57から現在システム時間値tmを受け取る。ステップ110で、アクティビティロジック36は、現在システム時間値tmが、TIMEレジスタ55に記憶されたトリガ時間値と一致するかどうかを判定する。一致しない場合、方法は、ステップ108に戻り、ポートは、カウンタ57を読み出し続け、同時に現在時間値tmが増分する。
しかしながら、現在時間がトリガ時間と一致する場合、方法はステップ114に分岐し、入力の場合には、データが、外部環境から入出力バッファ32に取り込まれて内部環境が利用できるようになり、出力の場合には、データは、内部環境から入出力バッファ32に取り込まれて外部環境に見えるようになる。ステップ116で、アクティビティロジック36は、レディビット37をアサートして転送を示す。ステップ118で、スレッドスケジューラは、レディビット37を検出し、スレッドを実行セットに戻し、実行ユニット16にスレッドの実行を再開させる。入力の場合、再開された実行は、入出力バッファ32からのデータを内部環境(例えば、スレッドのオペランドレジスタOPのうちの1つ)に入力する入力命令を完了することを含む。
次に図8と関連して、イベントを生成するタイマ58の例示的な使用を説明する。ステップ120で、実行ユニット16は、スレッドスケジューラ18の指示下でスレッドの実行を始める。ステップ122で、実行ユニット16とスレッドスケジューラ18は、継続点ベクトル、条件およびトリガ時間を実行ユニット16からVECTOR、CTRLおよびTIMEレジスタ38’に送り、入力に対する関連スレッドのスレッド識別子をスレッドスケジューラ18からTIDレジスタ38’に送ることこによって、タイマ58用のイベントをセットアップする。ステップ122は、また、スレッドの状態レジスタSR内のスレッドイベントイネーブルフラグをセットし、タイマイベントイネーブルフラグ39’をセットすることを含む(まだセットされていない場合)。ステップ124で、実行ユニット16は、実行セットからスレッドを除外することによってスレッドスケジューラにそのスレッドの実行をサスペンドさせる待機命令を実行する。タイマ58は、次に、スレッドスケジューラ18ではなくスレッドに関与する。ステップ126で、タイマ58のアクティビティロジック36は、システムタイマカウンタ57から現在システム時間値tmを受け取る。ステップ128で、アクティビティロジック36’は、現在システム時間値tmが、TIMEレジスタ59に記憶されたトリガ時間値と一致するかどうかを判定する。一致しない場合、方法はステップ126に戻り、タイマ58は、カウンタ57を読み出し続け、同時に現在時間値tmが増分する。
しかしながら、現在時間がトリガ時間と一致する場合、方法はステップ132に分岐し、そこで、アクティビティロジック36’は、レディビット37’をアサートして転送を示す。ステップ134で、アクティビティロジック36’は、継続ベクトルをVECTORレジスタから実行ユニット16に戻し、スレッド識別子をTIDレジスタからスレッドスケジューラに戻す。ステップ136および134が、実質的に同時に実行されてもよいことに注意されたい。ステップ136で、スレッドスケジューラ18は、スレッドを実行セットに戻し、実行ユニットにスレッドの実行を継続させる。
インタフェースプロセッサは、そのスレッドベースの構造により、いくつかのプログラムミング手法に対応することができる。このインタフェースプロセッサは、標準的な入出力を実行する従来の単一プロセッサとして扱われてもよく、あるいは数百の通信構成要素の平行配列の一部としてプログラムされてもよい。これらの選択肢を支援する命令セットが提供される。命令セットは、スレッドの初期化、終了、開始および停止を支援し入出力通信を提供する特別な命令を含む。入出力命令は、外部装置とのきわめて高速な通信を可能にする。そのような入出力命令は、高速で低遅延の入出力と、高レベルの並列プログラミング技術とを支援する。ポートアクティビティの処理に対するこれらの応用は、以下でより詳しく考察し、本発明を実施するために使用することができる例示的な命令について述べる。
ポートは入力モードでも出力モードでも使用することができる。入力モードでは、状態を使用して、スレッドに渡されたデータをフィルタリングすることができる。後述するようにデータが利用可能になったときに、ポートを使用してイベントまたは割り込みを生成することができる。これにより、スレッドがいくつかのポートを監視し、準備ができているポートだけに要求に応じた処理をさせることができる。次に、準備ができた後で、入力命令と出力命令(INとOUT)を使用してポートとの間でデータを転送することができる。この場合、IN命令は、nビットポートからn個の最小桁ビットを入力しゼロ拡張し、OUT命令は、n個の最小桁ビットを出力する。
さらに2つの命令(SNSHRとOUTSHR)が、データ転送を最適化する。INSHR命令は、オペランドレジスタなどのレジスタの内容をnビット右にシフトし、最も左側のnビットをnビットポートからの入力されたデータで満たす。OUTSHR命令は、データのn個の最小桁ビットをnビットポートに出力し、レジスタの内容をnビット右にシフトする。
Figure 0005222937
INSHR命令を使用して、データをポートの幅だけシフトさせることができる。これにより、1つのポートから入力されたデータをシフトさせ、次に別のポートから入力されたデータを同一レジスタ内に連結することができる。
ポートは、構成された後でなければ使用できない。ポートは、ポートのいくつかの個別の設定を定義するために使用されるSETC命令を使用して構成される。これらの設定はそれぞれ、デフォルトモードを有し、異なるモードが必要な場合だけ構成されればよい。
SETC port, mode port[ctri]←mode ポート制御を設定する
以下に、SETCモード設定の効果について述べる。各設定の第1のエントリは、デフォルトモードである。
モード 効果
OFF ポートがアクティブでない。ピンが高インピーダンス
ON アクティブ
IN ポートは入力である
OUT ポートは出力である(但し、入力は現在のピン値を戻す)
RAW データがピンとの間で直接転送される
CLOCKED データ転送がクロックと同期される
TIMED データ転送の時間が決められる
EVENT ポートはイベントを発生させる
INTERRUPT ポートは割り込みを生じさせる
DRIVE ピンがハイとローの両方に駆動される
PULLDOWN ピンが0ビットではプルダウンされ、他の場合は高インピーダンスである
PULLUP ピンが1ビットではプルアップされ、他の場合は高インピーダンスである
RISING 主要(取り込み)エッジはポートのクロックの立ち上がりである
FALLING 主要(取り込み)エッジはポートのクロックの立ち下がりである
DATAPORT ポートは通常通り働く
CLOCKPORT ポートのクロックはその出力に直接結合される
NOSTAMP タイムスタンプは実行されない
STAMPED タイムスタンプがイネーブルされる
UNCOND ポートは常にレディ状態であり、入力が直ちに完了する
EQUAL ポートは値がそのDATA値と等しいときに準備ができている
NE ポートは値がそのDATA値と異なるときに準備ができている
TRANSITION ポートは値がDATA値の方に変化するときに準備ができている
GR ポートは値がそのDATA値より大きいときに準備ができている
LS ポートは値がそのDATA値より小さいときに準備ができている
DRIVE、PULLDOWN、およびPULLUPモードは、ポート方向がOUTのときだけ適切である。TRANSITION状態は、1ビットのポートだけに適切であり、GRおよびLS状態は、複数のビットを有するポートだけに適切である。
各ポートは、ポートを通るデータのフローを制御するために使用されるレディビット37を有し、ポートが入力命令を完了できるか出力命令を完了できるかを定義する。レディビットは、ポート構成によって違うふうにセットされる。レディビットは、SETC、SETDまたはSETV命令のいずれかが実行されたときにクリアされる。
入力モードのポートは、条件付き入力を実行するように構成することができる。条件は、条件を満たすデータだけがプログラムに戻されるように入力データをフィルタリングする。条件が設定されたとき、INおよびINSHR命令は、ポートが準備ができているときだけ完了する。前述のように、準備ができていないポートで入力命令を実行すると、スレッドが休止される。準備ができているとき、ポートは、そのレディビットをセットし、そのレディビットは、スレッドスケジューラに信号伝達される。スレッドは、入力命令を再開し再実行する。ポートが準備ができているこのとき、データが戻され、レディビット37がクリアされる。
ポートレディビットがセットされると、条件を満たしたデータ値が取り込まれ、その結果、ソフトウェアは、ポート上の値が後で変化した場合でも条件を満たす値を取得する。INまたはINSHR命令が実行され、レディビットが設定されたときは、データが戻され、レディビットがクリアされる。レディビットが設定されない場合、スレッドは、レディビットが設定されるまで休止する。条件が設定された場合は、データが条件と比較され、レディビットは、条件が満たされた場合だけ設定される。
レディビットがクリアされた場合にOUTまたはOLJTSHR命令が実行されたときは、データはポートによって取得され、レディビットが設定される。レディビットが設定された場合、スレッドは、ポートによってクリアされるまで休止される。
イベントと割り込みにより、ポートは、事前定義されたイベントハンドラに制御を自動的に移すことができる。スレッドがイベントまたは割り込みを受け入れる能力は、スレッド状態レジスタSR(図4を参照)内に保持された情報によって制御され、TSE命令とTSD命令を使用して明示的に制御されてもよい。この情報は、イベントイネーブルフラグ(EE)と割り込みイネーブルフラグ(IE)を含む。
TSE s SR←SR∨s スレッド状態イネーブル
TSD s SR←SR∧┐s スレッド状態ディスエーブル
これらの命令のオペランドは、次のいずれかでなければならない。
EE イベントをイネーブルまたはディスエーブルする
IE 割り込みをイネーブルまたはディスエーブルする
イベントは、セットアップされたのと同じ範囲で処理される。従って、イベント時にすべてのスレッドの状態が有効であり、スレッドがイベントに対して素早く応答することができる。スレッドは、イベント情報の一部またはすべてを変化させないまま、イベントが生じたポートを使用して入出力操作を実行することができる。これにより、スレッドは、イベントの処理を完了し、すぐに別の類似のイベントを待つことができる。
イベントハンドラのプログラム位置は、SETV命令を使用してイベントをイネーブルする前に設定されなければならない。ポートは、イベントをいつ生成するかを決定する条件を有し、これらの条件は、SETC命令とSETD命令を使用して設定される。
特定のポートまたはチャネルによるイベント生成は、イベントイネーブル無条件(EEU)命令を使用してイネーブルすることができ、またイベントディスエーブル無条件(EDU)命令を使用してディスエーブルすることができる。イベントイネーブル真(EET)命令は、その条件オペランドが真の場合にイベントをイネーブルし、そうでない場合にディスエーブルし、これと反対に、イベントイネーブル偽(EEF)命令は、その条件オペランドが偽の場合にイベントをイネーブルし、そうでない場合にディスエーブルする。これらの命令は、ガード付き入力の実施を最適化するために使用される。以下は、ポート上のイベントを構成するためのいくつかの例示的な命令形式である。
SETV port, v portfvector]←v イベントベクトルを設定する
SETD port, d port[data]←d イベントデータを設定する
SETC port, c port[ctrl]←c イベント制御を設定する
EET port, b port[enable]←b; port[ tid]←threadイベントイネーブル真
EEF port, b port[enable]←┐b; port[ tid]←thread イベントイネーブル偽
EDU port port[enable]←false; port[ tid]←thread イベントイネーブル
EEU port port[enable]←true; port[ tid]←thread イベントイネーブル
1つまたは複数のポート上のイベントをイネーブルした後、スレッドは、WAITEU命令を使用して少なくとも1つのイベントを待つことができる。この結果、対応するイベントベクトルによって指定されたイベントハンドラに制御が移され、EE(イベントイネーブル)フラグをクリアすることによってイベントがディスエーブルされた状態で、イベントがすぐに生じることができる。あるいは、スレッドは、イベントが生じるまでサスペンドされてもよく、その場合、EEフラグは、イベントが生じたときにクリアされ、スレッドは実行を再開する。
WAITET b if b then SR[EE]←true 真の場合にイベント待機
WAITEF b if┐b then SR[EE]←true 偽の場合にイベント待機
WAITEU SR[EE]←true イベント待機
CLRE SR[EE]←false; forall port if port[tid] = thread then port[enable]←false スレッドのすべてのイベントをディスエーブルする
条件が満たされるまで1つまたは複数のイベントを繰り返し待つ一般的なケースを最適化するために、条件付きの形のイベント待機命令が提供される。WAITET命令は、その状態オペランドが真の場合だけ待ち、WAITEFは、その状態オペランドが偽の場合だけ待つ。
スレッドによってイネーブルされたすべてのイベントは、単一のCLRE命令を使用してディスエーブルすることができる。これにより、スレッドによってイベントがイネーブルされたすべてのポートにおけるイベント発生がディスエーブルされる。また、CLRE命令は、スレッドの状態レジスタ内のイベントイネーブル状態をクリアする。
高い優先順位のポートに対するスレッドの応答を最適化するために、TSEEE命令を使用して、あるスレッド上のイベントをまずイネーブルし、その後でポートおよび/またはチャネルをイネーブルし始め、イベント待機命令のうちの1つを使用することができる。このように、プロセッサは、ポートを優先順位に従って走査することができる。これにより、イベントがイネーブルされるとすぐにそのイベントを処理することができる。
イベントとは対照的に、割り込みは、現在の範囲内で処理されず、したがって、現在のPCおよびSR(および、潜在的に他のレジスタのうちのいくつかまたはすべても)は、割り込みハンドラの実行前に保存されなければならない。ポートrによって割り込みが生成されたとき、以下のことが自動的に行われる。SAVEPC←PC;
SAVESR←SR;
SR[EE]←false;
SR[IE]←false;
PC←r[vector];
ハンドラが完了したとき、割り込まれたスレッドの実行は、RFINT命令によって実行することができる。
RFlNT PC←SAVEPC; 割り込みから戻る
SR←SAVESR
各プロセッサは、100MHzで時間を刻むクロック(第3のクロック173)を有することが好ましい。入力操作と出力操作を、この内部で生成されたクロックまたは外部から供給されたクロックと同期させることができる。これを行うために1組のクロックジェネレータ172が提供され、これらのクロックジェネレータ172がそれぞれ、そのクロックソースとして、ドック173、クロックまたは外部1ビットクロックを使用することができる。
各クロックジェネレータは、また、8ビット分周器を有する。8ビット分周器がゼロに設定されたとき、ソース信号が出力に直接通る。分周を実行するためにソースドックの立ち上がりが使用される。従って、1に設定すると、クロックジェネレータからの出力は、入力の各立ち上がりを変化させて入力周波数fを半分にし、iに設定すると、周波数f/2iの出力が生成される。
プロセッサは、クロックジェネレータ、タイマ、ポートなど、スレッド用の1組の利用可能資源を維持する。資源は、GETR命令でスレッドによって使用するために割り当てられる。これを行うために1組のクロックジェネレータ172が提供され、そのクロックジェネレータ172がそれぞれ、クロックソースとして、プロセッサクロック171、別の内部クロック173、または外部1ビットクロックを使用する。
クロックジェネレータ172のソースは、SETCLK命令で設定される。オペランドが1ビットポートを指定した場合、そのポートは、クロック入力として使用される。オペランドがタイマIDを指定した場合、クロック入力は、タイマから入力を受け取るように設定される。序数は、SETD命令を使用して設定される。オペランドの下位8ビットが使用され、残りは無視される。
SETCLK generator, sgenerator[sid]←s クロックジェネレータのソースを設定する
クロックジェネレータを構成した後、そのクロックジェネレータからクロックされる入力ポートをクロックジェネレータに取り付ける必要がある。これは、また、ポートでSETCLK命令を使用して他のオペランドとしてクロックジェネレータIDを指定することによって行われる。
SETCLK port, s port[ckid]←s ポートのクロックジェネレータを設定する
出力ポート22がクロックジェネレータ172から駆動されるとき、ピン上のデータは、対応するクロック信号(例えば、ck2)のエッジと同期して状態を変化させる。いくつかの出力ポートが同一クロック信号によってクロックされる場合は、プロセッサが異なる時間にデータを送出することがある場合でも、それらの出力ポートは、単一出力ポートとして動作するように見える。同様に、入力ポート22がクロックジェネレータ172によって駆動される場合は、データは、対応するクロック信号のエッジと同期してサンプリングされ、いくつかの入力ポートが同一クロック信号によってクロックされる場合は、プロセッサが異なる時間にそれらのポートからデータを取得する場合でも、単一入力ポートとして動作するように見える。あるいは、各ポートは、異なる第2のクロック信号ck2、ck2’およびck2”などによってクロックされてもよい。例えば、各ポートは、異なる外部クロックソースから生成されたクロック信号によってクロックされてもよい。
したがって、クロックしたポートを使用することにより、入出力プログラム実行の内部タイミングが入出力インタフェースの同期動作から切り離される。
ポートは、CLOCKEDモードに設定されたときにクロックされる。クロック入力は、クロックジェネレータから来て、オペランドとしてクロックジェネレータIDと共にSETCLK命令を使用して設定される。
データが取り込まれ出力に提示されるクロックエッジは、EDGE設定によって決定されるRISINGおよびFALLINGモードを設定することにより設定される。モードがRISINGとして設定されたときは、立ち上がりが第一エッジであり、立ち下がりが第二エッジである。モードがFALLINGとして構成されたときは、立ち下がりが第一エッジであり、立ち上がりが第二エッジである。
入力データは、第一エッジでピンから取り込まれる。このエッジでは、レディビットもセットされる。IN命令またはINSHR命令が実行され、レディビットがセットされたとき、データが戻され、レディビットがクリアされる。レディビットがセットされない場合、スレッドは、レディビットがセットされるまで休止される。
条件が設定された場合は、クロックエッジで取り込まれたデータが条件と比較され、条件を満たしたときだけレディビットがセットされる。
出力データは、第二エッジで送られる。このエッジは、レディビットもクリアする。OUTまたはOUTSHR命令が実行されるとき、レディビットがクリアされた場合は、データが登録され、レディビットがセットされ、レディビットがセットされた場合は、スレッドは、レディビットがクリアされるまで休止される。
クロックジェネレータが、外部クロックソースから第2のクロック信号を生成するように設定されている場合は、休止されていた入力および出力を、その外部クロック基準に従って解放することができる。これにより、外部刺激に対する反応時間が早くなる。
ポートがCLOCKPORTモードの場合は、データではなく特定の第2のクロック信号ck2が、対応するポートから出力される。このモードを使用して、プロセッサとプロセッサが接続された外部装置との間のインタフェースを同期させることができる。例えば、この機能を使用して、図2Aに示したような配列の2つのインタフェースプロセッサ14の第2のクロック信号を同期させることができ、その結果、それらのプロセッサ間のインタフェースは、共通の第2のクロック信号によってクロックされるが、各プロセッサ14は、内部的には、そのプロセッサ自体のそれぞれの第1のクロックに従って動作する。DATAPORTモードでは、ポートは、単にデータを入力または出力する。
プロセッサは、また、現在時間を読み出すかまたは指定時間まで待つためにスレッドが使用することができる1組のタイマ58を有する。
タイマは、GETR TIMER命令を使用して割り当てられる。これは、SETC命令を使用して設定することができ、設定できるモードは次の2つだけである。
UNCOND タイマが常にレディ状態−時間がタイマから直ちに読み出される
AFTER 時間がそのTIME値の後のときにタイマがレディ状態。
UNCOND(無条件)モードでは、IN命令が、タイマの現在値を読み出す。AFTERモードでは、IN命令は、システム時間カウンタ57の値がタイマのTIMEレジスタの値の後(その値より遅い時間)になるまで待つ。タイマのTIMEレジスタの値は、SETD命令を使用して設定することができる。
時限ポートは、クロック入力が使用される代わりにシステム時間カウンタ57からの入力が使用されること以外は、クロックトポートと類似している。時間値は、SETPTIME(セットポート時間)命令を使用して設定される。応答時間の正確な制御が可能になるので、時限ポートは、タイムスタンプされたポートと共に使用されることが多い。タイムスタンプは、GETTSTMP命令で読み出される。
SETPTIME port, s port[time]←s ポート時間を設定する
GETTSTMP port, d d←port[tstamp] タイムスタンプを取得する
入力モードでは、データは、外部環境(例えば、ピン)から取り込まれ、記憶された時間値が現在時間と一致したときにレディビットがセットされ、条件が無視される。IN命令またはINSHR命令が実行されかつレディビットがセットされたとき、取得データが戻され、レディビットがクリアされる。レディビットがセットされない場合、スレッドは、レディビットがセットされるまで休止される。入力モードでは、SETPTIME命令は休止することはない。
出力モードでは、記録されたデータが、外部環境(例えば、ピン)から見え、レディビットは、記憶された時間値が現在時間と一致したときにセットされる。OUT命令またはOUTSHR命令が実行されたとき、レディビットがクリアされた場合は、データが記録され、レディビットがセットされる。レディビットがセットされた場合、スレッドは、クリアされるまで休止される。
出力モードで、レディビットがセットされた場合、SETTSTMP命令は、レディビットがクリアされるまで休止される。これにより、ポートの記憶された時間が、保留しているの出力が完了するまで変更されないことが保証される。
ポートがタイムスタンプモードのときは、外部環境からデータが取り込まれた時間が、タイムスタンプレジスタに記録される。タイムスタンプレジスタは、GETTSTMP命令を使用して読み出される。タイムスタンプモードのとき、IN命令とINSHR命令は、レディビットをクリアせず、GETTSTMP命令だけがレディビットをクリアする。
時限ポートとタイムスタンピングの以下の例では、出力ポート(outport)は、入力ポート(inport)が状態を変化させた後に特定のタイマサイクル間隔で状態を変化させる。
IN inport, v
SETC inport, STAMPED
SETC inport, NE
SETD inport, v
SETC outport, TIMED
loop:
IN inport, v
GETTSTMP inport, t
ADD t, t, interval
SETTIME outport, t
OUT outport, v
BBU loop //分岐
以下は、時限ポートとタイムスタンピングの使用を示す別の例である。データが、ルックアップテーブル内の対応する出力値にアクセスするために使用されるinportから取得され、次にその値がoutportを介して出力される。データは、外部ポート(ckport)がハイになったときに取得される。inportポートは、ckportポートからクロックされ、ckportの状態の変化がタイムスタンプされ、したがってinportから取得されたデータは、このタイムスタンプに対応する。最後に、データは、時限ポートoutportを介して、指定されたタイマサイクル数の後に出力される。
GETR ck, CLOCK
SETC ckport, STAMPED
SETC ckport, TRANSITION
SETD ckport, 1
SETCLK ck, ckport
SETC inport, CLOCKED
SETCLK inport, ck
SETC outport, TIMED
loop:
IN ckport, d
GETTSTMP ckport, t
IN inport, d
LDW q, lookup, d //ルックアップテーブルからレジスタにロードする
ADD t, t, interval
SETTIME outport, t
OUT outport, d BBU loop
以上の説明と例から、本発明が、スレッドの実行、管理およびスケジューリングのタイミングをどのように正確に決定し、またそのようなスレッドによって処理される入力操作と出力操作に対する応答時間をどのように正確に制御するかを理解することができる。
以上の実施形態が単なる例として説明されることを理解されよう。クロック信号の代わりに、ck1、ck2、ck2’、ck2”などの1つまたは複数を不規則なタイミング信号またはストローブ信号と置き換えることもできる。また、プロセッサの内部または外部にある様々な現在時間源を使用して、ポートおよび/またはタイマの時間を決定することができる。タイムスタンプを入力だけに関連して説明したが、原理をタイムスタンピングの出力操作にも拡張することができ、他の実施形態では、チップの所望の仕様により様々なレジスタおよび命令セットに拡張することができ、実施形態によっては、スレッド識別子が、ポートに送られずにスレッドスケジューラの責任を維持してもよく、他の場所に記憶されてもよい。あるいは、各スレッドにが、ポートで個々のレディフラグが提供されてもよく、その結果、適正なレディ信号を選択するためにスレッド識別子がポートに渡されるが、アクティビティの検出時にスレッド識別子をスレッドスケジューラに戻さなくてもよくなる。さらに、条件および/または条件データがポートに送られなくてもよい。その代わりに、条件は、あらかじめポートで設定されてもよくかつ/または条件が、スレッドスケジューラまたは他の場所で評価されてもよい。スレッドは、ポートやタイマ以外の他のソースからのアクティビティに基づいてスケジューリングされてもよい。プロセッサの様々な構成要素の間に異なる相互接続が提供されてもよい。また、本発明は、モバイルアプリケーションプロセッサを有する移動端末での使用に限定されない。当業者には他の用途および構成が明らかであろう。本発明の範囲は、説明した実施形態ではなく添付した特許請求の範囲によってのみ限定される。
2 プロセッサ
7a、7b、7c、7d ポート
13 バス
14a、14b、14c インタフェースプロセッサ
16 実行ユニット
18 スレッドスケジューラ
20、20、20 レジスタ
24 メモリ

Claims (62)

  1. インタフェース部分と内部環境とを有するプロセッサであって、前記インタフェース部分は、
    現在時間値を受け取るように構成された少なくとも1つのポートと、
    前記ポートと関連付けられて、トリガ時間値を記憶するように構成された第1のレジスタと、
    前記現在時間値が前記トリガ時間値と一致するかどうかを検出し、前記一致が検出された場合に、前記ポートと外部環境との間でデータを転送し、前記転送を示すためにレディ信号を変化させるように構成された比較ロジックとを含み、
    前記内部環境は、
    前記少なくとも1つのポートと前記内部環境との間でデータを転送するための実行ユニットと、
    前記実行ユニットによって実行するための一連の命令をそれぞれ含む複数のスレッドをスケジューリングするためのスレッドスケジューラであって、前記レディ信号に応じて実行するために前記スレッドの1つまたは複数をスケジューリングするステップを含むプロセッサ。
  2. 前記現在時間値を出力するように構成されたカウンタを含み、前記少なくとも1つのポートは、前記カウンタから前記現在時間値を受け取るように構成された、請求項1に記載のプロセッサ。
  3. 複数のポートと複数の第1のレジスタとを含み、前記第1のレジスタはそれぞれ、それぞれのポートと関連付けられ、それぞれのトリガ時間値を記憶するように構成されており、前記スレッドスケジューラによる前記スケジューリングするステップは、前記レディ信号に応じて実行するための前記スレッドの1つまたは複数をスケジューリングするステップを含む、請求項2に記載のプロセッサ。
  4. 前記転送は、入力操作を含み、それにより、前記外部環境から前記少なくとも1つのポートにデータが取り込まれ、前記変化させるステップは、前記レディ信号を、前記データを前記内部環境に入力できることを示す第1の状態に設定するステップを含む、請求項1に記載のプロセッサ。
  5. 前記転送は、出力操作を含み、それにより、前記少なくとも1つのポートのそれぞれから前記外部環境にデータが提示され、前記変化させるステップは、前記レディ信号を、前記少なくとも1つのポートが前記内部環境との間でデータをさらに転送できることを示す第2の状態に設定するステップを含む、請求項1に記載のプロセッサ。
  6. 前記実行ユニットは、前記レディ信号のそれぞれが前記第1の状態にある場合にポートから前記内部環境にデータを入力する入力命令を実行するように構成され、前記入力命令は、前記1つまたは複数のスレッドのシーケンスの構成命令である、請求項4に記載のプロセッサ。
  7. 前記実行ユニットは、前記レディ信号のそれぞれが前記第2の状態にある場合に前記内部環境からポートにデータを出力する出力命令を実行するように構成され、前記出力命令は、前記1つまたは複数のスレッドのシーケンスの構成命令である、請求項5に記載のプロセッサ。
  8. 前記転送は、出力操作を含み、それにより、前記少なくとも1つのポートのそれぞれから前記外部環境にデータが提示され、前記変化させるステップは、前記レディ信号を、前記少なくとも1つのポートが前記内部環境との間でデータをさらに転送できることを示す第2の状態に設定するステップを含み、
    前記実行ユニットは、前記入力命令が完了したときに前記それぞれのレディ信号を前記第2の状態に設定するように構成された、請求項6に記載のプロセッサ。
  9. 前記実行ユニットは、前記出力命令の完了時に前記それぞれのレディ信号を前記第1の状態に設定するように構成された、請求項7に記載のプロセッサ。
  10. 前記スレッドスケジューラによる前記スケジューリングするステップは、前記それぞれのレディ信号が前記第1の状態に設定されるまで前記入力命令のスレッドの実行を保留するステップを含む、請求項6に記載のプロセッサ。
  11. 前記スレッドスケジューラによる前記スケジューリングするステップは、前記それぞれのレディ信号が前記第2の状態に設定されるまで前記出力命令のスレッドの実行を保留するステップを含む、請求項7に記載のプロセッサ。
  12. 前記実行ユニットは、前記出力命令の完了時に前記それぞれのレディ信号を前記第1の状態に設定するように構成され、
    前記転送は、入力操作と出力操作の両方を含み、前記実行ユニットは、入力命令と出力命令を実行するように構成された、請求項8に記載のプロセッサ。
  13. 前記実行ユニットは、前記トリガ時間値を前記第1のレジスタのうちの1つに記憶するセットトリガ時間命令を実行するように構成された、請求項1に記載のプロセッサ。
  14. 前記外部環境は、前記プロセッサが収容された集積回路の少なくとも1つのピンを含む、請求項1に記載のプロセッサ。
  15. 前記外部環境は、前記プロセッサが収容された集積回路上の別のプロセッサを含む、請求項1に記載のプロセッサ。
  16. ポートと前記内部環境との間のデータの転送は、前記ポートと前記実行ユニットとの間の転送を含む、請求項1に記載のプロセッサ。
  17. 前記内部環境はバスを含み、ポートと前記内部環境との間のデータの転送は、前記ポートと前記バスとの間の転送を含む、請求項1に記載のプロセッサ。
  18. 前記内部環境は、複数組の第2のレジスタを含み、各組の第2のレジスタは、前記複数のスレッドのそれぞれに関する情報を記憶し、ポートと前記内部環境との間の転送は、前記ポートと前記第2のレジスタのうちの1つとの間の転送を含む、請求項1に記載のプロセッサ。
  19. 前記スレッドスケジューラは、1組の実行可能スレッドを維持するように構成され、前記スレッドスケジューラによる前記スケジューリングするステップは、前記1組からスレッドを取り出すことによって前記スレッドを保留するステップを含む、請求項1に記載のプロセッサ。
  20. 前記少なくとも1つのポートは、タイムスタンプモードで動作可能であり、それにより、前記ポートは、タイムスタンプを前記ポートと前記外部環境との間のデータの転送と関連付ける、請求項1に記載のプロセッサ。
  21. 前記インタフェース部分は、前記少なくとも1つのポートと関連付けられた第3のレジスタを含み、タイムスタンプの前記関連付けは、前記タイムスタンプされた転送を実行する際に前記第3のレジスタに前記現在時間値を記憶するステップを含む、請求項20に記載のプロセッサ。
  22. 前記少なくとも1つのポートは、タイムスタンプモードで動作可能であり、それにより、前記ポートは、タイムスタンプを前記ポートと前記外部環境との間のデータの転送と関連付け、
    前記インタフェース部分は、前記少なくとも1つのポートと関連付けられた第3のレジスタを含み、タイムスタンプの前記関連付けは、前記タイムスタンプされた転送を実行する際に前記第3のレジスタに前記現在時間値を記憶するステップを含み、
    前記実行ユニットは、前記タイムスタンプを、前記第3のレジスタから、前記タイムスタンプされた転送と関連付けられたスレッドの前記第2のレジスタのうちの1つに転送するように構成された、請求項18に記載のプロセッサ。
  23. 前記実行ユニットは、前記ポートからのデータの入力と関連付けられたタイムスタンプを読み出し、前記トリガ時間値を前記タイムスタンプと指定された時間間隔を加えたものに設定して、前記時間間隔が経過した後で前記ポートから前記外部環境へのデータの出力をトリガする、請求項20に記載のプロセッサ。
  24. 前記現在時間を前記実行ユニットに転送するように構成された少なくとも1つのタイマを含む、請求項1に記載のプロセッサ。
  25. 前記タイマは、ウェイクアップ時間値を記憶するように構成された第4のレジスタと、前記現在時間値が前記ウェイクアップ時間値と一致した場合に指示を生成するように構成された比較ロジックとを含み、
    前記スレッドスケジューラによる前記スケジューリングは、前記指示を受け取るまで時限スレッドの実行を保留するようにスケジューリングするステップを含む、請求項24に記載のプロセッサ。
  26. 前記実行ユニットは、前記指示に応じて前記タイマから前記現在時間を読み出すように構成された、請求項25に記載のプロセッサ。
  27. 前記指示は、前記スレッドスケジューラに送られるスレッド識別子を含み、前記スレッド識別子は、前記時限スレッドを識別する、請求項25に記載のプロセッサ。
  28. 前記指示は、前記実行ユニットに送られる継続点ベクトルを含み、前記継続点ベクトルは、前記時限スレッド内の前記実行が再開されるポイントを指定する、請求項25に記載のプロセッサ。
  29. 前記実行ユニットは、前記継続点ベクトルを設定するセットベクトル命令を実行するように構成された、請求項28に記載のプロセッサ。
  30. インタフェース部分と内部環境とを有し、前記インタフェース部分が、少なくとも1つのポートと、前記ポートと関連付けられた第1のレジスタとを含み、前記内部環境が、実行ユニットとスレッドスケジューラを含むプロセッサにおいてスレッドをスケジューリングする方法であって、
    前記ポートに現在時間値を受け取るステップと、
    トリガ時間値を前記第1のレジスタに記憶するステップと、
    前記現在時間値を前記トリガ時間値と比較して、前記現在時間値が前記トリガ時間値と一致するかどうかを検出するステップと、
    前記一致が検出された場合に、前記ポートと外部環境との間でデータを転送し、前記転送を示すためにレディ信号を変化させるステップと、
    前記スレッドスケジューラを操作して、前記実行ユニットにより実行するための一連の命令をそれぞれ含む複数のスレッドをスケジューリングするためのステップであって、前記レディ信号に応じて実行するために1つまたは複数の前記スレッドをスケジューリングするステップを含むステップと、
    前記実行ユニットを操作して前記少なくとも1つのポートと前記内部環境との間でデータを転送するステップとを含む方法。
  31. 前記プロセッサは、前記現在時間値を出力するように構成されたカウンタを含み、前記現在時間値を前記カウンタから前記少なくとも1つのポートに提供するステップを含む、請求項30に記載の方法。
  32. 前記プロセッサは、複数のポートと、それぞれのポートとそれぞれ関連付けられた複数の第1のレジスタとを含み、それぞれのトリガ時間値をそれぞれの第1のレジスタに記憶するステップを含み、前記スレッドスケジューラによってスケジューリングする前記ステップは、前記レディ信号に応じて実行するために前記スレッドの1つまたは複数をスケジューリングするステップを含む、請求項31に記載の方法。
  33. 前記転送は、入力操作を含み、それにより、前記外部環境から前記少なくとも1つのポートにデータが取り込まれ、前記変化させるステップは、前記レディ信号を、前記データを前記内部環境に入力できることを示す第1の状態に設定する、請求項30に記載の方法。
  34. 前記転送は、出力操作を含み、それにより、前記少なくとも1つのポートのそれぞれから前記外部環境にデータが提示され、前記変化させるステップは、前記レディ信号を、少なくとも1つのポートが前記内部環境との間でデータをさらに転送することができることを示す第2の状態に設定するステップを含む、請求項30に記載の方法。
  35. 前記レディ信号のそれぞれが第1の状態にある場合に、前記実行ユニットを操作してデータをポートから前記内部環境に入力する入力命令を実行するステップを含み、前記入力命令は、前記1つまたは複数のスレッドのシーケンスの構成命令である、請求項33に記載の方法。
  36. 前記レディ信号のそれぞれが第2の状態にある場合に、前記実行ユニットを操作してデータを前記内部環境からポートに出力する出力命令を実行するステップを含み、前記出力命令は、前記1つまたは複数のスレッドのシーケンスの構成命令である、請求項34に記載の方法。
  37. 前記転送は、出力操作を含み、それにより、前記少なくとも1つのポートのそれぞれから前記外部環境にデータが提示され、前記変化させるステップは、前記レディ信号を、少なくとも1つのポートが前記内部環境との間でデータをさらに転送することができることを示す第2の状態に設定するステップを含み、
    前記入力命令の完了時に、前記実行ユニットを操作して前記それぞれのレディ信号を前記第2の状態に設定するステップを含む、請求項35に記載の方法。
  38. 前記出力命令の完了時に、前記実行ユニットを操作して前記それぞれのレディ信号を前記第1の状態に設定するステップを含む、請求項36に記載の方法。
  39. 前記スレッドスケジューラによる前記スケジューリングをするステップが、前記それぞれのレディ信号が前記第1の状態に設定されるまで前記入力命令のスレッドの実行を保留するステップを含む、請求項35に記載の方法。
  40. 前記スレッドスケジューラによる前記スケジューリングするステップが、前記それぞれのレディ信号が前記第2の状態に設定されるまで前記出力命令のスレッドの実行を保留するステップを含む、請求項36に記載の方法。
  41. 前記出力命令の完了時に、前記実行ユニットを操作して前記それぞれのレディ信号を前記第1の状態に設定するステップを含み、
    前記転送は、入力操作と出力操作の両方を含み、前記実行ユニットを操作して入力命令と出力命令を実行するステップを含む請求項37に記載の方法。
  42. 前記実行ユニットは、前記第1のレジスタのうちの1つにトリガ時間値を記憶するセットトリガ時間命令を実行するように構成された、請求項30に記載の方法。
  43. 前記外部環境は、前記プロセッサが収容された集積回路の少なくとも1つのピンを含む、請求項30に記載の方法。
  44. 前記外部環境は、前記プロセッサが収容された集積回路上の別のプロセッサを含む、請求項30に記載の方法。
  45. ポートと前記内部環境との間のデータの前記転送は、前記ポートと前記実行ユニットとの間の転送を含む、請求項30に記載の方法。
  46. 前記内部環境は、バスを含み、ポートと前記内部環境との間のデータの前記転送は、前記ポートと前記バスとの間の転送を含む、請求項30に記載の方法。
  47. 前記内部環境は、複数組の第2のレジスタを含み、各組の第2のレジスタは、前記複数のスレッドのそれぞれに関する情報を記憶し、ポートと前記内部環境との間の転送は、前記ポートと前記第2のレジスタのうちの1つとの間の転送を含む、請求項30に記載の方法。
  48. 前記スレッドスケジューラを操作して1組の実行可能スレッドを維持するステップを含み、前記スレッドスケジューラによる前記スケジューリングするステップは、前記1組の実行可能スレッドからスレッドを除外することによって前記スレッドを保留するステップを含む、請求項30に記載の方法。
  49. 前記ポートと前記外部環境との間のデータの転送をタイムスタンプと関連付けるステップを含む、請求項30に記載の方法。
  50. 前記インタフェース部分は、前記少なくとも1つのポートと関連付けられた第3のレジスタを含み、タイムスタンプの前記関連付けは、前記タイムスタンプされた転送を実行する際に前記現在時間値を前記第3のレジスタに記憶するステップを含む、請求項49に記載の方法。
  51. 前記ポートと前記外部環境との間のデータの転送をタイムスタンプと関連付けるステップを含み、
    前記インタフェース部分は、前記少なくとも1つのポートと関連付けられた第3のレジスタを含み、タイムスタンプの前記関連付けは、前記タイムスタンプされた転送を実行する際に前記現在時間値を前記第3のレジスタに記憶するステップを含み、
    前記実行ユニットを操作して、前記タイムスタンプを、前記第3のレジスタから、前記タイムスタンプと関連付けられたスレッドの前記第2のレジスタのうちの1つに転送するステップを含む、請求項47に記載の方法。
  52. 前記実行ユニットを操作して、前記ポートからデータの入力と関連付けられたタイムスタンプを読み出し、前記トリガ時間値を前記タイムスタンプと指定された時間間隔を加えたものに設定して、前記時間間隔が経過した後で前記ポートから前記外部環境へのデータの出力をトリガする、請求項49に記載の方法。
  53. 前記プロセッサは、少なくとも1つのタイマを含み、前記タイマから前記実行ユニットに前記現在時間を転送するステップを含む、請求項30に記載の方法。
  54. 前記タイマは、第4のレジスタを含み、
    前記第4のレジスタにウェイクアップ時間値を記憶するステップと、
    前記現在時間値を前記ウェイクアップ時間値と比較して、前記現在時間値が前記ウェイクアップ時間値と一致しているかどうかを検出するステップと、
    前記一致が検出された場合に指示を生成するステップとを含み、
    前記スレッドスケジューラによる前記スケジューリングするステップが、前記指示を受け取るまで時限スレッドの実行を保留するステップを含む、請求項53に記載の方法。
  55. 前記実行ユニットを操作して、前記指示に応じて前記タイマから前記現在時間を読み出すステップを含む、請求項54に記載の方法。
  56. 前記指示を生成するステップは、前記スレッドスケジューラに、前記時限スレッドを識別するスレッド識別子を送るステップを含む、請求項54に記載の方法。
  57. 前記指示を生成するステップは、前記実行ユニットに、前記時限スレッド内の実行が再開されるポイントを指定する継続点ベクトルを送るステップを含む、請求項54に記載の方法。
  58. 前記実行ユニットを操作して、前記継続点ベクトルを設定するセットベクトル命令を実行するステップを含む、請求項57に記載の方法
  59. モバイルアプリケーションプロセッサ、少なくとも1つの周辺装置、および前記モバイルアプリケーションプロセッサと周辺装置との間に接続されたインタフェースプロセッサを有し、前記インタフェースプロセッサが、インタフェース部分と内部環境を有する移動端末であって、前記インタフェース部分は、
    現在時間値を受け取るように構成された少なくとも1つのポートと、
    前記ポートと関連付けられて、トリガ時間値を記憶するように構成された第1のレジスタと、
    前記現在時間値が前記トリガ時間値と一致するどうかを検出して、前記一致が検出された場合に、前記ポートとモバイルアプリケーションプロセッサまたは周辺装置との間でデータを転送し、転送を示すためにレディ信号を変化させるように構成された比較ロジックを含み、
    前記内部環境は、
    前記少なくとも1つのポートと前記内部環境との間でデータを転送するための実行ユニットと、
    前記実行ユニットによって実行するために一連の命令をそれぞれ含む複数のスレッドをスケジューリングするためのスレッドスケジューラであって、前記レディ信号に応じて実行するために前記スレッドの1つまたは複数をスケジューリングするステップを含むスレッドスケジューラとを含む移動端末。
  60. 相互接続されたプロセッサの配列であって、前記プロセッサの少なくとも1つが、インタフェース部分と内部環境とを有し、前記インタフェース部分は、
    現在時間値を受け取るように構成された少なくとも1つのポートと、
    前記ポートと関連付けられて、トリガ時間値を記憶するように構成された第1のレジスタと、
    前記現在時間値が前記トリガ時間値と一致するかどうか検出し、前記一致が検出された場合に、前記ポートと前記配列内の別のプロセッサとの間でデータを転送し、前記転送を示すためにレディ信号を変化させるように構成された比較ロジックとを含み、
    前記内部環境は、
    前記少なくとも1つのポートと前記内部環境との間でデータを転送するための実行ユニットと、
    前記実行ユニットによって実行するために一連の命令をそれぞれ含む複数のスレッドをスケジューリングするためのスレッドスケジューラであって、前記レディ信号に応じて実行するための前記スレッドの1つまたは複数をスケジューリングするステップを含むスレッドスケジューラとを含む相互接続されたプロセッサの配列。
  61. インタフェース部分と内部環境を有するプロセッサであって、前記インタフェース部分は、
    現在時間値を受け取るように構成されたポート手段と、
    前記ポート手段と関連付けられトリガ時間値を記憶するためのレジスタ手段と、
    前記現在時間値が前記トリガ時間値と一致するかどうかを検出し、前記一致が検出された場合に、前記ポート手段と外部環境手段との間でデータを転送し、前記転送を示すためにレディ信号を変化させるための比較手段とを含み、
    前記内部環境は、
    前記少なくとも1つのポート手段と前記内部環境との間でデータを転送するための実行手段と、
    前記実行手段によって実行するために一連の命令をそれぞれ含む複数のスレッドをスケジューリングするためのスレッドスケジューリング手段であって、前記レディ信号に応じて実行するために1つまたは複数の前記スレッドをスケジューリングするステップを含むスレッドスケジューリング手段とを含むプロセッサ。
  62. インタフェース部分と内部環境を有し、前記インタフェース部分が、少なくとも1つのポートと、前記ポートと関連付けられた第1のレジスタとを含み、前記内部環境が、実行ユニットとスレッドスケジューラを含むプロセッサにおいてスレッドをスケジューリングするためのプログラムであって、コンピュータ上で実行されたときに、
    前記ポートで現在時間値を受け取るステップと、
    前記第1のレジスタにトリガ時間値を記憶するステップと、
    前記現在時間値を前記トリガ時間値と比較して、前記現在時間値が前記トリガ時間値と一致するかどうかを検出するステップと、
    前記一致が検出された場合には、前記ポートと外部環境との間でデータを転送し、前記転送を示すためにレディ信号を変化させるステップと、
    前記スレッドスケジューラを操作して、前記実行ユニットにより実行するために一連の命令をそれぞれ含む複数のスレッドをスケジューリングするステップであって、前記レディ信号に応じて実行するために1つまたは複数の前記スレッドをスケジューリングするステップを含むスケジューリングするステップと、
    前記少なくとも1つのポートと前記内部環境との間でデータを転送するステップとを含むプログラム。
JP2010503479A 2007-04-17 2008-04-15 時限ポート Active JP5222937B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/785,346 2007-04-17
US11/785,346 US7617386B2 (en) 2007-04-17 2007-04-17 Scheduling thread upon ready signal set when port transfers data on trigger time activation
PCT/EP2008/054530 WO2008125670A1 (en) 2007-04-17 2008-04-15 Timed ports

Publications (2)

Publication Number Publication Date
JP2010525436A JP2010525436A (ja) 2010-07-22
JP5222937B2 true JP5222937B2 (ja) 2013-06-26

Family

ID=39737141

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010503479A Active JP5222937B2 (ja) 2007-04-17 2008-04-15 時限ポート

Country Status (6)

Country Link
US (1) US7617386B2 (ja)
EP (2) EP3349120B1 (ja)
JP (1) JP5222937B2 (ja)
KR (1) KR101486027B1 (ja)
CN (1) CN101689157B (ja)
WO (1) WO2008125670A1 (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5510000B2 (ja) * 2010-03-31 2014-06-04 ソニー株式会社 コンテンツ送信装置、コンテンツ再生システム、コンテンツ送信方法、およびプログラム
US8732357B2 (en) * 2010-10-28 2014-05-20 International Business Machines Corporation Apparatus and method for dynamically enabling and disabling write XFR—RDY
US9098270B1 (en) * 2011-11-01 2015-08-04 Cypress Semiconductor Corporation Device and method of establishing sleep mode architecture for NVSRAMs
US9104423B2 (en) * 2012-05-16 2015-08-11 Nvidia Corporation Method and system for advance wakeup from low-power sleep states
US9395799B2 (en) 2012-08-09 2016-07-19 Nvidia Corporation Power management techniques for USB interfaces
FR2996091B1 (fr) * 2012-09-21 2015-07-17 Thales Sa Noeud fonctionnel pour un reseau de transmission d'informations et reseau correspondant
TWI489237B (zh) * 2012-11-16 2015-06-21 Ind Tech Res Inst 即時取樣裝置及其方法
JP6029433B2 (ja) 2012-11-26 2016-11-24 ルネサスエレクトロニクス株式会社 マイコン
US9760150B2 (en) 2012-11-27 2017-09-12 Nvidia Corporation Low-power states for a computer system with integrated baseband
US9465655B2 (en) 2012-11-28 2016-10-11 Htc Corporation Method for managing threads using executing time scheduling technique and electronic device using the same method
CN103853605B (zh) * 2012-11-28 2017-06-09 宏达国际电子股份有限公司 线程管理方法及其电子装置
CN103857019B (zh) 2012-11-30 2018-01-02 辉达公司 一种在移动终端中用于省电的方法
KR102250089B1 (ko) * 2014-03-11 2021-05-10 삼성전자주식회사 레지스터 포트를 관리하는 방법 및 장치
US10203745B2 (en) 2016-03-30 2019-02-12 Qualcomm Incorporated Apparatus and method for dynamic power reduction in a unified scheduler
KR102530391B1 (ko) 2018-01-25 2023-05-09 삼성전자주식회사 외부 인터럽트를 지원하는 저전력 보이스 트리거 시스템을 포함하는 애플리케이션 프로세서, 이를 포함하는 전자 장치 및 그 동작 방법
EP3537293A1 (de) 2018-03-09 2019-09-11 Till I.D. GmbH Zeitlich deterministischer mikroprozessor und mikrocontroller
CN110427634B (zh) * 2019-05-17 2022-08-02 西南交通大学 基于fpga实现反应系统的通信系统及其构建方法
US11288072B2 (en) * 2019-09-11 2022-03-29 Ceremorphic, Inc. Multi-threaded processor with thread granularity
GB2601735A (en) * 2020-12-01 2022-06-15 Nordic Semiconductor Asa Peripheral interconnect controller

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6025952B2 (ja) * 1978-05-20 1985-06-21 アイホン株式会社 時限方式
JPH01140339A (ja) * 1987-11-27 1989-06-01 Hitachi Ltd 定時刻起動方式
JPH03208130A (ja) * 1990-01-11 1991-09-11 Nec Corp 状態遷移実行装置
JPH04315209A (ja) * 1991-04-12 1992-11-06 Mitsubishi Electric Corp マイクロコンピュータ
JPH1091431A (ja) * 1996-09-13 1998-04-10 Ricoh Co Ltd データ処理装置
US5818839A (en) * 1997-06-27 1998-10-06 Newbridge Networks Corporation Timing reference for scheduling data traffic on multiple ports
US6219741B1 (en) * 1997-12-10 2001-04-17 Intel Corporation Transactions supporting interrupt destination redirection and level triggered interrupt semantics
US6243842B1 (en) * 1998-06-08 2001-06-05 Stmicroelectronics, Inc. Method and apparatus for operating on a memory unit via a JTAG port
US7171542B1 (en) 2000-06-19 2007-01-30 Silicon Labs Cp, Inc. Reconfigurable interface for coupling functional input/output blocks to limited number of i/o pins
JP3698987B2 (ja) * 2000-12-18 2005-09-21 エヌイーシーコンピュータテクノ株式会社 バッファ制御装置、汎用ポート制御装置、入出力システム、情報処理装置
US7289523B2 (en) * 2001-09-13 2007-10-30 International Business Machines Corporation Data packet switch and method of operating same
CN100449478C (zh) * 2002-05-31 2009-01-07 德拉华州大学 用于实时多线程处理的方法和装置
US7673304B2 (en) * 2003-02-18 2010-03-02 Microsoft Corporation Multithreaded kernel for graphics processing unit
US7380248B1 (en) * 2004-02-26 2008-05-27 Sun Microsystems, Inc. Queue alerts
JP2006048241A (ja) * 2004-08-02 2006-02-16 Hitachi Ltd 組込み制御装置
US7406550B2 (en) 2005-01-27 2008-07-29 Innovasic, Inc Deterministic microcontroller with configurable input/output interface

Also Published As

Publication number Publication date
US7617386B2 (en) 2009-11-10
US20080263318A1 (en) 2008-10-23
CN101689157A (zh) 2010-03-31
KR20100016636A (ko) 2010-02-12
WO2008125670A1 (en) 2008-10-23
CN101689157B (zh) 2012-08-22
JP2010525436A (ja) 2010-07-22
KR101486027B1 (ko) 2015-01-28
EP3349120A1 (en) 2018-07-18
EP3349120B1 (en) 2019-02-20
EP2137627A1 (en) 2009-12-30

Similar Documents

Publication Publication Date Title
JP5222937B2 (ja) 時限ポート
EP2137628B1 (en) Clocked ports
KR101486025B1 (ko) 프로세서에서의 쓰레드 스케쥴링
KR101501181B1 (ko) 인터페이스 프로세서
EP2137618B1 (en) Processor instruction set
EP2137617B1 (en) Processor instruction set
JP2010521730A5 (ja)
EP2137613B1 (en) Processor register architecture

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110411

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121030

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130128

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130311

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

Free format text: PAYMENT UNTIL: 20160315

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5222937

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

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250