【発明の詳細な説明】
膨潤j」いL夫噂しくす」鵠んへ7に及95−仁2…二り乙で≦しり木発明番、
1マイクロコンビュータを含む]ンビュータに関するbのて・あり、とくに時間
に依存するプロセスを実行できるマイクロコンピュータに関Jるものぐある。
発明の豆J
われわれのEl −oツバ持直明細書0110642には、プロセス(ブがそれ
の処理時間を複数の同時プロセスの間で共用できるようにするスケジューリング
手段を含むマイクロ」ンビコータが記述されCいる。実行を持っているスケジュ
ールされたプロセスのリンクされたリストを形成できる。現在実行中のプロセス
のスケジュールを解除でき、要求があったI、1にあるスケジュールされたリス
トに加えることによりプロセスをスケジュールできる。これは、たとえば、メツ
セージ伝送が行われる時に2つのプロセスがプログラム・シーケンスの対応する
段階であることをめられる場合に、イれら2つのプロセスの間でメツセージの伝
送を行う際に生ずることがある。しかし、その特許明細書には、あるプロセスの
スケジューリングをそのプロセスに対して指定された時間に従って行うことがで
きるような、時間に依存づるプロセスの使用については記述していない。
Lt立」L刀
本発明の目的は、時間に依存するプロセスの実行に使用す゛る改良したマイクロ
コンピュータを得ることである。
本発明の別の目的は、プロセッサ゛がそれの処理時間を複数のプロセスの間で共
用するように複数の同時プロセスをスケジューリングする手段と、1つまたはそ
れ以上のプロセスのための時間依存パラメータに応答する手段とをイ’T!jる
改良したマイクロコンビコータを11することである。
マイクロコンピュータという用語は、集積回路を全体として基にした小型コンビ
コータに関するものであるが、コンピュータがどれだけ小型であるかということ
についてのυ1約を課すものではない。
発明の概費
本発明は、メ七りど、プログラムに従って複数の同時プロヒスを実行するように
構成されたプロセスυとを備え、そのプログラムはプロセッサにより逐次実行す
るだめの複数の命令より成り、前記プログラムは(1)複数のレジスタおよびイ
れらのレジスタとの間でデータの転送を行うために用いるデータ転送手段と、(
2)各命令を受け、プロセッサレジスタの1つにその命令に関連する値をロード
する手段と、(3)前記データ転送手段と前記レジスタを受けた命令に応じて制
御し、その命令に従ってプロセッサを動作させる制御悉とを備えるマイク
【]コ
ンピュータにおいて、
(a) あるプロセスがプロセッサにより実行されるようになった時にそれを指
示する手段を含み、複数の同時プロセスの間のプロヒツリ−の処理時間を共用す
るスケジューリング手段と、
(b)(1)1つまたはそれ以上のプロセスを識別して、それらのプロセスがプ
ロセッサにより実行されるようになるまでに所定の時間持つプロセスの少くとも
1つのタイマ収1 (timer correctton of proces
s)を形成する手段と、
(2)前記タイマ収集において各プロセスが実行できるようになるスケジューリ
ング時刻を指示づる手段と、
(3) 前記タイマ収集に1つまたはそれ以上の別のプロセスを加える手段と、
(4)前記タイマ収集からプロヒスを除去する手段と、
を含むプロセス時間制aXと、
を含むマイクロコンピュータを提供するものである。
前記タイマ収集中のプロヒスまたは各プロセスのスケジューリング時間に依存し
て時間順序づけられたシーケンスを形成するために、前記タイマ収集中のプロセ
スに指令するための手段をなるべく構成する。
収集中に最も早いスケジューリング時間を有して、収集中に最初のプロセスを形
成する前記タイマ収集中のプロセスを指示するために、アドレス可能なメモリ場
所を備えることができる手段をなるべく設ける。
lyJ記メセメモリプロセスに関連する変数を記録するための場所を含む複数の
アドレス可能な場所を有する作業域をその各プロセスへなるべく与えるようにし
、眞記ブDセッサレジスタの1つは、現在のブ[Jビスの作業域のアドレスを識
別する作業域ポインタ値を保持するように構成される。
各プロセスの作業域は、タイマ収集中の以模のプロセスのためのポインタ値を保
持するリンク手段をなるべく含むようにする。そのリンク手段は、あるプロセス
がタイマ収集中にある時に、(の収集中の次のプロセスを指示するために用いら
れ、それによりプロセスのリンクされたタイマリストを指示する。
そのプロセスがそのタイマリスl−上の最後のスケジ」−リング時間を有するプ
ロセスであることを指示づるために、特殊な値を保持するために各プロセス作′
5A域の前記リンク手段をなるべく構成する。
各プロセスのスケジューリング時間を指示するために、そのプロセスの作業域は
アドレス可能な場所をなるべく含むようにブる。
ある好適な実施例においては、このマイク【]二】ンビュータは、複数の優先権
のうちの1つを各プロセスに割当てる手段を含み、前記時間制御器は、前記タイ
マ収集を2つ以上形成する手段を含み、各タイマ収集は、別のタイマ収集中のブ
[1ヒスの共通の優先権とは異なる共通の優先権のプロセスを有する。
スケジューリング手段は、
(1)プロセッサにより実行されている現在のプロセスを指示する手段と、
(2) プロセッサによる実行を待っているスケジュールされた収集を形成する
1つまたはそれ以上のプロセスを識別する手段と、
(3)前記スケジュールされた収集へ1つまたはそれ以上の別のプロセスを加え
る手段と、
(4)プロセッサにより実行すべき前記スケジュールされた収集中の次のプロセ
スを指示する次のプロセス指示手段と、
をなるべく含むようにし、プロセッサによる前記現在のプロセスの実行を終らせ
るために、選択された命令と、そのプロセスを現在のブ1コセスにするために前
記法のブロヒツリ指示手段とに応答するようにプロセッサ°は構成され、それに
より、そのプロセッサはそれの処理時開を複数の同時プロセスの間で共用させる
ために動作させられる。
スケジュールされる収集はなるべく、結合されたリストであるようにもする。
2つ以上のスケジュールされた収集におけるブ[1セスの優先権とは異なる共通
優先様のプロセスをイ1する。
本発明は、相互に接続された複数の前記マイクロコンピュータの回路網も含む。
各マイクロコンピュータは通信チ1/ネルを有し、それらの通信チャネルには1
つまたはそれ以上の通信リンクが設けられる。ぞれらの通信リンクは別の装置の
類似のリンクへ専用に接続され、それにより、種々のマイクロコンピュータにお
ける同時プat’スの間で同期してメツセージ伝送を行えるようにする。
複数の別の時間関連コンポーネントでプロセスを実行するようにマイクロコンピ
ュータをなるべく構成する。そのマイクロコンピュータには、各コンポーネント
に関連する時間を指示覆る手段と、各コンポーネントに関連する時間をテストす
る手段と、あるコンポーネントに関連する最も早い時刻がまだきていないかどう
かを決定する手段とが設けられる。
あるプロセスを実行づ“る時間の長さを指定する手段と、その時間長に応答して
、その時間が経過した後で現在のプロセスの実行を停止す゛ること、およびそれ
をあるスケジュールされた収集に加えることによりそのプロセスを再スケジュー
ルJることをプロセッサに行わせる手段とをなるべく設ける。
園j目と直重コロl用
以下、図面を参照して本発明を実施例について詳しく説明する。
第1図は本発明を具体化するマイクロコンピュータの主な特徴を示すブロック図
、第2図はマイクロコンピュータの一部のブロック図で、この図は便宜上、第2
A、2B図に示される2つの部分に分けられ、この図は中央処理装置レジスタと
データ経路および口術論理装置と、中央処理装置とメモリおよび通信リンクとの
間のインターフェイスをとくに示し、第3図は第2B図の部分を形成するタイマ
論理回路を示し、第4図は、マイクロコンピュータにより実行づるだめの高慢失
格ブ+−】1スのスケジ、1−ルされたリストの加工物とブ目1!ツリレジスタ
の間の関係を示(ハ第5図は第4図に類似するが、11優先権ブ[]セスが実行
されている間の低優先権ブ[目!スのスケジ]−ルされたリストを小し、第6図
は再スケジー」−−−ルされる前の所定の時刻を持つ(いる高優先権プロヒスの
タイマリストを示し、第8図は本発明に従って通信4゛るマイク
【」−1ンビJ
−夕の回路網を示し、この回路網のマイクロコンピュータの語長は異なり、第9
A −9D図は「タイマ人力J f!lJ作を実行りるプロレスのための一連
のオペ1ノーシ]ンを示し、第10A〜10 E図はプロセスをり、インリスl
−に挿入するl、:めのシーケンスを示し、第11八へ・110図は時間選択(
TimeΔ1ternatiVe )プロレスのための一連のA−ベレーシ1ン
を示し、とくにそのプロレスが代りの時間のうちのはやい方をどのようにして決
定するかを示し、第12A〜12C図はいくつかの代りの時間(そのうちの1つ
が既に到達している)の1つの間を選択するプロセスによる一連のオペ1ノージ
ヨンをボし、第14Δ−・141〕図はメツセージチャネルの入力の代りのもの
、またはある特定の時間の発生の間で選択するプロセスのための一連のオペレー
ジコンを示し、そのメツセージチャネルは、プロセスが選択を開始した時に通信
を行えるようになっており、第15A〜15F図はメツセージチャネルを通じて
入力の代りのもの、4または、チャネルがメツセージを入力するようになってお
らず1.かつプロセスが代りのものの1つを選択しようと試みている時に発Ij
、、される時間を4j′シないようなある指定された時間の発生を選択するプロ
レスのための一連の゛イベレーこの例で説明するマイク0]ンビュータは、ブo
tツjlと、RA Mの(序様のメtりと、外部通信を行えるようにケるリン
クとを1iL)、1枚のシリコンブーツブで構成された集積回路14置を含む1
、このマイクロコンビ1−・りの主な1z素が第1図に、p−ti戸相補MO3
技術を用いて1枚のシリ二]ンブツブ11上に示され−(いる。プロセスの実行
の時間υ1@を行えるようにする!こめに、中央処理装置(CP LJ ’)1
2にタイマ9が設けられる。中央処理装置はある読出し吉川メtす(ROM)1
3t1@む。この読出し専用719番、tメモリインター・フェイス14へ結合
される。このメ〔リインターフェイスはインターフェイス制御ロジック15によ
り制御される。(1::PU12GiR術論理装置(Δl−LJ )と、レジス
タデータ経路とを含む。それらは第2図に−・層詳−しく示されている。CPU
12とメtリインターフェイス14はバス16へ接続される。このバスはブツブ
11上の要素の相り、接続を行う。(ノービス装置17に複数の人力ビン18が
設けられる。このマイク0コンピユータにはランダム・アクセス・メ〔す(RA
M)19とROM20が設けられる。外部メモリなしにブロセッリ゛12が動作
できるように、チップ上のメモリの容けは1にバイト以トではない。チップ上の
メモリはなるべく少くとも4にバイトにする。外部メモリ・インターフェイス2
3が設けられる。その外部メモリインターフェイスは、希望により設けられる外
部メモリへ接続するために、複数のビン24へ接続される。ネットワークを構成
りるために、このマイクロコンピュータを他のコンビ〕−タヘリンクさせること
ができるようにするために、人力ビン26と出力ビン27を有り−る段数のiv
l IIQリンク25が設けられる。第8図に示すように、1つの直列リンクの
入力ビンと出力ピンは、それぞれ自身のlit線非線用共用向接続により、別の
マイクロコンピュータの直り11リンクの対応する入力ビンと出力ピンへ接続で
きる。各直列リンクは、プロセス・スケジューリング・ロジックをaする同+1
11論理装置10へ接続される。
この実施例は、われわれの未決のPCT特;1出1mPCTGB8410037
9およびヨーロッパ特許出願順84307586.2に記述されているマイクロ
コンピュータを発展さUたものである。説明の不必要t【反復を避けるために、
そのマイクロコンピュータの構成と動作の十分に詳しいことは以下に述べないが
、それらの特許出願におりる説明を9化のためにここに含ませる。
この実施例はTransputcr (インモス・インターノ゛ショプル(lN
HO3International ) plcの商標)マイク0コンピユータ
を改良したものを提供するしのである。このマイクロコンピュータは、実行を行
えるまで指定された時間持っているプロセスのタイマ・データとタイマ・リスト
に依存してプロセスを実行できるように、タイマ制til+を行うものである。
このマイクロコンピュータの全体の構成は、前記特許出願において記述されでい
るマイクロコンピュータの全体の構成に全体として類似する。以下の説明におい
ては、前記特許出願における実施例に対応する部分には類似の名称が与えられる
。メモリは、アドレス可能な場汚を有1゛る複数のプロセス作業域を設ける。そ
れらのアドレス可能な場所はポインタにより指示できる。メツセージ通信はチャ
ネルを介して行うことができる。それらのチャネルは、同じマイクロコンピュー
タにおけるプロセス闇通信の場合には、アドレス可能なメモリ場所を含むことか
ぐきる。異なるマイクロコンピュータの間のプロセス間通信を行うために、直列
リンクに入力チャネルと出力チャネルが設けられる。
それらのチャネルは、メしすに設けられている場所をアドレスするのと類似のや
り方でアドレスリ゛ることもできる。
」−記の改良を実現1゛るために、マイクロコンピュータの構造および動作を種
々変更する必要があり、以下の説明は、それらの改良を行うために変更が含まれ
ているような面について向けられる。
前記特許出願の例におりるように、説明されている例の特定の;h長は16ビツ
トであるが、8,16.24.32のような語長またはその伯の語長を使用でき
ることがわかるであろう。史に、この場合においては、異なる語長のマイク1コ
コンピユータの独立している語長とは無関係にそれらのマイクロコンピュータが
互いに通信できるように、第8図に承りように!1?、なる語長のマイク[]コ
ンピュータを同じネットワーク中に接続できる。
各ポインタは中−の語で、2の補数の符号付き値として処理される。このことは
、ポインタ中の最上位のビットが1であると、その最上位のビットは負として取
扱われ、残りの全てのビットが正の数を表すことを意味する。最上位のビットが
Oであると、ポインタ中の全てのビットは正の値を表すものとしてとられる。こ
れにより、標準比較関数が数値に対して用いられると同様なやり方で、標準比較
関数をポインタ値に対して使用できるようにされる。
ある特殊イ【動作がめられていることを指示するためにある値が留保されるから
、それらの値はポインタとして決しで使用されない。
以下の説明においては、それらの値およびその他の鎖を次のように表すために名
前が使用される:HostNcg 最も負の値
(H8Bが1、他のすべてのビットは0)HO3tPO3最も正のM+
(H8Bが01他のすべてのビットは1)Hach i neTRII[I
HacbineFALSE 0
NOtPrOCO3S、l] MO3tN(!0[nabling、D HO3
jNOg+ 1WaitinLpHO3tNelJ + 2ROadV、I)
hostNeg + 3TimeSct、p HostNeg + 1Time
NotSet、p HostNeg + 2filIHostHeg+ 1とH
ostNeg + 2の二重の使用からあいまいさが起らないように、Vime
Set、pとT imeNotseL、 +1に対する特殊な値はfnabli
nす、pまたは賛aiting、pと同じ場所には決して使用されない。
上記特許出願の例にお番」るように、ローカル変数と、ブ[]セスにより取扱わ
れる一時的な値を保1存するために用いられるメモリ中の語はベクトルより成る
作業域を各ブo tスは有ゴる。プロセス作業域のための設定された場所を示す
ために作業域ポインタWPTRが用いられる。各プロレスは[プロセス記述子]
により識別できる。その10セス記迷子の最下位ビットはそのプロセスの優先権
を示し、上位15ビツトはプロセス作業域を識別するメ(す中の語を示す。この
例においては、マイク[1コンピユータは2つの可能な優先権のうらの1つを各
プロセスに割当てる。高優先権のプロセスには名称pri−Qが与えられ、低優
先権のプロセスにG3L名称pri=1が与えられる。したがって、各プロセス
記述子は、作業域ポインタW 1〕T Rとプロセス優先権Priの1゛ヒツト
ワイズ(bitwisc)ORJをとることにより形成される1つの詔を備える
ことがわかる。
同時に、プロセス記述子とNo−r 1のrビットワイズANDJをとることに
より、作業域ポインタWPTRをプロセス記述子から得ることができる。プロセ
ス記述子と1の[ビットワイズANDJをとることによりプロセスの侵/l−格
を)1することがぐきる。
c p uデータ経路およびレジスタ
中央処理v装置12およびそれの動作は、第2図を参照することにより一層良く
理解されるぐあろう。便宜−し、第2図を第2A図と第2B図に分けたが、レジ
スタセットとデータ経路を形成するために、第2A図と第2B図の線図を一緒に
結合できることを理解すべきである。
CPU12は1′X術論理装置(△LU)30と複数のデータ・レジスタを含む
。それらのレジスタXバスと、Yバスど、2バスおよび双り向データ・バスへ接
続される。それらのレジスタの動作と、バスへの相互接続は、32に線図的に表
されでいる複数のスイッチにより制御される。それらのスイッチ32は、ROM
13に含まれているマイクロ命令プログラムからとり出される信号により制御さ
れる。
メ[リインターフェイス14とデータ・バス31へ向かう一方向アドレス経路3
3を介してCPtJとメモリの間の通信が行われる。
上記特許出願におけるように、各命令は8ビツトで構成される。そのうちの4ビ
ツトは命令のめられている関数を表し、4ピッ1−がデータのために割当てられ
る。ブL1セスのためのプログラム・シーケンスから得た各命令は命令バッファ
34へ与えられ、その命令は復号器35により復号される。この復号器の出力は
条件マルチプレクサ136を介してマイクロ命令レジスタ37へ与えられる。こ
のマイクロ命令レジスタはマイクロ命令ROM13をアドレッシングするために
用いられる。命令バッフ?34と、復号器35と、条件マルチプレクサ36と、
M I R37と、マイクロ命令ROM13と、スイップ32との動作は全体と
して上記特許出願J3よびヨーロッパ特許明m潟0110642に記述されてい
るようなものである。
この実施例は2組のプロセス、すなわち、優先権0を有するプロセスおよび優先
権1を有するプロセス、を処理するように構成されているから、2つのレジスタ
・バンクが設けられる。レジスタ・バンク38が優先権1ブf]セスのために設
けられ、類似のレジスタ・バンク39がn優先権Oプロセスのために設けられる
。両方のレジスタ・バンクは類似のレジスタセットを右し、それらのレジスタセ
ットはX、Y、ZバスJ3よびデータ・バスへ同様に接続される。的中にするた
めに、レジスタおよびそれらのレジスタの接続はレジスタ・バンク38について
3Tシク示しているだ【ノである。特定の優先権を割当てられている2つのレジ
スタ・バンクに加えて、CPtJは定数ボックス4oど、レジスタ・バンク選択
器41と、第2A、2B図に示されているいくつかの他のレジスタを含む。それ
らの他のレジスタは優先4IOプロヒスおよび優先権1プロセスの両方に共通で
ある。それらのレジスタは次の通りである:略 号 し ジ ス タ
両優先プロヒスにJ゛
HA D D R4!1要なメtリアドレスを有づるメモリアドレスレジスタ4
2
0^TAOUT 9−全バス31上のメモリにテ゛−夕を与えるレジスタ43゜
1B メモリから順に命令を取込む命令ノ\ツファ34゜
rEHP R[G 一時レジスタ44゜PROCPTn 81−G プ[+ 1
:’スポインタを保¥jするレジスタ45(優先匪の表示はなし)。
P[tOC[1rSCR[G プロセス闇述子を右するレジスタ46PRfl’
[、AG 現在実行中のプロヒスの優先度がOか1かを承り1ヒツトのレジスタ
、即ち
フラッグ47゜ブ[1セツサがプロt′!スを実行していなければ、1にセラ1
−される。
PROCPRIFLΔG ブOt!スの優先tqを示11ビットのレジスタ、叩
らフラッグ48゜
TIME 5LICE REG 現在のブ[]セスが一時的に停止するべき時間
を保持しているレジスタ80゜
CLOCK 11[G 現在時刻を表承り−るレジスタ81゜バンク38内のw
!l−1α1のレジスタTREG 一時レジスタ49゜
IPTRREG レジスタ51によって示される任意のプロセスの命令ポインタ
(IPTR)を保持するレジスタ50゜
WPrRR[G 現在のプロセス、あるいは割込みされたブ1]ヒスの作業域ポ
インタ(WPrl+) 。
BPTI REG 実行り機中の優先権1のプロセスのリス1〜を最後のブE]
セスの作業域ポインタを保持ザ−るレジスタ52゜
FPrll RIG 実行待機中の優先権1のブ[]t?スのリストの最初のプ
ロセスの作業域ポイン
タを保持するレジスタ53゜
AREG AL1130のためにオペランドを保持し、レジスタ55.5’6と
ともにスタックどして設けられた第1のレジスタ54゜
anta スタックを構成する第2のレジスタ55゜CREG スタックを構成
づ−る第3のレジスタ56゜0REG 命令バッフi’34内の命令に基づいて
、データを取込み、一時レジスタどして
用いられるオペランドレジスタ51゜
5NPl’LAG 1にセットされると、現在の命令の終了時に現在のプロセス
がデスケジヱー
ルされるべきであることを示す1ビツ
トのレジスタ、即ちフラッグ58゜
C0PYFLAG 1にセットされると、プロセスが1ブロツクのデータをメモ
リに、あるいは
メモリからコピー中であることを示す
1ビツトのレジスタ、即らフラッグ59゜INS[R■[LA′G プロセッサ
がタイマリストにプロセスを挿入しているときにセットされる1
ビツトのレジスタ、即らフラッグ82゜D t: t [T E F LΔG
プロセッサがタイマリストからプロセスを消去しているときに1にセラ1−され
る1ビツトのレジスタ、即ちフラン
グ83.。
VへIIDTIH[Fl−八G 特定の優先度のタイマリスト、[にプロセスが
存在づれば1にセラj−される1ビツトのレジスタ、即ちフラッグ84゜N[X
TrlH[I’LAG 特定の優先11!のタイマリス1−上の1d初のブ【]
セスがスフジュールf備完了する時間を保持するレジスタ8 b。
優先権0プロセスのためのレジスタのバンク39は、優先f1ブ1コセスのため
に既に述べたものと同じである。以下の説明においては、接尾数[1]は優先権
1バンクに関連jjるレジスタを示し、接尾数[0)はレジスタが優先権Oバン
クに関連するものであることを示す。優先様が知られていない場合には、プロヒ
スに対して適切な優先権のレジスタが使用されることを接尾辞[Pr i ]が
示す。
それらのレジスタは、1ピツl〜・フラッグ47.48゜58.59.82.8
3.84は別として、この場合には語長が全体として16ビツi・のレジスタで
ある。命令バッファは、1度にただ1つの命令を保持するように構成されている
ものとすると、8ビツト長とすることができる。
△、B、Cレジスタ・スタック54,55.56は、はとんどの0術動作および
論理動作のためのソースJ3よび宛先である。それらはスタックとして組織され
る。
レジスタおよびフラッグに加えて、各バンク38.39は妥当時間フラッグ84
と、次の時間レジスタ85と、クロック・レジスタ81とからの人力を受けるた
めに構成される。タイマ・ロジック86については第3図を参照して後で一層訂
しく説明する。クロック・レジスタ81はプロセス・り「]ツク87から人力を
受ける。各レジスタ・バンクのためのタイマ・ロジック86は第1図のタイマ9
を構成する。両方の優先権のプロセスに対して、命令のうらORE Gレジスタ
へ与えられる部分が復号器に達して、適切なマイクロ命令を発り;するのに使用
するように、両方のレジスタ・バンク38.39の0REG57は復号器35に
接続される。(’[意の時刻にブ[1セツサが行うべき次の動作を決定する際に
、いずれかの優先権プ1]セスのためのそれらのフラッグおよび論理出力の設定
を考慮に入れることができるように、両方の優先権バンクのSNPフラッグ58
と、複写フラッグ59と、挿入フラッグ82と、削除フラッグ83と、タイマ・
ロジック86とは条件マルチプレクリへも接続される。
あるプロセスの作業域ポインタ(WPTR)が、それからプロセスのローカル変
数を7ドレスできるためのベースとして用いられるから、その作mlポインタに
より示されている場所からのオフヒラ1〜値を計iすることか時に必要である。
定数ボックス40はYバスに接続され、一定の値をマイク[」命令ROM13の
制御の下にそのバスに;nくことを可能にする。それらは、プロセス作T、ta
内のオフセット場所を示し、時間スライス期間を与えるのに使用できる。レジス
タ・バンク38または39の一方または他方の選択を行うために、レジスタ・バ
ンク選択岑41はRPIフラッグ47と、P ROCF) RIフラッグ48と
、マイクロ命令ROM13とから入力を受ける。そのレジスタ・バンク選択器か
らの出力端子は条何マルチスレクサ36と、復号器35と、スイッチ32とに接
続される。マイクロ命令ROM13の出力に応じて、選択鼎はPRIフラッグ4
7またはPROCPRIフラッグ48により指示されたレジスタ・バンクを選択
する。
タイマ番ロジック86は各レジスタ・バンクに類似する。そのうちの1つが第3
図に一層詳しく示されている。
論理装置i!t86は引騨器88を有する。この引算器は次の時間レジスタから
189を介して入力を受ける。この時間値は引0388において、クロック・レ
ジスタ81から線90を介しで供給された時間値から引iされる。゛その差の最
上位ビットが出力線91を介してインバータ92へ与えられる。このインバータ
は信号を線93を介して論理アンドゲート94を与える。そのゲートは妥当り間
フラッグ84から線95を介して入力も受ける。アンドゲート94は出力をI!
j!96を介して条件マルチプレクサへ与える。線96における信号は「タイマ
要求」信号と呼ばれ、タイマリストの1番上からのプロセスが実行できるばかり
となるように、そのプロセスをタイマリストの1ti上からプロセッサにとらせ
るように構成される。これについては後で詳しく説明する。第3図に示されてい
る論理図は、2つの条件が同時に整った時のみ「タイマ要求」信号が線96へ出
力されるように構成されることがわかるであろう、最初に妥当時間フラッグB
1 &;L値1にセラ1〜ぜねばならず、クロック・レジスタ81により示され
た時刻は、次の時間レジスタ85により示された時刻の後またはその時刻に等し
くな【Jればならない。引口器88は、次の時間レジスタ85に含まれている値
をクロック・レジスタ81に保持されている値から引締するために用いられ、そ
の引等の結果が負の数であれば、前記のように2の補数符号付値を使用している
ために、最下位ビットは1である。この理由から、線90は引算により得た最下
位ビットを出力するように構成され、引算の結果が正であって、線91へ0ピツ
トを与える時に、アンドゲート94が「タイマ要求」信号を与えるだけであるよ
うに、インバータ92が要求される。
プロセス作業域に対するメtり割当て
前記特許出願に記述されている例におけるように、マイクロコンピユータはそれ
の時間をいくつかのプロセスの間で分割してそれらのプロセスを一緒に実行する
。−緒に実行されるプロセスは同時プロはスと呼ばれ、任意のある時間に実行さ
れているプロセスは現在のプロセスと呼ばれる。各同時プロセスは、プ【]セス
により取扱われるローカル変数と一時的な値を保持するための、作業域と呼ばれ
るメモリの領域を有する。作業域の第1の[]−カル変数のアドレスは作業域ポ
インタ(WPTR)により示される。これは第4図に示されている。第4図にお
いては、4個の同時プロレス、プロ[スL、M、N、Oが作業[60゜61.6
2.63を有する。第4図には作業域60が3TI しく示されており、W P
TRレジスタ51に保持されているfI+ i mポインタ、この例では10
000として示されているアドレスを有する単一語場所であるO1i!所を示す
。このプロセスのための他のローカル変数は、作業域ポインタにより示されてい
る浦から正のオフセット・アドレスとしてアドレスされる。OiJA所からの小
さな負のオフセットを有する作業域場所のいずれかが、タイミングおよび通信を
スケジューリングする目的のために用いられる。この例においては、WPTRに
より示されているO場所の下側に、5個所の付加語場所65.66.67.68
.69が負のオフヒツト1.2,3,4.5をそれぞれ有して示されている。そ
れらの場所は次の通りである。
オフセット オフセット名 場所名
−11ptr、s Iptr 1ocation−2Link、s 1.ink
1ocation−35tate、s 5tate 1oca目0n−4rL
ink、s ILink 1ocation−5Time、s Time 1o
cationあるプロセスが現在のプロセスでない時に、そのプロセスが現在の
プロセスになった時に、そのプロセスにより次に実行すべき命令に対するポイン
タ(IPTR)を保持するだめに場所65が用いられる。実行を持っているスケ
ジュールされたブ[]−セスのリンクされたりストtなわら行列上の次のプロセ
スの作業域ポインタを格納するために場所66が用いられる。場所67は、代り
の入力動作を実行するプロセスの状態の指示を含むため、またはデータのブロッ
クを複写づるためのポインタとして用いられる。場所68は、実行のためにスケ
ジュールされる前の所定の時間持つているプロセスのリンクされたタイマ・リス
ト上の次のプロセスの作業域ポインタを格納するために用いられ、および代りの
タイマ入力動作を実行するプロセスの状態を指示するためにも用いられる。場所
69は、それの経過後にプロセスを実行できるような時間を指示するために用い
られる。
このメモリはプロセス間通(iiのための詔場所も与え、第3図はそのようなチ
ャネルを丞す。
表 記 法
マイクロコンビュー夕が動作する方法、とくにそれの機能、オペレーションおよ
び手続き、についての以下の説明においては、OCCAM (インモス・インタ
ーナショナル(INHO3International ) plcの商標)言
語に従って表記法が用いられる。この苫菓番よ、英国において1983年にイン
モス・リミテッド(INHO8Lim1ted )により出版J3よび配布され
た「ブ0グラミング・マニュア/lz(Programming Manual
)−OCCAM)Jと題する小冊子に記述されている。更に、この表記法はコー
0ツバ特訂出11fiO110642にKT L、 <記述されているが、命中
にするためにこの明細書においては繰返えさない。しかし、OCCAMの説明と
、]−ロツバ特持直願0110642に記述されている表記法の説明【:1参考
のためにここに含ませる。
1″、記の表記法に加えて、以上の記述は下記のようにして定義されるあるメ七
り・アクビス手続きを示すものぐある。
^tWOrd(Base、 N、八) Ba5eからN番目の語を示づ−ように
Aをセットする。
AtByte(Base、 N、八) Ba5eからNバイト目を示1ようにA
をセットする。
11ndexWord(Base、 N、 X) Ba5eからN番目の語の値
にXをセットする。
RlndexByte(Base、N、X) Ba5eからNバイト目の(直に
Xをセット1Jる。
WlndexWord(Base、 N、 X) Ba5eからN番目の語の値
がXとなるようにセットする。
WIndexByte(Base、 N、 X) Ba5eからNバイト目の語
の値がXとなるようにセットする。
WordOffs’ct(Base、 X、 N) XとBa5eとの間の語数
をNにセ以下に種々の手続さc P ROC>を示す。下記の9つの手続きはプ
ロセッサの動作の説明において使用される。
Dequeue
Run
StartNQXtr’rOCO9S
tl a n旧eRutil(equestlland IcRcadyReq
ucstlland tel imerRequestBIOCkCOpySt
OD
Irisert 5tep
Delete 5tep
手続きl Hand 1eRunlteques[Jと「Hand IeRea
dyRequest Jおよびr BIOCkCOpyStep 、1はわれわ
れの未決のPCT特訂持直順PCTG8/1100379およびコーロツバ特許
出願に詳しく記述されている。それらの手続きの定義は本発明に対して変更され
ないから、この特許出願においては繰返えさない。
手続き[Dequeue Jは優先権「PrtJスケジコールされたプ[1セス
行列の最前部のプロセスを現在のプロセスにする。pri=iであると、他のプ
ロセスを実行さけるようにするために、イれ(よ、そのプロセスを一時的に停止
させねばならない時刻に時間スライス・レジスタ80をセットする。その時間ス
ライスの良さは、定数の1つとして定数ボックス40に格納されている一定の時
間長により決定される。
1、 PROCDe!Quetle! =2、3EQ
3、 WptrReo[Pr1l := FptrRca[Pr114、 1F
5、 F’ptrR(!(l[Pr1l = Bptrlleg[Pr116、
FEltrnOfJ[Pr1l := N0tPrOCO3S、p7 、 T
It II C
8、ItIndexWord(rptrReg[Pr1l、 1.ink、s。
[ftrReg[Pri])
9、 RlndexWord(14ptrReg[Pr1l、 Iptr、s。
IptrRea[Pr1l):
12、 Tia+eSlicellcg := CloekReg +Lcng
thOfTiIllcSl 1ce13、 Pri = 0
14、 5KIP :
手続さ[RunJは、それの記述子がPr0CDeSCレジスタに含まれている
ようなブ[1セスをスケジユールする。これにより優先権0プロ廿スが、既に実
行している優先権1のどのプロセスにも優先して実行を直らにIJ1]始する。
以下の記述において、−で始まる全ての行は甲に説明としてのものであって、定
義の構成部分ではない。
1、 PROCRun =
2、 3[Q
3、Procl’rirlag := ProcDescRegハ 14、 P
rocPtrReg :=ProcDescRcg /\(Nor 1)5、
1「
6、 (Pri = 0) OR((ProcPrif’laO= I’ri)
^NO(WptrRcg[Pr1l <> NotProcess、p))7
、 5IEQ −−add process to queue8、 I[
9、FptrReg[ProcPrirlagl = NotProeess、
plo、 FptrReg[ProcPrirlagl ニー ProcPtr
legll、 TRIIE
12、 WIndcx4Jord(Bptrleg[ProcPrirlagl
。
Link、s、ProcPtr[leg)13、 8ptrReg[ProcP
rtFlagl := ProcPtrReg14、 rRllF
15、 3[Q −−either Pri OinterruptingPr
i 1. or Pri 1 and 1dle m/c1B、 Pri :=
ProcPriRag17、 WptrReg[Pr1l := ProcP
trReg18、 旧ndexWord(WptrRcg[Pr1l、Iptr
、s。
IptrReo[Pr1l)
19、 0reg[Pr1l := O:手続き[5tartNextProc
cssJ ハ現右のプロセスヲテスケジ1−ルし、実行可能な別のプロセスがあ
れば、次の実行可能なプロセスを選択する。こうすることにより、実行すべき優
先権0プロセスがもうなければ、割込まれた優先権170ヒスを再開させること
ができる。
5NPrlaσがセットされる結果として常に実行される。したがって、このプ
ロセスの最初の行動はそのフラッグをクリヤすることである。
1、PROC5tartHextProccss =2、3EQ
3、 3NPFLag[Pr1l := 0 −C1ear The SNPl
ag
4、 IF
5、 FptrRcglPril <> NotProcess、pe、 t+
equcuc
t1. (Wptrlleg[Pr1l = NotProcess、p) A
ND12、 (FptrRcg[f’ril <> NotProcess、p
)13、 DeQueue
14、 TRU[
15、3KIP
16、 Pri = 1
17、 WptrRcg[Pr1l := NotProccss、p :手続
きl−11andleTimeRcqucst Jは、タイマ論理装置86の1
つからね96におけるタイマ要求の結果として実行される。その要求が優先権O
プロヒスに対するものであるとすると、TimcrRequestO信号が生じ
たであろうし、プロセッサはProcPri レジスタをOにゼットしたであろ
う。
要求が優先権1プロセスに対り−るものであるとすると、1 imcrRequ
cst 1信号が生じたであろうし、ブOLツサはProcPriレジスタをO
にセツトシたであろう。この丁続きは、適切なT P T RQの内容からレデ
ィとなったプロセスを識別する。イの1続きは、適切であればそのブ[1セスを
スケジコールし、関連する優先権レベルに対してT P T’ R語、Next
T imeltegおよびValidTimerlagを史IP′r’jる。
PROCHandleTimerRcquest =1、 !5[Q
2、 −− set ProcptrRcg to first proces
s on 1ist3、 RIndcxWord(丁ptr[、ocO,Pro
cPrt、TamgRag)4、Pr0CPtrRQIll := 70191
18g5、 −− set TempRcg to Tl、ink 1ocat
ion or firstprocess
6、Rlndex)lord(ProePtrRcg、TLink、s、Tem
pItea)7、[ndcxWord(ProePtrReg、TLink、s
、Tia+eSct、p)a、−−update tigaer pointe
r word9、 旧ndexWord(rptrLocO,ProcPri、
TOIDRQQ)12、 TempReg=NotProcess、p13、
−− Yes。
14、 ValidTimeFlag[ProcPril := 015、 T
empReg <> NotProeess、p16、 −− No; set
lLcxtTimcRcg17、 RIndexWord(TempReg、
Time、s。
Ncxtrimcllcg[ProPril)18、−− check 5ta
te 1ocation or process19、 ItlndcxWor
d(ProcPtrRcg、5tate、S、TempReg)20、 1F
2L Teullcg = Ready、1)22、 8にIP
23、 TcipIleg=Waiting、p24、 3[Q
25、 旧ndcxWord(ProcPtrllcg、 5tate、s、
Ready、p)2G、 ProcDescRcg := ProcPtrRe
g \t ProcPri27、 Run :
4二記の定義においてはTptrLocOを参考にした。優先4%1のための1
つと優先権0のために1つの、2つのrBr場所があることがわかるであろう。
それらは隣接す′るメモリ場所を占め、優先権0に対してはアドレスTptrL
ocOを有する。このようにして、IlQ達する優先権に応じて、いずれかの場
所をTptrLOCOからのOまたは1のオフセットによりアドレスできる。
手続きr In5ertStepJはInscrLrlag 「Pr1fJがセ
ットされる結果として実行される。この手続きの反応性能により、現在の優先権
レベルに対するタイマリストの正しい位Klに現在のプロセスが挿入される。B
reg [Pr1lレジスタとCreg[Pr1lレジスタが、正しい場所の探
索がその時までに達した点を識別する。
挿入が行われると、手続きはInsertrlag [Pr1Jをクリヤし、タ
イマレジスタを適切にリセットし、次のプロセスを実行させる。
PROCIn5ertStcp =
−^rcg[Pr1lは、本プロ[スに関連する時間を保持すする。
−−Breg[Pr1lは、次のブ[]ケスのポインタのポインタとして用いら
れる。
−−Crcg[Pr1lは、次のプロセスのポインタとして用い3、 Creg
[Pr1l <> NotProcess、p4、 −− pick up t
ime associated with nextprOcQss。
5、 R1ndex%4ord(Creo[Pr1l、 Time、s、 Tr
eg[Pr1l)6、 Crea[Pr1l=NoUProccss、p7、
3KIP
8、 1F
9、 (Creg(Pril <> HotProcess、p) AHロ (
八reg[Pr1lArrrR1rca[Pr1l)
10、 3[口
It、 −−10V13 On One 1lrOcess12、 ^tWor
d(CrcoLPril、 rLink、s、 Breo[Pril)13 旧
ndcx14ord(Breg[Pr1l、 O,Creg[Pr1l)14.
1’1tll[
Is、 SI’Q
IG、 −−found place to 1nsert17、 In5cr
ti’lag[Pr1l := 018、 −−1ink in this p
rocOss19、 WIridexWord(Breg[Pr1l、0.Wp
trReg(Pril)20、 WlndcxWord(Wptrllcg[P
r1l、Tl1nk、s。
Crcg[Pr1l)
21、 −− 5(it the N0XtTiIleRec122、 旧nd
exWord(TptrLocO,Pri、 rreg[Pr1l)23、 R
[ndex14ord(TreglPril、rime、s。
Ncxtrimelleg[Pc1l)24、 ValidTimeFlag[
Pr1l := 125、 WIndex14ord(WptrReg[Pr1
l、1ptr、s。
IptrReg[Pr1l)
26、 3NI’Flag[Pr1l := 1 :手続きl’ Dclete
StepJはDcleterlag [Pr1lがセラ1〜される結果として実
行される。この手続きの反to性能により、現在の優先様レベルに対するタイマ
から現在のプロセスが削除される。Breg [Pr1lレジスタとCreg
[Pr1lレジスタが、正しい場所の探索がその時までに達した点を識別する。
挿入が行われると、手続きはDeleterlag [Pr1lをクリヤし、タ
イマレジスタを適切にリセットする。
PROCDa!etestep −
1、I[
2、Creg[Pr1l <> WptpReg[Pr113、 3EO
4、−−not yet fOLInd C11rr(!nt process
:5tep On
5□ ^tWord(CreglPril、11.ink、s、Rreg[Pr
1l)6、 旧ridexWord(Breg[Pc1l、O,Creg[Pr
1l)7、 Crcg[Pr1l = WptrReglPri18、 SFQ
−−found process; delete from+ 1ist9
4 ロeleteFIag[P「il := 010、 RIndexWord
(Wp[rReg[PP1l、TLink、s。
Creg[Pr1l)
11、 旧ndex14ord(Breg[Pr1l、0゜Creo[Pr1l
)12、 −− Check Hthere are any process
esleft On queue
13、 旧ndexWord(Tpjrl−oco、 Pri、 areg(P
ril)14、 NF
15、 areg[Pr1l = HotProccss、p16、 −− N
o processes 1eft17、 ValidTimaFlag[Pr
1l := 018、 areg[Pr1l <> NotProcess、p
19、 −− aet time 1ron目rSt flrOcess20、
RIndexWord(BreofPril、−Time、s。
NextTimcReg[Pr1l)
21、 WIndQXWOrd(WptrRel)Jl’ril、TLink、
S。
rimeNotsct、p)ニ
ブ[二1セッサは一連の動作を行う。それらの動作は現在のプロセスのため、ま
たは直1JIIリンク25あるいはタイマ9により行われた要求のために(1わ
れる。優先権Oプロセス優先権0タイマまたは優先権0プロセスを数機う通信ヂ
Vネルのために行われる動作は[優先権O動作−1と呼ばれる。
rV@先111 !j+作」はそれに対応して定義される。
現在のプロセスのために実行でさる動作は手続き[5tartNextProe
cssl 、[In5ertStepJ 、「DeleteStepl 。
1’BIOckcOpVstQ[) Jまたは命令をフェッチし、復号し、実行
づることである。
直列リンクのためにプロセスlすにより行うことができる動性は手続き「1la
nd IcRunRequest JおJ:びr 1land 1cReady
Rcqucst Jである。それらはわれわれの前記未決の特許出願に詳しく記
述されている。タイマ0のためにブ「】t?ッザにより実行できる動作は、先に
定義した手続き[HandleTimeRcquast Jに記述されている。
それらの各動作は一連のマイクロ命令に対応する。それらの動作を構成する任意
のシータンスにお
【)る最後のマイクロ命令は[t4extActionJであ
る。これによりプロセッサは次に実行すべき動作を選択させられる。
[NcxtActionJマイク【]命令が実行される時にどの動作を次に実行
すべきかをプロセッサが判定する方法(1次の通りである。同期制御ロジック1
0は、任意の時刻にだかださもないと、CopYNag [Pr1lがセットさ
れるとすると、プロセッサは手続き[BIockCopyStep Jを実行す
る。さもないと、優先lPr1の現在のプロヒスがあるものとすると、プロセッ
サは命令の7エツチ、復号および実行を行う。
われわれのヨーロッパ特許用細fl?o110642に記)ホされているように
、命令はフェッチされ、復号され、実?テされる。
以後の機能セットについての記述は4つの付加手続きについてのものであるニー
TimeSlice
InSOrtlnTilQrLiSt
DeleteFroiTimerList!5ThisSclaetcdPro
ccssそれらの手続きの以下の定義においては相対的な時間を参照りる。クロ
ック・レジスタ81は定期的に1だ<j r mlさせられ、連続り”イクルを
通じて、最も負の値から最も正の値まで増加する。最も正の値の次の増加で、そ
のレジスタは最も負の値へ戻る。以下の説明においては、(Yの後のX)という
表現は、Xが時刻Yより遅れていることを意味する。(X+1)と(X + H
o5tPos)の全ての時間(まXの後であると定義される。(C1ock n
eo + 1 )と(ClockIteg + Ho5tPros)の間の全て
の時間は未来にあると考えられ、(Clock Reg and (−1))と
(C1ock nag+Ho5tNeO)の間の全ての時間は過去にあると考え
られる。
付加手続き定義は次の通りである:
1、 PROCTi1IeSIiee=2、 1F
3、 (Pri = 1) 八No ((ClockReg ^FTERTia
+eSliccReg) Oll (CIockReg = TimeSlie
c))4、 5EQ
5、 ProcDescReg := Wptr VPri6、 1’1Un
7、 5NP(Pril := 1
8、 TRUE
9、 6にIP
1、 PROCInsertlnTimarList =−これは、Areg[
Pr[lによって特定される時間にタイマに挿入される本ブDセスに基づいてI
n5ertsepが繰返し実行されるようにレジスタおよび1nsert r[
agをセットし、その後デスケシコールする。
一−Breg[Pr1lは次のブ1コヒスのポインタのポインタとして用いられ
る。
一−Creg[Pr1lは、次のブ[Jセスのポインタとして用いられる。
2.3EQ
3、 WIndexWord(14ptrlleg[Pr1l、 Time、s
。
Areg[Pr1l)
4、 Inscrtrlag[Pr1l := 1!i、 At140rd(r
ptrLOco、 Pri、 Br13(l(Pril)6゜ 旧ndcxWo
rd(BreorPril、 o、 Creg(Pril):1、 PROCD
clctcJroiTilcList =−これにより現在のプロセスが特定の
タイマリス1〜から消去され、TLinkの場所にTime)4otSctが書
込まれることになる。これはレジスタをセットし、繰返しDelcteStep
を実行することによってなされる。
一へragは用いられない
一−Bre(Jは次のプロセスのポインタのポインタとして用いられる
一−cregは次のプロセスのポインタとして用いられる。
2、6EQ
3、 Dcleterlao[Pr1l := 14、 AtWord(Tpt
rlocO,Pri、Brea[Pr1l)5、 RIndOXWOrd(Br
Q(J[Pr1l、O,Cre(l[Pr1l):1、PROCl5ThisS
elcctedProcess =2、−これはすべての実行不能命令によって
用いられる。
3、5EQ
4、 旧ndcxslord(WptrReg[Pr1l、0. Oreg[P
r1l)5、IF
6、 Oreg[Pr1l = (−t)7、 3EQ
8、 14IndexWord(WptrRcg[Pr1l、O。
Arco[Pr1l)
9、 Area[Pr1l := HachineTR叶10、 0reg[P
r1l <> (−1)11、 Areg[Pr1l := Hachiner
^[S[:機能セット
ヨーロッパ特許明II書0110642におけるように、マイクロコンピュータ
のための各命令は、機能セットから選択されたg1能要素を含む。マイクロコン
ピュータにより実行される1fi能には直接機能と、プリフィクシングIi能p
fixおよびnfixと、1組のオペレーションのうちの1つを選択するために
オペランド・レジスタを使用する間接n能aprとが含まれる。上記特許出願に
J3けるように、pfixとnfixを除く全ての命令の実行後に0re(l[
Pri ]がクリヤされる。
この出願の改良されため接機能セットおよびオペレーション・セットは次の通り
である:
0 1dl 1oad 1oca1
1 stl 5tore 1oca1
2 Idlp 1oad 1ocal pointer3 1dnl 1oad
non−local4 5tnl 5tore non−loca15 1d
nlp 1oad non−1ocal pointer6 eqc equa
ls constant7 1dc 1oad constant8 adc
add constanto 3 jump
lo ej conditional jumpN call call
12 a、iw adjust workspace13 0pl’ oper
ate
14 prix prOfix
15 n4ix negative prerixo rev、 revers
e
t ret 「cturn
2 gcall general call3 gajw general a
djuSt workspace4 1dpi 1oad pointer t
o 1nsructi。
5 bsub byte 5ubscript6 wsub work 5ub
script7 bcnt byte count
8 went word cojnt
9 tend 1oop and
lo lb 1oad byte
il sb 5tOrObyte
12 copy copy messaga13 gt greatert t
hani4 add add
15 sub 5ubtract
16 m1nt liniIIlum integer1? 5tartD 5
tart l1roeess18 endp end process19 r
llnp run process20 5t01)D 5tOD 1)rOc
ess21 1dpri toad priority22 in 1nptl
t ff1ess+1(le23 out output message24
aft alt 5tart
25 altwt aft wait
26 altend alt end
27 (3nbS enabie 5kip28 diss disable
5kip29 enbc enable channe130 disc dt
sable channe131 Ndtii+cr 1oad tiger3
2 tin timer 1nput33 tact timer aft 5
tart34 taltwt tiger aft wait35 cnbt
enable timer36 dist disable tinkerコー
ド番号31へ−36をlNするオペレージコンを除き、十に掲げた全ての機能J
3よびAペレーシ」ンは前記未決の特−出願においてすでに定義されているから
、この明細書においては再び定義はしない。しかし、機能「jump lとオペ
レージ−1ンl’ 1oop and l終り【ま、タイマ9の使用を行えるよ
うに再び定義されて43す、それはいま次のように定義定義:S[〇
八tByte(IptrReg[Pr1l、Oreg[Pr1l。
IptrReg[Pr1l) TimeSliccし1的−制御を後方まfこは
前方に移してルーIに入りまたはループから出ること。割当てられた時間が経過
したらブ[]セスをilTスケジュールさせること。
1oop and
定義: SEQ
111ndexWord(Brcg[Pril、 1. Crcg[PriJ)
CrOg(Pril ニー CreglPri] −1WIndexWord(
Brcg[Pr1l、1. Creg[、Pr1J11「
Crcg[Pr1l > O
3F、Q
RIndexWorJ(Breg[Pr1l、0゜Creg[Pr1J)
Crca[Pr1l := Creg[Pr1l + 1旧ndexWord(
Brcg[Pr1l、0゜Cre(]I、Pril)
AtRyte(lptrRcg[Pr1l、−八reg[Pr1l、Iptle
g[Pr1l)1’ RU E
KIP
1’in+cSIiec
目的:リプリケータを作動させて、割当てられた時間が経過したらプロセスを再
スゲジュールJること。
付加機能および“altend”は次のとおりである。
ムエヱ込功m
1oad tiller
定R: S[Q
Creg[Prtl := Brag[PrilBrcg[f’riJ :=
Arcg[Pr1l八reへ[Pr1l := ClockReg目的: タイ
マの現在の値をArcgに入れること。
目mar 1nput
定へ二11[
2、Clockllcg AI’T[RAreg[Pr113、3KIP
4、月(UE
6. Wlndcxllord(Wptleg[Pr1l。
5tatc、s、14a口ino、p)7、 Arcg[Pril := 八r
ag[Pr1l + 18、 In5OrtlnTilOrLiSt目的二 所
定時間後にプロセスをスケジュールすること。
選択的タイマ人力の機能
timer alternatiVQ 5tart定1i:1.5EQ
2、WIndexWord(WptrReg[Pr1l、5tatc、s。
[nablin(1,9)
3、 旧ndexWord(I4ptrReo[Pr1l、 TLink、s。
T imeNotset、 D)
目的: プロセスの状態およびタイマの状態を選択的入力およびタイマを使用可
能とするのに先だって初11化す−ること。
timer altornatiVe Wait定義: 1.5EQ
2、WIndexWord(WptrReg[Pr1l、0−1)3、Rlnd
cxWord(ILptrRcg[t)ril、TLink、s。
Breg)Pril)
4、RIndcxWord(WptrReo[Pr1l、Δre(][Pr1l
)5、 I「
6、 (BreQrr’ri1 = 1i1eSet、0) AND(CIoc
Heq^I”T[RAreg[Pr1l)7、 St’:Q −−clock
makes process ready8、 WIndexWord(Wpt
rReg[Pr1l。
5tatc、s、Rcady、p)
9、 141ndcxWord(WptrReO[Pr1l。
Time、s、CtockReg)
10、 丁Rυ[
11、SEQ −−clock does not makeprocess
ready
12、 R1ndexWorc!(WptrRcg[Pr1l。
5tate、s、Crea[Pr1l)13、 1F
14、 CrcOrPril = ReadV、1115、 IJIndcyj
lord(WptrRcg[Pr1l、Time、s、ClockRcg)
16、 Crcg[Pr目−[nabiinq、p17、 3rQ
18、 Wlndex)1ord()lptrReq[Pr1l。
5tate、s、Waitinv、p)19、 lF
2O、Breg[Pr1l = timeset、p21、 5EQ
22、 ^rcoLPril :=
Arcg[Pr1l + 1
23、 InsertlnTimcrList24、 Brcg[Pr1l =
1imeNotset、p
25、 SI’、Q
26、 Wlndcxllord(WptrReg[Pr1l、Iptr、s。
IptrRQQ[Pr1l)
27、 5NPrla(l[Pr1l := 11]的: 複数の可能な入力、
例えばタイマ入力、のうちの1つを待つこと。
enable tiIler
定義: 1.5EQ
26I[
3、Arcg[Pr1l=HachinerAISF4、 3にIP
5、 Area[Pr1l <> Hachiner^LSE6、 3rO
11,旧ndcxWord(WptrReorPril。
TLink、s、 Oreg[Pr1l)8、 1F
9、 0reQ[Pl’il = Ti1leHOtSet、plo、 3EQ
11、 旧ndcxWorc1
01ptrReg[Pr1l、TLink、s。
Tin+eSct、D)
123 旧ndexWord
(WptrReo[Pr11. ■ime、s。
Brcg(Pril)
13、 0rcg(Prtl = TimeSet、p14、 8EQ
15、 IIIndexWord(WptrRcg[Pr1l、Time、s、
Orcg
17、 0reorPril ^rT[rlBroo[Pr11
18、 Index@ord
(讐DtrROO[Pr1l。
Time、s、Brcg[Pr1l)
19、 IRUI:
20、 3KIP
21、 8rco[Pr1l := Crcgl、Pr1l目的: タイマ入力
を可能にすること。
disable tilQr
用途: On entry: ^rcc+ = Code offset。
Brag = Boolean guardCrag = Time
0+1 ex已: 八rag = Mac旧neTRIIE if thisw
as 5elected COmpOnOnt^rag = Hachi++e
fAISE otherwise定轟=11[
2、8rcgiPril = HachineFALSE3 八reg[Pr1
l := HaChlrlOIΔ1. S (4、Rreg[r’riJ <>
HachincFAISt、’+ 、 S [Q
6、 旧ndexWord(WptrReg[I’ril、 T1.ink、
s。
Orcg (Pc i l )
1、 1[
8、Oreg [Pr i )−目11ONOtSOt、 p9、 Areg[
Pr1l := HachinerALSElo、 0reg[Pr1l =
TimeSet、pli、 5EQ
12、 旧ndcxlJord(WptrReg[Pr1l。
1iie、s、Oreg[I’riJ)13、 1F
14、 Oreg(Pril ^fT[RCreg[Pr1lt5. l5Th
isSelcctedProcess16、 TRl1[
17、Areg[Pr1l :=
HachineFΔLSE
18、 rntlE
19、 3EQ
20、 八reg[Pr1l := H,IchinerAISF21、 De
letcf’romTiaierlist目的; +iJ能なタイマ入力を不可
能にすること。複数の選111!的タイマ人力のうりの1つを選択−すること。
alternattvc end
定へ: 5IIJ
1、 RIndexWord(WptrReg[Pr1l、 0゜Ofeg[P
r1l)
2、 ^tBytc(I吋rRQ(l[Pr1l、 OregrPril、 I
ptrReg[Pr1J)1]的: 選択的プロセスの選択されたコンポーネン
トの実行を開始すること。
マイク[]命令ROM13は、そのROM13からとりだしたマイク[1命令の
結果として上記動作のいずれかをプロしツサを実行させられるような、上記の機
能およびオペレージコンの全てに対応するマイクロ命令を含むことがわかるであ
ろう。
スケジュール
プロセッサはそれの時間を、2秤類の優先権レベルOと1で実行しでいるいくつ
かの同時プロセスの間で供用する。優先IIOプロセスと優先権1ブ[1ヒスが
共に実行できるものとすると、優先権0プロセスが優先権1プロセスより優先し
て常に実行する。任意の時刻にただ1つのプロセスが実際に実(jされ、現在の
プロセスであるこのプロセスはW I) T Rレジスタ5)1に作業域ポイン
タ(WPTR>を右し、I P T Rレジスタ50内の命令ポインタ(I P
TR)が、その特定のブ[1セスに関連するフランジ中の命令シーク−レスから
次に実行すべき命令を示す。現在のプロセスでは<’K <、かつ実行を待って
いないブ[lセスはどんなプロセスでもデスケシコールされる。あるプロセスが
スケジュールされると、それは現在のブ[1セスになるか、実1jを持っている
プロセスのリストすなわち行列に加えられCいるがのいずれかである。そのよう
なスケジュールされたリストはリンクされたリストと1)で形成され、そのプロ
セスの作tbXに対す゛るポインタを有する。そのリスト上の任意のプロヒスの
命令ポインタ(IPTR)は、第4図に示すように、それの作業域のI P T
R場所65に格納される。
この場合では、実t”xされるのを持つているスケジュールされたプロセスの2
つのリス]へをプロセッサは含むことができる。それらのプロセスはそれぞれ各
優先権レベルに対するものである。それに加えて、スケジュールされるまで指定
された時間を持つデスケジュールされたブ[1ヒスの2つのタイマリスl−を含
むことができる。l先権に対して1つのタイマリストが設置)られる。第4図は
高優先権0のスケジュールされたリストを示し、第5図は、第4図に示寸ように
ある優先権Oのブ[]t?スが現在のプロセスである時の、低優先権1のスケジ
ュールされたリス1〜を示す。この場合には現在のブ[1セスが高優先権0のプ
ロレスであるから、レジスタ・バンク選択器41はプロセッサが使用するレジス
タをバンク39内で選択している。したがって、W P T Rレジスタ[0]
は、第4図に示すように、現在のプロセスLの作業域60の0場所に対するポイ
ンタを保持する。113丁[)レジスタ[0]4;L、メモリに格納されている
ブ[1グラム・シーケンス181内の次の命令に対するポインタを含む。第4図
に示されているレジスタ54゜55.56.57は次のプロセスLの実行中に使
用すべき別の値を含む。実行を持っている優先権Oのプロセスのスケジアールさ
れたリストが、第4図に3つのプロセスM。
N、Oにより示されている。てれらのプロセスの作業域が61.62.63に線
図的に示されている。それらの各作業域はブIコセスLに対して示されている作
業域に全体として類似する。53で丞され工いるFRTRレジスタ[0]は、こ
のリス1〜の先頭のプロレスであるプロセスMの作業域に対するポインタを含む
。プロセスMの作業域はそれのIPTR場所65に、プロヒスMが現在のプロセ
スになった時に実行1jべきプログラム・シーケンス中の次の命令に対するポイ
ンタを含む。ブ[lt?スMのリンク場所66は、そのリスト1′、の次のプロ
セスであるプロセスNの作業域に対するポインタを含む。示されているリスト上
の最後のプロセスはプロセスOである。そのプロセス0は63で示されている作
業域を有する。52で示されているBPTRレジスタ[521は、この最後のプ
ロセス0の作業域に対するポインタを含む。このプロセス0の作業域63は前の
ブロセスNのリンク場所66の内容により向けられるが、この場合にはプロセス
Oはリスト上の最後のプロセスであるから・プロセス0のリンク場所66はポイ
ンタを含まない。
別のプロセスがこのリストに加えられると、その別のプロセスの作業域に対する
ポインタが13 P T Rレジスタ内に置かれるから、プロセスOのリンク場
所66は、そのリストに加えられたその別のプロセスの作業域に対するポインタ
を含む。
優先権1のスケジュールされたリストは全体として類似し、これは第5図に示さ
れている。この場合には、スケジュールされていて、実行を持っている優先権1
のプロセスのリストはプロセスP、Q、Rより成る。Sという記号で示されてい
る別の優先権1のプロセスが示されているが、これは現在はデスケジュールされ
て、リンクされたリストの部分は形成しない。FPTRレジスタ[1]は、実行
を持っているリス1〜上の最初のプロセスを形成するブ[−]セスRの作業域に
対4るポインタを含む。BPTRレジスタ[1]は、スケジュールされたリスト
上の最後のプロセスを形成するプロしスRの作業域に対するポインタを含む。
各プロセスP、Q、RはそれのI PTR場所にあるプログラム段階を指t I
PTRを有(る。ぞのプログラムが現在のプロセスに4にっだ時に、その段階
から次の命令がとり出される。スケジュールされたリスト上の最後のプロセスを
除く各プロセスのリンク場所は、そのリスト上の次のプロセスの作業域に対する
ポインタを含む。
先に定義した手続き[c!equcJを用いることにより実行するために、ある
プロセスをリストのトップからとり出すことができる。
先に定義した手続き[5tart next processJによりある現在
のプロセスをデスケジュールできる。
第4,5図に示されている2つのスケジュールされたプロセス・リストを動作さ
せるやり方は、前記特許出願において既に記述されているから繰返えさない。
しかし、この実施例は、現在のプロセスが低優先権プロセスであるとすると、「
時間スライス」と呼ばれるある期間の時間の後でそのプロセスを停止させ、スケ
ジュールされているリスト上の他のプ[ルスに実行すべき機会を与えるように、
第5図に示されている行列の終りに再スケジュールできるように、時間を輪切り
する性能を与える。第5図に示されているような種類のスケジ」−ルされたリス
1〜のトップから低優先権のプロセスがとり出されると、プロセッサは手続きr
duqucJを実行し、手続きの定義の11tjと12行かられかるように、そ
のプロヒスが優先権1のプロセスである(これは低優先権のプ[]セスに対する
場合である)とすると、12行に従って、時間スライスレジスタ80に、り[1
ツク・レジスタ81により示されている現在の時間と請求められた「時間スラ、
イスの長さ」時間との和である値がロードされる。時間スライスの良さは任意の
時間間隔に適するように選択でき、この場合には1000個の命令を実行するた
めに必要な時間であるようにとられる。これはもらろIυ必要に応じて変えるこ
とができる。この時間スライスは定数ボックス40に格納される。低優先楯のプ
ロビスが「飛越しくjun+p)J R能または[ループ・エンド(loop
and)Jオペレーションを実行すると、飛越し機能およびループ・エンド・オ
ペレーションの定義の終りかられかるように、プロセッサは手続き「晴間スライ
ス」を実行づる。手続き「時間スライス」の上記定義に従って、現在のプロレス
の優先権が1で、クロック・レジスタにより示される時間が時間スライス・レジ
スタ80により示される時間に等しいか、それJ:り遅れているとすると、作業
域ポインタと現在のプロセスの優先権が手続き記述レジスタ46にロードされ、
優先権1のスケジュールされたリストの終りにプロセスを加えることによりその
プロセスが再スケジュールされるように、手続きfrunJが実行されるかをプ
ロセッサが調べる。プロセスが現在のプロレスの実行を止め、プロセッサによる
動作をめるより高い優先権のプロセスまたは要求が無ければ、優先権1のスケジ
ュールされたリストのトップから別のプロセスの実行を開始するように、その手
続きはS N P F laす58を値1にセットもする。
この実施例は、第6.7図に示されている種類のタイマ・リストのための用意も
行う。第6図は低優先権1のプロセスのリンクされたタイマ・リストを示し、第
7図は高優先権0のプロセスの類似のリンクされたリス1−を示す。低優先権の
プロセスtよ第6図に文字T、U、V′c示されており、第7図の高優先権プロ
セスには文字W、X、Yが与えられている。それら2つのリストは仝休として類
似しているから、第6図のリストだけ詳しく説明する。リス1−中の各プロセス
のための作業!1!60が第6図に示されている。
タイマ・リストの前方は、−r P −r 11と呼ばれるポインタ値を保持す
る単一語メtり場所90により維持される。特定の優先権のタイマ・リストドに
プロセスがない時は、その優先権に対するTPTRは特殊な値r NotPro
cess、pJにセットされる。さもないと、メモリ場所90に保持されている
TPTRは、そのタイマ・リスト中の全てのプロセスは時間的な順序でリンクさ
れる。各プロセス作業域は、プロセスをスケジュールできる時刻を示す時間場所
69内の値を示す。各プロセス作業域のT’Link場所68は、タイマリスト
上の次のプロセスの作業域のOjA所に対するポインタを含む。リスト上の各プ
ロセス作業域の場所65は、プロセスがスケジュールされて現在のプロセスとな
った時に使用するために、プログラム・シーケンス181内の次の命令に対する
ポインタを格納する。タイマ・リス1〜上にプロセスがある時に妥当時間フラッ
グ84に値1にセットされ、そのタイマ・リスi−上にプロセスがないと値0を
有する。次の時間レジスタ85は、タイマ・リストの前方におけるプロセスの場
所69からとられる時間を含む。このようにして、関連するタイマ・リスト上の
いずれかのプロセスをスケジュールすべぎ最ら早い時刻を示すものをレジスタ8
5を含む。リストの後部を示すために、タイマ・リストのために設けられるレジ
スタはない。タイマ・リスト上の最後のプロセスの作業域は、それの作業域のI
L[Mに場所68内に特殊な値r NotProcessF) Jを@する。レ
ジスタで(よなくてメモリ場所90を用いることによりリスl−の前方が示され
る。このようにして、同じやり方でメモリ場所を使用することによりリストの前
方が識別される。というのは、リストへの全ての中間的なエントリイが識別され
、そうすることにより、別のプロビスを時間的な順序でタイマ・リストへ挿入し
たり、タイマ・リスト上の別のプロセスを削除するために必要な動作を簡単にす
るからである。タイマ・リスト上の既存の最初のプロセスの前にブL]ヒスが挿
入することが必要になることがあること、または、挿入すべきプロセスをスケジ
ュールすべき時刻に応じてリストを半ば通じてプロセスを挿入することが必要に
なることがあることがわかるであろう。
第3図に示されているタイマ・ロジックについての双曲の説明かられかるように
、妥当時間フラッグ84のいずれかが、適切な優先権タイマ・リスト上にブ[]
グラムが存在することを示す値にセットされたとすると、第3図に示されている
タイマ・ロジックは次の時間レジスタ85に示されている時聞くリスト上のいず
れかのプロセスをスケジューリングするための最初の時間を示づ)をクロック・
レジスタにより示される時間と比較し、かつ、その最初のプロセスをスケジュー
リングするだめの時間に達したとすると、タイマ・ロジックが適切な要求信号を
条件マルチプレクサへ与える。そうするとプロセッサはそれらの要求信号に応答
して、適切なタイマ・リストから最初のプロセスを除去し、適切な妥当時間フラ
ッグと、次の時間フラッグど、T P 1’ R場所90を更新する。そうする
とこれはタイマ・リストの新しい状態を反映する。そのプロセスがタイマ・リス
トにもはやないことを承りために、プロセス作業域のためにのTLNNKj!B
所68に値「TimeSet、p Jが書込まれる。イのプロしスが既に現在の
プロセスではなくなっているか、またはスケジュールされているリスト」二に既
にあるものと仮定すると、それは第4図または第5図に示されているような種類
のスケジュールされたリストに加えられるようになり、まI、二はスケジュール
されたリストがなければ現イ[のプロ[スになる。タイマ・リストのトップから
あるプロセスを除去するブ1コセッサの動作は前記定義r IIandleTt
merRequestJ I、:述べられテイル。
タイマ入力命令
プロセスは、その時間の杼過後はそのプロセスを△レジスタ54に再スケジュー
ルせねばく【らないような時間をローディングケることにより[rimerln
ptRJを含む命令を実行でき、それからオペレージコン[rimerlnpu
tJを実行する。最初に、クロック・レジスタにより示されている現在の時間が
△1ノジスタにより示されている時間の少かどうかを調べ、もしそうならば、1
0ヒスがスケジュールされに:ままであるにうに何の動作も行われない。しかし
、この条件が満たされないとり−ると、[Ti1crlnputJの定義に述べ
られているシーケンスが起き、特殊な値lWaiting、[) Jがプロセス
作業域の状態場所67に書込まれる。プロセスを再スケジュールすべき時刻はA
レジスタに示されている時刻の後に1べきであるから、Aレジスタに示されてい
る時刻は1だtノ進まされて、プロ1ごスを再スケジュールすべき1■21刻を
示1−、プロpツリーは手続き「In5crtlnTiner1.ist Jを
実行する。この手続きにおいては、プロセス作業域の時間場所69に、プロヒス
を再スケジュール・tべき時刻を−1込み、プロセスが時間的な順序に従うよう
にプロセスを適切なタイマ・リストの位置に入れさける。プロセス()が別のプ
ロレスの実行を開始するように、それはSNPFlagを値1にセットψること
もする。[Timerlnput l命令を実行した命令は、適切な長さの時間
が経過した時に再スケジュールされる。
選択的タイマ入力命令(^I torna口ve Timer InputIn
structions)
前記未決の特許出願には別のプロセスが記述されている。それら別のプロセスは
実行のためのいくつかの別のコンポーネントの1つを選択する。別の各コンポー
ネントは、対応するプロセスが後続する入力またはス:1ツブより成る。この例
はタイマm択的プロtス(timcr alternativeprocess
)を実行でき、そのブ[コセスは実行のためにいくつかの別のコンポーネントの
1つを選択する。別のタイマの各コンポーネントはメツセージ・チ1?ネル入力
(内部チャネルまたは外部チャネルからの)と、対応するプロセスが後続するス
キップまたはタイマ入力で構成できる。チャネルがレディであるならばメツセー
ジ・ヂ11ネル入力コンポーネントを選択でき、前記未決の特許出願に記)ホさ
れているようにス髪“ツブコンボーネンl−を常に選択できる。クロック・レジ
スタ内の値がタイマ入力で指定されている時刻のrlJ (AFTERIIFあ
る時に、タイマ入力コンポーネントを選択でさる。この例は、タイマ人力に依存
しない別のプロセスを、前記未決の特許出願において既に記述されているやり方
と正確に同じやりhで実行する。その記述はこの明細書においては繰返えさない
。現在のプロセスがいくつかの別の]ンボーネン1−を有する時は、1つまたは
それ以上のイーれらのコンポーネントを選択できるかどうかを判定するために各
」ンボーネントが調べられる。
どのコンポーネントも選択できないとすると、それらのコンポーネントの1つを
選択できるまでプロセスがデスケジュールされる。それからプロセスは再スケジ
ュールされ、コンポーネントが再び調べられて、コンポーネントの1つが選I尺
される。メツセージ・チItネル入力コンポーネントとスキップ・]ンボーネン
トの調査が、前記未決の特n出願に記述されているようにして行われる。
全てのコンポーネントが調べられると、プロセス作業域の状態場所67が2つの
特殊な値「[nabl inQ、DJまたは[Rcady、p−1の1つを含む
。状態場所67が「Ready、l] Jを含んでいるものとすると、およびそ
の時だけ、それらのコンボーネン1〜の1′つを選択ぐきる。パノイン人カーコ
ンポーネントを調べている間に、TLink68と時間場所69が特殊1]的の
ために使用される。口ink場所68は2つの特殊なm rTia+eset、
D Iまたは[T 1lleNOtset、 p lのうらの1つをどる。それ
は、タイマ人力がいヂれム調べられていないことを示す「TimeNotSet
、pJに初期化され、最初のタイマ入力が調べられた時にr TimeSet、
p lに変る。最初のタイマ入力が調べられると、時間場所69は指定された時
間に初期化される。(の後で、各タイマ人力が調べられると、その時刻が時間場
所69に記録されている時間より早いとりると、時間場所が指定された時へ11
に更新される。したがって、全てのコンポーネントが調べられると、時間場所6
9は任意のタイマ人力により指定された最も早い時間を保持する。TLink場
所68が51 [TimeSet、p Jを含んでおり、かつり[]ツタ・レジ
スタの値が時間場所69内の11行間の後である時のみ、別のプロセスがはタイ
マ人力コンポーネントを選択できる。
全てのコンポーネントが従来べられた後で状態場所67ど、TLink場所68
と、時間場所69とを用いて任意の]ンボーネントを選択できるかどうかを、タ
イマ選択的ブ【コセスが決定する。どのコンポーネントも選択できないとすると
プロセスはデスケジュールされ、いずれかのタイマ人力コンポーネントが調べら
れたとすると、プロセスは適切なタイマ・リスト上に置かれる。選択できる少く
とも1つのコンポーネントがあるものとすると、各コンポーネントは再び調べら
れ、最υノの黄IRijT能((mlンボーネンl−が)大板される1、前記未
決の特許出願に記述されている9Lう(、二、いずれかのが選択されたの(゛あ
ればぞ−の一二]ンボーンンl=を記録Aるために、ブ[1iニス作業VJ、
60の0場所が使用される。ヂトネル人カー1>フタ、[メよびスキップ・」ン
ボーネントの再検査は、rtt記未清の特ム1出願に記述されているようにして
(iわれる。タイ7人力]ンボーヘーネンi−の再検査は、TLink揚PJi
68と111間場所69を用いて、次のようにして(iわれる。最初のタイマ
人力−1ンボーネンl−が再検査さる時にタイン選択的ブ「][スがタイマ・リ
スト上にないどすると、プロセスがイのタイマ・リストh装置かれ、かつイ゛の
侵で除去されたか、プロセスがタイマ・リスト上に全く置かれていなかったのか
のいヂれかである。曲名の場合には、早いタイマ人力コンポーネントが選択可能
になった時刻を時間場所69番よ含む。後者の場合には、−]ンボーネント・ゾ
[」セスを調べたi後に時間@Fli69は値rcLOcK I≧EGJを含む
。時間場所は、タイマ人力コンポーネントの全ての再検査に対して同じ値を保持
でる。時間場所69の内容が指定された時刻より「後」である場合のみ、夕・イ
マ入力コンボーネン1−を選択可能である最初のタイマ入力コンポーネントが再
検査される時にタイマ選択的プロセスがタイマ・リスト4Fに以前としであるも
のとすると、選択可能なタイマ入力コンボーネン1−は存在しないが、選択可能
なチャネル入力コンポーネントは必ず存在する。この場合には、タイマ人力コン
ポーネントの最初の再検査はタイマ・リストからプロセスを除去し、TLink
場所68を値「TimeNotSct、pJをセットして、どのタイマ人力コン
ポーネントの選択も阻止する。この場合には時間場所69は使用されない。
タイマ選択的ブ〔lセスを実行する命令は、各タイマ・コンポーネントに対する
「タイマ・イネイブル」が後続づ゛る1′タイマ選択的開始(口mar alt
ernative 5tart)Jである。メツセージ・チャネルが別の槙道中
に含まれているならば、プロセッサは各およびあらゆるメツセージ・チャネルに
対して「チャネル・イネイブル」の実行も行う。この後に、[タイマ選択的待機
(【1Iller alternative wa目)」が続き、それから各タ
イマ入力に対する「タイマ・アイスエイプル]と、任意のチャネル入力に対する
[ブトネル・ディスエイプル]に続く。
タイマ選択的プロセスにより実行される最初の命令は「タイマ選択的開始」オペ
レージコンであり、このオペレージコンの定義かられかるように、2行目に従っ
て特殊な値[enabling、pJがプロセスのために状態場所67に書込ま
れ、3行目に従って特殊なMj 「TimeNojSet、pJがプロセス作業
域のためにTl1nk場所68に書込まれる。
前記未決の特ご1出願に記述されているように、任意の升ヤネル入カコンポーネ
ントおよび任意のスキップ・コンポーネントが「チt?ネル・イネイブル」オペ
レージコンおよび[ス゛ヤップ・イネイブル」オペレージコンにより調べられる
。ガード値(guard value)をAレジスタにロードし、タイマ・コン
ポーネントのための指定された時間を8レジスタにロードし、それから[タイマ
・イネイブル」オペレージコンを実行することにより、任意のタイマ入力コンポ
ーネントが調べられる。そのオペレージコンの定義に従って、2行と3行は、A
レジスタ内のガード値が偽であるかどうかを調べる。もしそれが偽であれば、タ
イマ入力を無視し、その命令は他の効果を有しない。定義の5行目に従ってその
ガード値が偽でないとすると、プロセッサは定iの7行目から始まるシーケンス
を実行する。これは、11ink Q所68から得た値をOレジスタにロードし
、8行目は、9行し1に従ッテその(直が[TimeNotSet、pJか、1
33行目従ってr TimeSet、D Jであるかを試験するための検査を行
う。その値が[TimeNotSct、 p Jであることが判ったとすると、
値r TimeSet、p Jが111行目従ってTLink @所に書込まれ
、定義の12行によるめに応じてプロセス作業域のための時間場所69にf3レ
ジスタ中に示されている時間が書込まれる。これは、プロセスにより調べられる
最初のタイマ入力コンポーネントに対して起る。調べられる以後のタイマ入力に
対しては、133行目条件が満されることがある。この場合には14行[1に従
うシーケンスが起る。プロセスのための時間場所69に記録されでいる時間値が
Oレジスタ57にロードされること、およびその時間値が定義の177行目条件
に適合するかどうかを調べるためにその時間値を試験することを155行目求め
る。その時間が8レジスタに示されている時間の「後]であるどづると、Bレジ
スタ内の時間がそのプロヒスのための時間場所69に書込まれる。19行目と2
0行目は、0レジスタ中に示されている時間がBレジスタ中に示されている時間
の「後」でないとすると、どのような動作も行われない。ム)後に、定式の21
(j目にJ:り要求されて、Cレジスタからの(1f1がロードされる。このよ
うにしてプロセスは可能な各タイマ入力を調べ、検査の接ぐ最す早い時間コンポ
ーネントの時間をそれが含むように、プロセスの時間場所69が更新される。し
たがって、各タイマ・コンポーネントのための一連の(タイマ・イネイブル)オ
ペレーションが任意のコンポーネントの最す早い時間を効果的に決定し、調べら
れた任意のコンポーネントの最も早い時間で時間場所69を順次更新することが
わかるであろう。
それから、プ[]ヒスはオペレージコン「タイマ選択的待機」を実行する。定義
の2行[」に従って、これはプロセス作業域の0場所を−1に初期化し、それか
ら、代りのプロセスのどのコンポーネントが既に選択可能であるかを判定するた
めに試験を行う。定義の3行目と4行目に従って、それはrl、ink場所68
からの値を8レジスタへ読込み、時間場所69からの((6を△レジスタへ読込
む。5.6行は、プロセスが値[1’1ncSct、D Jを右し、かつ時間場
所69内に示されている時間の「接」の時間をクロック・レジスタが示したとす
ると、8,9行目に定義されているシーケンスが起ることを要求リ−る特殊な値
「1teady、l) Jがプロセスのための状態場所67に書込よれ、クロッ
ク・レジスタに五り示されている現在の時間がプロセスのための時間場所69に
書込まれる。プロセスはデスケジュールされず、それの次の命令へ動きことがで
きる。しかし、定6の6行目の条件が真でなかったとすると、プロセスは定義の
12行目へUJ <。それはこれをCレジスタヘローディングすることによりプ
ロセスのための状態場所67の内容を試験し、これが(ff r Ready、
D Jを含むかどうかを14行目が試験する。もしそうだとすると、16行1]
に従って、クロック・レジスタにより示されIいる現在の時間がプロセスのため
の時間場所69に書込まれ、プロセスはデスケジュールさない。代りの入ツノの
うりの別の入力のためにそれはレディ状態であり、プロセスは次の命令へ動くこ
とができる。しかし、定義の16行目に従って、プロセスの状態場所から特殊な
値「enabl ing、 pJが見出されたとすると、これは、代りの」ンボ
ーネントのいずれもまだレディではなく、17行【1から始まるシーケンスが起
ることを示?!、、特殊な値「waiting、p Jがプロヒスのための状態
場所67に書込まれ、プロセスがタイマ・コンポ−掌ントを持っているかどうか
を19.20行[1が試験する。20行l]に従ってプロヒスが値[Tia+e
Set、p Jをイi?Jるものとすると、プロセスをスケジコールすべき時を
指示するためにΔレジスタの内容が1だけ増加させられ、23行目に従って手続
き[In5ert In Time Li5t Jが実行される。二そうすると
、プロセスが−J−スケジュールされるが、それを再スケジュールすべき時の指
示を含むように、ブ[1セスが適切な優先権タイマ十に置かれることになる。定
義の24行目に従って、ブl]セスがどのようなタイマ・コンポーネントも待っ
ていないと16と、[3レジスクは(U r TincHotSet、p Jを
右することができ、これは、プロセスがタイマ人力ではなくてチャネル入力を依
然として持っている場合に起る。この状況においては25行目に続くシーケンス
が起り、プ【]セスに対する命令ポインタがブ1コレス作業域のi P ’r
R場所65に格納され、プロセスがデスケシコールされるようにSNPFlag
が値1にセットされる。したがって、定義にJ3いては、タイマ入力のためにプ
ロ[スがレディであるかどうかを6〜9行目が試験する。非タイマ入力、たとλ
ばチャネル入力のためにプ[1廿スがレディであるかどうかを13.14行目が
試験するプロセスがレディでないことが見出された時は16行目オンワード(o
nwards)を適用する。
プロセスがデスケジュールされていないどした時、または後でそのプロセスが再
スケジュールされる時にそのプロセスにより実行される次の命令は、各タイマ・
コンポーネントに対するオペレーション「タイマ・ディスエイプル」と、任意の
スキップ・コンポーネントに対するオペレージコン[スキップ・ディスエイプル
]と、任意のチャネル・コンポーネントに対するオペレーション「チャネル・デ
ィスエイプル」を行うであろう。ヂャネル人カニ1ネクタJ′3よびスキップ・
コンポーネントは、前記未決の特許出願に記述されているように、[ヂ1Fネル
・ディス−「イブル]オペレージ」ンと[ス4−ツブ・アイスエイ1ル1オペレ
ージコンにより再検査される。タイマ選択的ブ[]セスはオペレージコン[タイ
マ・ディス1イブル]の定義に従ってタイマ入力コンポーネントを再検査する。
その代りのコンボーネン1へをプロセスにより選択1べきであるとすると、以後
のプログラム命令を置くためにプログラム・シーケンスにおいて必要なオフセッ
トを指示づるために、最初にAレジスタにコード・オフセットがロードされる。
ガードが偽で・なったどすると、プロセスはそのプロセスのためにTLink場
所68の内容を調べる。考慮すべき3つのケースがある。第1に、TLink場
所は定義の10行目に従って値「TimeSet、D Jを含むことができ、こ
の場合には、時間場所69内の時間がCレジスタ内の指定された時間の「後」で
あるならば、そのコンボーネン1−は選択可能である。これは定義の14行目に
おける条f1であり、この条件が満されるものとすると、プロセスは手続きr
l5ThisSelcctedProcess Jを実行する。その手続きの定
義の5.6行目に従って、プロセス作業域の0揚所が値−1を含んでいるか否か
をそれ(よ調べる。もし含むとするとこのコンポーネントは選択され、定義の8
行目に従って作業域のO場所にΔレジスタからコード・オフセットがロードされ
る。手続き定義の10行目に従って作業域の0場所が(irj−1を有していな
かったとす”ると、コンボーネン1−・プロセスは既に選択され、現在の1は選
択できない。
プロセスのTl1nk揚所68が[Timeset、p Jまたは[rimeN
otset、pl以外の値を含んで・いることを「タイマ・ディスエイプル」オ
ペレージ」ンが見出したとすると、こ−れtよ[タイマ°ディスー1ニイブル]
の定義の18 h [Iの状況に対応4る。これは、TLink揚所68場所イ
マ・リスト上の別のプ[1セスに対するボーイ二ノタを含むように、プロレスが
そのリスト[−に依然としCある時に起る(゛あろう。したがって、ブo tス
がタイマ・リスi−上で依然として持つでいるからタイ7・コンポーネントを選
択できず、■続き「タイマ・リス1−から削除」によりタイマ・リス!−から除
去される。これにJ、り伯[TimcNotSet、pJがそのプロセスのため
のTLink場所68に書込まれる。
「タイン・ディスエイプル」オペレージコンは、定りの8行目に従ってTl1r
+に場所が値r rimeNotset、pJを含んでいることを見出すことが
できる。この場合にはTtink場所68が、プロセスがタイマ・リスト上にあ
る間に実行されて以前の「タイマ・fイスJ−イブル」オペレージコンにより、
この値にセラ]・された。したがって、Aレジスタは定義の9行l]に従って1
lrjHachine F△LSEにセットサレる。
代りのコンポーネントの全てが再検査されると、プロセスはオペレージEンrm
択的終了(Alternative End ) Jを実行し、その定義に従っ
て、それは、プロセス作業域の0場所に格納されているコード・オフピットをO
レジスタに最初にロー1!シ、それからI PTRレジスタ内のポインタ値をO
レジスタ内のオフセットにより調整する。これによりブOiごスは、選択さJま
た代F)のブDt=−スに適切なオフ1゛・ツI−でブ■、1:、15ム・シー
ケンス中の次の41令を選11Nさせられる。
以トに7 O(:’スの種々の例につい丁説明重る。
L、 、、、、、、−j−
最初に゛、ブ目1フベがf−スケジー1−ルされ−iHいない状況【、′おいで
1り1′;、y人力1命令を、1,7行しくいる優先権1ブ目tニスについ工゛
i1えるつたノーλば、Aレジスタにある飴、たとエバ、り[]yy7 ・L’
シス4Jが14ノr後J 117)ILiを含んl’イる詩に、継続(すること
をプロ1!スが望んでいることを示寸14、を[1−ド1゛きる。り目ツク・レ
ジスタが伯20を含んでいる時に命令!不実行される4)のと46と、、ブ1]
セスt、t[タイマパノ」−1の定義の最初の2行に従つ(、タロツク・レジス
タ内のfit”[h”=ヘレーンスタ内に示され[いるものの後I゛あるかどう
かを調べる1、4二の例においではその条件が適用されるから、ブI]1!スを
デスノlき21−リングすることな;、ノにプロセス1よ続行りる。
廻−−−?、
これは、デスケシ1−−−ルさhるブ「ルスによる1−タ、イマ人力」のオペレ
ージ」ンを承りもので・、第9Δ〜シ〕1)図を参照する。それらの図は、グ[
IセスXの作業域60に対する種々の語場所にお(〕る変化と種々のレジスタの
内容を示すものである。第9A図は「タイマ人力」命令の実行直前の位置を示す
、Aレジスタ54は、クロック・レジスタ81内の時間が30の後である時のみ
、プロセスがスケジュールされることを望んでいることを示す(lfi30を含
む。
クロック・レジスタは現在は時間値20を含んでおり、妥当時間フラッグ84が
Oにセットされて、優先権1タイマ・リスト上にはプロセスがないことを示す。
「タイマ人力」オペ1ノーシコンが実行されると、クロック・レジスタの内容が
Aレジスタの内容と比較される。[タイマ入力−1の定義の541′Aンワード
から述べられているように、特殊な値1’ waiting、I) Jがプロセ
スXの状態場所67に書込まれ、プロヒスをスケジュールすべき時間をAレジス
タが含むように、Aレジスタ内の値が増加させられる。°ぞれからそのプロセス
はタイマ・リストに挿入され、位置1.1第9B図に示すようなものぐある。こ
れによりクロック・レジスタはいまは22に増加させられたことになる。、妥当
時間フラッグ84はいまは値1にセットされて、タイマ・リス1へ上に少くとも
1つのプロレスがあることを示す。次の時間レジスタ854よ値31を含む。こ
の値は、タイマ・リスト上の最初のプロセスをスケジュールすべき時間である。
TPTR場所90は、タイマ・リスト・上の最初の(そして唯一の)プロセスで
あるプロはスXの作業域ポインタを含む。プロセスXの作業域はそれの命令ポイ
ンタ(I l〕T R>を場Fff!65に含み、特殊な値[waiting、
[I Jを場所67に含み、特殊な舶rnot procCss、p Jを場所
68に含んて゛、これがタイマ・リスト上の最後のプロセスであることを示し、
場所69に値31を含んでブ[]セスを再スケジュールできる時間を示す。
1分な時間が杼道しで、クロック・レジスタが値31に増加した時には、位置は
第9C図に示づようなものである。夕日ツク・レジスタの傾がいまIit次の時
間レジスタの値に等しく、妥当時間フラッグが鎮1に1″!ツトされるから、夕
、イマ・ロジックは時間要求をプロ1!スに対し〔発生する。これによりブ1コ
セッサが値1を1)i’(OCP RIにロードざけられ、かツ「I!andl
erimeRequest J手続さを実行させる。これによりブE]廿スXが
スケジ、11−)しさせられ、妥当時間フラッグがクリへ7され、1− P ’
T’ R場所90がr not proeess、p 、、Iにセットされる。
、これは第9D図に示されている位置である。
W−3
これは、ブ[1t?スをタイマ・リストの11シい位置にある時間順序で挿入さ
せるために、挿入フラッグ82をどのようにり、で用いるかを示すものである。
ブ[]t2スi]LL 、それをデスク゛ジュールさせるタイマ入力動作を実行
1Jる。ブ[1ヒスPは優先権1プロセスであり、かつ実行している唯一のプロ
セスひあると仮定する。また、優先権1タイマ・リスト上で侍っている3つの伯
のブ[1セスがあるということも仮定づる。(れら3つのプロセスは時間25を
持つでいるプロセスXど、時間26を侍っでいるプ[コセスYと、時lid 2
9を持っているブOt!スZとである。第10A図はタイマ入力命令を実行する
直前の位置を示づ゛。プロセスPが実行して43す、Δレジスタが時間27を含
んrいる。クロック・レジスタがlIj間20を含む。タイマ・リストが使用中
であることを示す値1に妥当時間フラッグがレス1−され、タイマ・リスト上の
最ら速いプロセスに関連する時間が25である値25を次の時間レジスタが含む
。そのタイマ・リス]〜[に3つのプロヒスがあることがわかる。
T P T’ RW所90はそれらのプロヒスのうちの最初のプロセスであるプ
ロセスXに対するポインタを含む。プロセスXのTLink uA所68は第2
のプロセスに対するポインタを含み、プロセスYは第3のプロレスZに対するポ
インタを含む。プロヒスZのT1.ink場所68は特殊な値「NotPrOC
O3S、D Jを含む。それは、プロセスZがタイマ・リスト上の最後のプロセ
スであることを示す。そのタイマ・リストは早いリストをR初にし、最近のプロ
ヒスを最後にして順序づIjられていることがわかる。プ0 セスPがタイマ・
リスト入力命令を実行すると、クロック・レジスタとAレジスタが比較され、ク
ロック・レジスタはまだAレジスタの「後」ではないから、特殊な値[wait
ing、p JがプロセスPの状態場所67へ書込まれ、Aレジスタが1だ1)
増加させられて手続きl’ 1nsert 、in timer 1ist l
が実行される。これによって△レジスタ内の値がプロヒスRの作業域の時間場所
69に害込まされ、Bレジスタが丁P丁R場所90における点にセットされ、C
レジスタがT P T R場所90の内容にセットされる。それからタイマ入力
命令が終り、状態場所は第10図に示プようなものである。
挿入フラッグが11r+1にセラ]〜されると、プロセッサにより実行される次
の動作は手続さ[1nsert 5tep Jである。
この手続きの定義かられかるように、これはTレジスタ49にブ[〕セスXに関
連する時間(すなわち25)をロードさゼ、かつそれをプロセスl〕に関連する
時間(すなわち28)と比較する。28は25の「後]であるから、プロセスP
をタイマ・リストに挿入する正しい場所をまだ見つけておらず、[1nsert
5tep J手続きが8レジスタを10セスXのTLink j!i所68に
対するポインタにセットさせ、Cレジスタがその場所の内容をセットさせられる
。それから手続きが終って1nsert f[agをセットされたままにする。
その結果としての状況が第10C図に示されている。
プロセスの次の動作は手続き[1nsert 5tep Jを再び実行づること
である。これはiyJ記したのに類似のやり方で実行され、第10D図に示され
ている状況になる。
再び、プロセッサの次の動作は手続き[1ns13rt 5tep Jを実行す
ることである。しかしこの場合には、プロセスZに関連する時間(すなわち29
)はプロセスPに関連する時間(tなわち28)の模であるから、プロセッサは
挿入フラッグをクリへアし、プロセスPの作業域ポインタをプロセスYのTLi
nk場所68へ書込み、プロセスZの作業域ポインタをプロセスPのTLink
場所68に書込むことにより、プロセスPをタイマ・リストのプロセスYとプロ
セスZの間に挿入する。それから、プロセッサは次の時間レジスタ85をタイマ
・リスト上の最初のプ[]セスに関連する時間にリセットし、妥当時間フラッグ
を値1にセットする。最後に、プロセッサはプロセスPの命令ポインタをプロヒ
スPのIE P T R場所65に店込み、SNPFlag 58を値1にヒツ
トして、プロセッサの次の動作としてプロセスPをデスケジュールさせる。
例 4
これは2つのタイマ入力コンポーネントを有するタイマ選択的プロセスXを示す
。プロセッサXが唯一の実行可能なプロセスであり、プロセスXが優先権1を有
し、最初のタイマ入力コンポーネントが26であり、プロセスXが優先権1を有
し、最初のタイマ入力コンポーネントが26であり、第2のタイマ・リス1−人
カフンボーネントが25であると仮定する。これは第11A〜110図に示され
ている。それらはプロセス作業域60の作業域場所67〜69のための引き続く
状況を示す。第11A図は「タイマ選択的1til始」命令を実行直後の位置を
示す。
状態場所67は特殊な値[enablina、pJを含み、TLink 場所6
8が特殊な値r TimeNotSct、I)Jを含む。最初ノ「タイマ・イネ
イブル」命令が実行される直前にAレジスタは値Machine TRIJ[を
を含み、8レジスタはこのタイマ入力に関連する時間すなわち26を含む。タイ
マ・イネイブル命令が実行されると、プロセッサはT L i n k場所68
を読み、以前に調べられたタイマ入力コンポーネントがないことを示す値「Ti
meNotSet、 D Jをそれが含んでいることを児出寸。したがって、プ
ロセッサはTLink場所68を特殊な蛸r Ti1eSet、p Jにセツト
シ、時間場所69を値26にセットする。これは第11B図に示されている位置
である。第2の「タイマ・イネイブル」命令が実行される直前にAレジスタは値
Hachine丁RUEを含み、Bレジスタは第2のタイマ入力コンポーネント
に関連する時間であるf(125を含む。タイマ・イネイブル命令が実行される
と、プロセッサーはTLink揚所68全所68以前のタイマ入力コンポーネン
トに関連する最も早い時間を時間場所を含/Vでいることを示すr TimeS
et、p Jをぞれが含むことを見出す。したがって、プロセッサは時間場所6
9を読み、25であるこのコンポーネントのために指定された時間が、fiff
26を含んでいる時間場所から読まれた時間より早いことをセ1定する。
したがって、ブot=ツサは新しい値を時間場所に書込み、位置は第11C図に
示づようなものである。
例 5
第12Δ〜12C図に示されているこの例は、2つのタイマ入力コンポーネント
を有するタイマ選択的プロセスPを示寸。このプロセスf)はデスケジュールさ
れない。プロセスPは唯一の実行可能なプロセスであること、プロセスPは優先
権1プロセスであること、第1のタイマ入力コンポーネント内で指定された時間
が26であり、第2のタイマ入力コンポーネントの時間が25であることを仮定
している。「タイマ選択的開始」命令の実行とタイマ入力コンポーネントの検査
は例4において先に述べたようなものであり、「タイマ選択的1!機」命令の実
行直前の状況は第11C図に示すようなものである。「タイマ選択的待機」の最
初の動作は値−1をプロセスPの作業域60の0場所に占込むことである。これ
は複数の代りの〕ンボーネントからコンポーネントを選択4るために使用される
場所である。次に、り[]ツク・レジスタ内の時間が時間場所69内の時間の[
後」であるから、デスケジューリングなしにプロしスPを続行でさること庖゛ブ
E]】ヒラ()は決定り゛る。したかつ−C1ブロセツ1すは特殊なIfi r
Readv、1) Jを状態場所67に占込み、り「」ツク・1ノジスタの値
が時間場所69に書込まれる1、この結果として第2Δ図に示されているような
状況に仕るが、その図におい−Cはクロック・1ノジスタはいまは値31に進ん
でいる。、最初の[タイマ・ディスエイプル]のC(前の位置が第1213図に
示さねでいる。Aレジスタは、「選択的終了」命令から、最初のタイマ人力」ン
ボーネントに関連するフランジ中の命令のシーケンスまでのオフセットを含み、
Bレジスタは値Machine T旧1Fを含み、Cレジスタはこのタイマ・]
ンボーネントに関連する26である時間を含む。イれからプロセスは「タイマ・
ディスエイプル」命令を実行する。その命令はTLink MA所68を読み、
それがlii[TimeSet、D Jを含んでいることを判定1Jる。したが
って、それは偵30を時間場所から読み、30は26の「後」であるから、この
タイマ入力コンポーネントは選択可能である。それからプロセッサは、このコン
ポーネントを選択する手続き「l5ThisSclectcdProcess
Jを実行する。というのは、プロセス作業域のO場所が値−1を依然として含ん
でいるからである。この結果の状況が第12C図に示されている。
いまは第2の々イア人力]ンボーネン1−を選択でき1rや選択的終了命令が実
行されると、プロセスPに対り゛る作2i111は依然として第12図に示寸よ
うなものである。
?j−−刈
第13A−13F図に示され′C−いるこの例は、2つのタイマ入力=〕ンボー
ネントをIT lするタイ7選択的プロt!ス1)を示す。この場合にはブI]
廿スP l;tデスケシフールされる。プ1】ヒスP41−・の実行IjT能な
グ[]ト・スであること、ブ[XIセス【]は優先権1ブOI4スであること、
第1のタイン入力]ンボー、ンン1−内で指定された時間が26であり、第2の
タイマ入力」ンボーネン1−の時間が25であることを仮定し1.いる1、「タ
イン選択的開始−1命令の実行とタイマ入力]ンボーネ′、ン1−の検査は例4
1c 13いη先に−)本べたようなしのて゛あり、「タイマ選択的終了命令の
実行直前の状況は第11C図に示1ようなりのである。「タイマ選択的待機]命
令の裟初の動作り、を値−1をプロセスPの作業域00場所に書込むことである
。7Dセツザは時間場所69内の値をクロック・1.ノジスタの値と比較し、あ
るタイマ入力のためにプロセスを続行できないことを見出し、プロセスの状@場
所67を調べる。(これはl” enabl ing、 DJを含んτ゛いるか
ら、ブI]セスはタイマ・リスト」二に置かれてデスケジュールされる。これは
第13A図に示されている位置である。妥当時間フラッグは、11i1にセット
されて、タイマ・リストが空いていないことを示す。次の時間レジスタは、プロ
しス1〕が実行レディとなるであろう時間である値26を含む。T’ r’ T
’ R場所90はプロセスPの作業域に対するポインタを含み、プロセスPの口
、ink場所68は、それがリス1〜上のQ後のプロセスであることを示す特殊
な値1°not process、p Jを含む。十分な時間が経過すると、例
2において記述されているように「タイマ要求」信号をプロセッサへ送る。その
信号が作られる状況は第1313図に示すようなものである。プロセスが再スケ
ジュールされると位置は第13 C図に示されているようなものである。最初の
「タイマ・ディスエイプル」命令の実行直前の状況は第13D図に示すようなも
のである。タイマ命令が実行されるとTl1nk場所68が読まれ、l” Ti
meSet、[) Jを含むことを見出す。それからプロセッサはこの時間コン
ポーネントに関連する時間、26、を時間場所69内に示されている時間、これ
も26である、と比較する。26は26の「後」ではないから、このコンポーネ
ントは選択できない。したがって、プロセッサは値HachineFΔl−3[
をAレジスタにロードして命令は終了する。プロセスPは第2の「タイマ・ディ
スエイプル」命令を実行する直前の状況は第13E図に示すようなものである。
この命令が実行されることによりこのコンボーネン]・が選択させられて、第1
3F図に示されているような状況になる。
例 7
これは1つのタイマ入力コンポーネントと1つのメツセージ・ヂせネル入力フン
ボーネンI−を有するタイマ選択的プロヒスPを示す。プロセスPは唯一の実行
可能なプロセスであること、それlet優先権1を右−リ”ること、指定された
時間が40であることを仮定している。タイマ・リストFにはブ1]セスはなく
、ブヤネル人力]ンボーネントにより参照されているチャネルは最初【よrRe
adyJであり、タイマ入力コンポーネントは選択できない。この例が第14Δ
〜14[)図に示されている。プロセスPは「タイマ選択的開始」命令を実行し
、−ぞれのレジスタを適切にロードし、「タイマ・イネイブル」命令を実行j゛
る。この結果として第14Δ図に示されている状況になる。チャネルが[Rea
dy Jであるから、[チャネル・イネイブル」命令の実行後の状況は第141
3図に示すようなしのである。てれから、フランジは「タイマ選択的待機」命令
を実行り゛る。クロック・レジスタ内の時間は値11をイj暖る。この時間は、
プロセスPに対する時間場所69に丞されている時間40の後ではない。して、
プロセッサは、「値r Ready、p Jを含んでいる状態場所67を調べ、
したがってクロック・レジスタ内の時間値を時間場所69に書込む。「タイマ選
択的待機」命令の終了後の状況は第14C図に示寸ようなものである。「タイマ
・ディスエイプル」命令の直前の状況が第141)図に示すように実行される。
時間場所69内の時間値12がコンポーネントに関連する時間の[後」ではない
から、タイマ入力コンポーネントは選択されない。それから、ヂャネル入カコン
ボーネン1〜を選択する[チャネル・ディスエイプル1命令をプロセスが実行す
る。
以上の例から、[タイマ・ディス1イブル]命令が実行されると、プロセスの時
間場所6つに格納されている時間が、イれを基にしてタイマ・ディスエイプル命
令が実行されるような全てのタイマ入力に対して一定のままである標準時間であ
ることがわかるであろう。これにより、種々のタイマ入力が、引き続く「タイマ
・ディスエイプル」命令が実行されるにつれて時間の経過のために変化する時間
と比較されることが避けられる。
匠−−1
これは、時間40を指定する1つのタイマ入力コンポーネントと、ブ〜ヤネル7
0を通る1つのチャネル入力コンポーネントを有するタイマ選択的ブOt?スで
あるプロセスPを示す。この例では、タイマ・リス1〜上に最初に2つのプロヒ
スであると仮定している。それらのプロセスは時間34.54を指定する。メツ
セージ・チャネルは最初は[ready Jではないが、タイマ・リスト上の最
初のプロセスがレディになる前に1−ready Jとなる。タイマ選択的プロ
セスを実行するために、プロセスは「タイマ選択的開始」命令と、一方のタイマ
入力コンポーネントのための[タイマ・イネイブル」Aベレーションと、チャネ
ル70のための「チャネル・イネイブル」Aベレーシ」ンを最初に実行する。そ
うすると位置は第15Δ図に示されているようなものである。プロセスPはまだ
デスケシコールされておらず、[状態Jlu所67が「enabling、pJ
I;Z 初M 化6れて、プロセスが代りの入力を実行していることを示す。
TLink場所68はgtij−TimeSet、p Jにセットされていて、
タイマ入力が調べられたことを示す。「時間」場所69は、調べられた任意のタ
イマ入力のうちの最も早い時間にセットされている。その最も早い時間は、この
場合には40であって、この時間40は調べられた唯一のタイマ入力である。タ
イマ・リストはスケジューリング時間35 +’ 55をそれぞれ有する2つの
デスケジュールされたプロセスXとYを有する。それから、プロセッサはプロセ
スPに対する「タイマ選択的待機」命令を実行する。これは、「レディ」であっ
たチャネル入力がなかつたこと、および、クロック・レジスタが第15A図に時
間11を含むから、プロセスPがタイマ入力を続ける時間にまだ達しておらず、
したがってプロセスPがタイマ・リストに挿入されて、デスケジュールされるこ
とをプロセスPの「状態」場所67がら見出すであろう。この結果として第15
8図に示されている位置になる。リンクされたタイマ・リストはいまは時間的な
順序で全部で3つのプロセスX、P、Yを有する。
出力プロセスがそのチトネルを通って出力しようとしているために、ある時間だ
けRれてチャネル70は「レディ」となる。そのチ1アネルはプロセスPの記述
子を含んでいるから、プロセスPはスケジュールされるようになり、[タイマ・
アイスエイプル」命令を実行する前にそれのレジスタをロードして第15C図に
示すような状況となる。
次に、プロセスは「タイマ・ディスエイプル」動作を実行し、これはプロセスP
のためのr TLink IIA所]68を読み、タイマ・リス]−がタイマ・
リスト上の次のプロセスに対する作業域ポインタを含んでいるから、プロセスが
タイマ・リスト上に依然としであることを決定する。プロレスPがそのリスト上
に依然としであるから、そのタイマ入力コンボーネン1−のための時間がまだ来
ず、したがってタイマ・コンポーネントは選択できない。したがって、Aレジス
タはHachiner^LS[にセットされ、手続ぎl delete fro
m timer l1stjが実行される。これによりDELETE r−:c
Aaが値1にセットされ、BレジスタにTPTR場所90に対するポインタをロ
ードし、CレジスタにTPTR場所の内容をロードする。てれがら命令が終って
第15D図に示すような位置を残す。D E L−E 1− EF L、 A
Gが値1にセットされているから、プロセスの次の動作は手続きl delet
e 5tep Jを実行することである。
T P T r<場所がプロセスXの作業域ポインタを酋んでいるから、そのポ
インタは、Cレジスタに最初にD−ドされるプロセスXの作業域ポインタであろ
うし、したがって手続きr dcletcstep Jの実行においてrdQl
ete 5tep Jの定義の2行目の条件が適用されて、Cレジスタがプロセ
スPの作業域ポインタを含まない。したがって、「delete 5tep J
の定義の5.6行目に従って、プロセスは、Bにブ1コセスXのTLink場所
に対するポインタをロードし、Cレジスタに8レジスタにより指された場所の内
容、すなわち、プロセスPの作業域に対するポインタ、をロードすることにより
、プロセスはタイマ・リスト中の次のプロセスへ歩進する。これは第15E図に
示されている状況である。そこから手続き[delete 5tep Jが終了
し、DELETEFLAGが依然としてセットされているから、ブロセツナの次
の動作は手続きrdelete 5tep Jを再び実行することである。した
がって、手続き「delete 5tCp Jの7行目の条件が適用され、Cレ
ジスタがプロセスPである現在のプロセスの作業域ポインタをいま含むであろう
ことがいまわかるであろう。これは、リストから削除すべきプロセスがいま見出
されており、「dclete steρ」の定義の9行目に従り゛てDELET
E FLAGがOにクリヤされる。これにより、タイマ・リストからのそれ以上
の削除スデツブが阻1トされる。rdelctc 5tep Jの定義の10.
11行目に従って、プロセスPのために丁1.ink場所68に現在保持されて
いる(ifl(すなわち、プロセスYの作業域に対する作業[)をロードし、そ
れからCレジスタからの値を、プロセスXのためのTLink g所である、B
レジスタにより示されている場所に書込むことにより、プロセスPがタイマ・リ
ストから除去される。いいかえると、プロセスXのTLink場所の内容が変え
られて、プロセスPの作業域に対するポインタをプロセスYの作業域に対するポ
インタでdき換える。それから、タイマ行列上に残されているプロセスがあるか
どうかを、rdelete 5tep J手続きの13行目に従ってプロヒッザ
が調べる。その手続きにおいては、BレジスタにTPTRW所の内容がロードさ
れる。定義の15行目に従って、これが値[not procass、p Jを
有するものと1Jると、リストにはプロ1ごスtit残されていない。そこから
、17行1]に従って妥当時間フラッグが零にセットされる。一方、定義の18
行[lに従ってl’not proccss、p 1以外の値が見出されたと4
−ると、タイマ・リスI−,1−に別のプロセスがγj’ lf’f L/、定
への20行[I l、:従って、[:!レジスタにより示されているプロ1?ス
の時間場所69から時間をとることにより次の時間レジスタがル進される1、最
後に、タイマ・リストからプロセス1)を削除した後で、Ifl I’ Tim
cNotSet、pjが、手続き「delete 5tep 、1の定義の21
行目に従って、プロセスPの■110に場所6Bに書込まれる。この結果として
第15F図に示されている位置になる。ブ0しスPはもはやタイマ・リストート
にないが、依然と1ノで現在スケジュールされているプロセス′Cある。したが
って、それは「チャネル・アイスエイプル」である次の命令を実行する。これは
ブ1コセスPの作業域のO場所に値−1を見出し、したがってチャネル70がプ
ロセスへの入力のために選択される。次の命令[選択的終了1が終った時に]−
ドオフセットがプロセスPのための命令ポインタに加えられて、チl’ネル入力
の選択に従ってプログラムの正しい部分までプロセスが動くように、プロヒスP
のための作業域のO場所に適切なコード・オフセットがロードされる。
メツセージ・チャネルまたはタイマからの選択的入力を実行するプロセスのため
のプログラムの例このプログラムの例は、フライホイールの1秒間当りの回転数
+ iit C1寸ろよ−)に構成されている。プしlセス411rota口旧
11と呼ばれるヂ17、ンルと、rrosJ(これは1秒間当りの回転数73−
表1(−)と呼黍、【れ6チヤネルどの2つのチャネルを(0じて通仏4るよ)
に構成される。−ノライホ?−ルが1回転を絡;(るrびにブpンル(rota
t 1onjから人力寸ろよ)に7′ロレス【、を構成される。ゾ[]セスが所
定の時間の梵牛(に応答′Cきるよ−)に、プロ1?スはタイマ入)i 6受【
ノ・5ことがCきる。この例し二おいでは、所定の時間は1秒間−の連続il′
る杆過て・dうる1、ブ1111セスは、1秒間に′Fじた回転数21t・−ン
ルrrps:を通じて毎秒出力するように構成される。、l−のプログラムにお
い−(は、下記のような付加表記法〃使用され;5:−
ブ0レッリのり[lツクの現在の値はNOWで表される。
0CCallはプロセス
変数:=NOW
はブ[1[・ツリーのり1]ツクの現在の偵を変数に割当゛Cる。
[クイン1人力μ上記のように表されるWAIT NOW A [−丁 ERt
この入力コンポーネントは、プ【]セッサ、り[]ツクが時間tのAF丁[:#
(のrXi間を保持するまC1プロ廿スを進めることがないことを指定する。
このプロヒスのためのプログラムは下記の通りである:1゜ VAR[:ndO
flntC1’Val、 Rotations :2、 3[Q
3、 Rotations := 0
4、 rndONntarva! ニー N0II5、 EndOflnter
val := EndOflnterval + 100006、 WHIl、
E TRUE
7、 ^1■
8、 Rota口on ? ANY
9、 notations := Rotations ” 110、 −^I
T NOW 八I’T[REndOflntervalll、 5EQ
12、 rsp : Itotations13、 Rotations :=
014、 [ndOrlnterval := rndoflntcrval
+このプログラムの1行目は、このプロセスが2つの変数を使用することを指
定゛する。ぞれらの変数の一方は「Rotations Jと呼ばれるもので、
1秒間に行われる回転の数を数えるために用いられる。他方の変数[[ndON
nterva! Jは、現在の1秒間の終りを示すブロセッリのクロックの値を
記録するために使用される。、2行目は、シーケンスを3〜6行に記述されてい
るところに従うことを指定する。3行目においては、回転数のカウントがOにセ
ットされる。4行目においては、5行目りり1秒間の終りのためのブロレッリの
クロックの値を8[C3できるように、ブロセッザのクロックの現在の値が読ま
れる。5行目において用いられる値10000は1秒間におGJるプロセッサの
クロック増分の回数である。6行目は、7行目と14行目の間をたどる選択的ブ
1]セスを連続して繰返えJべきことを示1゜7行目はプロセスをタイマ選択的
プ[]セスとして識別する。8行目と10行目は2つの選択的人力を記述する。
8行目は、フライホイールが1回転を終った時にブー11ネルr rOtati
o口]からの信号を人力できる。この入力が選択されるものとすると、9行[1
の対応するプロヒスが実行され、このブ[]L!ス実行により現在の1秒間にお
いて数えられた回転数が増加さ1!られる。10行目におけるタイマ人力は、現
在の1秒間が終った時に、選択できる。プロセスへのこのタイマ入力が選択され
るものとり−るど、12.13.14行目の対応するプ[1しスが実行される。
12行目は、1つの期間中に生じた回転数のカウントを示づ出力をチャネルl”
’rspJを通じで与える。13行[]は回転カウントをOリセッ1−シ、14
行目は次の1秒の期間の終りの時間を計nする。
このブ[]グラム庖実現する命令シーケンスは下記の通りであるニー
命令シーケンス 0CCa鵬による
VAREndOflnterval。
Rotations :
EQ
1、 ldc O70Rotations:=02、 s口 4 1 4
3. Dfix 1 t4 1 EndOfInterval :=[ndOf
lnterval
+10000
4、 opr Idtimcr 13 155.5t13 13
6、1dl 3 0 3 EndOf’[nterval:=OW
7、 pfix2 14 2
8、 pfix7 14 7
9、 pfixl 14 1
10、 adc 10000 8 0
11、 stl 3 1 3
12、 11: WIIILFTRU[13、pfix2 14 2 ALT
14、 01)r talt 13 115、1tllp 1 2 1 Rot
ation?^MY
16、 ldc 1 γ 1
16a、 Dfix 1 14 1
17、 opr cnbc 13 1318、1dl 3 0 3 WAITN
OW^FTER
End(Hlnterval
19、 ldc 1 7 1
20、 pfix2 14 2
21、 0pr enbt 13 3
22、 pfix2 t4 2
23、 oB ta!twt 13 224、1dlp 1 2 1 Rota
tion?NY
25、 ldc 1 7 1
26、 ldc (12−12) 7 026a、 prix 1 14 1
27、 opr disc 13 1428、 1dl 3 0 3 WAIT
旧」rTrR
[nd04rntcrva1
29、 ldc 1 7 1
30、 Idc (L3−1.2) 7 1031、 pfix2 14 2
32、 Opr dist 13 4
32a、 1)fix 1 14 1
33、 opr attend 13 1034、 L2;
35、 1dlp 0 2 0 Rotation ?NY
36、1dlp1 2 1
37、 Idc 1 7 1
38、 opr bcnt 13 7
38a、 pfix 1 14 1
39、 opr in 13 e
40、1dl 4 0 4 flotations:=Rotations +
1
什 adc 1 8 1
42、 stl 4 1 4
43、 jL4 9 14
44、 1.3ニ
ーへIT No讐 ^FT[R
1′ndof[ntcrval
S[Q
45、 Idlp4 2 4 rsp’!Rotations
46、 1dlp2 2 2
47、 ldc 1 7 1
48、 01)r bcnt 13 749、 pfixl 14 1
50、 Opr 01lt 13 7
51、 ldc O70Rotations:=052、 sN 4 1 4
53、 ldl 3 0 3 EndOflntervalsEndOfrnt
erval
+ 1ooo。
54、 pfix2 14 2
55、 pfix7 14 7
56、 pfix 1 14 1
57、 adc 10000 8 0
58、 stl 3 1 3
59、 14:
60、 nfix3 15 3
61、 Jl、1 (−50) 9 14この命令シーケンスに示すように、1
.2行目は回転数カウントをOに初期化する。3.4行目は、ロード・タイマを
動作させてブロセッリ・クロックを読むために、pfix関数を使用する。6〜
11行目は引き続(pfix関数と加算定数関数(add constant
function)を用いて、1秒間隔の終りにブロセッザのクロックの値を計
算する。タイマ選択的入力信号は13行目で始まり、13.14行目は、「タイ
マ選択的開始」を動作させるためにpfix関数を使用する。15行目はポイン
タをチャネル「rotatton4にロードし、16a、17行目は1−チャネ
ル・イネイブル」を動作させるためにpfix関数を使用する。18行口は変数
1’[ndOrlnterval Jをロードする。19行目はガード値をロー
ドし、20.21行目は[タイマ・イネイブル]を動作させるためにpfix関
数を使用する。22.23行目は「タイマ選択的待機」を実行する。24〜27
行目はチャネル入力を調べる。24行目はチャネル[rotationJを識別
する。25行目はガードfiHachineTRUEをロードする。
26行[1は、ブi7ネル入力が選択される時に必要となる命令Δノセッ1−を
【]−ドする。26a、27行[1はAベレーシ・」ン[ヂ17ネル・ディスエ
イプル]を実行する。
28へ・32行[11よタイマ入力を調ぺる。28行目は変数r EndOfl
nterva! Jをロードする。29行[1はガード(1らをロードし、30
行1」は、プロセスがタイマ人力を選択1−る1・1に必要である命令オフセッ
トをロードし、31.32行[1は「タイマ・fイスエ・イブル1を大行する。
32a。
33行目[選択的終了」を実行りる。35行目は、ブセネル入力が選択される時
に実(了される最初の命令である。
45行目は、タイマ入力が選択される時に実行される最初の命令である。
本発明は上記の例の詳細事項に限定されるものではない。
15人昭62−500821 (2B)ANhJEX To τ1b= YNT
EF+ATrONAL 5EARC!(RXPORT ON