JPH11296388A - プロセッサでマルチタスキングを管理するコンテキスト・コントロ―ラ - Google Patents

プロセッサでマルチタスキングを管理するコンテキスト・コントロ―ラ

Info

Publication number
JPH11296388A
JPH11296388A JP11064129A JP6412999A JPH11296388A JP H11296388 A JPH11296388 A JP H11296388A JP 11064129 A JP11064129 A JP 11064129A JP 6412999 A JP6412999 A JP 6412999A JP H11296388 A JPH11296388 A JP H11296388A
Authority
JP
Japan
Prior art keywords
context
controller
foreground
task
processor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
JP11064129A
Other languages
English (en)
Inventor
Wilhelmus J Diepstraten
ジョセフズ ディープストラテン ウィルヘルムズ
Michael A Fischer
エー.フィスチャー マイケル
Wesley D Hardell
ディー.ハーデル ウェスレイ
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.)
Nokia of America Corp
Original Assignee
Lucent Technologies Inc
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
Priority claimed from US09/213,102 external-priority patent/US6260150B1/en
Application filed by Lucent Technologies Inc filed Critical Lucent Technologies Inc
Publication of JPH11296388A publication Critical patent/JPH11296388A/ja
Abandoned legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context

Abstract

(57)【要約】 【課題】 プロセッサ中でマルチタスキングを管理する
ためのコンテキスト・コントローラ及びその動作方法を
提供する。 【解決手段】 本発明のプロセッサにおけるマルチタス
キングを管理するコンテキスト・コントローラは、プロ
セッサ資源をフォアグラウンド・タスクとバックグラウ
ンド・タスクにそれぞれ対応する起動コンテキストに割
り当てるフォアグラウンド・タスク・コントローラおよ
びバックグラウンド・タスク・コントローラと、前記フ
ォアグラウンド・タスク・コントローラおよびバックグ
ラウンド・タスク・コントローラに接続され、前記のコ
ンテキストのすべてが非稼働状態にあるときに、前記プ
ロセッサをアイドル状態にして、パワーセービングモー
ドにするモード切替回路とを有することを特徴とする。

Description

【発明の詳細な説明】
【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

Claims (22)

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

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US7738498P 1998-03-10 1998-03-10
US09/213,102 US6260150B1 (en) 1998-03-10 1998-12-17 Foreground and background context controller setting processor to power saving mode when all contexts are inactive
US09/213102 1998-12-17
US60/077384 1998-12-17

Publications (1)

Publication Number Publication Date
JPH11296388A true JPH11296388A (ja) 1999-10-29

Family

ID=26759208

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11064129A Abandoned JPH11296388A (ja) 1998-03-10 1999-03-10 プロセッサでマルチタスキングを管理するコンテキスト・コントロ―ラ

Country Status (3)

Country Link
EP (1) EP0942368A2 (ja)
JP (1) JPH11296388A (ja)
CN (1) CN1233015A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007520777A (ja) * 2003-07-02 2007-07-26 シンビアン ソフトウェア リミテッド リソースを節約するマルチタスク計算装置を可能にする方法
KR101128251B1 (ko) * 2004-10-11 2012-03-26 엘지전자 주식회사 실행 프로그램의 장치별 절전모드 제어 장치 및 방법
KR20160145783A (ko) * 2014-06-24 2016-12-20 인텔 코포레이션 가상 머신 전력 관리

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6978457B1 (en) 2000-01-31 2005-12-20 Agilent Technologies, Inc. Method and system increasing performance substituting finite state machine control with hardware-implemented data structure manipulation
JP2001256067A (ja) * 2000-03-08 2001-09-21 Mitsubishi Electric Corp プロセッサ省電力制御方法、記憶媒体、およびプロセッサ省電力制御装置
WO2004006097A2 (en) * 2002-07-03 2004-01-15 Koninklijke Philips Electronics N.V. Multi-processor computer system
KR100535966B1 (ko) * 2003-08-08 2005-12-09 엘지전자 주식회사 3차원 엔진을 탑재한 이동통신 단말기의 소비전력 절감 방법
WO2007034265A1 (en) * 2005-09-21 2007-03-29 Freescale Semiconductor, Inc. System and method for storing state information
US9063775B2 (en) 2011-09-01 2015-06-23 Microsoft Technology Licensing, Llc Event aggregation for background work execution
US9032413B2 (en) 2011-09-01 2015-05-12 Microsoft Technology Licensing, Llc Decoupling background work and foreground work
US9164803B2 (en) 2012-01-20 2015-10-20 Microsoft Technology Licensing, Llc Background task resource control
US9489236B2 (en) 2012-10-31 2016-11-08 Microsoft Technology Licensing, Llc Application prioritization

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007520777A (ja) * 2003-07-02 2007-07-26 シンビアン ソフトウェア リミテッド リソースを節約するマルチタスク計算装置を可能にする方法
KR101128251B1 (ko) * 2004-10-11 2012-03-26 엘지전자 주식회사 실행 프로그램의 장치별 절전모드 제어 장치 및 방법
KR20160145783A (ko) * 2014-06-24 2016-12-20 인텔 코포레이션 가상 머신 전력 관리

Also Published As

Publication number Publication date
EP0942368A2 (en) 1999-09-15
CN1233015A (zh) 1999-10-27

Similar Documents

Publication Publication Date Title
JPH11296389A (ja) プロセッサでマルチタスキングを管理するコンテキスト・コントロ―ラ
JPH11296386A (ja) プロセッサでマルチタスキングを管理するコンテキスト・コントロ―ラ
US6260150B1 (en) Foreground and background context controller setting processor to power saving mode when all contexts are inactive
US6243736B1 (en) Context controller having status-based background functional task resource allocation capability and processor employing the same
US20170329629A1 (en) System for selecting a task to be executed according to an output from a task control circuit
US8607235B2 (en) Mechanism to schedule threads on OS-sequestered sequencers without operating system intervention
US7925869B2 (en) Instruction-level multithreading according to a predetermined fixed schedule in an embedded processor using zero-time context switching
US20040172631A1 (en) Concurrent-multitasking processor
JP4127848B2 (ja) タスク処理装置
US5440717A (en) Computer pipeline including dual-ported, content-addressable writebuffer
US5557764A (en) Interrupt vector method and apparatus
JPH11296388A (ja) プロセッサでマルチタスキングを管理するコンテキスト・コントロ―ラ
JPH0543151B2 (ja)
EP1760580B1 (en) Processing operation information transfer control system and method
US20160224485A1 (en) Processor model using a single large linear registers, with new interfacing signals supporting fifo-base i/o ports, and interrupt-driven burst transfers eliminating dma, bridges, and external i/o bus
US7444641B1 (en) Context controller having context-specific event selection mechanism and processor employing the same
JPH11296385A (ja) プロセッサでマルチタスキングを管理するコンテキスト・コントロ―ラ
JPH11296387A (ja) プロセッサでマルチタスキングを管理するコンテキスト・コントロ―ラ
JPH11327922A (ja) プロセッサでマルチタスキングを管理するコンテキスト・コントロ―ラ
US6708259B1 (en) Programmable wake up of memory transfer controllers in a memory transfer engine
WO2002046887A2 (en) Concurrent-multitasking processor
CN110221861B (zh) 一种cpu寄存器体系结构及其中断处理方法
EP4002103A1 (en) User timer directly programmed by application
JP2008269597A (ja) タスク処理装置
EP0075632A1 (en) Microprogrammed digital data processing system employing tasking at a microinstruction level

Legal Events

Date Code Title Description
A762 Written abandonment of application

Free format text: JAPANESE INTERMEDIATE CODE: A762

Effective date: 20040531