JPH087739B2 - マイクロコンピュータおよびそのネットワークならびに複数のマイクロコンピュータにおけるプロセス間のデータ通信を行う方法 - Google Patents

マイクロコンピュータおよびそのネットワークならびに複数のマイクロコンピュータにおけるプロセス間のデータ通信を行う方法

Info

Publication number
JPH087739B2
JPH087739B2 JP58221454A JP22145483A JPH087739B2 JP H087739 B2 JPH087739 B2 JP H087739B2 JP 58221454 A JP58221454 A JP 58221454A JP 22145483 A JP22145483 A JP 22145483A JP H087739 B2 JPH087739 B2 JP H087739B2
Authority
JP
Japan
Prior art keywords
register
data
chip
output
memory
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
JP58221454A
Other languages
English (en)
Other versions
JPS59133662A (ja
Inventor
マイクル・デイビツド・メイ
Original Assignee
インモス、リミテッド
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=JPH087739(B2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by インモス、リミテッド filed Critical インモス、リミテッド
Publication of JPS59133662A publication Critical patent/JPS59133662A/ja
Publication of JPH087739B2 publication Critical patent/JPH087739B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Microcomputers (AREA)
  • Executing Machine-Instructions (AREA)
  • Multi Processors (AREA)
  • Element Separation (AREA)
  • Semiconductor Integrated Circuits (AREA)

Description

【発明の詳細な説明】
本発明は、マイクロコンピュータに関するものであ
る。 マイクロコンピュータは一般にプロセッサとメモリを
備え、内蔵されているプログラムから得られる一連の命
令に従って動作できる。命令には1組の選択可能な機能
から選択されたいわゆる「機能」が含まれ、その命令に
応答してプロセッサにより実行される動作を定める。プ
ロセッサは他のマイクロコンピュータを含めた外部の周
辺機器と通信を行いたいことがある。その理由から、マ
イクロコンピュータは周辺機器または複数のマイクロコ
ンピュータとのネットワークに接続されることが時にあ
る。これは一般にはマイクロコンピュータの出力ポート
すなわち出力ピンを介して行われており、異なるマイク
ロコンピュータのプロセスの間で通信を行うためには、
それらのポートすなわちピンをプログラミングすること
が一般に必要であった。更に、外部通信を含めた通信は
バスを通じて行うのがマイクロコンピュータにおいては
普通であるが、そうするとマイクロコンピュータの動作
が低くなるという障害が生ずる。 したがって、従来のマイクロコンピュータにはマイク
ロコンピュータの拡張されたネットワークに使用するた
めの満足できるビルディング・ブロックは設けられてい
なかった。ネットワークは一般に動作速度を低下させ、
別にインタフェイス・ハードウェアを必要とする。本発
明の目的は、マイクロコンピュータのネットワーク用の
ビルディング・ブロックとして有用な改良されたマイク
ロコンピュータを得ることである。 本発明の他の目的は、個々のマイクロコンピュータと
同様に動作する相互に接続されたマイクロコンピュータ
のネットワークを得ることである。 本発明の更に他の目的は、並行して動作できる複数の
通信リンクを有する改良したマイクロコンピュータを得
ることである。 本発明の別の目的は、共用バスでは通常生ずる遅延を
避けたリンクを介して他のマイクロコンピュータと通信
できる改良したマイクロコンピュータを得ることであ
る。 本発明の更に別の目的は、多数の他のマイクロコンピ
ュータと通信するように接続できる複数の直列リンクを
有する改良したマイクロコンピュータを得ることであ
る。 本発明の更に別の目的は、別々の通信リンクを介して
通信チャネルを並行に動作させる、他のマイクロコンピ
ュータとの直接接続を可能にする独立した直列リンクを
有するマイクロコンピュータを得ることである。 本発明は、プロセッサとRAMの形態のメモリを同じ集
積回路装置上に有する集積回路装置と、複数のデータビ
ットを格納するためのレジスタをそれぞれ含む複数の通
信リンクとを備え、前記各通信リンクは別のマイクロコ
ンピュータの同様なリンクに独占的に接続するための通
信路を設けるように構成され、それにより各マイクロコ
ンピュータはマイクロコンピュータのネットワークのた
めのビルディング・ブロックを形成するマイクロコンピ
ュータを提供するものである。 また、本発明は、プロセッサとRAMの形態のメモリを
1つの集積回路装置上にそれぞれ備える相互に接続され
たマイクロコンピュータのネットワークであって、各マ
イクロコンピュータは複数の通信リンクを有し、各通信
リンクは接続器によりネットワーク内の別のマイクロコ
ンピュータに相互に接続され、前記各リンクは、それぞ
れのマイクロコンピュータ対のみを相互に接続し、かつ
他のどのマイクロコンピュータまたはメモリとも共用さ
れない点と点の間の接続の部分を形成し、前記各リンク
はリンクを介して送信または受信するデータの複数のビ
ットを保持するための少くとも1つのレジスタを含む相
互に接続されたマイクロコンピュータのネットワークを
提供するものである。 更に、本発明は、同じ集積回路装置上にRAMの形態の
メモリとプロセッサを含み、前記プロセッサは、プロセ
ッサにより逐次実行すべき複数の命令より成るプログラ
ムに応答して、データに基づいていくつかの命令を実行
するように構成され、各命令はプロセッサにより実行す
ることを求められている機能を指定する1組の機能ビッ
トを含み、機能は1組の選択可能な機能の1つであるマ
イクロコンピュータにおいて、 (a) マイクロコンピュータは複数の通信リンクを含
み、各通信リンクは別のマイクロコンピュータの対応す
るリンクにのみ接続するための通信路を設けるように構
成され、前記各通信リンクは通信リンクを介して送信す
る複数のデータビットを格納するためのレジスタと、リ
ンクを介しての同期メッセージの送信に使用するために
リンクの状態を示すポインタ値を受けるための一時的格
納器とを含み、 (b) 前記プロセッサは、 (i) 複数のレジスタと、それらのレジスタとの間で
データの転送を行うために用いるためのデータ転送器
と、 (ii) 各命令を受け、その命令の機能ビットに対応す
る値をレジスタの1つにロードするための手段と、 (iii) 前記データ転送器と前記レジスタを制御し、
前記機能ビットに応答してプロセッサを前記機能ビット
に従って動作させるための制御器と、 を含み、機能セットは、通信リンクを介してのメッセー
ジ送信の同期に用いるために通信リンクのポインタ値を
前記一時的格納器にロードさせることを前記制御器に行
わせる1つまたはそれ以上の機能を含むマイクロコンピ
ュータを提供するものである。 以上説明したマイクロコンピュータのネットワークは
それぞれの通信リンクの間の接続により互いに連結でき
る。2つの一方向点間接続部を含む2台のマイクロコン
ピュータの間の各接続部は各マイクロコンピュータのた
めの入力路と出力路をそれぞれ構成する。このようにし
て、それぞれのマイクロコンピュータの出力ピンと入力
ピンの間の簡単な線接続により拡張されたネットワーク
を構成できる。 なるべくなら、各通信リンクは制御ロジックを含み、
この制御ロジックは前記レジスタからのデータを通信リ
ンクの出力チャネルで送信させ、かつリンクの入力チャ
ネルの前記レジスタにおけるデータの受信を検出するよ
うに構成され、それによりマイクロコンピュータの間の
通信を複数のリンクを介して並行して行うことができる
ようにするとよい。 なるべくなら、前記制御ロジックは各リンクの入力チ
ャネルと出力チャネルのレジスタの状態に応答して、出
力チャネルからデータ・ストリングを送信させるように
構成され、かつ前記制御ロジックはストリングの始めと
終りを示す特殊な値を発生して検出するための手段と、
データ・ストリングの終りを表す前記特殊な値を同じリ
ンクの入力チャネルが受けた時に、出力チャネルに確認
応答信号を発生させるための手段を含むようにする。 なるべくなら、制御ロジックはレジスタの間でプロセ
ッサとは独立にデータ転送を行わせるように構成され、
それによりプロセッサによるプロセッサの実行と並行し
てメッセージの送信を行わせるようにする。 なるべくならマイクロコンピュータのメモリは同じマ
イクロコンピュータについて実行されるプロセスの間の
メッセージ送信のために1つまたはそれ以上の通信チャ
ネルを設け、各チャネルは、前記プロセスの間のメッセ
ージ送信の同期に使用するためのポインタ値を受けるよ
うに構成された少くとも1つの語場所を有し、前記制御
器は機能セットからの選択された機能に応答して、メッ
セージ送信の同期に使用するためのチャネルの状態を示
す前記語場所内のポインタ値を探すように構成するよう
にする。 なるべくなら、前記プロセッサはマイクロコンピュー
タにより実行されるそれぞれのプロセスをそれぞれ示す
ポインタ値を与えるための手段を含み、前記制御器は、
機能セット中の機能に応答して、前記チャネルを介して
通信することを待っているある特定のプロセスを示すポ
インタを通信リンクの前記レジスタにロードするように
構成され、前記レジスタに特殊なポインタ値をロードし
て、そのチャネルを介する通信を待っているプロセスは
ないことを示す手段を含むようにする。 本発明は、プロセッサとメモリおよび複数の通信リン
クを有する集積回路装置をそれぞれ備えるコンピュータ
のアレイ中のプロセスの間のデータを通信する方法にお
いて、アレイ中の相互に接続されている装置の通信リン
クの間に、接続部により相互に接続されている2つの装
置の間のメッセージ送信のためだけに用いられる専用の
接続部を設ける過程と、各リンクを介する入力メッセー
ジの送信と出力メッセージの送信を同期させる過程とを
備え、それにより、メッセージ送信に含まれている各マ
イクロコンピュータのプロセッサによるプロセスの実行
に割込むことなしに、複数のリンクと接続部を介してメ
ッセージ送信を並行して行うことができるコンピュータ
のアレイ中のプロセスの間のデータを通信する方法も提
供するものである。 マイクロコンピュータという用語は、一般に集積回路
装置をベースとする小型コンピュータを指すものである
が、そのコンピュータがどれだけ小型であるかについて
の限界はないことがわかるであろう。 この明細書で説明するマイクロコンピユータはTransp
uter(インモス・インターナシヨナル(Inmos Internat
ional)plcの商標)の例であつて、このTransputerはプ
ロセツサとメモリ、および外部との通信を行うためのリ
ンクを含む1つのシリコンチツプを備えている。このマ
イクロコンピユータは複数の処理を並行して実行できる
とともに、スケジユーリングと、同じチツプ上のプロセ
スの間または異なるチツプ上のプロセスの間の通信を行
うことができる。各マイクロコンピユータはプロセツサ
が設けられているチツプと同じチツプ上に、プログラム
可能なRAMの形のKバイト・メモリを少なくとも1つ有
し、プロセツサはチツプのメモリ中のプログラムに従う
ことができる。このマイクロコンピユータは複数の通信
リンク、ここでは直列リンクと呼ぶ、を有する。この直
列リンクにより、相互に接続されているマイクロコンピ
ユータのネツトワークにマイクロコンピユータを接続し
て、任意の1台のマイクロコンピユータをネツトワーク
のためのビルデイング・ブロツクとして使用できるよう
にすることができる。任意の2台のマイクロコンピユー
タの間の通信は1本または2本の特定のピンの間の接続
を行う直列リンクにより行われる。各接続によりただ2
台のマイクロコンピユータが相互に接続される。各リン
クは他のマイクロコンピユータまたはどの外部メモリと
も共用されない。このマイクロコンピユータには、ネツ
トワーク内のマイクロコンピユータの間のデータ伝送に
おいて同期をとるための手段が設けられ、2台のマイク
ロコンピユータの間のリンクを介する通信を受信マイク
ロコンピユータまたは送信マイクロコンピユータにより
開始できるようにする。 このマイクロコンピユータは、それぞれ2つの部分よ
り成る複数の順次命令を有するプログラムを含む。1つ
の部分は命令の機能を表し、他の部分はオペランド・レ
ジスタにロードされるデータを表す。このようにして、
各命令の機能部分のビツト長は、プロセツサの語長とは
無関係に同じであり、また、プロセツサの語長とは無関
係に機能のフオーマツトと機能ビツト長の一様性が達成
される。このマイクロコンピユータの別の重要な特徴
は、それの動作が簡単で効率的な機能セツトを用いて行
われることである。その機能セツトは最少数のオペラン
ド・レジスタより成る。その機能セツトは、オペランド
・レジスタの内容を基にしてプロセツサを動作させる直
接機能を含む。好適な構成においては、マイクロコンピ
ユータは1つの間接機能と2つのプレフイクシング機能
も含む。間接機能を用いることにより、データレジスタ
の数を増加させず、かつデータレジスタを大型にするこ
となしに、オペレーシヨンを実行するために多数のプロ
セツサ・オペレーシヨンを使用できる。更に、プレフイ
クシング機能を用いることにより可変長オペランドが得
られる。 この例のマイクロコンピユータを使用することによ
り、いくつかのマイクロコンピユータを相互に結合する
ことによつて求められている任意のマイクロコンピユー
タを形成でき、そのようにして形成されたネツトワーク
は任意の1台のマイクロコンピユータと同様に動作す
る。 以下、図面を参照して本発明を詳しく説明する。 構造についての全体的な説明 本発明のマイクロコンピユータの主な要素が、p形井
戸相補MOS技術を用いて1枚のシリコンチツブ11の上に
形成されている様子が第1図に示されている。これにつ
いては第17図を参照して後で詳しく説明する。チツプ上
の部品は第1図に長方形で示されているが、それらの長
方形は部品の相対的な寸法と位置を示すものではないこ
とがわかるであろう。チツブ上には中央処理装置(CP
U)12が設けられる。このCPU12は読出し専用メモリ(RO
M)13を含む。CPU12はメモリ・インタフエイス14を含
む。このメモリ・インタフエイス14はインタフエイス制
御ロジツク15により制御される。CPU12は演算論理ユニ
ツト(ALU)と、レジスタと、データ路とを含む。これ
については第3図を参照して説明する。CPU12とメモリ
・インタフエイス14はバス16に接続される。このバス16
はチツブ11上の要素を相互に接続する。サービス装置17
に複数の入力ピン18が設けられる。入力ピン18には零V
電源ピンと、5V電源ピンと、マイクロコンピユータを定
められた状態にリセツトするためのリセツトピンと、ク
ロツクピン28とが含まれる。このマイクロコンピユータ
には十分な数のメモリがチツプ11上に設けられる。それ
らのメモリはランダム・アクセス・メモリ(RAM)19とR
OM20により表されている。チツプに設けるメモリの数は
1Kバイト以下であつてはならない。というのは、外部メ
モリを使用することなしにプロセツサ12を動作させるこ
とができるのに十分なメモリ容量を必要とするからであ
る。チツプ上のメモリの容量はなるべく少くとも4Kバイ
トにする。チツプ上のRAMとROMの間の区分は、マイクロ
コンピユータに対する特定の要求に適合するように選択
できる。このメモリは冗長領域21も含む(この冗長領域
は米国特許第4346459号明細書、米国特許出願第194613
号または英国特許出願第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はROM20または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,41,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および通信チヤネル4
0〜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図に示すように接続
される。それらのレジスタは次のようなものである。 第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,21)からインタフエイ
ス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つの命令を含む。したがつて、
レジスタ67に保持されている命令ポインタは、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)」と
題する小冊子と、雑誌エレクトロニクス(Electronic
s)1982年11月3日号所載の「プロセス向き言語は分散
処理の要求に適当である(Process−Oriented Language
Meets Demands of Distributed Process−ing)」と題
するテーラー(Taylor)およびウイルソン(Wilson)の
論文とに詳しく記載されている。OCCAM言語は並行処理
にとくに良く適する。ここで説明している本発明の好適
な実施例は並行処理にとくに適するから、この例にOCCA
M言語を用いることは極めて適切である。他言語は適切
なコンパイラとともに使用できる。実際の応用において
は、プログラマは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」へ出力することを意味す
る。 プロセスSKIPは何の作用も行わずに終了する。 2. CONSTRUCT 順次construct、並列construct、条件付constructま
たはオルターネイテイブconstructを形成するためにい
くつかのプロセスを組合わせることができる。construc
t自体はプロセスであつて、別のconstructの構成部とし
て使用できる。あるcost−ructの各構成部プロセスは、
それがそのconstructの部分であることを示すために、
左マージンから更に2つの空白をとつて書かれる。 順次constructは次のようにして書かれる。 構成部プロセスP1,P2,P3…は互いに順次実行される。
各構成部プロセスは1つが終つてから次が開始され、最
終の構成部プロセスが終つからconstructは終る。たと
えば、 SEQ in?x x:=x+1 out!x は、ある値を入力し、その値に1を加え、その結果を出
力する、ことを意味する。 並列constructは により表される。構成部プロセスP1,P2,P3…はいつしよ
に実行されるから、並行プロセスと呼ばれる。全ての構
成部プロセスが終つた後でconstructは終了する。たと
えば、 PAR in?x out!y はxへの入力と、yからa出力をいつしよに行えるよう
にするものである。 並行プロセスはチヤネルを用いて通信する。チヤネル
「c」からの入力と、同じチヤネル「c」への出力がい
つしよに実行されると、入力と出力を行える状態になつ
た時に通信が行われる。値は出力プロセスから入力並行
プロセスへ割当てられ、それから両方の並行プロセスの
実行が継続される。 は、条件1が真であるならばプロセスP1が実行され、さ
もなければ、条件2が真であればプロセスP2が実行され
る…等であることを意味する。このconstructにおいて
はただ1つのプロセスが実行され、実行後にconstruct
は終る。たとえば、 IF x>=0 y:=y+1 x<0 SKIP では、xの値が正である時だけyが大きくなる。オルタ
ネーテイブconstruct は、入力1,2…のうちの1つの準備が整うまで待つこと
を意味する。入力1が最初に準備が整つたとすると入力
1が実行され、それからプロセスP1が実行される。同様
に、入力2が最初に準備が整うと入力2が実行され、そ
れからプロセスP2が実行される。すなわち、ただ1つの
入力が実行され、その後で対応するプロセスが実行さ
れ、それからconstructが終る。たとえば、 ALT count?ANY counter:=counter+1 total?ANY SEQ out!counter counter:=0 では、いずれもチヤネル「count」から信号を入力し、
可変「counter」を1だけ増加し、あるいはチヤネル「t
otal」から交互に入力し、可変「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は VAR v: 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に等しければ真で
ある オペレータ の場合には、結果の各ビツトは下の表に従つてオペラン
ドの対応するビツトから発生される。 NOTオペレータの場合には、結果の各ビツトは、下の
表に従つてオペランドの対応するビツトから発生され
る。 x NOT x 0 1 1 0 オペレータ≪,≫の場合には x≪yは左へyビツト動かされるxの値で、空いたビツ
ト位置は0ビツトで埋められる x≫yは左へyビツト動かされるxの値で、空いたビツ
ト位置は0ビツトで埋められる 以上説明した一般的なOCCAM言語表記を本発明のマイ
クロコンピユータに適用することにする。 レジスタの変数は次のように定義される。 IPTRは命令ポインタ・レジスタ67の内容を表す WPTRは作業域ポインタ・レジスタ73の内容を表す LPTRはリスト・ポインタ・レジスタ74の内容を表す AREGはAレジスタ71の内容を表す BREGはBレジスタ72の内容を表す OREGはオペランド・レジスタ65の内容を表す 1つのレジスタから他のレジスタへの転送は assignment,eq: BREG:=AREG により表される。これは、Aレジスタの内容がBレジス
タへ複写され、Bレジスタの以前の内容に書き換えられ
る。 TRANSPUTER内のメモリは vector: memory により表される。 メモリ内の個々の語は ベクトルeg: memorx〔AREG〕 を下側に記す(subscripting)することにより識別され
る。これは、Aレジスタの内容をアドレスとするメモリ
内の語の内容を意味する。メモリとレジスタの間の転送
は assignment eg: 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〕 目的:外部作業域から値をロードすること。 値のベクトルから値をロードすること。 値をポインタとして用いて(間接的に、この場合にはOR
EG=0)値をロードすること。 ベクトルへの格納 定義:SEQ memory〔BREG+OREG〕:=AREG AREG:=BREG 目的:外部の作業域内の場所に値を格納すること。 値のベクトルに値を格納すること。 値をポインタとして用いて(間接的に、この場合にはOR
EG=0)値を格納すること。 リテラルのロード 定義:SEQ BREG:=AREG AREG:=OREG 目的:値を格納すること。 リテラル加算 定義:AREG:=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) 定義:operate(OREG) 目的:求められているオペレーシヨンを定義するコード
としてオペランド・レジスタ(OREG)の内容を用いてオ
ペレーシヨンを実行すること。 プレフイクシング機能 プレフイツクス(prefix) 定義:OREG:=OREG≪4 目的:0〜15の範囲にない命令オペランドを1つまたはそ
れ以上のプレフイツクス命令を用いて表すことができる
ようにすること。 否定プレフイツクス(negative 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<> as eqz,eqz if A=0… as jnz if A<>0… as eqz,jnz を実行すること。 より大きい(greater) 定義:IF BREG>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) 目的:AとBのビツトについてのAND操作の結果をロード
し、AとBにおける対応するビツトが1にセツトされる
ならば各ビツトを1にセツトし、それ以外では0にセツ
トすること。 2つの真値を論理的にAND操作すること。 論理和(or) 目的: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,jnz,… if A<>B as sub,eqz,jnz,… を実行すること。 プロセス実行(run process) 定義:SEQ memory[AREG−1]:=BREG run(AREG) 目的:プロセスをアクテイブ・プロセス・リストの終り
に加えること。 休止(pause) 定義:SEQ run(WPTR) wait( ) 目的:現在のプロセスの実行を一時的に休止すること。 現在アクテイブ・プロセス・リスト上にあるプロセスの
間でプロセツサ時間を共用すること。 結合(join) 定義:IF memory[AREG]=0 meveto(memory[AREG+1]) memory[AREG]<>0 SEQ memory[AREG]:=memory[AREG]−1 wait( ) 目的:並列プロセスを結合する; 2つの語が用いられる。1つはカウンタであり、他の1
つは作業域へのポインタである。カウントが零に達する
と、作業域が変えられる。 同期(synchronize) 定義:IF memory[AREG]=NIL SEQ memory[AREG]:=WPTR 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桁だけ桁送りすること。 上記の機能セツトは直接機能と、間接機能と、プレフ
イクシング機能とを含むことがわかるであろう。任意の
命令の開始時には、その命令に対して選択された機能と
は無関係に、命令バツフア63内の命令の機能部分を受け
る所定のビツト位置セツトが入力をデコーダ64へ与える
ために用いられ、各命令のデータ部分を表す他の所定の
ビツト位置が、オペランド・レジスタ65の下位4ビツト
位置をロードするために用いられる。その機能が直接機
能であるとすると、オペランド・レジスタ65の内容に対
して選択された機能に従つてプロセツサは作動する。そ
の機能が間接機能であれば、実行すべきオペレーシヨン
の性質を決定するためにオペランド・レジスタ65の内容
が用いられ、他のレジスタに保持されているデータにつ
いてオペレーシヨンが行われる。機能が直接または間接
であるような任意の命令が終ると、オペランド・レジス
タ65は零にクリアされる。その機能がプレフイクス機能
であれば、プロセツサはオペランド・レジスタ65中に存
在するデータを高い桁の位置へ転送し、その後で、その
ために空いた下位桁の位置にその命令のデータ部分をロ
ードする。 各命令の始めに命令ポインタは増加させられる。した
がつて、命令ポインタは次に実行すべき命令を常に指
す。 オペランド・レジスタは種々の目的のために用いられ
る。オペランド・レジスタ65が各命令で受ける「デー
タ」は計算用のリテラル値のこともあれば、間接機能の
場合には求められている機能の定義のこともある。別の
重要な用途は、ある特定の変数の値を見出す場所、また
は格納する場所のアドレスを探すために、ある機能に対
して、オペランド・レジスタ65内のデータ値が作業域・
ポインタ・レジスタ73内のデータに組合わされることで
ある。たとえば、作業域・ポインタ・レジスタ73は現在
のプロセスの作業域ポインタWPTRを含む。これはその作
業域のための基準メモリ・アドレスを指す。変数または
その他のポインタは定義され、作業域ポインタWPTRによ
り指し示されたアドレスから既知量だけずれているその
作業域のアドレス場所に格納される。そのずれは一般に
命令部分により指定され、オペランド・レジスタ65内に
格納される。実際に、作業域命令からのロードと格納
は、WPTRレジスタ73の内容とオペランド・レジスタ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ビツトを
与える。次のマイクロ命令が前のマイナー・サイクルに
より発生される条件の結果として選択されるように、MI
R80の下位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ビツト場所を
オペランドに割当てるが、前記機能セツト内のコード1
4,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〜104へ与えられる対応する制御信号と、
それらの信号の持続時間も示されている。 この場合に用いられるマイクロ語出力制御信号は次の
通りである。 1. OPD NOT 0:これは、真理値表が「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」を有する時はA
LU55からのZバス出力がYバスからデータを受けるが、
真理値表が「0」を有する時はそうではないことを意味
する。 5. Z FROM NOT Y:これは、真理値表が「1」を有する
時はALU55がYバス上の信号を挿入して、Zバスを通す
が、真理値表が「0」を有する時はそうではないことを
意味する。 各マイナー・サイクルにおけるそれら5つの制御信号
の持続時間は第8図に示されている。第8図において、
Sはソース相だけにおける持続時間を示し、Dは宛先相
だけにおける持続時間を示し、S+Dは両方の相におけ
る持続時間を示す。 線100上のマイクロ語制御信号はゲート91と92を動作
させて、Zバスが機能pfixとnfixに応答してオペランド
・レジスタ65にロードしないようにし、他のどの機能も
オペランド・レジスタ65の上位3つの段をゲート92を介
しての入力により零にさせる。全ての命令信号は最後の
マイナー・サイクルで制御信号NEXTを発生する。その信
号は線101へ与えられてオペランド・レジスタ65に次の
オペランドをロードさせる。線102は信号「Y FROM OP
D」を受け、pfixとnfixに対してオペランド・レジスタ
をゲート90を介して接続させる。線103は制御信号「Z F
ROM Y」を受け、pfixの場合にはALU55にYバス上の信号
をZバスへ送らせるが、nfixに対してはそうさせない。
線104は制御信号「Z FROM Y」を受け、nfixの場合には
Yバス上の信号を反転してからALU55を通つてZバスへ
供給できるようにするが、pfixの場合にはそうさせな
い。線100,103,104上の信号は各マイナー・サイクルの
ソース相と宛先相の全体を通じて存在するが、線101上
の信号は宛先相の時だけ存在し、線102上の信号はソー
ス相の時だけ存在する。機能がpfixの時は、真条件に対
応する信号が線100,101,102,103に供給され、このよう
にしてオペランド・レジスタ65の下位部分のオペランド
の4ビツトがALUを通じてオペランド・レジスタ65の次
に高い位の段へ進ませられ、それによりオペランドの別
の4ビツトをオペランド・レジスタ65の下位位置にロー
ドできるようにする。この動作は、オペランドの最高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図に35
として示されている次のプロセスのアドレスにより識別
されている次のプロセスへ動き、それから新しいプロセ
スのためのIPTRをIPTRレジスタ67にロードする。少くと
も1つのプロセス実行が常に存在するように、零プロセ
スが設けられ、他のプロセスがアクテイブでない時はそ
の零プロセスが実行される。 先に定義した手続「実行(run)」、「待機(wai
t)」、「へ移動(moveto)」はスケジユーリングにお
いて使用される。あるプロセスはそれが現在のプロセス
である時、または実行されることを待つているプロセス
の結合されたリスト上にある時に、そのプロセスは「ス
ケジユールされる」。あるプロセスが結合されているリ
ストから外された時に「スケジユールから外される」こ
とになる。スケジユールから外されたプロセスは、他の
プロセスまたは命令がその外されたプロセスをスケジユ
ールに含ませる、すなわち、結合されたリストの末尾に
それを加えるまでは、決して実行されることはない。LP
TRレジスタ74(第3図)はリスト上の最終のプロセスの
ための作業域ポインタを格納するために用いられること
を思い出すであろう。したがつて、プロセスが結合され
たリストに付加されるたびにLPTRレジスタ74を調整せね
ばならない。また、あるプロセスをスケジユールに含め
る場合には、そのプロセスの次にどの命令を実行すべき
かをCPU12は決定できなければならない。これは適正な
命令ポインタIPTRをメモリに格納することにより行われ
る。プロセスが実行中はそのIPTRはIPTRレジスタ76内に
ある。その格納はたとえばメモリ場所36(第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」のオペランドがメモリ場所1000
2にあるものを何でも対象とし、作業域32に対応するプ
ロセスが現在行われる。処理を停止する時は、結合され
ているリストが調べられる。要素85,86は結合されてい
るリストの部分である。次の作業域を指すメモリ場所99
98における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における作業域ポインタ)をメモリ場所LP
TR−2に割当てるから、いまはプロセスwは結合されて
いるリストの終りにある。この点ではLPTRレジスタ74の
内容は最後のプロセスwを指さず、最後から2番目のプ
ロセスを指す。これは、プロセスwのための作業域ポイ
ンタをLPTRレジスタ74に入れる線6において修正され
る。このステツプのために、プロセスwを意図しないの
に削除することなしに、結合されているリストに別のプ
ロセスを付加できる。そのような削除は、LPTRレジスタ
74が更新されない時に起る。第4図を参照して、ただ2
つの処理されているプロセスがあり、かつポインタが12
000である作業域にプロセスwが対応するものとする
と、PROC run(w)が12000をメモリの〔10998〕に入
れ、12000をレジスタ74に入れる。 「待機(wait)」と呼ばれる手続は単独で、またはPR
OC run(w)と組合せて、使用できる。それ自身でその
手続は現在のプロセスをスケジユールから外し、システ
ムが次のプロセスを実行できるようにし、それのプログ
ラムの最初の命令における代りにそのプログラム中の適
切な所でそのプロセスを実行する。ここで、PROC wait
について先に行つた定義を参照することにする。PROC
「wait」が呼出されると(線1)、4つのステツプ(線
3,4,8,9)を有するシーケンスが開始される(線2)。
線4〜7は外部からの要求に関するものであり、これに
ついての説明を延ばすことができる。もつとも、リンク
(プロセス)は直列リンク25(第2図)のプロセス・レ
ジスタ47の内容を表す。線3においては、メモリ〔WPTR
−1〕はアドレスWPTR−1におけるメモリ・スペースで
ある。そのアドレスは現在のプロセスの基準アドレスWP
TRを基にしている。ここで説明している実施例において
は、そのメモリ場所は、プロセスが推奨された時に次に
実行される命令を指すために用いられる。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において、線7
3はメモリ・アドレス9998において見出される内容にセ
ツトされる。それはポインタ11000である。線9におい
ては、レジスタ67はメモリ・アドレス10999において見
出される命令ポインタでセツトされる。したがつて、PR
OC run(w)の後にPROC waitが続くものとすると、現
在のプロセスがリストの終りに付け加えられるものとす
ると(それの作業域ポインタが結合されているリストに
格納される)、それの次の命令に対するポインタはメモ
リに格納され、それは活動を停止させられ、結合されて
いるリスト上の次のプロセスが適切な命令の始めに開始
される。これらの動作の全てはたつた4つのレジスタを
用いて行われる。このように構成することにより、シス
テム中のメモリの量によつてのみ数が制限されるプロセ
スのスケジユーリングとデスケジユーリングを行えるよ
うにされる。 「moveto」と名づけられた手続は、新しいIPTRへ必ず
しも変更することなしに、作業域基準ポインタを現在の
プロセスのための作業域における異なるアドレスにセツ
トするために使用できる。したがつて、あるプロセスが
それの基準作業域ポインタを10000に有しているものと
すると、この同じプロセスのために基準ポインタを(10
200)に変えるためにmoveto(10200)を用いてレジスタ
をセツトできる。これはPROC moveto(w)の前記した
定義を参照して次のように説明される。 定義の2行目はこれが一連のステツプであることを宣
言している。3行目と8行目は左マージンから等しくず
らされているから、それらはともに逐次実行される。シ
ステムが最後のプロセスでないと仮定する。そうする
と、行2は偽であるからシステムは行6へ飛び越す。行
6における条件は真であるから行7が実行される。行7
はメモリ・アドレスw−2における内容を、結合されて
いるリスト上の次のプロセスのための作業域ポインタに
セツトする。次に、行8がWPTRレジスタ73の内容を値w
に変える。今レジスタ73は現在のプロセスのための新し
い基準アドレスを指す。この新しい基準アドレスからの
慣例となつているずれ(マイナス2)が、次にスケジユ
ールされるプロセスのための作業域に対するポインタを
見出す。次のプロセスがない場合には、行2が真で、LP
TRレジスタ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図を参照して、WP
TRが10000であるとすると、コード02を用いて“load fr
om 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 workspece"がア
ドレス10200をAレジスタ内に置く。それはそのベクト
ルの始めを指す。その後で、ベクトルの始めに関して特
定のメモリ場所を見出すために“load from vector"オ
ペレーシヨンが用いられ、したがつて、作業域ポインタ
・レジスタ73の代りにAレジスタ71に組合わされたオペ
ランド・レジスタ65内のオフセツトをそれは用いる。 リテラル・ロード(load literal) “load literal"命令はオペランド・レジスタ65内に
あるものはどんなものでもAレジスタ71(評価スタツク
の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 p
rocedure"機能が終了させられた後で次に実行すべき命
令に対するポインタがロードされているAレジスタ71の
内容を、命令ポインタ・レジスタ67へ転送する。 それから、Aレジスタ71に作業域ポインタがロードさ
れる。これに続いて、“moveto"手続が基準ポインタWPT
Rを変更して、その基準ポインタWPTRが現在の作業域内
の異なるアドレスを指すようになる。“moveto( )”
手続はWPTRレジスタ73の内容を、movetoに続く括弧の中
の内容にセツトするものである。したがつて、“call p
rocedure(呼出し手続)”の後では現在のプロセスのた
めの同じ作業域内の異なる場所を指す作業域ポインタを
システムは有することになり、Aレジスタ71に前から含
まれていた異なる命令をシステムが実行する準備がされ
たことになる。 RETURNオペレーシヨンの使用により逆のオペレーシヨ
ンが行われる。 プロセス実行(run process) このオペレーシヨン“run process"は自身の作業域と
1組の命令を有するプロセスの構成において一般に使用
される。Aレジスタ71には新しいプロセスのための作業
域用の作業域ポインタがロードされ、Bレジスタには新
しいプロセスのための適当な命令ポインタがロードされ
ている。オペレーシヨン“run process"は作業域ポイン
タから適切にオフセツトされたメモリ内の場所に命令ポ
インタを格納し、それから括弧内の作業域ポインタを用
いて前記手続PROC run( )を呼出す。先に説明したよ
うに、これは新しいプロセスのスケジユールを作成す
る。すなわち、結合されているリストに新しいプロセス
を付加する。 休止(pause) “休止”オペレーシヨンは、1つのプロセスが他のプ
ロセスを除外してALU55を使用することを阻止するため
にプログラム中に現れる。このオペレーシヨンはコンパ
イラによりループ中に挿入される。このオペレーシヨン
は、現在のプロセスを結合されているリストの終りに付
加し、必要なポインタを格納し、現在のプロセスに実行
をしばらく休止させ、結合されているリスト上の次のプ
ロセスを現在のプロセスにする。評価スタツクの内容を
プロセスを損うことなしに捨てることができる時に“pa
use"が実行されるから、評価スタツクの内容は保留され
ない。 結合(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,41,42または43(第2図)が用
いられる。各プロセスは“synchronise"オペレーシヨン
を有する。 “synchronise"オペレーシヨンに到達する最初のプロ
セスはチヤネルを調べる。チヤネルのアドレスはAレジ
スタ71にロードされているから、“memory〔AREG〕”が
そのチヤネルのことを言及する。表現式“NIL"は零とし
て認められる所定の基準のことを指す。第1のプロセス
によりチヤネルの始めの部分にNILが見出されたとする
と、そのプロセスはそれの作業域ポインタをチヤネルの
第1の部分に置き、それからそれ自身でスケジユールか
ら外れる。それでそのプロセスはプロセスYがそれの
“sync"オペレーシヨンに到達するのを待つ。プロセス
Yが“sync"オペレーシヨンに到達すると、プロセスY
は同じチヤネルの第1の部分を調べる。そうすると、NI
Lは見つからないが、その代りにある作業域ポインタを
見つける。それに応答してプロセスYはプロセスXをス
ケジユールする(結合されているリストの終りにそれを
加え合わせる)。チヤネルの第1の部分はNILに戻る。
一般に、1つのプロセスから他のプロセスへ転送するた
めのデータが置かれる少くとも第2の部分がチヤネルに
存在する。また、同期オペレーシヨンは一般に対となつ
て起る。2つのプロセスにおける第1の“sync"オペレ
ーシヨンはプロセスにデータを待機させ、それから準備
が整つた時にそのデータを転送させる。第2の“sync"
命令は確認応答を行わせる。したがつて、プロセスから
データを入力しているプロセスは“sync"する。データ
がレデイ状態になつていないとすると、そのデータは
“待機”する。供給プロセスによりデータがレデイ状態
にされると、その供給プロセスは受けるプロセスをスケ
ジユールし、それから受けるプロセスはデータをとる。
それから各プロセスによる“sync"命令が転送の確認応
答をする。データを供給するプロセスによる最初の“sy
nc"は、データをとる準備が整つていることを示す。 同じマイクロコンピユータにおけるプロセス間の通信 先に説明したように、このマイクロコンピユータは同
じマイクロコンピユータにおけるプロセス間、または異
なるマイクロコンピユータにおけるプロセス間の通信を
可能にする。たとえば、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のプロセス場所に置き、オペレ
ーシヨンのリストにおいて述べた同期オペレーシヨンか
らわかるように、同期オペレーシヨンの実行により“ru
n"手続がプロセス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
はリスト上で待機している。このようにして、“handsh
ake"オペレーシヨンを行つている両方のプロセスにより
通信が同期される。“handshake"オペレーシヨンにおい
ては、両方のプロセスがオペレーシヨンを同期させるた
めに2つの命令を実行する。それら2つの命令のうちの
一方はプロセスをスケジユールから外し、スケジユール
から外されない方の通信プロセスから適切な信号が受信
された時に、スケジユールから外された方のプロセスだ
けがリストへ戻される。 次に、第10図を参照して、同じマイクロコンピユータ
上で2つの通信プロセスを実行するために必要なプログ
ラムと命令シーケンスの特殊な例について説明すること
にする。これは自動車の走行距離と燃料消費量を測定す
るための、先に述べた2つの例を示すものである。マイ
クロコンピユータ170はそれのメモリ域に、変数“rotat
ions"をカウントする第1のプロセスのための第1の作
業域171と、変数“miles"をカウントする第2のプロセ
スのための第2の作業域172とを有する。作業域171は語
場所173を有し、この語場所には“rotation"と呼ばれる
入力チヤネル174のアドレスが含まれる。その入力チヤ
ネルは、外部の回転検出器(図示せず)から各車輪回転
数についてのメツセージを受けるように構成されている
直列リンクの一部を構成する。作業域171は別の語場所1
75も有する。この語場所175にはチヤネル“mile"と呼ば
れる2語メモリ・チヤネル176のアドレスが含まれる。
この場合には、このメモリ・チヤネル176は、車輪の100
0回転ごとに1mileの走行を示す作業域171のプロセスか
らの出力を受ける。 この第1のプロセスに対するOCCAM言語を用いるプロ
グラムは次の通りである。 1. VAR rotations: 2. WHILE TRUE 3. SEQ 4. rotations:=0 5. WHILE rotations<1000 6. SEQ 7. rotation?ANY 8. rotations:=rotations+1 9. mile!ANY 行番号はこのプログラムの構成部分ではないが、説明を
容易にするためにつけた。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 liter
al"機能のためのコードを含むから、この時には、Aレ
ジスタ71には1000の2進数が含まれる。これによりAレ
ジスタの内容(0である)がBレジスタ72へ転送させら
れる。 9行目では間接機能、すなわちオペレーシヨン“grea
ter 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"チヤネルと呼ばれるチヤネル1
79である。作業域172は別の語場所180も有する。この語
場所180は、燃料の最後の約3.9(1ガロン)が消費さ
れる間に走行した距離を出力するように構成された直列
リンクの部分を形成する“consumption"チヤネルと呼ば
れる出力チヤネル181のアドレスを有する。明らかに、
走行距離数を示すメッセージをチヤネル176を介して得
るためには、作業域172内におけるプロセスは作業域171
におけるプロセスと通信する必要がある。作業域172に
おけるプロセスのための命令シーケンスとプログラムは
次の通りである。 単なるマイクロコンピユータ上のプロセス間の通信 相互に接続されたマイクロコンピユータのネツトワー
クが第11図に示されている。第11図には4台のマイクロ
コンピユータが示されている。このネツトワークは要求
に応じて二次元または三次元に拡張できることがわかる
であろう。各マイクロコンピユータの構造は類似してお
り、2本の一方向ワイヤ185,186により別のマイクロコ
ンピユータの直列リンクに相互に接続される。各ワイヤ
185,186は1台のマイクロコンピユータの出力ピン27
と、他の1台のマイクロコンピユータの入力ピン26の間
に接続される。ワイヤ185,186はそれら2本のピンとピ
ンの間の距離だけに使用されるのであつて、他のマイク
ロコンピユータまたはメモリとの接続に共用されるもの
ではない。種々のマイクロコンピユータの間の通信は、
同一の同期オペレーシヨン・シーケンスを用いて全体と
して類似のやり方で行われる。これについては第2、1
1、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上の全ての信号を無視
する。 入力チヤネルまたは出力チヤネルのプロセス・レジス
タがプロセスの作業域ポインタを保持している時は、CP
U12がプロセスの作業域ポインタを実行を待つているリ
ストに加え合わせることによりそのプロセスをスケジユ
ールするように、制御ロジツク50は要求(入力要求また
は出力要求と呼ばれる)を発生してCPU12へ与えること
ができる。同期ロジツク10は、直列リンクからの各要求
信号を調べるためにCPU12により使用されるセレクタを
発生する。“wait"手続の実行によりアクテイブ・プロ
セスがスケジユールから外された時は、直列リンクから
の要求があるかどうかをCPU12は調べる。もしいくつか
の外部要求があれば、CPU12はリスト上の次のプロセス
を実行する前に、それらの要求の全てを順次サービスす
る。その要求を発生したチヤネルのプロセス・レジスタ
に保持されているプロセスをスケジユーリングすること
によりCPU12は要求をサービスし、プロセス・レジスタ4
7を零にリセツトする。リンク25内の入力チヤネルまた
は出力チヤネルのプロセス・レジスタ47は、そのチヤネ
ルが通信を実行する用意ができた時に、特殊な値READY
を含む。同期オペレーシヨンは手続“run"を行わせる。
その手続“run"により特殊な値READYを検出し、あるプ
ロセスをスケジユーリングする代りに、リンク内の制御
ロジツク50の動作を停止させる。リンク内の制御ロジツ
クはチヤネル上で同期オペレーシヨンを実行できる。そ
の同期オペレーシヨンはチヤネルのプロセス場所をテス
トする。値が零であるとすると、それはその値を特殊な
値READYで置き換え、プロセス・レジスタ上のプロセス
によりひき起される同期オペレーシヨンがその値を零に
リセツトするまで待つ。そうでなければ、前記したよう
にプロセス・レジスタ内のプロセスをスケジユールする
ためにそれはCPU12のための要求を発生し、それからCPU
12はプロセス・レジスタの値の零にリセツトする。その
結果、別のプロセスに同期させるために同期オペレーシ
ヨンが用いられるのと同じやり方で、プロセスは制御ロ
ジツク50に同期させるために同期オペレーシヨンを使用
できる。 リンク25内の出力制御ロジツク50は、出力チヤネル内
のプロセス・レジスタを用いてプロセスとの同期をまず
とり、それから出力チヤネル内のデータ・レジスタから
のデータパケツト中のデータを出力ピン27(第2、11
図)を通じて送り、入力ピン26上で確認応答パケツト信
号を待ち、それから出力チヤネル内のプロセス・レジス
タを再び用いてプロセスに同期させる。出力制御ロジツ
クはこのオペレーシヨンをくり返えし実行する。リンク
内の入力制御ロジツクは入力ピン26からのデータが入力
チヤネル内のデータ・レジスタに到達することをまず待
ち、それから入力チヤネル内のプロセス・レジスタを用
いてプロセスに同期させ、次に入力チヤネル内のプロセ
ス・レジスタを用いてプロセスに再び同期させ、それか
ら確認応答パケツト信号を出力ピン27へ送る。入力制御
ロジツクはこのオペレーシヨンをくり返えし実行する。 以下の説明においては、第11図に示されているマイク
ロコンピユータ1により動作させられるプロセスxがデ
ータを直列リンクを介して、マイクロコンピユータ2に
より動作させられるプロセスyへ出力することを望んで
いると仮定する。この出力を行うために、プロセスxは
出力すべきデータを出力チヤネルのデータ・レジスタ18
7に格納し、プロセス・レジスタ188で同期オペレーシヨ
ンを実行して、ピン27を介してのデータの伝送を直列リ
ンクに開始させる。それからプロセスは同じプロセス・
レジスタ188について別の同期オペレーシヨンを実行し
て、マイクロコンピユータ1の入力ピン26を介して確認
応答パケツトが受けられるまで待つ。確認応答パケツト
は、マイクロコンピユータ2により動作させられるプロ
セスyがデータを入力したことを意味する。入力するた
めに、プロセツサyはマイクロコンコンピユータ2の入
力チヤネルのプロセス・レジスタ189について同期オペ
レーシヨンの実行して、データ・パケツトがマイクロコ
ンピユータ2のピン26から到達することを待つ。それか
らプロセスyはデータ・レジスタ190からデータをと
り、別の同期オペレーシヨンを実行して、マイクロコン
ピユータ2の出力ピン27から確認応答信号を送信させ
る。 第12図は、プロセスxとyが直列リンクを介して通信
する時に起る典型的なオペレーシヨン・シーケンス中に
おけるプロセス・レジスタ188,189の内容の順次示すも
のである。参照番号188a〜188e,189a〜189eはそれぞれ
プロセス・レジスタ188,189の内容の引き続状態を表す
ものである。最初に、プロセスxはマイクロコンピユー
タ1の出力チヤネルをアドレスし、出力すべきデータを
データ・レジスタ187にロードし、出力プロセス・レジ
スタ188について同期オペレーシヨンを行う。直列リン
クが出力を発する用意が整つていることを示す特殊な値
READY188aをプロセス・レジスタ188が含んでいると仮定
すると、同期オペレーシヨンによりプロセス・レジスタ
188の値が零(NIL)188bにリセツトされる。その結果、
制御ロジツクはデータ・レジスタ187からのデータを、
1本のワイヤ接続185を介してマイクロコンピユータ2
の入力データ・レジスタ190へ送らせる。プロセスyが
入力をまだ待つていないとすると、マイクロコンピユー
タ2内の制御ロジツクがプロセス・レジスタ189の値をN
IL189aからREADY189bへ変えて、データが受けられるこ
とを示す。次に、プロセスyがプロセス・レジスタ189
について同期オペレーシヨンを行う。そうするとプロセ
ス・レジスタ189の値がREAD189bからNIL189cに変えられ
る。マイクロコンピユータ2が確認応答信号をマイクロ
コンピユータ1へ送り用意が整つていると仮定すると、
制御ロジツクはプロセス・レジスタ189の値をREADY189d
へ戻す。それからプロセスyは入力チヤネルのデータ・
レジスタ190からデータをとり、プロセス・レジスタ189
について別の同期オペレーシヨンを実行する。そうする
とプロセス・レジスタ189がNIL189eにリセツトされる。
その結果、制御ロジツクは確認応答信号を1つのワイヤ
接続186を介して送る。この確認応答信号は、プロセス
xを動作させるマイクロコンピユータ1の入力ピン26に
より受けられる。確認応答信号を受ける前にプロセスx
が第2の同期オペレーシヨンを実行すると仮定すると、
プロセスxは手続“wait"によりスケジユールから外さ
れ、それの作業域ポインタがプロセス・レジスタ188(1
88c)に格納される。確認応答パケツトが受けられる
と、直列リンクの制御ロジツクが、プロセスxをスケジ
ユールすることをマイクロコンピユータ1のCPUに求め
る要求を発生し、プロセス・レジスタをリセツトする。
この要求は、現在のプロセスがスケジユールから外され
るとマイクロコンピユータ1のCPUにより直ちにサービ
スされ、CPUはプロセスxをリストの末尾に加えて、プ
ロセス・レジスタをNIL(188d)にリセツトする。そう
すると制御ロジツクはプロセス・レジスタをREADY(188
e)にリセツトすることにより、リンクが更に出力する
用意が整つたことを示す。そのために直列リンクは、第
12図のシーケンスに示されているように、通信が行われ
る前と同様になつて、次の通信を行う用意を整える。 第14図は、第11図を参照して先に説明したプロセスの
2つのマイクロコンピユータについての動作を示す。し
かし、この場合には、回転数を数えるための作業域171
がマイクロコンピユータ191にあり、距離をカウントす
るための作業域172は別のマイクロコンピユータ192にあ
る。それらのマイクロコンピユータ191,192はそれぞれ
の直列リンク25により相互に接続される。チヤネル“mi
le"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図)を用いてプロセス
と同期し、次に入力プロセス・レジスタを用いてプロセ
スと再び同期し、その後で確認応答信号をピン27へ送
る。制御ロジツク50はこのオペレーシヨンをくり返えし
行う。 出力と入力のプロセス・レジスタ47によりとられる値
は、プロセスも制御ロジツクも同期を待つていないこと
を示すNILと、制御ロジツクが同期を待つていることを
示すREADYのことがあり、あるいは同期を待つているプ
ロセスの作業域ポインタとすることもできる。 リンクにおいては、各プロセス・レジスタ47と各デー
タ・レジスタ46がアドレス・デコーダ193を介してバス1
6へ接続される。バス16はアドレス・データおよび制御
のための信号線を含む。制御には“write"信号と、“re
ad"信号と、“busy"信号とを含む。“busy"信号はCPUと
リンク制御ロジツクが、プロセス・レジスタの値を同時
に変えようとしないようにするために用いられる。 リンク内の各プロセス・レジスタ47は、プロセス・レ
ジスタ内の値がREADY,NILまたは作業域ポインタのいず
れであるかを調べるためのロジツク194を含む。 出力データ・レジスタ48(第15図)はアンドゲート19
5とオアゲート196を介して出力ピン27に接続される。入
力データ・レジスタ48(第16図)が入力ピン26に直結さ
れる。 リンク内の各プロセス・レジスタには要求ラツチ197
が組合わされる。CPUがWAIT手続を実行する時は、全て
の要求ラツチの状態が常にテストされる。ある要求ラツ
チがセツトされたとすると、対応するプロセス・レジス
タに保持されている作業域ポインタを有するプロセス
が、それの作業域ポインタをリストの末尾に加えること
によりスケジユールされる。CPUがプロセス・レジスタ
に書き込む時には要求ラツチは常にクリアされる。 このリンクを介して行われるデータの入力と出力は4
状態マシン282,283,284,285により制御される。各状態
マシンは現在の状態を保持するための状態レジスタと、
プログラム可能なロジツク・アレイとより成る。このプ
ログラム可能なロジツク・アレイは状態レジスタの値
と、状態マシンへの入力信号とに応答して出力信号の所
定のパターンと、状態レジスタのための新しい値を発生
する。リンクを通つて送られるビツトをカウントするた
めにカウンタ286が用いられ、リンクを通つて受けられ
るビツトをカウントするために別のカウンタ287が用い
られる。 入力および出力のチヤネル制御器とデータ状態マシン
は下記のような入力と出力を有する。入力または出力の
名称は信号の目的を示すものである。 各状態マシンのシーケンスについて、各マシンの現在
の状態、次の状態、入力、出力について以下に説明す
る。 どのような状態においても、「出力」欄に記載されて
いる出力は1で、他の出力は0である。「入力」欄に記
載されている入力を除き、全ての入力は無視される。記
および△はそれぞれプール代数の演算のand,or,notを示
すものである。 第16図に示すように、入力制御ロジツクは、入力デー
タ状態マシン282の出力端子246に接続されるフリツプフ
ロツプ280を含む。別のフリツプフロツプ281が入力デー
タ状態マシン282の出力端子245に接続される。両方の制
御状態マシンはクロツク28から与えられるクロツクパル
スにより制御される。リンクのあるものに対して、両方
のデータ状態マシンはクロツク28からのクロツクパルス
によつても制御される。第15、16図に示すリンクに対し
ては、データ状態マシンは、クロツク28に対して位相が
関係するクロツク22からのクロツクパルスにより制御さ
れる。クロツク22はこのリンクを低速で動作させること
ができる。動作させられるマイクロコンピユータ・ネツ
トワークの種類に応じて効率を最高にするために、2種
類のクロツク周波数を得ることができる。マイクロコン
ピユータが近接して群にまとめられると、それらのコン
ピユータの間の通信はより高速で行うことができる。そ
の場合には、より高いクロツク周波数を使用できる。マ
イクロコンピユータが遠く離れて配置され、低速動作を
必要とする場合には、満足できる通信を確保するために
低いクロツク周波数を使用できる。 入力チヤネルと出力チヤネルにおいて、制御状態マシ
ンはプロセス・レジスタ47の内容をモニタし、適切であ
ればラツチ197をセツトすることによりCPU要求を線199
に生ずる。 出力制御状態マシン285は出力プロセス・レジスタ47
を用いてまずプロセスに同期させる。それから、マシン
285は“datago"信号211を用いて出力データ状態マシン2
82に、出力データ・レジスタ48内のデータをピン27を通
じて出力させる。出力データ状態マシン284は第13a図を
参照して説明したようにしてデータを送り出し、カウン
タ286内のカウントがなくなるまでレジスタ48内のデー
タを桁送りする。カウンタ48内のカウントがなくなる
と、それは“datagone"信号205を出力状態マシンへ戻し
て、データの転送が終了したこと、および“datago"信
号を除去すべきことを示す。それから、出力制御状態マ
シンはラツチ280からの“ackready"信号264を待ち、入
力データ状態マシン282が、第13b図に示されている確認
応答パケツトをピン26から受けたことを示す。“ackrea
dy"信号264に応答して、出力制御状態マシンは“acktak
en"信号265を出力する。その信号はラツチ280をリセツ
トする。そうすると出力制御ロジツクは出力プロセス・
レジスタ47を用いて出力プロセスに再び同期させる。 リンクの他の端にあるマイクロコンピユータの入力デ
ータ状態マシン282は、入力ピン26に現われる“atartbi
t"を待つ。データ・パケツトが検出されると、そのマイ
クロコンピユータの入力データ状態マシン282が、適切
な数のビツトが受けられたことをカウンタ287が示すま
で、データをデータ・シフトレジスタ48へ桁送りし、そ
れから「データを受ける」ラツチ281をセツトする。入
力制御状態マシン283は“dataready"信号262を検出し、
それに応答してラツチ281をセツトする。それから、そ
れは入力プロセス・レジスタ47を用いて入力プロセスに
同期する。その後で、それはプロセス・レジスタ47を用
いて入力プロセスに再び同期し、プロセスがデータ・レ
ジスタ48からデータを得たことを確認し、次に“ackgo"
信号261を用いて出力データ状態マシンに確認応答パケ
ツトをピン27を介して送らせる。出力データ状態マシン
284をデータを送らない時は、そのマシンはスタート・
ビツトとストツプ・ビツトを発生する。それらのビツト
は確認応答パケツト(13a図)を構成する。マイクロコ
ンピユータのデータ・パケツトを送つた入力データ状態
マシン282は確認応答パケツトを検出し、「確認応答を
受けた」ラツチ280をセツトする。前記したように、送
信マイクロコンピユータの出力制御状態マシン285はこ
れを待つており、その信号を検出するとラツチ280をリ
セツトして第2の同期オペレーシヨンを行う。出力リン
クと入力リンクの両方におけるリンク・ロジツクの状態
は、次の送信の用意が整うように、いまは通信が行われ
た以前と同じである。 チツプとメモリの形成 先に説明したように、本発明のマイクロコンピユータ
はチツプ(集積回路装置)上に外部メモリなしでマイク
ロコンピユータを動作させることができる十分なメモリ
をRAMの形で有するからとくに有利である。もつとも、
要求があれば外部メモリを使用することもできる。プロ
セツサが形成されているチツプ上に適切なメモリを形成
するのに十分なスペースをとることにはいろいろと問題
がある。各メモリセルに必要な面積をできるだけ小さく
し、同じチツプ上のプロセツサのような同期しないで動
作している回路からのRAMへのノイズ妨害を減少させる
と同時に、何枚かのシリコンチツプから許容できるマイ
クロコンピユータを、とくに、チツプ上に作られる最大
で最高の集積密度の部品であるメモリを満足できる歩留
りで製造することが必要である。 各メモリの必要とするチツプ面積を小さくするため
に、本発明のこの実施例では、より一般的なデプリーシ
ヨン(depletion)形トランジスタ負荷または相補プル
アツプ・トランジスタではなくて、高インピーダンス抵
抗負荷を用いる静的セル(SRAM)を用いる。この実施例
で用いる製造技術は高抵抗率の多結晶シリコンの膜を用
いる。その多結晶シリコン中に抵抗負荷が形成される。
メモリは32KビツトのSRAMで構成できる。SRAMの各セル
は、多結晶シリコン膜内に形成されるゲートを有するト
ランジスタより成る。トランジスタのゲートと抵抗負荷
は同じ多結晶シリコン膜内に、または異なる多結晶シリ
コン膜内に形成できる。 抵抗負荷SRAMはそれが形成されているシリコン材料内
に入りこむ電気的ノイズから妨害を受けやすく、また、
存在することがある少数キヤリヤにより内蔵データがつ
ぶされることが起り得る。チツプ上の他の回路により発
生させるノイズと、チツプ上の他の回路から注入された
少数キヤリヤとからSRAMを遮へいするために、SRAMは第
17図に示すようにシリコンの電気的に分離された領域に
形成される。nチヤネル基板300に別々のp形井戸301,3
02が形成される。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形エピタキシヤル層が形成される。 セルアレイはこのエピタキシヤル層の領域401の中に
形成され、高濃度に拡散された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個のレジスタが用いられる。 以上の説明において、機能セツトは、間接機能“oper
ate"の使用により選択できるオペレーシヨンの拡張可能
なリストが続く複数の機能を機能セツトはリストにまと
める。あらゆる場合に、それらの機能とオペレーシヨン
は、マイクロコンピユータを動作させるために有用な命
令のフオームと考えることができる。しかし、第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つの
プロセスの間の直列リンクを介する通信を行うための一
連のオペレーシヨンを示す略図、第13a、13b図は2台の
マイクロコンピユータの間の直列リンクを介する通信の
ためのデータ・パケツトと確認応答パケツトのフオーマ
ツト図、第14図は相互に接続された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……ビツト・カウンタ。
───────────────────────────────────────────────────── フロントページの続き (56)参考文献 特開 昭53−3147(JP,A) 特開 昭53−35448(JP,A) 特開 昭50−73540(JP,A) 特開 昭52−68341(JP,A) 特開 昭49−69051(JP,A)

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】二つのチップの間に、二つの反対方向の独
    立した直列データ通信路を有する2方向性通信路によっ
    て隣合うマイクロコンピュータ通信リンク(25)にそれ
    ぞれ接続される通信リンク(25)を有する複数のワンチ
    ップ・マイクロコンピュータより成るマイクロコンピュ
    ータを相互に接続したネット・ワークにおいて、複数の
    マイクロコンピュータのうちの任意の2つのマイクロコ
    ンピュータの間で同期のかかったプロセス間通信を行な
    うために、各集積回路チップ(11)は、オンチッププロ
    セッサ(12)並びに処理を実行するために必要なプログ
    ラム及びデータを保持するオンチップRAMメモリー(1
    9)を含むマイクロコンピュータを備え、前記オンチッ
    プRAMメモリー(19)は同一チップ上の前記オンチップ
    プロセッサ(12)及び複数の通信リンク(25)のみの制
    御の下にアドレスされ、前記通信リンク(25)は通信に
    含まれる入力プロセスを保持する入力プロセスレジスタ
    及び一方の直列データ通信路に接続されており入力され
    たデータを保持する入力データレジスタを含む入力側通
    信チャネルと通信に含まれる出力プロセスを保持する出
    力プロセスレジスタ及び他方の直列データ通信路に接続
    されており出力すべきデータを保持する出力データレジ
    スタを含む出力側通信チャネルと、前記オンチッププロ
    セッサ(12)に接続され同期化を行うリンク制御回路
    (50)を備え、前記リンク制御回路(50)はデータパケ
    ット及びリンクを通じて出力しプロセス間通信の同期化
    に用いられる確認応答パケットを発生する手段を備え、
    前記リンク制御回路(50)は、前記発生手段によりデー
    タパケットを出力し、実行を待機しているプロセスのリ
    ストであるスケジュールからデータパケットを出力した
    プロセスを外し、メッセージを送るべき相手チップの有
    する前記発生手段から出力された前記確認応答パケット
    を受信するため、さらにこのメッセージの伝達が完了し
    たときに、データパケットを出力したプロセスを再度ス
    ケジュールに入れるために同期化を行うことを特徴とす
    るマイクロコンピュータのネットワーク。
  2. 【請求項2】(1)処理を実行するために必要なプログ
    ラムとデータの両方を保持するオンチップRAMと(2)
    オンチッププロセッサと(3)複数の通信リンクとをそ
    れぞれ備えた複数のワンチップ・マイクロコンピュータ
    を相互に接続したネットワークにおける異なるワンチッ
    プ・マイクロコンピュータの間で実行されるプロセス間
    で通信するための動作方法において、一つのチップ上の
    通信リンクと隣接するチップ上の通信リンクとを該二つ
    のチップの間で二つの反対方向に通信を行なう二つの独
    立した1方向通信路で接続し、前記オンチップ・プロセ
    ッサの制御の下に同一チップ上の前記メモリーをアドレ
    スし、前記通信リンクを介して一つのチップ上のオンチ
    ッププロセッサが同一チップ上のメモリーに格納されて
    いるプログラムに従って実行しているプロセスから、他
    のチップ上のオンチッププロセッサが同一チップ上のメ
    モリーに格納されているプログラムに従って実行してい
    るプロセスへのメッセージ伝送の同期をとり、(1)デ
    ータパケットを出力し、(2)実行を待機しているプロ
    セスのリストであるスケジュールからデータパケットを
    出力したプロセスを外し、(3)接続されたチップから
    の確認応答信号を受信し、かつ(4)メッセージ伝送が
    完了した時に、データパケットを出力したプロセスを再
    度スケジュールに含ませるという上記(1)〜(4)の
    動作を行わせるためのメッセージ・インストラクション
    がプロセッサにより実行されることに応答するリンク制
    御回路によって該同期をとるようにした、ワンチップ・
    マイクロコンピュータを相互に接続したネットワークの
    動作方法。
JP58221454A 1982-11-26 1983-11-26 マイクロコンピュータおよびそのネットワークならびに複数のマイクロコンピュータにおけるプロセス間のデータ通信を行う方法 Expired - Lifetime JPH087739B2 (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
JPS59133662A JPS59133662A (ja) 1984-08-01
JPH087739B2 true JPH087739B2 (ja) 1996-01-29

Family

ID=10534539

Family Applications (7)

Application Number Title Priority Date Filing Date
JP58221454A Expired - Lifetime JPH087739B2 (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 マイクロコンピュ−タ、ならびにマイクロコンピユ−タおよびマイクロコンピユ−タ・ネットワ−クを動作させる方法
JP58221452A Granted JPS59133647A (ja) 1982-11-26 1983-11-26 コンピユ−タおよびコンピユ−タ装置を動作させる方法
JP58221451A Granted JPS59149543A (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 After (6)

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 マイクロコンピュ−タ、ならびにマイクロコンピユ−タおよびマイクロコンピユ−タ・ネットワ−クを動作させる方法
JP58221452A Granted JPS59133647A (ja) 1982-11-26 1983-11-26 コンピユ−タおよびコンピユ−タ装置を動作させる方法
JP58221451A Granted JPS59149543A (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) US4724517A (ja)
EP (6) EP0113516B1 (ja)
JP (7) JPH087739B2 (ja)
DE (6) DE3378083D1 (ja)

Families Citing this family (103)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6414368B1 (en) * 1982-11-26 2002-07-02 Stmicroelectronics Limited Microcomputer with high density RAM on single chip
US5243698A (en) * 1982-11-26 1993-09-07 Inmos Limited Microcomputer
US4724517A (en) * 1982-11-26 1988-02-09 Inmos Limited Microcomputer with prefixing functions
GB8329510D0 (en) * 1983-11-04 1983-12-07 Inmos Ltd Computer apparatus
GB8329509D0 (en) * 1983-11-04 1983-12-07 Inmos Ltd Computer
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 富士通株式会社 マルチプロセッサシステム
EP0260793A3 (en) * 1986-07-24 1990-03-14 Gec Avionics Limited Bidirectional data bus
GB8618060D0 (en) * 1986-07-24 1986-12-17 Gec Avionics Data processing apparatus
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
WO1990008355A1 (fr) * 1989-01-17 1990-07-26 Fujitsu Limited Microprocesseur
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 ソート処理プロセツサ
WO1993009501A1 (en) * 1991-11-01 1993-05-13 Yeh Keming W 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 並列計算処理装置
GB2266605B (en) * 1992-04-27 1995-10-11 Intel Corp Microprocessor having a run/stop pin for accessing an idle mode
GB2266606B (en) * 1992-04-27 1996-02-14 Intel Corp A microprocessor with an external command 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 シリアル通信回路
JPH10502181A (ja) * 1994-06-20 1998-02-24 ネオマジック・コーポレイション メモリインタフェースのないグラフィックスコントローラ集積回路
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
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
US6697935B1 (en) 1997-10-23 2004-02-24 International Business Machines Corporation Method and apparatus for selecting thread switch events in a multithreaded processor
US6076157A (en) * 1997-10-23 2000-06-13 International Business Machines Corporation Method and apparatus to force a thread switch in a multithreaded processor
US6212544B1 (en) 1997-10-23 2001-04-03 International Business Machines Corporation Altering thread priorities in a multithreaded processor
US6567839B1 (en) 1997-10-23 2003-05-20 International Business Machines Corporation Thread switch control in a multithreaded processor system
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内蔵の半導体装置
JP2002517035A (ja) * 1998-05-26 2002-06-11 ザ ダウ ケミカル カンパニー リアルタイムスケジューリングロジックおよび時間確定的アーキテクチャを使用する分散コンピューティング環境
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
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
US6629207B1 (en) 1999-10-01 2003-09-30 Hitachi, Ltd. Method for loading instructions or data into a locked way of a cache memory
US6412043B1 (en) 1999-10-01 2002-06-25 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
GB2470891B (en) 2009-06-05 2013-11-27 Picochip Designs Ltd A method and device in a communication network
GB2470771B (en) 2009-06-05 2012-07-18 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
GB2565242B (en) * 2010-12-24 2019-04-03 Qualcomm Technologies Int Ltd Encapsulated instruction set
GB2489919B (en) 2011-04-05 2018-02-14 Intel Corp Filter
GB2489716B (en) 2011-04-05 2015-06-24 Intel Corp Multimode base system
GB2491098B (en) 2011-05-16 2015-05-20 Intel Corp Accessing a base station

Family Cites Families (68)

* 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
FR2253428A5 (ja) * 1973-11-30 1975-06-27 Honeywell Bull Soc Ind
FR2253421A5 (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
JPS54129944A (en) * 1978-03-31 1979-10-08 Toshiba Corp Arithmetic controller
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
US4467420A (en) * 1981-03-20 1984-08-21 Fujitsu Limited One-chip microcomputer
JPS57154869A (en) * 1981-03-20 1982-09-24 Hitachi Ltd Semiconductor device
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
US4724517A (en) * 1982-11-26 1988-02-09 Inmos Limited Microcomputer with prefixing functions

Also Published As

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

Similar Documents

Publication Publication Date Title
JP2502960B2 (ja) マイクロコンピュ−タ、ならびにマイクロコンピユ−タおよびマイクロコンピユ−タ・ネットワ−クを動作させる方法
US5506437A (en) Microcomputer with high density RAM in separate isolation well on single chip
US3978452A (en) System and method for concurrent and pipeline processing employing a data driven network
US4745544A (en) Master/slave sequencing processor with forced I/O
US3815095A (en) General-purpose array processor
US5036453A (en) Master/slave sequencing processor
US6414368B1 (en) Microcomputer with high density RAM on single chip
KR20070098760A (ko) 컴퓨터 프로세서 어레이를 동작하는 방법 및 시스템
EP0125044B1 (en) Microcomputer with interprocess communication
May et al. Occam and the transputer
US5890009A (en) VLIW architecture and method for expanding a parcel
EP0448127B1 (en) Microprogram sequence controller
Johannsen Our machine, a microcoded LSI processor