JPH0470652B2 - - Google Patents

Info

Publication number
JPH0470652B2
JPH0470652B2 JP58221452A JP22145283A JPH0470652B2 JP H0470652 B2 JPH0470652 B2 JP H0470652B2 JP 58221452 A JP58221452 A JP 58221452A JP 22145283 A JP22145283 A JP 22145283A JP H0470652 B2 JPH0470652 B2 JP H0470652B2
Authority
JP
Japan
Prior art keywords
instruction
register
data
type
instructions
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
JP58221452A
Other languages
English (en)
Other versions
JPS59133647A (ja
Inventor
Deibitsudo Mei Maikuru
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=10534539&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=JPH0470652(B2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Inmos Ltd filed Critical Inmos Ltd
Publication of JPS59133647A publication Critical patent/JPS59133647A/ja
Publication of JPH0470652B2 publication Critical patent/JPH0470652B2/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/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory
    • G06F15/7842Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers)
    • G06F15/786Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers) using a single memory module
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • G06F15/8023Two dimensional arrays, e.g. mesh, torus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30192Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
    • 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/54Interprogram communication
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring

Description

【発明の詳細な説明】
本発明は、マイクロコンピユートを含むコンピ
ユータに関するものである。 マイクロコンピユータは一般に内蔵プログラム
から得られる一連の命令に従つて動作する。各命
令の1つの重要の部分はいわゆる「機能」とよば
れているもので、その機能はその命令に応答して
プロセツサにより実行される。プログラムからの
命令中に生ずるある特定の機能に対してどのよう
に応答するかをプロセツサは知らなければならな
いから、可能な「機能」の限られたセツトで動作
することが必要である。これは「機能セツト」と
して知られており、プロセツサが識別および従う
ことができる機能の範囲を表すものである。命令
がプロセツサにより受けられるたびに、プロセツ
サはその命令の機能を1つまたはそれ以上のマイ
クロ命令に翻訳しなければならない。そのマイク
ロ命令は、求められている命令を実行するために
レジスタとメモリおよびデータ路の間で信号の交
換が行われるように、マイクロコンピユータ内で
の電気信号の転送を制御する。 集積回路技術の進歩によりマイクロコンピユー
タ・チツプ上により多くの部品を設けられるよう
になるとともに、プロセツサによる可能の範囲を
拡張するという要求も増大してきている。そのた
めに、マイクロコンピユータで使用される機能セ
ツトが一層複雑になつてきている。機能セツトが
大規模になるとともに、求められている機能を符
号化するために必要なビツト位置が多くなる。そ
のためにより大型のプロセツサが必要となり、機
能の復号と、それらの機能から生ずるマイクロ命
令の実行における遅延時間が長くなる。 本発明の目的は簡単に復号できる改良した命令
を有するコンピユータを得ることである。 本発明の他の目的は、1つ以上のシーケンス命
令を用いることにより、可変ビツト長を有する値
を累積できるプロセツサを有するコンピユータを
得ることである。 本発明の更に他の目的は、可変長オペランドを
オペランド・レジスタにロードさせるようにする
機能を有するマイクロコンピユータを得ることで
ある。 本発明の別の目的は、可変長の正または負のオ
ペランドをロードさせられる機能を有するコンピ
ユータを得ることである。 本発明の更に別の目的は、コンピユータの語長
とは無関係に各命令を一定のビツト長にできるコ
ンピユータを得ることである。 本発明は、プロセツサとメモリを備え、前記プ
ロセツサは、プロセツサにより逐次実行するため
の複数の命令より成るプログラムに応答していく
つかのオペレーシヨンを実行するように構成さ
れ、各命令はプロセツサにより実行すべき機能を
指定する1組の機能ビツトを含み、機能は選択可
能な機能セツトのうちの1つであり、(a)前記プロ
セツサは、()データ保持器を構成する複数の
レジスタおよびそれらのレジスタとの間でデータ
の転送を行うために用いるデータ転送器と、()
各命令を受け、その命令に関連する値を選択され
たデータ保持器にロードするための手段と、()
前記データ転送器とレジスタを制御し、前記機能
ビツトに応答してプロセツサを前記機能ビツトに
従つて動作させる制御器と、(b)前記機能セツトは
少くとも1つのプレフイクシング機能と他の機能
を含み、前記制御器はプレフイクシング機能を含
む命令に関連する前記値を前記データ保持器の、
前記他の機能を有する命令に関連する場合とは異
なる位の位置にロードさせ、それにより、別の命
令から得た複数の値をデータ保持器にロードさせ
るようにして可変ビツト長の値を累積させるコン
ピユータを提供するものである。 なるべくなら、前記プロセツサはオペランド・
レジスタと、前記機能ビツトから得た値を保持す
るように構成されたレジスタを含み、それに前記
制御器が応答してプロセツサのオペレーシヨンを
決決し、前記機能セツトは複数の直接機能を含
み、それらの直接機能に応答して前記制御器は、
前記オペランド・レジスタに保持されているオペ
ランドについてプロセツサにオペレーシヨンを実
行させるように構成されるようにする。 とくに有用な構成においては、前記1つのプロ
セツサレジスタは前記オペランドレジスタを構成
する。 本発明は集積回路装置を用いるマイクロコンピ
ユータにとくに応用でき、このマイクロコンピユ
ータという用語はコンピユータがどれだけ小型か
ということについては何の制約も課すものではな
いことがわかるであろう。 本発明は、メモリと、複数のレジスタを与える
プロセツサと、前記メモリおよび前記レジスタか
らのデータの入力と出力を制御する制御器とを有
する集積回路装置を備え、前記制御器は、プロセ
ツサにより逐次実行される複数の命令より成る内
蔵プログラムに応答して、より多くのレジスタの
1つに保持されているデータについていくつかの
オペレーシヨンをプロセツサに実行させるように
構成され、各命令は機能セツトから選択された求
められている機能を指定する機能ビツトセツトを
有し、前記機能セツトは(a)直接機能と、(b)1つま
たはそれ以上の他の機能を備え、直接機能に応答
して前記制御器は、オペランドレジスタ内のオペ
ランドについて求められているオペレーシヨンを
プロセツサに実行させ、前記他の機能に応答し
て、前記制御器はオペランド・レジスタ内のデー
タの場所を変えて種々の長さのオペランドを可能
とするように構成されるマイクロコンピユータも
提供するものである。 なるべくなら、前記プロセツサは、各命令に対
応するデータビツトを前記オペランド・レジスタ
内にロードするための手段を含み、前記制御器
は、プレフイクシング機能を有する前記他の機能
に応答して、前記オペランド・レジスタ内のデー
タを異なる位の位置へ転送させることにより、1
つ以上の命令に関連するデータをオペランド・レ
ジスタ内に加えられるようにして、異なるビツト
長のオペランドを累積させるように構成する。 なるべくなら、前記機能セツトは少くとも1つ
の間接機能を含み、その間接機能に応答して前記
制御器は前記プロセツサに、オペランド・レジス
タの内容を使用させて、前記オペランド・レジス
タ以外の1つまたはそれ以上の他のレジスタに保
持されているデータを基にしてプロセツサにより
実行される複数の可能なオペレーシヨンの1つを
指示させるようにする。 なるべくなら、前記制御器はプロセツサ・レジ
スタを制御するマイクロ命令の形の複数の選択可
能な出力信号を与えるように構成されたマイクロ
命令プログラムと、機能ビツトに応答してアドレ
ス信号をマイクロ命令プログラムに与えて、前記
アドレスに応じて1つまたはそれ以上のマイクロ
命令を選択するようになる。 なるべくなら、前記アドレス手段は、間接機能
を含む命令に応答してマイクロ命令プログラム中
のアドレスを選択するためにオペランド・レジス
タの内容を使用するように構成されるようにす
る。 ある実施例においては、前記プロセツサは直接
機能または間接機能に応答して、プロセツサ・レ
ジスタに保持されているデータに加えて、前記メ
モリに保持されているデータを基にしてオペレー
シヨンを行うようにする。 なるべくなら、機能セツトは2つのプレフイク
シング機能を含み、第1のプレフイクシング機能
は可変長の正の値を可能とし、第2のプレフイク
シング機能は可変長の負の値を可能とする。 本発明は、それぞれ機能部分と非機能部分を有
する第1の種類の命令を与える過程と、その第1
の種類の各命令に対して前記機能部分を復号して
機能の第1の群のどれを実行するかを決定する過
程と、前記第1の群の決定された機能を実行する
過程と、機能部分と非機能部分を有する第2の種
類の命令を与える過程と、その第2の種類の前記
機能を復号し、それに応答して、別の命令の非機
能部分と連続させるために前記第2の種類の前記
命令の非機能部分を配置する過程と、を備え、前
記実行過程は、前記第1の種類の前記命令の前記
非機能部分を用いて、いまの実行過程に関連して
オペレーシヨンを形成または探す過程を含む、可
変長オペレーシヨンを発生または探すことができ
るようするためにコンピユータ装置を動作させる
方法も提供するものである。 この明細書で説明するマイクロコンピユータは
Transputer(インモス・インターナシヨナル
(Inmos International)plcの商標)の例であつ
て、このTransputerはプロセツサとメモリ、お
よび外部との通信を行うためのリンクを含む1つ
のシリコンチツプを備えている。このマイクロコ
ンピユータは複数の処理を並行して実行できると
ともに、スケジユーリングと、同じチツプ上のプ
ロセスの間または異なるチツプ上のプロセスの間
の通信を行うことができる。各マイクロコンピユ
ータはプロセツサが設けられているチツプと同じ
チツプ上に、プログラム可能なRAMの形のKバ
イト・メモリを少なくとも1つ有し、プロセツサ
はチツプのメモリ中のプログラムに従うことがで
きる。このマイクロコンピユータは複数の通信リ
ンク、ここでは直列リンクと呼ぶ、を有する。こ
の直列リンクにより、相互に接続されているマイ
クロコンピユータのネツトワークにマイクロコン
ピユータを接続して、任意の1台のマイクロコン
ピユータをネツトワークのためのビルデイング・
ブロツクとして使用できるようにすることができ
る。任意の2台のマイクロコンピユータの間の通
信は1本または2本の特定のピンの間の接続を行
う直列リンクにより行われる。各接続によりただ
2台のマイクロコンピユータが相互に接続され
る。各リンクは他のマイクロコンピユータまたは
どの外部メモリとも共用されない。このマイクロ
コンピユータには、ネツトワーク内のマイクロコ
ンピユータの間のデータ伝送において同期をとる
ための手段が設けられ、2台のマイクロコンピユ
ータの間のリンク介する通信を受信マイクロコン
ピユータまたは送信マイクロコンピユータにより
開始できるようにする。 このマイクロコンピユータは、それぞれ2つの
部分より成る複数の順次命令を有するプログラム
を含む。1つの部分は命令の機能を表し、他の部
分はオペランド・レジスタにロードされるデータ
を表す。このようにして、各命令の機能部分のビ
ツト長は、プロセツサの語長とは無関係に同じで
あり、また、プロセツサの語長とは無関係に機能
のフオーマツトと機能ビツト長の一様性が達成さ
れる。このマイクロコンピユータの別の重要な特
徴は、それの動作が簡単で効率的な機能セツトを
用いて行われることである。その機能セツトは最
小数のオペランド・レジシタより成る。その機能
セツトは、オペランド・レジスタの内容を基にし
てプロセツサを動作させる直接機能を含む。好適
な構成においては、マイクロコンピユータは1つ
の間接機能と2つのプレフイクシング機能も含
む。間接機能を用いることにより、データレジス
タの数を増加させず、かつデータレジスタを大型
にすることなしに、オペレーシヨンを実行するた
めに多数のプロセツサ・オペレーシヨンを使用で
きる。更に、プレフイクシング機能を用いること
により可変長オペランドが得られる。 この例のマイクロコンピユータを使用すること
により、いくつかのマイクロコンピユータを相互
に結合することによつて求められている任意のマ
イクロコンピユータを形成でき、そのようにして
形成されたネツトワークは任意の1台のマイクロ
コンピユータと同様に動作する。 以下、図面を参照して本発明を詳しく説明す
る。 構造についての全体的な説明 本発明のマイクロコンピユータの主な要素が、
p形井戸相補MOS技術を用いて1枚のシリコン
チツプ11の上に形成されている様子が第1図に
示されている。これについては第17図を参照し
て後で詳しく説明する。チツプ上の部品は第1図
に長方形で示されているが、それらの長方形は部
品の相対的な寸法と位置を示すものではないこと
がわかるであろう。チツプ上には中央処理装置
(CPU)12が設けられる。このCPU12は読出
し専用メモリ(ROM)13を含む。CPU12は
メモリ・インタフエイス14を含む。このメモ
リ・インタフエイス14はインタフエイス制御ロ
ジツク15により制御される。CPU12は演算
論理ユニツト(ALU)と、レジスタと、データ
路とを含む。これについては第3図を参照して説
明する。CPU12とメモリ・インタフエイス1
4はバス16に接続される。このバス16はチツ
プ11上の要素を相互に接続する。サービス装置
17に複数の入力ピン18が設けられる。入力ピ
ン18には零V電源ピンと、5V電源ピンと、マ
イクロコンピユータを定められた状態にリセツト
するためのリセツトピンと、クロツクピン28と
が含まれる。このマイクロコンピユータには十分
な数のメモリがチツプ11上に設けられる。それ
らのメモリはランダム・アクセス・メモリ
(RAM)19とRAM20により表されている。
チツプに設けるメモリの数は1Kバイト以下であ
つてはならない。というのは、外部メモリを使用
することなしにプロセツサ12を動作させること
ができるのに十分なメモリ容量を必要とするから
である。チツプ上のメモリの容量はなるべく少く
とも4Kバイトにする。チツプ上のRAMとROM
の間の区分は、マイクロコンピユータに対する特
定の要求に適合するように選択できる。このメモ
リは冗長領域21も含む(この冗長領域は米国特許
4346459号明細書、米国特許出願第494613号また
は英国特許出願第8231055号に開示されているよ
うなもので構成できる)。この冗長領域21は、メ
モリ19または20な欠陥のある領域の代りに用
いるために、図示のようにヒユーズにより選択的
に接続できる列と行を有し、それにより満足に使
用されるチツプの歩留りを高くする。このマイク
ロコンピユータの動作にはピン28からのクロツ
クパルスに応答するタイミング制御が含まれる。
外部メモリ・インタフエイス23が設けられる。
この外部メモリ・インタフエイス23はピン24
を介して外部メモリ(図示せず)に接続される。
ネツトワークを形成するようにマイクロコンピユ
ータを他の類似のマイクロコンピユータへ結合で
きるようにするために、複数の(図示の例では
4)直列リンク25が設けられる。各直列リンク
25は入力ピン26と出力ピン27を有する。各
ピンは、別のマイクロコンピユータの対応する出
力ピンと入力ピンに対する単一のピン−ピン接続
を形成するために使用できる。各直立リンクはプ
ロセス・スケジユーリング・ロジツクを構成する
同期論理ユニツト10に接続される。図には4つ
の直列リンク25が示されているが、1つのネツ
トワークを形成するために3つのリンクまたは2
つのリンクを使用できる。ただし、できれば少く
とも6つ、たとえば7つのリンクを用いるように
する。それらのリンクは希望する任意のアレイで
完全に相互接続できるように設けられる。 チツプメモリ、通信チヤネルおよびリンクの使用
についての全体的な説明 第2図はマイクロコンピユータのいくつかの要
素を詳しく示すもので、とくにチツプ上における
メモリの使用を示すものである。このマイクロコ
ンピユータは同じチツプ上で複数のプロセスを並
行して実行するために使用でき、第2図には3つ
の並行プロセスのオペレーシヨンが示されてい
る。メモリはプログラム30を格納するために使
用される。そのプログラム30はROM20また
RAM19に格納できる。ここで説明している例
では、マイクロコンピユータは16ビツト語のデバ
イスであるが、他の語長も使用できる。プログラ
ム30は一連の命令で構成される。ここで説明し
ている例では各命令の長さは8ビツトで、プロセ
ツサの語長が16ビツト以外のものであつても、こ
の命令の語長は変らない。各命令のフオーマツト
は第5図に示すようなものであつて、上位の4ビ
ツトは命令の機能を表し、下位4ビツトはデータ
を表す。プログラム30は各命令の指定された部
分に保持されるもの以外のデータは含まない。プ
ロセツサが各機能に応答するやり方と、データを
取り扱うやり方は機能セツトから選択されたある
特定の機能に依存するが、各命令の機能部とデー
タ部のフオーマツトは常に同じである。メモリは
データ31も格納する。そのデータ31はROM
20またはRAM19に格納できる。 このマイクロコンピユータはいくつかのプロセ
スを時分割式にいつしよに実行する。いつしよに
実行されるプロセスは並行プロセスと呼ばれる。
任意の時刻にはマイクロコンピユータのよりただ
1つのプロセスが実際に実行される。このプロセ
スは並行プロセスと呼ばれる。マイクロコンピユ
ータにより実行される各並行プロセスは、プロセ
スにより取り扱われるローカル変数と一時的な値
を保持するための作業域と呼ばれるメモリの領域
を使用する。各作業域の第1のローカル変数のア
ドレスは作業域ポインタ(WPTR)により示さ
れる。同様に、各並行プロセスに対して、特定の
プロセスに関連するプログラム中の一連の命令か
らの次に実行すべき命令を指示するための命令ポ
インタ(IPTR)が用いられる。第2図におい
て、プロセス1に対する作業域が参照番号32で示
され、プロセス2,3に対する対応する作業域が
参照番号33,34で締されている。各作業域は
複数のアドレス可能な語場所より成り、実行を待
つているプロセスの表上で次に実行するプロセス
の作業域ポインタ(WPTR)を格納するために
各作業域の1つの語場所が用いられる。このよう
にして、実行すべきプロセスのための一連の作業
域に対するポインタを含むメモリ内に結合された
リストが形成される。プロセツサがプロセス1で
動作しており(第2図参照)、しばらくの間その
プロセスの実行を停止することを指令される点に
達したとすると、CPU12は次のプロセスたと
えばプロセス2での動作を開始する。そのプロセ
ツサは、メモリ内の場所35における作業域ポイ
ンタを読出すことにより、前記次のプロセスへ導
かれる。好適な実施例においては、任意のプロセ
スのために作業域ポインタと、結合されているリ
スト上の次のプロセスの作業域ポインタのアドレ
スとの間に既知の関係があるから、結合されてい
るリストの次の部分は現在のプロセスの作業域か
ら容易に得ることができる。各プロセス作業域に
対して、別の語場所36がそのプロセスのための
命令ポインタ(IPTR)を格納する。第2図には
3つのプロセスだけのための作業域が示されてい
るが、並行して実行するプロセスの数に応じて作
業域の数を変えることがわかるであろう。 同じマイクロコンピユータにより異なるプロセ
スの間の通信を行えるようにするために、メモリ
のRAM部19に複数の通信チヤネル40,4
1,42,43が設けられる。この例では各通信
チヤネルはメモリ内の2つの語場所より成り、1
つの語場所は通信チヤネルを使用することを希望
するプロセスを識別するために用いられ、他の1
つの語場所がチヤネルを介して通信すべきデータ
を保持するために用いられる。それらのチヤネル
の動作については第9a〜9e図を参照して説明
する。第2図は1つの直列リンク25の構成も詳
しく示すものである。図示のように、リンク25
は2つのチヤネル45,46を含み、各チヤネル
は一方向通信チヤネルを構成する。この場合には
チヤネル45は入力チヤネルとして用いられ、チ
ヤネル46は出力チヤネルとして用いられる。各
チヤネルは、各チヤネル40〜43の2語場所に
類似するやり方でアドレスできる2つのレジスタ
より成る。それら2つのレジスタは、通信に含ま
れるプロセスを示すために用いられるプロセス・
レジスタ47と、送るべきデータを保持するため
のデータ・レジスタ48とより成る。入力チヤネ
ル内のデータ・レジスタ48はピン26に接続さ
れ、出力チヤネル内のデータ・レジスタ48はピ
ン27に接続される。レジスタ47,48の動作
は、同期ユニツト10に結合されている制御ロジ
ツク50により制御される。直列リンクと、制御
ロジツク50と、同期論理ユニツト10との動作
については第12図〜第16図を参照して詳しく
は説明する。 メモリのRAM部19は作業域32〜34およ
び通信チヤネル40〜43を得るために用いら
れ、かつ要求によりプログラムとデータを保持す
るためにも使用できる。ROM20は、たとえば
高レベル・プログラミング言語のインタプリタを
保持するため、または標準オペレーシヨンのため
のルツク・アツプ表の格納のような種々の目的に
使用できるとともに、マイクロコンピユータが特
定の目的に用いられる周辺装置のための制御プロ
グラムを保持するために使用できる。 CPUデータ略およびレジスタ 次に、第3図を参照してCPU12と、それの
動作を詳しく説明する。 CPU12は演算論理装置(ALU)55と、3
本のデータバスであるXバス、Yバス、Zバスに
接続される複数のデータ・レジスタとを含む。そ
れらのレジスタの動作と、バスとの相互接続は複
数のスイツチ56により制御される。それらのス
イツチはROM13に含まれているマイクロ命令
プログラムから得た信号により制御される。それ
らのスイツチはチツプ構造と一体に形成されるス
イツチであることがわかるであろう。CPUとメ
モリ19,20,21の間の通信は、メモリ・イ
ンタフエイス14に接続されている一方向アドレ
ス路61と、インタフエイス14に接続されてい
る双方向データバス62とを介して行われる。レ
ジスタと、バス61,62と、バスX,Y,Zは
第3図に示すように接続される。それらのレジス
タは次のようなものである。略語 レジスタ MADDR 求められるメモリ場所のアドレスを
含むメモリ・アドレス・レジスタ60。 IB 第5図に示すフオーマツトのメモリ命令か
ら順次受けるための命令バツフア63。 OREGTR 命令バツフア63中の命令から得た
データを受けるオペランド・レジスタ65。 IPTR REG 現在のプロセスの命令ポインタを
保持するオペランド・レジスタ67。 DATA OUT データバス62を介してデータ
をメモリへ提供するためのレジスタ70。 AREGTR ALU55のためのオペランドを保持
するため第1のAレジスタ71。 BREGTR ALU55のためのオペランドを保持
するための、AEGとのスタツクとして構成さ
れる第2のBレジスタ72。 WPTR REG 現在のプロセスの作業域ポインタ
(WPTR)を保持するためのレジスタ73。 LPTR REG 実行されることを待つているプロ
セスのリスト上の最後のプロセスの作業域への
ポインタを保持するレジスタ74。 第3図に示されているように、インクリメンタ
66とバイト・アライナ69も設けられる。 データバス62には、データバス線62をプレ
チヤージするように動作できるスイツチ75が設
けられる。XバスとYバスをプレチヤージするた
めに動作できる同様なスイツチ76,77がそれ
ぞれXバス、Yバスに設けられる。XバスとYバ
ス上の信号をマージさせるように動作する別のス
イツチ78がXバスとYバスの間に設けられる。 演算論理装置(ALU)55はXバスとYバス
から入力を受け、Zバスへ出力するように構成さ
れる。ALU55は、データ路の動作をALU55
の出力に依存して制御するように、出力8を条件
マルチプレクサ9を介してマイクロ命令プログラ
ムROM13へ与える。 命令バツハア63は一連の8ビツト語(ここで
は命令と呼んでいる)を、メモリ19,20,2
1からインタフエイス14とバス62を介して受
けるように構成される。各8ビツト語は2つの部
分より成り、第5図に示すようなフオーマツトを
有する。1つの部分は後で説明する機能セツトか
ら選択される「機能」を表し、他の部分はデータ
を表す。命令バツフア63を出力をデコーダ64
へ与える。このデコーダは命令を機能部分とデー
タ部分に分ける。データ部分はオペランド・レジ
スタにロードされ、機能部分は復号されてマイク
ロ命令レジスタ(MIR)80へアドレスを与え
る。選択された機能とは無関係に、全ての命令に
対して同じ手続がとられる。命令バツフア63に
より受けられた各命令はMIR80にアドレスを
ロードする。そのアドレスはROM13内のマイ
クロ命令プログラムに、スイツチ56とインタフ
エイス制御ロジツク15を制御する1つまたはそ
れ以上のマイクロ命令を実行させて、マイクロ命
令の各シーケンスの終りにレジスタと、制御ロジ
ツク15と、その命令中の選択された機能に対応
する第3図に示されているデータ路とによりオペ
レーシヨンが行われるようにする。マイクロ命令
プログラムのオペレーシヨンについては後で詳し
く説明する。 命令バツフア63とマイクロ命令レジスタ80
を除き、第3図に示す全てのレジスタは16ビツ
ト・レジスタである。プロセツサが16ビツト語プ
ロセツサであるこの例においては、各命令が8ビ
ツト長であるからプログラム中の各16ビツト語場
所は2つの命令を含む。したがつて、レジスタ6
7に保持されている命令ポインタは、2つの命令
を含んでいるプログラム語場所からの1つの命令
を識別するために、特定の8ビツトバイトを指す
ことをできることが必要である。このような理由
から、この例ではプログラム30(第2図)がメ
モリ19の下半分だけに書き込まれる。この例で
はメモリは64に語を有し、メモリ場所のアドレ
スを15ビツトだけで表すことができるから、プロ
グラム30は場所0〜32767に書き込まれる。そ
のために命令ポイント中に別のビツトが残り、そ
のビツトは、ある特定の命令を識別するためには
各語のアドレスにおける2バイトのどれが必要で
あるかを識別するために使用できる。マイクロ命
令ROM13は122語を含む。各語は68ビツトよ
り成る。ROM13の各列に68ビツトが含まれ、
このROMがいつでも68個の出力信号を生ずるよ
うに構成される。マイクロ命令プログラムのオペ
レーシヨンについては後で詳しく説明する。 第3図からわかるように、メモリ・インタフエ
イスの状態を記録するために用いられる複数の1
ビツト状態ラツチがインタフエイス・ロジツク制
御器15に設けられる。実行ラツチと呼ばれるラ
ツチ110が実行すべき命令のソースを定める。
ラツチ110が状態1を有する時は命令のソース
はメモリであるしこのメモリは希望によつてはイ
ンタフエイス23を介して接続される外部メモリ
とすることができる。ラツチ110が状態0を有
する時は、命令を外部ソースから受けることがで
きるようにするために、命令のソースは直列リン
ク25の1つである。2つまたはそれ以上の連続
する命令に対しては同じ直列リンク25へくり返
えし行くことが必要なことがあるが、メモリから
命令をとり出す場合には、各命令ごとに命令ポイ
ントIPTRが進められる。IBラツチ112がIBレ
ジスタ63の状態を記録する。MADDRラツチ
113がMADDRレジスタの状態を記録する。
MEM ENABLEラツチ114がメモリ・インタ
フエイスの状態を記録し、メモリ・インタフエイ
ス14が占められている時は常に状態1の有す
る。メモリに対して書き込み要求が行われたこと
をWRITEラツチ115が記録する。また、バイ
ト要求がメモリに対して行われたことをBYTE
ラツチ116が記録する。UPPER/LOWERラ
ツチ117がバイト・アドレスの最下位ビツトを
保持する。その最下位ビツトは、Aレジスタの内
容が1つの桁だけ右へ移動させられた時に、Aレ
ジスタ71の最下位ビツト位置からロードされ
る。 機能セツト 命令バツフア63により受けられる命令の機能
要素は、マイクロコンピユータのための機能セツ
トにより決定される。その機能セツトは、プログ
ラムを書く時に選択できる利用可能な機能のリス
トであり、それらの機能に対してマイクロコンピ
ユータは応答できる。 機能セツトには直接機能と、間接機能と、プレ
フイクシング機能との3つの種類の機能がある。 直接機能は、オペランド・レジスタ65の内容
をデータとして用いる(他のレジスタの内容もデ
ータとして使用できる)。 間接機能は、オペランド・レジスタ65以外の
レジスタ内のデータを用いて種々の「オペレーシ
ヨン」のうちの1つを選択するために、オペラン
ド・レジスタ65の内容を用いる。 プレフイクシング機能は、オペランドをオペラ
ンド・レジスタ65に累積する。 その機能セツトは次の通りである。
【表】
【表】
【表】 それらの機能とオペレーシヨンについて説明す
る前に、この明細書で用いる記法について述べる
ことになる。Transputerマイクロコンピユータ
にはOCCAM(インモス・インターナシヨナル
(Inmos International)plcの商標)言語をなる
べく用いるようにする。このOCCAM言語は、
1983年にインモス社(Inmos Limited)により英
国において出版および配布された「OCCAMプロ
グラミング・マニユアル(Programming
Manual−OCCAM)」と題する小冊子と、雑誌エ
レクトロニクス(Electronics)1982年11月3日
号所載の「プロセス向き言語は分散処理の要求に
適当である(Process−Oriented Language
Meets Demands of Distrbuted Processing)」
と題するテーラー(Taylor)およびウイルソン
(Wilson)の論文とに詳しく記載されている。
OCCAM言語は並行処理にとくに良く適する。こ
こで説明している本発明の好適な実施例は並行処
理にとくに適するから、この例にOCCAM言語を
用いることは極めて適切である。他言語は適切な
コンパイラとともに使用できる。実際の応用にお
いては、プログラムはOCCAM言語を用いてプロ
グラムを書き、そのプログラムをコンパイラが普
通のやり方で特定の命令に変換する。しかし、こ
こで説明するマイクロコンピユータの好適な実施
例内で起ることを示すために、命令中の機能とオ
ペレーシヨンをOCCAM言語を用いて記述する余
地がある。したがつて、それらの機能とオペレー
シヨンおよび使用の例の記述においては下記の記
法を用いることにする。 記 法 1 プロセスが開始され、いくつかの動作を実行
してから終る。各動作は代入、入力または出力
とすることができる。代入は変数の値を変え、
入力はチヤネルから値を受け、出力は値をチヤ
ネルへ送る。 開始と終了の間の任意の時刻に、プロセスは
1つまたはそれ以上のチヤネルで通信を行う用
意ができるようにできる。各チヤネルは2つの
並行プロセスの間で一方向接続を行う。それら
2つの並行プロセスの一方はチヤネルへ出力す
るだけ、他方はチヤネルから入力するだけであ
る。 代入は記号「:=」で示される。代入 v:=e は変数vの値を式eの値にセツトしてから終
る。たとえば、x:=0はxを0にセツトする
こと、x:=x+1はx値を1だけ増加するこ
とを意味する。 入力は記号「?」で占される。入力 c?x は、チヤネル「c」からある値を入力し、それ
を変数xに割当ててから終ることを意味する。
入力 c?ANY は、チヤネル「c」からある値を入力し、その
値を捨てることを意味する。 出力は記号「!」により示される。出力 c!e は式eの値をチヤネル「c」へ出力し、それか
ら終ることを意味する。出力 c!ANY は、任意の値をチヤネル「c」へ出力すること
を意味する。 プロセスSIKIPは何の作用も行わずに終了す
る。 2 CONSTRUCT 順次onstruct、並列construct、条件付
constructまたはオルターネイテイブconstruct
を形成するためにいくつかのプロセスを組合わ
せることができる。construct自体はプロセス
であつて、別のconstructの構成部として使用
できる。あるconstructの各構成部プロセスは、
それがそのconstructの部分であることを示す
ために、左マージンから更に2つの空白をとつ
て書かれる。 順次constructは次のようにして書かれる。 SEQ P1 P2 P3 … 構成部プロセスP1,P2,P3……は互いに順
次実行される。各構成部プロセスは1つが終つ
てから次が開始され、最後の構成部プロセスが
終つからconstructは終る。たとえば、 SEQ in?x x:=x+1 out!x は、ある値を入力し、その値に1を加え、その
結果を出力する、ことを意味する。 並列constructは PAR P1 P2 P3 … により表される。構成部プロセスP1,P2,P3
……はいつしよに実行されるから、並行プロセ
スと呼ばれる。全ての構成部プロセスが終つた
後でconstructは終了する。たとえば、 RAR in?x out!y はxへの入力と、yからa出力をいつしよに行
えるようにするものである。 並行プロセスはチヤネルを用いて通信する。
チヤネル「c」からの入力と、同じチヤネル
「c」への出力がいつしよに実行されると、入
力と出力を行える状態になつた時に通信が行な
われる。値は出力プロセスから入力並行プロセ
スへ割当てられ、それから両方の並行プロセス
の実行が継続される。 条件付construct IF condition1 P1 condition2 P2 condition3 P3 は、条件1が真であるならばプロセスP1が実
行され、さもなければ、条件2が真であればプ
ロセスP2が実行される……等であることを意
味する。このcontructにおいてはただ1つのプ
ロセスが実行され、実行後にconstructは終る。
たとえば、 IF x>=0 y:=y+1 x<0 SKIP では、xの値が正である時だけyが大きくな
る。オルタネーテイブconstruct ALT input1 P1 input2 P2 input3 P3 … は、入力1,2,……のうちの1つの準備が整
うまで待つことを意味する。入力1が最初に準
備が整つたとすると入力1が実行され、それか
らプロセスP1が実行される。同様に、入力2
が最初に準備が整うと入力2が実行され、それ
からプロセスP2が実行される。すなわち、た
だ1つの入力が実行され、その後で対応するプ
ロセスが実行され、それからconstrucが終る。
たとえば、 ALT count?ANY conter:=counter+1 total?ANY SEQ out!cunter couner:=0 では、いずれもチヤネル「count」から信号を
入力し、可変「counter」を1だけ増加し、あ
るいはチヤネル「total」から交互に入力し、
可変「counter」の現在の値を出力し、それを
零リセツトする。 3 くり返えし(REPETITION) WHILE条件 P これは、条件の値が偽となるまでプロセスPを
くり返えし実行する。たとえば、 WHILEx>5 x:=x−5 は、xの値が5以下になるまでxを5ずつ減少
することである。 4 VARIABLES variableは記憶装置内の1つの語に対応する
簡単な変化、またはベクトルと呼ばれる
variableの番号をつけられたセツトの1つであ
る。たとえば、v〔3〕:=0はベクトルv内の
3番のvariableの値を0にセツトし、v
〔0〕+
1は0番のvariableの値を1だけ増加する。 variableは VARv: P のような宣言により導入される。これはプロセ
スPにおいて使用するためにvを導入する。 5 手続(PROCEDURES) 手続の定義によりプロセスに名称を与えるこ
とができる。たとえば、 PROC square(n,sqr) sqr:=n*n は手続「squre」を定義する。 手続の名称はプロセスのための略語として使
用できる。たとえば、 square(x,sqrx) は sqrx:=x*x を意味する。 6 EXPRESSIONS expressionはオペレータ、変数、数、真理値
の真と偽および括弧(と)から構成される。 真は1ビツトよりのみ成る値であり、偽は0
ビツトのみより成る値である。 オペレータ+、−、*、/は加算、減算、乗
算、除算を表す。 オペレータ=、<>、>、<=に対しては結果
は下記のようになる。 x=y xがyに等しいと真である x<>y xがyに等しくなければ真である x>y xがyより大きければ真である x<=y xがyより小さいか、yに等しければ
真である オペレータ\/、/\、><の場合には、結果
の各ビツトは下の表に従つてオペランドの対応す
るビツトから発生される。 x y x\/y x/\y x><y 0 0 0 0 0 0 1 1 0 1 1 0 1 0 1 1 1 1 1 0 NOTオペレータの場合には、結果の各ビツト
は、下の表に従つてオペランドの対応するビツト
から発生される。 x NOTx 0 1 1 0 オペレータ≪、≫の場合には x≪yは左へyビツト動かされるxの値で、空
いたビツト位置は0ビツトで埋められる x≫yは左へyビツト動かされるxの値で、空
いたビツト位置は0ビツトで埋められる 以上説明した一般的なOCCAM言語表記を本発
明のマイクロコンピユータに適用することにす
る。 レジスタの変数は次のように定義される。 IPTTRは命令ポインタ・レジスタ67の内容
を表す WPTRは作業域ポインタ・レジスタ73の内
容を表す LPTRはリスト・ポインタ・レジスタ74の内
容を表す AREGはAレジスタ71の内容を表す BREGはBレジスタ72の内容を表す OREGはオペランド・レジスタ65の内容を表
す 1つのレジスタから他のレジスタへの転送は例
えば、代入 BREG:=AREG により表される。これは、Aレジスタの内容がB
レジスタへ複写され、Bレジスタの以前の内容に
置き換えられる。 TRANSPUTER内のメモリは memoryというベクトル により表される。 メモリ内の個々の語は 例えば、memory〔AREG〕というベクトル を下側に記す(subscripting)することにより識
別される。これは、Aレジスタの内容をアドレス
とするメモリ内の語の内容を意味する。 メモリとレジスタの間の転送は 例えば、代入 memory〔AREG〕:=WPTR により同様に表される。これは、Aレジスタの内
容をアドレスとするメモリ内の語の内容が、作業
域・ポインタ・レジスタの内容で置換えられるこ
とを意味する。 3つの手続(PROC)「run」、「wait」、
「moveto」が以下の記述中にしばしば現われる。
それらは次のようにして定義される。すなわち、
リンク〔process〕は直列リンク25のプロセ
ス・レジスタ47の内容を表し、NILはどのプロ
セスの作業ポインタではない特殊な値を表す。
READYは直列リンクより使用される別の特殊な
値を表す。
【表】
【表】 上記の手続においては、以下に行う説明の参考
のために行番号をつけてある。 機能とオペレーシヨンの定義 それらの定義について、前記した記法を用いて
以下の述べることにする。 作業域からのロード 定義:SEQ BREG:=AREG AREG:=memory〔WPTR+OREG〕 目的:現在のプロセス作業域内の場所の値をロー
ドすること。 作業域への格納 定義:SEQ memory〔WPTR+OREG〕:=AREG AREG:=BREG 目的:現在のプロセス作業域内の場所に値を格納
すること。 作業域へのポインタのロード 定義:SEQ BREG:=AREG AREG:=WPTR+OREG 目的:現在のプロセス作業域内の場所へポインタ
をロードすること。現在のプロセス作業域内の
場所のベクトル(vector)の第1の場所にポイ
ンタをロードすること。 作業域からのロードおよびインクリメント 定義:SEQ BREG:=AREG AREG:=memory〔WPTR+OREG〕 memory〔WPTR+OREG〕:=AREG+1 目的:現在のプロセス作業域内の場所の値をリー
ドし、その場所をインクリメントすること。 ループ・カウンタとして作業域場所の使用を
容易にし、零へ向つて増加させること。 語またはバイトのvectorへポインタを増加さ
せる時に作業域場所の使用を容易にすること。 ベクトルからのロード 定義:AREG:=memory〔AREG+OREG〕 目的:外部作業域から値をロードすること。 値のベクトルから値をロードすること。 値をポイントとして用いて(間接的に、この
場合にはOREG=0)値をロードすること。 ベクトルへの格納 定義:SEQ memory〔BREG+OREG〕:=AREG AREG:=BREG 目的:外部の作業域内の場所に値を格納するこ
と。 値のベクトルに値を格納すること。 値をポインタとして用いて(間接的に、この
場合にはOREG=0)値を格納すること。 リテラルのロード 定義:SEQ BREG:=AREG AREG:=OREG 目的:値を格納すること。 リテラル加算 定義:ARE:=AREG+OREG 目的:値を加算すること。 外部作業域内の場所にポインタをロードする
こと。 値のベクトル内の場所にポインタをロードす
ること。 飛越し 定義:IPTR:=IPTR+OREG 目的:制御を前方または後方へ転送し、ループを
形成し、ループから出、プログラムの条件付部
分の後で継続すること。 非零の飛越し 定義:IF AREG<>0 IPTR:=IPTR+OREG AREG=0 SKIP 目的:非零値がロードされた時だけ制御を前方ま
たは後方へ転送し、プログラムの部分を条件付
で実行し、条件付ループを出ること。 値と値のセツトとの比較を容易にすること。 ポインタのコードへのロード 定義:SEQ BREG:=AREG AREG:=IPTR+OREG 目的:命令のアドレスをAレジスタにロードし
て、プログラムの部分を形成するデータのベク
トルのサドレスをロードすること。 手続呼出し 定義:SEQ memory〔WPTR−1〕:=IPTR IPTR:=AREG AREG:=WPTR moveto(WPTR+OREG) 目的:効率の良い手続呼出し機構を得ること。 同じプロセツサで2つの同じ手続が実行され
る場合に、コードの共用を容易にすること。 間接機能 オペレート(operate) 定義:oprate(OREG) 目的:求められているオペレーシヨンを定義する
コードとしてオペランド・レジスタ(OREG)
の内容を持いてオペレーシヨンを実行するこ
と。 プレフイクシング機能 プレフイツクス(prefix) 定義:OREG:=OREG≪4 目的:0〜15の範囲にない命令オペランドを1つ
またはそれ以上のプレフイツクス命令を用いて
表すことができるようにすること。 否定プレフイツクス(negatire prefix) 定義:OREG:=(NOT OREG)≪4 目的:零またはそれ以上のプレフイツクス命令が
続く1つの否定プレフイツクス命令を用いて否
定オペランドを表すことができるようにするこ
と。 オペレーシヨン(operations) reverse 定義:SEQ OREG:=AREG AREG:=BREG BREG:=OREG 目的:AレジスタとBレジスタの内容を交換する
こと。 非対照的なオペレータのオペランドを反転させ
ること、この場合にはこれはコンパイラでは都
合良く行うことはできない。 零に等しくする(equal to zero) 定義:IF AREG=0 AREG:=TRUE AREG<>0 AREG:=FALSE 目的:Aが非零値を保持しているかどうかを判定
すること。 推理(ビツトに関してではなく)否定を実行
すること。 A=0 as eqz A<>0 as eqz,eqz ifA=0…… as jnz ifA<>0…… as eqz,jnz を実行すること。 より大きい(greater) 定義:IF EREG>AREG AREG:=TRUE BREG<=AREG AREG:=FALSE 目的:AとBを比較し(それらを2つの相補整数
として処理して)、BがAより大きいと1(真)
をロードし、それ以外は0(偽)をロードする
こと。 オペランドを反転することによりB<Aを実
現すること。 オペランドと(gt,eqz)を反転することに
よりB<=A as(gt,eqz)とB>=Aを実現
すること。 論理積(and) 定義:AREG:=AREG/\BREG 目的:AとBのビツトについてのAND操作の結
果をロードし、AとBにおける対応するビツト
が1にセツトされるならば各ビツトを1にセツ
トし、それ以外では0にセツトすること。 2つの真理を論理的にAND操作すること。 論理和(or) 定義:AREG:=BREG/\AREG 目的:AとBビツトについてのOR操作の結果を
ロードし、AとBの対応するビツトのいずれか
がセツトされるならば各ビツト1にセツトし、
それ以外は0にセツトすること。 2つの真の値を理論的にOR操作すること。 排他的or(exclusive or) 定義:AREG:=BREG><AREG 目的:AとBのビツトについての排他的OR操作
の結果をロードし、AとBの対応するビツトが
異なる時は各ビツトを1にセツトし、それ以外
は0にセツトすること。 ビツトについての not as(ldl−1、xor) を実行すること。 加算(add) 定義:AREG:=BREG+AREG 目的:BとAの和をロードすること。 ベクトル内の語またはバイトのアドレスを計算
すること。 減算(subtract) 定義:AREG:=BREG−AREG 目的:BからAを減じ、結果をロードすること。 A=B as sub,eqz A<>B as sub,eqz,eqz if A=B as sub,juz,…… if A<>B as sub,qez,jnz,…… を実行すること。 プロセス実行(run process) 定義:SEQ memor[AREG−]:=BREG run(AREG) 目的:プロセスをアクテイブ・プロセス・リスト
の終りに加えること。 休止(pause) 定義:SEQ run(WPTR) wait( ) 目的:現在のプロセスの実行を一時的に休止する
こと。 現在アクテイブ・プロセス・リスト上にある
プロセスの間でプロセツサ時間を共用するこ
と。 結合(join) 定義:IF memory[AREG]=0 movto(memory[AREG+1]) memory[AREG]<>0 SEQ memory[AREG]:=memory[AREG]−
1wait( ) 目的:並列プロセスを結合する; 2つの語が用いられる。1つはカウンタであ
り、他の1つは作業域へのポインタである。カ
ウントが零に達すると、作業域が変えられる。 同期(synchronize) 定義:IF memory[AREG]=NIL SEQ momery[AREG]:=WRETR wait( ) memory[AREG]<>NIL SEQ run(memory[AREG]) memory[AREG]:=NIL 目的:2つのプロセスを同期させ、チヤネルを用
いて通信させること。 復帰(return) 定義:SEQ moveto(AREG) IPTR:=memory[WPTR=1] AREG:=BREG 目的:呼出された手続から復帰させること。 バイト回転(rotate bytes) 定義:AREG:=(AREG≪8)/(AREG≫ (bitsperword−8)) 目的:8ビツト・バイト値を組合せて1つの語の
値を形成できるようにするためにAレジスタ内
のバイトを回転させること。 語の値のいくつかのコンポーネント8ビツト値
に分割できるようにすること。 右桁送り(shift right) 定義:AREG:=AREG≫1 目的:Aレジスタの内容を右へ1桁だけ桁送りす
ること。 左桁送り(shift left) 定義:AREG:=AREG≪1 目的:Aレジスタの内容を左へ1桁だけ桁送りす
ること。 上記の機能セツトは直接機能と、間接機能と、
プレフイクシング機能とを含むことがわかるであ
ろう。任意の命令の開始時には、その命令に対し
て選択された機能とは無関係に、命令バツフア6
3内の命令の機能部分を受ける所定のビツト位置
セツトが入力をデコーダ64へ与えるために用い
られ、各命令データ部分を表す他の所定のビツト
位置が、オペランド・レジスタ65の下位4ビツ
ト位置をロードするために用いられる。その機能
が直接機能であるとすると、オペランド・レジス
タ65の内容に対して選択された機能に従つてプ
ロセツサは作動する。その機能が間接機能であれ
ば、実行すべきオペレーシヨンの性質を決定する
ためにオペランド・レジスタ65の内容が用いら
れ、間接機能の命令の一部を構成しない、他のレ
ジスタに保持されているデータについて、オペレ
ーシヨンが実行される。機能が直接または間接で
あるような任意の命令が終ると、オペランド・レ
ジスタ65は零にクリアされる。その機能がプレ
フイクス機能であれば、プロセツサはその命令の
データ部分を先ずオペランド・レジスタ65の下
位桁の位置にロードし、その後、下位桁のこのデ
ータ部分を高い桁の位置へ転送する。 各命令の始めに命令ポインタは増加させられ
る。したがつて、命令ポインタは次に実行すべき
命令を常に指す。 オペランド・レジスタは種々の目的のために用
いられる。オペランド・レジスタ65が各命令で
受ける「データ」は計算用のリテラル値のことも
あれば、間接機能の場合には求められている機能
の定義のこともある。別の重要な用途は、ある特
定の変数の値を見出す場所、または格納する場所
のアドレスを探すために、ある機能に対して、オ
ペランド・レジスタ65内のデータ値が作業域・
ポインタ・レジスタ73内のデータに組合わされ
ることである。たとえば、作業域・ポインタ・レ
ジスタ73は現在のプロセスの作業域ポインタ
WPTRを含む。これはその作業域のための基準
メモリ・アドレスを指す。変数またはその他のポ
インタは定義され、作業域ポインタWPTRによ
り指し示されたアドレスから既知量だけずれてい
るその作業域のアドレス場所に格納される。その
ずれは一般に命令部分により指定され、オペラン
ド・レジスタ65内に格納される。実際に、作業
域命令からロードと格納は、WPTRレジスタ7
3の内容とオペランド・レジスタ65の内容の組
合せ(たとえば加え合せ)により定められるメモ
リ場所を暗黙のうちに指す。更に、ベクトルをア
クセスするため、またはプログラムにおいて分岐
するために、オペランド・レジスタ65の内容は
Aレジスタ71または IPTRレジスタ67のような他のレジスタの内容
に組合わされる。これの例は後で説明する。 オペレーシヨンの効率を最高にするために、最
も一般的に求められる動作をカバーするように直
接機能が選択されることがわかるであろう。各命
令の機能要素を表すために4ビツトを用いること
により、機能セツトはコード0〜15を用いる。も
つとも、コード12には機能を割当てられていな
い。コード13は間接機能を示すために用いられ
る。その間接機能は、この場合には、命令の下位
4ビツトを通常のやり方でオペランド・レジスタ
65にロードさせる「オペレート」機能である
が、そのオペランド・レジスタの内容は、他のレ
ジスタに保持されているデータについてのオペレ
ーシヨンを決定するためにプロセツサによりそれ
から用いられる。このようにして、8ビツト命令
の一様性を保ちつつ、オペレーシヨンの数を増加
できることがわかるであろう。「オペレート」命
令の前にプレフイクス機能または負プレフイクス
機能を用いることにより、オペランド・レジスタ
65の内容を変えて、先に説明したものよりもは
るかにオペレーシヨン選択を行うことができる。
pfixとnfixの使用については第8図を参照して詳
しく説明するが、マイクロ命令プログラム13の
オペレーシヨンを更に説明することがまず必要で
ある。 マイクロ命令プログラムというのは、マイクロ
コンピユータのプログラムから命令バツフア63
に到達する各遂次命令の求められている「機能」
を実行するために、スイツチ56(第3図)とイ
ンターフエイス制御ロジツク15を制御する制御
信号を発生する手段である。マイクロ命令プログ
ラムはROM13の列と行に格納されているマイ
クロ命令のリストより成る。ROM13はマイク
ロ語と呼ばれる出力を生ずる。その出力は64ビツ
トより成り、各ビツトは制御信号を構成する。そ
の出力は複数のフイールドに分割され、各フイー
ルドは所定のビツト位置群より成る。ある任意の
時刻における出力は、選択されたマイクロ命令に
応じて選択されたビツト位置に与えられる。各フ
イールドはある特定の制御領域に関連させること
ができる。たとえば、1つのフイールドがどのレ
ジスタがXバスに接続されるかを制御し、別のフ
イールドかがどのレジスタがYバスに接続される
かを制御し、他のフイールドがどのレジスタがZ
バスに接続されるかを制御し、更に別のフイール
ドがALU55の動作を制御し、更に別のフイー
ルドがマルチプレクサ9とMIR80への帰還信
号を制御する。1つのフイールドがインタフエイ
ス制御ロジツク15を制御し、「読み出し」、「書
き込み」、「求められた次の命令(NEXT)」のよ
うなマイクロ命令出力信号を与えて、マイクロ命
令がインタフエイス14を介してのレジスタとメ
モリ19の間の通信を制御できるようにする。 ROM13内で選択される特定のマイクロ命令
はMIR80内のアドレスに依存する。MIR80
はROM13内で列と行の選択を行う7ビツト・
レジスタである。命令バツフア63により受けら
れた各命令の始めに「機能」がデコーダ64によ
り復号され、条件マルチプレクサ9を通されて、
ROM13内のマイクロ命令の選択のためのアド
レスを与える。機能を実行するためにある機能は
ただ1つのマイクロ命令を要することがある。そ
の場合には、ROM13はデコーダ64により復
号されるアドレスに応じてマイクロ語出力を与
え、その機能はROM13の1動作サイクル(こ
こではマイナー・サイクルと呼ぶことにする)内
に終了させられる。他の機能は一連のマイクロ命
令、したがつて一連のマイナー・サイクルを要す
る。この場合には、その機能のために必要な最初
のマイクロ命令をROM13が選択するためのア
ドレスをデコーダ64がMIR80へ与える。そ
の後で、マイクロプログラムは一連のマイクロ命
令の実行(各実行には1マイナー・サイクルかか
る)を続け、各マイクロ命令は、一連のマイクロ
命令中の次に実行するマイクロ命令のアドレスを
識別するように、それの出力マイクロ語のフイー
ルド中にてMIR80のための7ビツトを与える。
次のマイクロ命令が前のマイナー・サイクルによ
り発生される条件の結果として選択されるよう
に、MIR80の下位2ビツトを条件付でセツト
して、マルチプレクサ9を介して帰還させ、
MIR80内のアドレスを行わせることができる。
これにより、たとえば第3図に示されている種々
のレジスタ内の値に依存して、4つの可能なオプ
シヨンから次のマイクロ命令を選択できるように
する。MIR80の2つの条件ビツトが条件付で
セツトされないものとする、MIR80内のアド
レスにより示される次のマイクロ命令が無条件で
実行される。命令バツフア63内の命令のオペレ
ーシヨンを行うために全てのマイクロ命令が実行
されると、ROM13のマイクロ語出力のフイー
ルド内に制御信号「NEXT」が発生され、それ
によりメモリ19から命令バツフア63への次の
命令を要求する。 各マイナー・サイクルはソース相と宛先相の2
つの相より成る。ROM13から発生された制御
信号は、ソース相の間だけアクテイブである群
と、宛先相の間だけアクテイブである群と、マイ
ナー・サイクル全体にわたつてアクテイブである
群との3つの群に分けられる。制御信号の発生と
持続時間を制御するために、第6図に示されてい
る4種類のストローブ信号を発生するようにタイ
ミング制御器が構成される。それらのストローブ
信号はソース・ストローブ信号150と、宛先ス
トローブ信号151と、行プレチヤージ・ストロ
ーブ信号152と、マイクロ命令ストローブ信号
153である。ソース・ストローブ信号は、レジ
スタがそれの内容をバス上に置けるようにするタ
イミング信号であつて、それの持続時間は演算論
理装置が結果を形成するのに十分なほど長い。宛
先ストローブ信号はレジスタがデータをバスから
受けることができるように構成される。マイクロ
命令ストローブ信号は条件マルチプレクサ9から
次のマイクロ命令のアドレスを発生するために用
いられる。行プレチヤージ・ストローブ信号は、
次のソース・ストローブ信号のための準備が整う
高レベル状態へバス線XとYをプレチヤージする
ために用いられる。それらのストローブ信号の相
対的なタイミングと持続時間が第6図に示されて
いる。それらのストローブ信号は第7図に示す装
置により発生される。ピン28(第1図)からの
クロツクパルスが各マイナー・サイクルの開始の
ためのGO信号を発生する。この信号はCPU12
内の4つの連続する遅延器を通され、第1の遅延
器154の出力端子からマイクロ命令ストローブ
信号153がとり出され、第2の遅延器155の
出力端子から宛先ストローブ信号151がとり出
され、第3の遅延器156の出力端子から行プレ
チヤージ・ストローブ信号152がとり出され、
第4の遅延器157の出力端子からソース・スト
ローブ信号150がとり出される。したがつて、
プロセツサの動作は外部クロツク入力28に同期
させられる。 可変長オペランドの使用 先に説明したように、このマイクロコンピユー
タは可変長オペランドで動作できる。各命令は4
ビツト場所をオペランドに割当てるが、前期機能
セツト内のコード14,15に対応する機能セツト
pfixとnfixを使用することにより、16ビツトまで
のオペランドをオペランド・レジスタ65内で形
成することが可能である。この動作は第8図を参
照することにより最も良く理解できる。第8図は
それぞれ4ビツトの4つの部分で有するオペラン
ド・レジスタ65を示すものである。演算論理装
置55が位が高くなる4ビツトに対応する4つの
部分を有するのが示されており、0レジスタ65
と演算論理装置55の間の接続が、Yバスを通る
演算論理装置への伝送を選択的に制御するゲート
90を介して制御される。YバスとZバスが4つ
の部分に分離されている様子が示されている。各
部分は位の異なるデータの4つのビツトを取り扱
う。たとえば、Y〔3:0〕は下位の4数字を取
り扱うYバスの部分を表し、Y〔15:12〕は上位
の4数字を取り扱い、Zバスの場合にも同様に処
理される。オペランド・レジスタ65の下位4ビ
ツと以外の各部分にはZバスからゲート91を介
して供給でき、あるいはゲート92から零を供給
できる。下位4ビツトが0レジスタ65の下位4
ビツト位置へ送られるように第8図の命令バツフ
ア63からの命令は分離され、第3図を参照して
説明したようにマイクロ命令プログラム13内の
アドレスを選択するために機能要素が用いられ
る。第8図の真理値表は、機能がpfixまたはnfix
に対応し、またはいずれにも対応しない3つの可
能性を示すものである。その真理値表には、
ROM13のマイクロ語出力から線100〜10
4へ与えられる対応する制御信号と、それらの信
号の持続時間も示されている。 この場合に用いられるマイクロ語出力制御信号
は次の通りである。 1 OPD NOT0:これは、真理値表が「1」を
有する時にはオペランド・レジスタ65には零
が供給されないが、真理値表が「0」を有する
時はレジスタ65に零が供給されることを意味
する。 2 NEXT:これは、真理値表が「1」を有す
る時はオペランド・レジスタ65に次のオペラ
ンドが命令バツフア63からロードされるが、
真理値表が「0」を有する時はオペランド・レ
ジスタ65には次のオペランドが命令バツフア
63からロードされないことを意味する。 3 Y FROM OPD:これは、真理値表が
「1」を有する時はYバスがオペランドをオペ
ランド・レジスタ63から受けるが、真理値表
が「0」を有する時はそうではないことを意味
する。 4 Z FROM Y:これは、真理値表が「1」
を有する時はALU55からのZバス出力がY
バスからデータを受けるが、真理値表が「0」
を有する時はそうではないことを意味する。 5 Z FROM NOT Y:これは、真理値表が
「1」を有する時はALU55がYバス上の信号
を挿入して、Zバスを通すが、真理値表が
「0」を有する時はそうではないことを意味す
る。 各マイナー・サイクルにおけるそれら5つの制
御信号の持続時間は第8図に示されている。第8
図において、Sはソース相だけにおける持続時間
を示し、Dは宛先相だけにおける持続時間を示
し、S+Dは両方の相における持続時間を示す。 線100上のマイクロ語制御信号はゲート9
1,92を動作させて、Zバスが機能pfixとnfix
に応答してオペランド・レジスタ65にロードし
ないようにし、他のどの機能もオペランド・レジ
スタ65の上位3つの段をゲート92を介しての
入力により零にさせる。全ての命令信号は最後の
マイナー・サイクルで制御信号NEXTを発生す
る。その信号は線101へ与えられてオペラン
ド・レジスタ65に次のオペランドをロードさせ
る。線102は信号「Y FROM OPD」を受
け、pfixとnfixに対してオペランド・レジスタを
ゲート90を介して接続させる。線103は制御
信号「Z FROM Y」を受け、pfixの場合には
ALU55にYバス上の信号をZバスへ送らせる
が、nfixに対してはそうさせない。線104は制
御信号「Z FROM Y」を受け、nfixの場合に
はYバス上の信号を反転してからALU55を通
つてZバスへ供給できるようにするが、pfixの場
合にはそうさせない。線100,103,104
上の信号は各マイナー・サイクルのソース相と宛
先相の全体を通じて存在するが、線101上の信
号は宛先相の時だけ存在し、線102上の信号は
ソース相の時だけ存在する。機能がpfixの時は、
真条件に対応する信号が線100,101,10
2,103に供給され、このようにしてオペラン
ド・レジスタ65の下部部分のオペランドの4ビ
ツトがALUを通じてオペランド・レジスタ65
の次に高い位の段へ進ませられ、それによりオペ
ランドの別の4ビツトをオペランド・レジスタ6
5の下位位置にロードできるようにする。この動
作は、オペランドの最高16ビツトまで、命令が
pfix機能でとり出されるたびに反復される。同様
に、機能がnfixであれば、プロセスは全体として
類似して、各命令の後に零が書き込まれることな
しに、オペランドの引き続く各4ビツトをオペラ
ンド・レジスタの高位の段へ移動させるようにす
る。これにより負のオペランドを最大16ビツトま
で形成できる。機能がpfixとnfixのいずれでもな
いと、線100上の制御信号が零を、その命令の
終りに、オペランド・レジスタ65の3つ上位の
段(ビツト15〜4を表す)へ与えさせることをこ
の真理値表は示す。 プロセスのスケジユーリング 先に述べたように、このマイクロコンピユータ
はいくつかの並行プロセスを行うことができる。
したがつて、このマイクロコンピユータはある特
定の時刻にどのプロセスを実行すべきかを決定す
る計画のシステムを与える。ある時刻にWPTR
レジスタ73(第3図)は現在実行されているプ
ロセスの作業域ポインタを保持する。しかし、現
在のプロセスの作業域と、実行されるのを待つて
いる別のプロセスの作業域とはリストを形成し、
そのリストにおいては各作業域の1つの場所がリ
スト上の次のプロセスの作業域ポインタを保持す
る。各プロセス作業域内の別の場所が、そのプロ
セスの次に実行すべき命令を識別する命令ポイン
タを保持する。更に、LPTRレジスタ74が現在
実行を待つている最後のプロセスのための作業域
のアドレスを含む。このようにして新しいプロセ
スをそのリストの終りにつけ加えることができ、
LPTRレジスタ74はそのリストの現在の終りを
常に指示する。プロセツサはリスト上のプロセス
を逐次実行するのが普通で、現在のプロセスが
「休止」オペレーシヨン(オペレーシヨン・リス
トのコード9)を実行する時、または現在のプロ
セスが「結合」オペレーシヨン(オペレーシヨ
ン・リストのコード10)を実行することにより自
身でスケジユールを破つた時、または同期オペレ
ーシヨン(オペレーシヨン・リストのコード11)
の時に、次のプロセスへ進むだけである。それら
の状況のいずれにおいても、現在のプロセスはそ
れ以上の命令の実行を止めて、プロセツサは、第
2図の36で示されているように、プロセス作業
域に命令ポインタIPTRを留保して、第2図に3
5として示されている次のプロセスのアドレスに
より識別されている次のプロセスへ動き、それか
ら新しいプロセスのためのIPTRをIPTRレジス
タ67にロードする。少くとも1つのプロセス実
行が常に存在するように、零プロセスが設けら
れ、他のプロセスがアクテイブでない時はその零
プロセスが実行される。 先に定義した手続「実行(run)」、「待機
(wait)」、「へ移動(moveto)」はスケジユーリ
ングにおいて使用される。あるプロセスはそれが
現在のプロセスである時、または実行されること
を待つているプロセスの結合されたリスト上にあ
る時に、そのプロセスは「スケジユールされる」。
あるプロセスが結合されているリストから外され
た時に「スケジユールから外される」ことにな
る。スケジユールから外されたプロセスは、他の
プロセスまたは命令がその外されたプロセスをス
ケジユールに含ませる、すなわち、結合されたリ
ストの末尾にそれを加えるまでは、決して実行さ
れることはない。LPTRレジスタ74(第3図)
はリスト上の最後のプロセスのための作業域ポイ
ンタを格納するために用いられることを思い出す
であろう。したがつて、プロセスが結合されたリ
ストに付加されるたびにLPTRレジスタ74を調
整せねばならない。また、あるプロセスをスケジ
ユールに含める場合には、そのプロセスの次にど
の命令を実行すべきかをCPU12は決定できな
ければならない。これは適切な命令ポインタ
IPTRをメモリに格納することにより行われる。
プロセスが実行中はそのIPTRはIPTRレジスタ
76内にある。その格納はたとえばメモリ場所3
6(第2図)で行われる。 それらの手続の説明においては、作業域32と
33とレジスタ65,67,71,73,74を
示す第4図を参照すると便利である。第4図は代
表的なメモリ・アドレスと、作業域の内容を示す
ものである。 作業域32を有するプロセスは、それの作業域
ポンイタWPTRをレジスタ73に挿入すること
により現在のプロセスにされる。この場合には
WPTRは10000に等しい。プロセスが現在のプロ
セスになると、プロセツサはWPTR−1を調べ
ることにより、すなわち、メモリ場所9999におけ
る内容を調べて、ある命令に対するポインタ84
を見つけ、それをIPTRレジスタ67にロードす
ることにより、次に実行する命令を見つける。こ
れが現在のプロセスであるが、プロセツサは次の
命令を指すためにIPTRレジスタ67の内容を使
用する。 処理中は、プロセツサは、WPTRすなわちA
レジスタ71の内容のような基準値と、レジスタ
65に置かれているオペランドを組合わせること
により形成されるアドレスを有する変数を使用す
る。作業域オペレーシヨンからのロードにおいて
は、「2」のオペランドがメモリ場所10002にある
ものを何でも対象とし、作業域32に対応するプ
ロセスが現在行われる。処理を停止する時は、結
合されているリストが調べられる。要素85,8
6は結合されているリストの部分である。次の作
業域を指すメモリ場所9998におけるWPTR85
を見つけるために、プロセツサはWPTR−2を
調べる。ポインタ85は作業域33を指す数
11000を含む。作業域33に対応するプロセスが
結合されているリスト上の最後のプロセスである
とすると、LPTRレジスタ74がポインタ11000
を含む。結合されているリストにあるプロセスが
付加されるまではポインタ86はメモリ場所
10998に格納されない。 ここで3つの手続について説明することにす
る。PROC run(w)がwにより定められるプロ
セスをスケジユールにするため、すなわち、その
プロセスを結合されているリストに加えるために
用いられる。この手続は先に定義したものである
が、ここでその定義と、その定義に用いた行番号
を参照することにする。 wの値が特殊な値「READY」であるとする
と、何の動作も実行されない。これについてのそ
れ以上の説明は種々のマイクロコンピユータの間
の通信について後で行うことにする。それ以外は
wはプロセス作業域に対するポインタであつて、
行5,6が逐次実行される。行5においては、
LPTRはLPTRレジスタ74の内容を意味する。
それは、結合されているリスト上の最後のプロセ
スのための作業域に対する基準アドレスに対する
ポインタである。アドレスがLPTR−2であるメ
モリは次のプロセスのための作業域ポインタのア
ドレスを含むが、LPTRが最後のプロセスに対応
するからまだ何もない。いまは行5がw(プロセ
スwにおける作業域ポインタ)をメモリ場所
LPTR−2に割当てるから、いまはプロセスwは
結合されているリストの終りにある。この点では
LPTRレジスタ74の内容は最後のプロセスwを
指さず、最後から2番目のプロセスを指す。これ
は、プロセスwのための作業域ポインタをLPTR
レジスタ74に入れる行6において修正される。
このステツプのために、プロセスwを意図しない
のに削除することなしに、結合されているリスト
に別のプロセスを付加できる。そのような削除
は、LPTRレジスタ74が更新されない時に起
る。第4図を参照して、ただ2つの処理されてい
るプロセスがあり、かつポインタが12000である
作業域にプロセスwが対応するものとすると、
PROC run(w)が12000をメモリの〔10998〕に
入れ、12000をレジスタ74に入れる。 待機(wait)」と呼ばれる手続は単独で、また
はPROC run(w)と組合せて、使用できる。そ
れ自身でその手続は現在のプロセスをスケジユー
ルから外し、システムが次のプロセスを実行でき
るようにし、それのプログラムの最初の命令にお
ける代りにそのプログラム中の適切な所でそのプ
ロセスを実行する。ここで、PROC waitについ
て先に行つた定義を参照することである。PROC
「wait」が呼出されると(行1)、4つのステツ
プ(行3,4,8,9)を有するシーケンスが開
始される(行2)。線4〜7は外部からの要求に
関するものであり、これについての説明を延ばす
ことができる。もつとも、リンク(プロセス)は
直列リンク25(第2図)のプロセス・レジスタ
47の内容を表す。行3においては、メモリ
〔WPTR−1〕はアドレスWPTR−1における
メモリ・スペースである。そのアドレスは現在の
プロセスの基準アドレスWPTRを基にしている。
ここで説明している実施例においては、そのメモ
リ場所は、プロセスが推奨された時に次に実行さ
れる命令を指すために用いられる。IPTRレジス
タ67の内容は、現在のプロセスの次に実行する
命令を常に指す。したがつて、行3は次に実行す
る命令に対するポインタをメモリ(なるべくなら
同じチツプ上の)に単に格納するだけである。手
続PROC run(w)がPROC waitに先行するもの
とすると、この時には、現在のプロセス(w)は
結合されているリストの終りに付け加えられてお
り(PROC run(w)1により)、LPTRレジスタ
74は更新されており(やはりPROC run(w)
により)、いまはプロセスwのための次の命令に
対するポインタは、プロセスwのための作業域ポ
インタのアドレス(WPTR)に関して既知の場
所、メモリ〔WPTR−1〕に格納されている。
したがつて、プロセスwはいまは実行されなくな
るための準備が整う。行8は次のプロセスのため
の結合されているリストを調べる。それの作業域
は現在の作業域のアドレスWPTR−2における
内容により指される。したがつて、行8は結合さ
れているリスト上の次のプロセスのための作業域
ポインタをWPTRレジスタ73に割当てる。今
は基準アドレスが進み、装置はメモリのアドレス
WPTR−1に格納されているポインタを調べる
ことにより、このプロセスのための次の命令であ
るかを探す。第4図を用いるために、作業域32
が現在行われており、それのプロセスがPROC
waitを含む命令を受けることについて考察する。
最初はWPTRは10000である。行8において、行
73はメモリ・アドレス9998において見出される内
容にセツトされる。それはポインタ11000である。
行9においては、レジスタ67はメモリ・アドレ
ス10999において乱される命令ポインタでセツト
される。したがつて、PROC run(w)の後に
PROC waitが続くものとすると、現在のプロセ
スがリストの終りに付け加えられるものとすると
(それの作業域ポインタが結合されているリスト
に格納される)、それの次の命令に対するポイン
タはメモリに格納され、それは活動を停止させら
れ、結合されているリスト上の次のプロセスが適
切な命令の始めに開始される。これらの動作の全
てはたつた4つのレジスタを用いて行われる。こ
のように構成することにより、システム中のメモ
リの量によつてのみ数が制限されるプロセスのス
ケジユーリングとデスケジユーリングを行えるよ
うにされる。 「moveto」と名づけられた手続は、新しい
IPTRへ必ずしも変更することなしに、作業域基
準ポインタを現在のプロセスのための作業域にお
ける異なるアドレスにセツトするために使用でき
る。したがつて、あるプロセスがそれの基準作業
域ポインタを10000に有しているものとすると、
この同じプロセスのために基準ポインタを
(10200)に変えるためにmoveto(10200)を用い
てレジスタをセツトできる。これはPROC
moveto(w)の前記した定義を参照して次のよう
に説明される。 定義の2行目がこれが一連のステツプであるこ
とを宣言している。3行目と8行目は左マージン
から等しくずらされているから、それらはともに
逐次実行される。システムが最後のプロセスでな
いと仮定する。そうすると、行2は偽であるから
システムは行6へ飛び越す。行6における条件は
真であるから行7が実行される。行7はメモリ・
アドレスw−2における内容を、結合されている
リスト上の次のプロセスのための作業域ポインタ
にセツトする。次に、行8がWPTRレジスタ7
3の内容を値wに変える。今レジスタ73は現在
のプロセスのための新しい基準アドレスを指す。
この新しい基準アドレスからの慣例となつている
ずれ(マイナス2)が、次にスケジユールされる
プロセスのための作業域に対するポインタを見出
す。次のプロセスがない場合には、行2が真で、
LPTRレジスタ74の内容が、最後のプロセスの
ための基準アドレスとしてwを指すために調整さ
れ、その後で現在のプロセスの基準アドレスへの
ポインタを保持するためのレジスタ73がwを指
すように調整される。 以上、スケジユーリングについて第4図を説明
したが、いくつかの機能とオペレーシヨンについ
て第4図を参照して更に説明する。 作業域からのロード 作業域からのロードはある特定のメモリ場所に
おける内容を複写し、それを暗黙のうちにAレジ
スタ内に置く。この機能と、好適な実施例の構成
は、基準となる現在の作業域ポインタからのオフ
セツトにより定められるアドレスを有するメモリ
も暗黙のうちに参照する。この基準アドレスは
WPTRレジスタ73に常に格納され、オペラン
ド・レジスタ65にオフセツトが含まれる。した
がつて、式“memory〔WPTR+OREG〕”は、
WPTRレジスタ73とレジスタ65との内容を
加え合わせることにより見出されるアドレスを有
するメモリの内容を指す。“load”はAレジスタ
71を指し、スタツクの内容が1つのレジスタに
より下方へ移動させられる、すなわち、Aレジス
タの内容がBレジスタへ移動させられ(データを
AREGにロードさせるための余地を作る)、
BREGの内容がCレジスタ(もしあれば)へロー
ドされる。第4図を参照して、WPTRが10000で
あるとすると、コード02を用いて“load from
workspace”は変数2をAレジスタにロードする
ことを意味する。 この“store to workspace”命令は、Aレジ
スタ71に含まれているのは何であつても、オペ
ランド・レジスタ65に含まれているオフセツト
により(WPTRレジスタ73に含まれている)
基準アドレスからずらされるアドレスを有するメ
モリ領域に動かすことを暗黙のうちに意味するも
のである。また、スタツクは上方へも動く(たと
えば、BREGの内容がAREGへ動き、CREGの内
容がBREGへ動く)。再び第4図を参照して、
WPTR=10000およびOREG=1であるとする
と、この機能は、Aレジスタ71の内容をメモリ
場所10001に格納することを意味する。それは変
数1である。 作業域内へのポインタのロード 機能“load pointer into workspace”はどの
作業域に格納しない。その代りに、この機能は作
業域内のある特定の場所へのポインタをAレジス
タ71にロードする。これは、たとえば、作業域
に格納できるベクトルのある特定の部分を指す
“load from vector”命令に関連して使用され
る。したがつて、第4図を参照して、作業域32
は10000である作業域ポインタWPTRにより参照
される。作業域内の既知の場所においてはベクト
ルが存在し得る。そのベクトルは10200、10201、
10202のような複数の場所を有する。このベクト
ルの初めは作業域ポインタ(10000)からのある
特定のオフセツト(200)である。したがつて、
ベクトルの初めを見出すためには、オフセツト
(200)がオペランド・レジスタ65にロードさ
れ、それらから命令“load pointer into
workspace”がアドレス10200をAレジスタ内に
置く。それはそのベクトルの初めを指す。その後
で、ベクトルの初めに関して特定のメモリ場所を
見出すために“load from vector”オペレーシ
ヨンが用いられ、したがつて、作業域ポインタ・
レジスタ73の代りにAレジスタ71に組合わさ
れたオペランド・レジスタ65内のオフセツトを
それは用いる。 リテラル・ロード(load literal) “load literal”命令はオペランド・レジスタ
65内にあるものはどんなものでもAレジスタ7
1(評価スタツクの1番上)にそのままロードす
る。第5図を参照して、与えられた任意の命令の
最後の4ビツトがオペランド・レジスタ65にロ
ードされるが、プレフイクシング機能を用いるこ
とにより、4ビツト以上をオペランド・レジスタ
に格納できる。しかし、たとえば、10進表記で
613のコードを有する命令は、数13をAレジスタ
71にロードし、Aレジスタの以前の内容をBレ
ジスタ72へ桁送りすることを意味する。 飛越し(jump) “jump”機能はプログラム中で分岐するため
に用いられる。現在のプロセスでプロセツサによ
り次に実行される命令は、命令ポインタを含んで
いるIPTRレジスタ67の内容により指示され
る。飛越し命令はオペランド・レジスタ65の内
容を命令ポインタに加え合わせる。プレフイクシ
ング機能を用いることにより、命令ポインタはそ
れに加え合わされた値、またはそれから減じられ
た値を有することができて、プログラム中で前方
または後方へ飛越すことができる。 手続呼出し(call procedure) “call procedure”機能は前記した“moveto”
手続を用いる。“call procedure”は次に実行す
る命令のための通例のメモリ場所(たとえば、第
4図のメモル場所9999)にIPTRを最初に格納す
る。次に、その機能は、“call procedure”機能
が終了させられた後で次に実行すべき命令に対す
るポインタがロードされているAレジスタ71の
内容を、命令ポインタ・レジスタ67へ転送す
る。 それから、Aレジスタ71に作業域ポインタが
ロードされる。これに続いて、“moveto”手続が
基準ポインタWPTRを変更して、その基準ポイ
ンタWPTRが現在の作業域内の異なるアドレス
を指すようにする。“moveto( )”手続は
WPTRレジスタ73の内容を、movetoに続く括
弧の中の内容にセツトするものである。したがつ
て、“call procedure(呼出し手続)”の後では現
在のプロセスのための同じ作業域内の異なる場所
を指す作業域ポインタをシステムは有することに
なり、Aレジスタ71に前から含まれていた異な
る命令をシステムが実行する準備がされたことに
なる。RETURNオペレーシヨンの使用により逆
のオペレーシヨンが行われる。 プロセス実行(run process) このオペレーシヨン“run process”は自身の
作業域と1組の命令を有するプロセスの構成にお
いて一般に使用される。Aレジスタ71には新し
いプロセスのための作業域用の作業域ポインタが
ロードされ、Bレジスタには新しいプロセスのた
めの適当な命令ポインタがロードされている。オ
ペレーシヨン“run process”は作業域ポインタ
から適切にオフセツトされたメモリ内の場所に命
令ポインタを格納し、それから括弧内の作業域ポ
インタを用いて前記手続PROC run( )を呼出
す。先に説明したように、これは新しいプロセス
のスケジユールを作成する。すなわち、結合され
ているリストに新しいプロセスを付加する。 休止(pause) “休止”オペレーシヨンは、1つのプロセスが
他のプロセスを除外してALU55を使用するこ
とを阻止するためにプログラム中に現れる。この
オペレーシヨンはコンパイラによりループ中に挿
入される。このオペレーシヨンは、現在のプロセ
スを結合されているリストの終りに付加し、必要
なポインタを格納し、現在のプロセスに実行をし
ばらく休止させ、結合されているリスト上の次の
プロセスを現在のプロセスにする。評価スタツク
の内容をプロセスを損うことなしに捨てることが
できる時に“pause”が実行されるから、評価ス
タツクの内容は保留されない。 結合(join) この“join”オペレーシヨンは、たとえば並行
プロセスが存在する時に用いられ、それらの並行
プロセスの全てが同時刻にプログラム中のある点
にあるべきであることを意図するものである。元
のプロセスP(0)について考えることにする。
プログラム中のある点においてそのプロセスP
(0)は並行側プロセスP(1)、P(2)、P(3)…P
(n)に拡がる。それらが実行されると、最後の
プロセスP(n+1)を実行する。しかし、P(1)、
P(2)…P(n)の全てが終るまではその最後のプ
ロセスは起らない。 “join”オペレーシヨンはこのために用いられ
るものである。カウンタが作業域内で設定され、
Aレジスタ71がカウントの格納されるメモリに
向けられる。カウントは依然としてアクテイブで
ある(終つていない)副プロセスの数に対応す
る。各副プロセスは“join”オペレーシヨンとと
もに終る。ある副プロセスがそれの“join”オペ
レーシヨンに到達した後て、その副プロセスはカ
ウントを調べる。カウントが零であると、プログ
ラムは“moveto”手続を用いて最後のプログラ
ムへ動く。カウントが零でなければ、カウンタは
1だけ減少させられ、それから先に述べたように
して副プロセスは“wait”させられる。他の副
プロセスは零カウントに達するまで実行される。 同期(synchronise) “synchronise”オペレーシヨンは並行処理に
とつて非常に重要である。というのは、その
“synchronise”オペレーシヨンを使用することに
より2つのプロセスをある時刻に同じ点に置くこ
とができるからである。これについては「同じマ
イクロコンピユータ上のプロセス間の通信」の項
において第9図を参照して説明することにする。
簡単に説明すれば、同じチツプ上の2つのプロセ
スXとYが、たとえば一方のプロセスが必要とす
るデータを他方のプロセスが計算しているため
に、通信を希望したとすると、チヤネル40,4
1,42または43(第2図)が用いられる。各
プロセスは“synchronise”オペレーシヨンを有
する。 “synchronise”オペレーシヨンに到達する最
初のプロセスはチヤネルを調べる。チヤネルのア
ドレスはAレジスタ71にロードされているか
ら、“memory〔AREG〕”がそのチヤネルのこと
を言及する。表現式“NIL”は零として認められ
る所定の基準のことを指す。第1のプロセスによ
りチヤネルの初めの部分にNILが見出されたとす
ると、そのプロセスはそれの作業域ポインタをチ
ヤネルの第1の部分に置き、それからそれ自身で
スケジユールから外れる。それでそのプロセスは
プロセスYがそれの“sync”オペレーシヨンに
到達するのを待つ。プロセスYが“sync”オペ
レーシヨンに到達すると、プロセスYは同じチヤ
ネルの第1の部分を調べる。そうすると、NILは
見つからないが、その代りにある作業域ポインタ
を見つける。それに応答してプロセスYはプロセ
スXをスケジユールする(結合されているリスト
の終りにそれを加え合わせる)。チヤネルの第1
の部分はNILに戻る。一般に、1つのプロセスか
ら他のプロセスへ転送するためのデータが置かれ
る少くとも第2の部分がチヤネルに存在する。ま
た、同期オペレーシヨンは一般に対となつて起
る。2つのプロセスにおける第1の“sync”オ
ペレーシヨンはプロセスにデータを待機させ、そ
れから準備が整つた時にそのデータを転送させ
る。第2の“sync”命令は確認応答を行わせる。
したがつて、プロセスからデータを入力している
プロセス“sync”する。データがレデイ状態に
なつていないとすると、そのデータは“待機”す
る。供給プロセスによりデータがレデイ状態にさ
れると、その供給プロセスは受けるプロセスをス
ケジユールし、それから受けるプロセスはデータ
をとる。それから各プロセスによる“sync”命
令が転送の確認応答をする。データを供給するプ
ロセスによる最初の“sync”は、データをとる
準備が整つていることを示す。 同じマイクロコンピユータにおけるプロセス間の
通信 先に説明したように、このマイクロコンピユー
タは同じマイクロコンピユータにおけるプロセス
間、または異なるマイクロコンピユータにおける
プロセス間の通信を可能にする。たとえば、1つ
のプロセスは自動車の走行距離の測定、第2のプ
ロセスはその自動車の走行距離に対する燃料消費
量の測定ということがある。第1のプロセスは入
力として自動車の車輪の回転を表すデータを受
け、走行距離を表す出力を発生する。第2のプロ
セスは燃料消費量に関連するデータを入力として
受けるが、走行距離に対する燃料消費量について
の有用な出力を発生できるようになるためには、
走行距離についての情報を得るために第1のプロ
セスと交信することも必要である。同じマイクロ
コンピユータにおける通信を処理するプロセスの
場合には、ここで説明している例では第2図に示
されているチヤネル40〜43を通じて通信が行
われる。このオペレーシヨンには同期オペレーシ
ヨンの使用が含まれる。その同期オペレーシヨン
には、機能とオペレーシヨンの前記した表からの
機能コード13とオペレーシヨン・コード11よ
り成るプログラム命令を要する。各チヤネル40
〜43はメモリ内の2つの連続する語場所より成
る。1つの語場所は「プロセス場所」を与え、第
2の語場所は「データ場所」を与える。チヤネル
は一方向通信チヤネルであつて、ある1つの時刻
には2つの、そしてただ2つのプロセスにより共
用される。あるアクテイブ・プロセスxが同じマ
イクロコンピユータ上のプロセスyと通信するこ
とを望んだとすると、第9図a〜eを参照して後
で説明するシーケンスが行われる。第1に、プロ
セスxはチヤネル40のアドレスを識別し、通信
しようと思うデータをそのチヤネルのデータにロ
ードする。また、プロセスxは同期オペレーシヨ
ンのための命令の実行も行う。プロセス場所がデ
ータを受けることを待つているプロセスyの作業
域ポインタを有していないとすると、同期オペレ
ーシヨンはプロセスxのWPTRをプロセス場所
に記録させ、プロセスxをスケジユールから外す
ために“wait”手続を使用する。これは第9図
bに示されている位置である。今は、プロセスx
はプロセスyがデータを受ける準備が整うまで待
つ。プロセスyがデータを受けることを希望する
と、プロセスyは同期オペレーシヨンのための命
令を実行して、通信チヤネル40がデータを送る
準備が整つているかどうかを調べる。この命令の
実行に際して、プロセスyはプロセスxの作業域
ポインタをチヤネル40のプロセス場所に置き、
オペレーシヨンのリストにおいて述べだ同期オペ
レーシヨンからわかるように、同期オペレーシヨ
ンの実行により“run”手続がプロセスxの作業
域ポインタをチヤネル40から除去させ、実行を
待つているプロセスのリストの終りにプロセスx
を付け加える。これは第9図cにおける位置であ
る。それからプロセスyはチヤネル40のデータ
場所からデータを読出し、それから同期オペレー
シヨンのための別の命令を動作させて、それがデ
ータを受けたことを指示する。このためにプロセ
スyの作業域ポインタがチヤネル40のプロセス
場所にロードされ、プロセスyを待機させる。こ
のためにプロセスyがスケジユールから外され、
チヤネル40を第9図dに示す状態に放置する。
プロセスxがその上で待機しているリストがプロ
セスxに到達して、プロセスxが再びアクテイブ
状態にされると、いまプロセスyの作業域ポイン
タをチヤネル40のプロセス場所に置く同期オペ
レーシヨンのための別の命令をプロセスxが実行
し、そのためにプロセスxの動作を継続できるこ
とになる。それと同時に、プロセスyがプロセス
の待機リストの終りに再び付け加えられて、実行
の準備が整うように、xプロセスはプロセスyに
“run”手続を行わせる。そうすると通信チヤネ
ル40は第9図eに示す状態となり、プロセスx
は継続され、プロセスyはリスト上で待機してい
る。このようにして、“handshake”オペレーシ
ヨンを行つている両方のプロセスにより通信が同
期される。“handshake”オペレーシヨンにおい
ては、両方のプロセスがオペレーシヨンを同期さ
せるために2つの命令を実行する。それら2つの
命令のうちの一方はプロセスをスケジユールから
外し、スケジユールから外されない方の通信プロ
セスから適切な信号が受信された時に、スケジユ
ールから外された方のプロセスだけがリストへ戻
される。 次に、第10図を参照して、同じマイクロコン
ピユータ上で2つの通信プロセスを実行するため
に必要なプログラムと命令シーケンスの特殊な例
について説明することにする。これは自動車の走
行距離と燃料消費量を測定するための、先に述べ
た2つの例を示すものである。マイクロコンピユ
ータ170はそれのメモリ域に、変数
“rotations”をカウントする第1のプロセスのた
めの第1の作業域171と、変数“miles”をカ
ウントする第2のプロセスのための第2の作業域
172とを有する。作業域171は語場所173
を有し、この語場所には“rotation”と呼ばれる
入力チヤネル174のアドレスが含まれる。その
入力チヤネルは、外部の回転検出器(図示せず)
から各車輪回転数についてのメツセージを受ける
ように構成されている直列リンクの一部を構成す
る。作業域171は別の語場所175も有する。
この語場所175にはチヤネル“mile”と呼ば
れる2語メモリ・チヤネル176のアドレスが含
まれる。この場合には、このメモリ・チヤネル1
76は、車輪の1000回転ごとに1mileの走行を示
す作業域171のプロセスからの出力を受ける。 この第1のプロセスに対するOCCAM言語を用
いるプログラムは次の通りである。
【表】
【表】 行番号はこのプログラムの構成部分ではない
が、説明を容易にするためにつけた。1行目は存
在する変数を宣言する。その変数は“rotations”
と呼ばれる。2行目は、条件TRUEが常に真で
あるから、終りの無いループである。零回転から
スタートする(4行目)。7行目では“rotation”
という名前のチヤネルからの入力を待つ。1が受
けられると、変数“rotations”が1だけ増加さ
せられる。最後には1000回転となるから、5行目
は偽となる。そうすると6、7、8行目はスキツ
プされ、9行目で“mile”という名のチヤネル
へ1つのデータが出力される。 それらのOCCAM文がコンパイラにより下記の
ような機械命令に変換される。
【表】
【表】 この機械命令の表においても行番号は説明の便
宜上つけたものである。1、4、21行はプログラ
ム中における単なる参考場所である。2行目にお
いて値0をAレジスタ71にロードする。3行目
でAレジスタ内のデータを作業域に格納する。命
令データ部分は0であるから、このプロセスのた
めの基準アドレスからのオフセツトはない。した
がつて、作業域ポインタ・レジスタ73はいまは
作業域ポインタWPTRを含む。この作業域ポイ
ンタはメモリ内の、変数“rotations”のために
0が格納されている基準アドレスを指す。5行目
で作業域からAレジスタ71にロードする。命令
のデータ部分(その命令はオペランド・レジスタ
65にロードされる)は0であるから、作業領域
の基準アドレスWPTRからのオフセツトは0で
ある。6、7、8行目において10進値1000を加え
る。命令のデータ部における4つの2進ビツト用
いて10進数の1000を表すことはできないから、10
進数1000を加えるためにはプレフイクシング・オ
ペレーシヨンを必要とする。そこで機能コード14
(pfix)が用いられる。10進数1000は2進数では
1111101000で表される。これには10ビツトを必要
とするが、標準命令のデータ部は4ビツトである
から、この値をオペランド・レジスタにロードす
るためには3つのステツプを必要とする。8行目
は“load literal”機能のためのコードを含むか
ら、この時には、Aレジスタ71には1000の2進
数が含まれる。これによりAレジスタの内容(0
である)がBレジスタ72へ転送させられる。 9行目では間接機能、すなわちオペレーシヨン
“greater than”が呼出される。これによりレジ
スタAとBの内容が比較される。Bレジスタの内
容がAレジスタの内容より大きくなければ、この
オペレーシヨンはFALSE(0)となる。 10行目は“jump nonzero”オペレーシヨンで
ある。9行目のオペレーシヨンの結果が真である
とすると、Aレジスタの内容が非零値にセツトさ
れ、10行目から9行だけ前へ飛越しが行われる。
これはコードのデータ部における数字9で示され
ている。これによりプログラムは21行目まで前へ
飛越す。21行目は出力部である。1000回転がまだ
カウントされていないと仮定すると、次に11行目
が実行される。11行目では、作業域機能からのロ
ードは+1のオペランドを有する。このことは、
基準アドレスからのオフセツトが+1であること
を意味する。このメモリ・アドレスにおいてチヤ
ネル“rotation”のアドレスが見出され、このア
ドレスは作業域からAレジスタ71にロードされ
る。12行目では同期オペレーシヨンが行われる。
13行目ではチヤネル“rotation”のアドレスが再
びロードされ、14行目では再び同期が行われて入
力オペレーシヨンが終了される。この簡単な例に
おいてはデータは転送されない。15行目では作業
域にある変数、オフセツト0、がAレジスタにロ
ードされる。すなわち、“rotations”の現在の値
がAレジスタへロードされる。16行目において
は、データ値1がAレジスタの内容へそのまま加
え合わされる。17行目では、Aレジスタの内容が
0に等しいオフセツトで作業域内に格納される。
したがつて、チヤネル“rotation”からのデータ
の受けとりに応じて変数“rotations”が増加さ
せられたことになる。18行目は休止オペレーシヨ
ンであつて、次のプロセスを実行させ、この現在
のプロセスをリストの末尾に加える。このプログ
ラムのこの点においてはAレジスタ71とBレジ
スタ72の内容はプロセスには関連していないこ
とに注意されたい。19行目と20行目においては負
のプレフイツクス機能を用いて後方への飛越しが
実行される。22行目においては、基準場所から2
場所だけオフセツトされている作業域の内容がロ
ードされる。これはチヤネル“mile”のアドレ
スであつて、それはAレジスタへロードされる。
23行目においては同期オペレーシヨンが行われ
る。25行目で行われる別の“sync”オペレーシ
ヨンにより出力が完了させられる。26行目におい
て別の休止が挿入されて、次のプロセスをスケジ
ユールに加え、このプロセスを結合されているリ
ストの末尾に加える。27行目と28行目においては
負のプレフイクシングを用いて後方への飛越しが
行われる。変数“miles”に関する第2のプロセ
スは作業域172を使用する。この作業域172
は“mile”チヤネル176を含む語場所177
を有する。“mile”チヤネル176は作業域172
のプロセスへ入力を与えるために用いられる。別
の語場所178が第2の入力のアドレスを有す
る。この第2の入力は、この場合には、約3.9
(1ガロン)の燃料が消費されるたびに外部の燃
料計からのメツセージを受けるように構成された
直列リンクの部分を形成する、“fuel”チヤネル
と呼ばれるチヤネル179である。作業域172
は別の語場所180も有する。この語場所180
は、燃料の最後の約3.9(1ガロン)が消費さ
れる間に走行した距離を出力するように構成され
た直列リンクの部分を形成する“consumption”
チヤネルと呼ばれる出力チヤネル181のアドレ
スを有する。明らかに、走行距離数を示すメツセ
ージをチヤネル176を介して得るためには、作
業域172内におけるプロセスは作業域171に
おけるプロセスと通信する必要がある。作業域1
72におけるプロセスのための命令シーケンスと
プログラムは次の通りである。
【表】
【表】
【表】 異なるマイクロコンピユータ上のプロセス間の通
信 相互に接続されたマイクロコンピユータのネツ
トワークが第11図に示されている。第11図に
は4台のマイクロコンピユータが示されている。
このネツトワークは要求に応じて二次元または三
次元に拡張できることがわかるであろう。各マイ
クロコンピユータの構造は類似しており、2本の
一方向ワイヤ185,186により別のマイクロ
コンピユータの直列リンクに相互に接続される。
各ワイヤ185,186は1台のマイクロコンピ
ユータの出力ピン27と、他の1台のマイクロコ
ンピユータの入力ピン26の間に接続される。ワ
イヤ185,186はそれら2本のピンとピンの
間の接続だけに使用されるのであつて、他のマイ
クロコンピユータまたはメモリとの接続に供用さ
れるものではない。種々のマイクロコンピユータ
の間の通信は、同一の同期オペレーシヨン・シー
ケンスを用いて全体として類似のやり方で行われ
る。これについては第2,11,12,13図を
参照して説明する。チヤネル40(第2図)の代
りに、直列リンクは入力チヤネル45と出力チヤ
ネル46を有する。各チヤネルはプロセス・レジ
スタ47のデータ・レジスタ48より成る。それ
らのレジスタはメモリ・チヤネル40〜43のた
めの語場所と同じやり方でアドレスできる。しか
し、それらのレジスタは制御ロジツク50により
動作させられる。この制御ロジツクについては第
15,16図を参照して説明することにする。 2台のマイクロコンピユータの間の直列リンク
を通じてデータが送られる時は、そのデータは第
13a,13b図に示されているようなパケツト
の形で直列に送られる一連のデータ列の形をと
る。データパケツトは第13a図に示すような形
を有し、出力ピン27により入力ピン26へ送ら
れる。データパケツトは値が1である2つの連続
するビツトで始まり、その後に16個のデータ・ビ
ツトが続き、値が0のストツプ・ビツトで終る。
第13b図に示されている確認応答パケツトが、
データパケツトを受けるマイクロコンピユータの
出力ピン27から、データパケツトを送るマイク
ロコンピユータの入力ピン26へ送られる。確認
応答パケツトは値が0のスタート・ビツトと、そ
の後に続く値が0のストツプ・ビツトより成る。
各直列リンクの出力制御ロジツクは、各出力ピン
27がデータパケツトまたは確認応答パケツトを
送らない時に値が0のビツトを連続して送るよう
に出力ピン27を構成するから、入力ピン26が
パケツトの1スタート・ビツトを受けるまでは入
力制御ロジツクは入力ピン26上の全ての信号を
無視する。 入力チヤネルまたは出力チヤネルのプロセス・
レジスタがプロセスの作業域ポインタを保持して
いる時は、CPU12がプロセスの作業域ポイン
タを実行を待つているリストに加え合わせること
によりそのプロセスをスケジユールにするよう
に、制御ロジツク50は要求(入力要求または出
力要求と呼ばれる)を発生してCPU12へ与え
ることができる。同期ロジツク10は、直列リン
クからの各要求信号を調べるためにCPU12に
より使用されるセレクタを発生する。“wait”手
続の実行によりアクテイブ・プロセスがスケジユ
ールから外された時は、直列リンクからの要求が
あるかどうかをCPU12は調べる。もしいくつ
かの外部要求があれば、CPU12はリスト上の
次のプロセスを実行する前に、それらの要求の全
てを順次サービスする。その要求を発生したチヤ
ネルのプロセス・レジスタに保持されているプロ
セスをスケジユーリングすることによりCPU1
2は要求をサービスし、プロセス・レジスタ47
を零にリセツトする。リンク25内の入力チヤネ
ルまたは出力チヤネルのプロセス・レジスタ47
は、そのチヤネルが通信を実行する用意ができた
時に、特殊な値READYを含む。同期オペレーシ
ヨンは手続“run”を行わせる。その手続“run”
により特殊な値READYを検出し、あるプロセス
をスケジユーリングする代りに、リンク内の制御
ロジツク50の動作を停止させる。リンク内の制
御ロジツクはチヤネル上で同期オペレーシヨンを
実行できる。その同期オペレーシヨンはチヤネル
のプロセス場所をテストする。値が零であるとす
ると、それはその値を特殊な値READYで置き換
え、プロセス・レジスタ上のプロセスによりひき
起こされる同期オペレーシヨンがその値を零にリ
セツトするまで待つ。そうでなければ、前記した
ようにプロセス・レジスタ内のプロセスをスケジ
ユールするためにはそれはCPU12のための要
求を発生し、それからCPU12はプロセス・レ
ジスタの値を零にリセツトする。その結果、別の
プロセスに同期させるために同期オペレーシヨン
が用いられるのと同じやり方で、プロセスは制御
ロジツク50に同期させるために同期オペレーシ
ヨンを使用できる。 リンク25内の出力制御ロジツク50は、出力
チヤネル内のプロセス・レジスタを用いてプロセ
スとの同期をまずとり、それから出力チヤネル内
のデータ・レジスタからのデータパケツト中のデ
ータを出力ピン27(第2,11図)を通じて送
り、入力ピン26上で確認応答パケツト信号を待
ち、それから出力チヤネル内のプロセス・レジス
タを再び用いてプロセスに同期させる。出力制御
ロジツクはこのオペレーシヨンをくり返えし実行
する。リンク内の入力制御ロジツクは入力ピン2
6からのデータが入力チヤネル内のデータ・レジ
スタに到達することをまず待ち、それから入力チ
ヤネル内のプロセス・レジスタを用いてプロセス
に同期させ、次に入力チヤネル内のプロセス・レ
ジスタを用いてプロセスに再び同期させ、それか
ら確認応答パケツト信号を出力ピン27へ送る。
入力制御ロジツクはこのオペレーシヨンをくり返
えし実行する。 以下の説明においては、第11図に示されてい
るマイクロコンピユータ1により動作させられる
プロセスxがデータを直列リンクを介して、マイ
クロコンピユータ2により動作させられるプロセ
スyへ出力することを望んでいると仮定する。こ
の出力を行うために、プロセスxは出力すべきデ
ータを出力チヤネルのデータ・レジスタ187に
格納し、プロセス・レジスタ188で同期オペレ
ーシヨンを実行して、ピン27を介してのデータ
の伝送を直列リンクに開始させる。それからプロ
セスは同じプロセス・レシスタ188について別
の同期オペレーシヨンを実行して、マイクロコン
ピユータ1の入力ピン26を介して確認応答パケ
ツトが受けられるまで待つ。確認応答パケツト
は、マイクロコンピユータ2により動作させられ
るプロセスyがデータを入力したことを意味す
る。入力するために、プロセツサyはマイクロコ
ンピユータ2の入力チヤネルのプロセス・レジス
タ189について同期オペレーシヨンの実行し
て、データ・パケツトがマイクロコンピユータ2
のピン26から到達することを待つ。それからプ
ロセスyはデータ・レジスタ190からデータを
とり、別の同期オペレーシヨンを実行して、マイ
クロコンピユータ2の出力ピン27から確認応答
信号を送信させる。 第12図は、プロセスxとyが直列リンクを介
して通信する時に送る典型的なオペレーシヨン・
シーケンス中におけるプロセス・レジスタ18
8,189の内容を順次示すものである。参照番
号188a〜188e,189a〜189eはそ
れぞれプロセス・レジスタ188,189の内容
の引き続状態を表すものである。最初に、プロセ
スxはマイクロコンピユータ1の出力チヤネルを
アドレスし、出力すべきデータをデータ・レジス
タ187にロードし、出力プロセス・レジスタ1
88について同期オペレーシヨンを行う。直列リ
ンクが出力を発する用意が整つていることを示す
特殊な値READY188aをプロセス・レジスタ
188が含んでいると仮定すると、同期オペレー
シヨンによりプロセス・レジスタ188の値が零
(NIL)188bにリセツトされる。その結果、
制御ロジツクはデータ・レジスタ187からのデ
ータを、1本のワイヤ接続185を介してマイク
ロコンピユータ2の入力データ・レジスタ190
へ送らせる。プロセスyが入力をまだ待つていな
いとすると、マイクロコンピユータ2内の制御ロ
ジツクがプロセス・レジスタ189の値をNIL1
89aからREADY189bへ変えて、データが
受けられることを示す。次に、プロセスyがプロ
セス・レジスタ189について同期オペレーシヨ
ンを行う。そうするとプロセス・レジスタ189
の値がREAD189bからNIL189cに変えら
れる。マイクロコンピユータ2が確認応答信号を
マイクロコンピユータ1へ送り用意が整つている
と仮定すると、制御ロジツクはプロセス・レジス
タ189の値をREADY189dへ戻す。それか
らプロセスyは入力チヤネルのデータ・レジスタ
190からデータをとり、プロセス・レジスタ1
89について別の同期オペレーシヨンを実行す
る。そうするとプロセス・レジスタ189がNIL
189eにリセツトされる。その結果、制御ロジ
ツクは確認応答信号を1つのワイヤ接続186を
介して送る。この確認応答信号は、プロセスxを
動作させるマイクロコンピユータ1の入力ピン2
6により受けられる。確認応答信号を受ける前に
プロセスxが第2の同期オペレーシヨンを実行す
ると仮定すると、プロセスxは手続“wait”に
よりスケジユールから外され、それの作業域ポイ
ンタがプロセス・レジスタ188,.88cに格
納される。確認応答パケツトが受けられると、直
列リンクの制御ロジツクが、プロセスxをスケジ
ユールすることをマイクロコンピユータ1の
CPUに求める要求を発生し、プロセス・レジス
タをリセツトする。この要求は、現在のプロセス
がスケジユールから外されるとマイクロコンピユ
ータ1のCPUにより直ちにサービスされ、CPU
はプロセスxをリストの末尾に加えて、プロセ
ス・レジスタNIL(188d)にリセツトする。
そうすると制御ロジツクはプロセス・レジスタを
READY(188e)にリセツトすることにより、
リンクが更に出力する用意が整つたことを示す。
そのために直列リンクは、第12図のシーケンス
に示されているように、通信が行われる前と同様
になつて、次の通信を行う用意を整える。 第14図は、第11図を参照して先に説明した
プロセスの2つのマイクロコンピユータについて
の動作を示す。しかし、この場合には、回転数を
数えるための作業域171がマイクロコンピユー
タ191にあり、距離をカウントするための作業
域172は別のマイクロコンピユータ192にあ
る。それらのマイクロコンピユータ191,19
2はそれぞれの直列リンク25により相互に接続
される。チヤネル“mile”176aがマイクロ
コンピユータの191の直列リンクの出力チヤネ
ルを形成し、チヤネル“mile”176bがマイ
クロコンピユータ192の直列リンクの入力チヤ
ネルを形成する。第14図において2つのプロセ
スを動作させるために使用される命令シーケンス
とプログラムは、各プロセスにより使用されるチ
ヤネル“mile”のアドレスが、メモリ内のチヤ
ネルではなくて直列リンクのチヤネルのアドレス
であることを除き、第10図を参照して説明した
ものに全体として類似する。 リンク制御ロジツクについての説明 次に、第15,16図を参照して、直列リンク
の入力チヤネルと出力チヤネル用の制御ロジツク
50(第2図)について詳しく説明する。第15
図は出力チヤネル46用の制御ロジツクを示し、
第16図は入力チヤネル45用の制御ロジツクを
示す。 出力するために、リンクの制御ロジツク50
(第2図)が出力プロセス・レジスタ47を用い
てプロセスにまず同期してから、出力データ・レ
ジスタ48からのデータをピン27へ送り、それ
からピン26からの確認応答信号を待ち、次に出
力プロセス・レジスタ47を再び用いてプロセス
に同期する。制御ロジツク50はこのオペレーシ
ヨンをくり返えし行う。 入力するために、リンクの制御ロジツク50
(第2図)は、入力ピン26からデータが到達す
ることをまず待ち、そのデータを入力データ・レ
ジスタ48へ送り、それから入力プロセス・レジ
スタ47(第16図)を用いてプロセスと同期
し、次に入力プロセス・レジスタを用いてプロセ
スと再び同期し、その後で確認応答信号をピン2
7へ送る。制御ロジツク50はこのオペレーシヨ
ンをくり返えし行う。 出力と入力のプロセス・レジスタ47によりと
られる値は、プロセスも制御ロジツクも同期を待
つていないことを示すNILと、制御ロジツクが同
期を待つていることを示すREADYのことがあ
り、あるいは同期を待つているプロセスの作業域
ポインタとすることもできる。 リンクにおいては、各プロセス・レジスタ47
と各データ・レジスタ46がアドレス・デコーダ
193を介してバス16へ接続される。バス16
はアドレス・データおよび制御のための信号線を
含む。制御には“write”信号と、”read”信号
と、“busy”信号とを含む。“busy”信号はCPU
とリンク制御ロジツクが、プロセス・レジスタの
値を同時に変えようとしないようにするために用
いられる。 リンク内の各プロセス・レジスタ47は、プロ
セス・レジスタ内の値がREADY、NILまたは作
業域ポインタのいずれであるかを調べるためのロ
ジツク194を含む。 出力データ・レジスタ48(第15図)はアン
ドゲート195のオアゲート196を介して出力
ピン27に接続される。入力データ・レジスタ4
8(第16図)が入力ピン26に直結される。 リンク内の各プロセス・レジスタには要求ラツ
チ197が組合わされる。CPUがWAIT手続を
実行する時は、全ての要求ラツチの状態が常にテ
ストされる。ある要求ラツチがセツトされたとす
ると、対応するプロセス・レジスタに保持されて
いる作業域ポインタを有するプロセスが、それの
作業域ポインタをリストの末尾に加えることによ
りスケジユールされる。CPUがプロセス・レジ
スタに書き込む時には要求ラツチは常にクリアさ
れる。 このリンクを介して行われるデータの入力と出
力は4状態マシン282,283,284,28
5により制御される。各状態マシンは現在の状態
を保持するための状態レジスタと、プログラム可
能なロジツク・アレイとより成る。このプログラ
ム可能なロジツク・アレイは状態レジスタの値
と、状態マシンへの入力信号とに応答して出力信
号の所定のパターンと、状態レジスタのための新
しい値を発生する。リンクを通つて送られるビツ
トをカウントするためにカウンタ286が用いら
れ、リンクを通つて受けられるビツトをカウント
するために別のカウンタ287が用いられる。 入力および出力のチヤネル制御器とデータ状態
マシンは下記のような入力と出力を有する。入力
または出力の名称は信号の目的を示すものであ
る。
【表】
【表】
【表】
【表】 各状態マシンのシーケンスについて、各マシン
の現在の状態、次の状態、入力、出力について以
下に説明する。 どのような状態においても、「出力」欄に記載
されている出力は1で、他の出力は0である。 「入力」欄に記載されている入力を除き、全て
の入力は無視される。記号、および△はそれ
ぞれブール代数の演算のand、or、notを示すも
のである。
【表】
【表】
【表】
【表】
【表】 第16図に示すように、入力制御ロジツクは、
入力データ状態マシン282の出力端子246に
接続されるフリツプフロツプ280を含む。別の
フリツプフロツプ281が入力データ状態マシン
282の出力端子245に接続される。両方の制
御状態マシンはクロツク28から与えられるクロ
ツクパルスにより制御される。リンクのあるもの
に対して、両方のデータ状態マシンはクロツク2
8からのクロツクパルスによつても制御される。
第15,16図に示すリンクに対しては、データ
状態マシンは、クロツク28に対して位相が関係
するクロツク22からのクロツクパルスにより制
御される。クロツク22はこのリンクを低速で動
作させることができる。動作させられるマイクロ
コンピユータ・ネツトワークの種類に応じて効率
を最高にするために、2種類のクロツク周波数を
得ることができる。マイクロコンピユータが近接
して群にまとめられると、それらのコンピユータ
の間の通信はより高速で行うことができる。その
場合には、より高いクロツク周波数を使用でき
る。マイクロコンピユータが遠く離れて配置さ
れ、低速動作を必要とする場合には、満足できる
通信を確保するために低いクロツク周波数を使用
できる。 入力チヤネルと出力チヤネルにおいて、制御状
態マシンはプロセス・レジスタ47の内容をモニ
タし、適切であればラツチ197をセツトするこ
とによりCPU要求を線199に生ずる。 出力制御状態マシン285は出力プロセス・レ
ジスタ47を用いてまずプロセスに同期させる。
それから、マシン285は“datago”信号21
1を用いて出力データ状態マシン282に、出力
データ・レジスタ48内のデータをピン27を通
じて出力させる。出力データ状態マシン284は
第13a図を参照して説明したようにしてデータ
を送り出し、カウンタ286内のカウントがなく
なるまでレジスタ48内のデータを桁送りする。
カウンタ48内のカウントがなくなると、それは
“datagone”信号205を出力状態マシンへ戻し
て、データの転送が終了したこと、および
“datago”信号を除去すべきことを示す。それか
ら、出力制御状態マシンはラツチ280からの
“ackready”信号264を待ち、入力データ状態
マシン282が、第13b図に示されている確認
応答パケツトをピン26から受けたことを示す。
“ackready”信号264に応答して、出力制御状
態マシンは“acktaken”信号265を出力する。
その信号はラツチ280をリセツトする。そうす
ると出力制御ロジツクは出力プロセス・レジスタ
47を用いて出力プロセスに再び同期させる。 リンクの他の端にあるマイクロコンピユータの
入力データ状態マシン282は、入力ピン26に
現われる“atartbit”を待つ。データ・パケツト
が検出されると、そのマイクロコンピユータの入
力データ状態マシン282が、適切な数のビツト
が受けられたことをカウンタ287が示すまで、
データをデータ・シフトレジスタ48へ桁送り
し、それから「データを受ける」ラツチ281を
セツトする。入力制御状態マシン283は
“dataready”信号262を検出し、それに応答
してラツチ281をセツトする。それから、それ
は入力プロセス・レジスタ47を用いて入力プロ
セスに同期する。その後で、それはプロセス・レ
ジスタ47を用いて入力プロセスに再び同期し、
プロセスがデータ・レジスタ48からデータを得
たことを確認し、次に“ackgo”信号261を用
いて出力データ状態マシンに確認応答パケツトを
ピン27を介して送らせる。出力データ状態マシ
ン284をデータを送らない時は、そのマシンは
スタート・ビツトとストツプ・ビツトを発生す
る。それらのビツトは確認応答パケツト(13a
図)を構成する。マイクロコンピユータのデー
タ・パケツトを送つた入力データ状態マシン28
2は確認応答パケツトを検出し、「確認応答を受
けた」ラツチ280をセツトする。前記したよう
に、送信マイクロコンピユータの出力制御状態マ
シン285はこれを待つており、その信号を検出
するとラツチ280をリセツトして第2の同期オ
ペレーシヨンを行う。出力リンクと入力リンクの
両方におけるリンク・ロジツクの状態は、次の送
信の用意が整うように、いまは通信が行われた以
前と同じである。 チツプとメモリの形成 先に説明したように、本発明のマイクロコンピ
ユータはチツプ(集積回路装置)上に外部メモリ
なしでマイクロコンピユータを動作させることが
できる十分なメモリをRAMの形で有するからと
くに有利である。もつとも、要求があれば外部メ
モリを使用することもできる。プロセツサが形成
されているチツプ上に適切なメモリを形成するの
に十分なスペースをとることにはいろいろと問題
がある。各メモリセルに必要な面積をできるだけ
小さくし、同じチツプ上のプロセツサのような同
期しないで動作している回路からのRAMへのノ
イズ妨害を減少させると同時に、何枚かのシリコ
ンチツプから許容できるマイクロコンピユータ
を、とくに、チツプ上に作られる最大で最高の集
積密度の部品であるメモリを満足できる歩留りで
製造することが必要である。 各メモリの必要とするチツプ面積を小さくする
ために、本発明のこの実施例では、より一般的な
デプリーシヨン(depletion)形トランジスタ負
荷または相補プルアツプ・トランジスタではなく
て、高インピーダンス抵抗負荷を用いる静的セル
(SRAM)を用いる。この実施例で用いる製造技
術は高抵抗率の多結晶シリコンの膜を用いる。そ
の多結晶シリコン中に抵抗負荷が形成される。メ
モリは32KビツトのSRAMで構成できる。
SRAMの各セルは、多結晶シリコン膜内に形成
されるゲートを有するトランジスタより成る。ト
ランジスタのゲートと抵抗負荷は同じ多結晶シリ
コン膜内に、または異なる多結晶シリコン膜内に
形成できる。 抵抗負荷SRAMはそれが形成されているシリ
コン材料内に入りこむ電気的ノイズから妨害を受
けやすく、また、存在することがある少数キヤリ
ヤにより内蔵データがつぶされることが起り得
る。チツプ上の他の回路により発生されるノイズ
と、チツプ上の他の回路から注入された少数キヤ
リヤとからSRAMを遮へいするために、SRAM
は第17図に示すようにシリコンの電気的に分離
された領域に形成される。nチヤネル基板300
に別々のp形井戸301,302が形成される。
RAMセルが、RAMアレイをp形井戸301の
内部に配置することにより、他の回路および関連
する基板ノイズから分離される。これにより
RAMセルは、井戸と基準の間の電位障壁により
基板中に発生された少数キヤリヤから分離され、
井戸の中で発生された少数キヤリヤは基板中に集
められる確率が高い。第17図で、RAMアレイ
はp形の井戸301の中に配置されたnチヤネ
ル・アレイである。周辺回路のnチヤネル・トラ
ンジスタを別のp形井戸302の中に入れること
により、それらのnチヤネル・トランジスタは
RAMアレイから分離される。 この技術はMOSまたはp形井戸CMOS製造技
術と完全に両立する。ここで説明している例にお
いてはp形井戸のCMOSが用いられ、周辺回路
のどのnチヤネル・トランジスタもn形基板の上
に置かれて、井戸と基板の間の電位障壁により
RAMアレイから分離される。メモリ・アレイを
含んでいる各井戸は接地金属により囲まれる。そ
の接地金属は高濃度にドープされたp形領域を介
して周囲のメモリ・アレイ井戸に接触する。メモ
リ・アレイ内には、各セル対ごとに、井戸を介し
て接地されるp計拡散領域が存在する。基板のバ
イアスは不要である。 シリコンチツプからの製品の歩留りを高くする
ためにメモリに冗長性が与えられる。メモリは行
デコーダと列デコーダによりそれぞれアクセスで
きる行と列に分けられる。正常な行と正常な列に
加えて、いくつかの冗長行と冗長列が設けられる
とともに、それら予備の行と列のために予備の行
デコーダと列デコーダが設けられる。予備の行デ
コーダと列デコーダは、試験中に欠陥のあること
がわかつた行または列を、たとえばレーザで開回
路にできるように、ヒユーズを含む。レーザによ
りヒユーズがとばされて、欠陥であることが判明
した列または行の検出器を動作不能とし、欠陥で
ある列または行のアドレスで予備の適切な列デコ
ーダまたは行デコーダをプログラミングすること
により、予備の列または行を使用可能な位置に置
くことができる。 n形井戸CMOS製造技術を使用できるように
するために、以下に説明する別の分離技術を採用
できる。第18図を参照して、抵抗抗率のp形基
板405の上に高抵抗率のp形エピタキシヤル層
が形成される。 セルアレイはこのエピタキシヤル層の領域40
1の中に形成され、高濃度に拡散されたn形井戸
402により完全に囲まれる。領域403内の他
の回路により発生された少数キヤリヤはn形井戸
402へひき寄せられ、そこで無害な多数キヤリ
ヤになり、または高濃度にドープされているp形
基板405において再結合する。pチヤネル・ト
ランジスタがn形井戸404の中に置かれ、そこ
で壁と基板の間の電位障壁により少数キヤリヤは
分離される。 付加事項 本発明は以上説明した実施例に限定されるもの
ではない。たとえば、第2図に示した直列リンク
は別々のプロセス・レジスタ47を有するが、レ
ジスタ47により与えられる機能は、RAM19
内のメモリ場所により行うことができる。この場
合には、機能している直列リンクをCPUは識別
できなければならず、これは各直列リンクの各チ
ヤネルを第2図の同期ロジツクへ別々に接続する
ことにより達成できる。 1組のデータ・レジスタとバスのセツトが第3
図に示されており、ある場合には1台のマイクロ
コンピユータにそのようなセツトを含ませること
が望ましく、または1台のマイクロコンピユータ
に2つのCPUを有することも望ましいことがあ
る。 オペランドの長さを変えるためにpfixとnfixの
機能を用いる前記原理は任意の語長のマイクロコ
ンピユータに応用できる。本発明は、16ビツト語
で動作するマシンに限定されるのでもなければ、
16ビツト・オペランド・レジスタに限定されるの
でもなく、たとえば、8ビツトあるいは8ビツト
の整数倍の語長を有するプロセツサはそれらの命
令を使用できる。本発明は32ビツト語マイクロコ
ンピユータにとくに応用できる。 CPUは、AレジスタとBレジスタに加えて、
CREGまたはDREGのような別のレジスタを評価
スタツク内に含むことができる。そうすると、付
加レジスタを使用できるようにある機能とオペレ
ーシヨンを変更できる。たとえば、 Areg:=BregをSEQ Areg:=Breg Breg:=Creg Creg:=Dreg により置き換えることができる。 Breg:=AregをSEQ Dreg:=Creg Creg:=Breg Breg:=Areg で置き換えることができる。 もちろん、他の機能またはオペレーシヨンを付
加して余分のレジスタを利用できるようにするこ
ともできる。第3図を参照して説明した実施例は
AレジスタとBレジスタのみを含んでいるが、本
発明の好適な実施例においては、スタツク内に3
個のレジスタが用いられる。 以上の説明において、機能セツトは、間接機能
“operate”の使用により選択できるオペレーシヨ
ンの拡張可能なリストが続く複数の機能を機能セ
ツトはリストにまとめる。あらゆる場合に、それ
らの機能とオペレーシヨンは、マイクロコンピユ
ータを動作させるために有用な命令のフオームと
考えられることができる。しかし、第5図に示さ
れているような固定フオーマツトの「命令」に対
して述べた利点を得るために、機能とオペレーシ
ヨンとのセツトを主機能(直接機能と、プレフイ
クシング機能と、間接機能とより成る)セツト
と、二次命令(間接機能の使用により選択できる
オペレーシヨンより成る)のセツトと考えること
ができる。効率を最高にするために、最も一般的
に使用される主命令は、第5図に示されている命
令フオーマツトの4ビツトだけを必要とし、した
がつて、オペランド・レジスタ65にロードさせ
るために使用でき、かつ命令のためのオペランド
として使用される。一般的に用いられる度合の低
い第2の命令に対しては、求められた命令を識別
するために第5図に示されている全部で8ビツト
の命令フオーマツトを必要とする。したがつて、
第5図に示されている固定フオーマツト命令によ
りデータに第2の命令を伴うことはできず、した
がつて、第2の命令はオペランド・レジスタ65
以外のレジスタに保持されているデータで動作す
る。 第4図に示す命令フオーマツトは半分に分けら
れた8ビツトを含むが、他のビツト長を使用でき
ること、機能とデータに分けても2つの部分のビ
ツト長が必ずしも等しくなるものではないことが
わかるであろう。 以上説明した本発明は、マイクロコンピユータ
の効率とスループツトを劇的に向上させる組合せ
を提供するものである。一定フオーマツトの命令
を用い、最もよく用いられる機能は直接利用で
き、かつ他の機能は間接的に利用できるような機
能セツトを有し、プロセスの間の通信とプロセス
間の同期のために構成し、マイクロコンピユータ
間の点−点通信を行えるようにし、各マイクロコ
ンピユータのチツプと同じチツプ上にメモリを設
けることにより、本発明の種々の面によるマイク
ロコンピユータは1秒間に1000万個の命令を処理
する速度を達成できる。わずかに約25.4×50.8cm
(10×20インチ)のボードに納められるアレイが
1000万命令/秒の速度を達成できるのである。
OCCAM(商標)を用いるTransputer(商標)マ
イクロコンピユータ・アレイは、たとえば
PASCALを用いるモトローラ(Motorola)
68000より2桁も高速である。OCCAMでプログ
ラムされた1台のTransputerは、PASCALを用
いる1台の68000マイクロコンピユータより約2
〜3倍速い。先行技術においては、マイクロコン
ピユータがアレイ状に加え合わされると、性能の
向上率はプロセツサ数の増加とともにしだいに低
下するが、本発明のマイクロコンピユータを用い
ると、性能はプロセツサの数に比例して向上す
る。このように、本発明は先行技術よりも性能を
劇的に向上させることがわかるであろう。
【図面の簡単な説明】
第1図は本発明のマイクロコンピユータの主な
特徴を示すブロツク図、第2図は第1図に示すい
くつかの部品、とくにメモリと、外部通信用の直
列リンクの詳しいブロツク図、第3図は中央処理
装置のレジスタとデータ路および演算論理装置、
ならびに中央処理装置とマイクロコンピユータの
他のユニツトの間のインタフエイスをとくに示す
詳しいブロツク図、第4図はメモリ内の作業域の
使用を示す略図、第5図はこのマイクロコンピユ
ータで使用される命令のフオームを示す略図、第
6図は複数のタイミング制御信号の相対的なタイ
ミング波形図、第7図はタイミング制御信号発生
の様子を示すブロツク図、第8図は第1〜3図の
マイクロコンピユータの可変長オペランドによる
動作を示すブロツク図、第9図a〜eは同じマイ
クロコンピユータにより実行される2つのプロセ
スの間の2語チヤネルを用いる通信の1つのやり
方における引き続くオペレーシヨンを示す略図、
第10図は1台のマイクロコンピユータにおける
2つの通信プロセスのオペレーシヨンを示す図、
第11図は2台のマイクロコンピユータの間の直
列リンク接続の詳細を含む、相互に接続されたマ
イクロコンピユータのネツトワーク図、第12図
は異なるマイクロコンピユータで実行される2つ
のプロセスの間の直列リンクを介する通信を行う
ための一連のオペレーシヨンを示す略図、第13
a,13b図は2台のマイクロコンピユータの間
の直列リンクを介する通信のためのデータ・パケ
ツトと確認応答パケツトのフオーマツト図、第1
4図は相互に接続された2台のマイクロコンピユ
ータにおける第10図の同じ2つの通信プロセス
の動作を示すブロツク図、第15図は1つの出力
直列リンクの論理図、第16図は1つの入力直列
リンクの論理図、第17図は第1図のマイクロコ
ンピユータに使用できるチツプの構造図、第18
図は第1図のマイクロコンピユータに使用できる
別のチツプ構造図である。 10……同期ロジツク、12……CPU、13,
20……ROM、14……メモリ・インタフエイ
ス、15……インタフエイス制御ロジツク、19
……RAM、23…外部メモリ・インタフエイ
ス、25……直列リンク、47……プロセス・レ
ジスタ、48……データ・レジスタ、50……制
御ロジツク、56……レジスタバス制御スイツ
チ、64……デコーダ、154〜157……遅延
器、193……アドレス・デコーダ、282……
出力制御状態マシン、28……ビツト・カウン
タ。

Claims (1)

  1. 【特許請求の範囲】 1 メモリとプロセツサとを備え、前記プロセツ
    サによつて逐次実行するための複数の命令より成
    るプログラムに応答するマイクロコンピユータで
    あつて、各命令は機能ビツトを有する部分と非機
    能ビツトを有する別な部分とを備え、前記機能ビ
    ツトは1組の選択可能な機能のうちの1つを指定
    するビツトであり、 前記プロセツサは、 (a) 命令によつて与えられるデータを保持するた
    めのデータ保持器と、 (b) データ転送のために用いられるデータ転送器
    と、 (c) 各命令を受けるために前記データ転送器に接
    続されたデータ受信器と、 (d) 前記データ保持器、前記データ転送器、およ
    び前記データ受信器に接続された制御器と、 を備え、 前記1組の機能は、1つのプリフイクシング機
    能と他の機能とを含み、前記制御器は、前記プリ
    フイクシング機能を指定する命令に応答して、前
    記命令の前記非機能部分を前記データ保持器内の
    第1の重みをもつた位置にロードし、かつ、前記
    制御器は、別な機能を指定する命令に応答して、
    前記命令の前記非機能部分を前記データ保持器内
    の前記第1の重みをもつた位置とは異なつた第2
    の重みをもつた位置にロードし、別々の命令から
    得た値の連結を可能とし可変ビツト長の値を累積
    させることを特徴とするマイクロコンピユータ。 2 特許請求の範囲第1項に記載のマイクロコン
    ピユータであつて、制御器が、1つの命令の非機
    能部分を前記データ保持器内の第1のビツト位置
    セツトにロードし、かつ、プリフイクシング機能
    に応答して前記第1のビツト位置セツトの内容を
    異なつた重みをもつた第2のビツト位置セツトに
    転送するように構成され、後続する命令に関連し
    て新たに発生した値を前記第1のビツト位置セツ
    トに付加することを可能としたことを特徴とする
    特許請求の範囲第1項記載のマイクロコンピユー
    タ。 3 可変長パラメータの発生を可能とするマイク
    ロコンピユータの動作方法であつて、 それぞれ機能部分と非機能部分とを有する第1
    の種類の命令を与える過程と、前記第1の種類の
    各命令に対して前記機能部分を複号して第1の群
    の機能のどの機能を実行するかを決定する過程
    と、前記命令の前記非機能部分を前記第1の種類
    の命令に適用し、前記第1の群の前記決定された
    機能を実行する過程と、有し、 (1) 機能部分と非機能部分とを有する第2の種類
    の命令を与える過程と、 (2) 前記第2の種類の命令の前記機能部分を復号
    し、これに応答して、前記第2の種類の前記命
    令の非機能部分を異なる重みの位置に配置し、
    別な命令の非機能部分との連結を可能にする過
    程と、 (3) 前記第2の種類の最初の命令と前記第1の種
    類の最後の命令とを有する命令シーケンスを実
    行し、前記シーケンス内の命令の非機能部分を
    連結することによつて連結したパラメータを形
    成し、前記連結したパラメータを用いて前記最
    後の命令を実行する過程と、 を備えることを特徴とするマイクロコンピユータ
    の動作方法。 4 可変長パラメータの発生を可能とするマイク
    ロコンピユータの動作方法であつて、 それぞれ機能部分と非機能部分とを有する第1
    の種類の命令を与える過程と、前記第1の種類の
    各命令に対して前記機能部分を復号して第1の群
    の機能のどの機能を実行するかを決定する過程
    と、前記命令の前記非機能部分を前記第1の種類
    の命令に適用し、前記第1の群の前記決定された
    機能を実行する過程と、を有し、 (1) 機能部分と非機能部分とを有する第2の種類
    の命令を与える過程と、 (2) 前記第2の種類の命令の前記機能部分を復号
    し、これに応答して、前記第2の種類の前記命
    令の非機能部分を異なる重みの位置に配置し、
    別な命令の非機能部分との連結を可能にする過
    程と、 (3) 前記第2の種類の最初の命令と前記第1の種
    類の最後の命令とを有する命令シーケンスを実
    行し、前記シーケンス内の命令の非機能部分を
    連結することによつて連結したパラメータを形
    成し、前記連結したパラメータを用いて前記最
    後の命令を実行する過程と、 を備え、 前記第2の種類の命令の連続に応答して、その
    間に前記第1の種類の命令を一切受けとることな
    く、前記第2の種類の複数の命令の非機能部分お
    よび前記第1の種類の命令の非機能部分の多重連
    結を形成する過程を更に備えることを特徴とする
    マイクロコンピユータの動作方法。 5 可変長パラメータの発生を可能とするマイク
    ロコンピユータの動作方法であつて、 それぞれ機能部分と非機能部分とを有する第1
    の種類の命令を与える過程と、前記第1の種類の
    各命令に対して前記機能部分を復号して第1の群
    の機能のどの機能を実行するかを決定する過程
    と、前記命令の前記非機能部分を前記第1の種類
    の命令に適用し、前記第1の群の前記決定された
    機能を実行する過程と、有し、 (1) 機能部分と非機能部分とを有する第2の種類
    の命令を与える過程と、 (2) 前記第2の種類の命令の前記機能部分を複合
    し、これに応答して、前記第2の種類の前記命
    令の非機能部分を異なる重みの位置に配置し、
    別な命令の非機能部分との連結を可能にする過
    程と、 (3) 前記第2の種類の最初の命令と前記第1の種
    類の最後の命令とを有する命令シーケンスを実
    行し、前記シーケンス内の命令の非機能部分を
    連結することによつて連結したパラメータを形
    成し、前記連結したパラメータを用いて前記最
    後の命令を実行する過程と、 を備え、 第1および第2の部分を有する第3の種類の命
    令を与える過程と、 前記第2の部分がオペランドでなく、またオペ
    ランドが得られる位置を示したアドレスでもない
    ことを示すように前記第1の部分をデコードし、
    前記第3の種類の命令の一部を構成しないデータ
    についてシステムにより実行されるべき、オペレ
    ーシヨンを決定するために前記第2の部分を用い
    る過程と、を更に備えることを特徴とするマイク
    ロコンピユータの動作方法。
JP58221452A 1982-11-26 1983-11-26 コンピユ−タおよびコンピユ−タ装置を動作させる方法 Granted JPS59133647A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB8233733 1982-11-26
GB8233733 1982-11-26

Publications (2)

Publication Number Publication Date
JPS59133647A JPS59133647A (ja) 1984-08-01
JPH0470652B2 true JPH0470652B2 (ja) 1992-11-11

Family

ID=10534539

Family Applications (7)

Application Number Title Priority Date Filing Date
JP58221451A Granted JPS59149543A (ja) 1982-11-26 1983-11-26 コンピユ−タおよびコンピユ−タ装置を動作させる方法
JP58221452A Granted JPS59133647A (ja) 1982-11-26 1983-11-26 コンピユ−タおよびコンピユ−タ装置を動作させる方法
JP58221453A Expired - Lifetime JPH06101042B2 (ja) 1982-11-26 1983-11-26 マイクロコンピユ−タ
JP58221455A Expired - Lifetime JP2502960B2 (ja) 1982-11-26 1983-11-26 マイクロコンピュ−タ、ならびにマイクロコンピユ−タおよびマイクロコンピユ−タ・ネットワ−クを動作させる方法
JP58221454A Expired - Lifetime JPH087739B2 (ja) 1982-11-26 1983-11-26 マイクロコンピュータおよびそのネットワークならびに複数のマイクロコンピュータにおけるプロセス間のデータ通信を行う方法
JP5225198A Expired - Lifetime JP2509453B2 (ja) 1982-11-26 1993-08-18 マイクロコンピュ―タにおけるオンチップおよびオフチッププロセス間通信を選択する方法ならびにマイクロコンピュ―タ
JP5342376A Expired - Lifetime JP2688320B2 (ja) 1982-11-26 1993-12-14 集積回路チップ

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP58221451A Granted JPS59149543A (ja) 1982-11-26 1983-11-26 コンピユ−タおよびコンピユ−タ装置を動作させる方法

Family Applications After (5)

Application Number Title Priority Date Filing Date
JP58221453A Expired - Lifetime JPH06101042B2 (ja) 1982-11-26 1983-11-26 マイクロコンピユ−タ
JP58221455A Expired - Lifetime JP2502960B2 (ja) 1982-11-26 1983-11-26 マイクロコンピュ−タ、ならびにマイクロコンピユ−タおよびマイクロコンピユ−タ・ネットワ−クを動作させる方法
JP58221454A Expired - Lifetime JPH087739B2 (ja) 1982-11-26 1983-11-26 マイクロコンピュータおよびそのネットワークならびに複数のマイクロコンピュータにおけるプロセス間のデータ通信を行う方法
JP5225198A Expired - Lifetime JP2509453B2 (ja) 1982-11-26 1993-08-18 マイクロコンピュ―タにおけるオンチップおよびオフチッププロセス間通信を選択する方法ならびにマイクロコンピュ―タ
JP5342376A Expired - Lifetime JP2688320B2 (ja) 1982-11-26 1993-12-14 集積回路チップ

Country Status (4)

Country Link
US (6) US4680698A (ja)
EP (6) EP0111399B1 (ja)
JP (7) JPS59149543A (ja)
DE (6) DE3375844D1 (ja)

Families Citing this family (103)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4680698A (en) * 1982-11-26 1987-07-14 Inmos Limited High density ROM in separate isolation well on single with chip
US5243698A (en) * 1982-11-26 1993-09-07 Inmos Limited Microcomputer
US6414368B1 (en) * 1982-11-26 2002-07-02 Stmicroelectronics Limited Microcomputer with high density RAM on single chip
GB8329509D0 (en) * 1983-11-04 1983-12-07 Inmos Ltd Computer
GB8329510D0 (en) * 1983-11-04 1983-12-07 Inmos Ltd Computer apparatus
JPH0738187B2 (ja) * 1984-03-23 1995-04-26 株式会社日立製作所 Lsiに構成されたマイクロコンピュータ
US4901225A (en) * 1984-04-09 1990-02-13 Kabushiki Kaisha Toshiba Processing apparatus with hierarchical structure for implementing a machine instruction
FR2570525B1 (fr) * 1984-09-20 1986-12-12 Inst Nal Rech Informatiq Procede et dispositif electronique pour l'execution repartie d'une activite entre plusieurs sites differents
US4989133A (en) * 1984-11-30 1991-01-29 Inmos Limited System for executing, scheduling, and selectively linking time dependent processes based upon scheduling time thereof
GB8521672D0 (en) * 1985-08-30 1985-10-02 Univ Southampton Data processing device
US4720780A (en) * 1985-09-17 1988-01-19 The Johns Hopkins University Memory-linked wavefront array processor
EP0232859A3 (en) * 1986-01-27 1989-08-30 International Business Machines Corporation Processor intercommunication network
US4736321A (en) * 1986-05-05 1988-04-05 International Business Machines Corporation Communication method between an interactive language processor workspace and external processes
JPH0731662B2 (ja) * 1986-07-15 1995-04-10 富士通株式会社 マルチプロセッサシステム
GB8618060D0 (en) * 1986-07-24 1986-12-17 Gec Avionics Data processing apparatus
EP0260793A3 (en) * 1986-07-24 1990-03-14 Gec Avionics Limited Bidirectional data bus
US5123093A (en) * 1987-01-16 1992-06-16 Hitachi, Ltd. Operational processor for performing a memory access and an operational process in parallel
US5276892A (en) * 1987-02-24 1994-01-04 Digital Equipment Corporation Destination control logic for arithmetic and logic unit for digital data processor
US5133064A (en) 1987-04-27 1992-07-21 Hitachi, Ltd. Data processing system generating clock signal from an input clock, phase locked to the input clock and used for clocking logic devices
DE3726192A1 (de) * 1987-08-06 1989-02-16 Otto Mueller Stacksteuerung
US4961133A (en) * 1987-11-06 1990-10-02 Visystems, Inc. Method for providing a virtual execution environment on a target computer using a virtual software machine
US6112287A (en) 1993-03-01 2000-08-29 Busless Computers Sarl Shared memory multiprocessor system using a set of serial links as processors-memory switch
JP2752076B2 (ja) * 1988-02-23 1998-05-18 株式会社東芝 プログラマブル・コントローラ
DE3812823A1 (de) * 1988-04-16 1989-11-02 Asea Brown Boveri Mikrocomputer-verbundnetz
WO1990003004A1 (en) * 1988-09-02 1990-03-22 Dallas Semiconductor Corporation Multiport memory system
US5012404A (en) * 1988-10-28 1991-04-30 United Technologies Corporation Integrated circuit remote terminal stores interface for communication between CPU and serial bus
DE69030573D1 (de) * 1989-01-17 1997-05-28 Fujitsu Ltd Ablaufsteuerung zur decodierung von befehlen variabler länge für ein mikroprozessor
US5475631A (en) * 1989-03-09 1995-12-12 Micron Technology, Inc. Multiport RAM based multiprocessor
US5546592A (en) * 1989-06-26 1996-08-13 Ncr Corporation System and method for incrementing memory addresses in a computer system
US5440749A (en) * 1989-08-03 1995-08-08 Nanotronics Corporation High performance, low cost microprocessor architecture
US5247658A (en) * 1989-10-31 1993-09-21 Microsoft Corporation Method and system for traversing linked list record based upon write-once predetermined bit value of secondary pointers
US5303358A (en) * 1990-01-26 1994-04-12 Apple Computer, Inc. Prefix instruction for modification of a subsequent instruction
IL93239A (en) * 1990-02-01 1993-03-15 Technion Res & Dev Foundation High flow-rate synchronizer/schedular apparatus for multiprocessors
US6751696B2 (en) * 1990-04-18 2004-06-15 Rambus Inc. Memory device having a programmable register
FR2661526B1 (fr) * 1990-04-27 1994-09-16 Francois Gernelle Machine multiprocesseur symetrique a niveau de lien serre.
JP3083547B2 (ja) * 1990-07-12 2000-09-04 株式会社日立製作所 半導体集積回路装置
JPH04149642A (ja) * 1990-10-08 1992-05-22 Canon Inc 情報処理装置
JPH04156613A (ja) * 1990-10-20 1992-05-29 Fujitsu Ltd 命令バッファ装置
JPH04172533A (ja) * 1990-11-07 1992-06-19 Toshiba Corp 電子計算機
JPH05113870A (ja) * 1991-10-23 1993-05-07 Mitsubishi Electric Corp ソート処理プロセツサ
AU2918092A (en) * 1991-11-01 1993-06-07 Keming W. Yeh Portable device having data storage capability for transferring data between a portable computer and a desktop computer
JPH05197545A (ja) * 1991-12-10 1993-08-06 Mitsubishi Electric Corp マイクロコンピュータ
US6256642B1 (en) 1992-01-29 2001-07-03 Microsoft Corporation Method and system for file system management using a flash-erasable, programmable, read-only memory
JPH05265975A (ja) * 1992-03-16 1993-10-15 Hitachi Ltd 並列計算処理装置
GB2266606B (en) * 1992-04-27 1996-02-14 Intel Corp A microprocessor with an external command mode
GB2266605B (en) * 1992-04-27 1995-10-11 Intel Corp Microprocessor having a run/stop pin for accessing an idle mode
US5353420A (en) * 1992-08-10 1994-10-04 Intel Corporation Method and apparatus for decoding conditional jump instructions in a single clock in a computer processor
US6951019B1 (en) * 1992-09-30 2005-09-27 Apple Computer, Inc. Execution control for processor tasks
GB2273591A (en) * 1992-12-18 1994-06-22 Network Systems Corp Microcomputer control systems for interprogram communication and scheduling methods
CA2107046A1 (en) * 1993-01-08 1994-07-09 James Allan Kahle Method and system for increased instruction dispatch efficiency in superscalar processor system
US5548767A (en) * 1993-10-06 1996-08-20 Intel Corporation Method and apparatus for streamlined handshaking between state machines
US5712664A (en) * 1993-10-14 1998-01-27 Alliance Semiconductor Corporation Shared memory graphics accelerator system
JPH07129486A (ja) * 1993-10-29 1995-05-19 Mitsubishi Electric Corp シリアル通信回路
WO1995035572A1 (en) * 1994-06-20 1995-12-28 Neomagic Corporation Graphics controller integrated circuit without memory interface
US5590356A (en) * 1994-08-23 1996-12-31 Massachusetts Institute Of Technology Mesh parallel computer architecture apparatus and associated methods
JP3000857B2 (ja) * 1994-08-31 2000-01-17 松下電工株式会社 プログラマブルコントローラ
WO1996016497A1 (en) * 1994-11-21 1996-05-30 Oracle Corporation Transferring binary large objects (blobs) in a network environment
GB2308686A (en) * 1995-12-20 1997-07-02 British Aerospace Integrated circuits for multi-tasking support in single or multiple processor networks
JP3711422B2 (ja) 1995-12-20 2005-11-02 セイコーエプソン株式会社 情報処理回路
US7253557B2 (en) * 1996-02-08 2007-08-07 Bright Solutions, Inc. Light source provided with a housing enclosing voltage regulator means and method of manufacturing thereof
JP3008843B2 (ja) * 1996-02-28 2000-02-14 日本電気株式会社 半導体記憶装置
US6067610A (en) * 1996-07-29 2000-05-23 Motorola, Inc. Method and data processor for synchronizing multiple masters using multi-bit synchronization indicators
US5991825A (en) * 1997-07-11 1999-11-23 International Business Machines Corporation System for handling missed revolution in a disk drive by aborting the execution of primary command and executing secondary command if a missed revolution occurs
US6212544B1 (en) 1997-10-23 2001-04-03 International Business Machines Corporation Altering thread priorities in a multithreaded processor
US6105051A (en) * 1997-10-23 2000-08-15 International Business Machines Corporation Apparatus and method to guarantee forward progress in execution of threads in a multithreaded processor
US6567839B1 (en) 1997-10-23 2003-05-20 International Business Machines Corporation Thread switch control in a multithreaded processor system
US6076157A (en) * 1997-10-23 2000-06-13 International Business Machines Corporation Method and apparatus to force a thread switch in a multithreaded processor
US6697935B1 (en) 1997-10-23 2004-02-24 International Business Machines Corporation Method and apparatus for selecting thread switch events in a multithreaded processor
US6075742A (en) * 1997-12-31 2000-06-13 Stmicroelectronics, Inc. Integrated circuit for switching from power supply to battery, integrated latch lock, and associated method for same
JPH11212909A (ja) * 1998-01-29 1999-08-06 Mitsubishi Electric Corp シリアルi/o内蔵の半導体装置
WO1999061985A1 (en) * 1998-05-26 1999-12-02 The Dow Chemical Company Distributed computing environment using real-time scheduling logic and time deterministic architecture
US6748451B2 (en) 1998-05-26 2004-06-08 Dow Global Technologies Inc. Distributed computing environment using real-time scheduling logic and time deterministic architecture
US6338132B1 (en) * 1998-12-30 2002-01-08 Intel Corporation System and method for storing immediate data
US6553460B1 (en) 1999-10-01 2003-04-22 Hitachi, Ltd. Microprocessor having improved memory management unit and cache memory
US6412043B1 (en) 1999-10-01 2002-06-25 Hitachi, Ltd. Microprocessor having improved memory management unit and cache memory
US6629207B1 (en) 1999-10-01 2003-09-30 Hitachi, Ltd. Method for loading instructions or data into a locked way of a cache memory
US6772325B1 (en) * 1999-10-01 2004-08-03 Hitachi, Ltd. Processor architecture and operation for exploiting improved branch control instruction
US6598128B1 (en) 1999-10-01 2003-07-22 Hitachi, Ltd. Microprocessor having improved memory management unit and cache memory
US7149878B1 (en) * 2000-10-30 2006-12-12 Mips Technologies, Inc. Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values
GB2370380B (en) 2000-12-19 2003-12-31 Picochip Designs Ltd Processor architecture
US7711926B2 (en) * 2001-04-18 2010-05-04 Mips Technologies, Inc. Mapping system and method for instruction set processing
US6826681B2 (en) * 2001-06-18 2004-11-30 Mips Technologies, Inc. Instruction specified register value saving in allocated caller stack or not yet allocated callee stack
DE10131084A1 (de) * 2001-06-27 2003-01-09 Klaus Schleisiek Vorrichtung zur Datenverarbeitung
US7107439B2 (en) * 2001-08-10 2006-09-12 Mips Technologies, Inc. System and method of controlling software decompression through exceptions
US7254696B2 (en) * 2002-12-12 2007-08-07 Alacritech, Inc. Functional-level instruction-set computer architecture for processing application-layer content-service requests such as file-access requests
US7299099B1 (en) * 2004-02-18 2007-11-20 Divelbiss Corporation Programmable logic controller contained on a chip
US20060065946A1 (en) * 2004-09-30 2006-03-30 Texas Instruments, Inc. Multi-doped semiconductor e-fuse
US7327044B2 (en) 2005-01-21 2008-02-05 Fox Electronics Integrated circuit package encapsulating a hermetically sealed device
DE102005055000A1 (de) * 2005-11-18 2007-05-24 Airbus Deutschland Gmbh Modulares Avioniksystem eines Flugzeuges
US20070189160A1 (en) * 2006-02-14 2007-08-16 Itamar Landau Method and system for randomized puncturing in mobile communication systems
JP2009048306A (ja) * 2007-08-15 2009-03-05 Tokyo Metropolitan Univ 並列処理アーキテクチャおよびそれを用いた並列処理プロセッサ
GB2454865B (en) 2007-11-05 2012-06-13 Picochip Designs Ltd Power control
GB2459674A (en) * 2008-04-29 2009-11-04 Picochip Designs Ltd Allocating communication bandwidth in a heterogeneous multicore environment
GB2470037B (en) 2009-05-07 2013-07-10 Picochip Designs Ltd Methods and devices for reducing interference in an uplink
GB2470771B (en) 2009-06-05 2012-07-18 Picochip Designs Ltd A method and device in a communication network
GB2470891B (en) 2009-06-05 2013-11-27 Picochip Designs Ltd A method and device in a communication network
GB2474071B (en) 2009-10-05 2013-08-07 Picochip Designs Ltd Femtocell base station
GB2482869B (en) 2010-08-16 2013-11-06 Picochip Designs Ltd Femtocell access control
GB2486737B (en) * 2010-12-24 2018-09-19 Qualcomm Technologies Int Ltd Instruction execution
GB2486740B (en) * 2010-12-24 2019-02-13 Qualcomm Technologies Int Ltd Encapsulated instruction set
GB2489716B (en) 2011-04-05 2015-06-24 Intel Corp Multimode base system
GB2489919B (en) 2011-04-05 2018-02-14 Intel Corp Filter
GB2491098B (en) 2011-05-16 2015-05-20 Intel Corp Accessing a base station

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS54129944A (en) * 1978-03-31 1979-10-08 Toshiba Corp Arithmetic controller

Family Cites Families (67)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3287703A (en) * 1962-12-04 1966-11-22 Westinghouse Electric Corp Computer
US3364472A (en) * 1964-03-06 1968-01-16 Westinghouse Electric Corp Computation unit
US3541518A (en) * 1967-09-27 1970-11-17 Ibm Data handling apparatus employing an active storage device with plural selective read and write paths
US3582899A (en) * 1968-03-21 1971-06-01 Burroughs Corp Method and apparatus for routing data among processing elements of an array computer
US3618045A (en) * 1969-05-05 1971-11-02 Honeywell Inf Systems Management control subsystem for multiprogrammed data processing system
US3643227A (en) * 1969-09-15 1972-02-15 Fairchild Camera Instr Co Job flow and multiprocessor operation control system
US3657705A (en) * 1969-11-12 1972-04-18 Honeywell Inc Instruction translation control with extended address prefix decoding
JPS485374U (ja) * 1971-06-04 1973-01-22
DE2241600A1 (de) * 1971-08-26 1973-03-01 Dionics Inc Hochspannungs-p-n-uebergang und seine anwendung in halbleiterschaltelementen, sowie verfahren zu seiner herstellung
US3766532A (en) * 1972-04-28 1973-10-16 Nanodata Corp Data processing system having two levels of program control
US3805247A (en) * 1972-05-16 1974-04-16 Burroughs Corp Description driven microprogrammable multiprocessor system
US3815095A (en) * 1972-08-29 1974-06-04 Texas Instruments Inc General-purpose array processor
US3839705A (en) * 1972-12-14 1974-10-01 Gen Electric Data processor including microprogram control means
US3993934A (en) * 1973-05-29 1976-11-23 Ibm Corporation Integrated circuit structure having a plurality of separable circuits
US4109310A (en) * 1973-08-06 1978-08-22 Xerox Corporation Variable field length addressing system having data byte interchange
US4025904A (en) * 1973-10-19 1977-05-24 Texas Instruments Incorporated Programmed allocation of computer memory workspace
JPS5218087B2 (ja) * 1973-10-30 1977-05-19
FR2253421A5 (ja) * 1973-11-30 1975-06-27 Honeywell Bull Soc Ind
FR2253428A5 (ja) * 1973-11-30 1975-06-27 Honeywell Bull Soc Ind
US4130865A (en) * 1974-06-05 1978-12-19 Bolt Beranek And Newman Inc. Multiprocessor computer apparatus employing distributed communications paths and a passive task register
DE2440390B2 (de) * 1974-08-23 1976-10-07 Philips Patentverwaltung Gmbh, 2000 Hamburg Elektronischer rechner
US3980992A (en) * 1974-11-26 1976-09-14 Burroughs Corporation Multi-microprocessing unit on a single semiconductor chip
US3976976A (en) * 1975-04-04 1976-08-24 The United States Of America As Represented By The Secretary Of The Navy Method and means to access and extended memory unit
JPS5931744B2 (ja) * 1975-12-01 1984-08-03 インテル・コ−ポレ−シヨン Mosデジタルコンピユ−タ
GB1540923A (en) * 1975-12-01 1979-02-21 Intel Corp Programmable single chip mos computer
JPS5841538B2 (ja) * 1975-12-04 1983-09-13 株式会社東芝 マルチプロセツサシステム ノ ユウセンセイギヨホウシキ
JPS5299027A (en) * 1976-02-16 1977-08-19 Hitachi Ltd Address designating system
US4047247A (en) * 1976-04-07 1977-09-06 Honeywell Information Systems Inc. Address formation in a microprogrammed data processing system
US4037213A (en) * 1976-04-23 1977-07-19 International Business Machines Corporation Data processor using a four section instruction format for control of multi-operation functions by a single instruction
US4047161A (en) * 1976-04-30 1977-09-06 International Business Machines Corporation Task management apparatus
US4093982A (en) * 1976-05-03 1978-06-06 International Business Machines Corporation Microprocessor system
JPS592941B2 (ja) * 1976-06-30 1984-01-21 日本電気株式会社 コンピユ−タ複合体装置
US4059231A (en) * 1976-07-16 1977-11-22 Grefco, Inc. Method and apparatus for selectively comminuting particles of a frangible material
JPS602709B2 (ja) * 1976-09-14 1985-01-23 富士通株式会社 ビルデイング・ブロツク構造をもつデータ処理システム
US4103329A (en) * 1976-12-28 1978-07-25 International Business Machines Corporation Data processing system with improved bit field handling
US4145739A (en) * 1977-06-20 1979-03-20 Wang Laboratories, Inc. Distributed data processing system
US4191996A (en) * 1977-07-22 1980-03-04 Chesley Gilman D Self-configurable computer and memory system
US4320455A (en) * 1978-01-09 1982-03-16 Honeywell Information Systems Inc. Queue structure for a data processing system
JPS54107278A (en) * 1978-02-10 1979-08-22 Hitachi Ltd Semiconductor device
US4223380A (en) * 1978-04-06 1980-09-16 Ncr Corporation Distributed multiprocessor communication system
US4270170A (en) * 1978-05-03 1981-05-26 International Computers Limited Array processor
US4179738A (en) * 1978-06-23 1979-12-18 International Business Machines Corporation Programmable control latch mechanism for a data processing system
US4247892A (en) * 1978-10-12 1981-01-27 Lawrence Patrick N Arrays of machines such as computers
US4229790A (en) * 1978-10-16 1980-10-21 Denelcor, Inc. Concurrent task and instruction processor and method
US4433376A (en) * 1978-10-31 1984-02-21 Honeywell Information Systems Inc. Intersystem translation logic system
JPS5585039A (en) * 1978-12-22 1980-06-26 Hitachi Ltd Semiconductor integrated circuit
US4258419A (en) * 1978-12-29 1981-03-24 Bell Telephone Laboratories, Incorporated Data processing apparatus providing variable operand width operation
US4349870A (en) * 1979-09-05 1982-09-14 Motorola, Inc. Microcomputer with programmable multi-function port
US4587542A (en) * 1979-10-11 1986-05-06 Texas Instruments Incorporated Guard ring for reducing pattern sensitivity in MOS/LSI dynamic RAM
JPS57768A (en) * 1980-06-04 1982-01-05 Hitachi Ltd Message transmission and reception system between processor
US4346459A (en) * 1980-06-30 1982-08-24 Inmos Corporation Redundancy scheme for an MOS memory
JPS5753971A (en) * 1980-09-17 1982-03-31 Toshiba Corp Complementary type semiconductor ic device
US4450519A (en) * 1980-11-24 1984-05-22 Texas Instruments Incorporated Psuedo-microprogramming in microprocessor in single-chip microprocessor with alternate IR loading from internal or external program memories
US4434462A (en) * 1980-11-24 1984-02-28 Texas Instruments Incorporated Off-chip access for psuedo-microprogramming in microprocessor
US4491907A (en) * 1980-12-15 1985-01-01 Texas Instruments Incorporated Plurality of processors sharing the memory, the arithmetic logic unit and control circuitry all on a single semiconductor chip
JPS57117027A (en) * 1981-01-13 1982-07-21 Nec Corp Signal sending and receiving circuit
JPS57154869A (en) * 1981-03-20 1982-09-24 Hitachi Ltd Semiconductor device
US4467420A (en) * 1981-03-20 1984-08-21 Fujitsu Limited One-chip microcomputer
US4394727A (en) * 1981-05-04 1983-07-19 International Business Machines Corporation Multi-processor task dispatching apparatus
JPS57191731A (en) * 1981-05-21 1982-11-25 Nec Corp Operating system for terminal equipment
US4495563A (en) * 1981-07-02 1985-01-22 Texas Instruments Incorporated Microcomputer having separate access to complete microcode words and partial microcode words
US4532587A (en) * 1981-08-26 1985-07-30 Texas Instruments Incorporated Single chip processor connected to an external memory chip
US4482950A (en) * 1981-09-24 1984-11-13 Dshkhunian Valery Single-chip microcomputer
US4494187A (en) * 1982-02-22 1985-01-15 Texas Instruments Incorporated Microcomputer with high speed program memory
US4490785A (en) * 1982-05-07 1984-12-25 Digital Equipment Corporation Dual path bus structure for computer interconnection
US4546454A (en) * 1982-11-05 1985-10-08 Seeq Technology, Inc. Non-volatile memory cell fuse element
US4680698A (en) * 1982-11-26 1987-07-14 Inmos Limited High density ROM in separate isolation well on single with chip

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS54129944A (en) * 1978-03-31 1979-10-08 Toshiba Corp Arithmetic controller

Also Published As

Publication number Publication date
JPH06101042B2 (ja) 1994-12-12
EP0250011B1 (en) 1993-08-11
JP2509453B2 (ja) 1996-06-19
US4967326A (en) 1990-10-30
EP0113516A2 (en) 1984-07-18
JPH0128967B2 (ja) 1989-06-07
JP2502960B2 (ja) 1996-05-29
EP0113178A3 (en) 1984-11-28
EP0113178A2 (en) 1984-07-11
EP0111399B1 (en) 1987-09-16
EP0113516A3 (en) 1984-11-07
EP0113178B1 (en) 1987-09-09
JPS59133650A (ja) 1984-08-01
EP0111399A3 (en) 1984-11-07
EP0250011A2 (en) 1987-12-23
EP0250011A3 (en) 1988-06-01
JPS59149543A (ja) 1984-08-27
US4704678A (en) 1987-11-03
EP0110643B1 (en) 1988-03-02
EP0113516B1 (en) 1988-06-01
DE3373733D1 (en) 1987-10-22
EP0110643A2 (en) 1984-06-13
DE3378083D1 (en) 1988-10-27
JPH06260551A (ja) 1994-09-16
EP0110642A2 (en) 1984-06-13
JPH06342378A (ja) 1994-12-13
EP0110642A3 (en) 1984-11-07
US4680698A (en) 1987-07-14
DE3382708T2 (de) 1994-02-10
JPS59194256A (ja) 1984-11-05
EP0110643A3 (en) 1984-11-07
US5031092A (en) 1991-07-09
US4819151A (en) 1989-04-04
EP0111399A2 (en) 1984-06-20
EP0110642B1 (en) 1988-09-21
DE3375844D1 (en) 1988-04-07
JPS59133647A (ja) 1984-08-01
JPS59133662A (ja) 1984-08-01
DE3373567D1 (en) 1987-10-15
DE3382708D1 (de) 1993-09-16
JPH087739B2 (ja) 1996-01-29
JP2688320B2 (ja) 1997-12-10
US4724517A (en) 1988-02-09
DE3376894D1 (en) 1988-07-07

Similar Documents

Publication Publication Date Title
JPH0470652B2 (ja)
US5243698A (en) Microcomputer
US3978452A (en) System and method for concurrent and pipeline processing employing a data driven network
US5440749A (en) High performance, low cost microprocessor architecture
US6414368B1 (en) Microcomputer with high density RAM on single chip
EP0125044B1 (en) Microcomputer with interprocess communication
US5890009A (en) VLIW architecture and method for expanding a parcel
EP0167241A2 (en) Microprogramme sequence controller
KR920005330B1 (ko) 마이크로컴퓨터 및 이와 상호 접속된 회로망
JPS62159236A (ja) 論理型言語処理装置
JPS59153243A (ja) 排他制御方式

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees