首页 / 专利库 / 软件 / 后台任务 / Context controller for managing multi-tasking by processor

Context controller for managing multi-tasking by processor

阅读:735发布:2020-10-25

专利汇可以提供Context controller for managing multi-tasking by processor专利检索,专利查询,专利分析的服务。并且PROBLEM TO BE SOLVED: To manage a multi-task in a processor by automatically entering a power saving mode when whole tasks to be executed by means of the processor are in a non-working state. SOLUTION: Text symbols 102 and 104 include declaration of a variable number and the parameter type of a signal to be used for obvious inter-block communication. A mode change-over circuit is connected to a foreground task controller and a background task controller and permits the processor to be in an idle state when the whole contexts are in the non-working state and permits the mode to be the power saving one. The context controller detects a switch state (zero or one) and decides whether a relating task is the foreground task or the background task. The change-over of software is included in a task programmable register.,下面是Context controller for managing multi-tasking by processor专利的具体信息内容。

【特許請求の範囲】
  • 【請求項1】 プロセッサにおけるマルチタスキングを管理する、コンテキスト・コントローラにおいて、 プロセッサ資源をフォアグラウンド・タスクとバックグラウンド・タスクにそれぞれ対応する起動コンテキストに割り当てるフォアグラウンド・タスク・コントローラおよびバックグラウンド・タスク・コントローラと、 前記フォアグラウンド・タスク・コントローラおよびバックグラウンド・タスク・コントローラに接続され、前記のコンテキストのすべてが非稼働状態にあるときに、
    前記プロセッサをアイドル状態にして、パワーセービングモードにするモード切替回路とを有することを特徴とするコンテキスト・コントローラ。
  • 【請求項2】 ソフトウエア・スイッチ状態は、前記フォアグラウンド・タスクと、前記バックグラウンド・タスクとを区別することを特徴とする請求項1記載のコンテキスト・コントローラ。
  • 【請求項3】 前記フォアグラウンド・タスク・コントローラおよびバックグラウンド・タスク・コントローラは、前記プロセッサ資源を前記稼働状態のコンテキストにのみ割り当てることを特徴とする請求項1記載のコンテキスト・コントローラ。
  • 【請求項4】 前記バックグラウンド・タスク・コントローラは、前記バックグラウンド・タスク・コントローラにより実行される・命令数に基づいて、バックグラウンド・タスクに対応するコンテキストを起動することを特徴とする請求項1記載のコンテキスト・コントローラ。
  • 【請求項5】 前記コンテキストは、個々のレジスターセット内に記憶されることを特徴とする請求項1記載のコンテキスト・コントローラ。
  • 【請求項6】 イベントに応答して、優先権に基づいたフォアグラウンド・タスクに対応するコンテキストを起動する、フォアグラウンド・タスク・コントローラをさらに有し、 前記バックグラウンド・タスク・コントローラは、前記フォアグラウンド・タスクに対応するコンテキストの起動を条件に、前記バックグラウンド・タスクに対応するコンテキストを、周期的に起動させることを特徴とする請求項1記載のコンテキスト・コントローラ。
  • 【請求項7】 前記バックグラウンド・タスク・コントローラは、ソフトウエアで設定できるメモリ・ロケーションに差し向けることにより、特定のバックグラウンド・タスクに対応する、コンテキストを起動することを特徴とする請求項1記載のコンテキスト・コントローラ。
  • 【請求項8】 プロセッサにおけるマルチタスキングを管理する方法において、 (A) プロセッサ資源をフォアグラウンド・タスクとバックグラウンド・タスクにそれぞれ対応する、起動コンテキストに割り当てるステップと、 (B) 前記フォアグラウンド・タスク・コントローラおよびバックグラウンド・タスク・コントローラに接続され、前記のコンテキストのすべてが非稼働状態にあるときに、前記プロセッサをアイドル状態にするステップとを有することを特徴とするプロセッサ内のマルチタスキングを管理する方法。 。
  • 【請求項9】 ソフトウエア・スイッチ状態は、前記フォアグラウンド・タスクと、前記バックグラウンド・タスクとを区別するを有することを特徴とする請求項8記載の方法。
  • 【請求項10】 前記フォアグラウンド・タスク・コントローラおよびバックグラウンド・タスク・コントローラは、前記プロセッサ資源を前記稼働状態のコンテキストにのみ割り当てることを特徴とする請求項8記載の方法。
  • 【請求項11】 前記バックグラウンド・タスク・コントローラは、前記バックグラウンド・タスク・コントローラにより実行される・命令数に基づいて、バックグラウンド・タスクに対応するコンテキストを起動することを特徴とする請求項8記載の方法。
  • 【請求項12】 前記コンテキストは、個々のレジスターセット内に記憶することを特徴とする請求項8記載の方法。
  • 【請求項13】 イベントに応答して、優先権に基づいたフォアグラウンド・タスクに対応するコンテキストを起動するフォアグラウンド・タスク・コントローラは、
    前記フォアグラウンド・タスクに対応するコンテキストの起動を条件に、前記バックグラウンド・タスクに対応するコンテキストを、周期的に起動させるステップを有することを特徴とする請求項8記載の方法。
  • 【請求項14】 前記フォアグラウンド・タスク・コントローラは、ソフトウエアで設定できるメモリ・ロケーションに差し向けることにより、特定のバックグラウンド・タスクに対応する、コンテキストを起動するステップを有することを特徴とする請求項8記載の方法。
  • 【請求項15】 プロセッサが受信し、複数の・タスクに対応する・インストラクションをデコードするインストラクション・デコーダと、 前記複数の・タスクに対応して、操作される演算子を含む複数のレジスターセットと、 前記インストラクション・デコーダと複数のレジスターセットに接続され、前記演算子の1つを操作するために、前記複数の・タスクのうち、起動している・タスクに対応する・インストラクションを実行する実行コアと、 前記インストラクション・デコーダと、前記実行コアに接続され、前記複数の・タスクに関し、複数のタスク分配(複数のタスク割り当て)を管理するコンテキスト・
    コントローラとからなるプロセッサにおいて、 前記コンテキスト・コントローラは、 プロセッサ資源をフォアグラウンド・タスクとバックグラウンド・タスクにそれぞれ対応する、起動コンテキストに割り当てるフォアグラウンド・タスク・コントローラおよびバックグラウンド・タスク・コントローラと、 前記フォアグラウンド・タスク・コントローラおよびバックグラウンド・タスク・コントローラに接続され、前記のコンテキストのすべてが非稼働状態にあるときに、
    前記プロセッサをアイドル状態にして、パワーセービングモードにする、モード切替回路とを有することを特徴とするコンテキスト・コントローラ。
  • 【請求項16】 ソフトウエア・スイッチ状態は、前記フォアグラウンド・タスクと前記バックグラウンド・タスクとを区別することを特徴とする請求項15記載のプロセッサ。
  • 【請求項17】 前記フォアグラウンド・タスク・コントローラおよびバックグラウンド・タスク・コントローラは、前記プロセッサ資源を前記稼働状態のコンテキストにのみ割り当てることを特徴とする請求項15記載のプロセッサ。
  • 【請求項18】 前記バックグラウンド・タスク・コントローラは、前記バックグラウンド・タスク・コントローラにより実行される命令数に基づいて、バックグラウンド・タスクに対応するコンテキストを起動することを特徴とする請求項15記載のプロセッサ。
  • 【請求項19】 前記コンテキストは、個々のレジスターセット内に記憶されることを特徴とする請求項15記載のプロセッサ。
  • 【請求項20】 イベントに応答して、優先権に基づいたフォアグラウンド・タスクに対応するコンテキストを起動する、フォアグラウンド・タスク・コントローラをさらに有し、前記バックグラウンド・タスク・コントローラは、前記フォアグラウンド・タスクに対応するコンテキストの起動を条件に、前記バックグラウンド・タスクに対応するコンテキストを、周期的に起動させることを特徴とする請求項15記載のプロセッサ。
  • 【請求項21】 前記バックグラウンド・タスク・コントローラは、ソフトウエアで設定できるメモリ・ロケーションに差し向けることにより、特定のバックグラウンド・タスクに対応する、コンテキストを起動することを特徴とする請求項15記載のプロセッサ。
  • 【請求項22】 前記プロセッサは、汎用コンピュータの一部を構成することを特徴とする請求項15記載のプロセッサ。
  • 说明书全文

    【発明の詳細な説明】

    【0001】

    【発明の属する技術分野】本発明は、コンピュータ・プロセッサに関し、特に、インストラクションベースのタイム・スライスタスク切替機能を有するコンテキストと、コントローラと、パワーセービングモードに自動的に入る機能を有する機能を有するコンテキスト・コントローラを採用した・プロセッサに関する。

    【0002】

    【従来の技術】内蔵コントローラで使用されているプロセッサだけでなく、汎用コンピュータのプロセッサは代表的には多数のタスクを同時に処理するようにプログラムされている。 これらのタスクのサブセットは特定の外部発生イベントに応答して適時の措置で実行する必要があり、他方、これらのタスクの残りは厳しい、リアル・
    タイムという制約無く実行することが出来る。

    【0003】単一データ・パスを使用して双方のセットのタスクを処理するために、それらのプロセッサは外部発生イベントに迅速に応答するために有効な機構を必要とする一方で、外部発生イベントが処理されていないときは何時でも非リアル・タイム処理が生起するのを許容する。

    【0004】イベント応答に対する有な機構は最初1
    950年代半ばに使用されたプログラム割込みである。
    過去40年間、大多数のプロセッサ・アーキテクチャが、外部発生イベントが生起したとき“バックグラウンド”タスクの実行を中断し、且つ“フォアグラウンド”
    タスクの実行を指示するプログラム割込みファンクションを包含していた。 各プログラム割込みは代表的には“割込み”と呼ばれ、適切なイベントが表明されると、
    (適切にはプロセッサの命令フローに同期して)プロセッサの実行状態への可逆変化を引き起こす。

    【0005】1950年代末期に開発された優先割込みはプログラム割込みファンクションを広く向上している。 優先割込みを支援するプロセッサでは、個別の優先度が、静的にかそれとも動的に多数の(割込み要求)イベント信号に割り当てられる。 これらの各信号にはプロセッサの実行状態中での可逆変化に対する唯一的に識別できる成果の状態が関係付けられる。 優先割込みが生起する毎に、割込み状態変遷が開始されるときに表明された最高優先度の割込み要求に関係付けられた成果の状態が選択される。

    【0006】プロセッサのプログラム実行状態中に可逆変化を実行するときの基本活動は、被割込みプログラムの実行アドレス(及び条件符号のような、必然的内在命令間ステータス)をセーブし、割込みを引き起こしているイベントと関連するプログラム・アドレスで割込み処理を開始するためのものである。 このプログラム・アドレスは一般的に、割込みベクトルとして知られている所定の記憶位置から得られる。 割込み処理ルーチンの末尾で、セーブされた実行アドレス(及び、もし有れば状態値)が復旧され、被割込みプログラムの実行が割込み箇所で再開するのを許容する。 殆どの割込み処理ルーチンでは、追加プロセッサ状態をセーブし、割込みに応答するために必要な操作を実行するためにその追加プロセッサ状態をその後に復旧することが必要である。 この追加の状態は主としてプログラム・カウンタ以外のプロセッサ・レジスタである。

    【0007】これらのレジスタからメモリの多数或いは専用のブロックへの又はその逆のセーブ及び復旧は相当な長時間を費やすことがある。 従って、1960年代半ばに集積回路によりハードウエア・レジスタの価格及び寸法が低下し始めたとき、幾つかのプロセッサに多数のレジスタが設置された。 割込み支援ハードウエアかそれとも割込み処理ソフトウエアによって異なるセットのレジスタを選択することにより、レジスタから主メモリへの或いはその逆のセーブ及び復旧のオーバヘッドが消去され、実質的により速い割込み応答が許容される。

    【0008】このマルチ・レジスタ・セットの概念が、
    1970年に売り出された最新型のIBMのSyste
    m/7で実現された。 このSystem/7は、各割込みレベルに専用の、ハードウエアで設定されるレジスター・セットを持ち、割込みレベルがより高い優先度のレベルの割込みによってプリエンプトされたとき、実行アドレス(プログラム・カウンタ値)をセーブするためのレジスタを各セットに包含することによって、割込みコンテキスト切替わり時間を更に低減した。 その結果は割込みコンテキスト切替わり時間が800nsで、割込み復帰時間が400nsであり、両方とも1969年の技術を使用して構築された16ビット・ミニコンピュータに対して誠にひときわ勝れたスピードであった。 そのS
    ystem/7はまた、各割込みソースによって使用される優先度レベルをソフトウエアによって設定し、システム動作中に変更出来る動的割込み課題の先駈けを為した。

    【0009】このレジスター・セットにプログラム・カウンタを加えた技術の究極的な普遍化は、イベントが常に割込みベクトル・アドレスを使用して開始することを必要とするのではなく、イベントがそれらの最後の実行アドレスで処理ルーチンを開始することを許容するものであった。 入出力装置、データ通信及び通信網プロトコル及び状態機械間の通信に関して定義されている他の処理を制御するために、これは、状態機械を命令アドレス指定のための及び(必然的内在)状態レジスタとしての双方にそのレベルのプログラム・カウンタを使用して実行することが出来るので、主要な利益であった。 これにより、分割状態レジスタの必要性が無くなっただけでなく、状態レジスタの値に基づいて適切な処理ルーチンを選択するディスパッチ・ルーチンのオーバヘッドが消去された。 実際に、“タスク”アーキテクチャに対するレジスター・セットにプロブラム・カウンタを加えたハードウエア支援は、オペレーティング・システム・ソフトウエアによって一般にサポートされた直接概念または“実行論理経路”概念を供する。

    【0010】この技術を使用して入出力制御状態機械を実行する意図で開発された最初のマシンは、1972年にXerox Palo Alto Research CenterのCharles Thacker
    によって設計された“Alto”実験用パーソナル・コンピュータであった。 1970年代初頭以来、これら割込み及びコンテキスト切替え機構の多くのバリエーションがシングル・チップ・マイクロコンピュータ及びマイクロプロセッサ用に開発されている。 しかし、これらのバリエーションは何れも、外部発生イベントに応答する急速なコンテキスト切替わりに対して基本的に新規な機構を採り入れていなかった。

    【0011】高性能システムでは、1以上のプロセッサを入出力制御及び外部イベント処理の双方又は一方に専用的に設けることがしばしば可能である。 しかし、もしそのようなシステムの中央演算処理装置で使用された技術と類似の技術も用いて実行された場合には、これらI
    /Oプロセッサの利用が非常に低くなる傾向が有る。 これは、或る特定の回路技術においては、プロセッサ・データ・パスを実行するために使用される論理素子が主メモリを実行するために使用される記憶素子よりも顕著に速く動作し、且つ論理素子及びメモリ素子の双方とも取付けられた周辺装置の何れよりも大きなデータ帯域をサポートすることができる。

    【0012】1960年代中、多数の入出力制御装置を必要とする高性能システムの設計者が多数のコントローラ・ファンクションの間で、仮令これらのコントローラ・ファンクションが論理的にちぐはぐであるとしても、
    単一データ・パスを共用するための技術を開発した。 その技術は、単独の物理データ・パス及び多数の論理プロセッサの命令ストリームを、ラウンド・ロビンをベースとして処理するために命令デコーダを使用した。 各論理プロセッサに専用に供される資源はその実行状態(プログラム・カウンタ値及びレジスタ値)をホールドするための記憶装置であった。 その制御回路は各論理プロセッサに対する所定数の命令(一般的には1個)の逐次的な、巡回的ベースででの実行を許容した。 この制御回路は、データ・パスにアクセス可能である記憶実行状態のうちの1つを異なる論理プロセッサに対する命令サイクル間で変更した。 この技術は最初、1960年代初期に
    Seymour Clayによって、Control Data Corporation(C
    DC)社のモデル6600に単独の共用データを使用して10個の周辺プロセッサ又は“PPU”と呼ばれる入出力制御装置を実行するために使用された。

    【0013】この論理プロセッサ状態の切替わりが厳密な時間をベースで生起し、且つ外部イベントに応答しては生起しないことに留意すべきである。 実際、そのCont
    rolData社の6600PPUの幾つかの後継プロセッサでは、それらの論理プロセッサに優先割込みスキームが実行された。 より最近では、このデータ・パス共用技術が中央演算処理装置に適用されており、“共有資源多重処理”と呼ばれている。 このケースでは、様々なCPU
    タスク又はCPUプログラムから多数の独立命令ストリームがパイプライン依存を低減するためにインタリーブされ、それによってスーパスケーラ・データ・パスの資源利用を改善する。

    【0014】

    【発明が解決しようとする課題】従って、この技術で必要とされていることは、フォアグラウンド・タスク及びバックグラウンド・タスクの管理に更に一般的な柔軟性及び調和を有するコンテキストを構成し且つ割り当てる方法である。

    【0015】

    【課題を解決するための手段】従来技術の前記欠点を解決するために、本発明は、・プロセッサ内でマルチタスクを管理する、コンテキスト・コントローラを提供すること、およびそのようなコンテキスト・コントローラの動作方法に関する。

    【0016】本発明の一実施例によれば、コンテキスト・コントローラは、請求項1に記載した特徴を有する。

    【0017】そのため本発明は、プロセッサが実行できるすべてのタスクが、非稼働状態にあるときには、パワーセービングモードに自動的に入る、広い概念を含む。
    次に、ハードウェアベースのパワーセービングモード機能を有する・プロセッサの出現により、ソフトウェアの必要性なくして、パワーセービングの問題を解決する時期を検出するために、自動的にパワーセービングモードに入ることにより、エネルギーを大幅に節約し、ソフトウェアの制御を単純化できる。

    【0018】本発明の一実施例によれば、ソフトウェア切替操作は、請求項2に記載した特徴を有する。 本発明の一実施例においては、ソフトウェアの切り替えは、各コンテキストに関連した、タスクプログラム可能なレジスター内に含めることができる。 本発明において、「コンテキスト」とは、プロセッサをある状態に回復する際に用いられる、すべてのプロセッサ状態情報(あるいはそのいずれかのサブセット、例えばレジスター値)として定義される。 このコンテキスト・コントローラは、スイッチの状態(0または1)を検出して、関連タスクがフォアグラウンド・タスクか、またはバックグラウンド・タスクかのいずれかであるかを決定する。 フォアグラウンド・タスクとバックグラウンド・タスクの指定は、
    ハードウェアで行うこともできるが、この場合、柔軟性が犠牲となる。

    【0019】本発明の一実施例によれば、フォアグラウンドとバックグラウンド・タスク・コントローラは、請求項3に記載した特徴を有する。 この実施例においては、非稼働状態のタスクは、実行すべきどの・プロセッサの時間には割り当てられない。 別の構成例として、非稼働状態のタスクは、効率を犠牲にすれば、ある最小の実行時間に割り当てることができる。

    【0020】本発明の一実施例によれば、バックグラウンド・タスクコントローラは、請求項4に記載した特徴を有する。 本明細書においては、このことは、「インストラクション・スライス」と称する。 コンテキストの実行は、時間の経過(タイム・スライス)に基づいて行うことも可能である。 周期的な実行の他のベースも本発明の範囲内に含まれる。

    【0021】本発明の一実施例によれば、各コンテキストの状態は、請求項5に記載した特徴を有する。 ある種のプロセッサアーキテクチャーは、複数の物理的レジスターセットをサポートし、タスクが切り替えられる際に、それらへの論理レジスターの再マッピングをサポートしている。 別の構成例として、メインメモリの一部は、別の記憶ブロック内のレジスターコンテンツを記憶するために用いられる。

    【0022】本発明の一実施例によれば、フォアグラウンド・タスクコントローラとバックグラウンド・タスクコントローラは、請求項6に記載した特徴を有する。 本明細書において、イベントとは、コンテキスト・コントローラが、あるフォアグラウンド・タスクから別のフォアグラウンド・タスクに切り替えることにより、応答することになる刺激として定義される。 かくして、タスクは、フォアグラウンド・タスクと、バックグラウンド・
    タスクに分けられ、異なる基準を用いてプロセッサ資源に割り当てられる。 フォアグラウンド・タスクは、タイム・スライスベース、時にはインストラクションカウントの観点から処理することもできる。

    【0023】本発明の一実施例によれば、フォアグラウンド・タスクコントローラは、請求項7に記載した特徴を有する。 特定のフォアグラウンド・タスクのエントリ・ポイントを変化させることにより、コンテキスト駆動用の初期実行アドレスが状態インディケータとしても機能するような、状態機械が確立され、このフォアグラウンド・タスクは、その実行をもたらしたイベントの関数として実行する。 同一の状態機械プロセスが、バックグラウンド・タスクの駆動に対して起こる。

    【0024】

    【発明の実施の形態】図1に、本発明のプロセッサの一実施例の動作を個々のコンテキストの観点から示す状態遷移図を示す。 本発明は、コンテキスト・コントローラをプロセッサ内のマルチタスキングを管理するため使用方法を供し、且つ、タスクを実質的に様々な規準を使用するフォアグラウンド・タスク及びバックグラウンド・
    タスクに分割する広い概念を採り入れている。 イベント(フォアグラウンド・コンテキスト切替わり動作を引き起こすことが出来る刺激)は、様々なタスクに割り当てられた相対優先度と連合して使用され、どれらのフォアグラウンド・タスクが実行されるかを判定する。 逆に、
    バックグラウンド・タスクは巡回的に実行され、処理資源のタイム・スライス、命令スライス、或いは何らかの他の巡回割り付けに基づくことが出来る。

    【0025】本発明の例示実施例によれば、コンテキスト・コントローラはフォアグラウンド・タスク及びバックグラウンド・タスクの双方に対するマルチタスキング・アクティビティを管理する。 コンテキストがフォアグラウンドに在り、一組のコンテキストを管理出来るフォアグラウンド・タスク・コントローラの管理の下で動作しているとき、コンテキストの起動が単独で優先度に基づくイベントの生起に応答して生起する。 相対優先度がフォアグラウンド・タスク間に確立され、多数のフォアグラウンド・タスクが同時に活性状態であるときの競合の解決を補助する。 更に、コンテキストの実行は、単により高い優先度のフォアグラウンド・コンテクストが活性状態になるときにプリエンプトすることが出来る。

    【0026】コンテキストがバックグラウンドに在り、
    やはり一組のコンテキストを管理出来るバックグラウンド・タスク・コントローラの管理の下で動作しているとき、コンテキストの実行をイベントの適時の処理を許容する何らかのフォアグラウンド・コンテクストによってプリエンプトすることが出来る。 バックグラウンド・タスク・コントローラはフォアグラウンド・タスク・コントローラの下で動作するフォアグラウンド・タスクに対応するコンテキストの起動と協働し、且つ、その起動によって決まる。 しかし、この例示実施例では、全ての活性状態バックグラウンド・コンテキストがプロセッサの資源を巡回的ベースで共用する。 コンテキスト・コントローラは、ソフトウエアで規定された数の命令(命令スライス)が利用可能な処理資源を活性状態バックグラウンド・コンテキスト間に均一に分配するために実行された後に、動作状態の各バックグラウンド・コンテキストをプリエンプトすることが出来る。 或いは、バックグラウンド・コンテキストの起動が時間(タイム・スライス)に基づいて為されるようにすることも可能である。
    勿論、巡回起動の為の他のベースも広い範囲の本発明内のものである。

    【0027】絶対時間よりもむしろソフトウエアによって特定される数又はカウントの命令に基づくバックグラウンド時間量が例示実施例のはっきりした特徴である。
    この特徴は処理資源の活性状態バックグラウンド・コンテキスト間の割り付けの公平性を改善する。 もし絶対時間が使用される場合は、従来のプロセッサ上でリアル・
    タイム動作システムの下で動作する同一優先度のタスク間で生起する如く、所定のバックグラウンド・コンテキストがそのタイム・スライス中に実行出来る命令数を、
    そのバックグラウンド・コンテキストのタイム・スライス中に1以上のフォアグラウンド・コンテクストを起動するイベントの生起によって場合によりにゼロに縮小することが可能である。 例えば命令カウント即ち命令スライスを使用することにより、本実施例は活性状態の各バックグラウンド・コンテキストがバックグラウンド処理繰返しサイクルの前に同じ量のワークを達成するのを許容する。 所定数の活性状態バックグラウンド・コンテキストに対し、バックグラウンド・サイクルの絶対持続時間がフォアグラウンド・コンテクストによる優先実行により変動する副作用が有る。

    【0028】多くの従来技術システムでは、このことは周期的タスクの時間的特性を妨害する問題を構成する可能性が有った。 しかし、例示実施例では、固定の時間境界を有する何らかのアクティビティを適切な優先度のフォアグラウンド・コンテクストに割り当てることが出来る。 例示実施例はリアル・タイム応答の制約に応ずる信頼性の改善及び1組の活性状態バックグラウンド・タスク間のプロセッサ割り付けの公平性の改善の双方を行う。

    【0029】プロセッサが動作している間は、各コンテクストは、2列2行(2×2)の行列を成す4セットに論理的にグループ分けされる、6状態のうちの1つにある。 最上部のロー即ち“フォアグラウンド”ロー10
    は、フォアグラウンド・コンテクストによって使用される、Rf状態18、Pf状態20及びWf状態22の3
    状態を包含する(Rf、Pf、Wfの各々が包含する“f”はフォアグラウンドを表す)。 最下部のロー即ち“バックグラウンド”ロー12は、バックグラウンド・
    コンテキストによって使用される、Rb状態24、Pb
    状態26及びWb状態28の3状態を包含する(Rb、
    Pb、Wbの各々が包含する“b”はバックグラウンドを表す)。 “活性状態”カラム14は活性状態コンテクストによって使用される4つの状態18,20,24,
    26を包含し、他方、“非活性状態”カラム16は非稼動コンテクストによって使用される2つの状態22及び26を包含する。

    【0030】“フォアグラウンド”ロー10の状態を、
    更にRf18(フォアグラウンド動作状態)、Pf20
    (プリエンプテッド・フォアグラウンド状態)及びWf
    22(フォアグラウンド待機状態)のように定義することが出来る。 “バックグラウンド”ロー12の状態を、
    更にRb24(バックグラウンド動作状態)、Qb6
    (バックグラウンド待ち行列待機状態)及びWb28
    (バックグラウンド待機状態)のように定義することが出来る。 各命令サイクル中、1個のコンテキストのみが“動作状態”であることが出来るか、或いはまたプロセッサがアイドル状態であることが出来る。 もし占有されると、実行状態コンテクストはフォアグラウンド動作状態Rfの単独のコンテキストでる。 或いはもしその状態Rf18が占有されていなければ、実行状態コンテクストはバックグラウンド動作状態Rb24(もしそれが占有されていれば)の単独のコンテキストである。 コンテキストの実行状態は一般的に分割レジスタ・セットに記憶される。 コンテキストは別のレジスタ内に記憶させることもできる。 ある種のプロセッサ・アーキテクチャは、複数の物理的レジスタセット,タスクが切り換えられる際に論理レジスタを再度マッピングすることをサポートしている。 別法として、メインメモリの一部は、別のレジスタの組内のレジスタの内容を記憶するよう割り当てられる。

    【0031】殆どのコンテキスト遷移は、ロー間遷移が専らコンテキストがソフトウエア・スイッチ動作によって識別することが出来るフォアグラウンド稼動タスク及びバックグラウンド稼動タスク間で切替わるときに必要とされるので、“フォアグラウンド”ロー10か“バックグラウンド”ロー12の何れかで起きることが許容される。 しかし、これはコンテキストの起動、優先実行及び待機よりも低い頻度で生起することが出来る。 ソフトウエア・スイッチ動作は各コンテキストに関連するタスク・プログラマブル・レジスタによって制御することが出来る。 コンテキスト・コントローラはそのスイッチ状態(0又は1)を検出し、関連するタスクがフォアグラウンド・タスクであるかバックグラウンド・タスクであるかを判定する。 フォアグラウンド・タスク及びバックグラウンド・タスクの指定はまた、勿論柔軟性を犠牲にしてハードウエア内で為されるようにすることが出来る。 本発明の一実施例においては、ソフトウェア切り換え状態は、フォアグラウンド・タスクとバックグラウンド・タスクを区別する。 この一実施例においては、ソフトウェア切り換えは、各コンテキストに関連したタスク−プログラム可能なレジスタ内に含まれる。 本明細書においては、「コンテキスト」とはある状態にプロセッサを戻す際に使用されるプロセッサの状態情報(あるいはレジスタ値のようなそのサブセット)と定義できる。 このコンテキスト・コントローラは、スイッチの状態(ゼロまたは1)を検出して関連タスクがフォアグラウンド・タスクかあるいはバックグラウンド・タスクかを決定する。 当然のことながら、フォアグラウンド・タスクとバックグラウンド・タスクの指定はハードウェアでも実施できるが、この場合柔軟性が犠牲となる。 しかし、このことはコンテキストの駆動,プリエンプト,待機よりも頻繁には起こらない。 フォアグラウンドからバックグラウンドへの遷移は専ら実行状態フォアグラウンド・コンテクストRf18がCLRFG(“フォアグラウンド・クリア”)ファンクション34を実行するときに生起することが出来、その結果フォアグラウンド動作状態R
    f18からフォアグラウンド待機状態Qb26への遷移が起きる。 バックグラウンド・コンテキスト間には相対的な優先度区分が無いので、CLRFGファンクション34を実行するコンテキストへ与えられるバックグラウンド待ち行列中の位置は任意である。

    【0032】CLRFGファンクション34を実行するコンテキストはフォアグラウンド動作から離脱しており、プロセッサの制御を、WAITファンクション32
    又は42を実行するコンテキストがそうするように、最小限の1命令サイクルの間退去する利点が有る。 もしより低い優先度のフォアグラウンド・コンテクストがプリエンプテッド状態Pf20に在れば、そのより低い優先度のフォアグラウンド・コンテクストが、HIHEST
    PRIORITY遷移36を介して次に動作する。 もしプリエンプテッド状態Pf20が占有されていなければ、バックグラウンド状態Rb24もまた占有されていなければ、既にバックグラウンド状態Rb24に在るプリエンプテッド・コンテキストが次に動作する。 この場合、フォアグラウンド待機状態Qb26中のバックグラウンド待ち行列の先頭のコンテキストが次にTIME
    SLICE開始遷移44を介して動作する。 例示実施例では、これは、フォアグラウンド動作状態Rf18及びバックグラウンド動作状態Rbの双方が占有されていないので、プロセッサがアイドル状態の単一の命令サイクル後に生起する。

    【0033】バックグラウンド及びフォアグラウンド間の遷移は通常バックグラウンド動作状態Rb24のコンテキストがSETFG(“フォアグラウンド設定”)ファンクション30を実行するときに生起し、その結果バックグラウンド動作状態Rb24からフォアグラウンド動作状態Rf18への遷移が起きる。 特定のコンテキストのフォアグラウンド起動もまたソフトウエアで設定出来る記憶位置へ差し向けることにより生起することが出来る。 特定のフォアグラウンド・タスクの入力点が変動するのを許容することにより状態機械を確立することが出来、フォアグラウンド・タスクがその実行を引き起こしたイベントのファンクションとして実行することを許容する。 勿論、同一の状態機械プロセスがまた、バックグラウンド・タスクの起動に関して起きることが出来る。

    【0034】コンテキスト動作の誤った混乱を防止するために、コンテキスト・コントローラで利用可能なファンクションが、実行状態コンテクストがそのコンテキストの初期設定(INIT)をまた強いること無く、何らかの他のコンテキストのフォアグラウンド設定或いはバックグラウンド設定を変更出来るようにする機構を包含しないことが有益である。 INITファンクションはその目標として何らかの他のコンテキストを有する実行状態コンテクストによって実行することが出来る。 INI
    Tファンクションは実行状態コンテクストに対して実行することが出来るが、しかしもし特定実施例が追加の初期設定副作用をINITファンクションに取付けなかった場合はそうする理由は存在しない。 INITファンクションの実行は、以下で詳述するように、所定の初期設定ベクトル・アドレスに設定されたプログラム・カウンタを有するフォアグラウンド・プリエンプテッド状態P
    f20内の目標コンテキストから離脱する。

    【0035】通常、INITファンクションの目標はフォアグラウンド待機状態Wf22に駐留し、遷移40を介してフォアグラウンド・プリエンプテッド状態Pf2
    0に入る。 或いはまた、それはバックグラウンド待機状態Wb28に駐留し、フォアグラウンド・プリエンプテッド状態Pf20に入って遷移50を介してバックグラウンドからフォアグラウンドへ切替わる。 実際、もし目標コンテキストがバックグラウンド動作状態Rb24か或いはフォアグラウンド待機状態Qb26の何れかに駐留する場合には、遷移50もまた可能であり、且つ、同等であるが、しかし図1にはこれら2つのケースは示されていない。

    【0036】プロセッサ・リセットの終了時には、フォアグラウンド動作状態Rf8に在る最低優先度のコンテキストを除く全てのコンテキストがフォアグラウンド待機状態Wf22に在る。 フォアグラウンド動作状態Rf
    18で実行するソフトウエアは、WAITファンクション32を実行することによってフォアグラウンド待機状態Wf22への遷移を開始することが出来る。 フォアグラウンド待機状態Wf22のコンテキストは、そのコンテキストのイベント・マスクによって動作状態にされるそのコンテキストの起動イベントのうちの何れかの表明を伴って、或いは実行状態コンテクストが遷移40を介してそのコンテキストのフォアグラウンド・プリエンプテッド状態Pf20にINITファンクションを実行するときに、フォアグラウンド・プリエンプテッド状態P
    f20に遷移する。

    【0037】例示実施例では、プリエンプション・コンテキスト切替わりが、フォアグラウンド・プリエンプテッド状態Pf20内に最高優先度のコンテキストが有ればそれを伴って命令サイクルの終了時に生起することが出来、HIHEST PRIORITY遷移36を介してフォアグラウンド動作状態Rf18に入り、フォアグラウンド動作状態Rf18内に以前のコンテキストが有れば、それはHIGHER PRIORITY ACT
    IVE遷移38を介してフォアグラウンド・プリエンプテッド状態Pf20に入る。

    【0038】コンテキストのバックグラウンド動作状態Rb24で実行するソフトウエアは、WAITファンクション42を実行することによってバックグラウンド待機状態Wb28への遷移を開始することが出来る。 バックグラウンド待機状態Wb28内のコンテキストはコンテキストのイベント・マスクによって動作状態にされるコンテキストの起動イベントのうちの何れかの表明を伴ってフォアグラウンド待機状態Qb26へ遷移する。 フォアグラウンド待機状態Qb26からバックグラウンド動作状態Rb24への遷移は専ら動作状態のフォアグラウンド・コンテクストが無いとき(フォアグラウンド動作状態Rf18にコンテキストが無いとき)に生起することが出来る。 このケースでは、もし実行状態コンテクストが有れば、それはバックグラウンド動作状態Rb2
    4内に在り、或いはまたフォアグラウンドか又はバックグラウンドの何れかで直ぐ動作出来るコンテキストが存在しないのでプロセッサはアイドル状態に在る。

    【0039】バックグラウンド動作状態Rb24内でコンテキストが動作している毎命令サイクルの終了時に、
    タイム・スライス・カウントが減少し、好適にはカウントが0に達するときの命令サイクルでタイム・スライス・コンテキスト切替わりが生起する。 この時、バックグラウンド待ち行列の先頭のコンテキストが遷移44を介してバックグラウンド動作状態Rb24に入り、前にバックグラウンド動作状態Rb24に在ったコンテキストは遷移46を介してフォアグラウンド待機状態Qb26
    に入る。

    【0040】一般的に、バックグラウンド待機コンテキストは、前の実行状態バックグラウンド・コンテクストがフォアグラウンド待機状態Qb26に入るときに最高コンテキスト番号から最低コンテキスト番号へ生起する“ラップ・アラウンド”を有するファースト・イン、ファースト・アウト(FIFO)構成に編成される。 なお、フォアグラウンド優先実行は遷移36を介する状態遷移を包含し、しかるにフォアグラウンドによるバックグラウンド優先実行は状態遷移を包含しない。 このケースでは、前の実行状態バックグラウンド・コンテクストは、フォアグラウンド動作状態Rf18が占有されておらずバックグラウンド・コンテキストが動作することが出来るようになる迄バックグラウンド動作状態Rb24
    に留まる。

    【0041】図2は、5個のフォアグラウンド・コンテクストと3個のバックグラウンド・コンテキストを有して動作するプロセッサ上の実行可能処理フロー、プリエンプション及びコンテキスト間通信を例示する図である。 本発明の一実施例においては、フォアグラウンド・
    タスクとバックグラウンド・タスクコントローラは、プロセッサ資源を稼働状態のコンテキストのみに割り当てる。 この実施例においては、非稼働状態のタスクには実行されるプロセッサの時間は割り当てられない。 別法として、非稼働状態のタスクは最少の実行時間を割り当てることも可能である。 コンテキストはイベント信号の表明によって起動することが出来る。

    【0042】各コンテキストには外部発生イベント信号及び内部発生イベント信号を関連することができる(あるいは関連しなくてもよい)。 外部発生イベント信号と内部発生イベント信号との間の基本的な相違は、外部発生イベントがそれらの起源をプロセッサの外部に有し、
    何時でも生起することが出来、それらの信号がコンテキスト・コントローラ内でコンテキスト起動判断のために使用される前にプロセッサのクロックに同期化される利点が有ることである。 それとは異なり、内部発生イベントはそれらの起源をプロセッサの内部に有し、それらの信号がプロセッサのクロックに同期して生成されるように想定され、且つ、直接使用することができることである。

    【0043】それらコンテキストの各起動イベントは、
    ソフトウエア制御の下でコンテキスト特定マスク・レジスタにビットを設定又はクリアすることにより、イネーブル及びディスエーブルすることが出来る。 外部インタフェースのような外部発生ソース、或いはインターバル・タイマーや共用プロセッサ又はデータ転送論理のような内部発生ソースからのハードウエア信号の表明による、起動イベントの表明の外に、幾らかの又は全てのイベントが、目標コンテキストと関連する一組のイベント内の目標コンテキスト番号及びイベント番号を特定する信号通信命令を使用するソフトウエアによって表明されるようにすることが出来る。 どのコンテキストもそれ自身に或いは他のコンテキストに対するイベントと信号通信することが出来るので、そのことは例示実施例が、優先割込みコントローラとして、及び、タイム・スライス・コントローラとして働くだけでなくコンテキスト内交信及びコンテキスト間交信の双方に対する有効な機構としても働くことを許容する。 本発明の一実施例においては、バックグラウンド・タスクコントローラは、各バックグラウンド・タスクにより実行される命令数に基づいてバックグラウンド・タスクに対応するコンテキストを稼働状態にする。 このことは本明細書においては、「インストラクション・スライス」と称する。 別法としてコンテキストの駆動は、時間(タイム・スライス)に基づいて行うこともできる。 周期的な駆動の他のベースを用いることも本発明の範囲内に含まれる。

    【0044】図2では、垂直軸はコンテキストを表し、
    平軸は例示のコンテキスト・コントローラ上にサポートされる8個の各コンテキストに対するコンテキスト・
    アクティビティを表す。 水平軸は命令実行サイクルの単位の時間である。 フォアグラウンド・コンテクストに対する太い黒線及びバックグラウンド・コンテキストに対する太い網掛け線は実行状態コンテクストを示す。 垂直の矢印線はコンテキスト切替わりを示し、コンテキスト切替わりが生起した理由を識別するためのラベルが付されている。 その太い線と交差している細い垂直線は命令サイクルを表す。 バックグラウンド・コンテキストに対する各命令サイクル期間上の数値は、その命令が実行されているときのタイム・スライス命令カウンタの値である。 フォアグラウンド・コンテクストに対する細い黒の一点鎖線及びバックグラウンド・コンテキストに対する細い網掛け一点鎖線は活性状態のプリエンプテッド・コンテキストを示す。 細い一点鎖線は活性状態の、待ち行列待機バックグラウンド・コンテキストを示す。 本実施例はコンテキスト0(最高優先度)からコンテキスト7
    (最低優先度)が指示された8個のコンテキストを有し、この例を通じて8個のタイム・スライス命令カウント即ち命令スライスで動作している。

    【0045】この例が開始するとき、コンテキスト0,
    2,4,5は全て非稼動フォアグラウンド・コンテクスト(状態Wf)である。 コンテキスト3,6,7は全てバックグラウンド・コンテキストであって、コンテキスト3が不活性状態Wb、コンテキスト7が待ち行列待ち状態Qb、コンテキスト6が動作状態Rbである。

    【0046】コンテキスト1は非稼動状態であり、フォアグラウンド/バックグラウンド設定が不明即ち不定の状態である。 図示の最初の命令サイクル46は、そのタイム・スライス・カウント値が2に減少するとき、バックグラウンド・コンテキスト6によって実行される。 次の命令サイクル47で、バックグラウンド・コンテキスト6がバックグラウンド・コンテキスト3へSIGNA
    Lファンクションを実行する。 その結果、バックグラウンド・コンテキスト3が次の命令サイクルでアクティブ転入状態Qbになる。 SIGNALファンクションを送出した後、バックグラウンド・コンテキスト6は、そのタイム・スライス・カウントが0に減少するとき、別の命令サイクル48を実行する。 これにより、バックグラウンド・コンテキスト7に在る、活性コンテキスト・フォアグラウンド待機状態Qbの次に高いコンテキスト番号へのコンテキスト切替わりが引き起こされる。 コンテキスト6はQb状態に入り、コンテキスト7は7のタイム・スライス・カウント値を有する命令サイクル50でRb状態に入る。 コンテキスト7が3個の命令を実行した後、外部発生イベントがフォアグラウンド・コンテクスト4を起動する。 従って、次の命令サイクル52の末尾で、バックグラウンド・コンテキスト7はフォアグラウンド・コンテクスト4によってプリエンプトされ、このプリエンプション中そのタイム・スライス・カウント値は4に留まる。

    【0047】フォアグラウンド・コンテクスト4はその最初の命令を実行し、外部発生イベントがフォアグラウンド・コンテクスト2を起動する。 従って、次の命令サイクル54の末尾で、フォアグラウンド・コンテクスト4はフォアグラウンド・コンテクスト2によりプリエンプション点53でプリエンプトされてプリエンプテッド状態Pfに入り、その一方でフォアグラウンド・コンテクスト2が動作状態Rfに入る。 フォアグラウンド・コンテクスト2は、2個の命令を実行しその起動イベントを処理した後、第3の命令サイクル56中WAITファンクションを実行する。 このWAITファンクションはフォアグラウンド・コンテクスト2に対するアクティビティ・フリップ・フロップをクリアし、且つ、1以上の命令サイクル後フォアグラウンド・コンテクスト2は非稼動状態になり、待機状態Wfに戻る。 これにより、プリエンプトされたフォアグラウンド・コンテクスト4が動作状態Rfに戻り、別の命令サイクル58を実行することが許容される。 フォアグラウンド・コンテクスト4
    はプリエンプション点53以前にそれ自身のWAITファンクションを既に実行しているので、そのファンクションは、待機状態Wfへ戻り、プリエンプトされたバックグラウンド・コンテキスト7が命令サイクル60で動作状態を再開するのを許容する前にフォアグラウンド・
    コンテクスト4によって実行される最後の命令である。
    バックグラウンド・コンテキスト7は、4以上の命令を実行した後、そのタイム・スライス62を完遂し、その結果、コンテキスト7からコンテキスト0へのコンテキスト数のラップ・アラウンドのためにバックグラウンド・コンテキスト3である次の先頭のQbコンテキストへのコンテキスト切替わりが起きる。

    【0048】命令サイクル64中、バックグラウンド・
    コンテキスト3はそのタイム・スライス7の最初の命令を実行し、外部発生イベント66がフォアグラウンド・
    コンテクスト0を起動する。 従って、この命令サイクル64の末尾で、バックグラウンド・コンテキスト3はフォアグラウンド・コンテクスト0によってプリエンプトされ、このプリエンプション中そのタイム・スライス・
    カウント値は7に留まる。 フォアグラウンド・コンテクスト0は、3個の命令を実行しその起動イベントを処理した後、第4の命令サイクル69中WAITファンクションを実行する。 このWAITファンクションはフォアグラウンド・コンテクスト0に対するアクティビティ・
    フリップ・フロップをクリアし、且つ、1以上の命令サイクル後フォアグラウンド・コンテクスト0は非稼動状態になり、待機状態Wfに戻る。 これにより、通常はプリエンプトされたバックグラウンド・コンテキスト3が動作状態を再開することが許容されるが、しかしこの例ではフォアグラウンド・コンテクスト0が動作している間、外部発生イベント68がフォアグラウンド・コンテクスト5を起動する。 なお、この起動はフォアグラウンド・コンテクスト5の状態を待機状態Wfからプリエンプテッド状態Pfへ切替わり、フォアグラウンド・コンテクストが起動以降に何らかの命令を実行すること無くプリエンプテッド状態に入ることが可能になる方法を示すことに留意しなければならない。

    【0049】もしバックグラウンド・コンテキスト3がフォアグラウンドで動作していた場合、バックグラウンド・コンテキスト3は優先度がフォアグラウンド・コンテクスト5より高いから、待機状態Wfへ戻されたフォアグラウンド・コンテクスト0が不適切であるとき、フォアグラウンド・コンテクスト5がプリエンプテッド状態Pfであった。 しかし、コンテキスト3はバックグラウンドで動作しており、従ってフォアグラウンド・コンテクスト0で実行されたWAITファンクション69
    は、動作状態Rfに入って命令70の実行を開始するフォアグラウンド・コンテクスト5へのコンテキスト切替わりをもたらす一方、バックグラウンド・コンテキスト3は状態Rbでプリエンプトされた状態に留まる。

    【0050】フォアグラウンド・コンテクスト5は2個の命令を実行してその起動イベントを処理した後、第3
    の命令サイクル71中にWAITファンクションを実行する。 このWAITファンクションはフォアグラウンド・コンテクスト5に対するアクティビティ・フリップ・
    フロップをクリアし、且つ、1以上の命令サイクルの後、コンテキスト5は非稼動状態になり、待機状態Wf
    へ戻る。 このとき他に活性状態であるフォアグラウンド・コンテクストは存在しないので、プリエンプトされたバックグラウンド・コンテキスト3は状態Rbで動作状態を再開し、そのタイム・スライス72の第2の命令を実行する。 次の命令サイクルで、バックグラウンド・コンテキスト3はWAITファンクション73を実行する。 WAITファンクション73はバックグラウンド・
    コンテキスト3に対するアクティビティ・フリップ・フロップをクリアし、且つ、1以上の命令サイクルの後、
    バックグラウンド・コンテキスト3は非稼動状態になり、待機状態Wbへ戻る。 これにより、待ち行列待機バックグラウンド・コンテキスト6が命令サイクル74で動作状態Rbへ戻ることが許容される。 なお、たとえこのコンテキスト切替わりはタイム・スライス・カウントが0へ減少することによって開始されなかったとしても、バックグラウンド・コンテキスト6は、バックグラウンド・コンテキスト3がWAITファンクション73
    を実行したときに留まりている一部分のタイム・スライスを受け継ぐよりもむしろ、7の完全なタイム・スライス・カウント値を有する命令サイクル74で動作状態R
    bに入る。

    【0051】バックグラウンド・コンテキスト6は、その第2の命令としてフォアグラウンド・コンテクスト1
    にINITファンクション76を実行してそのフォアグラウンド・コンテクスト1を、コンテキスト1によって実行されたコード中のソフトウエア・エラーから回復するのに多分必要である既知状態にする。 このINITファンクション76は、コンテキスト1を、実行セットを持つフォアグランド・コンテキスト・プリエンプテッド状態として活性状態にし、そのコンテキスト1で制御記憶域内のベクトル・アドレスの初期設定を開始する。 このとき活性フォアグラウンド・コンテクストが存在しているので、バックグラウンド・コンテキスト6は1以上の命令が実行された後コンテキスト1へのコンテキスト切替わりによってプリエンプション点77でプリエンプトされる。 コンテキスト1は、その第2の命令として、
    コンテキスト1がフォアグラウンド待機状態Qbに入るようにするCLRFG(フォアグラウンド・クリア・ビット)ファンクション78を実行する。 このとき、コンテキスト1はバックグラウンド待ち行列上に在り、且つ、既に状態Rbにコンテキストが有るので、コンテキスト1は、CLRFGファンクション78の実行に続く命令サイクルの後、無効化ポイント80でプロセッサの制御を無効にし、それにより、コンテキスト6が状態R
    bでそのタイム・スライス82の残りの実行を再開することを許容する。

    【0052】この詳細な説明の項の残りにおいて、数字は、それらが16進数である場合、前に“0x”が付いていない限り、10進数である。

    【0053】図3は、本発明の一実施例を実行するソフトウエアへアクセスすることが出来るコンテキスト毎の制御レジスタ及びステータス・レジスタの例を示す図である。 この例示実施例では、9単位数のコンテキスト当たり制御ビット84がソフトウエアによって決定される値を有し、9単位数のコンテキスト当たりステータス・
    ビット86がコンテキスト・コントローラ・ハードウエアによって決定される値を有するが、それらの値はソフトウエアにより他の方法で読み出し又はテストすることが可能である。 コンテキスト・コントローラは各コンテキストの状態ビットの一部を維持する。 これらの状態ビットは、コンテキスト・コントローラ内のコンテキスト特定状態ビットが起動ロジックによる使用のため、及びコンテキスト切替わり判断論理回路への入力としても継続的に必要とされるので、コンテキスト切替わり中にセーブ及び復旧される実行状態の部分ではない。

    【0054】コンテキスト毎の制御ビッチ84はフォアグラウンド(FG)ビット88及びイベント・マスク・
    レジスタ90を包含する。 FGビット88はコンテキストがフォアグラウンドに在るときは1である。 FGビット88は、このコンテキストを特定の目標として有するINITファンクションのハードウエア・リセットの実行よって設定され、或いはこのコンテキストが動作している間にSETFGファンクションの実行によって設定されるように示されている。 FGビット88は、このコンテキストが動作している間にCLRFGファンクションによってクリアされるように示されている。 イベント・マスク・レジスタ90はこのコンテキストに関連する各起動イベントに対応するビットを有する。

    【0055】この例示実施例では、各コンテキストが8
    個の起動イベントを割り当てられ、従ってイベント・マスク・レジスタ90は8ビットを包含する。 或る特定の起動イベントは、専ら、イベント番号と等しい対応するビット位置番号がコンテキスト・イベント・マスク・レジスタ90に1の値を有するときにコンテキストを起動する。 しかし、以下で詳述するように、起動イベントの表明は、特定ビットに対してACKNOWLEDGE
    (ACK)ファンクションが実行されるまでセット状態に留まるイベント・フリップ・フロップに記録される。
    イベント・フリップ・フロップの設定はイベント・マスク・レジスタ90の内容によって影響されない。

    【0056】コンテキスト当たりのステータス・ビット86はACTビット92及びイベント状態レジスタ94
    を包含する。 ACTビット92はコンテキストが活性状態であるとき、1である。 ACTビット92は、非マスク状態起動イベントの表明、表明された無応答起動イベントに対するイベント・マスク・ビットの設定又はこのコンテキストを特定の目標として有するINITファンクションの実行の何れかによって設定される。 ACTビット92は、ACTビットがハードウエア・リセットによって設定されるコンテキスト7を除き、ハードウエア・リセットによってクリアされ、且つコンテキストが動作している間にWAITファンクションの実行によってクリアされる。 イベント状態レジスタ94はそのコンテキストと関連する各起動イベントに対応するビットを有する。 これらのビットはまた、この詳細な説明の項の諸所でイベント・フリップ・フロップと称される。

    【0057】上述の如く、この例示実施例では、各コンテキストが8個の起動イベントを割り当てられ、イベント状態レジスタ94が少なくとも8ビットを包含することを記述する。 読み出された被表明イベントに対応するビットは1であり、肯定応答イベントを包含する読み出された非表明イベントに対応するビットは0である。 個々のイベント状態レジスタ・ビット(イベント・フリップ・フロップ)は外部発生イベント信号或いは内部発生イベント信号の表明(代表的には0から1への遷移)の検出時にコンテキスト・コントローラ・ハードウエアによって設定される。 個々のイベント状態ビットはまた、
    このコンテキストで対象イベントを宛先として特定するSIGNALファンクションの実行時に設定することが出来る。 個々のイベント状態レジスタ・ビットはハードウエア・リセットにより、またこのコンテキストが動作している間に対象イベントを特定の目標として有するA
    CKファンクションによってクリアされる幾つかのケースでは、特定のACKファンクションを、他の命令を実行し或いは特定のデータ・パス(代表的には入出力ポート)レジスタにアクセスする副作用として生成することが出来る。

    【0058】IEEE802.11媒体アクセス制御(MAC)コントローラに関するコンテキストの定義及び用法を示す実行例が以下に提示される。 MACコントローラのファンクションは、0から7を指示され、0が最高優先度である8個のコンテキストに分割されている。 コンテキスト0からコンテキスト5は好ましくはフォアグラウンドであり、コンテキスト6及びコンテキスト7は好ましくはバックグラウンドである。 各コンテキストは8個の起動イベントを有し、各起動イベントが一般的には以下のデフォルトを利用する。

    【0059】A. イベントは、そのイベントがそのような目的に指定されない限り、SIGNALファンクションを使用して表明することは出来ない。 B. イベントはACKファンクションを使用してクリアされる。 C. タイマー終了カウント・イベントは、対応するタイマーが0に減少するときに生起する。 D. タイマー終了カウント・イベントは、ACKファンクションではなく、対応するタイマーの制御レジスタへ論理1のClearTC(ビット2)を書き込むことによってクリアされる。 F. 外部イベント信号の“表明”は0から1への遷移として定義される。 G. 外部イベント信号の“否定”は1から0への遷移を意味する。 そして、 H. 制御ビット名は、そのビットが1であるときに有意であるように選ばれる。

    【0060】典型的なコンテキスト及びそれらの対応する起動イベントを以下に記載する。

    【0061】コンテキスト0−デバッグ・サポート(及び高い優先順位のリアル・タイム・イベント) 起動イベント: 0)ハードウエア区切り点(BKPTin); 1)ソフトウエア区切り点(信号0,1); 2)GP直列シフト完遂又はUARTトランスミッタ完了(GPDN/UXDN); 3)インターバル・タイマーA終了カウント(INTA
    TC); 4) UARTレシーバ完了(URXDN); 5)インターバル・タイマーBカウント(INTBT
    C); 6) ホスト(コンピュータ・システム)アテンション(HATN);及び 7) 共用プロセッサ・アテンション(CPATN).

    【0062】コンテキスト1 − ロアーMAC(LMA
    C)例外処理: 起動イベント: 0) モデム・データ・インタフェース・アテンション(MDIATN); 1) 物理層データ利用不可(!PDA); 2) IFS(フレーム間スペース)タイマー終了カウント(IFSTC); 3) MMACからLMACへのコンテキスト間通信(信号 1, 3); 4) 物理層トランスミッタ・ノット・レディ(!TX
    R); 5) ビーコン/ドウェル・タイマー・コンパレータ同一(BCNTC); 6)モデム・データ・インタフェース・プログラマブル・ビット境界(MDIBI
    T); 7) モデム管理インタフェース転送完遂(MMID
    N).

    【0063】コンテキスト2 − ロアーMAC(LMA
    C)データ転送;起動イベント: 0) モデム・データ・インタフェース・アテンション(MDIATN); 1) インターバル・タイマーB終了カウント(INT
    BTC); 2) IFS(フレーム間スペース)タイマー終了カウント(IFSTC); 3) MACからLMACへのコンテキスト間通信(信号2,3); 4) TSFT(典型的同期化ファンクション・タイマー)ウラップアラウ ンド(TSFWR
    P); 5) NAV(ネットワーク割り付けベクトル)タイマー終了カウント(INTCTC); 6) 物理層媒体ビジー(MBUSY); 7) 物理層媒体ノット・ビジー(!MBUSY).

    【0064】コンテキスト3 − ホスト・インタフェース・サポート起動イベント: 0) バッファ・アクセス・パス0 オフセット分解能(BUFATN0); 1) バッファ・アクセス・パス 1 オフセット分解能(BUFATN1); 2) ホストへ状態報告するためのコンテキスト間通信(信号3,2); 3) バッファ・アクセス・パスのブロック境界交差数が0(BLKATN0); 4) バッファ・アクセス・パスのブロック境界交差数が1(BLKATN1); 5) ホストへ状態報告するためのコンテキスト間通信(信号3,5); 6) ホスト・インタフェース・レジスタ・アテンション(HATN); 7) バックグラウンドからのコンテキスト間通信(信号3,7)。

    【0065】コンテキスト4 − 中間MAC(MMA
    C)媒体アクセス及びタイミング処理; 起動イベント: 0) LMACからHMACへのコンテキスト間通信(信号4,0); 1) 前にビジー状態であった媒体が利用可能になる(MAVL); 2) IFS/スロット・タイマー終了カウント(IF
    STC); 3) インターバル・タイマーA終了カウント(INT
    ATC); 4) ビーコン/ドウェル・タイマー・コンパレータ(BCNTC); 5) モデム・データ・インタフェース・アテンション(MDIATN); 6) ソフトウエア・フラグ3-0(コンテキスト7、イベント7と共用); 7) モデム管理インタフェース転送完遂(MMIDI).

    【0066】コンテキスト5 − WEP(ワイヤード等プライバシー)暗号解読サポート: 起動イベント: 0) 状態報告のためのコンテキスト間通信(信号5,
    0); 1) 暗号解読キーストリーム値レデイ(DECRYP
    T); 2) GP直列シフト完遂又はUARTトランスミッタ完了(GPDN/TXDN); 3) コンテキスト間通信(信号5,3); 4) UARTレシーバ転送完了(URXDN); 5) コンテキスト間通信(信号5,5); 6) インターバル・タイマーD終了カウント(INT
    DTC);及び 7) モデム管理インタフェース転送完遂(MMID
    N).

    【0067】コンテキスト6 − 追加アクセス・ポイント・ファンクション: 起動イベント: 0) ソフトウエア・フラグ11−8; 1) ソフトウエア・フラグ15−12; 2) GP直列シフト完遂又はUARTトランスミッタ完了(GPDN/UTXDN); 3) インターバル・タイマーA終了カウント(INT
    ATC); 4) ソフトウエア・フラグ7−4; 5) インターバル・タイマーB終了カウント(INT
    BTC); 6) インターバル・タイマーD終了カウント(INT
    DTC); 7) 共用プロセッサ・アテンション(CPATN).

    【0068】コンテキスト7 − 上方MAC(UMA
    C)及びその他のサポート: 起動イベント: 0) ソフトウエア・フラグ19−16 1) ソフトウエア・フラグ23−20 2) ソフトウエア・フラグ21−24 3) インターバル・タイマーA終了カウント(INT
    ATC) 4) ビーコン/ドウェル・タイマー・コンパレータ(BCNTC) 5) インターバル・タイマーB終了カウント(INT
    BTC) 6) インターバル・タイマーD終了カウント(INT
    DTC)及び 7)ソフトウエア・フラグ3−0(コンテキスト4、イベント6と共用)。

    【0069】図4は、次の図5に示される、本発明のコンテキスト・コントローラの実施例を組入れている代表的なプロセッサ或いは入出力制御装置のシステムで扱うテキスト・シンボル例を示す図ある。 この図4と図5の組(同様に図6、図7、及び図15と図16の組)は、In
    ternational Telecommunication Union in ITU- Recomm
    endation Z.100 (03/93)で標準化されているような、Sp
    ecification and Description Language(SDL)の周知のグラフィカル構文を使用して表されている。

    【0070】そのシステム動作は、より正確且つ広い一般的な適用性が達成可能であるので、この形式記述言語を使用して表されている。 例えば、模式的断篇がこの例示実施例の実行特性を強調するために使用可能である。
    しかし、このコンテキスト・コントローラは殆どどのようなタイプのプロセッサにも適用可能であるから、そのプロセッサに当然に内在するが特定のプロセッサに対する概要は、異なるアーキテクチャを使用する別のプロセッサに適切である可能性が有る制御シーケンスの態様を割愛されがちである。 また、従来の状態図はSDLプロセス図と類似の構成を有するより形式性が無い表記である。 SDLは厳密に定義されたグラフィカル構文を有するが、しかし更に僅か不正確である。 事実、このコントローラの動作中の多くの“境界条件”は従来の状態図では十分に説明されない。 これら境界条件の例は、全てがこの項のSDL明細によってカバーされており、次のものを包含する。 (1)もしコンテキストがWAITファンクションの実行とこのWAITファンクションに続く命令の実行との間でプリエンプトされると、何が起きるか。 (2)もしコンテキストがWAITファンクションの実行後の命令中にその起動を引き起こしたイベントに対してACKファンクションを実行すると、何が起きるか。 (3)バックグラウンド・コンテキストがSETF
    Gファンクションを実行するときに、もしそのバックグラウンド・コンテキストのタイム・スライスが同じ命令サイクル上で終了すると、そのコンテキストがフォアグラウンドでの動作を継続するか、即ち、状態Qb中の次のコンテキストがその新たなフォアグラウンド・コンテクストによってプリエンプトされる前に1個の命令を実行するか。 また、SDLは、英語散文体を使用して出来るよりも、より正確で不明瞭性が少ないコンテキスト・
    コントローラの動作を記述することも出来る。 従って、
    以下のパラグラフで与えられるSDL明細は、本発明の幾つかの実施例の構成及び所期の目的の顕著な特徴に対する一般的な指針及び詳細な指針の双方として働くように意図される。

    【0071】SDLシステム100はこの例示実施例で使用されるプロセッサの適切な最高レベルの機能ブロックを示す。 テキスト・シンボル102及び104は、S
    DLの定義済みデータ・タイプに対するシステム特定拡張子の定義、移植/読み込み機構を介する暗黙のブロック間通信のために使用される別種の変数の宣言及び明白なブロック間通信のために使用される信号のパラメータ・タイプを包含する。 図示のシステム100は5個の機能ブロック、即ち、クロック発生器106、シーケンサ108、命令デコーダ112、データ・パス及びインタフェース資源マネージャ114及びコンテキスト・コントローラ110を具備する。

    【0072】クロック発生器106は、入力クロック或いはクロックを発生する時間ベースの基準信号(例えば、水晶制御信号)をClocksInチャネル122
    を介して受入れ、且つ、ハードウエア・リセット信号をResetInチャネル120を介して受入れる。 クロック発生器106は他の全てのブロックで使用されるサイクル・クロックを発生する。 これらのサイクル・クロックは命令サイクルを4個の実質的に等しい部分に細分される。 これは一対の直交位相の矩形波を使用して為され、その結果、それらの4個のクロック・エッジで種々の動作を開始する。 実際のクロック波形は、図8及び図9に、命令サイクル境界を定めるマスター・クロックM
    CLK信号504と各命令サイクル内に追加のクロック・エッジを具備する直交位相クロックQCLK信号50
    6とで以って示されている。 4個のエッジは、順に、M
    r517が指名され、1つの命令サイクルの末尾及び次の命令サイクルの開始点を指し示す、MCLK信号50
    4の立上がりエッジ、Qr518が指名され、各命令サイクルの全範囲の25%に生起する、QCLK信号50
    6の立上がりエッジ、Mf519が指名され、各命令サイクルの全範囲の50%に生起する、MCLK信号50
    4の立下がりエッジ、及び、Qt520が指名され、各命令サイクルの全範囲の75%に生起する、QCLK信号506の立下がりエッジである。

    【0073】SDLモデルでは、クロック発生器106
    はリセット信号だけでなく、適切なMr517、Qr5
    18、Mf519又はQtを他の全ての機能ブロックへ送出する。 クロック発生器106はプロセッサが動作状態かアイドル状態の何れかである間、動作するが、しかしクロック発生器106がClkCctlチャネル14
    0を介してコンテキスト・コントローラ110からスリープ信号を受信するときに入力される極低電力スリープ・モード中、MCLK信号504及びQCLK信号50
    6の生成を包含するその回路の殆どを停止することができる。

    【0074】多くの実施においては、毎クロック・サイクル中に命令を実行することは可能ではない。 その結果、命令デコーダ112、シーケンサ108及びコンテキスト・コントローラ110は、専ら、「真」である別種のブール変数“ien”(テキスト・シンボル102
    を参照)によって識別されるように、命令が実際に実行されているサイクル中にそれらのファンクションを実行する。

    【0075】シーケンサ108は命令アドレスを発生し、ToCSチャネル116を介して命令取り出しサイクルを開始する。 これらのアドレスは必然的にプロセッサ100の外部に制御記憶域アレイ117と接続する。
    なお、実現技術及び所望の特性レベルに依存して、制御記憶域アレイ117及び関連データ記憶装置127は物理的に別個か、単一メモリ素子中に完全に一緒に配置されるか、或いはそれらを幾らか混ぜ合わせたものであることが出来る。 シーケンサ108は、コンテキスト・コントローラ110からCctlSeqチャネル141を介してコンテキスト切替わり信号、即ち、セーブされたコンテキスト状態情報を検索するためのCsLoad、
    コンテキスト状態情報をセーブするためのCsStor
    e、及びコンテキスト実行アドレスを適切な初期設定ベクトルに設定するためのInitSeqを受信する。

    【0076】命令デコーダ112はシーケンサ108の制御の下で取り出された命令語をFromCSチャネル118を介して受信する。 デコードされた命令は、命令フィールド値をパラメータとして有する信号として他の全てのブロックへ適宜送出される。 コンテキスト・コントローラ110での処理を必要とする命令はInstC
    ctlチャネル142を介して送出される。

    【0077】データ・パス及びインタフェース資源マネージャ114はプロセッサの残りを表し、ALU、プログラマーが参照出来るレジスタ等を包含する。 入出力装置、ホスト・コンピュータ(もし有れば)及びローカル・データ・メモリ・インタフェース(チャネル126、
    128、130、132)の全てがこの機能ブロック1
    14に接続する。 データ・パス及びインタフェース資源マネージャ114はイベント信号をコンテキスト・コントローラ110へ送出し、且つ、コンテキスト・コントローラ110からCctlIDPチャネル143を介して、ソフトウエア・フラグがACKファンクションを実行して特定の前のEventを確認したことを表すAc
    kEv信号、コンテキスト状態情報を復旧するCsLo
    ad信号、コンテキスト状態情報をセーブするCsSt
    ore信号、ハードウエア・リセット・ファンクション及びINITファンクション後に使用するための桁上げフラグを設定するSetCy信号及びそれをクリアするClearCy信号を受信する。 この機能ブロック11
    4はまた、“ien”の値(もし現在のクロック・サイクルが命令実行サイクルであれば、真)及びスライス(各バックグラウンド・タイム・スライスに対する初期命令カウント即ち命令スライスに、ソフトウエアによって特定された最後の値)を移植する。

    【0078】コンテキスト・コントローラ110はEv
    entsInチャネル124を介して外部発生イベント信号を受入れ、且つ、上記の如く他の機能ブロックと通信する利点が有る。 この機能ブロック110はまた、ブール変数不活発状態の値(スリープ・モードにあるとき、真)、CSW(コンテキスト切替わりサイクルの後半中、真)及びアイドル(活性コンテクストが無いとき、真)、CtxNum(コンテキスト番号)、変数のコンテキスト(実行状態コンテクストの数)及びnct
    x(実行が切替えられているコンテキストの数)を移植する。 そして、この機能ブロック110はまたBitS
    tring変数イベント(現在のコンテキストのイベント状態レジスタ)及びマスク(現在のコンテキストのイベント・マスク・レジスタ値)を移植する。

    【0079】図6は、図5に示されるコンテキスト・コントローラ110の内部構成を示すSDL処理対話図である。 他の最高レベル・ブロックの内部構成は、それらが本発明の一部ではなく、且つ、コンテキスト・コントローラ110の動作を理解するのに必要とされるものでもないので、本明細書では提示されない。

    【0080】2個の処理がコンテキスト・コントローラ・ブロック110に包含されているものとして示される。 イベント・シンクロナイザ150はAyncEve
    nts信号ルート158からの外部発生イベント信号を受入れ、それらをクロック発生器よりClkSyn信号ルート156を介して供されるマスター・クロックの立上がりエッジ Mr517と同期させる。 これらのイベントはSyncEvents信号ルート166を介し、
    イベント信号として、丁度、PriDP信号ルート16
    4上の内部発生ソースからの(本来的に同期化された)
    イベント信号と共に回送される。

    【0081】基本コンテキスト制御状態機械はこの実施例のイベント優先順位付け処理152内で動作する。 イベント・プライオリタイザ152は入力信号をクロック発生器106からClkPri信号ルート154を介して受信し、イベント信号をイベント・シンクロナイザ1
    50からSyncEvents信号ルート166を介して受信し、且つ、データ・パスCctlDPファンクション143をPriDP信号ルート164を介して受信する。 更に、コンテキスト制御及びコンテキスト間通信に適切な種々の命令のためのデコード信号が命令デコーダからInstCctlチャネル142及びInstP
    ri信号ルート162を介して受信される。

    【0082】図7は、イベント・シンクロナイザ150
    の動作を図示する図6に示されているイベント同期処理のプロセス図である。 この処理は、各入信ExtEve
    nt信号208がマスター・クロックの立上がりエッジMr206の生起までセーブされ、そのとき、確実にセーブされた全てのExtEvent信号214が受信され、Event信号218として直ぐにイベント・プライオリタイザ152へパスされる。

    【0083】図15乃至図21の組は、全体で、イベント・プライオリタイザ152の処理の状態遷移を定義している図6に示されているイベント優先順位付け処理のプロセスを示す。 この処理は、本発明のこの実施例に対するイベント駆動及びタイム・スライスド・コンテキスト切替えファンクションを実行する。

    【0084】図15と図16の組は始動シーケンス及びリセット・シーケンスを定義する。 “全状態”シンボル272では、リセット信号274が他の全ての入力信号より上位の優先順位を取り、開始記号254で開始する始動初期設定(シンボル282)に合する前に処理入力待ち行列(シンボル276-280)が動作されるようにする。 シーケンス(シンボル256-270)は全ての適切な変数を初期設定して、イベント・マスク、イベント状態レジスタ及び待機フリップ・フロップをクリアし、全てのコンテキストをフォアグラウンドに設定し、
    且つ、活性状態にされているコンテキスト7のそれを除く全てのACTフリップ・フロップをクリアする。

    【0085】図17と図18の組は各サイクルの後半、
    MfからMrまでの期間(マスター・クロックの立下がりエッジMfからその次の立上がりエッジMrまでの期間)の動作を定義し、更に、マスター・クロックの立上がりエッジMr292の受信の直後のイベントを定義する。 動作状態とアイドル状態284は、命令がWAIT
    ファンクションの後のサイクル中実行され、且つ、プロセッサがアイドル状態に在る時間を包含する、何れかのサイクル中に生起するイベントを処理する必要が有るので、イベントの双方とも同一の遷移を有する。 MfからMrまでの期間中、ACK(AckInst)かWAI
    T或いはSLEEPファンクション300を除く全ての命令デコード信号が直ぐに処理される。 全てのEven
    t信号288が処理された後にそれら3信号を処理する必要が有るので、それら3信号はセーブされ、マスター・クロックの立上がりエッジMr292の後で処理される。 マスター・クロックの立上がりエッジMr292の前に処理された命令(即ち、信号286、290、29
    4、296、209)は、もしコンテキスト切替わりが生起する場合、マスター・クロックの立上がりエッジM
    r292でセーブする必要が有る情報を変更することができる。

    【0086】マスター・クロックの立上がりエッジMr
    292の後、“ien”が真(1)であるサイクル(2
    93)で、CSW(コンテキスト切替わり進行中・フラグ)、CTX(現在のコンテキスト番号)、NCTX
    (次のコンテキスト番号)の値並びに、イベント・マスク及びイベント状態レジスタが更新される(シンボル3
    20、321)。 プロセッサはそのプロセッサ・クロックが停止している間にSleeping状態(シンボル338)に入ることが出来、低周波数スリープ・タイマーのみが、スリープ時間切れ(シンボル340内のWa
    ke信号)かハードウエア・リセットの何れかが生起するまで動作する。 もし不活発状態でなければ、タイム・
    スライス命令カウントが、もしバックグラウンド・コンテキストが動作していると(シンボル326、328)
    減少される(シンボル330)。 もしそのスライス・カウントが0に減少すると(シンボル332)、タイム・スライス・コンテキスト切替わりがコンテキスト数を法として1だけラウンド・ロビンcurBg(現在のバックグラウンド・コンテキスト)ポインタに先立って開始され(シンボル334)、そのプログラムされた値にリセットされる(シンボル335)。 続いて、優先順位付け状態336が入力され、MrからQrまでの期間(マスター・クロックの立上がりエッジMrから次の直交位相クロックの立上がりエッジQrまでの期間)を処理する。

    【0087】図19は各サイクルの最初の4分の1サイクル(MrからQrまでの期間)中の動作を定義する。
    これはマスター・クロックの立上がりエッジMr292
    でサンプルされたイベントがマスクされ、ACTフリップ・フロップが直交位相クロックの立上がりエッジQr
    380後に行われるコンテキスト切替わり判断に備えて更新される。 ACK(AckInst)信号352、W
    AIT信号360及びSLEEP信号366が直交位相クロックの立上がりエッジQrの前に処理され、マスキング及びACTの更新のシーケンスが直交位相クロックの立上がりエッジQr380の後に生起する。

    【0088】ACTビットの更新は、反復処理(シンボル388−392)として図示され、その動作が実行されることが明らかにされる。 この動作は代表的には全てのコンテキストに対し並列に実行される。 図19で繊細な、しかし極めて重要な動作はWAITファンクション360の処理であり、このWAITファンクション36
    0の生起は、WAITファンクション360がデコードされたマスター・クロックの立上がりエッジMr292
    の前に動作していたコンテキストである、“前(pre
    v)のコンテキスト”の指標で記録される(シンボル3
    62)。 続いてACTフリップ・フロップのクリア(シンボル382−384)が“現在(ctx)のコンテキスト”の指標で為される。 prev及びctxの値は、
    コンテキスト切替わりがマスター・クロックの立上がりエッジMr292の直前に生起した場合を除き全ての場合で直交位相クロックの立上がりエッジQr380の前後で等しくなる。 これは、コンテキスト切替わりの前の最後のサイクルでWAITファンクションを実行しているコンテキストが活性状態に留まるが、しかしそのWa
    itフリップ・フロップ(待機ビット・ストリング中のビット)はコンテキストが再度動作してそのWAITファンクションの後の命令を実行出来るようになるまで、
    1である。 図19中のもう1つの重要な動作は、ACK
    ファンクション352が処理されるときにAckEv信号356をData Pathへ送出する動作である。
    これは、この装置即ちホスト・インタフェース・ロジック内の副作用が、特定のイベントが認識されたときに実行されることを許容するために為される。

    【0089】図20と図21との組は各サイクルの第2
    の4分の1サイクル、即ちQrからMfまでの期間(直交位相クロックの立上がりエッジQrから次のマスター・クロックの立下がりエッジMfまでの期間)中の動作を定義する。 これは、イベントが優先順位付けされ、コンテキスト切替わり判断が為される期間である。 第1セットのアクション(シンボル422−428)は可能なプリエンプションを探索する。 この探索は、実行されている動作について明確化のために反復処理として図示される。 この動作は代表的には全てのコンテキストに対し並列に実行される。 もし実行状態コンテクストがフォアグラウンドに在る場合は、その探索は範囲0:ctxに渡り、しかるにもし実行状態コンテクストがバックグラウンドに在る場合は、全てのフォアグラウンド・コンテクストがどのバックグラウンド・コンテキストを超える優先度を有するので、その探索は範囲0:7に渡る。 その優先度エンコーディングは昇順コンテキスト番号42
    4のシーケンス(降順優先度順序)に必然的に内在する。 もし活性状態のフォアグラウンド・コンテクストが見出されると、その数がnctxに記録される(シンボル452)。 さもなければ、探索(シンボル430−4
    34)が活性状態バックグラウンド・コンテキストに対して行われ、現在のバックグラウンド・コンテキストで開始し、より大きなコンテキスト番号(モジュール8)
    へ続く。

    【0090】もしモジュール(図18のシンボル33
    4)がこのサイクルのマスター・クロックの立上がりエッジMr292で終了する場合は、指示されたcurB
    gが既に増分されており、探索が現在動作しているコンテキストの後のコンテキストから開始し、待機状態Qb
    に他のコンテキストが無い場合に専ら同じコンテキストを再選択することを意味する。 現在再開することが出来るバックグラウンド動作状態Rbのプリエンプテッド・
    コンテキストの場合は、このテスト(シンボル430)
    は直ちに新コンテクスト番号設定ブロック(シンボル4
    50)へ出力することとなろう。 もしフォアグラウンド探索(シンボル452)かバックグラウンド探索(シンボル450)の何れかで動作するためのコンテキストが見つかると、新コンテクスト番号(nctx)が現在のコンテキスト番号(ctx)と比較され(シンボル45
    4)、コンテキスト切替わりが必要かどうかが判定される。 もしコンテキスト切替わりが不要であれば、このサイクル中ではそれ以上のコンテキスト制御アクティビティは生起せずコントローラは動作状態458へ戻る。

    【0091】もしコンテキスト切替わりが必要であれば、コントローラはStart−CSW状態456に入り、マスター・クロックの立下がりエッジMfが生起する(シンボル460)まで入力信号462をセーブする。 次にCSW)が表明され(シンボル460)、セーブ状態の次のコンテキストのローディング(シンボル4
    78)が開始され、現在のコンテキスト状態のセーブ(シンボル480)が要求される。 ローディングが記憶処理の前に要求される理由は、以下図8及び図9と共に更に十分に説明される。

    【0092】もし活性状態のコンテキストが無い場合は、コントローラはマスター・クロックの立下がりエッジMfが生起する(シンボル438)まで全ての入力信号をセーブし(シンボル440)、続いてIdle状態442を指示し、且つ、実際にIdle状態448に入る前に現在のコンテキスト状態446のセーブを要求する。 そのコンテクスト状態は、同じコンテキストがアイドル期間の末尾で動作すべき最初のコンテキストである補償は無いので、セーブされる。 実際に、Idle状態448への遷移及びその状態448からの遷移は、アイドル状態への遷移中のセーブ(シンボル442−44
    6)及びアイドル状態からの遷移中のローディング(シンボル466−470)を有する分離したコンテキスト切替わりである。 アイドル状態中、クロックが動作し続け、イベントのサンプリングが続けられるが、しかし命令は取り出しもされず、実行もされない。

    【0093】もしプロセッサが相補型金属酸化膜半導体(CMOS)、又は回路素子がレベルを削減されるか又は変化するかしていないとき、電力消費が極めて低いか或いは基本的にゼロである、他の処理技術を使用して実行されると、Idle状態448は、シーケンサ、命令デコーダ及びデータ・パスを包含するプロセッサの殆どに本来の節電モードを供する。 もし、いっそう低い電力操作モードが要望される場合は、図19のSLEEPファンクション366により、イベント観測を中断し、低周波数スリープ・タイマーのみを動作状態に残すと共に、高速クロックを停止することが出来る。

    【0094】図8は、現在のコンテキストの状態を同期(自立タイミング被調整)SRAM又はレジスタ・ファイルに記憶し、次のコンテキストの状態をその同期(自立タイミング被調整)SRAMまたはレジスタ・ファイルからロードする、本発明によって制御されるコンテキスト切替わりのタイミング図である。 図8、図9の双方に図示されるタイミング図は、非動作のコンテキストの実行状態を記憶するために2つの異なるタイプの各メモリー技術を使用するために必要とされる相違を識別する。

    【0095】これらのタイミング・シーケンスは、各々、コンテキスト切替わり動作はコンテキスト実行状態をセーブ及び復旧するための特別サイクルを必要とせず、むしろこのファンクションをコンテキストを切替える最後の命令の実行と並列に実行する。 この技術を使用するために、プロセッサ・データ・パスは実行状態で、
    各レジスタに対して専用のレジスタ・ファイル或いはスタチックRAM(SRAM)アレイを包含する必要が有る。 本発明の例示実施例はそのような記憶装置を具備しないプロセッサ・データ・パスと共に使用することが出来る。 しかし、可能な特別サイクル及びコンテキスト実行状態をセーブ及び復旧する追加の命令の実行により、
    それ以上のオーバヘッドがそのようなプロセッサでのコンテキスト切替わりに関係付けられる。

    【0096】図8に示される、より簡単なタイミング処理及び制御信号の順序付けは、セーブ・アレイが同期(自立タイミング被調整)スタチックRAM(SRA
    M)を使用して実行される。 これは、図15乃至図21
    に定義されるSDLプロセスに基づく直接実施から得られるタイミングである。 プログラマーが参照出来る動作は同様であるが、図9に関連して説明されるように、非同期スタティックRAMをセーブ・アレイに使用するためにより大きい複雑な構成さが必要である。 同期SRA
    M素子及び非同期SRAM素子の特性が同等であると想定すると、同期SRAMを使用する方法は、低減された数の信号遷移及び命令サイクル時間の50%より短い制御信号デューティ・サイクルの消去により、より短いサイクル時間とより低い電力消費を許容する。

    【0097】この同期SRAMは、各書込み許可パルスの前方エッジで書込みアドレス及びデータを捕捉し、書込みサイクルの残りの期間に(電力以外に)安定な入力信号を必要とせず、内生された制御信号を使用して書込み動作を完遂する。 独立のアドレスを有する読み出しポート及び書込みポートの双方を持つレジスタ・ファイル・セルを使用する同期SRAMを使用するセルを基盤として使用しているセミカスタム集積回路が直ぐに利用可能である。 コンテキスト切替わりに対する制御信号タイミング処理は、図8に示されるように、これらの同期S
    RAMセルを使用してセーブ・アレイを実行するとき比較的にシンプルになる。

    【0098】各命令実行サイクル500、502中、コンテキスト・コントローラ514はマスター・クロックの立上がりエッジMr514で起動イベント信号をサンプルし、そのサイクルの最初の4分の1サイクルで同期信号の着定及びゲート制御を許容する(時間間隔53
    2)。 直交位相クロックの立上がりエッジQr518で全てのACTフリップ・フロップが更新され、優先度エンコーディング及び比較動作によってコンテキスト切替わりの必要性が決定され、もし必要であれば次のコンテキストが選択される。 これらのコンテキスト・コントローラのアクティビティと並列に、プロセッサは、この命令実行サイクル中にコンテキスト切替わりが必要であるか否かに関わり無く、マスター・クロックの立上がりエッジMr517で開始された命令の実行を完了している。 もしプロセッサ・データ・パスが、実行サイクルを通じて安定であることが期待される内蔵レジスタ・ソースからの混成パスを有する場合は、これらのパス上の値はマスター・クロックの立下がりエッジMf519でラッチされ、次のコンテキストのセーブ状態の読み出しが始まることを許容しなければならない(時間間隔54
    0)。 或いは、もしプロセッサ設計者がセーブされたコンテクスト状態を読み出すためにオーバヘッド・サイクルを加えることが好ましい場合は、このラッチングは不要である。 しかし、もしこれらのラッチが消去され、命令を古いコンテキストの最後の命令サイクルと新しいコンテキストの最初の命令サイクルとの間で実行することが出来ない期間になると、殆どの場合1以上のサイクルが挿入されて処理及びリアル・タイム応答が減速する最終効果が生じる。

    【0099】マスター・クロックの立下がりエッジMf
    519で、コンテキスト・コントローラはコンテキスト切替わりが必要であるか否かを判定し、もし必要であればCSW信号522を表明する。 復旧されるべき目標状態は、次のコンテキストのコンテキスト番号をNCTX
    [2:0]信号群530に置くことによって指示される。 これにより、NCTX[2:0]信号群512を使用して次のコンテキストの“セーブ状態”読み出しが開始されて、現在のコンテキストの最後の命令の完了と並列にセーブ・アレイがアドレスされ、現在のコンテキストのコンテキスト番号はCTX[2:0]信号群524
    上に留まる。

    【0100】サイクル500をサイクル502から分割する、マスター・クロックの立上がりエッジMr517
    によって指示されたこのコンテキスト切替わりサイクルの末尾で、この実行サイクル500中に生成された成果を包含する、現在のコンテキストの実行状態が、セーブ・アレイをアドレスするためにCTX[2:0]信号群510を使用して記憶される(時間間隔542)。 このセーブ・アレイ書込み動作(時間間隔542)は、CS
    W信号508が表明されるとき、マスター・クロックの立上がりエッジMr517によって開始される(時間間隔522)。

    【0101】同期SRAMへの書込みの有益な特性により、次のコンテキストの最初の命令は、セーブ・アレイへ書き込れているアドレスもデータも、サイクル500
    を終了するマスター・クロックの立上がりエッジMr5
    17が生起した後はホールドされる必要が無いので、直ぐに実行を開始することが出来る(時間間隔536)。
    適切な実行のため、書込み回復を包含する同期SRAM
    サイクル時間は命令サイクル期間の50%を超えることは許されない。 SRAM書込みを開始する同じマスター・クロックの立上がりエッジMr517の遷移もまた、
    無効化されたCSW信号508及び新コンテクスト番号526に更新されたCTX[2:0]信号群510を有してコンテキスト切替わりを完遂するために使用することが出来る利点が有る。

    【0102】図9は、現在のコンテキストの状態を非同期SRAM又はレジスタ・ファイルに記憶し、次のコンテキストの状態をその非同期SRAM又はレジスタ・ファイルからロードする、本発明によって制御されるコンテキスト切替わりのタイミング図である。 従来、即ち、
    非同期のSRAMでは、書込みアドレス及びデータが書込みサイクルの適切な一部を通して安定であることが必要とされるこのことは書込み許可パルスの後方エッジの前に設定時間を必要とし、時としてこの後方エッジの後に短い保持期間を必要とする。 多くのセミカスタム集積回路技術が、読み出しか書込みの何れかに使用出来る単一のアドレス及びデータ・ポートを具備する非同期SR
    AMを使用するRAMアレイ又はレジスタ・ファイルを供することが出来る。 この容量で動作する別々のSRA
    Mチップ及びレジスタ・ファイル・チップもまた広く利用出来る。

    【0103】このタイプの従来の、単一ポートSRAM
    を使用してセーブ・アレイを実行するために、コンテキスト切替わりのための制御信号タイミング処理は、図9
    に示すように、幾らか多く複雑化する。 一般液的なタイミングは図8と同じであり、同様なエレメントは同一の参照数字を使用して識別される。 主要な相違は、図9の時間522,528,530,534,535,53
    7,540,541,543に列挙するように、コンテキスト・コントローラ514による動作でのNCTX
    [2:0]信号群512の生成、及びCSW信号508
    の表明中及びその直後のデータ・パス516である。 コンテキスト状態のセーブ及び復旧中に実行される命令が無いものと想定すると、オーバヘッド・サイクルの挿入を回避するために書込み回復を包含する命令サイクル期間の25%を超えないサイクル時間を有する非同期SR
    AMを使用することが必要である。 このスピード要件は、同期SRAMを使用するときに同じそのプロセッサ・サイクル率を成就するために必要なスピードの2倍である。

    【0104】コンテキスト切替わりアクティビティは、
    コンテキスト切替わりサイクルの前半(時間間隔53
    2,533,538)中は同一である。 コンテキスト切替わりサイクルのマスター・クロックの立下がりエッジMf519で、CSW信号508が表明され(時間間隔522)、且つ、NCTX[2:0]信号群512が次のコンテキスト番号に設定される(時間間隔534)。
    アドレス情報及びデータ情報は、最後の命令が現在のコンテキストによって実行された結果をセーブ・アレイに書き込む間は安定でなければならない。 従って、マスター・クロックの立下がりエッジMf519から次の直交位相クロックの立下がりエッジQt520までの期間のみが、次のコンテキストに対するセーブ状態の読み出しに利用可能である。 この成果は続いてラッチされ、直交位相クロックの立下がりエッジQt520から次のマスター・クロックの立上がりエッジMr517までの期間中ホールドされることが好ましい。 続いて、これらのラッチされた値はプロセッサの作業レジスタへ転送される利点が有る(時間間隔543)。 直交位相クロックの立下がりエッジQt520で、NCTX[2:0]信号群512の値が現在のコンテキスト番号へ戻り、この命令(サイクル500)の結果を包含する現在のコンテキスト状態がセーブ・アレイに書込みされる(時間間隔54
    1)ことを許容する。 マスター・クロックの立上がりエッジMr517で、NCTX[2:0]信号群512は次のコンテキスト番号(時間間隔530)へ戻り、次のそのコンテキストの最初の命令の実行が始まる(時間間隔537)。

    【0105】同期SRAMの実行と違って、書込み動作はマスター・クロックの立上がりエッジMr517で完遂される。 非同期SRAMの使用は、データ・パスの結果が比較的に初期に安定になり、直交位相クロックの立下がりエッジQt520からマスター・クロックの立上がりエッジMr517までの期間中にセーブ・アレイへの書込みを許容する。 それに反して、同期SRAMでは、データ・パスの結果はマスター・クロックの立上がりエッジMr517の直前までは必要ではなく、より短い命令サイクル及び従ってより速い処理を行う。

    【0106】図10は、初期設定要求ロジック及び待機要求ロジックを包含するコンテキスト・アクティビティ・ビットの管理だけでなく、イベント記録、イベント・
    マスキング及び各起動イベントに対するイベント肯定応答に適切な回路の一実施例の該略図であり、コンテキスト・コントローラ内のイベント記録、イベント・マスキング及びイベント肯定応答の詳細を理解することが好ましい。

    【0107】コンテキスト・コントローラ・イベント論理の“スライス”の普遍化された模式的断篇がそのイベントと関連するACTビット・ロジック及びWAITファンクション・ロジックを包含する単一のイベントに関して与えられる。 この図では、全てのロジック信号が、
    “High”即ち真(論理1)状態に関係付けられていると考えられる。 この模式的断篇はイベント・ロジックの一実施例の例証であるが、本発明の実施を制約することを意図するものではない。

    【0108】外部発生イベント信号500は何れの極性でも表明することが出来、従ってプログラマブル否定ファンクション560を、ソフトウエア信号551の制御の下で、内部使用のためにHigh即ち真信号を確立するために供することが出来る。 この外部発生信号は内蔵クロックと確定されていない位相関係を有するので、その内部使用の前に入力信号をマスター・クロックの立上がりエッジMr517と同期させるシンクロナイザ56
    2が使用される。 多数のソースを、同期外部信号564
    の前方エッジ、内蔵ソース566或いはソフトウエアS
    IGNALファンクション552を包含し、このコンテキスト及びイベントを指示するイベント・フリップ・フロップ570を設定するために使用することが出来る。
    これらのイベント・ソースはORゲート568によって組み合わされ、そのORゲート568の出力はイベント・フリップ・フロップ570がマスター・クロックの立上がりエッジMr517で設定されるようにイネーブルする。

    【0109】イベント・フリップ・フロップ570のD
    入力端は図示されるように論理1に実結線されているので、イベント・フリップ・フロップ570を設定しているイベント信号真の否定はそのイベントを無効にしない。 イベント・フリップ・フロップ570の出力は、もしプロセッサが以下で述べるように例示実施例のSKP
    nのような命令を具備する場合、イベント状態レジスタ94内のビットとして、及び、イベント条件信号グループ596内のテスト可能状態としてイベント・ソフトウエアによって読み出すことが出来る。 イベント・フリップ・フロップ570はORゲート574を通じて適用される、ハードウエア・リセット555か、AND演算される両入力がこのコンテキストが動作している間(信号556)、このイベント番号に対するACK(認識)ファンクション554の実行を組入れているANDゲート572の出力の何れかによってクリアすることが出来る。

    【0110】コンテキストのイベント・マスク・レジスタ94からの、このコンテキスト・イベントに対する適切なビット、即ちイベント・マスク・ビット558はA
    NDゲート580でイベント・フリップ・フロップ57
    0の出力とAND演算され、ORゲート584を介してACTフリップ・フロップ590の入力へ印加される。
    このANDゲート580の出力もまた、以下で更に詳細に説明するように、VECTORファンクションのためにそれらコンテキスト・イベントの優先度エンコーディングを実行するときに使用される。 ANDゲート580
    からのマスクされたイベント信号はORゲート584
    で、待機ロジックの出力ゲートからのANDゲート58
    2を通じた信号を包含する、このコンテキストと関連する他の全てのイベントからのマスクされたイベント信号とOR演算される。

    【0111】ORゲート584の論理真出力状態はAC
    Tフリップ・フロップ590をイネーブルにしてACT
    フリップ・フロップ590が直交位相クロックの立上がりエッジQr518でNOTインバータ586の出力値に設定されることを許容する。 ANDゲート582の出力及びその同じ信号のNOTインバータ586を介した反転とを使用することによって、ACTフリップ・フロップ590のD入力端をイネーブルにすることが出来る。 もし1以上の起動イベントが表明され、且つ、先行する命令サイクル中にWAITファンクションが実行されなかった場合、ACTフリップ・フロップ590は直交位相クロックの立上がりエッジQr518で設定される。 ACTフリップ・フロップ590はまた、INIT
    ファンクション588の実行によって直接設定することが出来、且つ、ハードウエア・リセット信号555によって直接クリアすることが出来る。 ACTフリップ・フロップ590はまたコンテキスト優先度ロジックによって使用され、且つ、NOTインバータ592によって反転されWAITフリップ・フロップ578をクリアする。 もしWAITファンクションが先行する命令サイクル中に実行された場合、ACTフリップ・フロップ59
    0はどれだけの起動イベントが表明されようと表明されまいともNOTインバータ586に介してクリアされる。

    【0112】コンテキストはWAITファンクションの実行とそのWAITファンクションの後の命令の実行との間でプリエンプトすることが出来るので、WAITフリップ・フロップ578が必要とされる。 (この生起の例が図2の53,54,58で示されている。)このコンテキストが動作している間(信号556)にWAIT
    ファンクション557がANDゲート576によってデコードされると、WAITフリップ・フロップ578が動作状態にされマスター・クロックの立上がりエッジM
    r517で設定される。 コンテキストはWAITファンクションを実行するために活性状態でなければならないので、この動作は、真状態にある590の出力がNOT
    インバータ592を介してWAITフリップ・フロップ578のクリア入力を無効化するときから、WAITファンクションの生起を記録する。

    【0113】このコンテキストが動作状態にある(信号556)次の直交位相クロックの立上がりエッジQr5
    18で、ACTフリップ・フロップ590がANDゲート582の出力の表明によりクリアされる。 もしこのコンテキストが、WAITフリップ・フロップ578が設定される、同じ命令サイクル境界(マスター・クロックの立上がりエッジMr517)でプリエンプト又はタイム・スライスされる。 従って、コンテキスト動作信号5
    56は、次の直交位相クロックの立上がりエッジQr5
    18の前に無効化され、且つ、ACTフリップ・フロップ590は設定されて留まる。 このコンテキストが動作状態を再開すると、ACTフリップ・フロップ590が最初の命令サイクルの直交位相クロックの立上がりエッジQr518でクリアされ、コンテキストがこの1個の命令を実行した後、非稼動状態になるようにする。 AC
    Tフリップ・フロップ590の出力の否定により、WA
    ITフリップ・フロップ578がNOTインバータ59
    2を介してクリアされる。

    【0114】図11は、本発明の一実施例による、命令セット中のコンテキスト制御及びコンテキスト間通信に関係する機械命令のフィールド割り付け及びビット割り付けを示す図である。 命令のデコーディング及びフィールド・エンコーディングの細部は本発明とは直接は関係せず、この図は主としてコンテキスト・コントローラによって必要とされる情報を供するオペランド・フィールドを示すために包含されている。

    【0115】コンテキスト・イベント状態レジスタ94
    中のビットのテストはSKPx命令600を使用して最も効果的に達成される。 これらの命令は、8個の関連信号の特定の“条件群”(C群)604と命令語に包含される8ビットマスク値605との間のマスクに関する比較或いはビットに関する比較の下でのテストを実行する。 もしテスト動作603によって特定された状態が真であれば、そのSKPxの後の命令はスキップされる。
    本発明に適切な命令はCグループ01であり、“EVE
    NT”グループ608はイベント・マスクによる影響を受けず、実行状態コンテクストのイベント状態レジスタ94の内容をテストする。

    【0116】VECTOR命令610はSKPx命令と同じ演算符号602からデコードされるが、しかし、その“テスト動作”フィールド612内に特異な値を有する。 VECTOR命令語の他の10ビットはベクトル基準アドレス613であり、その使用は以下に記載される。

    【0117】SIGNAL命令620は前に述べたコンテキスト間ソフトウエア信号通信ファンクションを実行するために使用される。 SIGNAL命令620は特異なサブデコード値623を有する拡張演算符号フィールド622の値に基づくプロセッサ制御命令の1つである。 2個のパラメータ・フィールドが、SIGNAL命令が実行されるときに、コンテキスト・コントローラ内でデコードされる。 特定のイベント番号624は、特定のコンテキスト番号625と関連するイベント間で表明するための特定のイベントを識別する。 全てのイベントがSIGNAL命令620の目標となることが出来るが、しかしこのコンテキスト・コントローラの特例及び関係の有るイベント・ソースの実行細目は、SIGNA
    L命令620が或る状態を表明することを許容するのを困難にする可能性が有る。

    【0118】ACK命令630及びINIT命令640
    はSIGNAL命令620と同様な方法でフォーマット及びデコードされるが、しかし各々は単に1個のパラメータ・フィールドを有する。 ACK命令630は、コンテキストのイベントの認識が単にその同じコンテキスト内でのコード実行によって許容されるので、イベント番号624のみを担持し、その結果、コンテキスト番号パラメータは不必要になる。 INIT命令640は、初期設定ファンクションがコンテキストに割り当てられ、コンテキストと関連するイベントへは割り当てられないので、コンテキスト番号625のみを担持する。

    【0119】STROBE命令650は、32個もの離散的で絶対必要な制御ファンクション653のうちの特定の1つを生成することが出来る。 WAIT命令654
    はコンテキスト・コントローラと関連が有り、実行状態コンテクストのACTビットをクリアし、SETFG命令655は実行状態コンテクストのFGビットを設定し、CLRFG命令657は実行状態コンテクストのF
    Gビットをクリアし、SLEEP命令657はコンテキスト・コントローラが動作を中断するようにし、且つ、
    プロセッサが極めて低電力のスリープ・モードに入ることを許容する。

    【0120】INIT命令640は、初期設定か又はエラー回復の何れかのため、目標コンテキストを既知状態にするために使用される。 INIT命令640の実行によりACTビットとFGビットの双方がその命令で特定されたコンテキスト内で論理的に真であるように設定される。 またINIT命令640の実行により、コンテキストCY(繰上がり)フラグが、コンテキストがハードウエア・リセット(CYが0であるとき)とINIT
    (CYが1であるとき)との間の識別を行うの許容し、
    コンテキストがコンテキスト特定初期設定ベクトルでの実行の開始を強いるように、設定される。

    【0121】図12は本発明の一実施例による、プロセッサで制御記憶域アドレスを生成するために使用されるビットのソースを示す図である。 上述のコンテキスト特定初期設定ベクトルに対する初期設定ベクトル・アドレスは、INIT命令640(図11参照)のコンテキスト番号フィールド625の内容をINIT命令666に対する項に見られるように、オール・ゼロを包含するアドレス・ワードの5から3の各ビット位置に置くことによって形成することが出来る。

    【0122】図13は本発明の一実施例による、制御記憶域内の初期設定ベクトルのデータ構造の例を示す図である。 図示の如く、この実施例は制御記憶域アドレス・
    パターン678が制御記憶域アドレス0x0000で開始する、4ワードが連続する区間に配置された、8個の初期設定ベクトル670−677の組を使用する。 4ワード・ベクトル・ピッチが選ばれた理由は、このプロセッサの長い完全な分岐が3ワードを必要とし、且つ、最後の(コンテキスト7)ベクトル677以外の全てがそのような分岐を必要とする傾向が有るためである。 コンテキスト7に対する分岐の必要が無いことは、コンテキスト7がハードウエア・リセット後に活性状態であるべき単独のコンテキストである理由で有益である。

    【0123】従って、コンテキスト7の初期設定ベクトルのコードは、ハードウエア・リセット後に他のコンテキストを初期設定し、且つ、コンテキスト7に対するI
    NITファンクションを処理するために使用される。 他のプロセッサで使用するためのベクトル・ピッチは実施例に依存する方法で選ぶことが出来る。 また幾つかのプロセッサでは、初期設定ベクトルの内容を、ベクトル・
    アドレスでプログラム実行を開始するよりもむしろ上記ベクトルを介して二次分岐を実行するアドレスとして使用することも望ましい。 図11に示されるVECTOR
    命令610はコンテキスト起動を引き起こすイベントの優先度に基づくデコーディングに有益である。

    【0124】図14は本発明の一実施例による、プロセッサで特有のコンテキスト起動ビットを優先順位付け及びデコードするために使用されるベクトル命令による目標アドレス生成を叙述する図である。 先に述べたように、VECTOR命令610はコンテキスト起動を引き起こすイベントの優先度に基づくデコーディングに有益である。 この命令は実行されると制御記憶域に配置されているベクトル・テーブル690の中の8個のハンドラー680−687の組のうちの1つへ分岐する。

    【0125】ベクトル・テーブル基準アドレス613はVECTOR命令語610の10個の最低順位ビットで特定される。 特定のベクトルはコンテキスト・イベント・マスク・レジスタ90とAND演算されたコンテキスト・イベント状態レジスタ94を優先度エンコーディングすることによって選択される。 続いて、図13に示されるベクトル・アドレス678のビット位置3乃至0における一組の0と共にその結果得られたイベント番号6
    94をビット位置6乃至4として使用して、非マスク状態イベントを表明された最高優先度(最小番号)に割り当てられた8ワード・ハンドラー位置680−687の初めで実行を継続するようにする。 図11に示されるV
    ECTOR命令610は、通常、WAIT命令654の後の再起動後、間もなく使用されるので、少なくとも1
    個の非マスク状態イベント・フリップ・フロップが真(1)に成ることを期待する理由が有る。 もしそうでない場合は、コンテキストが活性状態に成っていなかったものと思われる。 しかし、設定されるイベント・ビットが無いケースには、ベクトルをBase+64ワード6
    88に包含することが可能である。

    【0126】現在の実施例の命令セットの場合は、この8ワードのベクトル・ピッチにより多くのハンドラーが、そのイベントを処理している間分岐を必要としないベクトル・テーブル内で、完全に合致することが許容される。 このタイプのベクトルデコードファンクションを供する実施例の場合は、一般的に必要とされるより遥かに長いハンドラー領域により、ベクトル・ピッチを、そのベクトル・テーブル中への全ハンドラー・セットの合致と相当量の使用されていない制御記憶域の退去との間に調和を成就するように選ぶことが出来る。

    【0127】本発明はプロセッサ内でのマルチタスキングを管理するためのコンテキスト・コントローラ及びこのコンテキスト・コントローラの動作方法を供することが明らかである。 一実施例ではコンテキスト・コントローラは、プロセッサ資源をフォアグラウンド・タスクとバックグラウンド・タスクにそれぞれ対応する起動コンテキストに割り当てるフォアグラウンド・タスク・コントローラおよびバックグラウンド・タスク・コントローラと、前記フォアグラウンド・タスク・コントローラおよびバックグラウンド・タスク・コントローラに接続され、前記のコンテキストのすべてが非稼働状態にあるときに、前記プロセッサをアイドル状態にして、パワーセービングモードにするモード切替回路とを有する。

    【0128】

    【発明の効果】以上説明したように、本発明は、プロセッサに於けるマルチタスキングを管理するためのコンテキスト・コントローラ及び該コンテキスト・コントローラを動作するための方法を提供することができる。

    【図面の簡単な説明】

    【図1】本発明の一実施例の動作を個々のコンテキストの観点から示す状態遷移図である。

    【図2】5個のフォアグラウンド・コンテクストと3個のバックグラウンド・コンテキストを有して動作するプロセッサにおける実行可能処理フロー、優先実行及びコンテキスト間通信を例示する図である。

    【図3】本発明の一実施例を使用するプロセッサで実行するソフトウエアへのアクセスが可能なコンテキスト毎の制御レジスタ及び状態レジスタの例を示す図である。

    【図4】次の図5に示される、本発明のコンテキスト・
    コントローラの一実施例を組入れている代表的なプロセッサ即ち入出力制御装置のシステムで扱うテキスト・シンボル例を示す図ある。

    【図5】本発明のコンテキスト・コントローラの一実施例を組入れている代表的なプロセッサ即ち入出力制御装置のシステム図である。

    【図6】図5に示されるコンテキスト・コントローラの内部構成を示す相互作用図である。

    【図7】図6に示されるイベント同期処理のプロセス図である。

    【図8】本発明によって制御されて、現在のコンテキストの状態を同期(自立タイミング被調整)SRAM構成又は同期(自立タイミング被調整)レジスタ構成に記憶し、その同期(自立タイミング被調整)SRAM構成又はレジスタ構成から次のコンテキストの状態をロードするコンテキスト切替わりに対するタイミング図である。

    【図9】本発明によって制御されて、現在のコンテキストの状態を非同期SRAMファイル又は非同期レジスタ・ファイルに記憶し、その非同期SRAMファイル又はレジスタ・ファイルから次のコンテキストの状態をロードするコンテキスト切替わりに対するタイミング図である。

    【図10】初期設定要求ロジック及び待機要求ロジックを包含するコンテキスト・アクティビティ・ビットを管理するのみでなく、各起動イベント に対するイベント記録、イベント・マスキング及びイベント肯定応答を実行するのに適切な回路の一実施例の該略図である。

    【図11】本発明の一実施例による、命令セット中のコンテキスト制御及びコンテキスト間通信に関係する機械命令のフィールド割り付け及びビット割り付けを示す図である。

    【図12】本発明の一実施例によるプロセッサで制御記憶域アドレスを生成するために使用されるビット・ソースを示す図である。

    【図13】本発明の一実施例による、制御記憶域内の初期設定ベクトルのデータ構造の例を示す図である。

    【図14】本発明の一実施例による、プロセッサで特有のコンテキスト起動ビットを優先順位付けし且つデコードするために使用されるベクトル命令によって目標アドレス生成を記述する図である。

    【図15】図6に示されるイベント優先順位付け処理の一部のプロセス(図16参照)で扱うテキスト・シンボル例を示す図ある。

    【図16】図6に示されるイベント優先順位付け処理の一部を行うプロセス図である。

    【図17】次の図18との組で図6に示されるイベント優先順位付け処理の一部を行うプロセス図である。

    【図18】図17との組で図6に示されるイベント優先順位付け処理の一部を行うプロセス図である。

    【図19】図6に示されるイベント優先順位付け処理の一部を行うプロセス図である。

    【図20】次の図21との組で図6に示されるイベント優先順位付け処理の一部を行うプロセス図である。

    【図21】図20との組で図6に示されるイベント優先順位付け処理の一部を行うプロセス図である。

    【符号の説明】

    106 クロック発生器 108 シーケンサ 110 コンテキスト・コントローラ 112 命令デコーダ 114 インタフェース資源マネージャ

    ───────────────────────────────────────────────────── フロントページの続き (71)出願人 596077259 600 Mountain Avenue, Murray Hill, New Je rsey 07974−0636U. S. A. (72)発明者 マイケル エー. フィスチャー アメリカ合衆国,78230−5412 テキサス, サン アントニオ,ハンタース ホーン ストリート 2910 (72)発明者 ウェスレイ ディー. ハーデル アメリカ合衆国,78249−2605 テキサス, サン アントニオ,スプリング ドロップ ス ストリート 7226

    高效检索全球专利

    专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

    我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

    申请试用

    分析报告

    专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

    申请试用

    QQ群二维码
    意见反馈