JPH0533409B2 - - Google Patents

Info

Publication number
JPH0533409B2
JPH0533409B2 JP50440784A JP50440784A JPH0533409B2 JP H0533409 B2 JPH0533409 B2 JP H0533409B2 JP 50440784 A JP50440784 A JP 50440784A JP 50440784 A JP50440784 A JP 50440784A JP H0533409 B2 JPH0533409 B2 JP H0533409B2
Authority
JP
Japan
Prior art keywords
timer
time
location
register
list
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.)
Expired - Lifetime
Application number
JP50440784A
Other languages
Japanese (ja)
Other versions
JPS62500821A (en
Inventor
Maikuru Deiuitsudo Mei
Rojaa Maaku Shefuaado
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.)
Inmos Ltd
Original Assignee
Inmos Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Inmos Ltd filed Critical Inmos Ltd
Publication of JPS62500821A publication Critical patent/JPS62500821A/en
Publication of JPH0533409B2 publication Critical patent/JPH0533409B2/ja
Granted 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4825Interrupt from clock, e.g. time of day

Description

請求の範囲 1 複数の同時プロセスうちのいくつかは時間に
依存し、各同時プロセスが複数の命令を有するプ
ログラムを実行するコンピユータシステムにおい
て、 前記プロセスを識別するために各プロセスに対
して第1のポインタを形成するステツプと、 前記プロセスに対するプログラム段階を指示す
るために各プロセスに対して第2のポインタを形
成するステツプと、プロセツサによる実行のため
に、このプロセツサによつて実行されている現在
のプロセスを指示する複数のプロセスをスケジユ
ーリングするステツプと、前記プロセツサによつ
て実行されるプロセスの時間に依存する収集を識
別するステツプと、を備え、 前記収集内のプロセスは次のプロセスによつて
指示される最も早いスケジユーリング時間を有
し、各スケジユーリング時間は前記収集内の各プ
ロセスに対して与えられ、 前記現在のプロセスの実行は、現在のプロセス
が実行を継続しない前にスケジユーリング時間を
示す、時間に関連する命令を含む命令と、 (a) 前記スケジユーリング時間が既に到来したか
どうかを決定すること、 (b) 前記スケジユーリング時間がまだ到来してい
ないとの決定に応答して (i) 前記プロセスに対する第2のポインタを記
憶し、 (ii) 前記現在のプロセスの実行を停止し、 (iii) 前記停止したプロセスを前記収集内に加え
てそのスケジユーリング時間が収集内で順序
づけられたシーケンスとなるようにし、 (iv) 更にスケジユールされるプロセスを指示す
るために現在のプロセスの指示を設定する ことによつて前記時間に関連する命令の実行に対
して応答する命令と、のシーケンスを実行するス
テツプと、 前記次のプロセスのスケジユーリング時間の後
の時刻で、前記次のプロセスを指示するために現
在のプロセスの指示を設定することによつて現在
のプロセスを停止する命令の実行に応答し、かつ
前記次のプロセスに対する第2ポインタによつて
指示されたプログラム段階で前記次のプロセスを
実行するステツプと、 を備えていることを特徴とする同時プロセスを作
動させる方法。 2 時間に関連する命令の実行時に、前記スケジ
ユーリング時間が既に到来したかどうかを決定す
るステツプが前記スケジユーリング時間が既に到
来していることを示している時には、前記現在の
プロセスは停止しないで実行を継続することを特
徴とする請求の範囲第1項記載の方法。 3 (a) 各々が複数のアドス可能なメモリ位置を
有する作業域を各プロセスに対してメモリ内に
設け各作業域の前記位置に対応するプロセスの
関連する変数を記憶するステツプと、 (b) リスト内の各プロセスの作業域内で、前記プ
ロセスに対するスケジユーリング時間の指示、
及び次のスケジユーリング時間を有するプロセ
スに対する前記第1のポインタの指示を与える
ことによつて時間に依存する収集を形成するス
テツプと、 を更に備えていることを特徴とする請求の範囲第
1項又は第2項記載の方法。 4 複数のプロセスのスケジユーリングが、スケ
ジユーリング時間を待たないで前記プロセツサに
よる実行を待機しているプロセスのスケジユール
された収集を識別するステツプを含み、前記次の
プロセスが前記スケジユールされた収集に加えら
れて、そのスケジユーリング時間後に時間に依存
する収集から取除かれることを特徴とする請求の
範囲第1項乃至第3項のいずれかに記載の方法。 5 前記スケジユールされた収集がリストとして
形成され、スケジユールされたリスト上の各プロ
セスがその作業域内で前記リスト内での次のプロ
セスに対する第1のポインタの指示を記憶したこ
とを特徴とする請求の範囲第3項及び第4項記載
の方法。 6 各プロセスに対する優先権を指示するステツ
プ、及びプロセスの第1と第2の時間に依存する
収集を設けるステツプを更に備え、前記第1の時
間に依存する収集は共通の第1優先権のプロセス
を備え、前記第2の時間に依存する収集は前記第
1優先権とは異なる共通の第2優先権のプロセス
を備えていることを特徴とする請求の範囲第1項
乃至第5項のいずれかに記載の方法。 7 プロセス間のデータ通信を可能にするために
複数のアドレス可能な通信チヤネルを介して同時
プロセス間のメツセージを伝送するステツプを更
に有し、2つのプロセスが対応するプログラム段
階にあるときに2つのプロセス間のメツセージ伝
送を完了するように、共通の命令を含んでいるプ
ログラム内の一連の命令を実行することを特徴と
する請求の範囲第1項乃至第5項いずれかに記載
の方法。 8 代替時間に関連する複数のコンポーネントを
有するプロセスを実行するステツプと、各コンポ
ーネントに関連する時間を指示するステツプと、
コンポーネントのいくつかに関連する時間が既に
生じたかどうかを決定するステツプとを更に備え
ていることを特徴とする請求の範囲第1項乃至第
7項のいずれかに記載の方法。 9 前記代替時間に関連するコンポーネトのいく
つかに関連づけられた最も早い時間がまだ生じて
いない場合に前記プロセスを非スケジユール化す
るステツプと、前記プロセスを時間に依存する収
集に加えるステツプとを更に備えていることを特
徴とする請求の範囲第8項記載の方法。 10 プロセスに関連するメモリ位置に、前記プ
ロセスの状態を指示するとともに前記プロセスが
代替コンポーネントを有するものであることを指
示する少なくとも1つの特別な値をロードするス
テツプを更に備えていることを特徴とする請求項
8又は9記載の方法。 11 代替コンポーネントの少なくとも1つが用
意されているとき前記プロセスが非スケジユール
化される必要がないことを示す第1の特別の値か
又は、代替コンポーネントの1つに関連する時間
の到来を待機中にプロセスが非スケジユール化さ
れることを示す他の特別の値を前記メモリ位置に
ロードするステツプを更に備えていることを特徴
とする請求の範囲第10項記載の方法。 12 前記代替コンポーネントのどれもがまだ選
択されていないことを示す更に他の特別の値を、
前記プロセスに関連するメモリ位置にロードする
ステツプと、前記更に他の特別の値に応対して、
プロセスがスケジユールされているときに前記代
替コンポーネントの1つを選択するステツプとを
更に備えていることを特徴とする請求の範囲第7
項乃至第11項のいずれかに記載の方法。 13 前記代替コンポーネントの少なくとも1つ
は1つの通信チヤネルを介して入力するステツプ
を備え、時間に関連するコンポーネントの最も早
い時間が既に生じたかどうかを決定するステツプ
と、通信チヤネルがメツセージ入力の待機中であ
るかどうかを決定するステツプとを更に備えてい
ることを特徴とする請求の範囲第7項乃至第12
項のいずれかに記載の方法。 14 メモリと、その内の少なくともいくつかは
時間に依存する複数の同時プロセスを実行するた
めのプロセツサと、このプロセツサによつて実行
されている現在のプロセスを指示するためのアド
レス可能な記憶素子を有しているスケジユーリン
グシステムと、各スケジユーリング時間の後で前
記プロセツサによる実行を待機中の収集を形成す
る1以上のプロセスを識別するためのタイマリス
トと、を備え、このタイマリストは、そのスケジ
ユーリング時間が生じた後前記プロセツサによる
実行に関する収集内の次のプロセスを指示するプ
ロセス指示手段を有しているマイクロコンピユー
タにおいて、 前記収集内のプロセスが実行待機になつた時に
各々スケジユーリング時間を指示するために記憶
場所69が前記タイマリストに関連づけられ、早
いスケジユーリング時間を有する前のプロセスと
遅いスケジユーリング時間を有する後のプロセス
との間の時間的に順序づけられた、前記収集内の
位置に、更に1つのプロセスを加えるための制御
システム13,14,15,32が設けられてい
ることを特徴とするマイクロコンピユータ。 15 前記メモリは各プロセスに対して、アドレ
ス可能な記憶場所を有する作業域60を有し、こ
の作業域の各々は前記時間的に順序づけられたリ
スト上のプロセスに対して、 (i) 対応するプロセスに関連した変数を記憶する
ための第1の記憶場所と、 (ii) 対応するプロセスに関するプログラム段階の
ための第2記憶場所65と、 (iii) 前記時間的に順序づけられたリスト上の次の
プロセスを指示するための第3の記憶場所68
と、 を備えていることを特徴とする請求の範囲第14
項記載のマイクロコンピユータ。 16 記憶手段52,56,66はプロセツサ1
2による実行を待機しているスケジユールされた
プロセスの収集を識別するために与えられ、その
スケジユーリング時間が到来した後の前記タイマ
リストから取除くと同時に1つのプロセスを前記
収集に加えることを特徴とする請求の範囲第14
項又は第15項記載のマイクロコンピユータ。 17 タイマリストとスケジユールされた収集の
各々がプロセス作業域60を介してリンクされた
リストを有するように、スケジユールされた収集
内の次のプロセスを指示するための付加的な記憶
場所66を各プロセスの作業域が有していること
を特徴とする請求の範囲第15項及び第16項記
載のマイクロコンピユータ。 18 アドレス可能な通信チヤネル70,25が
プロセス間の同期化されたメツセージ伝送を可能
にすることを特徴とする請求の範囲第14項乃至
は第17項のいずれかに記載のマイクロコンピユ
ータ。 明細書 本発明はマイクロコンピユータを含むコンピユ
ータに関するものであり、とくに時間に依存する
プロセスを実行できるマイクロコンピユータに関
するものである。 発明の背景 われわれのヨーロツパ特許明細書0110642には、
プロセツサがそれの処理時間を複数の同時プロセ
スの間で共用できるようにするスケジユーリング
手段を含むマイクロコンピユータが記述されてい
る。実行を待つているスケジユールされたプロセ
スのリンクされたリストを形成できる。現在実行
中のプロセスのスケジユールを解除でき、要求が
あつた時にあるスケジユールされたリストに加え
ることによりプロセスをスケジユールできる。こ
れは、たとえば、メツセージ伝送が行われる時に
2つのプロセスがプログラム・シーケンスの対応
する段階でいることを求められる場合に、それら
2つのプロセスの間でメツセージの伝送を行う際
に生ずることがある。しかし、その特許明細書に
は、あるプロセスのスケジユーリングをそのプロ
セスに対して指示された時間に従つて行うことが
できるような、時間に依存するプロセスの使用に
ついては記述していない。 発明の目的 本発明の目的は、時間に依存するプロセスの実
行に使用する改良したマイクロコンピユータを得
ることである。 本発明の別の目的は、プロセツサがそれの処理
時間を複数のプロセスの間で共用するように複数
の同時プロセスをスケジユーリングする手段と、
1つまたはそれ以上のプロセスのための時間依存
パラメータに応答する手段とを有する改良したマ
イクロコンピユータを得ることである。 マイクロコンピユータという用語は、集積回路
を全体として基にした小型コンピユータに関する
ものであるが、コンピユータがどれだけ小型であ
るということについての制約を課すものではな
い。 発明の概要 本発明は、メモリと、プログラムに従つて複数
の同時プロセスを実行するように構成されたプロ
セツサとを備え、そのプログラムはプロセツサに
より逐次実行するための複数の命令より成り、前
記プログラムは(1)複数のレジスタおよびそれらの
レジスタとの間でデータの転送を行うために用い
るデータ転送手段と、(2)各命令を受け、プロセツ
サレジスタの1つにその命令に関連する値をロー
ドする手段と、(3)前記データ転送手段と前記レジ
スタを受けた命令に応じて制御し、その命令に従
つてプロセツサを動作させる制御器とを備えるマ
イクロコンピユータにおいて、 (a) あるプロセスがプロセツサにより実行される
ようになつた時にそれを指示する手段を含み、
複数の同時プロセスの間のプロセツサの処理時
間を共用するスケジユーリング手段と、 (b)(1) 1つまたはそれ以上のプロセスを識別し
て、それらのプロセスがプロセツサにより実
行されるようになるまでに所定の時間待つプ
ロセスの少くとも1つのタイマ収集(timer
correction of process)を形成する手段と、 (2) 前記タイマ収集において各プロセスが実行
できるようになるスケジユーリング時刻を指
示する手段と、 (3) 前記タイマ収集に1つまたはそれ以上の別
のプロセスを加える手段と、 (4) 前記タイマ収集からプロセスを除去する手
段と、 を含むプロセス時間制御器と、 を含むマイクロコンピユータを提供するものであ
る。 前記タイマ収集中のプロセスまたは各プロセス
のスケジユーリング時間に依存して時間順序づけ
られたシーケンスを形成するために、前記タイマ
収集中のプロセスに指令するための手段をなるべ
く構成する。 収集中に最も早いスケジユーリング時間を有し
て、収集中に最初のプロセスを形成する前記タイ
マ収集中のプロセスを指示するために、アドレス
可能なメモリ場所を備えることができる手段をな
るべく設ける。 前記メモリは、プロセスに関連する変数を記録
するための場所を含む複数のアドレス可能な場所
を有する作業域をその各プロセスへなるべく与え
るようにし、前記プロセツサレジスタの1つは、
現在のプロセスの作業域のアドレスを識別する作
業域ポインタ値を保持するように構成される。 各プロセスの作業域は、タイマ収集中の以後の
プロセスのためのポインタ値を保持するリンク手
段をなるべく含むようにする。そのリンク手段
は、あるプロセスがタイマ収集中にある時に、そ
の収集中の次のプロセスを指示するために用いら
れ、それによりプロセスのリンクされたタイマリ
ストを指示する。 そのプロセスがそのタイマリスト上の最後のス
ケジユーリング時間を有するプロセスであること
を指示するために、特殊な値を保持するために各
プロセス作業域の前記リンク手段をなるべく構成
する。 各プロセスのスケジユーリング時間を指示する
ために、そのプロセスの作業域はアドレス可能な
場所をなるべく含むようにする。 ある好適な実施例においては、このマイクロコ
ンピユータは、複数の優先権のうちの1つを各プ
ロセスに割当てる手段を含み、前記時間制御器
は、前記タイマ収集を2つ以上形成する手段を含
み、各タイマ収集は、別のタイマ収集中のプロセ
スの共通の優先権とは異なる共通の優先権のプロ
セスを有する。 スケジユーリング手段は、 (1) プロセツサにより実行されている現在のプロ
セスを指示する手段と、 (2) プロセツサによる実行を待つているスケジユ
ールされた収集を形成する1つまたはそれ以上
のプロセスを識別する手段と、 (3) 前記スケジユールされた収集へ1つまたはそ
れ以上の別のプロセスを加える手段と、 (4) プロセツサにより実行すべき前記スケジユー
ルされた収集中の次のプロセスを指示する次の
プロセス指示手段と、 をなるべく含むようにし、プロセツサによる前記
現在のプロセスの実行を終らせるために、選択さ
れた命令と、そのプロセスを現在のプロセスにす
るために前記次のプロセツサ指示手段とに応答す
るようにプロセツサは構成され、それにより、そ
のプロセツサはそれの処理時間を複数の同時プロ
セスの間で共用させるために動作させられる。 スケジユールされる収集はなるべく、結合され
たリストであるようにもする。 2つ以上のスケジユールされた収集におけるプ
ロセスの優先権とは異なる共通優先権のプロセス
を有する。 本発明は、相互に接続された複数の前記マイク
ロコンピユータの回路網も含む。各マイクロコン
ピユータは通信チヤネルを有し、それらの通信チ
ヤネルには1つまたはそれ以上の通信リンクが設
けられる。それらの通信リンクは別の装置の類似
のリンクへ専用に接続され、それにより、種々の
マイクロコンピユータにおける同時プロセスの間
で同期してメツセージ伝送を行えるようにする。 複数の別の時間関連コンポーネントでプロセス
を実行するようにマイクロコンピユータをなるべ
く構成する。そのマイクロコンピユータには、各
コンポーネントに関連する時間を指示する手段
と、各コンポーネントに関連する時間をテストす
る手段と、あるコンポーネントに関連する最も早
い時刻がまだきていないかどうかを決定する手段
とが設けられる。 あるプロセスを実行する時間の長さを指定する
手段と、その時間長に応答して、その時間が経過
した後で現在のプロセスの実行を停止すること、
およびそれをあるスケジユールされた収集に加え
ることによりそのプロセスを再スケジユールする
ことをプロセツサに行わせる手段とをなるべく設
ける。
Claim 1: In a computer system executing a program, some of which are time-dependent, each concurrent process having a plurality of instructions, the computer system comprises: forming a second pointer for each process to point to a program step for said process; scheduling a plurality of processes to direct processes; and identifying a time-dependent collection of processes executed by the processor, wherein the processes in the collection are executed by the next process. each scheduling time is given to each process in said collection, and the execution of said current process is terminated before the current process continues execution. instructions including time-related instructions indicating a scheduling time; and (a) determining whether the scheduling time has already arrived; and (b) the scheduling time has not yet arrived. (i) storing a second pointer to the process; (ii) stopping execution of the current process; and (iii) adding the stopped process to the collection and adding it to its schedule. (iv) further directing the execution of instructions related to said time by setting the current process's instructions to indicate which processes are to be scheduled; a step of executing a sequence of instructions to direct the next process at a time after the scheduling time of the next process; and executing the next process at a program stage indicated by the second pointer to the next process in response to execution of an instruction to stop the current process. How to run concurrent processes to. 2. Upon execution of a time-related instruction, if the step of determining whether the scheduling time has already arrived indicates that the scheduling time has already arrived, the current process stops. 2. The method according to claim 1, wherein the method continues execution. 3 (a) providing a work area in memory for each process, each having a plurality of addressable memory locations, and storing associated variables of the process corresponding to said locations in each work area; and (b) within the work area of each process in the list, scheduling time instructions for said process;
and forming a time-dependent collection by providing an indication of the first pointer to a process having a next scheduling time. or the method described in paragraph 2. 4. Scheduling of a plurality of processes includes the step of identifying a scheduled collection of processes waiting for execution by said processor without waiting a scheduling time, said next process receiving said scheduled collection. 4. A method according to any one of claims 1 to 3, characterized in that the method is added to and removed from the time-dependent collection after the scheduling time. 5. The method of claim 5, wherein the scheduled collection is formed as a list, and each process on the scheduled list stores within its workspace the indication of a first pointer to the next process in the list. The method described in Scope Items 3 and 4. 6, further comprising the step of indicating a priority for each process, and providing first and second time-dependent collections of processes, wherein the first time-dependent collection is a common first priority process. and wherein the second time-dependent collection comprises a common second priority process different from the first priority. Method described in Crab. 7. further comprising the step of transmitting messages between simultaneous processes via a plurality of addressable communication channels to enable data communication between the processes; 6. A method as claimed in any of claims 1 to 5, characterized in that a series of instructions in a program containing common instructions are executed to complete message transmission between processes. 8. Executing a process having a plurality of components associated with alternative times; and dictating the time associated with each component;
8. A method according to any one of claims 1 to 7, further comprising the step of determining whether a time associated with some of the components has already occurred. 9. The method further comprises: unscheduling the process if the earliest time associated with some of the components associated with the alternative time has not yet occurred; and adding the process to a time-dependent collection. 9. The method according to claim 8, characterized in that: 10, further comprising the step of loading into a memory location associated with the process at least one special value indicating the state of the process and indicating that the process has an alternative component. The method according to claim 8 or 9. 11 a first special value indicating that the process need not be unscheduled when at least one of the alternative components is ready or while waiting for the arrival of a time associated with one of the alternative components; 11. The method of claim 10, further comprising the step of loading another special value into the memory location indicating that the process is to be unscheduled. 12 yet another special value indicating that none of said alternative components has been selected yet;
loading into a memory location associated with said process and in response to said further special value;
selecting one of the alternative components when a process is scheduled.
The method according to any one of Items 1 to 11. 13. At least one of the alternative components comprises inputting via one communication channel, determining whether the earliest time of the time-related component has already occurred, and determining whether the communication channel is waiting for message input. Claims 7 to 12 further comprising the step of determining whether or not
The method described in any of the paragraphs. 14 a processor for executing a plurality of simultaneous processes, at least some of which are time-dependent, and addressable storage elements for indicating the current process being executed by the processor; and a timer list for identifying one or more processes forming a collection waiting to be executed by the processor after each scheduling time, the timer list comprising: , a microcomputer having process instruction means for instructing the next process in a collection for execution by said processor after its scheduling time has occurred, each of the processes in said collection being scheduled for execution when a process in said collection is ready for execution; A memory location 69 is associated with the timer list for indicating the scheduling time and the temporal ordering between earlier processes having earlier scheduling times and later processes having later scheduling times. , a control system 13, 14, 15, 32 for adding one further process to a location within said collection. 15. For each process, said memory has a work area 60 having addressable storage locations, each of said work areas having, for a process on said temporally ordered list: (i) a corresponding one; (ii) a second memory location 65 for storing program steps related to the corresponding process; and (iii) a next memory location 65 on said temporally ordered list. a third storage location 68 for directing the process of
Claim 14, characterized in that it comprises: and
Microcomputer as described in Section. 16 Storage means 52, 56, 66 are processor 1
2 to identify a collection of scheduled processes waiting to be executed by the timer, and to add one process to said collection at the same time as removing it from said timer list after its scheduling time has arrived. Characteristic Claim No. 14
16. The microcomputer according to item 1 or 15. 17. An additional memory location 66 for indicating the next process within the scheduled collection such that the timer list and scheduled collection each have a list linked via the process work area 60. 17. The microcomputer according to claim 15, wherein the microcomputer has a working area of . 18. Microcomputer according to any one of claims 14 to 17, characterized in that the addressable communication channels 70, 25 enable synchronized message transmission between processes. DETAILED DESCRIPTION The present invention relates to computers including microcomputers, and more particularly to microcomputers capable of executing time-dependent processes. BACKGROUND OF THE INVENTION Our European patent specification 0110642 includes:
A microcomputer is described that includes scheduling means that enable a processor to share its processing time among multiple simultaneous processes. You can form a linked list of scheduled processes waiting to run. You can unschedule a currently running process, and you can schedule a process by adding it to a scheduled list when requested. This may occur, for example, when transmitting messages between two processes where the two processes are required to be at corresponding stages of a program sequence when the message transmission occurs. However, that patent does not describe the use of time-dependent processes such that scheduling of a process can be done according to the times indicated for that process. OBJECTS OF THE INVENTION It is an object of the invention to provide an improved microcomputer for use in executing time-dependent processes. Another object of the invention is a means for scheduling multiple simultaneous processes such that a processor shares its processing time among the multiple processes;
An object of the present invention is to provide an improved microcomputer having means for responding to time-dependent parameters for one or more processes. Although the term microcomputer refers to a small computer based entirely on integrated circuits, it does not impose any constraints on how small the computer can be. SUMMARY OF THE INVENTION The present invention comprises a memory and a processor configured to execute a plurality of simultaneous processes according to a program, the program comprising a plurality of instructions for sequential execution by the processor, the program comprising: (1) a plurality of registers and data transfer means used to transfer data between those registers; and (2) receiving each instruction and loading the value associated with that instruction into one of the processor registers. and (3) a controller that controls in accordance with instructions received from the data transfer means and the register and operates the processor in accordance with the instructions, wherein: (a) a certain process is executed by the processor; including means for instructing when it is to be executed;
scheduling means for sharing processing time of a processor among multiple concurrent processes; and (b)(1) identifying one or more processes for execution by the processor; At least one timer collection (timer
(2) means for indicating a scheduling time at which each process is allowed to execute in said timer collection; and (3) means for providing one or more additional (4) means for removing processes from the timer collection; a process time controller comprising: a microcomputer comprising: a means for adding processes; The means for instructing the timer collecting process to form a time-ordered sequence depending on the scheduling time of the timer collecting process or each process is preferably arranged. Preferably, means are provided which can comprise an addressable memory location to indicate the timer collecting process which has the earliest scheduling time during the collection and forms the first process during the collection. The memory preferably provides each process with a work area having a plurality of addressable locations containing locations for recording variables associated with the process, one of the processor registers comprising:
It is configured to hold a work area pointer value that identifies the address of the current process's work area. The work area of each process preferably contains linkage means that hold pointer values for subsequent processes during timer collection. The linking means is used when a process is in the process of collecting timers to point to the next process in the process of collecting timers, thereby pointing to the linked timer list of the process. Preferably, the linking means of each process work area is configured to hold a special value to indicate that the process is the one with the last scheduling time on its timer list. In order to dictate the scheduling time of each process, the work area of that process should include as much addressable space as possible. In a preferred embodiment, the microcomputer includes means for assigning one of a plurality of priorities to each process, and the time controller includes means for forming two or more of the timer collections; Each timer collection has a process with a common priority that is different from the common priority of processes in another timer collection. The scheduling means (1) indicates the current process being executed by the processor; and (2) identifies the one or more processes forming the scheduled collection that are awaiting execution by the processor. (3) means for adding one or more further processes to said scheduled collection; and (4) means for adding a next process in said scheduled collection to be executed by a processor. process instruction means, responsive to a selected instruction to terminate execution of said current process by a processor and said next processor instruction means to make that process the current process; A processor is configured to do this, whereby the processor is operated to share its processing time among multiple simultaneous processes. Scheduled collections should also preferably be combined lists. Having a process of common priority that is different from the priority of the processes in two or more scheduled collections. The invention also includes a network of a plurality of the microcomputers interconnected. Each microcomputer has communication channels provided with one or more communication links. These communication links are dedicatedly connected to similar links on other devices, thereby allowing synchronized message transmission between simultaneous processes on various microcomputers. The microcomputer is preferably configured to execute processes with multiple separate time-related components. The microcomputer includes means for indicating the time associated with each component, means for testing the time associated with each component, and means for determining whether the earliest time associated with a component has not yet occurred. provided. means for specifying a length of time for a process to run and, responsive to the length of time, to stop execution of the current process after the time has elapsed;
and preferably means for causing the processor to reschedule the process by adding it to some scheduled collection.

【図面の簡単な説明】[Brief explanation of the drawing]

以下、図面を参照して本発明を実施例について
詳しく説明する。 第1図は本発明を具体化するマイクロコンピユ
ータの主な特徴を示すブロツク図、第2図はマイ
クロコンピユータの一部のブロツク図で、この図
は便宜上、第2A,2B図に示される2つの部分
に分けられ、この図は中央処理装置レジスタとデ
ータ経路および算術論理装置と、中央処理装置と
メモリおよび通信リンクとの間のインターフエイ
スをとくに示し、第3図は第2B図の部分を形成
するタイマ論理回路を示し、第4図は、マイクロ
コンピユータにより実行するための高優先権プロ
セスのスケジユールされたリストの加工物とプロ
セツサレジスタの間の関係を示し、第5図は第4
図に類似するが、高優先権プロセスが実行されて
いる間の低優先権プロセスのスケジユールされた
リストを示し、第6図は再スケジユールされる前
の所定の時刻を待つている高優先権プロセスのタ
イマリストを示し、第8図は本発明に従つて通信
するマイクロコンピユータの回路網を示し、この
回路網のマイクロコンピユータの語長は異なり、
第9A〜9D図は「タイマ入力」動作を実行する
プロセスのための一連のオペレーシヨンを示し、
第10A〜10E図はプロセスをタイマリストに
挿入するためのシーケンスを示し、第11A〜1
1C図は時間選択(Time Alternative)プロセ
スのための一連のオペレーシヨンを示し、とくに
そのプロセスが代りの時間のうちのはやい方をど
のようにして決定するかを示し、第12A〜12
C図はいくつかの代りの時間(そのうちの1つが
既に到達している)の1つの間を選択するプロセ
スによる一連のオペレーシヨンを示し、第14A
〜14D図はメツセージチヤネルの入力の代りの
もの、またはある特定の時間の発生の間で選択す
るプロセスのための一連のオペレーシヨンを示
し、そのメツセージチヤネルは、プロセスが選択
を開始した時に通信を行えるようになつており、
第15A〜15F図はメツセージチヤネルを通じ
て入力の代りのもの、または、チヤネルがメツセ
ージを入力するようになつておらず、かつプロセ
スが代りのものの1つを選択しようと試みている
時に発生される時間を有しないようなある指定さ
れた時間の発生を選択するプロセスのための一連
のオペレーシヨンを示す。 好適な実施例の説明 この例で説明するマイクロコンピユータは、プ
ロセツサと、RAMの態様のメモリと、外部通信
を行えるようにするリンクとを有し、1枚のシリ
コンチツプで構成された集積回路装置を含む。こ
のマイクロコンピユータの主な要素が第1図に、
p−井戸相補MOS技術を用いて1枚のシリコン
チツプ11上に示されている。プロセスの実行の
時間制御を行えるようにするために、中央処理装
置(CPU)12にタイマ9が設けられる。中央
処理装置はある読出し専用メモリ(ROM)13
も含む。この読出し専用メモリはメモリインター
フエイス14へ結合される。このメモリインター
フエイスはインターフエイス制御ロジツク15に
より制御される。CPU12は算術論理装置
(ALU)と、レジスタデータ経路とを含む。それ
らは第2図に一層詳しく示されている。CPU1
2とメモリインターフエイス14はバス16へ接
続される。このバスはチツプ11上の要素の相互
接続を行う。サービス装置17に複数の入力ピン
18が設けられる。このマイクロコンピユータに
はランダム・アクセス・メモリ(RAM)19と
ROM20が設けられる。外部メモリなしにプロ
セツサ12が動作できるように、チツプ上のメモ
リの容量は1Kバイト以下ではない。チツプ上の
メモリはなるべく少くとも4Kバイトにする。外
部メモリインターフエイス23が設けられる。そ
の外部メモリインターフエイスは、希望により設
けられる外部メモリへ接続するために、複数のピ
ン24へ接続される。ネツトワークを構成するた
めに、このマイクロコンピユータを他のコンピユ
ータへリンクさせることができるようにするため
に、入力ピン26と出力ピン27を有する複数の
直列リンク25が設けられる。第8図に示すよう
に、1つの直列リンクの入力ピンと出力ピンは、
それぞれ自身の単線非共用一方向接続により、別
のマイクロコンピユータの直列リンクに対応する
入力ピンと出力ピンへ接続できる。各直列リンク
は、プロセス・スケジユーリング・ロジツクを有
する同期論理装置10へ接続される。 この実施例は、われわれの未決のPCT特許出
願No.PCTGB84/00379およびヨーロツパ特許出
願No.84307586.2に記述されているマイクロコンピ
ユータを発展させたものである。説明の不必要な
反復を避けるために、そのマイクロコンピユータ
の構成と動作の十分に詳しいことは以下に述べな
いが、それらの特許出願における説明を参考のた
めにここに含ませる。 この実施例はTransputer(インモス・インター
ナシヨナル(INMOS International)plcの商
標)マイクロコンピユータを改良したものを提供
するものである。このマイクロコンピユータは、
実行を行えるまで指定された時間待つているプロ
セスをタイマ・データとタイマ・リストに依存し
てプロセスを実行できるように、タイマ制御を行
うものである。 このマイクロコンピユータの全体の構成は、前
記特許出願において記述されているマイクロコン
ピユータの全体の構成に全体として類似する。以
下の説明においては、前記特許出願における実施
例に対応する部分には類似の名称が与えられる。
メモリは、アドレス可能な場所を有する複数のプ
ロセス作業域を設ける。それらのアドレス可能な
場所はポインタにより指示できる。メツセージ通
信はチヤネルを介して行うことができる。それら
のチヤネルは、同じマイクロコンピユータにおけ
るプロセス間通信の場合には、アドレス可能なメ
モリ場所を含むことができる。異なるマイクロコ
ンピユータの間のプロセスア間通信を行うため
に、直列リンクに入力チヤネルと出力チヤネルが
設けられる。それらのチヤネルは、メモリに設け
られている場所をアドレスするのと類似のやり方
でアドレスすることもできる。 上記の改良を実現するために、マイクロコンピ
ユータの構造および動作を種々変更する必要があ
り、以下の説明は、それらの改良を行うために変
更が含まれているような面について向けられる。 前記特許出願の例におけるように、説明されて
いる例の特定の語長は16ビツトであるが、8、
16、24、32のような語長またはその他の語長を使
用できることがわかるであろう。更に、この場合
においては、異なる語長のマイクロコンピユータ
の独立している語長とは無関係にそれらのマイク
ロコンピユータが互いに通信できるように、第8
図に示すように異なる語長のマイクロコンピユー
タを同じネツトワーク中に接続できる。 各ポインタは単一の語で、2つの補数の符号付
き値として処理される。このことは、ポインタ中
の最上位のビツトが1であると、その最上位のビ
ツトは負として取扱われ、残りの全てのビツトが
正の数を表すことを意味する。最上位のビツトが
0であると、ポインタ中の全てのビツトは正の値
を表すものとしてとられる。これにより、標準比
較関数が数値に対して用いられると同様なやり方
で、標準比較関数をポインタ値に対して使用でき
るようにされる。 ある特殊な動作が求められていることを指示す
るためにある値が留保されるから、それらの値は
ポインタとして決して使用されない。 以下の説明においては、それらの値およびその
他の値を次のように表すために名前が使用され
る: MostNeg 最も負の値(MSBが1、他のすべ
てのビツトは0) MostPos 最も正の値(MSBが0、他のすべ
てのビツトは1) MachineTRUE 1 MachineFALSE 0 NotProcess.p MostNeg Enabling.p MostNeg+1 Waiting.p MostNeg+2 Ready.p MostNeg+3 TimeSet.p MostNeg+1 TimeNotSet.p MostNeg+2 値MostNeg+1とMostNeg+2の二重の使用
からあいまいさが起らないように、TimeSet.pと
TimeNotSet.pに対する特殊な値はEnabling.pま
たはWaiting.pと同じ場所には決して使用されな
い。 上記特許出願の例におけるように、ローカル変
数と、プロセスにより取扱われる一時的な値を保
持するために用いられるメモリ中の語はベクトル
より成る作業域を各プロセスを有する。プロセス
作業域のための設定された場所を示すため作業域
ポインタWPTRが用いられる。各プロセスは
「プロセス記述子」により識別できる。そのプロ
セス記述子の最下位ビツトはそのプロセスの優先
権を示し、上位15ビツトはプロセス作業域を識別
するメモリ中の語を示す。この例においては、マ
イクロコンピユータは2つの可能な優先権のうち
の1つを各プロセスに割当てる。高優先権のプロ
セスには名称Pri=0で与えられ、低優先権のプ
ロセスには名称Pri=1が与えられる。したがつ
て、各プロセス記述子は、作業域ポインタ
WPTRとプロセス優先権Priの「ビツトワイズ
(bitwise)OR」をとることにより形成される1
つの語を備えることがわかる。同時に、プロセス
記述子とNOT 1の「ビツトワイズAND」をと
ることにより、作業域ポインタWPTRをプロセ
ス記述子から得ることができる。プロセス記述子
と1の「ビツトワイズAND」をとることにより
プロセスの優先権を得ることができる。 CPUデータ経路およびレジスタ 中央処理装置12およびそれの動作は、第2図
を参照することにより一層良く理解されるであろ
う。便宜上、第2図を第2A図と第2B図に分け
たが、レジスタセツトとデータ経路を形成するた
めに、第2A図と第2B図の線図を一緒に結合で
きることを理解すべきである。 CPU12は算術論理装置(ALU)30と複数
のデータ・レジスタを含む。それらのレジスタX
バスと、Yバスと、Zバスおよび双方向データ・
バスへ接続される。それらのレジスタの動作と、
バスへの相互接続は、32に線図的に表されてい
る複数のスイツチにより制御される。それらのス
イツチ32は、ROM13に含まれているマイク
ロ命令プログラムからとり出される信号により制
御される。メモリインターフエイス14とデー
ダ・バス31へ向かう一方向アドレス経路33を
介してCPUとメモリの間の通信が行われる。 上記特許出願におけるように、各命令は8ビツ
トで構成される。そのうちの4ビツトは命令の求
められている関数を表し、4ビツトがデータのた
めに割当てられる。プロセスのためのプログラ
ム・シーケンスから得た各命令は命令バツフア3
4へ与えられ、その命令は復号器35により復号
される。この復号器の出力は条件マルチプレクサ
36を介してマイクロ命令レジスタ37へ与えら
れる。このマイクロ命令レジスタはマイクロ命令
ROM13をアドレツシングするために用いられ
る。命令バツフア34と、復号器35と、条件マ
ルチプレクサ36と、MIR37と、マイクロ命
令ROM13と、スイツチ32との動作は全体と
して上記特許出願およびヨーロツパ特許明細書
0110642に記述されているようなものである。 この実施例は2組のプロセス、すなわち、優先
権0を有するプロセスおよび優先権1を有するプ
ロセス、を処理するように構成されているから、
2つのレジスタ・バンクが設けられる。レジス
タ・バンク38が優先権1プロセスのために設け
られ、類似のレジスタ・バンク39が高優先権0
プロセスのために設けられる。両方のレジスタ・
バンクは類似のレジスタセツトを有し、それらの
レジスタセツトはX、Y、Zバスおよびデータ・
バスへ同様に接続される。簡単にするために、レ
ジスタおよびそれらのレジスタの接続はレジス
タ・バンク38について詳しく示しているだけで
ある。特定の優先権を割当てられている2つのレ
ジスタ・バンクに加えて、CPUは定数ボツクス
40と、レジスタ・バンク選択器41と、第2
A,2B図に示されているいくつかの他のレジス
タを含む。それらの他のレジスタは優先権0プロ
セスおよび優先権1プロセスの両方に共通であ
る。それらのレジスタは次の通りである:
Hereinafter, the present invention will be described in detail with reference to the drawings. Fig. 1 is a block diagram showing the main features of a microcomputer embodying the present invention, and Fig. 2 is a block diagram of a part of the microcomputer. Divided into parts, this figure particularly shows the interfaces between the central processing unit registers and data paths and arithmetic logic units, and between the central processing unit and memory and communication links, with FIG. 3 forming part of FIG. 2B. 4 shows the relationship between the artifacts of a scheduled list of high priority processes for execution by a microcomputer and the processor registers, and FIG.
Similar to Figure 6, but showing a scheduled list of low priority processes while high priority processes are running, Figure 6 shows high priority processes waiting for a predetermined time before being rescheduled. FIG. 8 shows a network of microcomputers communicating in accordance with the present invention, in which the word lengths of the microcomputers are different;
Figures 9A-9D illustrate a sequence of operations for a process that performs a "timer input"operation;
Figures 10A-10E show sequences for inserting processes into the timer list, and Figures 11A-1
Figure 1C shows the sequence of operations for the Time Alternative process, and in particular shows how the process determines which of the alternative times is faster;
Figure C shows a sequence of operations by the process of selecting between one of several alternative times (one of which has already been reached),
Figures ~14D illustrate a series of operations for an alternative to inputting a message channel or for a process that selects between certain occurrences of time, and that message channel communicates when the process initiates the selection. It is now possible to do
Figures 15A-15F illustrate alternative input through a message channel, or the times that occur when the channel is not configured to input a message and the process attempts to select one of the alternatives. 1 shows a sequence of operations for a process that selects occurrences at a specified time such that they do not have . DESCRIPTION OF THE PREFERRED EMBODIMENTS The microcomputer described in this example is an integrated circuit device comprised of a single silicon chip, having a processor, memory in the form of RAM, and links to enable external communication. including. The main elements of this microcomputer are shown in Figure 1.
It is shown on a single silicon chip 11 using p-well complementary MOS technology. A timer 9 is provided in the central processing unit (CPU) 12 to enable time control of process execution. The central processing unit has a read-only memory (ROM) 13
Also included. This read-only memory is coupled to memory interface 14. This memory interface is controlled by interface control logic 15. CPU 12 includes an arithmetic logic unit (ALU) and a register data path. They are shown in more detail in FIG. CPU1
2 and memory interface 14 are connected to bus 16. This bus interconnects the elements on chip 11. A plurality of input pins 18 are provided on the service device 17 . This microcomputer has random access memory (RAM)19 and
A ROM 20 is provided. To allow processor 12 to operate without external memory, the amount of memory on the chip is no less than 1K byte. The memory on the chip should be at least 4K bytes if possible. An external memory interface 23 is provided. The external memory interface is connected to a plurality of pins 24 for connection to optional external memory. A plurality of serial links 25 having input pins 26 and output pins 27 are provided in order to be able to link this microcomputer to other computers to form a network. As shown in Figure 8, the input and output pins of one series link are:
Each with its own single wire non-shared unidirectional connection can be connected to the input and output pins corresponding to the serial link of another microcomputer. Each serial link is connected to a synchronization logic unit 10 having process scheduling logic. This embodiment is a development of the microcomputer described in our pending PCT Patent Application No. PCTGB84/00379 and European Patent Application No. 84307586.2. To avoid unnecessary repetition of the description, full details of the construction and operation of the microcomputer are not discussed below, but the description in those patent applications is included herein by reference. This embodiment provides an improved version of the Transputer (trademark of INMOS International plc) microcomputer. This microcomputer is
Timer control is performed so that a process that has been waiting for a specified time until it can be executed can be executed depending on timer data and a timer list. The overall configuration of this microcomputer is generally similar to the overall configuration of the microcomputer described in the aforementioned patent application. In the following description, parts corresponding to the embodiments in the said patent application are given analogous designations.
The memory provides multiple process work areas with addressable locations. Their addressable locations can be indicated by pointers. Message communication can occur via channels. These channels can include addressable memory locations in the case of interprocess communication on the same microcomputer. In order to provide inter-processor communication between different microcomputers, a serial link is provided with input and output channels. The channels can also be addressed in a manner similar to addressing locations in memory. Various changes to the structure and operation of the microcomputer are necessary to achieve the improvements described above, and the following discussion is directed to those aspects in which the changes are included to effectuate those improvements. As in the example in the patent application, the specific word length in the example described is 16 bits, but 8,
It will be appreciated that word lengths such as 16, 24, 32 or other word lengths can be used. Furthermore, in this case, the eighth
As shown in the figure, microcomputers with different word lengths can be connected in the same network. Each pointer is a single word and is treated as a two's complement signed value. This means that if the most significant bit in the pointer is 1, that most significant bit is treated as negative, and all remaining bits represent positive numbers. If the most significant bit is 0, all bits in the pointer are taken to represent positive values. This allows standard comparison functions to be used on pointer values in the same way that standard comparison functions are used on numeric values. Certain values are reserved to indicate that some special action is desired, so they are never used as pointers. In the following description, names are used to represent these and other values: MostNeg Most negative value (MSB is 1, all other bits are 0) MostPos Most positive value (MSB is 0, all other bits are 1) MachineTRUE 1 MachineFALSE 0 NotProcess.p MostNeg Enabling.p MostNeg+1 Waiting.p MostNeg+2 Ready.p MostNeg+3 TimeSet.p MostNeg+1 TimeNotSet.p MostNeg+2 Dual use of values MostNeg+1 and MostNeg+2 TimeSet.p and
The special value for TimeNotSet.p is never used in the same place as Enabling.p or Waiting.p. As in the example of the above patent application, each process has a work area consisting of a vector of words in memory used to hold local variables and temporary values handled by the process. A workspace pointer WPTR is used to indicate the configured location for the process workspace. Each process can be identified by a "process descriptor." The least significant bits of the process descriptor indicate the priority of the process, and the most significant 15 bits indicate a word in memory that identifies the process work area. In this example, the microcomputer assigns each process one of two possible priorities. High priority processes are given the name Pri=0, and low priority processes are given the name Pri=1. Each process descriptor is therefore a work area pointer.
1 formed by taking the "bitwise OR" of WPTR and process priority Pri
It can be seen that there are two words. At the same time, the work area pointer WPTR can be obtained from the process descriptor by performing a "bitwise AND" of the process descriptor and NOT 1. Process priority can be obtained by performing a "bitwise AND" of the process descriptor and 1. CPU Data Path and Registers Central processing unit 12 and its operation will be better understood with reference to FIG. Although FIG. 2 has been separated into FIGS. 2A and 2B for convenience, it should be understood that the diagrams in FIGS. 2A and 2B can be combined together to form register sets and data paths. . CPU 12 includes an arithmetic logic unit (ALU) 30 and a plurality of data registers. those registers
bus, Y bus, Z bus and bidirectional data
connected to the bus. the operation of those registers,
Interconnection to the bus is controlled by a plurality of switches, diagrammatically represented at 32. These switches 32 are controlled by signals derived from a microinstruction program contained in ROM 13. Communication between the CPU and memory occurs via a unidirectional address path 33 to a memory interface 14 and a data bus 31. As in the above patent application, each instruction consists of 8 bits. Four bits represent the desired function of the instruction and four bits are allocated for data. Each instruction obtained from the program sequence for a process is stored in the instruction buffer 3.
4, and the instruction is decoded by decoder 35. The output of this decoder is applied to a microinstruction register 37 via a condition multiplexer 36. This microinstruction register is a microinstruction register.
Used for addressing ROM13. The operation of the instruction buffer 34, decoder 35, condition multiplexer 36, MIR 37, microinstruction ROM 13, and switch 32 is generally described in the above patent application and the European patent specification.
It is as described in 0110642. Since this embodiment is configured to handle two sets of processes: a process with priority 0 and a process with priority 1,
Two register banks are provided. A register bank 38 is provided for priority 1 processes and a similar register bank 39 is provided for high priority 0 processes.
provided for the process. Both registers
Banks have similar register sets, and those register sets are connected to the X, Y, Z buses and the data bus.
Similarly connected to the bus. For simplicity, the registers and their connections are only shown in detail for register bank 38. In addition to the two register banks that are assigned specific priorities, the CPU also has a constant box 40, a register bank selector 41, and a second
Contains several other registers shown in Figures A and 2B. Those other registers are common to both priority 0 and priority 1 processes. Those registers are:

【表】【table】

【表】 ル準備完了する時間を保持する
レジスタ85。
優先権0プロセスのためのレジスタのバンク3
9は、優先権1プロセスのために既に述べたもの
と同じである。以下の説明においては、接尾数
[1]は優先権1バンクに関連するレジスタを示
し、接尾数[0]はレジスタが優先権0バンクに
関連するものであることを示す。優先権が知られ
ていない場合には、プロセスに対して適切な優先
権のレジスタが使用されることを接尾辞[Pri]
が示す。 それらのレジスタは、1ビツト・フラツグ4
7,48,58,59,82,83,84は別と
して、この場合には語長が全体として16ビツトの
レジスタである。命令バツフアは、1度にただ1
つの命令を保持するように構成されているものと
すると、8ビツト長とすることができる。A、
B、Cレジスタ・スタツク54,55,56は、
ほとんどの算術動作および論理動作のためのソー
スおよび宛先である。それらはスタツクとして組
織される。 レジスタおよびフラツグに加えて、各バンク3
8,39は妥当時間フラツグ84と、次の時間レ
ジスタ85と、クロツク・レジスタ81とからの
入力を受けるために構成される。タイマ・ロジツ
ク86については第3図を参照して後で一層詳し
く説明する。クロツク・レジスタ81はプロセ
ス・クロツク87から入力を受ける。各レジス
タ・バンクのためのタイマ・ロジツク86は第1
図のタイマ9を構成する。両方の優先権のプロセ
スに対して、命令のうちOREGレジスタへ与えら
れる部分が復号器に達して、適切なマイクロ命令
を発生するのに使用するように、両方のレジス
タ・バンク38,39のOREG57は復号器35
に接続される。任意の時刻にプロセツサが行うべ
き次の動作を決定する際に、いずれかの優先権プ
ロセスのためのそれらのフラツグおよび論理出力
の設定を考慮に入れることができるように、両方
の優先権バンクのSNPフラツグ58と、複写フ
ラツグ59と、挿入フラツグ82と、削除フラツ
グ83と、タイマ・ロジツク86とは条件マルチ
プレクサへも接続される。 あるプロセスの作業域ポインタ(WPTR)が、
それからプロセスのローカル変数をアドレスでき
るためのベースとして用いられるから、その作業
域ポインタにより示されている場所からのオフセ
ツト値を計算することが時に必要である。定数ボ
ツクス40はYバスに接続され、一定の値をマイ
クロ命令ROM13の制御の下にそのバスに置く
ことを可能にする。それらは、プロセス作業域内
のオフセツト場所を示し、時間スライス期間を与
えるのに使用できる。レジスタ・バンク38また
は39の一方または他方の選択を行うために、レ
ジスタ・バンク選択器41はRPIフラツグ47
と、PROCPRIフラツグ48と、マイクロ命令
ROM13とから入力を受ける。そのレジスタ・
バンク選択器からの出力端子は条件マルチプレク
サ36と、復号器35と、スイツチ32とに接続
される。マイクロ命令ROM13の出力に応じ
て、選択器はPRIフラツグ47またはPROCPRI
フラツグ48により指示されたレジスタ・バンク
を選択する。 タイマ・ロジツク86は各レジスタ・バンクに
類似する。そのうちの1つが第3図に一層詳しく
示されている。論理装置86は引算器88を有す
る。この引算器は次の時間レジスタから線89を
介して入力を受ける。この時間値は引算器88に
おいて、クロツク・レジスタ81から線90を介
して供給された時間値から引算される。その差の
最上位ビツトが出力線91を介してインバータ9
2へ与えられる。このインバータは信号を線93
を介して論理アンドゲート94を与える。そのゲ
ートは妥当時間フラツグ84から線95を介して
入力も受ける。アンドゲート94は出力を線96
を介して条件マルチプレクサへ与える。線96に
おける信号は「タイマ要求」信号と呼ばれ、タイ
マリストの1番上からのプロセスが実行できるば
かりとなるように、そのプロセスをタイマリスト
の1番上からプロセツサにとらせるように構成さ
れる。これについては後で詳しく説明する。第3
図に示されている論理図は、2つの条件が同時に
整つた時のみ「タイマ要求」信号が線96へ出力
されるように構成されることがわかるであろう。
最初に妥当時間フラツグ81は値1にセツトせね
ばならず、クロツク・レジスタ81により示され
た時刻は、次の時間レジスタ85により示された
時刻の後またはその時刻に等しくなければならな
い。引算器88は、次の時間レジスタ85に含ま
れている値をクロツク・レジスタ81に保持され
ている値から引算するために用いられ、その引算
の結果が負の数であれば、前記のように2の補数
符号付値を使用しているために、最下位ビツトは
1である。この理由から、線90は引算により得
た最下位ビツトを出力するように構成され、引算
の結果が正であつて、線91へ0ビツトを与える
時に、アンドゲート94が「タイマ要求」信号を
与えるだけであるように、インバータ92が要求
される。 プロセス作業域に対するメモリ割当て 前記特許出願に記述されている例におけるよう
に、マイクロコンピユータはそれの時間をいくつ
かのプロセスの間で分割してそれらのプロセスを
一緒に実行する。一緒に実行されるプロセスは同
時プロセスと呼ばれ、任意のある時間に実行され
ているプロセスは現在のプロセスと呼ばれる。各
同時プロセスは、プロセスにより取扱われるロー
カル変数と一時的な値を保持するための、作業域
と呼ばれるメモリの領域を有する。作業域の第1
のローカル変数のアドレスは作業域ポインタ
(WPTR)により示される。これは第4図に示さ
れている。第4図においては、4個の同時プロセ
ス、プロセスL,M,N,Oが作業域60,6
1,62,63を有する。第4図には作業域60
が詳しく示されており、WPTRレジスタ51に
保持されている作業域ポインタ、この例では
10000として示されているアドレスを有する単一
語場所である0場所を示す。このプロセスのため
の他のローカル変数は、作業域ポインタにより示
されている語から正のオフセツト・アドレスとし
てアドレスされる。0場所からの小さな負のオフ
セツトを有する作業域場所のいずれが、タイミン
グおよび通信をスケジユーリングする目的のため
に用いられる。この例いおいては、WPTRによ
り示されている0場所の下側に、5個所の付加語
場所65,66,67,68,69が負のオフセ
ツト1,2,3,4,5をそれぞれ有して示され
ている。それらの場所は次の通りである。オフセツト オフセツト名 場所名 −1 Iptr.s Iptr location −2 Link.s Link location −3 State.s State locaiton −4 TLink.s TLink location −5 Time.s Time location あるプロセスが現在のプロセスでない時に、そ
のプロセスが現在のプロセスになつた時に、その
プロセスにより次に実行すべき命令に対するポイ
ンタ(IPTR)を保持するために場所65が用い
られる。実行を待つているスケジユールされたプ
ロセスのリンクされたリストすなわち行列上の次
のプロセスの作業域ポインタを格納するために場
所66が用いられる。場67は、代りに入力動作
を実行するプロセスの状態の指示を含むため、ま
たはデータのブロツクを複写するためのポインタ
として用いられる。場所68は、実行のためにス
ケジユールされる前の所定の時間待つているプロ
セスのリンクされたタイマ・リスト上の次のプロ
セスの作業域ポインタを格納するために用いら
れ、および代りのタイマ入力動作を実行するプロ
セスの状態を指示するためにも用いられる。場所
69は、それの経過後にプロセスを実行できるよ
うな時間を指示するために用いられる。 このメモリはプロセス間通信のための語場所も
与え、第3図はそのようなチヤネルを示す。 表記法 マイクロコンピユータが動作する方法、とくに
それの機能、オペレーシヨンおよび手続き、につ
いての以下の説明においては、OCCAM(インモ
ス・インターナシヨナル(INMOS
International)plcの商標)言語に従つて表記法
が用いられる。この言葉は、英国において1983年
にインモス・リミテツド(INMOS Limited)に
より出版および配布された「プログラミング・マ
ニユアル(Programming Manual)−OCCAM)」
と題する小冊子に記述されている。更に、この表
記法はヨーロツパ特許出願0110642に詳しく記述
されているが、簡単にするためにこの明細書にお
いては繰返えさない。しかし、OCCAMの説明
と、ヨーロツパ特許出願0116042に記述されてい
る表記法の説明は参考のためにここに含ませる。 上記の表記法に加えて、以下の記述は下記のよ
うにして定義されるあるメモリ・アクセス手続き
を示すものである。
[Table] Holds the time when the file is ready
Register 85.
Bank 3 of registers for priority 0 processes
9 is the same as already mentioned for the priority 1 process. In the following description, the suffix [1] indicates a register associated with the priority 1 bank, and the suffix [0] indicates that the register is associated with the priority 0 bank. The suffix [Pri] indicates that if the priority is not known, the appropriate priority register for the process is used.
shows. These registers have a 1-bit flag, 4
Apart from registers 7, 48, 58, 59, 82, 83, and 84, the registers in this case have a total word length of 16 bits. Only one command at a time
If it is configured to hold one instruction, it can be eight bits long. A,
B, C register stacks 54, 55, 56 are:
It is the source and destination for most arithmetic and logical operations. They are organized as stacks. In addition to registers and flags, each bank 3
8 and 39 are configured to receive inputs from a valid time flag 84, a next time register 85, and a clock register 81. Timer logic 86 will be described in more detail below with reference to FIG. Clock register 81 receives input from process clock 87. Timer logic 86 for each register bank is
This constitutes the timer 9 shown in the figure. For processes of both priorities, OREG 57 in both register banks 38, 39 so that the portion of the instruction given to the OREG register reaches the decoder and is used to generate the appropriate microinstruction. is the decoder 35
connected to. Both priority banks' SNP flag 58, copy flag 59, insert flag 82, delete flag 83, and timer logic 86 are also connected to a condition multiplexer. The work area pointer (WPTR) of a process is
It is sometimes necessary to calculate an offset value from the location pointed to by the workspace pointer, since it is then used as the basis for addressing local variables of the process. Constant box 40 is connected to the Y bus and allows constant values to be placed on that bus under control of microinstruction ROM 13. They indicate offset locations within the process work area and can be used to provide time slice periods. To select one or the other of register banks 38 or 39, register bank selector 41 selects RPI flag 47.
, PROCPRI flag 48, and microinstruction
Receives input from ROM13. That register
The output terminal from the bank selector is connected to condition multiplexer 36, decoder 35 and switch 32. Depending on the output of the microinstruction ROM 13, the selector sets the PRI flag 47 or PROCPRI.
The register bank indicated by flag 48 is selected. Timer logic 86 is similar to each register bank. One of them is shown in more detail in FIG. Logic unit 86 has a subtractor 88. This subtractor receives input via line 89 from the next time register. This time value is subtracted in subtractor 88 from the time value supplied via line 90 from clock register 81. The most significant bit of the difference is sent to the inverter 9 via the output line 91.
given to 2. This inverter connects the signal to line 93
through a logic AND gate 94. The gate also receives input from valid time flag 84 via line 95. AND gate 94 sends the output to line 96
to the conditional multiplexer. The signal on line 96 is called the "timer request" signal and is configured to cause the processor to take a process from the top of the timer list so that the process from the top of the timer list can only be executed. Ru. This will be explained in detail later. Third
It will be appreciated that the logic diagram shown is configured such that a "timer request" signal is output on line 96 only when two conditions are met simultaneously.
Initially, valid time flag 81 must be set to a value of 1 and the time indicated by clock register 81 must be after or equal to the time indicated by next time register 85. Subtractor 88 is used to subtract the value contained in next time register 85 from the value held in clock register 81; if the result of the subtraction is a negative number; Since we are using two's complement signed values as described above, the least significant bit is 1. For this reason, line 90 is configured to output the least significant bit obtained by the subtraction, and when the result of the subtraction is positive and provides a 0 bit to line 91, AND gate 94 indicates a "timer request". Inverter 92 is required to only provide a signal. Memory Allocation for Process Work Areas As in the example described in the aforementioned patent application, a microcomputer divides its time between several processes and runs the processes together. Processes that are running together are called concurrent processes, and processes that are running at any given time are called the current process. Each concurrent process has an area of memory called a work area for holding local variables and temporary values handled by the process. 1st work area
The address of the local variable is indicated by the work area pointer (WPTR). This is shown in FIG. In FIG. 4, four simultaneous processes, processes L, M, N, and O, are in work areas 60 and 6.
1,62,63. Figure 4 shows the work area 60
is detailed and the work area pointer held in the WPTR register 51, in this example
Shows the 0 location, which is a single word location with an address shown as 10000. Other local variables for this process are addressed as positive offset addresses from the word pointed to by the work area pointer. Any workspace location with a small negative offset from the zero location is used for timing and communication scheduling purposes. In this example, below the 0 location indicated by WPTR, five additional word locations 65, 66, 67, 68, and 69 have negative offsets of 1, 2, 3, 4, and 5, respectively. It is shown with Those locations are as follows. Offset Offset name Location name -1 Iptr.s Iptr location -2 Link.s Link location -3 State.s State locaiton -4 TLink.s TLink location -5 Time.s Time location When a process is not the current process, Location 65 is used to hold a pointer (IPTR) to the next instruction to be executed by a process when it becomes the current process. Location 66 is used to store the work area pointer of the next process on the linked list or queue of scheduled processes waiting to execute. Field 67 may alternatively be used to contain an indication of the state of the process performing the input operation, or as a pointer to copy a block of data. Location 68 is used to store the work area pointer of the next process on the linked timer list of processes waiting a predetermined amount of time before being scheduled for execution and alternative timer input operations. It is also used to indicate the state of the process that executes. Location 69 is used to indicate the time after which the process can be executed. This memory also provides space for interprocess communication, and FIG. 3 shows such channels. Notation In the following description of how a microcomputer works, in particular its functions, operations and procedures, OCCAM (INMOS
The notation is used according to the trademark of International) plc) language. This term is a reference to the Programming Manual (OCCAM) published and distributed in the UK by INMOS Limited in 1983.
It is described in a booklet entitled. Furthermore, this notation is described in detail in European Patent Application No. 0110642, but will not be repeated in this specification for the sake of brevity. However, a description of OCCAM and a description of the notation described in European Patent Application No. 0116042 is included here for reference. In addition to the notation above, the following description illustrates certain memory access procedures defined as follows.

【表】 マイクロコンピユータにより使用される手続き 以下に種々の手続き(PROC)を示す。下記の
9つの手続きはプロセツサの動作の説明において
使用される。 Dequeue Run StratNextProcess HandleRunRequest HandleReadyRequest HandleTimerRequest BlockCopyStep Instert Step Delete Step 手続き「HandleRunRequest」と
「HandleReadyRequest」および
「BlockCopyStep」はわれわれの未決のPCT特許
出願No.PCTG84/00379およびヨーロツパ特許出
願に詳しく記述されている。それらの手続きの定
義は本発明に対して変更されないから、この特許
出願においては繰返えさない。 手続き「Dequeue」は優先権「Pri」スケジユ
ールされたプロセス行列の最前部のプロセスを現
在のプロセスにする。Pri=1であると、他のプ
ロセスを実行させるようにするために、それは、
そのプロセスを一時的に停止させねばならない時
刻に時間スライス・レジスタ80をセツトする。
その時間スライスの長さは、定数の1つとして定
義ボツクス40に格納されている一定の時間長に
より決定される。
[Table] Procedures used by microcomputers The various procedures (PROCs) are shown below. The following nine procedures are used in describing the operation of the processor. Dequeue Run StratNextProcess HandleRunRequest HandleReadyRequest HandleTimerRequest BlockCopyStep Instert Step Delete Step The procedures "HandleRunRequest" and "HandleReadyRequest" and "BlockCopyStep" are described in detail in our pending PCT Patent Application No. PCTG84/00379 and European Patent Application. Those procedural definitions do not change for the present invention and are therefore not repeated in this patent application. The procedure "Dequeue" makes the process at the front of the process matrix scheduled with priority "Pri" the current process. If Pri=1, in order to let other processes run, it is
Set the time slice register 80 to the time at which the process must be temporarily stopped.
The length of the time slice is determined by a constant time length stored in definition box 40 as one of the constants.

【表】 手続き「Run」は、それの記述子がProcDesc
レジスタに含まれているようなプロセスをスケジ
ユールする。これにより優先権0プロセスが、既
に実行している優先権1のどのプロセスにも優先
して実行を直ちに開始する。以下の記述におい
て、…で始まる全ての行は単に説明としてのもの
であつて、定義の構成部分ではない。
[Table] The procedure “Run” has a descriptor of ProcDesc.
Schedule processes as contained in the register. As a result, the priority 0 process immediately starts execution in priority over any process with priority 1 that is already being executed. In the following description, all lines starting with ... are merely illustrative and do not form part of a definition.

【表】【table】

【表】 手続き「StratNextProcess」は現在のプロセ
スをデスケジユールし、実行可能な別のプロセス
があれば、次の実行可能なプロセスを選択する。
こうすることにより、実行すべき優先権0プロセ
スがもうなければ、割込まれた優先権1プロセス
を再開させることができる。 手続き「StratNextProcess」 SNPFlagがセツトされる結果として常に実行
される。したがつて、このプロセスの最初の行動
はそのフラツグをクリヤすることである。
[Table] The procedure ``StratNextProcess'' deschedules the current process and, if there is another executable process, selects the next executable process.
By doing this, if there are no more priority 0 processes to be executed, the interrupted priority 1 process can be restarted. Procedure "StratNextProcess" is always executed as a result of SNPFlag being set. Therefore, the first action in this process is to clear the flag.

【表】 手続き「HandleTimeRequest」は、タイマ論
理装置86の1つから線96におけるタイマ要求
の結果として実行される。その要求が優先権0プ
ロセスに対するものであるとすると、
TimerRequest0信号が生じたであろうし、プロ
セツサはProcPriレジスタを0にセツトしたであ
ろう。要求が優先権1プロセスに対するものであ
るとすると、TimerRequest1信号が生じたであ
ろうし、プロセツサはProcPriレジスタを0にセ
ツトしたであろう。この手続きは、適切な
TPTR語の内容からレデイとなつたプロセスを
識別する。その手続きは、適切であればそのプロ
セスをスケジユールし、関連する優先権レベルに
対してTPTR語、NextTimeRegおよび
ValidTimeFlagを更新する。
The procedure "HandleTimeRequest" is executed as a result of a timer request on line 96 from one of the timer logic units 86. Assuming the request is for a priority 0 process,
A TimerRequest0 signal would have occurred and the processor would have set the ProcPri register to zero. If the request was for a priority 1 process, the TimerRequest1 signal would have been generated and the processor would have set the ProcPri register to zero. This procedure
Identify the process that has become ready from the content of the TPTR word. The procedure schedules the process if appropriate and sets the TPTR word, NextTimeReg and
Update ValidTimeFlag.

【表】【table】

【表】 上記の定義においてはTptrLoc0を参考にした。
優先権1のための1つと優先権0のめに1つの、
2つのTptr場所があることがわかるであろう。
それらは隣接するメモリ場所を占め、優先権0に
対してはアドレスTptrLoc0を有する。このよう
にして、関連する優先権に応じて、いずれかの場
所をTptrLoc0からの0または1のオフセツトに
よりアドレスできる。 手続き「InsertStep」はInsertFlag「Prif」がセ
ツトされる結果として実行される。この手続きの
反応性能により、現在の優先権レベルに対するタ
イマリストの正しい位置に現在のプロセスが挿入
される。Breg[Pri]レジスタとCreg[Pri]レジ
スタが、正しい場所の探索がその時までに達した
点を識別する。 挿入が行われると、手続きはInsertFlag[Pri]
をクリヤし、タイマレジスタを適切にリセツト
し、次のプロセスを実行させる。
[Table] TptrLoc0 was used as a reference in the above definition.
one for priority 1 and one for priority 0,
You will notice that there are two Tptr locations.
They occupy contiguous memory locations and have address TptrLoc0 for priority 0. In this way, either location can be addressed by an offset of 0 or 1 from TptrLoc0, depending on the priority involved. The procedure "InsertStep" is executed as a result of InsertFlag "Prif" being set. The responsiveness of this procedure inserts the current process into the correct position in the timer list for the current priority level. The Breg[Pri] and Creg[Pri] registers identify the point by which the correct location search has been reached. When the insertion is done, the procedure sets InsertFlag[Pri]
, reset the timer registers appropriately, and run the next process.

【表】【table】

【表】 手続き「DeleteStep」はDeleteFlag[Pri]が
セツトされる結果として実行される。この手続き
の反復性能により、現在の優先権レベルに対する
タイマから現在のプロセスが削除される。Breg
[Pri]レジスタとCreg[Pri]レジスタが、正し
い場所の探索がその時までに達した点を識別す
る。 挿入が行われると、手続きはDeleteFlag[Pri]
をクリヤし、タイマレジスタを適切にリセツトす
る。
[Table] The procedure "DeleteStep" is executed as a result of DeleteFlag[Pri] being set. The iterative performance of this procedure removes the current process from the timer for the current priority level. Breg
The [Pri] and Creg [Pri] registers identify the point by which the correct location search has reached. When the insertion is done, the procedure deletes DeleteFlag[Pri]
and reset the timer registers appropriately.

【表】【table】

【表】 プロセツサは一連の動作を行う。それらの動作
は現在のプロセスのため、または直列リンク25
あるいはタイマ9により行われた要求のために行
われる。優先権0プロセス優先権0タイマまたは
優先権0プロセスを取扱う通信チヤネルのために
行われる動作は「優先権0動作」と呼ばれる。
「優先権1動作」はそれに対応して定義される。 現在のプロセスのために実行できる動作は手続
き「StartNextProcess」、「InsertStep」、
「DeleteStep」、「BlockCopyStep」または命令を
フエツチし、復号し、実行することである。 直列リンクのためにプロセツサにより行うこと
ができる動作は手続き「HandleRunRequest」お
よび「HandleReadyRequest」である。それら
わわれわれの前記未決の特許出願に詳しく記述さ
れている。タイマ9のためにプロセツサにより実
行できる動作は、先に定義した手続き
「HandleTimeRequest」に記述されている。 それらの各動作は一連のマイクロ命令に対応す
る。それらの動作を構成する任意のシーケンスに
おける最後のマイクロ命令は「NextAction」で
ある。これによりプロセツサは次に実行すべき動
作を選択させられる。 「NextAction」マイクロ命令が実行される時
にどの動作を次に実行すべきかをプロセツサが判
定する方法は次の通りである。同期制御ロジツク
10は、任意の時刻にたかだか1つの
「RunReqest」または「ReadyRequest」をプロ
セツサへ送る。未済の優先権0要求があるなら
ば、同期制御ロジツクは優先権1要求を送らな
い。その結果として2つの信号が条件マルチプレ
クサへ入力される。それらの信号の一方は要求の
存在を示し、他方はその要求の優先権を示す。 2つの信号「TimerRequest0」と
「TimerRequest1」が条件マルチプレクサへ接続
される。その条件マルチプレクサは、現在選択さ
れているSNPFlag58と、DeleteFlag83と、
InsertFlag82と、CopyFlag59とからの信号
へ接続される。したがつて、下記のようにして選
択を行うことができる。SnpFlag[Pri]がセツト
されるとすると、プロセツサは手続き
「StartNextProcess」を実行する。さもないと、
実行できる動作があるものとすると、プロセツサ
は優先権0動作を選択する。さもないと、実行で
きる動作があるものとすると、プロセツサは優先
権1動作を選択する。さもないと、タイマまたは
通信チヤネルから要求があるまでプロセツサを待
つ。 プロセツサは、下記の規則に従つて、ある特定
の優先権レベルPriの動作を選択する。
DeleteFlag[Pri]がセツトされるならば、プロ
セツサは「DeleteStep」を実行する。さもない
と、InsertFlag[Pri]がセツトされるならば、プ
ロセツサは「InsertStep」を実行する。さもない
と、プロセツサは任意の優先権Priチヤネル要求
を取扱う。さもないと、プロセツサは任意の優先
権Priタイマ要求を取扱う。さもないと、
CopyFlag[Pri]がセツトされるとすると、プロ
セツサは手続き「BlockCopyStep」を実行する。
さもないと、優先権Priの現在のプロセスがある
ものとすると、プロセツタは命令のフエツチ、復
号および実行を行う。 われわれのヨーロツパ特許明細書0110642に記
述されているように、命令はフエツチされ、復号
され、実行される。 以後の機能セツトについての記述は4つの付加
手続きについてのものである:− TimeSlice InsertInTimerList DeleteFromTimerList IsThisSelectedProcess それらの手続きの以下の定義において相対的な
時間を参照する。クロツク・レジスタ81は定期
的に1だけ増加させられ、連続サイクルを通じ
て、最も負の値から最も正の値まで増加する。最
も正の値の次の増加で、そのレジスタは最も負の
値へ戻る。以下の説明においては、(Yの後のX)
という表現は、Xが時刻Yより遅れていることを
意味する。(X+1)と(X+MostPos)の全て
の時間はXの後であると定義される。(Clock
Reg+1)と(Clock Reg+MostPros)の間の
全ての時間は未来にあると考えられ、(Clock
Reg and(−1))と(Clock Reg+MostNeg)
の間の全ての時間は過去にあると考えられる。 付加手続き定義は次の通りである:
[Table] The processor performs a series of operations. Their operation is due to the current process or serial link 25
or due to a request made by timer 9. Priority 0 Processes Operations performed for priority 0 timers or communication channels that serve priority 0 processes are referred to as "priority 0 operations."
"Priority 1 operation" is defined accordingly. The operations that can be performed for the current process are the procedures "StartNextProcess", "InsertStep",
"DeleteStep", "BlockCopyStep" or fetch, decode and execute instructions. The operations that can be performed by the processor for serial links are the procedures "HandleRunRequest" and "HandleReadyRequest." These are described in detail in our aforementioned pending patent application. The operations that can be performed by the processor for timer 9 are described in the previously defined procedure "HandleTimeRequest". Each of those operations corresponds to a series of microinstructions. The last microinstruction in any sequence that makes up those actions is "NextAction." This causes the processor to select the next operation to perform. The method by which the processor determines which action to perform next when the "NextAction" microinstruction is executed is as follows. The synchronization control logic 10 sends at most one "RunReqest" or "ReadyRequest" to the processor at any given time. If there is a priority 0 request outstanding, the synchronization control logic will not send a priority 1 request. As a result, two signals are input to the conditional multiplexer. One of those signals indicates the presence of a request, and the other indicates the priority of that request. Two signals "TimerRequest0" and "TimerRequest1" are connected to the condition multiplexer. The condition multiplexer selects the currently selected SNPFlag58, DeleteFlag83,
It is connected to the signals from InsertFlag82 and CopyFlag59. Therefore, the selection can be made as follows. If SnpFlag[Pri] is set, the processor executes the procedure "StartNextProcess". Otherwise,
Assuming there is an action that can be performed, the processor selects the priority 0 action. Otherwise, assuming there is an operation that can be performed, the processor selects the priority 1 operation. Otherwise, the processor waits until requested by a timer or communication channel. The processor selects an action for a particular priority level Pri according to the following rules.
If DeleteFlag[Pri] is set, the processor executes "DeleteStep". Otherwise, if InsertFlag[Pri] is set, the processor executes "InsertStep". Otherwise, the processor handles any priority Pri channel requests. Otherwise, the processor handles any priority Pri timer requests. Otherwise,
If CopyFlag[Pri] is set, the processor executes the procedure "BlockCopyStep".
Otherwise, assuming there is a current process with priority Pri, the processor fetches, decodes and executes instructions. Instructions are fetched, decoded and executed as described in our European patent specification 0110642. The following description of the function set refers to four additional procedures: - TimeSlice InsertInTimerList DeleteFromTimerList IsThisSelectedProcess We will refer to relative times in the following definitions of these procedures. Clock register 81 is periodically incremented by one, increasing from the most negative value to the most positive value through successive cycles. The next increment of the most positive value returns that register to the most negative value. In the following explanation, (X after Y)
The expression means that X is later than time Y. All times (X+1) and (X+MostPos) are defined to be after X. (Clock
All time between (Clock Reg+1) and (Clock Reg+MostPros) is considered to be in the future, and (Clock
Reg and(-1)) and (Clock Reg+MostNeg)
All time between is considered to be in the past. The additional procedure definition is as follows:

【表】 てなされる。

[Table] It is done.

【表】 機能セツト ヨーロツパ特許明細書0110642におけるように、
マイクロコンピユータのための各命令は、機能セ
ツトから選択された機能要素を含む。マイクロコ
ンピユータにより実行される機能には直接機能
と、プリフイクシング機能pfixおよびnfixと、1
組のオペレーシヨンのうちの1つを選択するため
にオペランド・レジスタを使用する間接機能opr
とが含まれる。上記特許出願におけるように、
pfixとnfixを除く全ての命令の実行後にOreg
[Pri]がクリヤされる。 この出願の改良された直接機能セツトおよびオ
ペレーシヨン・セツトは次の通りである:
[Table] Functional set As in European patent specification 0110642,
Each instruction for the microcomputer includes functional elements selected from a functional set. The functions executed by the microcomputer include direct functions, prefixing functions pfix and nfix, and 1
indirect function opr that uses an operand register to select one of a set of operations
and is included. As in the above patent application,
Oreg after execution of all instructions except pfix and nfix
[Pri] is cleared. The improved direct function set and operation set of this application are as follows:

【表】【table】

【表】【table】

【表】【table】

【表】【table】

【表】 コード番号31〜36を有するオペレーシヨンを除
き、上に掲げた全ての機能およびオペレーシヨン
は前記未決の特許出願においてすでに定義されて
いるから、この明細書においては再び定義はしな
い。しかし、機能「jump」とオペレーシヨン
「loop end」終りは、タイマ9の使用を行えるよ
うに再び定義されており、それはいま次のように
定義される。
TABLE All functions and operations listed above, except those with code numbers 31-36, have already been defined in the pending patent application and will not be defined again in this specification. However, the function "jump" and the operation "loop end" have been defined again to allow the use of timer 9, which is now defined as follows.

【表】 た時間が経過したら
プロセスを再スケジユ
ールさせること。
[Table] Rescheduling a process after a certain amount of time has passed
To make a rule.

【表】 と。
付加機能および“altend”は次のとおりであ
る。
[Table] And.
Additional functions and “altend” are as follows.

【表】 こと。
[Table] Thing.

【表】【table】

【表】【table】

【表】【table】

【表】 目的:選択的プロセスの選択されたコンポーネン
トの実行を開始すること。 マイクロ命令ROM13は、そのROM13か
らとりだしたマイクロ命令の結果として上記動作
のいずれかをプロセツサを実行させられるよう
な、上記の機能およびオペレーシヨンの全てに対
応するマイクロ命令を含むことがわかるであろ
う。 スケジユール プロセツサはそれの時間を、2種類の優先権レ
ベル0と1で実行しているいくつかの同時プロセ
スの間で供用する。優先権0プロセスと優先権1
プロセスが共に実行できるものとすると、優先権
0プロセスが優先権1プロセスより優先して常に
実行する。任意の時刻にただ1つのプロセスが実
際に実行され、現在のプロセスであるこのプロセ
スはWPTRレジスタ51に作業域ポインタ
(WPTR)を有し、IPTRレジスタ50内の命令
ポインタ(IPTR)が、その特定のプロセスに関
連するフランジ中の命令シーケンスから次に実行
すべき命令を示す。現在のプロセスではなく、か
つ実行を待つていないプロセスはどんなプロセス
でもデスケジユールされる。あるプロセスがスケ
ジユールされると、それは現在のプロセスになる
か、実行を待つているプロセスのリストすなわち
行列に加えられているかのいずれかである。その
ようなスケジユールされたリストはリンクされた
リストとして形成され、そのプロセスの作業域に
対するポインタを有する。そのリスト上の任意の
プロセスの命令ポインタ(IPTR)は、第4図に
示すように、それの作業域のIPTR場所65に格
納される。 この場合では、実行されるのを待つているスケ
ジユールされたプロセスの2つのリストをプロセ
ツサは含むことができる。それらのプロセスはそ
れぞれ各優先権レベルに対するものである。それ
に加えて、スケジユールされるまで指定された時
間を待つデスケジユールされたプロセスの2つの
タイマリストを含むことができる。各優先権に対
して1つのタイマリストが設けられる。第4図は
高優先権0のスケジユールされたリストを示し、
第5図は、第4図に示すようにある優先権0のプ
ロセスが現在のプロセスである時の、低優先権1
のスケジユールされたリストを示す。この場合に
は現在のプロセスが高優先権0のプロセスである
から、レジスタ・バンク選択器41はプロセツサ
が使用するレジスタをバンク39内で選択してい
る。したがつて、WPTRレジスタ[0]は、第
4図に示すように、現在のプロセスLの作業域6
0の0場所に対するポインタを保持する。IPTR
レジスタ[0]は、メモリに格納されているプロ
グラム・シーケンス181内の次の命令に対する
ポインタを含む。第4図に示されているレジスタ
54,55,56,57は次のプロセスLの実行
中に使用すべき別の値を含む。実行を待つている
優先権0のプロセスのスケジユールされたリスト
が、第4図に3つのプロセスM、N、Oにより示
されている。それらのプロセスの作業域が61,
62,63,に線図的に示されている。それらの
各作業域はプロセスLに対して示されている作業
域に全体として類似する。53で示されている
FRTRレジスタ[0]は、このリストの先頭の
プロセスであるプロセスMの作業域に対するポイ
ンタを含む。プロセスMの作業域はそれのIPTR
場所65に、プロセスMが現在のプロセスになつ
た時に実行すべきプログラム・シーケンス中の次
の命令に対するポインタを含む。プロセスMのリ
ンク場所66は、そのリスト上の次のプロセスで
あるプロセスNの作業域に対するポインタを含
む。示されているリスト上の最後のプロセスはプ
ロセスOである。そのプロセスOは63で示され
ている作業域を有する。52で示されている
BPTRレジスタ52は、この最後のプロセスO
の作業域に対するポインタを含む。このプロセス
Oの作業域63は前のプロセスNのリング場所6
6の内容により向けられるが、この場合にはプロ
セスOはリスト上の最後のプロセスであるから、
プロセスOのリンク場所66はポインタを含まな
い。 別のプロセスがこのリストに加えられると、そ
の別のプロセスの作業域に対するポインタが
BPTRレジスタ内に置かれるから、プロセスO
のリンク場所66は、そのリストに加えられたそ
の別のプロセスの作業域に対するポインタを含
む。 優先権1のスケジユールされたリストは全体と
して類似し、これは第5図に示されている。この
場合には、スケジユールされていて、実行を待つ
ている優先権1のプロセスのリストはプロセス
P、Q、Rより成る。Sという記号で示されてい
る別の優先権1のプロセスが示されているが、こ
れは現在はデスケジユールされて、リンクされた
リストの部分は形成しない。FPTRレジスタ
[1]は、実行を待つているリスト上の最初のプ
ロセスを形成するプロセスRの作業域に対するポ
インタを含む。BPTRレジスタ[1]は、スケ
ジユールされたリスト上の最後のプロセスを形成
するプロセスRの作業域に対するポインタを含
む。各プロセスP、Q、RはそれのIPTR場所に
あるプログラム段階を指すIPTRを有する。その
プログラムが現在のプロセスになつた時に、その
段階から次の命令がとり出される。スケジユール
されたリスト上の最後のプロセスを除く各プロセ
スのリンク場所は、そのリスト上の次のプロセス
の作業域に対するポインタを含む。 先に定義した手続き「deque」を用いることに
より実行するために、あるプロセスをリストのト
ツプからとり出すことができる。 先に定義した手続き「start next process」に
よりある現在のプロセスをデスケジユールでき
る。 第4,5図に示されている2つのスケジユール
されたプロセス・リストを動作させるやり方は、
前記特許出願において既に記述されているから繰
返えさない。 しかし、この実施例は、現在のプロセスが低優
先権プロセスであるとすると、「時間スライス」
と呼ばれるある期間の時間の後でそのプロセスを
停止させ、スケジユールされているリスト上の他
のプロセスに実行すべき機会を与えるように、第
5図に示されている行列の終りに再スケジユール
できるように、時間を輪切りする性能を与える。
第5図に示されているような種類のスケジユール
されたリストのトツプから低優先権のプロセスが
とり出されると、プロセツサは手続き「duque」
を実行し、手続きの定義の11行と12行からわかる
ように、そのプロセスが優先権1のプロセスであ
る(これは低優先権のプロセスに対する場合であ
る)とすると、12行に従つて、時間スライスレジ
スタ80に、クロツク・レジスタ81により示さ
れている現在の時間と、求められた「時間スライ
スの長さ」時間との和である値がロードされる。
時間スライスの長さは任意の時間間隔に適するよ
うに選択でき、この場合には1000個の命令を実行
するために必要な時間であるようにとられる。こ
れはもちろん必要に応じて変えることができる。
この時間スライスは定数ボツクス40に格納され
る。低優先権のプロセスが「飛越し(jump)」機
能または「ループ・エンド(loop end)」オペレ
ーシヨンを実行すると、飛越し機能およびルー
プ・エンド・オペレーシヨンの定義の終りからわ
かるように、プロセツサは手続き「時間スライ
ス」を実行する。手続き「時間スライス」の上記
定義に従つて、現在のプロセスの優先権が1で、
クロツク・レジスタにより示される時間が時間ス
ライス・レジスタ80により示される時間に等し
いか、それより遅れているとすると、作業域ポイ
ンタと現在のプロセスの優先権が手続き記述レジ
スタ46にロードされ、優先権1のスケジユール
されたリストの終りにプロセスを加えることによ
りそのプロセスが再スケジユールされるように、
手続き「run」が実行されるかをプロセツサが調
べる。プロセスが現在のプロセスの実行を止め、
プロセツサによる動作を求めるより高い優先権の
プロセスまたは要求が無ければ、優先権1のスケ
ジユールされたリストのトツプから別のプロセス
の実行を開始するように、その手続きは
SNPFlag58を値1にセツトする。 この実施例は、第6,7図に示されている種類
のタイマ・リストのための用意も行う。第6図は
低優先権1のプロセスのリンクされたタイマ・リ
ストを示し、第7図を高優先権0のプロセスの類
似のリンクされたリストを示す。低優先権のプロ
セスは第6図に文字T,U,Vで示されており、
第7図の高優先権プロセスには文字W,X,Vが
与えられている。それら2つのリストは全体とし
て類似しているから、第6図のリストだけ詳しく
説明する。リスト中の各プロセスのための作業域
60が第6図に示されている。タイマ・リセツト
の前方は、TPTRと呼ばれるポインタ値を保持
する単一語メモリ場所90により維持される。特
定の優先権のタイマ・リスト上にプロセスがない
時は、その優先権に対するTPTRは特殊な値
「NotProcess.p」にセツトされる。さもないと、
メモリ場所90に保持されているTRTRは、そ
のタイマ・リスト中の全てのプロセスは時間的な
順序でリンクされる。各プロセス作業域は、プロ
セスをスケジユールできる時刻を示す時間場所6
9内の値を示す。各プロセス作業域のTLink場所
68は、タイマリスト上の次のプロセスの作業域
の0場所に対するポインタを含む。リスト上の各
プロセス作業域の場所65は、プロセスがスケジ
ユールされて現在のプロセスとなつた時に使用す
るために、プログラム・シーケンス181内の次
の命令に対するポインタを格納する。タイマ・リ
スト上にプロセスがある時に妥当時間フラツグ8
4に値1にセツトされ、そのタイマ・リスト上に
プロセスがないと値0を有する。次の時間レジス
タ85は、タイマ・リストの前方におけるプロセ
スの場所69からとられる時間を含む。このよう
にして、関連するタイマ・リスト上のいずれかの
プロセスをスケジユールすべき最も早い時刻を示
すものをレジスタ85を含む。リストの後部を示
すために、タイマ・リストのために設けられるレ
ジスタはない。タイマ・リスト上の最後のプロセ
スの作業域は、それの作業域のILINK場所68
内に特殊な値「NotProcessp」を有する。レジス
タではなくてメモリ場所90を用いることにより
リストの前方が示される。このようにして、同じ
やり方でメモリ場所を使用することによりリスト
の前方が識別される。というのは、リストへの全
ての中間的なエントリイが識別され、そうするこ
とにより、別のプロセスを時間的な順序でタイ
マ・リストへ挿入したり、タイマ・リスト上の別
のプロセスを解除するために必要な動作を簡単に
するからである。タイマ・リスト上の既存の最初
のプロセスの前にプロセスが挿入することが必要
になることがあること、または、挿入すべきプロ
セスをスケジユールすべき時刻に応じてリストを
半ば通じてプロセスを挿入することが必要になる
ことがあることがわかるであろう。 第3図に示されているタイマ・ロジツクについ
ての以前の説明からわかるように、妥当時間フラ
ツグ84のいずれかが、適切な優先権タイマ・リ
スト上にプログラムが存在することを示す値にセ
ツトされたとすると、第3図に示されているタイ
マ・ロジツクは次の時間レジスタ85に示されて
いる時間(リスト上のいずれかのプロセスをスケ
ジユーリングするための最初の時間を示す)をク
ロツク・レジスタにより示される時間と比較し、
かつ、その最初のプロセスをスケジユーリングす
るための時間に達したとすると、タイマ・ロジツ
クが適切な要求信号が条件マルチプレクサへ与え
る。そうするとプロセツサはそれらの要求信号に
応答して、適切なタイマ・リストから最初のプロ
セスを除去し、適切な妥当時間フラツグと、次の
時間フラツグと、TPTR場所90を更新する。
そうするとこれはタイマ・リストの新しい状態を
反映する。そのプロセスがタイマ・リストにもは
やないことを示すために、プロセス作業域のため
にのTLINK場所68に値「TimeSet.p」が書込
まれる。そのプロセスが既に現在のプロセスでは
なくなつているか、またはスケジユールされてい
るリスト上に既にあるものと仮定すると、それは
第4図または第5図に示されているような種類の
スケジユールされたリストに加えられるようにな
り、またはスケジユールされたリストがなければ
現在のプロセスになる。タイマ・リストのトツプ
からあるプロセスを除去するプロセツサの動作は
前記定義「HandleTimerRequest」に述べられ
ている。 タイマ入力命令 プロセスは、その時間の経過後はそのプロセス
をAレジスタ54に再スケジユールせねばならな
いような時間をローデイングすることにより、
「TimerInput」を含む命令を実行でき、それから
オペレーシヨン「TimerInput」を実行する。最
初に、クロツク・レジスタにより示されている現
在の時間がAレジスタにより示されている時間の
後かどうかを調べ、もしそうならば、プロセスが
スケジユールされたままであるように何の動作も
行われない。しかし、この条件が満たされないと
すると、「TimerInput」の定義に述べられている
シーケンスが起き、特殊な値「Waiting.p」がプ
ロセス作業域の状態場所67に書込まれる。プロ
セスを再スケジユールすべき時刻はAレジスタに
示されている時刻の後にすべきであるから、Aレ
ジスタに示されている時刻は1だけ進まされて、
プロセスを再スケジユールすべき時刻を示す。プ
ロセツサは手続き「InsertInTimerList」を実行
する。この手続きにおいては、プロセス作業域の
時間場所69に、プロセスを再スケジユールすべ
き時刻を書込み、プロセスが時間的な順序に従う
ようにプロセスを適切なタイマ・リストの位置に
入れさせる。プロセツサが別のプロセスの実行を
開始するように、それはSNPFlagを値1にセツ
トすることもする。「TimerInput」命令を実行し
た命令は、適切な長さの時間が経過した時に再ス
ケジユールされる。 選択的タイマ入力命令(Alternative
Timer Input Instructi
ons) 前記未決の特許出願には別のプロセスが記述さ
れている。それら別のプロセスは実行のためのい
くつかの別のコンポーネントの1つを選択する。
別の各コンポーネントは、対応するプロセスが接
続する入力またはスキツプより成る。この例はタ
イマ選択的プロセス(timer alternative
process)を実行でき、そのプロセスは実行のた
めにいくつかの別のコンポーネントの1つを選択
する。別のタイマの各コンポーネントはメツセー
ジ・チヤネル入力(内部チヤネルまたは外部チヤ
ネルからの)と、対応するプロセスが後続するス
キツプまたはタイマ入力で構成できる。チヤネル
がレデイであるならばメツセージ・チヤネル入力
コンポーネントを選択でき、前記未決の特許出願
に記述されているようにスキツプコンポーネント
を常に選択できる。クロツク・レジスタ内の値が
タイマ入力で指定されている時刻の「後」
(AFTER)である時に、タイマ入力コンポーネ
ントを選択できる。この例は、タイマ入力に依存
しない別のプロセスを、前記未決の特許出願にお
いて既に記述されているやり方と正確に同じやり
方で実行する。その記述はこの明細書において繰
返えさない。現在のプロセスがいくつかの別のコ
ンポーネントを有する時は、1つまたはそれ以上
のそれらのコンポーネントを選択できるかどうか
を判定するために各コンポーネントが調べられ
る。どのコンポーネントも選択できないとする
と、それらのコンポーネントの1つを選択できる
までプロセスがデスケジユールされる。それから
プロセスは再スケジユールされ、コンポーネント
が再び調べられて、コンポーネントの1つが選択
される。メツセージ・チヤネル入力コンポーネン
トとスキツプ・コンポーネントの調査が、前記未
決の特許出願に記述されているようにして行われ
る。全てのコンポーネントが調べられると、プロ
セス作業域の状態場所67が2つの特殊な値
「Enabling.p」または「Ready.p」の1つを含む。
状態場所67が「Ready.p」を含んでいるものと
すると、およびその時だけ、それらのコンポーネ
ントの1つを選択できる。タイマ入力コンポーネ
ントを調べている間に、TLink68と時間場所6
9が特殊目的のために使用される。TLink場所6
8は2つの特殊な値「TimeSet.p」または
「TimeNotSet.p」のうちの1つをとる。それは、
タイマ入力がいずれも調べられていないことを示
す「TimeNotSet.p」に初期化され、最初のタイ
マ入力が調べられた時に「TimeSet.p」に変る。
最初のタイマ入力が調べられると、時間場所69
は指定された時間に初期化される。その後で、各
タイマ入力が調べられると、その時刻が時間場所
69に記録されている時間より早いとすると、時
間場所が指定された時刻に更新される。したがつ
て、全てのコンポーネントが調べられると、時間
場所69は任意のタイマ入力により指定された最
も早い時間を保持する。TLink場所68が値
「TimeSet.p」を含んでおり、かつクロツク・レ
ジスタの値が時間場所69内の時間の後である時
のみ、別のプロセスがはタイマー入力コンポーネ
ント選択できる。 全てのコンポーネントが従来べられた後で状態
場所67と、TLink場所68と、時間場所69と
を用いて任意のコンポーネントを選択できるかど
うかを、タイマ選択的プロセスが決定する。どの
コンポーネントも選択できないとするとプロセス
はデスケジユールされ、いずれかのタイマ入力コ
ンポーネントが調べられたとすると、プロセスは
適切なタイマ・リスト上に置かれる。選択できる
少くとも1つのコンポーネントがあるものとする
と、各コンポーネントは再び調べられ、最初の選
択可能なコンポーネントが選択される。前記未決
の特許出願に記述されているように、いずれかの
が選択されたのであればそのコンポーネントを記
録するために、プロセス作業域60の0場所が使
用される。チヤネル入力コネクタおよびスキツ
プ・コンポーネントの再検査は、前記未決の特許
出願に記述されているようにして行われる。タイ
マ入力コンポーネントの再検査は、TLink場所6
8と時間場所69を用いて、次のようにして行わ
れる。最初のタイマ入力コンポーネントが再検査
さる時にタイマ選択的プロセスがタイマ・リスト
上にないとすると、プロセスがそのタイマ・リス
ト上に置かれ、かつその後で除去されたか、プロ
セスがタイマ・リスト上に全く置かれていなかつ
たのかのいずれかである。前者の場合には、早い
タイマ入力コンポーネントが選択可能になつた時
刻を時間場所69は含む。後者の場合には、コン
ポーネント・プロセスを調べた直後に時間場所6
9は値「CLOCK REG」を含む。時間場所は、
タイマ入力コンポーネントの全ての再検査に対し
て同じ値を保持する。時間場所69の内容が指定
された時刻より「後」である場合のみ、タイマ入
力コンポーネントを選択可能である最初のタイマ
入力コンポーネントが再検査される時にタイマ選
択的プロセスがタイマ・リスト上に以前としてあ
るものとすると、選択可能なタイマ入力コンポー
ネントは存在しないが、選択可能なチヤネル入力
コンポーネントは必ず存在する。この場合には、
タイマ入力コンポーネントの最初の再検査はタイ
マ・リストからプロセスを除去し、TLink場所6
8を値「TimeNotSet.p」をセツトして、どのタ
イマ入力コンポーネントの選択も阻止する。この
場合には時間場所69は使用されない。 タイマ選択的プロセスを実行する命令は、各タ
イマ・コンポーネントに対する「タイマ・イネイ
ブル」が後続する「タイマ選択的開始(timer
alternative start)」である。メツセージ・チヤ
ネルが別の構造中に含まれているならば、プロセ
ツサは各およびあらゆるメツセージ・チヤネルに
対して「チヤネル・イネイブル」の実行も行う。
この後に、「タイマ選択的待機(timer
alternative wait)」が続き、それから各々タイ
マ入力に対する「タイマ・デイスエイブル」と、
任意のチヤネル入力に対する「チヤネル・デイス
エイブル」に続く。 タイマ選択的プロセスにより実行される最初の
命令は「タイマ選択的開始」オペレーシヨンであ
り、このオペレーシヨンの定義からわかるよう
に、2行目に従つて特殊な値「enabling.p」がプ
ロセスのために状態場所67に書込まれ、3行目
に従つて特殊な値「timeNotSet.p」がプロセス
作業域のためにTLink場所68に書込まれる。 前記未決の特許出願に記述されているように、
任意のチヤネル入力コンポーネントおよび任意の
スキツプ・コンポーネントが「チヤネル・イネイ
ブル」オペレーシヨンおよび「スキツプ・イネイ
ブル」オペレーシヨンにより調べられる。ガード
値(guard value)をAレジスタにロードし、タ
イマ・コンポーネントのための指定された時間を
Bレジスタにロードし、それから「タイマ・イネ
イブル」オペレーシヨンを実行することにより、
任意のタイマ入力コンポーネントが調べられる。
そのオペレーシヨンの定義に従つて、2行と3行
は、Aレジスタ内のガード値が偽であるかどうか
を調べる。もしそれが偽であれば、タイマ入力を
無視し、その命令は他の効果を有しない。定義の
5行目に従つてそのガード値が偽でないとする
と、プロセツサは定義の7行目から始まるシーケ
ンスを実行する。これは、TLink場所68から得
た値をOレジスタにロードし、8行目は、9行目
に従つてその値が「TimeNotSet.p」か、13行目
に従つて「timeSet.p」であるかを試験するため
の検査を行う。その値が「TimeNotSet.p」であ
ることが判つたとすると、値「TimeSet.p」が11
行目に従つてTLink場所に書込まれ、定義の12行
による求めに応じてプロセス作業域のための時間
場所69にBレジスタ中に示されている時間が書
込まれる。これは、プロセスにより調べられる最
初のタイマ入力コンポーネントに対して起る。調
べられる以後のタイマ入力に対しては、13行目の
条件が満されることがある。この場合には14行目
に従うシーケンスが起る。プロセスのための時間
場所69に記録されている時間値がOレジスタ5
7にロードされること、およびその時間値が定義
の17行目の条件に適合するかどうかを調べるため
にその時間値を試験することを15行目は求める。
その時間がBレジスタに示されている時間の
「後」であるとすると、Bレジスタ内の時間がそ
のプロセスのための時間場所69に書込まれる。
19行目と20行目は、Oレジスタ中に示されている
時間がBレジスタ中に示されている時間の「後」
でないとすると、どのような動作も行われない。
最後に、定義の21行目により要求されて、Cレジ
スタからの値がロードされる。このようにしてプ
ロセスは可能な各タイマ入力を調べ、検査の後で
最も早い時間コポーネントの時間をそれが含むよ
うに、プロセスの時間場所69が更新される。し
たがつて、各タイマ・コンポーネントのための一
連の(タイマ・イネイブル)オペレーシヨンが任
意のコンポーネントの最も早い時間を効果的に決
定し、調べられた任意のコンポーネントの最も早
い時間で時間場所69を順次更新することがわか
るであろう。 それから、プロセスはオペレーシヨン「タイマ
選択的待機」を実行する。定義の2行目に従つ
て、これはプロセス作業域の0場所を−1に初期
化し、それから、代りのプロセスのどのコンポー
ネントが既に選択可能であるかを判定するために
試験を行う。定義の3行目と4行目に従つて、そ
れはTLink場所68からの値をBレジスタへ読込
み、時間場所69からの値をAレジスタへ読込
む。5、6行は、プロセスが値「Timeset.p」を
有し、かつ時間場所69内に示されている時間の
「後」の時間をクロツク・レジスタが示したとす
ると、8、9行目に定義されているシーケンスが
起ることを要求する特殊な値「Ready.p」がプロ
セスのための状態場所67に書込まれ、クロツ
ク・レジスタにより示されている現在の時間がプ
ロセスのための時間場所69に書込まれる。プロ
セスはデスケジユールされず、それの次の命令へ
動きことができる。すかし、定義の6行目の条件
が真ではなかつたとすると、プロセスは定義の12
行目へ動く。それはこれにCレジスタへローデイ
ングすることによりプロセスのための状態場所6
7の内容を試験し、これが値「Ready.p」を含む
かどうかを14年行が試験する。もしそうだとする
と、16行目に従つて、クロツク・レジスタにより
示されている現在の時間がプロセスのための時間
場所69に書込まれ、プロセスはデスケジユール
されない。代りに入力のうちの別の入力のために
それはレデイ状態であり、プロセスは次の命令へ
動くことができる。しかし、定義の16行目に従つ
て、プロセスの状態場所から特殊な値「enbling.
p」が見出されたとすると、これは、代りのコン
ポーネントのいずれもまだレデイではなく、17行
目から始まるシーケンスが起ることを示す。特殊
な値「waiting.p」がプロセスのための状態場所
67に書込まれ、プロセスがタイマ・コンポーネ
ントを待つているかどうかを19、20行目が試験す
る。20行目に従つてプロセスが値「TimeSet.p」
を有するものとすると、プロセスをスケジユール
すべき時を指示するためにAレジスタの内容が1
だけ増加させられ、23行目に従つて手続き
「Insert In Time List」が実行される。そうする
と、プロセスがデスケジユールされるが、それを
再スケジユールすべき時の指示を含むように、プ
ロセスが適切な優先権タイマ上に置かれることに
なる。定義の24行目に従つて、プロセスがどのよ
うなタイマ・コンポーネントも持つていないとす
ると、Bレジスタは値「TimeNotSet.p」を有す
ることができ、これは、プロセスがタイマ入力で
はなくてチヤネル入力を依然として待つている場
合に起る。この状況においては25行目に続くシー
ケンスが起り、プロセスに対する命令ポインタが
プロセス作業域のIPTR場所65に格納され、プ
ロセスがデスケジユールされるようにSNPFlag
が値1にセツトされる。したがつ、定義において
は、タイマ入力のためにプロセスがレデイである
かどうかを6〜9行目が試験する。非タイマ入
力、たとえばチヤネル入力のためにプロセスがレ
デイであるかどうかを13、14行目が試験するプロ
セスがレデイでないことが見出される時は16行目
オンワード(onwards)を適用する。 プロセスがデスケジユールされていないとした
時、または後でそのプロセスが再スケジユールさ
れる時にそのプロセスにより実行される次の命令
は、各タイマ・コンポーネントに対するオペレー
シヨン「タイマ・デイスエイブル」と、任意のス
キツプ・コンポーネントに対するオペレーシヨン
「スキツプ・デイスエイブル」と、任意のチヤネ
ル・コンポーネントに対するオペレーシヨン「チ
ヤネル・デイスエイブル」を行うであろう。チヤ
ネル入力コネクタおよびスキツプ・コポーネント
は、前記未決の特許出願に記述されているよう
に、「チヤネル・デイスエイブル」オペレーシヨ
ンと「スキツプ・デイスエイブル」オペレーシヨ
ンにより再検査される。タイマ選択的プロセスは
オペレーシヨン「タイマ・デイスエイブル」の定
義に従つてタイマ入力コンポーネントを再検査す
る。その代りのコンポーネントをプロセスによる
選択すべきであるとすると、以後のプログラム命
令を置くためにプログラム・シーケンスにおいて
必要なオフセツトを指示するために、最初にAレ
ジスタにコード・オフセツトがロードされる。ガ
ードが偽でなつたとすると、プロセスはそのプロ
セスのためにTLink場所68の内容を調べる。考
慮すべき3つのケースがある。第1に、TLink場
所は定義の10行目に従つて値「TimeSet.p」を含
むことができ、この場合には、時間場所69内の
時間がCレジスタ内の指定された時間の「後」で
あるならば、そのコンポーネントは選択可能であ
る。これは定義の14行目における条件であり、こ
の条件が満されるものとすると、プロセスは手続
き「IsThisSelected Process」を実行する。その
手続きの定義の5、6行目に従つて、プロセス作
業の0場所が値−1を含んでいるか否かをそれは
調べる。もし含むとするとこのコンポーネントは
選択され、定義の8行目に従つて作業域の0場所
にAレジスタからコード・オフセツトがロードさ
れる。手続き定義の10行目に従つて作業域の0場
所が値−1を有していなかつたとすると、コンポ
ーネント・プロセスは既に選択され、現在の1は
選択できない。 プロセスのTLink場所68が「TimeSet.p」ま
たは「TimeNotSet.p」以外の値を含んでいるこ
とを「タイマ・デイスエイブル」オペレーシヨン
が見出したとすると、これは「タイマ・デイスエ
イブル」の定義の18行目の状況に対応する。これ
は、TLink場所68がタイマ・リスト上の別のプ
ロセスに対するポインタを含むように、プロセス
がそのリスト上に依然としてある時に起るであろ
う。したがつて、プロセスがタイマ・リスト上で
依然として待つているからタイマ・コンポーネン
トを選択できず、手続き「タイマ・リストから削
除」によりタイマ・リストから除去される。これ
により値「TimeNotSet.p」がそのプロセスのた
めのTLink場所68に書込まれる。 「タイマ・デイスエイブル」オペレーシヨン
は、定義の8行目に従つてTLik場所が値
「TimeNotSet.p」を含んでいることを見出すこ
とができる。この場合にはTLink場所68が、プ
ロセスがタイマ・リスト上にある間に実行されて
以前の「タイマ・デイスエイブル」オペレーシヨ
ンにより、この値にセツトされた。したがつて、
Aレジスタは定義の9行目に従つて値
MachineFALSEにセツトされる。 代りのコンポーネントの全てが再検査される
と、プロセスはオペレーシヨン「選択的終了
(Alternative End)」を実行し、その定義に従つ
て、それは、プロセス作業域の0場所に格納され
ているコード・オフセツトをOレジスタに最初に
ロードし、それからIPTPレジスタ内のポインタ
値をOレジスタ内のオフセツトにより調整する。
これによりプロセスは、選択された代りのプロセ
スに適切なオフセツトでプログラム・シーケンス
中の次の命令を選択させられる。 以下にプロセスの種々の例について説明する。 例 1 最初に、プロセスがデスケジユールされていな
い状況において「タイマ入力」命令を実行してい
る優先権1プロセスについて考える。たとえば、
Aレジスタにある値、たとえば、クロツク・レジ
スタが14の「後」の値を含んでいる時に、断続す
ることをプロセスが望んでいることを示す14、を
ロードできる。クロツク・レジスタが値20を含ん
でいる時に命令が実行されるものとすると、プロ
セスは「タイマ入力」の定義の最初の2行に従つ
て、クロツク・レジスタ内の値がAレジスタ内に
示されているのの後であるかどうかを調べる。こ
の例においてはその条件が適用されるから、プロ
セスをデスケジユールリングすることなしにプロ
セスは続行する。 例 2 これは、デスケジユールされるプロセスによる
「タイマ入力」のオペレーシヨンを示すもので、
第9A〜9D図を参照する。それらの図は、プロ
セスXの作業域60に対する種々の語場所におけ
る変化と種々のレジスタの内容を示すものであ
る。第9A図は「タイマ入力」命令の実行直前の
位置を示す。Aレジスタ54は、クロツク・レジ
スタ81内の時間が30の後である時のみ、プロセ
スがスケジユールされることを望んでいることを
示す値30を含む。クロツク・レジスタは現在は時
間値20を含んでおり、妥当時間フラツグ84が0
にセツトされて、優先権1タイマ・リスト上には
プロセスがないことを示す。「タイマ入力」オペ
レーシヨンが実行されると、クロツク・レジスタ
の内容がAレジスタの内容と比較される。「タイ
マ入力」の定義の5行オンワードから述べられて
いるように、特殊な値「waiting.p」がプロセス
Xの状態場所67に書込まれ、プロセスをスケジ
ユールすべき時間をAレジスタが含むように、A
レジスタ内の値が増加させられる。それからその
プロセスはタイマ・リストに挿入され、位置は第
9B図に示すようなものである。これによりクロ
ツク・レジスタはいまは22に増加させられたこと
になる。妥当時間フラツグ84はいまは値1にセ
ツトされて、タイマ・リスト上に少くとも1つの
プロセスがあることを示す。次の時間レジスタ8
5は値31を含む。この値は、タイマ・リスト上の
最初のプロセスをスケジユールすべき問題であ
る。TRTR場所90は、タイマ・リスト上の最
初の(そして唯一の)プロセスであるプロセスX
の作業域ポインタを含む。プロセスXの作業域は
それの命令ポインタ(IPTR)を場所65に含
み、特殊な値「waitig.p」を場所67に含み特殊
な値「not process.p」を場所68に含んで、こ
れがタイマ・リスト上の最後のプロセスであるこ
とを示し、場所69に値31を含んでプロセスを再
スケジユールできる時間を示す。 十分な時間が経過して、クロツク・レジスタが
値31に増加した時には、位置は第9C図に示すよ
うなものである。クロツク・レジスタ値がいまは
次の時間レジスタの値に等しく、妥当時間フラツ
グが値1にセツトされるから、タイマ・ロジツク
は時間要求をプロセスに対して発生する。これに
よるプロセツサが値1をPROCPRIにロードさせ
られ、かつ「HandleTimeRequest」手続きを実
行させる。これによりプロセスXがスケジユール
させられ、妥当時間フラツグがクリヤされ、
TPTR時間90が「not process.p」にセツトされ
る。これは第9D図に示されている位置である。 例 3 これは、プロセスをタイマ・リストの正しい位
置にある時間順序で挿入させるために、挿入フラ
ツグ82をどのようにして用るかを示すものであ
る。プロセスPは、それをデスケジユールさせる
タイマ入力動作を実行する。プロセスPは優先権
1プロセスであり、かつ実行している唯一のプロ
セスであると仮定する。また、優先権1タイマ・
リスト上で待つている3つの他のプロセスがある
ということも仮定する。それら3つのプロセスは
時間25を待つているプロセルXと、時間26を待つ
ているプロセスYと、時間29を待つているプロセ
スZとである。第10A図はタイマ入力命令を実
行する直前の位置を示す。プロセスPが実行して
おり、Aレジスタが時間27を含んでいる。クロツ
ク、レジスタが時間20を含む。タイマ・リストが
使用中であることを示す値1に妥当時間フラツグ
にセツトされ、タイマ・リスト上の最も速いプロ
セスに関連する時間が25である値25に次の時間レ
ジスタが含む。そのタイマ・リスト上に3つのプ
ロセスがあることがわかる。TPTR場所90は
それらのプロセスのうちの最初のプロセスである
プロセスXに対するポインタを含む。プロセスX
のTLink場所68は第2のプロセスに対するポイ
ンタを含み、プロセスYは第3のプロセスZに対
するポインタを含む。プロセスZのTLink場所6
8は特殊な値「Not Process.p」を含む。それ
は、プロセスZがタイマ・リスト上の最後のプロ
セスであることを示す。そのタイマ・リストは早
いリストを最初にし、最近のプロセスを最後にし
て順序づけられていることがわかる。プロセスP
がタイマ・リスト入力命令を実行すると、クロツ
ク・レジスタとAレジスタが比較され、クロツ
ク・レジスタはまだAレジスタの「後」ではない
から、特殊な値「waiting.p」がプロセスPの状
態場所67へ書込まれ、Aレジスタが1だけ増加
させられて手続き「insert timer list」が実行さ
れる。これによつてAレジスタ内の値がプロセス
Rの作業域の時間場所69に書込まされ、Bレジ
スタがTPTR場所90における点にセツトされ、
CレジスタがTPTR場所90の内容にセツトさ
れる。それからタイマ入力命令が終り、状態場所
は第10図に示すようなものである。 挿入フラグが値1にセツトされると、プロセツ
サにより実行される次の動作は手続き「insert
step」である。この手続きの定義からわかるよう
に、これはTレジスタ49にプロセスXに関連す
る時間(すなわち25)をロードさせ、かつそれを
プロセスPに関連する時間(すなわち28)と比較
する。28は25の「後」であるから、プロセスPを
タイマ・リストに挿入する正しい場所をまだ見つ
けておらず、「insert step」手続きがBレジスタ
をプロセスXのTLink場所68に対するポインタ
にセツトさせ、Cレジスタがその場所の内容をセ
ツトさせられる。それから手続きが終つてinsert
flagをセツトされたままにする。その結果として
の状況が第10C図に示されている。プロセスの
次の動作は手続き「insert step」を再び実行す
ることである。これは前記したのに類似のやり方
で実行され、第10D図に示されている状況にな
る。 再び、プロセツタの次の動作は手続き「insert
step」を実行することである。しかしこの場合に
は、プロセスZに関連する時間(すなわち29)は
プロセスPに関連する時間(すなわち28)の後で
あるから、プロセツサは挿入フラツグをクリヤ
し、プロセスPの作業域ポインタをプロセスYの
TLink場所68へ書込み、プロセスZの作業域ポ
インタをプロセスPのTLink場所68に書込むこ
とにより、プロセスPをタイマ・リストのプロセ
スYとプロセスZの間に挿入する。それから、プ
ロセツサの次の時間レジスタ85をタイマ・リス
ト上の最初のプロセスに関連する時間にリセツト
し、妥当時間フラグを値1にセツトする。最後
に、プロセツサはプロセスPの命令ポインタをプ
ロセスPのEPTR場所65に書込み、SNPFlag
58を値1にセツトして、プロセツサの次の動作
としてプロセスPをデスケジユールさせる。 例 4 これはつのタイマ入力コンポーネントを有する
タイマ選択的プロセスXを示す。プロセツサXが
唯一の実行可能なプロセスであり、プロセスXが
優先権1を有し、最初のタイマ入力コンポーネン
トが26であり、プロセスXが優先権1を有し、
最初のタイマ入力コンポーネントが26であり、第
2のタイマ・リスト入力コンポーネントが25であ
ると仮定する。これは第11A〜11C図に示さ
れている。それらはプロセス作業域60の作業域
場所67〜69のための引き続く状況を示す。第
11A図は「タイマ選択的開始」命令を実行直後
の位置を示す。状態場所67は特殊な値
「enabling.p」を含み、TLink場所68が特殊な
値「TimaNotSet.p」を含む。最初の「タイマ・
イネイブル」命令が実行される直前にAレジスタ
は値Machine TRUEをを含み、Bレジスタはこ
のタイマ入力に関連する時間すなわち26を含む。
タイマ・イネイブル命令が実行されると、プロセ
ツサはTLink場所68を読み、以前に調べられた
タイマ入力コンポーネントがないことを示す値
「TimeNotSet.p」をそれが含んでいることを見
出した。したがつて、プロセツサはTLink場所6
8を特殊な値「TimeSet.p」にセツトし、時間場
所69を値26にセツトする。これは第11B図に
示されている位置である。第2の「タイマ・イネ
イブル」命令が実行される直前にAレジスタは値
MachineTRUEを含み、Bレジスタは第2のタ
イマ入力コンポーネントに関連する時間である値
25を含む。タイマ・イネイブル命令が実行される
と、プロセツサはTLink場所68を読み、以前の
タイマ入力コンポーネントに関連する最も早い時
間を時間場所を含んでいることを示す
「TimeSet.p」をそれが含むことを見出す。した
がつて、プロセツサは時間場所69を読み、25で
あるこのコンポーネントのために指定された時間
が、値26を含んでいる時間場所から読まれた時間
より早いことが判定する。したがつて、プロセツ
サは新しい値を時間場所に書込み、位置は第11
C図に示すようなものである。 例 5 第12A〜12C図に示されているこの例は、
2つのタイマ入力コンポーネントを有するタイマ
選択的プロセスPを示す。このプロセスPはデス
ケジユールされない。プロセスPは唯一の実行可
能なプロセスであること、プロセスPは優先権1
プロセスであること、第1のタイマ入力コンポー
ネント内で指定された時間が26であり、第2のタ
イマ入力コンポーネントの時間が25であることを
仮定している。「タイマ選択的開始」命令の実行
とタイマ入力コンポーネントの検査は例4におい
て先に述べたようなものであり、「タイマ選択的
待機」命令の実行直前の状況は第11C図に示す
ようなものである。「タイマ選択的待機」の最初
の動作は値−1をプロセスPの作業域60の0場
所に書き込むことである。これは複数の代りのコ
ンポーネントからコンポーネントを選択するため
に使用される場所である。次に、クロツク・レジ
スタ内の時間が時間場所69内の時間の「後」で
あるから、デスケジユーリングなしにプロセスP
を続行できることをプロセツサは決定する。した
がつて、プロセツサは特殊な値「Ready.p」を状
態場所67に書込み、クロツク・レジスタの値が
時間場所69に書込まれる。この結果として第2
A図に示されているような状況になるが、その図
においてはクロツク・レジスタはいまは値31に進
んでいる。最初の「タイマ・デイスエイブル」の
直前の位置が第12B図に示されている。Aレジ
スタは、「選択的終了」命令から、最初のタイマ
入力コンポーネントに関連するフランジ中の命令
のシーケンスまでのオフセツトを含み、Bレジス
タは値Machine TRUEを含み、Cレジスタはこ
のタイマ・コンポーネントに関連する26である時
間を含む。それからプロセスは「タイマ・デイス
エイブル」命令が実行する。その命令はTLink場
所68を読み、それが値「TimeSet.p」を含んで
いることを判定する。したがつて、それは値30を
時間場所から読み、30は26の「後」であるから、
このタイマ入力コンボーネントは選択可能であ
る。それからプロセツサは、このコンポーネント
を選択する手続き「InThisSelectedProcess」を
実行する。というのは、プロセス作業域の0場所
が値−1を依然として含んでいるからである。こ
の結果の状況が第12C図に示されている。いま
は第2のタイマ入力コンポーネントを選択でき
ず、選択的終了命令が実行されると、プロセスP
に対する作業域は依然として第12図に示すよう
なものである。 例 6 第13A〜13F図に示されているこの例は、
2つのタイマ入力コンポーネントを有するタイマ
選択的プロセスPを示す。この場合にはプロセル
Pはデスケジユールされる。プロセスPは唯一の
実行可能なプロセスであること、プロセスPは優
先権1プロセスであること、第1のタイマ入力コ
ンポーネント内で指定された時間が26であり、第
2のタイマ入力コンポーネントの時間が25である
ことを仮定している。「タイマ選択的開始」命令
の実行とタイマ入力コンポーネントの検査は例4
において先に述べたようなものであり、「タイマ
選択的待機」命令の実行直前の状況は第11C図
に示すようものである。「タイマ選択的待機」命
令の最初の動作は値−1をプロセスPの作業域の
0場所に書込むことである。プロセツサは時間場
所69内の値をクロツク・レジスタの値と比較
し、あるタイマ入力のためにプロセスを続行でき
ないことを見出し、プロセスの状態場所67を調
べる。これは「enabling.p」を含んでいるから、
プロセスはタイマ・リスト上に置かれてデスケジ
ユールされる。これは第13A図に示されている
位置である。妥当時間フラグは、値1にセツトさ
れて、タイマ・リストが空いていないことを示
す。次の時間レジスタは、プロセスPが実行レデ
イとなるであろう時間である値26を含む。
TPTR場所90はプロセスPの作業域に対する
ポリンタを含み、プロセスPのTLink場所68
は、それがリスト上の最後のプロセスであること
を示す特殊な値「not process.p」を含む。十分
な時間が経過すると、例2において記述されてい
るように「タイマ要求」信号をプロセツサへ送
る。その信号が作られる状況は第13B図に示す
ようなものである。プロセスが再スケジユールさ
れると位置は第13図に示されているようなもの
である。最初の「タイマ・デイスエイブル」命令
の実行直前の状況は第13D図に示すようなもの
である。タイマ命令が実行されるとTLink場所6
8が読まれ、「TimeSet.p」を含むことを見出す。
それからプロセツサはこの時間コンポーネントに
関する時間、26、時間場所69内に示されている
時間、これも26である、と比較する。26は26の
「後」ではないから、このコンポーネントは選択
できない。したがつて、プロセツサは値
MachineFALSEをAレジスタにロードして命令
は終了する。プロセスPは第2の「タイマ・デイ
スエイブル」命令を実行する直前の状況は第13
E図に示すようなものである。この命令が実行さ
れることによりコンポーネントが選択させられ
て、第13F図に示さえているような状況にな
る。 例 7 これは1つのタイマ入力コンポーネントと1つ
のメツセージ・チヤネル入力コンポーネントを有
するタイマ選択的プロセスPを示す。プロセスP
は唯一の実行可能なプロセスであること、それは
優先権1を有すること、指定された時間が40であ
ることを仮定している。タイマ・リスト上にはプ
ロセスはなく、チヤネル入力コンポーネントによ
り参照されているチヤネルは最初「Ready」であ
り、タイマ入力コンポーネントは選択できない。
この例が第14A〜14D図に示されている。プ
ロセスPは「タイマ選択的開始」命令を実行し、
それのレジスタを適切にロードし、「タイマ・イ
ネイブル」命令を実行する。この結果として第1
4A図に示されている状況になる。チヤネルが
「Ready」であるから、「チヤネル・イネイブル」
命令の実行後の状況は第14B図に示すようなも
のである。それから、フランジは「タイマ選択的
待機」命令を実行する。クロツク・レジスタ内の
時間は値11を有する。この時間は、プロセルPに
対する時間場所69に示されている時間40の後で
はない。して、プロセツサは、「値「Ready.p」
を含んでいる状態場所67を調べ、したがつてク
ロツク・レジスタ内の時間値を時間場所69に書
込む。「タイマ選択的待機」命令の終了後の状況
は第14C図に示すものである。「タイマ・デイ
スエイブル」命令の直前の状況が第14D図に示
すように実行される。時間場所69内の時間値12
がコンポーネントに関連する時間の「後」ではな
いから、タイマ入力コンポーネントは選択されな
い。それから、チヤネル入力コンポーネントを選
択する「チヤネル・デイスエイブル」命令をプロ
セスが実行する。 以上の例から、「タイマ・デイスエイブル」命
令が実行されると、プロセスの時間場所69に格
納されている時間が、それを基にしてタイマ・デ
イスエイブル命令が実行されるような全てのタイ
マ入力に対して一定のままである標準時間である
ことがわかるであろう。これにより、種々のタイ
マ入力が、引き続く「タイマ・デイスエイブル」
命令が実行されるにつれて時間の経過のために変
化する時間と比較されることが避けられる。 例 8 これは、時間40を指定する1つのタイマ入力コ
ンポーネントと、チヤネル70を通る1つのチヤ
ネル入力コンポーネントを有するタイマ選択的プ
ロセスであるプロセスPを示す。この例では、タ
イマ・リスト上に最初に2つのプロセスであると
仮定している。それらのプロセスは時間34、54を
指定する。メツセージ・チヤネルは最初は
「ready」ではないが、タイマ・リスト上の最初
のプロセスがレデイになる前に「ready」とな
る。タイマ選択的プロセスを実行するために、プ
ロセスは「タイマ選択的開始」命令と、一方のタ
イマ入力コンポーネントのための「タイマ・イテ
イブル」オペレーシヨンと、チヤネル70のため
の「チヤネル・イネイブル」オペレーシヨンを最
初に実行する。そうすると位置は第15A図に示
されているようなものである。プロセスPはまだ
デスケジユールされておらず、「状態」場所67
が「enabling.p」に初期化されて、プロセスが代
りの入力を実行していることを示す。TLink場所
68は値「TimeSet.p」にセツトされていて、タ
イマ入力が調べられたことを示す。「時間」場所
69は、調べられた任意のタイマ入力のうちの最
も早い時間にセツトされている。その最も早い時
間は、この場合には40であつて、この時間40は調
べられた唯一のタイマ入力である。タイマ・リス
トはスケジユーリング時間35、55をそれぞれ有す
る2つのデスケジユールされたプロセスXとYを
有する。それから、プロセツサはプロセスPに対
する「タイマ選択的待機」命令を実行する。これ
は、レデイ」であつたチヤネル入力がなかつこ
と、および、クロツク・レジスタが第15A図に
時間11を含むから、プロセスPがタイマ入力を続
ける時間にまだ達しておらず、したがつてプロセ
スPがタイマ・リストに挿入されて、デスケジユ
ールされることをプロセスPの「状態」場所67
から見出すであろう。この結果として第15B図
に示されている位置になる。リンクされたタイ
マ・リストはいまは時間的な順序で全部で3つの
プロセスX、P、Yを有する。出力プロセスがそ
のチヤネルを通つて出力しようとしているため
に、ある時間だけ遅れてチヤネル70は「レデ
イ」となる。そのチヤネルはプロセスPの記述子
を含んでいるから、プロセスPはスケジユールさ
れるようになり、「タイマ・デイステイブル」命
令を実行する前にそれのレジスタをロードして第
15C図に示すような状況となる。次に、プロセ
スは「タイマ・デイスエイブル」動作を実行し、
これはプロセスPのための「TLink場所」68を
読み、タイマ・リストがタイマ・リスト上の次の
ポイセスに対する作業域プリンタを含んでいるか
ら、プロセスがタイマ・リスト上に依然としてあ
ることを決定する。プロセスPがそのリスト上に
依然としてあるから、そのタイマ入力コンポーネ
ントのための時間がまだ来ず、したがつてタイ
マ・コンポーネントは選択できない。したがつ
て、AレジスタはMachineFALSEにセツトされ、
手続き「delete from timあer list」が実行され
る。これによりDELETE FLAGが値1にセツト
され、BレジスタにTPTR場所90に対するポ
インタをロードし、CレジスタにTPTR場所の
内容をロードする。それから命令が終つて第15
0図に示すような位置を残す。DELETEFLAG
が値1にセツトされているから、プロセスの次の
動作は手続き「delete step」を実行することで
ある。TPTR場所がプロセスXの作業域ポイン
タを含んでいるから、そのポインタは、Cレジス
タに最初のロードされるプロセスXの作業域ポイ
ンタであろうし、したがつて手続き
「deletestep」の実行において「delete step」の
定義の2行目の条件が適用されて、Cレジスタが
プロセスPの作業域ポインタを含まない。したが
つて、「delete step」の定義の5、6行目に従つ
て、プロセスは、BにプロセスXのTLink場所に
対するポインタをロードし、CレジスタにBレジ
スタにより指された場所の内容、すなわち、プロ
セスPの作業域に対するポインタ、をロードする
ことにより、プロセスはタイマ・リスト中の次の
プロセスへ歩進する。これは第15E図に示され
ている状況である。そこから手続き「delete
step」が終了し、DELETE FLAGが依然として
セツトされているから、プロセツサの次の動作は
手続き「delete step」を再び実行することであ
る。したがつて、手続き「delete step」の7行
目の条件が適用され、CレジスタがプロセスPで
ある現在のプロセスの作業域ポインタをいま含む
であろうことがいまわかるであろう。これは、リ
ストは削除すべきプロセスがいま見出されてお
り、「delete step」の定義の9行目に従つて
DELETE FLAGが0にクリアされる。これによ
り、タイマ・リストからのそれ以上の削除ステツ
プが阻止される。「delete step」の定義の10、11
行目に従つて、プロセスPのためにTLink場所6
8に現在保持されている値(すなわち、プロセス
Yの作業域に対する作業域)をロードし、それか
らCレジスタからの値を、プロセスXのための
TLink場所である、Bレジスタにより示されてい
る場所に書込むことにより、プロセスPがタイ
マ・リストから除去される。いいかえると、プロ
セスXのTLink場所の内容が変えられて、プロセ
スPの作業域に対するポインタをプロセスYの作
業域に対するポインタで置き換える。それから、
タイマ行列上に残されているプロセスがあるかど
うかを、「delete step」手続きの13行目に従つて
プロセツサが調べる。その手続きにおいては、B
レジスタにTPTR場所の内容がロードされる。
定義の15行目に従つて、これが値「not process.
p」を有するものとすると、リストにはプロセス
は残されていない。そこから、17行目に従つて妥
当時間フラツグが零にセツトされる。一方、定義
の18行目に従つて「not process.p」以外の値が
見出されたとすると、タイマ・リスト上に別のプ
ロセスが存在し、定義の20行目に従つて、Bレジ
スタにより示されているプロセスの時間場所69
から時間をとることにより次の時間レジスタが歩
進される。最後に、タイマ・リストからプロセス
Pを削除した後で、値「TimeNotSet.p」が、手
続き「delete step」の定義の21行目に従つて、
プロセスPのTLink場所68に書込まれる。この
結果として第15F図に示されている位置にな
る。プロセスPはもはやタイマ・リスト上にない
が、依然として現在スケジユールされているプロ
セスである。したがつて、それは「チヤネル・デ
イスエイブル」である次の命令を実行する。これ
はプロセスPの作業域の0場所に値−1を見出
し、したがつてチヤネル70がプロセスへの入力
のために選択される。次の命令「選択的終了」が
終つた時にコードオフセツトがプロセスPのため
の命令ポインタに加えられて、チヤネル入力の選
択に従つてプログラムの正しい部分までプロセス
が動くように、プロセスPのための作業域の0場
所に適切なコード・オフセツトがロードされる。 メツセージ・チヤネルまたはタイマからの選択
的入力を実行するプロセスのためのプログラムの
例 このプログラムの例は、フライホイールの1秒
間当りの回転数を計算するように構成されてい
る。プロセスは「rotation」と呼ばれるチヤネル
と、「rps」(これは1秒間当りの回転数を表す)
と呼ばれるチヤネルとの2つのチヤネルを通じて
通信するように構成される。フライホイールが1
回転を終えるたびにチヤネル「rotation」から入
力するようにプロセスは構成される。プロセスが
所定の時間の発生に応答できるように、プロセス
はタイマ入力も受けることができる。この例にお
いては、所定の時間は1秒間隔の連続する経過で
ある。プロセスは、1秒間に生じた回転数をチヤ
ネル「rps」を通じて毎秒出力するように構成さ
れる。このプログラムにおいては、下記のような
付加表記法が使用される:− プロセツサのクロツクの現在の値はNOWで表
される。 occamはプロセス 変数:=NOW はプロセツサのクロツクの現在の値を変数に割当
てる。 「タイマ」入力は下記のように表される WAIT NOW AFTER t この入力コンポーネントは、プロセツサ、クロ
ツクが時間tのAFTERの時間を保持するまで、
プロセスを進めることを指定する。 このプロセスのためのプログラムは下記の通り
である:
[Table] Purpose: To start execution of selected components of a selective process. It will be appreciated that the microinstruction ROM 13 contains microinstructions corresponding to all of the above functions and operations such that the microinstructions retrieved from the ROM 13 cause the processor to perform any of the above operations. . A scheduled processor divides its time between several concurrent processes running at two priority levels, 0 and 1. Priority 0 process and priority 1 process
Assuming that processes can be executed together, a priority 0 process always executes with priority over a priority 1 process. Only one process is actually running at any given time, and this process, the current process, has a work area pointer (WPTR) in the WPTR register 51 and an instruction pointer (IPTR) in the IPTR register 50 that The next instruction to be executed from the instruction sequence in the flange related to the process is shown. Any process that is not the current process and is not waiting to run is descheduled. When a process is scheduled, it either becomes the current process or is added to a list or queue of processes waiting to run. Such a scheduled list is formed as a linked list and has a pointer to the work area of that process. The instruction pointer (IPTR) of any process on that list is stored in the IPTR location 65 of its work area, as shown in FIG. In this case, the processor may contain two lists of scheduled processes waiting to be executed. Each of these processes is for each priority level. In addition, two timer lists may be included for descheduled processes to wait a specified amount of time before being scheduled. One timer list is provided for each priority. Figure 4 shows a scheduled list with high priority 0,
Figure 5 shows a low priority 1 process when a certain priority 0 process is the current process as shown in Figure 4.
Shows the scheduled list of. In this case, since the current process is a process with a high priority of 0, the register bank selector 41 selects a register in the bank 39 to be used by the processor. Therefore, the WPTR register [0] is the work area 6 of the current process L, as shown in FIG.
Holds a pointer to the 0 location of 0. IPTR
Register [0] contains a pointer to the next instruction in program sequence 181 stored in memory. Registers 54, 55, 56, 57 shown in FIG. 4 contain further values to be used during the execution of the next process L. The scheduled list of priority 0 processes waiting to be executed is illustrated in FIG. 4 by three processes M, N, and O. The work area of those processes is 61,
Diagrammatically shown at 62, 63. Each of these work areas is generally similar to the work area shown for process L. shown in 53
FRTR register [0] contains a pointer to the work area of process M, which is the first process on this list. The work area of process M is its IPTR
Location 65 contains a pointer to the next instruction in the program sequence to be executed when process M becomes the current process. Process M's link location 66 contains a pointer to the work area of process N, the next process on the list. The last process on the list shown is process O. The process O has a work area indicated at 63. indicated by 52
The BPTR register 52 indicates that this last process O
Contains a pointer to the work area of . The work area 63 of this process O is the ring location 6 of the previous process N.
6, but in this case process O is the last process on the list, so
Process O's link location 66 does not include a pointer. When another process is added to this list, a pointer to that other process's work area is
Since it is placed in the BPTR register, the process O
The link location 66 of contains a pointer to the work area of that other process added to the list. The priority 1 scheduled list is generally similar and is shown in FIG. In this case, the list of priority 1 processes that are scheduled and waiting to be executed consists of processes P, Q, and R. Another priority 1 process, designated by the symbol S, is shown, but it has now been descheduled and no longer forms part of the linked list. FPTR register [1] contains a pointer to the work area of process R, which forms the first process on the list waiting to execute. BPTR register [1] contains a pointer to the work area of process R, which forms the last process on the scheduled list. Each process P, Q, R has an IPTR that points to the program stage in its IPTR location. When the program becomes the current process, the next instruction is taken from that stage. The link location of each process on the scheduled list except the last process contains a pointer to the work area of the next process on the list. A process can be picked from the top of the list for execution by using the procedure ``deque'' defined above. A current process can be descheduled using the procedure ``start next process'' defined earlier. The way to operate the two scheduled process lists shown in Figures 4 and 5 is as follows:
It has already been described in the said patent application and will not be repeated. However, if the current process is a low priority process, then the "time slice"
After a period of time, called Gives the ability to slice time.
When a low priority process is taken from the top of a scheduled list of the kind shown in Figure 5, the processor calls the procedure ``duque''.
As shown in lines 11 and 12 of the procedure definition, if the process is a priority 1 process (this is the case for low priority processes), then according to line 12, Time slice register 80 is loaded with a value that is the sum of the current time indicated by clock register 81 and the determined "time slice length" time.
The length of the time slice can be chosen to suit any time interval, in this case taken to be the time required to execute 1000 instructions. This can of course be changed as required.
This time slice is stored in constant box 40. When a low priority process performs a ``jump'' function or a ``loop end'' operation, the processor executes the procedure ``time slice''. According to the above definition of the procedure "time slice", the priority of the current process is 1,
If the time indicated by the clock register is equal to or later than the time indicated by time slice register 80, the work area pointer and the priority of the current process are loaded into procedure description register 46 and the priority 1, so that adding it to the end of the scheduled list causes that process to be rescheduled.
The processor checks whether the procedure ``run'' is executed. The process stops running the current process,
If there is no higher priority process or request for action by the processor, the procedure causes execution of another process to begin at the top of the priority 1 scheduled list.
Set SNPFlag58 to the value 1. This embodiment also provides for timer lists of the type shown in FIGS. FIG. 6 shows a linked timer list for a low priority 1 process, and FIG. 7 shows a similar linked list for a high priority 0 process. Low priority processes are indicated in Figure 6 by the letters T, U, and V.
The high priority processes in FIG. 7 are given the letters W, X, and V. Since the two lists are generally similar, only the list in FIG. 6 will be discussed in detail. A work area 60 for each process in the list is shown in FIG. Ahead of the timer reset is maintained by a single word memory location 90 that holds a pointer value called TPTR. When there are no processes on the timer list for a particular priority, the TPTR for that priority is set to the special value "NotProcess.p". Otherwise,
The TRTR held in memory location 90 links all processes in its timer list in chronological order. Each process work area has a time location 6 indicating the time at which the process can be scheduled.
Indicates a value within 9. Each process workspace's TLink location 68 contains a pointer to the 0 location of the next process' workspace on the timer list. Each process work area location 65 on the list stores a pointer to the next instruction in the program sequence 181 for use when the process is scheduled to become the current process. Valid time flag 8 when process is on timer list
4 with a value of 1 and has a value of 0 if there are no processes on that timer list. Next time register 85 contains the time taken from the process's location 69 at the front of the timer list. Thus, register 85 is included to indicate the earliest time any process on the associated timer list should be scheduled. There are no registers provided for the timer list to indicate the tail of the list. The work area of the last process on the timer list is ILINK location 68 of its work area.
It has a special value "NotProcessp" inside. The front of the list is indicated by using memory locations 90 rather than registers. In this way, the front of the list is identified by using memory locations in the same way. This is because all intermediate entries to the list are identified, thereby allowing the insertion of another process into the timer list in chronological order or the release of another process on the timer list. This is because it simplifies the operations necessary for this purpose. It may be necessary to insert a process before the first existing process on the timer list, or insert a process halfway through the list depending on when the process to be inserted should be scheduled. You will find that there are times when this is necessary. As can be seen from the previous discussion of the timer logic shown in FIG. 3, any valid time flag 84 is set to a value indicating that the program is on the appropriate priority timer list. Then, the timer logic shown in FIG. 3 clocks the time shown in next time register 85 (representing the first time to schedule any process on the list). Compare with the time indicated by the register,
And assuming the time to schedule that first process has been reached, the timer logic provides the appropriate request signal to the conditional multiplexer. The processor then responds to those request signals by removing the first process from the appropriate timer list and updating the appropriate valid time flag, next time flag, and TPTR location 90.
This will then reflect the new state of the timer list. The value "TimeSet.p" is written to the TLINK location 68 for the process work area to indicate that the process is no longer on the timer list. Assuming that the process is no longer the current process or is already on the scheduled list, it will be placed on the scheduled list of the kind shown in Figures 4 or 5. Becomes the current process if no list has been added or scheduled. The processor action of removing a process from the top of the timer list is described in the definition "HandleTimerRequest" above. TIMER INPUT INSTRUCTION A process loads a time such that after that time the process must be rescheduled to the A register 54.
An instruction containing "TimerInput" can be executed, and then the operation "TimerInput" is executed. First, check whether the current time indicated by the clock register is after the time indicated by the A register, and if so, no action is taken so that the process remains scheduled. do not have. However, if this condition is not met, the sequence described in the definition of "TimerInput" occurs and the special value "Waiting.p" is written to state location 67 of the process work area. Since the time at which the process should be rescheduled should be after the time indicated in the A register, the time indicated in the A register is incremented by one.
Indicates the time at which the process should be rescheduled. The processor executes the procedure "InsertInTimerList". This procedure writes the time location 69 of the process work area to the time at which the process is to be rescheduled and places the process in the appropriate timer list position so that the process follows temporal order. It also sets SNPFlag to the value 1 so that the processor starts executing another process. The instruction that executed the "TimerInput" instruction will be rescheduled when the appropriate amount of time has elapsed. Selective timer input command (Alternative
Timer Input Instrument
ons) Another process is described in the pending patent application. The other processes select one of several other components for execution.
Each separate component consists of an input or skip to which the corresponding process connects. This example shows a timer alternative process.
process), which selects one of several different components for execution. Each component of a separate timer can consist of a message channel input (from an internal or external channel) and a skip or timer input followed by a corresponding process. The message channel input component can be selected if the channel is ready, and the skip component can always be selected as described in the aforementioned pending patent application. The value in the clock register is “after” the time specified by the timer input.
(AFTER), you can select the timer input component. This example performs another process that does not rely on timer inputs in exactly the same way as previously described in the pending patent application. The description thereof will not be repeated in this specification. When the current process has several other components, each component is examined to determine if one or more of those components can be selected. If no components can be selected, the process is descheduled until one of the components can be selected. The process is then rescheduled, the components are examined again, and one of the components is selected. Examination of the message channel input component and the skip component is performed as described in the aforementioned pending patent application. When all components have been examined, the state location 67 of the process work area contains one of two special values: "Enabling.p" or "Ready.p".
Assuming state location 67 contains "Ready.p", then and only one of those components can be selected. While examining the timer input component, TLink68 and time location 6
9 are used for special purposes. TLink location 6
8 takes one of two special values: "TimeSet.p" or "TimeNotSet.p". it is,
It is initialized to ``TimeNotSet.p'' to indicate that no timer inputs have been examined, and changes to ``TimeSet.p'' when the first timer input is examined.
When the first timer input is examined, time location 69
is initialized at the specified time. Thereafter, as each timer input is examined, if the time is earlier than the time recorded in time location 69, the time location is updated to the specified time. Therefore, once all components have been examined, time location 69 holds the earliest time specified by any timer input. Only when TLink location 68 contains the value "TimeSet.p" and the value of the clock register is after the time in time location 69 can another process select the timer input component. A timer selective process determines whether any component can be selected using state location 67, TLink location 68, and time location 69 after all components have been previously viewed. If no component can be selected, the process is descheduled; if any timer input component is examined, the process is placed on the appropriate timer list. Assuming there is at least one component available for selection, each component is examined again and the first selectable component is selected. As described in the aforementioned pending patent application, location 0 of process work area 60 is used to record the component, if any is selected. Retesting of the channel input connector and skip components is performed as described in the aforementioned pending patent application. Re-inspect the timer input component at TLink location 6
8 and time location 69 as follows. If a timer-selective process is not on the timer list when the first timer input component is reexamined, then either the process was placed on the timer list and subsequently removed, or the process is not on the timer list at all. Either it wasn't there or it wasn't. In the former case, time location 69 includes the time when the early timer input component became selectable. In the latter case, immediately after examining the component process, time location 6
9 contains the value "CLOCK REG". The time and place are
Holds the same value for all retests of the timer input component. A timer input component is selectable only if the contents of time location 69 are "after" the specified time.A timer-selective process is placed on the timer list as before when the first timer input component is reexamined. If there is, there is no selectable timer input component, but there is always a selectable channel input component. In this case,
The first re-examination of the timer input component removes the process from the timer list and TLink location 6
Set the value "TimeNotSet.p" to 8 to prevent selection of any timer input component. In this case time location 69 is not used. The instructions that perform the timer selective process are "timer selective start" (timer selective start) followed by "timer enable" for each timer component.
alternative start). If the message channels are included in another structure, the processor also performs a "channel enable" for each and every message channel.
This is followed by "Timer Selective Wait" (timer selective wait).
alternative wait)' followed by 'timer disable' for each timer input,
Followed by ``Channel Disable'' for any channel input. The first instruction executed by a timer-selective process is the "timer selective start" operation, and as can be seen from the definition of this operation, the special value "enabling.p" is set for the process according to the second line. According to line 3, a special value "timeNotSet.p" is written to the TLink location 68 for the process work area. As stated in said pending patent application:
Any channel input component and any skip component are examined by the "channel enable" and "skip enable" operations. By loading the guard value into the A register, loading the specified time for the timer component into the B register, and then performing a "timer enable" operation.
Any timer input component can be examined.
According to the definition of that operation, lines 2 and 3 check whether the guard value in the A register is false. If it is false, the timer input is ignored and the instruction has no other effect. If the guard value is not false according to line 5 of the definition, the processor executes the sequence starting at line 7 of the definition. This loads the value obtained from TLink location 68 into the O register, and line 8 indicates that the value is either "TimeNotSet.p" according to line 9 or "timeSet.p" according to line 13. An inspection is carried out to test whether there is. If we find that the value is "TimeNotSet.p", then the value "TimeSet.p" is 11
The time indicated in the B register is written to the time location 69 for the process work area as required by line 12 of the definition. This occurs for the first timer input component examined by the process. The condition on line 13 may be satisfied for subsequent timer inputs that are examined. In this case the sequence according to line 14 occurs. The time value recorded in time location 69 for the process is O register 5
Line 15 asks that the time value be loaded into 7 and that the time value be tested to see if it meets the conditions in line 17 of the definition.
If the time is "after" the time indicated in the B register, then the time in the B register is written to time location 69 for the process.
Lines 19 and 20 indicate the time indicated in the O register "after" the time indicated in the B register.
If not, no action is taken.
Finally, the value from the C register is loaded, as required by line 21 of the definition. In this manner, the process examines each possible timer input, and the process's time location 69 is updated so that it contains the time of the earliest time component after examination. Therefore, a series of (timer enable) operations for each timer component effectively determines the earliest time of any component and places time location 69 at the earliest time of any component examined. You can see that it will be updated sequentially. The process then executes the operation "Timer Selective Wait." According to the second line of the definition, this initializes the 0 location of the process work area to -1 and then tests to determine which components of the alternative process are already selectable. According to lines 3 and 4 of the definition, it reads the value from TLink location 68 into the B register and the value from time location 69 into the A register. Lines 5 and 6 indicate that if the process has the value ``Timeset.p'' and the clock register indicates a time ``after'' the time indicated in time location 69, then lines 8 and 9 A special value ``Ready.p'' is written to the state location 67 for the process, requesting that the defined sequence occur, and the current time indicated by the clock register is the time for the process. Written to location 69. The process is not descheduled and can move on to its next instruction. However, if the condition in line 6 of the definition were not true, then the process would
Move to line. It loads this into state location 6 for the process by loading it into the C register.
The 14th row tests the contents of 7 and whether it contains the value "Ready.p". If so, according to line 16, the current time indicated by the clock register is written to time location 69 for the process and the process is not descheduled. Instead, for another of the inputs it is ready and the process can move on to the next instruction. However, according to line 16 of the definition, the special value 'enbling.
p'' is found, this indicates that none of the alternative components are ready yet and the sequence starting at line 17 occurs. The special value "waiting.p" is written to the state location 67 for the process, and lines 19 and 20 test whether the process is waiting for the timer component. According to line 20, the process sets the value "TimeSet.p"
, the contents of the A register must be 1 to indicate when the process should be scheduled.
, and the procedure "Insert In Time List" is executed according to line 23. The process is then descheduled, but placed on the appropriate priority timer to include an indication when it should be rescheduled. According to line 24 of the definition, assuming the process does not have any timer components, the B register can have the value "TimeNotSet.p", which means that the process is not a timer input but a channel. Occurs when still waiting for input. In this situation, the sequence following line 25 occurs, the instruction pointer for the process is stored in IPTR location 65 in the process work area, and SNPFlag is set so that the process is descheduled.
is set to the value 1. Therefore, in the definition, lines 6-9 test whether the process is ready for timer input. Lines 13 and 14 test whether the process is ready for non-timer inputs, such as channel inputs; line 16 onwards is applied when the process is found not to be ready. The next instruction executed by a process when it is not descheduled or when it is later rescheduled is the operation ``timer disable'' for each timer component and any It will perform the operation ``Skip Disable'' on the skip component and the operation ``Channel Disable'' on any channel component. The channel input connector and skip component are retested by the "channel disable" and "skip disable" operations as described in the aforementioned pending patent application. The timer selective process reexamines the timer input component according to the definition of operation "timer disable." If a replacement component is to be selected by the process, the A register is first loaded with a code offset to indicate the required offset in the program sequence to place subsequent program instructions. If the guard is false, the process examines the contents of TLink location 68 for that process. There are three cases to consider. First, the TLink location can contain the value "TimeSet.p" according to line 10 of the definition, in which case the time in time location 69 is "after" the specified time in the C register. ”, then the component is selectable. This is the condition on line 14 of the definition, and if this condition is met, the process executes the procedure "IsThisSelected Process." According to lines 5 and 6 of the procedure definition, it checks whether the 0 location of the process work contains the value -1. If so, this component is selected and the code offset from the A register is loaded into the work area at location 0 according to line 8 of the definition. If location 0 of the work area did not have the value -1 according to line 10 of the procedure definition, then the component process is already selected and the current 1 cannot be selected. If the ``timer-disable'' operation finds that the TLink location 68 of the process contains a value other than ``TimeSet.p'' or ``TimeNotSet.p'', then this Corresponds to the situation on line 18. This will occur when the process is still on the timer list so that TLink location 68 contains a pointer to another process on the timer list. Therefore, the timer component cannot be selected because the process is still waiting on the timer list and is removed from the timer list by the procedure "Remove from timer list". This writes the value "TimeNotSet.p" to the TLink location 68 for that process. The "Timer Disable" operation can find that the TLik location contains the value "TimeNotSet.p" according to line 8 of the definition. In this case, TLink location 68 was set to this value by a previous "timer disable" operation executed while the process was on the timer list. Therefore,
The A register has a value according to line 9 of the definition.
MachineFALSE. Once all of the alternative components have been re-examined, the process performs the operation "Alternative End", which, by definition, returns the code stored at location 0 in the process work area. First load the offset into the O register, then adjust the pointer value in the IPTP register with the offset in the O register.
This causes the process to select the next instruction in the program sequence at the appropriate offset to the selected alternate process. Various examples of processes are described below. Example 1 First, consider a priority 1 process executing a "timer input" instruction in a situation where the process is not descheduled. for example,
The A register can be loaded with a value, for example 14, indicating that the process wishes to be spun when the clock register contains a "after" value of 14. Assuming that the instruction is executed when the clock register contains the value 20, the process follows the first two lines of the "timer input" definition so that the value in the clock register is indicated in the A register. Find out if it is after. In this example, that condition applies, so the process continues without descheduling the process. Example 2 This shows the operation of a "timer input" by a process being descheduled.
See Figures 9A-9D. The figures illustrate changes in various word locations and the contents of various registers for process X's work area 60. FIG. 9A shows the position immediately before execution of the "timer input" command. A register 54 contains the value 30 indicating that the process wishes to be scheduled only when the time in clock register 81 is after 30. The clock register currently contains a time value of 20 and the valid time flag 84 is 0.
is set to indicate that there are no processes on the priority 1 timer list. When a ``timer input'' operation is performed, the contents of the clock register are compared to the contents of the A register. The special value "waiting.p" is written to state location 67 of process Like, A
The value in the register is incremented. The process is then inserted into the timer list and the position is as shown in Figure 9B. This means that the clock registers have now been increased to 22. Valid time flag 84 is now set to a value of 1 to indicate that there is at least one process on the timer list. next time register 8
5 contains the value 31. This value is a matter of scheduling the first process on the timer list. TRTR location 90 is process X, the first (and only) process on the timer list.
Contains a work area pointer. The work area of process - Indicates that it is the last process on the list and includes the value 31 in location 69 to indicate the time the process can be rescheduled. When sufficient time has elapsed and the clock register has increased to a value of 31, the position will be as shown in Figure 9C. Since the clock register value is now equal to the value of the next time register and the valid time flag is set to a value of 1, the timer logic issues a time request to the process. This causes the processor to load the value 1 into PROCPRI and execute the "HandleTimeRequest" procedure. This causes process X to be scheduled, clears the reasonable time flag, and
TPTR time 90 is set to "not process.p". This is the position shown in Figure 9D. Example 3 This illustrates how the insert flag 82 can be used to cause a process to be inserted into the timer list in the correct position and time order. Process P performs a timer input operation that causes it to be descheduled. Assume that process P is a priority 1 process and is the only process running. In addition, priority 1 timer
Assume also that there are three other processes waiting on the list. These three processes are process X waiting for time 25, process Y waiting for time 26, and process Z waiting for time 29. FIG. 10A shows the position immediately before executing the timer input command. Process P is running and the A register contains time 27. Clock, register contains time 20. The valid time flag is set to a value of 1 to indicate that the timer list is in use, and the next time register contains a value of 25, where 25 is the time associated with the fastest process on the timer list. It can be seen that there are three processes on the timer list. TPTR location 90 contains a pointer to process X, the first of the processes. Process X
The TLink location 68 of contains a pointer to the second process, and process Y contains a pointer to the third process Z. TLink location 6 of process Z
8 contains the special value "Not Process.p". It indicates that process Z is the last process on the timer list. It can be seen that the timer list is ordered with the earliest processes first and the most recent processes last. Process P
executes the timer list input instruction, the clock register and the A register are compared, and since the clock register is not yet "after" the A register, the special value "waiting.p" is placed in process P's state location 67. , the A register is incremented by 1, and the procedure "insert timer list" is executed. This writes the value in the A register to time location 69 in process R's work area, sets the B register to the point in TPTR location 90, and
The C register is set to the contents of TPTR location 90. The timer input command is then finished and the state location is as shown in FIG. Once the insert flag is set to the value 1, the next action performed by the processor is the procedure ``insert''.
"step". As can be seen from the definition of this procedure, this causes T register 49 to be loaded with the time associated with process X (ie 25) and compared to the time associated with process P (ie 28). Since 28 is ``after'' 25, we have not yet found the correct place to insert process P into the timer list, and the ``insert step'' procedure sets the B register to a pointer to process X's TLink location 68; The C register is forced to set the contents of that location. Then, after completing the procedure, insert
Leave flag set. The resulting situation is shown in Figure 10C. The next action of the process is to execute the procedure "insert step" again. This is performed in a manner similar to that described above, resulting in the situation shown in Figure 10D. Again, the next action of the processor is the procedure ``insert
step”. But in this case, since the time associated with process Z (i.e., 29) is after the time associated with process P (i.e., 28), the processor clears the insert flag and transfers process P's work area pointer to process Y. of
Insert process P between processes Y and Z in the timer list by writing to TLink location 68 and writing process Z's work area pointer to process P's TLink location 68. It then resets the processor's next time register 85 to the time associated with the first process on the timer list and sets the valid time flag to a value of one. Finally, the processor writes process P's instruction pointer to process P's EPTR location 65 and writes SNPFlag
58 to the value 1 to cause process P to be descheduled as the processor's next action. Example 4 This shows a timer-selective process X with three timer input components. Processor X is the only executable process, Process X has priority 1, the first timer input component is 26, Process X has priority 1,
Assume that the first timer input component is 26 and the second timer list input component is 25. This is illustrated in Figures 11A-11C. They show the subsequent status for work area locations 67-69 of process work area 60. FIG. 11A shows the position immediately after execution of the "timer selective start" instruction. Status location 67 contains the special value "enabling.p" and TLink location 68 contains the special value "TimaNotSet.p". The first “timer”
Immediately before the "Enable" instruction is executed, the A register contains the value Machine TRUE and the B register contains the time associated with this timer input, i.e. 26.
When the timer enable instruction is executed, the processor reads TLink location 68 and finds that it contains the value "TimeNotSet.p" indicating that there is no previously examined timer input component. Therefore, the processor uses TLink location 6
8 to the special value "TimeSet.p" and set the time location 69 to the value 26. This is the position shown in Figure 11B. Immediately before the second "timer enable" instruction is executed, the A register is set to the value
MachineTRUE and the B register has a value that is the time associated with the second timer input component.
Contains 25. When the timer enable instruction is executed, the processor reads TLink location 68 and determines that it contains "TimeSet.p" indicating that the time location contains the earliest time associated with the previous timer input component. find out Therefore, the processor reads time location 69 and determines that the time specified for this component, which is 25, is earlier than the time read from the time location containing the value 26. Therefore, the processor writes a new value to the time location, which is the 11th
It is as shown in Figure C. Example 5 This example, shown in Figures 12A-12C,
Figure 3 shows a timer-selective process P with two timer input components. This process P is not descheduled. Process P is the only executable process, Process P has priority 1
Assume that the time specified in the first timer input component is 26 and the time specified in the second timer input component is 25. The execution of the "timer selective start" instruction and the inspection of the timer input component are as described above in Example 4, and the situation immediately before the execution of the "timer selective wait" instruction is as shown in Figure 11C. It is. The first action of "Timer Selective Wait" is to write the value -1 to location 0 of process P's work area 60. This is the location used to select a component from multiple alternative components. Then, since the time in the clock register is "after" the time in time location 69, process P
The processor determines that the process can proceed. Therefore, the processor writes the special value "Ready.p" to state location 67 and the value of the clock register is written to time location 69. As a result of this, the second
The situation is as shown in Figure A, where the clock register has now advanced to the value 31. The position just before the first "timer disable" is shown in Figure 12B. The A register contains the offset from the "selective termination" instruction to the sequence of instructions in the flange associated with the first timer input component, the B register contains the value Machine TRUE, and the C register contains the offset associated with this timer component. Including the time that is 26. The process then executes the "timer disable" instruction. The instruction reads TLink location 68 and determines that it contains the value "TimeSet.p." Therefore, it reads the value 30 from the time location, and since 30 is "after" 26,
This timer input component is selectable. The processor then executes the procedure "InThisSelectedProcess" to select this component. This is because location 0 of the process work area still contains the value -1. The resulting situation is shown in Figure 12C. The second timer input component cannot be selected now, and when the selective termination instruction is executed, the process P
The working area for this is still as shown in FIG. Example 6 This example, shown in Figures 13A-13F,
Figure 3 shows a timer-selective process P with two timer input components. In this case, the process P is descheduled. Process P is the only runnable process, Process P is a priority 1 process, the time specified in the first timer input component is 26, and the time in the second timer input component is 26. It is assumed that it is 25. Example 4: Executing the “Timer Selective Start” instruction and checking the timer input component
The situation immediately before the execution of the "timer selective wait" instruction is as shown in FIG. 11C. The first action of the "timer selective wait" instruction is to write the value -1 to location 0 of process P's work area. The processor compares the value in time location 69 with the value in the clock register, finds that the process cannot continue due to certain timer inputs, and examines the process state location 67. This includes "enabling.p", so
The process is placed on a timer list and descheduled. This is the position shown in Figure 13A. The valid time flag is set to a value of 1 to indicate that the timer list is not empty. The next time register contains the value 26, which is the time that process P will be ready to run.
TPTR location 90 contains a poller for process P's work area and processes P's TLink location 68
contains the special value "not process.p" to indicate that it is the last process on the list. When sufficient time has elapsed, send a "timer request" signal to the processor as described in Example 2. The situation in which the signal is generated is as shown in Figure 13B. When the process is rescheduled, the position is as shown in FIG. The situation immediately before execution of the first "timer disable" instruction is as shown in FIG. 13D. When the timer instruction is executed, TLink location 6
8 is read and found to contain "TimeSet.p".
The processor then compares the time for this time component, 26, to the time shown in time location 69, which is also 26. Since 26 is not "after" 26, this component cannot be selected. Therefore, the processor
The instruction ends by loading MachineFALSE into the A register. Process P is in the 13th situation immediately before executing the second "timer disable" instruction.
It is as shown in Figure E. Execution of this instruction causes the component to be selected, resulting in the situation shown in FIG. 13F. Example 7 This shows a timer-selective process P with one timer input component and one message channel input component. Process P
Assume that is the only runnable process, that it has priority 1, and that the specified time is 40. There are no processes on the timer list, the channel referenced by the channel input component is initially "Ready", and the timer input component cannot be selected.
An example of this is shown in Figures 14A-14D. Process P executes a “timer selective start” instruction;
Load its registers appropriately and execute the "timer enable" instruction. As a result of this, the first
The situation is as shown in Figure 4A. “Channel Enabled” because the channel is “Ready”
The situation after execution of the instruction is as shown in FIG. 14B. The flange then executes the "Timer Selective Wait" command. The time in the clock register has the value 11. This time is not after the time 40 shown in time location 69 for procell P. Then the processor returns the value 'Ready.p'
, and therefore writes the time value in the clock register to time location 69. The situation after the completion of the "Timer Selective Wait" instruction is shown in FIG. 14C. The situation immediately preceding the "timer disable" instruction is executed as shown in FIG. 14D. Time value 12 in time location 69
The timer input component is not selected because is not "after" the time associated with the component. The process then executes a "channel disable" instruction that selects the channel input component. From the above example, when the "timer disable" instruction is executed, the time stored in time location 69 of the process will be used for all timers based on which the timer disable instruction is executed. It will be seen that the standard time remains constant with respect to the input. This allows the various timer inputs to be
Comparisons with times that change due to the passage of time as instructions are executed are avoided. Example 8 This shows a process P that is a timer-selective process with one timer input component specifying time 40 and one channel input component passing through channel 70. This example assumes there are initially two processes on the timer list. Those processes specify times 34 and 54. A message channel is not initially "ready" but becomes "ready" before the first process on the timer list becomes ready. To perform the timer selective process, the process executes a "timer selective start" instruction, a "timer enable" operation for one timer input component, and a "channel enable" operation for the channel 70. run first. The position is then as shown in Figure 15A. Process P has not yet been descheduled and is in "state" location 67
is initialized to ``enabling.p'' to indicate that the process is performing alternative input. TLink location 68 is set to the value "TimeSet.p" to indicate that the timer input has been examined. "Time" location 69 is set to the earliest time of any timer entry examined. The earliest time is 40 in this case, and this time 40 is the only timer input examined. The timer list has two descheduled processes X and Y with scheduling times 35 and 55, respectively. The processor then executes a "timer selective wait" instruction for process P. This is because no channel input was ready, and since the clock register includes time 11 in Figure 15A, it has not yet been time for process P to continue inputting the timer, so is inserted into the timer list and placed in the "state" location 67 of process P to be descheduled.
You will find out from This results in the position shown in Figure 15B. The linked timer list now has a total of three processes X, P, Y in chronological order. Channel 70 becomes "ready" after a certain amount of delay because the output process is attempting to output through that channel. Since that channel contains a descriptor for process P, process P becomes scheduled and loads its registers before executing the "timer destable" instruction, as shown in Figure 15C. situation. The process then performs a "timer disable" operation,
It reads the "TLink location" 68 for process P and determines that the process is still on the timer list because the timer list contains a workspace printer for the next pointer on the timer list. . Since process P is still on the list, the time has not yet come for its timer input component, so the timer component cannot be selected. Therefore, the A register is set to MachineFALSE,
The procedure "delete from timer list" is executed. This sets DELETE FLAG to the value 1, loads the B register with the pointer to TPTR location 90, and loads the C register with the contents of the TPTR location. Then, after the order was finished, the 15th
Leave the position as shown in Figure 0. DELETE FLAG
Since ``delete step'' is set to the value 1, the next action of the process is to execute the procedure ``delete step''. Since the TPTR location contains the workspace pointer of process X, that pointer will be the first workspace pointer of process '' is applied, and the C register does not contain process P's work area pointer. Therefore, according to lines 5 and 6 of the definition of "delete step", the process loads B with a pointer to the TLink location of process X, and loads the C register with the contents of the location pointed to by the B register, i.e. , a pointer to process P's work area, causes the process to step to the next process in the timer list. This is the situation shown in Figure 15E. From there, the procedure “delete”
Since "step" has finished and the DELETE FLAG is still set, the processor's next action is to execute the procedure "delete step" again. Therefore, it will now be seen that the condition in line 7 of the procedure "delete step" applies and the C register will now contain the workspace pointer of the current process, which is process P. This means that the list has now found the process to be deleted, and according to line 9 of the definition of "delete step"
DELETE FLAG is cleared to 0. This prevents further deletion steps from the timer list. 10 and 11 of the definition of "delete step"
TLink location 6 for process P according to line
8 with the value currently held (i.e. the workspace for process Y's workspace), then load the value from the C register into
Process P is removed from the timer list by writing to the location indicated by the B register, which is the TLink location. In other words, the contents of process X's TLink location are changed, replacing the pointer to process P's workspace with the pointer to process Y's workspace. after that,
The processor checks whether there are any remaining processes on the timer matrix according to line 13 of the "delete step" procedure. In that procedure, B.
A register is loaded with the contents of the TPTR location.
According to line 15 of the definition, this results in the value 'not process.
p'', there are no processes left in the list. From there, the valid time flag is set to zero according to line 17. On the other hand, if a value other than "not process.p" is found according to line 18 of the definition, then there is another process on the timer list and the B register is Time location 69 of the indicated process
The next time register is incremented by taking the time from . Finally, after deleting process P from the timer list, the value "TimeNotSet.p" is changed according to line 21 of the definition of procedure "delete step":
Written to TLink location 68 of process P. This results in the position shown in Figure 15F. Although process P is no longer on the timer list, it is still the currently scheduled process. Therefore, it executes the next instruction which is "channel disable". This finds the value -1 in the 0 location of process P's workspace, so channel 70 is selected for input to the process. A code offset is added to the instruction pointer for process P when the next instruction ``selective termination'' is completed so that the process moves to the correct part of the program according to the channel input selection. The appropriate code offset is loaded into the zero location of the work area. Example Program for a Process that Executes Selective Inputs from a Message Channel or a Timer This example program is configured to calculate the number of revolutions per second of a flywheel. The process consists of a channel called ``rotation'' and ``rps'' (which stands for revolutions per second).
is configured to communicate through two channels, one called a channel. 1 flywheel
The process is configured to input from the channel "rotation" each time it completes a rotation. The process can also receive timer input so that the process can respond to the occurrence of a predetermined time. In this example, the predetermined time period is a continuous passage of one second intervals. The process is configured to output the number of revolutions produced in one second every second through the channel "rps". In this program, the following additional notation is used: - The current value of the processor's clock is represented by NOW. occam is a process variable: =NOW assigns the current value of the processor's clock to the variable. The "timer" input is represented as: WAIT NOW AFTER t This input component waits until the processor clock holds time AFTER at time t.
Specifies that the process should proceed. The program for this process is below:

【表】【table】

【表】 このプログラムの1行目は、このプロセスが2
つの変数を使用することを指定する。それらの変
数の一方は「Rotations」と呼ばれるもので、1
秒間に行われる回転の数を数えるために用いられ
る。他方の変数「EndOfInterval」は、現在の1
秒間の終りを示すプロセツサのクロツクの値を記
録するために使用される。2行目は、シーケンス
を3〜6行に記述されているところに従うことを
指定する。3行目においては、回転数のカウント
が0にセツトされる。4行目においては、5行目
が1秒間の終りのためのプロセツサの値を計算で
きるように、プロセツサのクロツクの現在の値が
読まれる。5行目において用いられる値10000は
1秒間におけるプロセツサのクロツク増分の回数
である。6行目は、7行目と14行目の間をたどる
選択的プロセスを連続して繰返えすべきことを示
す。7行目はプロセスをタイマ選択的プロセスと
して識別する。8行目と10行目は2つの選択的入
力を記述する。8行目は、フライホイールが1回
転を終つた時にチヤネル「rotation」からの信号
を入力できる。この入力が選択されるものとする
と、9行目の対応するプロセスが実行され、この
プロセス実行により現在の1秒間において数えら
れた回転数が増加させられる。10行目におけるタ
イマ入力は、現在の1秒間が終つた時に、選択で
きる。プロセスへのこのタイマ入力が選択される
ものとすると、12、13、14行目の対応するプロセ
スが実行される。12行目は、1つの期間中に生じ
た回転数のカウントを示す出力をチヤネル「rsp」
を通じて与える。13行目は回転カウントを0リセ
ツトし、14行目は次の1秒の期間の終りの時間を
計算する。 このプログラムを実現する命令シーケンスは下
記の通りである:−
[Table] The first line of this program indicates that this process is
Specify to use one variable. One of those variables is called "Rotations" and is 1
Used to count the number of revolutions made per second. The other variable "EndOfInterval" is the current 1
Used to record the processor clock value indicating the end of a second. The second line specifies that the sequence is to follow what is described in lines 3-6. In the third line, the rotation count is set to zero. In line 4, the current value of the processor clock is read so that line 5 can calculate the processor value for the end of the second. The value 10000 used in line 5 is the number of processor clock increments in one second. Line 6 indicates that the selective process that follows between lines 7 and 14 should be repeated consecutively. Line 7 identifies the process as a timer selective process. Lines 8 and 10 describe two selective inputs. On the 8th line, a signal from the channel "rotation" can be input when the flywheel completes one revolution. If this input is selected, the corresponding process in line 9 is executed, and the execution of this process increases the number of rotations counted in the current 1 second. The timer input on line 10 can be selected when the current one second period ends. Assuming this timer input to a process is selected, the corresponding processes on lines 12, 13, and 14 are executed. The 12th line sends an output to channel "rsp" that shows the count of revolutions that occurred during one period.
Give through. Line 13 resets the rotation count to 0, and line 14 calculates the time at the end of the next 1 second period. The instruction sequence to implement this program is as follows:-

【表】【table】

【表】【table】

【表】 この命令シーケンスに示すように、1、2行目
は回転数カウントを0に初期化する。3、4行目
は、ロード・タイマを動作させてプロセツサ・ク
ロツクを読むために、pfix関数を使用する。6〜
11行目は引き続くpfix関数と加算定数関数(add
constant function)を用いて、1秒間隔の終り
にプロセツサのクロツクの値を計算する。タイマ
選択的入力信号は13行目で始まり、13、14行目
は、「タイマ選択的開始」を動作させるために
pfix関数を使用する。15行目はポインタをチヤネ
ル「rotation」にロードし、16a、17行目は「チ
ヤネル・イネイブル」を動作させるためにpfix関
数を使用する。18行目は変数「EndOfInterval」
をロードする。19行目はガード値をロードし、
20、21行目は「タイマ・イネイブル」を動作させ
るためにpfix関数を使用する。22、23行目は「タ
イマ選択的待機」を実行する。24〜27行目はチヤ
ネル入力を調べる。24行目はチヤネル
「rotation」を識別する。25行目はガード値
MachineTRUEをロードする。26行目は、チヤ
ネル入力が選択される時に必要となる命令オフセ
ツトをロードする。26a、27行目はオペレーシヨ
ン「チヤネル・デイスエイブル」を実行する。28
〜32行目はタイマ入力を調べる。28行目は変数
「EndOfInterval」をロードする。29行目はガー
ド値をロードし、30行目は、プロセスがタイマ入
力を選択する時に必要である命令オフセツトをロ
ードし、31、32行目は「タイマ・デイスエイブ
ル」を実行する。32a、33行目「選択的終了」を
実行する。35行目は、チヤネル入力が選択される
時に実行される最初の命令である。45行目は、タ
イマ入力が選択される時に実行される最初の命令
である。 本発明は上記の例の詳細事項に限定されるもの
ではない。
[Table] As shown in this command sequence, the first and second lines initialize the rotation count to 0. Lines 3 and 4 use the pfix function to run the load timer and read the processor clock. 6~
The 11th line is the subsequent pfix function and addition constant function (add
(constant function) is used to calculate the value of the processor's clock at the end of the 1 second interval. The timer selective input signal starts on line 13, and lines 13 and 14 are used to operate "timer selective start".
Use the pfix function. Line 15 loads the pointer into channel ``rotation'', and lines 16a and 17 use the pfix function to activate ``channel enable''. Line 18 is the variable "EndOfInterval"
Load. Line 19 loads the guard value,
Lines 20 and 21 use the pfix function to operate "timer enable". Lines 22 and 23 execute "timer selective standby". Lines 24 to 27 examine the channel input. Line 24 identifies the channel "rotation". The 25th line is the guard value
Load MachineTRUE. Line 26 loads the instruction offset needed when the channel input is selected. Lines 26a and 27 execute the operation "Channel Disable". 28
~Line 32 examines the timer input. Line 28 loads the variable "EndOfInterval". Line 29 loads the guard value, line 30 loads the instruction offset needed when the process selects the timer input, and lines 31 and 32 execute ``timer disable.'' 32a, line 33 Execute "selective termination". Line 35 is the first instruction executed when a channel input is selected. Line 45 is the first instruction executed when the timer input is selected. The invention is not limited to the details of the examples described above.

JP50440784A 1984-11-30 1984-11-30 Method of operating simultaneous processes and microcomputer Granted JPS62500821A (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/GB1984/000413 WO1986003311A1 (en) 1984-11-30 1984-11-30 Microcomputer for time dependent processes

Publications (2)

Publication Number Publication Date
JPS62500821A JPS62500821A (en) 1987-04-02
JPH0533409B2 true JPH0533409B2 (en) 1993-05-19

Family

ID=10554705

Family Applications (1)

Application Number Title Priority Date Filing Date
JP50440784A Granted JPS62500821A (en) 1984-11-30 1984-11-30 Method of operating simultaneous processes and microcomputer

Country Status (2)

Country Link
JP (1) JPS62500821A (en)
WO (1) WO1986003311A1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5224095A (en) * 1990-01-30 1993-06-29 Johnson Service Company Network control system and method

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2030331B (en) * 1978-01-24 1982-05-19 Plessey Co Ltd Real-time data processing system for processing time period commands

Also Published As

Publication number Publication date
JPS62500821A (en) 1987-04-02
WO1986003311A1 (en) 1986-06-05

Similar Documents

Publication Publication Date Title
US4989133A (en) System for executing, scheduling, and selectively linking time dependent processes based upon scheduling time thereof
EP0145244B1 (en) Microcomputer
KR100422491B1 (en) Multiple logical interfaces to a shared coprocessor resource
US4675806A (en) Data processing unit utilizing data flow ordered execution
US6948172B1 (en) Preemptive multi-tasking with cooperative groups of tasks
US4466061A (en) Concurrent processing elements for using dependency free code
US4320455A (en) Queue structure for a data processing system
JPH0533410B2 (en)
JPS5911943B2 (en) Trap mechanism for data processing equipment
EP0125044B1 (en) Microcomputer with interprocess communication
AU603876B2 (en) Multiple i/o bus virtual broadcast of programmed i/o instructions
KR100678930B1 (en) Real-time Control System for Digital Signal Processor
US6964049B2 (en) Smart internetworking operating system for low computational power microprocessors
US5276821A (en) Operation assignment method and apparatus therefor
EP0183877B1 (en) Microcomputer for time dependent processes
JPH0533409B2 (en)
US5386586A (en) System and method for construction of lists of deferred service requests
US5579495A (en) Information processing in which a simulation of parallelism is achieved
JP2814683B2 (en) Instruction processing unit
JPH08137690A (en) Program execution control method
JPS58225469A (en) Multi-processor controlling system
KR920005330B1 (en) Microcomputer and network connected with microcomputer
JP2522372B2 (en) Data driven computer
JPS59189452A (en) Queue structure for data processor
JPS59153243A (en) Exclusive control system