JP2509453B2 - マイクロコンピュ―タにおけるオンチップおよびオフチッププロセス間通信を選択する方法ならびにマイクロコンピュ―タ - Google Patents

マイクロコンピュ―タにおけるオンチップおよびオフチッププロセス間通信を選択する方法ならびにマイクロコンピュ―タ

Info

Publication number
JP2509453B2
JP2509453B2 JP5225198A JP22519893A JP2509453B2 JP 2509453 B2 JP2509453 B2 JP 2509453B2 JP 5225198 A JP5225198 A JP 5225198A JP 22519893 A JP22519893 A JP 22519893A JP 2509453 B2 JP2509453 B2 JP 2509453B2
Authority
JP
Japan
Prior art keywords
register
instruction
channel
communication
data
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
JP5225198A
Other languages
English (en)
Other versions
JPH06342378A (ja
Inventor
マイクル、デイビッド、メイ
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=JP2509453(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 JPH06342378A publication Critical patent/JPH06342378A/ja
Application granted granted Critical
Publication of JP2509453B2 publication Critical patent/JP2509453B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime 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

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

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、マイクロコンピュータ
を含むコンピュータに関するものである。
【0002】
【従来の技術および発明が解決しようとする課題】マイ
クロコンピュータは一般にプロセスとメモリを備え、内
蔵されているプログラムから得られる一連の命令に従っ
て動作できる。命令には1組の選択可能な機能から選択
されたいわゆる「機能」が含まれ、その命令に応答して
プロセッサにより実行される動作を定める。プロセッサ
は種々のプロセスの間でメッセージを通信したいことが
ある。同じマイクロコンピュータのプロセスの間および
種々のマイクロコンピュータの間で迅速かつ満足できる
通信を行うのにこれまでは困難が生じていた。更に、プ
ロセッサがそれの時間を複数の並行プロセスの間に分割
使用できるようにプロセスのスケジューリングと脱スケ
ジューリングにおいて困難が生ずる。
【0003】本発明の目的は、種々のプロセスの間での
メッセージ同期化とともに効果的なプロセス・スケジュ
ーリングが行なわれるような改良したマイクロコンピュ
ータネットワークにおける通信方法を提供することであ
る。
【0004】本発明の別の目的は、同じマイクロコンピ
ュータにより実行される並行プロセスの間でそのような
メモリ同期化を行える改良したマイクロコンピュータを
提供することである。
【0005】
【課題を解決するための手段】上記目的達成のため、本
発明では、請求項1記載の、複数の相互結合されたチッ
プを有するマイクロコンピュータネットワークにおける
オンチップおよびオフチッププロセス間通信を選択する
方法であって、同一チップ上の二つのプロセス間で同期
化された通信を行うように構成されかつアドレス可能で
ある第1の形式に少なくとも一つのチャネル、および同
期化されたオフチップ通信を行う異なるチップ上の第2
の形式の他のチャネルに結合されるように構成されかつ
アドレス可能な少なくとも一つのチャネルを有する単一
マイクロプロセッサ上の複数の同時プロセスを実行し、
さらに、前記第1の形式のチャネルをアドレスする通信
命令を含む第1の命令シーケンスを実行し、かつ前記第
2の形式のチャネルをアドレスする同一通信命令を含む
第2の命令シーケンスを実行する方法において、前記第
1および第2の命令シーケンスが、同一であって、各々
同一の通信インストラクションを用い、かつオンチップ
またはオフチップ通信を行うか否かによって選択される
チャネルアドレスのみが異なることを特徴とする、オン
チップおよびオフチッププロセス間通信を選択する方
法、請求項2記載の、請求項1記載の方法において、各
プロセッサにより実行される現在のプロセスを指示し、
前記第1および第2の形式のチャネルを介してプロセス
対間のメッセージ伝送を行い、各プロセッサは、通信イ
ンストラクションに応答して現在プロセスの実行を停止
し、次のプロセスに現在プロセスを指示させ、前記プロ
セッサは、複数の同時プロセス間のプロセス時間を共有
し、かつ同時プロセス間のメッセージ伝送を行うように
スケジュールを決め、一対の通信プロセスを同期化する
方法、および請求項3記載の、メモリー、プロセッサ、
および前記プロセッサによる順次実行のための複数の命
令に応じて複数の同時プロセスを実行するように構成さ
れた一つの集積回路上の複数の通信チャネルとをそな
え、集積回路装置のネットワークに使用されるマイクロ
コンピュータであって、前記通信チャネルが、(1)同
一集積回路上で二つの前記プロセス間の同期化された通
信を行うように構成されアドレス可能な第1の形式の少
なくとも一つのチャネルと、(2)前記一つおよび前記
異なる集積回路上のプロセス間の同期化された通信を行
うために異なる集積回路装置上の前記第2の形式の他の
チャネルに結合されるように構成されかつアドレス可能
な第2の形式の少なくとも一つのチャネルとをそなえた
マイクロコンピュータにおいて、前記マイクロコンピュ
ータは、前記第1形式または第2形式のチャネルのアド
レスを選択的に指示するための共通通信命令を含む命令
の組を有し、前記命令によって指示されるチャネルアド
レスの選択のみが異なるオンチップまたはオフチップ通
信を行う前記通信命令を含む命令の共通シーケンスを行
わせるようにした、ことを特徴とするマイクロコンピュ
ータ、を提供するものである。
【0006】マイクロコンピュータという用語は、一般
に集積回路装置をベースとする小型コンピュータを指す
ものであるが、そのコンピュータがどれだけ小型である
かについての限界はないことがわかるであろう。
【0007】この明細書で説明するマイクロコンピュー
タはTransputer(インモス・インターナショナル(Inmo
s International )plc の商標)の例であって、このTr
ansputerはプロセッサとメモリ、および外部との通信を
行うためのリンクを含む1つのシリコンチップを備えて
いる。このマイクロコンピュータは複数の処理を並行し
て実行できるとともに、スケジューリングと、同じチッ
プ上のプロセスの間または異なるチップ上のプロセスの
間の通信を行うことができる。各マイクロコンピュータ
はプロセッサが設けられているチップと同じチップ上
に、プログラム可能なRAMの形のKバイト・メモリを
少なくとも1つ有し、プロセッサはチップのメモリ中の
プログラムに従うことができる。このマイクロコンピュ
ータは複数の通信リンク、ここでは直列リンクと呼ぶ、
を有する。この直列リンクにより、相互に接続されてい
るマイクロコンピュータのネットワークにマイクロコン
ピュータを接続して、任意の1台のマイクロコンピュー
タをネットワークのためのビルディング・ブロックとし
て使用できるようにすることができる。任意の2台のマ
イクロコンピュータの間の通信は1本または2本の特定
のピンの間の接続を行う直列リンクにより行われる。各
接続によりただ2台のマイクロコンピュータが相互に接
続される。各リンクは他のマイクロコンピュータまたは
どの外部メモリとも共用されない。このマイクロコンピ
ュータには、ネットワーク内のマイクロコンピュータの
間のデータ伝送において同期をとるための手段が設けら
れ、2台のマイクロコンピュータの間のリンクを介する
通信を受信マイクロコンピュータまたは送信マイクロコ
ンピュータにより開始できるようにする。
【0008】このマイクロコンピュータは、それぞれ2
つの部分よりなる複数の順次命令を有するプログラムを
含む。1つの部分は命令の機能を表し、他の部分はオペ
ランド・レジスタにロードされるデータを表す。このよ
うにして、各命令の機能部分のビット長は、プロセッサ
の語長とは無関係に同じであり、また、プロセッサの語
長とは無関係に機能のフォーマットと機能ビット長の一
様性が達成される。このマイクロコンピュータの別の重
要な特徴は、それの動作が簡単で効率的な機能セットを
用いて行われることである。その機能セットは最少数の
オペランド・レジスタよりなる。その機能セットは、オ
ペランド・レジスタの内容を基にしてプロセッサを動作
させる直接機能を含む。好適な構成においては、マイク
ロコンピュータは1つの間接機能と2つのプレフィクシ
ング機能も含む。間接機能を用いることにより、データ
レジスタの数を増加させず、かつデータレジスタを大型
にすることなしに、オペレーションを実行するために多
数のプロセッサ・オペレーションを使用できる。更に、
プレフィクシング機能を用いることにより可変長オペラ
ンドが得られる。
【0009】この例のマイクロコンピュータを使用する
ことにより、いくつかのマイクロコンピュータを相互に
結合することによって求められている任意のマイクロコ
ンピュータを形成でき、そのようにして形成されたネッ
トワークは任意の1台のマイクロコンピュータと同様に
動作する。
【0010】
【実施例】構造についての全体的な説明 本発明のマイクロコンピュータの主な要素が、p形井戸
相補MOS技術を用いて1枚のシリコンチップ11の上
に形成されている様子が図1に示されている。これにつ
いては図17を参照して後で詳しく説明する。チップ上
の部品は図1に長方形で示されているが、それらの長方
形は部品の相対的な寸法と位置を示すものではないこと
がわかるであろう。チップ上には中間処理装置(CP
U)12が設けられる。このCPU12は読出し専用メ
モリ(ROM)13を含む。CPU12はメモリ・イン
タフェイス14を含む。このメモリ・インタフェイス1
4はインタフェイス制御ロジック15により制御され
る。CPU12は演算論理ユニット(ALU)と、レジ
スタと、データ路とを含む。これについては図3を参照
して説明する。CPU12とメモリ・インタフェイス1
4はバス16に接続される。このバス16はチップ11
上の要素を相互に接続する。サービス装置17に複数の
入力ピン18が設けられる。入力ピン18には零V電源
ピンと、5V電源ピンと、マイクロコンピュータを定め
られた状態にリセットするためのリセットピンと、クロ
ックピン28とが含まれる。このマイクロコンピュータ
には十分な数のメモリがチップ11上に設けられる。そ
れらのメモリはランダム・アクセス・メモリ(RAM)
19とROM20により表されている。チップに設ける
メモリの数は1Kバイト以下であってはならない。とい
うのは、外部メモリを使用することなしにプロセッサ1
2を動作させることができるのに十分なメモリ容量を必
要とするからできる。チップ上のメモリの容量はなるべ
く少なくとも4Kバイトにする。チップ上のRAMとR
OMの間の区分は、マイクロコンピュータに対する特定
の要求に適合するように選択できる。このメモリは冗長
領域21も含む(冗長領域は米国特許第4346459
号明細書、米国特許出願第194613号または米国特
許出願第8231055号に開示されているようなもの
で構成できる)。この冗長領域21は、メモリ19また
は20の欠陥のある領域の代りに用いるために、図示の
ようにヒューズにより選択的に接続できる列と行を有
し、それにより満足に使用されるチップの歩留りを高く
する。このマイクロコンピュータの動作にはピン28か
らのクロックパルスに応答するタイミング制御が含まれ
る。外部メモリ・インタフェイス23が設けられる。こ
の外部メモリ・インタフェイス23はピン24を介して
外部メモリ(図示せず)に接続される。ネットワークを
形成するようにマイクロコンピュータを他の類似のマイ
クロコンピュータへ結合できるようにするために、複数
の(図示の例では4)直列リンク25が設けられる。各
直列リンク25は入力ピン26と出力ピン27を有す
る。各ピンは、別のマイクロコンピュータの対応する出
力ピンと入力ピンに対する単一のピン−ピン接続を形成
するために使用できる。各直列リンクはプロセス・スケ
ジューリング・ロジックを構成する同期論理ユニット1
0に接続される。図には4つの直列リンク15が示され
ているが、1つのネットワークを形成するために3つの
リンクまたは2つのリンクを使用できる。ただし、でき
れば少なくとも6つ、たとえば7つのリンクを用いるよ
うにする。それらのリンクは希望する任意のアレイで完
全に相互接続できるように設けられる。
【0011】チップメモリ、通信チャネルおよびリンク
の使用についての全体的な説明 図2はマイクロコンピュータのいくつかの要素を詳しく
示すもので、とくにチップ上におけるメモリの使用を示
すものである。このマイクロコンピュータは同じチップ
上で複数のプロセスを並行して実行するために使用で
き、図2には3つの並行プロセスのオペレーションが示
されている。メモリはプログラム30を格納するために
使用される。そのプログラム30はROM20またはR
AM19に格納できる。ここで説明している例では、マ
イクロコンピュータは10ビット語のデバイスである
が、他の語長も使用できる。プログラム30は一連の命
令で構成される。ここで説明している例では各命令の長
さは8ビットで、プロセッサの語長が16ビット以外の
ものであっても、この命令の語長は変らない。各命令の
フォーマットは図5に示すようなものであって、上位の
4ビットは命令の機能を表し、下位4ビットはデータを
表す。プログラム30は各命令の指定された部分に保持
されるもの以外のデータは含まない。プロセッサが各機
能に応答するやり方と、データを取り扱うやり方は機能
セットから選択されたある特定の機能に依存するが、各
命令の機能部とデータ部のフォーマットは常に同じであ
る。メモリはデータ31も格納する。そのデータ31は
ROM20またはRAM19に格納できる。
【0012】このマイクロコンピュータはいくつかのプ
ロセスを時分解式にいっしょに実行する。いっしょに実
行されるプロセスは並行プロセスと呼ばれる。任意の時
刻にはマイクロコンピュータによりただ1つのプロセス
が実際に実行される。このプロセスは並行プロセスと呼
ばれる。マイクロコンピュータにより実行される各並行
プロセスは、プロセスにより取り扱われるローカル変数
と一時的な値を保持するための作業域と呼ばれるメモリ
の領域を使用する。各作業域の第1のローカル変数のア
ドレスは作業域ポインタ(WPTR)により示される。
同様に、各並行プロセスに対して、特定のプロセスに関
連するプログラム中の一連の命令からの次に実行すべき
命令を指示するために命令ポインタ(IPTR)が用い
られる。図2において、プロセス1に対する作業域が参
照番号32で示され、プロセス2,3に対する対応する
作業域が参照番号33,34で示されている。各作業域
は複数のアドレス可能な語場所により成り、実行を待っ
ているプロセスの表上で次に実行するプロセスの作業域
ポインタ(WPTR)を格納するために各作業域の1つ
の語場所が用いられる。このようにして、実行すべきプ
ロセスのための一連の作業域に対するポインタを含むメ
モリ内に結合されたリストが形成される。プロセッサが
プロセス1で動作しており(図2参照)、しばらくの間
そのプロセスの実行を停止することを指令される点に達
したとすると、CPU12は次のプロセスたとえばプロ
セス2での動作を開始する。そのプロセッサは、メモリ
内の場所35における作業域ポインタを読出すことによ
り、前記次のプロセスへ導かれる。好適な実施例におい
ては、任意のプロセスのための作業域ポインタと、結合
されているリスト上の次のプロセスの作業域ポインタの
アドレスとの間に既知の関係があるから、結合されてい
るリストの次の部分は現在のプロセスの作業域から容易
に得ることができる。各プロセス作業域に対して、別の
語場所36がプロセスのための命令ポインタ(IPT
R)を格納する。図2には3つのプロセスだけのための
作業域が示されているが、並行して実行するプロセスの
数に応じて作業域の数を変えることがわかるであろう。
【0013】同じマイクロコンピュータにより異なるプ
ロセスの間の通信を行えるようにするために、メモリの
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とよりなる。入力チャネル内のデータ・レジスタ3
8はピン26に接続され、出力チャネル内のデータ・レ
ジスタ48はピン27に接続される。レジスタ47,4
8の動作は、同期ユニット10に結合されている制御ロ
ジック50により制御される。直列リンクと、制御ロジ
ック50と、同期論理ユニット10との動作については
図12〜16を参照して詳しく説明する。
【0014】メモリのRAM部19は作業域32〜34
および通信チャネル40〜43を得るために用いられ、
かつ要求によりプログラムとデータを保持するためにも
使用できる。ROM20は、たとえば高レベル・プログ
ラミング言語のインタプリタを保持するため、または標
準オペレーションのためのルック・アップ表の格納のよ
うな種々の目的に使用できるとともに、マイクロコンピ
ュータが特定の目的に用いられる周辺装置のための制御
プログラムを保持するために使用できる。
【0015】CPUデータ路およびレジスタ 次に、図3を参照してCPU12と、それの動作を詳し
く説明する。
【0016】CPU12は演算論理装置(ALU)55
と、3本のデータバスであるXバス、Yバス、Zバスに
接続される服すのデータ・レジスタとを含む。それらの
レジスタの動作と、バスとの相互接続は複数のスイッチ
56により制御される。それらのスイッチはROM13
に含まれているマイクロ命令プログラムから得た信号に
より制御される。それらのスイッチはチップ構造と一体
に形成されるスイッチであることがわかるであろう。C
PUとメモリ(19,20,21)の間の通信は、メモ
リ・インタフェイス14に接続されている一方向アドレ
ス路61と、インタフェイス14に接続されている双方
向データバス62とを介して行われる。レジスタと、バ
ス61,62と、バスX,Y,Zは図3に示すように接
続される。それらのレジスタは次のようなものである。
【0017】 略 語 レ ジ ス タ 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。
【0018】図3に示されているように、インクリメン
タ66とバイト・アライナ69も設けられる。
【0019】データバス62には、データバス線62を
プレチャージするように動作できるスイッチ75が設け
られる。XバスとYバスをプレチャージするために動作
できる同様なスイッチ76,77がそれぞれXバス、Y
バスに設けられる。XバスとYバス上の信号をマージさ
せるように動作する別のスイッチ78がXバスとYバス
の間に設けられる。
【0020】演算論理装置(ALU)55はXバスとY
バスから入力を受け、Zバスへ出力するように構成され
る。ALU55は、データ路の動作をALU55の出力
に依存して制御するように、出力8を条件マルチプレク
サ9を介してマイクロ命令プログラムROM13へ与え
る。
【0021】命令バッファ63は一連の8ビット語(こ
こでは命令と呼んでいる)を、メモリ(19,20,2
1)からインタフェイス14とバス62を介して受ける
ように構成される。各8ビット語は2つの部分より成
り、図5に示すようなフォーマットを有する。1つの部
分は後で説明する機能セットから選択される「機能」を
表し、他の部分はデータを表す。命令バッファ63は出
力をデコーダ64へ与える。このデコーダは命令を機能
部分とデータ部分に分ける。データ部分はオペランド・
レジスタにロードされ、機能部分は復号されてマイクロ
命令レジスタ(MIR)80へアドレスを与える。選択
された機能とは無関係に、全ての命令に対して同じ手続
がとられる。命令バッファ63により受けられた各命令
はMIR80にアドレスをロードする。そのアドレスは
ROM13内のマイクロ命令プログラムに、スイッチ5
6とインタフェイス制御ロジック15を制御する1つま
たはそれ以上のマイクロ命令を実行させて、マイクロ命
令の各シーケンスの終りにレジスタと、制御ロジック1
5と、その命令中の選択された機能に対応する図3に示
されているデータ路とによりオペレーションが行われる
ようにする。マイクロ命令プログラムのオペレーション
については後で詳しく説明する。
【0022】命令バッファ6とマイクロ命令レジスタ8
0を除き、図3に示す全てのレジスタは16ビット・レ
ジスタである。プロセッサが16ビット語プロセッサで
あるこの例においては、各命令が8ビット長であるから
プログラム中の各ビット語場所は2つの命令を含む。従
って、レジスタ67に保持されている命令ポインタは、
2つの命令を含んでいるプログラム語場所から1つの命
令を識別するために、特定の8ビットバイトを指すこと
をできることが必要である。このような理由から、この
例ではプログラム30(図2)がメモリ19の下半分だ
けに書き込まれる。この例ではメモリは64に語を有
し、メモリ場所のアドレスを15ビットだけで表すこと
ができるから、プログラム30は場所0〜32767に
書き込まれる。そのために命令ポインタ中に別のビット
が残り、そのビットは、ある特定の命令を識別するため
には各語のアドレスにおける2バイトのどれが必要であ
るかを識別するために使用できる。マイクロ命令ROM
13は122語を含む。各語は68ビットよりなる。R
OM13の各列には68ビットが含まれ、このROMが
いつでも68個の出力信号を生ずるように構成される。
マイクロ命令プログラムのオペレーションについては後
で詳しく説明する。
【0023】図3からわかるように、メモリ・インタフ
ェイスの状態を記録するために用いられる複数の1ビッ
ト状態ラッチがインタフェイス・ロジック制御器15に
設けられる。実行ラッチと呼ばれるラッチ110が実行
すべき命令のソースを定める。ラッチ110が状態1を
有する時は命令のソースはメモリであるしこのメモリは
希望によってはインタフェイス23を介して接続される
外部メモリとすることができる。ラッチ110が状態0
を有する時は、命令を外部ソースから受けることができ
るようにするために、命令のソースは直列リンク25の
1つである。2つまたはそれ以上の連続する命令に対し
ては同じ直列リンク25へ繰り返し行うことが必要なこ
とであるが、メモリから命令を取り出す場合には、各命
令ごとに命令ポインタIPTRが進められる。IBラッ
チ112がIBレジスタ63の状態を記録する。MAD
DRラッチ113がMADDRレジスタの状態を記録す
る。MEM ENABLEラッチ114がメモリ・イン
タフェイスの状態を記録し、メモリ・インタフェイス1
4が占められている時は常に状態1を有する。メモリに
対して書き込み要求が行われたことをWRITEラッチ
115が記録する。また、バイト要求がメモリに対して
行われたことをBYTEラッチ16が記録する。UPP
ER/LOWERラッチ117がバイト・アドレスの最
下位ビットを保持する。その最下位ビットは、Aレジス
タの内容が1つの桁だけ右へ移動作せられた時に、Aレ
ジスタ71の最下位ビット位置からロードされる。機能セット 命令バッファ63により受けられる命令の機能要素は、
マイクロコンピュータのための機能セットにより決定さ
れる。その機能セットは、プログラムを書く時に選択で
きる利用可能な機能のリストであり、それらの機能に対
してマイクロコンピュータは応答できる。
【0024】機能セットには直接機能と、間接機能と、
プレフィクシング機能との3つの種類の機能がある。
【0025】直接機能は、オペランド・レジスタ65の
内容をデータとして用いる(他のレジスタの内容もデー
タとして使用できる)。
【0026】間接機能は、オペランド・レジスタ65以
外のレジスタ内のデータを用いて種々の「オペレーショ
ン」のうちの1つを選択するために、オペランド・レジ
スタ65の内容を用いる。
【0027】プレフィクシング機能は、オペランドをオ
ペランド・レジスタ65に累積する。その機能セットは
次の通りである。
【0028】 機 能 コード番号 略 記 号 名 称 直接機能 0 1dw 作業域からのロード 1 stw 作業域への格納 2 1dpw 作業域内へのロード・ポインタ 3 1dwi 作業域からのロードおよびインクリメント 4 1dv ベクトルからのロード 5 stv ベクトルへの格納 6 1dl リテラル・ロード 7 adl リテラル加算 8 j 飛越し 9 jnz 非零へ飛越し 10 ldpc コードへのポインタ・ロード 11 call プロシージャ呼び出し 間接機能 13 opr オペレート プレフィクシング機能 14 pfix プレフィクス 15 npfix ネガティブ・プレフィクス 間接機能を用いて行うことができるオペレーションは次
の通りである。
【0029】 それらの機能とオペレーションについて説明する前に、
この明細書で用いる記法について述べることにする。T
ransputerマイクロコンピュータにはOCCA
M(インモス・インターナショナル(Inmos Internatio
nal)plcの商標)言語をなるべく用いるようにする。
このOCCAM言語は、1983年にインモス社(Inmo
s Limited)により英国において出版および配布された
「OCCAMプログラミング・マニュアル(Programmin
g Manual-OCCAM)」と題する小冊子と、雑誌エレクトロ
ニクス(Electronics)1982年11月3日号所載の
「プロセス向き言語は分散処理の要求に適当である(Pr
ocess-Oriented Language Meets Demands of Distribut
ed Processing)」と題するテーラー(Taylor)およびウ
ィルソン(Wilson)の論文とに詳しく記載されている。
OCCAM言語は並行処理にとくに良く適する。ここで
説明している本発明の好適な実施例は並行処理にとくに
適するから、この例にOCCAM言語を用いることは極
めて適切である。他言語は適切なコンパイラとともに使
用できる。実際の応用においては、プログラマはOCC
AM言語を用いてプログラムを書き、そのプログラムを
コンパイラが普通のやり方で特定の命令に変換する。し
かし、ここで説明するマイクロコンピュータの好適な実
施例内で起ることを示すために、命令中の機能とオペレ
ーションをOCCAM言語を用いて記述する余地があ
る。したがって、それらの機能とオペレーションおよび
使用の例の記述においては下記の記法を用いることにす
る。記 法 1. プロセスは開始され、いくかつの動作を実行して
から終る。各動作は割当、入力または出力とすることが
できる。割当は変数の値を変え、入力はチャネルから値
を受け、出力は値をチャネルへ送る。
【0030】開始と終了の間の任意の時刻に、プロセス
は1つまたはそれ以上のチャネルで通信を行う用意がで
きるようにできる。各チャネルは2つの並行プロセスの
間で一方向接続を行う。それら2つの並行プロセスの一
方はチャネルへ出力するだけ、他方はチャネルから入力
するだけである。
【0031】割当は記号「:=」で示される。割当 v:=e は変数vの値を式eの値にセットしてから終る。たとえ
ば、x:=0はxを0にセットすること、x:=x+1
はxの値を1だけ増加することを意味する。
【0032】入力は記号「?」で示される。入力 c?x は、チャネル「c」からある値を入力し、それを変数x
に割当ててから終ることを意味する。入力 c?ANY は、チャネル「c]からある値を入力し、その値を捨て
ることを意味する。
【0033】出力は記号「!」により示される。出力 c!e は式eの値をチャネル「c]へ出力し、それから終るこ
とを意味する。出力 c!ANY は、任意の値をチャネル「c」へ出力することを意味す
る。
【0034】プロセスSKIPは何の作用も行わずに終
了する。 2. CONSTRUCT 順次construct、並列construct、条
件付constructまたはオルターネイティブco
nstructを形成するためにいくつかのプロセスを
組合わせることができる。construct自体はプ
ロセスであって、別のconstructの構成部とし
て使用できる。あるconstructの各構成部プロ
セスは、それがそのconstructの部分であるこ
とを示すために、左マージンから更に2つの空白をとっ
て書かれる。
【0035】順次constructは次のようにして
書かれる。
【0036】 構成部プロセスP1,P2,P3…は互いに順次実行さ
れる。各構成部プロセスは1つが終ってから次が開始さ
れ、最後の構成部プロセスが終ってからconstru
ctは終る。たとえば、 は、ある値を入力し、その値に1を加え、その結果を出
力する、ことを意味する。
【0037】並列constructは により表される。構成部プロセスP1,P2,P3…は
いっしょに実行されるから、並行プロセスと呼ばれる。
全ての構成部プロセスが終った後でconstruct
は終了する。たとえば、 はxへの入力と、yからa出力をいっしょに行えるよう
にするものである。
【0038】並行プロセスはチャネルを用いて通信す
る。チャネル「c」からの入力と、同じチャネル「c」
への出力がいっしょに実行されると、入力と出力を行え
る状態になった時に通信が行われる。値は出力プロセス
から入力並行プロセスへ割当てられ、それから両方の並
行プロセスの実行が継続される。
【0039】 は、条件1が真であるならばプロセスP1が実行され、
さもなければ、条件2が真であればプロセスP2が実行
される…等であることを意味する。このconstru
ctにおいてはただ1つのプロセスが実行され、実行後
にconstructは終る。たとえば、 では、xの値が正である時だけyが大きくなる。
【0040】 は、入力1,2…のうちの1つの準備が整うまで待つこ
とを意味する。入力1が最初に準備が整ったとすると入
力1が実行され、それからプロセスP1が実行される。
同様に、入力2が最初に準備が整うと入力2が実行さ
れ、それからプロセスP2が実行される。すなわち、た
だ1つの入力が実行され、その後で対応するプロセスが
実行され、それからconstructが終る。たとえ
ば、 では、いずれもチャネル「count」から信号を入力
し、可変「counter」を1だけ増加し、あるいは
チャネル「total」から交互に入力し、可変「co
unter」の現在の値を出力し、それを零リセットす
る。 3. くり返し(REPETITION) これは、条件の値が偽となるまでプロセスPをくり返し
実行する。たとえば、 は、xの値が5以下になるまでxを5ずつ減少すること
である。 4. VARIABLES variableは記憶装置内の1つの語に対応する簡
単な変化、またはベクトルと呼ばれるvariable
の番号をつけられたセットの1つである。たとえば、v
〔3〕:=0はベクトルv内の3番のvariable
の値を0にセットし、v
〔0〕+1は0番のvaria
bleの値を1だけ増加する。
【0041】variableは のような宣言により導入される。これはプロセスPにお
いて使用するためにvを導入する。 5. 手続(PROCEDURES) 手続の定義によりプロセスに名称を与えることができ
る。たとえば、 は手続「square」を定義する。
【0042】手続の名称はプロセスのための略語として
使用できる。たとえば、 square(x,sqrx) は sqrx:=x*x を意味する。 6. EXPRESSIONS expressionはオペレータ、変数、数、真理値
の真と偽および括弧(と)から構成される。
【0043】真は1ビットよりのみ成る値であり、偽は
0ビットのみより成る値である。
【0044】オペレータ+,−,*,/は加算、減算、
乗算、除算を表す。
【0045】オペレータ=,<>,>,<=に対しては
結果は下記のようになる。
【0046】x=y xがyに等しいと真である x<>y xがyに等しくなければ真である x>y xがyより大きければ真である x<=y xがyより小さいか、yに等しければ真で
ある オペレータ\/,/\,><の場合には、結果の各ビッ
トは下の表に従ってオペランドの対応するビットから発
生される。
【0047】 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オペレータの場合には、結果の各ビットは、下の
表に従ってオペランドの対応するビットから発生され
る。
【0048】 x NOTx 0 1 1 0 オペレータ〈〈,〉〉の場合には x〈〈yは左へyビット動かされるxの値で、空いたビ
ット位置は0ビットで埋められる x〉〉yは左へyビット動かされるxの値で、空いたビ
ット位置は0ビットで埋められる 以上説明した一般的なOCCAM言語表記を本発明のマ
イクロコンピュータに適用することにする。
【0049】レジスタの変数は次のように定義される。
【0050】IPTRは命令ポインタ・レジスタ67の
内容を表す WPTRは作業域ポインタ・レジスタ73の内容を表す LPTRはリスト・ポインタ・レジスタ74の内容を表
す AREGはAレジスタ71の内容を表す BREGはBレジスタ72の内容を表す OREGはオペランド・レジスタ65の内容を表す 1つのレジスタから他のレジスタへの転送は により表される。これは、Aレジスタの内容がBレジス
タへ複写され、Bレジスタの以前の内容に置き換えられ
る。
【0051】TRANSPUTER内のメモリは により表される。
【0052】メモリ内の個々の語は を下側に記す(subscripting)することにより識別され
る。これは、Aレジスタの内容をアドレスとするメモリ
内の語の内容を意味する。メモリとレジスタの間の転送
により同様に表される。これは、Aレジスタの内容をア
ドレスとするメモリ内の語の内容が、作業域・ポインタ
・レジスタの内容で置き換えられることを意味する。
【0053】3つの手続(PROC)「run」,「w
ait」,「moveto」が以下の記述中にしばしば
現われる。それらは次のようにして定義される。すなわ
ち、リンク〔process〕は直列リンク25のプロ
セス・レジスタ47の内容を表し、NILはどのプロセ
スの作業ポインタではない特殊な値を表す。READY
は直列リンクにより使用される別の特殊な値を表す。
【0054】 1 PROC run(w) 2 IF 3 w<>READY 4 SEQ 5 memory〔LPTR−2〕:=w 6 LPTR:=w 7 w=READY SKIP 1 PROC wait 2 SEQ 3 memory〔WPTR−1〕:=IPTR 4 直列リンクからの各外部要求に対して 5 SEQ 6 run(1ink〔process〕) 7 1ink〔process〕:=NIL 8 WPTR:=memory〔WPTR−2〕 9 IPTR:=memory〔WPTR−1〕 1 PROC moveto(w) 2 SEQ 3 IF 4 WPTR=LPTR 5 LPTR:=w 6 WPTR<>LPTR 7 memory〔w−2〕:=memory〔WPTR−2〕 8 WPTR:=w 上記の手続においては、以下に行う説明の参考のために
行番号をつけてある。機能とオペレーションの定義 それらの定義について、前記した記法を用いて以下に述
べることにする。作業域からのロード 定義: SEQ BREG:=AREG AREG:=memory〔WPTR+OREG〕 目的: 現在のプロセス作業域内の場所の値をロードす
ること。作業域への格納 定義: SEQ memory〔WPTR+OREG〕:=AREG AREG:=BREG 目的: 現在のプロセス作業域内の場所に値を格納する
こと。作業域へのポインタのロード 目的: 現在のプロセス作業域内の場所へポインタをロ
ードすること。
【0055】現在のプロセス作業域内の場所のベクトル
(vector)の第1の場所にポインタをロードすること。作業域からのロードおよびインクリメント 定義: SEQ BREG:=AREG AREG:=memory〔WPTR+OREG〕 memory〔WPTR+OREG〕:=AREG+1 目的: 現在のプロセス作業域内の場所の値をロード
し、その場所をインクリメントすること。
【0056】ループ・カウンタとして作業域場所の使用
を容易にし、零へ向って増加させること。
【0057】語またはバイトのvectorへポインタ
を増加させる時に作業域場所の使用を容易にすること。ベクトルからのロード 定義: AREG:=memory〔AREG+ORE
G〕 目的: 外部作業域から値をロードすること。
【0058】値のベクトルから値をロードすること。
【0059】値をポインタとして用いて(間接的に、こ
の場合にはOREG=0)値をロードすること。ベクトルへの格納 定義: SEQ memory〔BREG+OREG〕:=AREG AREG:=BREG 目的: 外部の作業域内の場所に値を格納すること。
【0060】値のベクトルに値を格納すること。
【0061】値をポインタとして用いて(間接的に、こ
の場合にはOREG=0)値を格納すること。リテラルのロード 目的: 値を格納すること。リテラル加算 定義: AREG:=AREG+OREG 目的: 値を加算すること。
【0062】外部作業域内の場所にポインタをロードす
ること。
【0063】値のベクトル内の場所にポインタをロード
すること。飛越し 定義: IPTR:=IPTR+OREG 目的: 制御を前方または後方へ転送し、ループを形成
し、ループから出、プログラムの条件付部分の後で継続
すること。非零の飛越し 目的: 非零値がロードされた時だけ制御を前方または
後方へ転送し、プログラムの部分を条件付で実行し、条
件付ループを出ること。
【0064】値と値のセットとの比較を容易にするこ
と。ポインタのコードへのロード 目的: 命令のアドレスをAレジスタにロードして、プ
ログラムの部分を形成するデータのベクトルのサドレス
をロードすること。手続呼出し 定義: SEQ memory〔WPTR−1〕:=IPTR IPTR:=AREG AREG:=WPTR moveto(WPTR+OREG) 目的: 効率の良い手続呼出し機構を得ること。
【0065】同じプロセッサで2つの同じ手続が実行さ
れる場合に、コードの共用を容易にすること。間接機能 オペレート(operate) 定義: operate(OREG) 目的: 求められているオペレーションを定義するコー
ドとしてオペランド・レジスタ(OREG)の内容を用
いてオペレーションを実行すること。プレフィクシング機能 プレフィックス(prefix) 定義: OREG:=OREG〈〈4 目的: 0〜15の範囲にない命令オペランドを1つま
たはそれ以上のプレフィックス命令を用いて表すことが
できるようにすること。否定プレフィックス(negative prefix) 定義: OREG:=(NOT OREG)〈〈4 目的: 零またはそれ以上のプレフィックス命令が続く
1つの否定プレフィックス命令を用いて否定オペランド
を表すことができるようにすること。オペレーション(operations) reverse 目的: AレジスタとBレジスタの内容を交換するこ
と。
【0066】非対称的なオペレータのオペランドを反転
させること、この場合にはこれはコンパイラでは都合良
く行うことはできない。零に等しくする(equal to zero) 目的: Aが非零値を保持しているかどうかを判定する
こと。
【0067】論理(ビットに関してでなく)否定を実行
すること。
【0068】A=0 as eqz A<>0 as eqz,eqz ifA=0… as jnz ifA<>0… as eqz,jnz を実行すること。より大きい(greater) 目的: AとBを比較し(それらを2つの相補整数とし
て処理して)、BがAより大きいと1(真)をロード
し、それ以外は0(偽)をロードすること。
【0069】オペランドを反転することによりB<Aを
実行すること。
【0070】オペランドと(gt,eqz)を反転する
ことによりB<=A as(gt,eqz)とB>=A
を実現すること。論理積(and) 定義: AREG:=AREG/\BREG 目的: AとBのビットについてのAND操作の結果を
ロードし、AとBにおける対応するビットが1にセット
されるならば各ビットを1にセットし、それ以外では0
にセットすること。
【0071】2つの真値を論理的にAND操作するこ
と。論理和(or) 定義: AREG:=BREG\/AREG 目的: AとBのビットについてのOR操作の結果をロ
ードし、AとBの対応するビットのいずれかがセットさ
れるならば各ビットを1にセットし、それ以外は0にセ
ットすること。
【0072】2つの真の値を論理的にOR操作するこ
と。排他的or(exclusive or) 定義: AREG:=BREG><AREG 目的: AとBのビットについての排他的OR操作の結
果をロードし、AとBの対応するビットが異なる時は各
ビットを1にセットし、それ以外は0にセットするこ
と。
【0073】ビットについての not as(1dl−1,xor) を実行すること。加算(add) 定義: AREG:=BREG+AREG 目的: BとAの和をロードすること。
【0074】ベクトル内の語またはバイトのアドレスを
計算すること。減算(subtract) 定義: AREG:=BREG−AREG 目的: BからAを減じ、結果をロードすること。
【0075】A=B as sub,eqz A<>B as sub,eqz,eqz ifA=B as sub,jnz,… ifA<>B as sub,eqz,jnz,… を実行すること。プロセス実行(run process) 目的: プロセスをアクティブ・プロセス・リストの終
りに加えること。休止(pause) :SEQ 目的: 現在のプロセスの実行を一時的に休止するこ
と。
【0076】現在アクティブ・プロセス・リスト上にあ
るプロセスの間でプロセッサ時間を共用すること。結合(join) 定義: IF memory〔AREG〕=0 moveto(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)/(ARE
G〉〉(bitsperword−8)) 目的: 8ビット・バイト値を組合せて1つの語の値を
形成できるようにするためにAレジスタ内のバイトを回
転させること。
【0077】語の値をいくつかのコンポーネント8ビッ
ト値に分割できるようにすること。右桁送り(shift right) 定義: AREG:=AREG〉〉1 目的: Aレジスタの内容を右へ1桁だけ桁送りするこ
と。左桁送り(shift left) 定義: AREG:=AREG〈〈1 目的: Aレジスタの内容を左へ1桁だけ桁送りするこ
と。
【0078】上記の機能セットは直接機能と、間接機能
と、プレフィクシング機能とを含むことがわかるであろ
う。任意の命令の開始時には、その命令に対して選択さ
れた機能とは無関係に、命令バッファ63内の命令の機
能部分を受ける所定のビット位置セットが入力をデコー
ダ64へ与えるために用いられ、各命令のデータ部分を
表す他の所定のビット位置が、オペランド・レジスタ6
5の下位4ビット位置をロードするために用いられる。
その機能が直接機能であるとすると、オペランド・レジ
スタ65の内容に対して選択された機能に従ってプロセ
ッサは作動する。その機能が間接機能であれば、実行す
べきオペレーションの性質を決定するためにオペランド
・レジスタ65の内容が用いられ、他のレジスタに保持
されているデータについてオペレーションが行われる。
機能が直接または間接であるような任意の命令が終る
と、オペランド・レジスタ65は零にクリアされる。そ
の機能がプレフィクス機能であれば、プロセッサはオペ
ランド・レジスタ65中に存在するデータを高い桁の位
置へ転送し、その後で、そのために空いた下位桁の位置
にその命令のデータ部分をロードする。
【0079】各命令の始めに命令ポインタは増加させら
れる。したがって、命令ポインタは次に実行すべき命令
を常に指す。
【0080】オペランド・レジスタは種々の目的のため
に用いられる。オペランド・レジスタ65が各命令で受
ける「データ」は計算用のリテラル値のこともあれば、
間接機能の場合には求められている機能の定義のことも
ある。別の重要な用途は、ある特定の変数の値を見出す
場所、または格納する場所のアドレスを探すために、あ
る機能に対して、オペランド・レジスタ65内のデータ
値が作業域・ポインタ・レジスタ73内のデータに組合
わされることである。たとえば、作業域・ポインタ・レ
ジスタ73は現在のプロセスの作業域ポインタWPTR
を含む。これはその作業域のための基準メモリ・アレド
スを指す。変数またはその他のポインタは定義され、作
業域ポインタWPTRにより指し示されたアドレスから
既知量だけずれているその作業域のアドレス場所に格納
される。そのずれは一般に命令部分により指定され、オ
ペランド・レジスタ65内に格納される。実際に、作業
域命令からのロードと格納は、WPTRレジスタ73の
内容とオペランド・レジスタ65の内容の組合せ(たと
えば加え合せ)により定められるメモリ場所を暗黙のう
ちに指す。更に、ベクトルをアクセスするため、または
プログラムにおいて分岐するために、オペランド・レジ
スタ65の内容はAレジスタ71またはIPTRレジス
タ67のような他のレジスタの内容に組合わされる。こ
れの例は後で説明する。
【0081】オペレーションの効率を最高にするため
に、最も一般的に求められる動作をカバーするように直
接機能が選択されることがわかるであろう。各命令の機
能要素を表すために4ビットを用いることにより、機能
セットはコード0〜15を用いる。もっとも、コード1
2には機能は割当てられていない。コード13は間接機
能を示すために用いられる。その間接機能は、この場合
には、命令の下位4ビットを通常のやり方でオペランド
・レジスタ65にロードさせる「オペレート」機能であ
るが、そのオペランド・レジスタの内容は、他のレジス
タに保持されているデータについてのオペレーションを
決定するためにプロセッサによりそれから用いられる。
このようにして、8ビット命令の一様性を保ちつつ、オ
ペレーションの数を増加できることがわかるであろう。
「オペレート」命令の前にプレフィクス機能または負プ
レフィクス機能を用いることにより、オペランド・レジ
スタ65の内容を変えて、先に説明したものよりもはる
かにオペレーション選択を行うことができる。pfix
とnfixの使用については図8を参照して詳しく説明
するが、マイクロ命令プログラム13のオペレーション
を更に説明することがまず必要である。
【0082】マイクロ命令プログラムというのは、マイ
クロコンピュータのプログラムから命令バッファ63に
到達する各逐次命令の求められている「機能」を実行す
るために、スイッチ56(図3)とインタフェイス制御
ロジック15を制御する制御信号を発生する手段であ
る。マイクロ命令プログラムはROM13の列と行に格
納されているマイクロ命令のリストより成る。ROM1
3はマイクロ語と呼ばれる出力を生ずる。その出力は6
4ビットより成り、各ビットは制御信号を構成する。そ
の出力は複数のフィールドに分割され、各フィールドは
所定のビット位置群より成る。ある任意の時刻における
出力は、選択されたマイクロ命令に応じて選択されたビ
ット位置に与えられる。各フィールドはある特定の制御
領域に関連させることができる。たとえば、1つのフィ
ールドがどのレジスタがXバスに接続されるかを制御
し、別のフィールドがどのレジスタがYバスに接続され
るかを制御し、他のフィールドがどのレジスタがZバス
に接続されるかを制御し、更に別のフィールドがALU
55の動作を制御し、更に別のフィールドがマルチプレ
クサ9とMIR80への帰還信号を制御する。1つのフ
ィールドがインタフェイス制御ロジック15を制御し、
「読み出し」、「書き込み」、「求められた次の命令
(NEXT)」のようなマイクロ命令出力信号を与え
て、マイクロ命令がインタフェイス14を介してのレジ
スタとメモリ19の間の通信を制御できるようにする。
【0083】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内の命令のオペレーショ
ンを行うために全てのマイクロ命令が実行されると、R
OM13のマイクロ語出力のフィールド内に制御信号
「NEXT」が発生され、それによりメモリ19から命
令バッファ63への次の命令を要求する。
【0084】各マイナー・サイクルはソース相と宛先相
の2つの相より成る。ROM13から発生された制御信
号は、ソース相の間だけアクティブである群と、宛先相
の間だけアクティブである群と、マイナー・サイクル全
体にわたってアクティブである群との3つの群に分けら
れる。制御信号の発生と持続時間を制御するために、図
6に示されている4種類のストローブ信号を発生するよ
うにタイミング制御器が構成される。それらのストロー
ブ信号はソース・ストローブ信号150と、宛先ストロ
ーブ信号151と、行プレチャージ・ストローブ信号1
52と、マイクロ命令ストローブ信号153である。ソ
ース・ストローブ信号は、レジスタがそれの内容をバス
上に置けるようにするタイミング信号であって、それの
持続時間は演算論理装置が結果を形成するのに十分なほ
ど長い。宛先ストローブ信号はレジスタがデータをバス
から受けることができるように構成される。マイクロ命
令ストローブ信号は条件マルチプレクサ9から次のマイ
クロ命令のアドレスを発生するために用いられる。行プ
レチャージ・ストローブ信号は、次のソース・ストロー
ブ信号のための準備が整う高レベル状態へバス線XとY
をプレチャージするために用いられる。それらのストロ
ーブ信号の相対的なタイミングと持続時間が図6に示さ
れている。それらのストローブ信号は図7に示す装置に
より発生される。ピン28(第1図)からのクロックパ
ルスが各マイナー・サイクルの開始のためのGO信号を
発生する。この信号はCPU12内の4つの連続する遅
延器を通され、第1の遅延器154の出力端子からマイ
クロ命令ストローブ信号153がとり出され、第2の遅
延器155の出力端子から宛先ストローブ信号151が
とり出され、第3の遅延器156の出力端子から行プレ
チャージ・ストローブ信号152がとり出され、第4の
遅延器157の出力端子からソース・ストローブ信号1
50がとり出される。したがって、プロセッサの動作は
外部クロック入力28に同期させられる。
【0085】可変長オペランドの使用 先に説明したように、このマイクロコンピュータは可変
長オペランドで動作できる。各命令は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
図を参照して説明したようにマイクロ命令プログラム1
3内のアドレスを選択するために機能要素が用いられ
る。第8図の真理値表は、機能がpfixまたはnfi
xに対応し、またはいずれにも対応しない3つの可能性
を示すものである。その真理値表には、ROM13のマ
イクロ語出力から線100〜104へ与えられる対応す
る制御信号と、それらの信号の持続時間も示されてい
る。
【0086】この場合に用いられるマイクロ語出力制御
信号は次の通りである。 1. OPD NOT 0:これは、真理値表が「1」
を有する時にはオペランド・レジスタ65には零が供給
されないが、真理値表が「0」を有する時はレジスタ6
5に零が供給されることを意味する。 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」を有する時は
そうではないことを意味する。
【0087】各マイナー・サイクルにおけるそれら5つ
の制御信号の持続時間は第8図に示されている。第8図
において、Sはソース相だけにおける持続時間を示し、
Dは宛先相だけにおける持続時間を示し、S+Dは両方
の相における持続時間を示す。
【0088】線100上のマイクロ語制御信号はゲート
91と92を動作させて、Zバスが機能pfixとnf
ixに応答してオペランド・レジスタ65にロードしな
いようにし、他のどの機能もオペランド・レジスタ65
の上位3つの段をゲート92を介しての入力により零に
させる。全ての命令信号は最後のマイナー・サイクルで
制御信号NEXTを発生する。その信号は線101へ与
えられてオペランド・レジスタ65に次のオペランドを
ロードさせる。線102は信号「Y FROMOPD」
を受け、pfixとnfixに対してオペランド・レジ
スタをゲート90を介して接続させる。線103は制御
信号「Z FROM Y」を受け、pfixの場合には
ALU55にYバス上の信号をZバスへ送らせるが、n
fixに対してはそうさせない。線104は制御信号
「Z FROM Y」を受け、nfixの場合にはYバ
ス上の信号を反転してからALU55を通ってZバスへ
供給できるようにするが、pfixの場合にはそうさせ
ない。線100,103,104上の信号は各マイナー
・サイクルのソース相と宛先相の全体を通じて存在する
が、線101上の信号は宛先相の時だけ存在し、線10
2上の信号はソース相の時だけ存在する。機能がpfi
xの時は、真条件に対応する信号が線100,101,
102,103に供給され、このようにしてオペランド
・レジスタ65の下位部分のオペランドの4ビットがA
LUを通じてオペランド・レジスタ65の次に高い位の
段へ進ませられ、それによりオペランドの別の4ビット
をオペランド・レジスタ65の下位位置にロードできる
ようにする。この動作は、オペランドの最高16ビット
まで、命令がpfix機能でとり出されるたびに反復さ
れる。同様に、機能がnfixであれば、プロセスは全
体として類似して、各命令の後に零が書き込まれること
なしに、オペランドの引き続く各4ビットをオペランド
・レジスタの高位の段へ移動させるようにする。これに
より負のオペランドを最大16ビットまで形成できる。
機能がpfixとnfixのいずれでもないと、線10
0上の制御信号が零を、その命令の終りに、オペランド
・レジスタ65の3つ上位の段(ビット15〜4を表
す)へ与えさせることをこの真理値表は示す。
【0089】プロセスのスケジューリング 先に述べたように、このマイクロコンピュータはいくつ
かの並行プロセスを行うことができる。したがって、こ
のマイクロコンピュータはある特定の時刻にどのプロセ
スを実行すべきかを決定する計画のシステムを与える。
ある時刻にWPTRレジスタ73(第3図)は現在実行
されているプロセスの作業域ポインタを保持する。しか
し、現在のプロセスの作業域と、実行されるのを待って
いる別のプロセスの作業域とはリストを形成し、そのリ
ストにおいては各作業域の1つの場所がリスト上の次の
プロセスの作業域ポインタを保持する。各プロセス作業
域内の別の場所が、そのプロセスの次に実行すべき命令
を識別する命令ポインタを保持する。更に、LPTRレ
ジスタ74が現在実行を待っている最後のプロセスのた
めの作業域のアドレスを含む。このようにして新しいプ
ロセスをそのリストの終りにつけ加えることができ、L
PTRレジスタ74はそのリストの現在の終りを常に指
示する。プロセッサはリスト上のプロセスを逐次実行す
るのが普通で、現在のプロセスが「休止」オペレーショ
ン(オペレーション・リストのコード9)を実行する
時、または現在のプロセスが「結合」オペレーション
(オペレーション・リストのコード10)を実行するこ
とにより自身でスケジュールを破った時、または同期オ
ペレーション(オペレーション・リストのコード11)
の時に、次のプロセスへ進むだけである。それらの状況
のいずれにおいても、現在のプロセスはそれ以上の命令
の実行を止めて、プロセッサは、第2図の36で示され
ているように、プロセス作業域に命令ポインタIPTR
を留保して、第2図に35として示されている次のプロ
セスのアドレスにより識別されている次のプロセスへ動
き、それから新しいプロセスのためのIPTRをIPT
Rレジスタ67にロードする。少くとも1つのプロセス
実行が常に存在するように、零プロセスが設けられ、他
のプロセスがアクティブでない時はその零プロセスが実
行される。
【0090】先に定義した手続「実行(run)」、
「待機(wait)」、「へ移動(moveto)」は
スケジューリングにおいて使用される。あるプロセスは
それが現在のプロセスである時、または実行されること
を待っているプロセスの結合されたリスト上にある時
に、そのプロセスは「スケジュールされる」。あるプロ
セスが結合されているリストから外された時に「スケジ
ュールから外される」ことになる。スケジュールから外
されたプロセスは、他のプロセスまたは命令がその外さ
れたプロセスをスケジュールに含ませる、すなわち、結
合されたリストの末尾にそれを加えるまでは、決して実
行されることはない。LPTRレジスタ74(第3図)
はリスト上の最後のプロセスのための作業域ポインタを
格納するために用いられることを思い出すであろう。し
たがって、プロセスが結合されたリストに付加されるた
びにLPTRレジスタ74を調整せねばならない。ま
た、あるプロセスをスケジュールに含める場合には、そ
のプロセスの次にどの命令を実行すべきかをCPU12
は決定できなければならない。これは適切な命令ポイン
タIPTRをメモリに格納することにより行われる。プ
ロセスが実行中はそのIPTRはIPTRレジスタ76
内にある。その格納はたとえばメモリ場所36(第2
図)で行われる。
【0091】それらの手続の説明においては、作業域3
2と33とレジスタ65,67,71,73,74を示
す第4図を参照すると便利である。第4図は代表的なメ
モリ・アドレスと、作業域の内容を示すものである。
【0092】作業域32を有するプロセスは、それの作
業域ポインタWPTRをレジスタ73に挿入することに
より現在のプロセスにされる。この場合にはWPTRは
10000に等しい。プロセスが現在のプロセスになる
と、プロセッサはWPTR−1を調べることにより、す
なわち、メモリ場所9999における内容を調べて、あ
る命令に対するポインタ84を見つけ、それをIPTR
レジスタ67にロードすることにより、次に実行する命
令を見つける。これが現在のプロセスであるが、プロセ
ッサは次の命令を指すためにIPTRレジスタ67の内
容を使用する。
【0093】処理中は、プロセッサは、WPTRすなわ
ちAレジスタ71の内容のような基準値と、レジスタ6
5に置かれているオペランドを組合わせることにより形
成されるアドレスを有する変数を使用する。作業域オペ
レーションからのロードにおいては、「2」のオペラン
ドがメモリ場所10002にあるものを何でも対象と
し、作業域32に対応するプロセスが現在行われる。処
理を停止する時は、結合されているリストが調べられ
る。要素85,86は結合されているリストの部分であ
る。次の作業域を指すメモリ場所9998におけるWP
TR85を見つけるために、プロセッサはWPTR−2
を調べる。ポインタ85は作業域33を指す数1100
0を含む。作業域33に対応するプロセスが結合さてい
るリスト上の最後のプロセスであるとすると、LPTR
レジスタ74がポインタ11000を含む。結合されて
いるリストにあるプロセスが付加されるまではポインタ
86はメモリ場所10998に格納されない。
【0094】ここで3つの手続について説明することに
する。PROC run(w)がwにより定められるプ
ロセスをスケジュールにするため、すなわち、そのプロ
セスを結合されているリストに加えるために用いられ
る。この手続は先に定義したものであるが、ここでその
定義と、その定義に用いた線番号を参照することにす
る。
【0095】wの値が特殊な値「READY」であると
すると、何の動作も実行されない。これについてのそれ
以上の説明は種々のマイクロコンピュータの間の通信に
ついて後で行うことにする。それ以外はwはプロセス作
業域に対するポインタであって、線5,6が逐次実行さ
れる。線5においては、LPTRはLPTRレジスタ7
4の内容を意味する。それは、結合されているリスト上
の最後のプロセスのための作業域に対する基準アドレス
に対するポインタである。アドレスがLPTR−2であ
るメモリは次のプロセスのための作業域ポインタのアド
レを含むが、LPTRが最後のプロセスに対応するから
まだ何もない。いまは線5がw(プロセスwにおける作
業域ポインタ)をメモリ場所LPTR−2に割当てるか
ら、いまはプロセスwは結合されているリストの終りに
ある。この点ではLPTRレジスタ74の内容は最後の
プロセスwを指さず、最後から2番目のプロセスを指
す。これは、プロセスwのための作業域ポインタをLP
TRレジスタ74に入れる線6において修正される。こ
のステップのために、プロセスwを意図しないのに削除
することなしに、結合されているリストに別のプロセス
を付加できる。そのような削除は、LPTRレジスタ7
4が更新されない時に起る。第4図を参照して、ただ2
つの処理されているプロセスがあり、かつポインタが1
2000である作業域にプロセスwが対応するものとす
ると、PROC run(w)が12000をメモリの
〔10998〕に入れ、12000をレジスタ74に入
れる。
【0096】「待機(wait)」と呼ばれる手続は単
独で、またはPROC run(w)と組合せて、使用
できる。それ自身でその手続は現在のプロセスをスケジ
ュールか外し、システムが次のプロセスを実行できるよ
うにし、それのプログラムの最初の命令における代りに
そのプログラム中の適切な所でそのプロセスを実行す
る。ここで、PROC waitについて先に行った定
義を参照することにする。PROC「wait」が呼出
されると(線1)、4つのステップ(線3,4,8,
9)を有するシーケンスが開始される(線2)。線4〜
7は外部からの要求に関するものであり、これについて
の説明を延ばすことができる。もっとも、リンク(プロ
セス)は直列リンク25(第2図)のプロセス・レジス
タ47の内容を表す。線3においては、メモリ〔WPT
R−1〕はアドレスWPTR−1におけるメモリ・スペ
ースである。そのアドレスは現在のプロセスの基準アド
レスWPTRを基にしている。ここで説明している実施
例においては、そのメモリ場所は、プロセスが推奨され
た時に次に実行される命令を指すために用いられる。I
PTRレジスタ67の内容は、現在のプロセスの次に実
行する命令を常に指す。したがって、線3は次に実行す
る命令に対するポインタをメモリ(なるべくなら同じチ
ップ上の)に単に格納するだけである。手続PROC
run(w)がPROC waitに先行するものとす
ると、この時には、現在のプロセス(w)は結合されて
いるリストの終りに付け加えられており(PROC r
un(w)1により)、LPTRレジスタ74は更新さ
れており(やはりPROC run(w)により)、い
まはプロセスwのための次の命令に対するポインタは、
プロセスwのための作業域ポインタのアドレス(WPT
R)に関して既知の場所、メモリ〔WPTR−1〕に格
納されている。したがって、プロセスwはいまは実行さ
れなくなるための準備が整う。線8は次のプロセスのた
めの結合されているリストを調べる。それの作業域は現
在の作業域のアドレスWPTR−2における内容により
指される。したがって、線8は結合されているリスト上
の次のプロセスのための作業域ポインタをWPTRレジ
スタ73に割当てる。今は基準アドレスが進み、装置は
メモリのアドレスWPTR−1に格納されているポイン
タを調べることにより、このプロセスのための次の命令
であるかを探す。第4図を用いるために、作業域32が
現在行われており、それのプロセスがPROC wai
tを含む命令を受けることについて考察する。最初はW
PTRは10000である。線8において、線73はメ
モリ・アドレス9998において見出される内容にセッ
トされる。それはポインタ11000である。線9にお
いては、レジスタ67はメモリ・アドレス10999に
おいて見出される命令ポインタでセットされる。したが
って、PROC run(w)の後にPROC wai
tが続くものとすると、現在のプロセスがリストの終り
に付け加えられるものとすると(それの作業域ポインタ
が結合されているリストに格納される)、それの次の命
令に対するポインタはメモリに格納され、それは活動を
停止させられ、結合されているリスト上の次のプロセス
が適切な命令の始めに開始される。これらの動作の全て
【0097】はたった4つのレジスタを用いて行われ
る。このように構成することにより、システム中のメモ
リの量によってのみ数が制限されるプロセスのスケジュ
ーリングとデスケジューリングを行えるようにされる。
【0098】「moveto」と名づけられた手続は、
新しいIPTRへ必ずしも変更することなしに、作業域
基準ポインタを現在のプロセスのための作業域における
異なるアドレスにセットするために使用できる。したが
って、あるプロセスがそれの基準作業域ポインタを10
000に有しているものとすると、この同じプロセスの
ために基準ポインタを(10200)に変えるためにm
oveto(10200)を用いてレジスタをセットで
きる。これはPROC moveto(w)の前記した
定義を参照して次のように説明される。
【0099】定義の2行目はこれが一連のステップであ
ることを宣言している。3行目と8行目は左マージンか
ら等しくずらされているから、それらはともに逐次実行
される。システムが最後のプロセスでないと仮定する。
そうすると、行2は偽であるからシステムは行6へ飛び
越す。行6における条件は真であるから行7が実行され
る。行7はメモリ・アドレスw−2における内容を、結
合されているリスト上の次のプロセスのための作業域ポ
インタにセットする。次に、行8がWPTRレジスタ7
3の内容を値wに変える。今レジスタ73は現在のプロ
セスのための新しい基準アドレスを指す。この新しい基
準アドレスからの慣例となっているずれ(マイナス2)
が、次にスケジュールされるプロセスのための作業域に
対するポインタを見出す。次のプロセスがない場合に
は、行2が真で、LPTRレジスタ74の内容が、最後
のプロセスのための基準アドレスとしてwを指すために
調整され、その後で現在のプロセスの基準アドレスへの
ポインタを保持するためのレジスタ73がwを指すよう
に調整される。
【0100】以上、スケジューリングについて第4図を
説明したが、いくつかの機能とオペレーションについて
第4図を参照して更に説明する。作業域からのロード 作業域からのロードはある特定のメモリ場所における内
容を複写し、それを暗黙のうちにAレジスタ内に置く。
この機能と、好適な実施例の構成は、基準となる現在の
作業域ポインタからのオフセットにより定められるアド
レスを有するメモリも暗黙のうちに参照する。この基準
アドレスはWPTRレジスタ73に常に格納され、オペ
ランド・レジスタ65にオフセットが含まれる。したが
って、式“memory〔WPTR+OREG〕”は、
WPTRレジスタ73とレジスタ65との内容を加え合
わせることにより見出されるアドレスを有するメモリの
内容を指す。“load”はAレジスタ71を指し、ス
タックの内容が1つのレジスタにより下方へ移動させら
れる、すなわち、Aレジスタの内容がBレジスタへ移動
させられ(データをAREGにロードさせるための余地
を作る)、BREGの内容がCレジスタ(もしあれば)
へロードされる。第4図を参照して、WPTRが100
00であるとすると、コード02を用いて“load
from workspace”は変数2をAレジスタ
にロードすることを意味する。
【0101】この“store to workspa
ce”命令は、Aレジスタ71に含まれているのは何で
あっても、オペランド・レジスタ65に含まれているオ
フセットにより(WPTRレジスタ73に含まれてい
る)基準アドレスからずらされるアドレスを有するメモ
リ領域に動かすことを暗黙のうちに意味するものであ
る。また、スタックは上方へも動く(たとえば、BRE
Gの内容がAREGへ動き、CREGの内容がBREG
へ動く)。再び第4図を参照して、WPTR=1000
0およびOREG=1であるとすると、この機能は、A
レジスタ71の内容をメモリ場所10001に格納する
ことを意味する。それは変数1である。作業域内へのポインタのロード 機能“load pointer into work
space”はどのデータも作業域に格納しない。その
代りに、この機能は作業域内のある特定の場所へのポイ
ンタをAレジスタ71にロードする。これは、たとえ
ば、作業域に格納できるベクトルのある特定の部分を指
す“load from vector”命令に関連し
て使用される。したがって、第4図を参照して、作業域
32は10000である作業域ポインタWPTRにより
参照される。作業域内の既知の場所においてはベクトル
が存在し得る。そのベクトルは10200,1020
1,10202のような複数の場所を有する。このベク
トルの初めは作業域ポインタ(10000)からのある
特定のオフセット(200)である。したがって、ベク
トルの初めを見出すためには、オフセット(200)が
オペランド・レジスタ65にロードされ、それから命令
“load pointer into worksp
ace”がアドレス10200をAレジスタ内に置く。
それはそのベクトルの初めを指す。その後で、ベクトル
の初めに関して特定のメモリ場所を見出すために“lo
ad 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”機能は前記した“m
oveto”手続を用いる。“call proced
ure”は次に実行する命令のための通例のメモリ場所
(たとえば、第4図のメモリ場所9999)にIPTR
を最初に格納する。次に、その機能は、“call p
rocedure”機能が終了させられた後で次に実行
すべき命令に対するポインタがロードされているAレジ
スタ71の内容を、命令ポインタ・レジスタ67へ転送
する。
【0102】それから、Aレジスタ71に作業域ポイン
タがロードされる。これに続いて、“moveto”手
続が基準ポインタWPTRを変更して、その基準ポイン
タWPTRが現在の作業域内の異なるアドレスを指すよ
うにする。“moveto()”手続はWPTRレジス
タ73の内容を、movetoに続く括弧の中の内容に
セットするものである。したがって、“call pr
ocedure(呼出し手続)”の後では現在のプロセ
スのための同じ作業域内の異なる場所を指す作業域ポイ
ンタをシステムは有することになり、Aレジスタ71に
前から含まれていた異なる命令をシステムが実行する準
備がされたことになる。RETURNオペレーションの
使用しにより逆のオペレーションが行われる。プロセス実行(run process) このオペレーション“run process”は自身
の作業域と1組の命令を有するプロセスの構成において
一般に使用される。Aレジスタ71には新しいプロセス
のための作業域用の作業域ポインタがロードされ、Bレ
ジスタには新しいプロセスのための適当な命令ポインタ
がロードされている。オペレーション“run pro
cess”は作業域ポインタから適切にオフセットされ
たメモリ内の場所に命令ポインタを格納し、それから括
弧内の作業域ポインタを用いて前記手続PROC ru
n( )を呼出す。先に説明したように、これは新しい
プロセスのスケジュールを作成する。すなわち、結合さ
れているリストに新しいプロセスを付加する。休止(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”オペレー
ションに到達した後で、その副プロセスはカウントを調
べる。カウントが零であると、プログラムは“move
to”手続を用いて最後のプログラムへ動く。カウント
が零でなければ、カウントは1だけ減少させられ、それ
から先に述べたようにして副プロセスは“wait”さ
せられる。他の副プロセスは零カウントに達するまで実
行される。同期(synchronise) “synchronise”オペレーションは並行処理
にとって非常に重要である。というのは、その“syn
chronise”オペレーションを使用することによ
り2つのプロセスをある時刻に同じ点に置くことができ
るからである。これについては「同じマイクロコンピュ
ータ上のプロセス間の通信」の項において第9図を参照
して説明することにする。簡単に説明すれば、同じチッ
プ上の2つのプロセスXとYが、たとえば一方のプロセ
スが必要とするデータを他方のプロセスが計算している
ために、通信を希望したとすると、チャネル40,4
1,42または43(第2図)が用いられる。各プロセ
スは“synchronise”オペレーションを有す
る。“synchronise”オペレーションに到達
する最初のプロセスはチャネルを調べる。チャネルのア
ドレスはAレジスタ71にロードされているから、“m
emory〔AREG〕”がそのチャネルのことを言及
する。表現式“NIL”は零として認められる所定の基
準のことを指す。第1のプロセスによりチャネルの初め
の部分にNILが見出されたとすると、そのプロセスは
それの作業域ポインタをチャネルの第1の部分に置き、
それからそれ自身でスケジュールから外れる。それでそ
のプロセスはプロセスYがそれの“sync”オペレー
ションに到達するのを待つ。プロセスYが“sync”
オペレーションに到達すると、プロセスYは同じチャネ
ルの第1の部分を調べる。そうすると、NILは見つか
らないが、その代りにある作業域ポインタを見つける。
それに応答してプロセスYはプロセスXをスケジュール
する(結合されているリストの終りにそれを加え合わせ
る)。チャネルの第1の部分はNILに戻る。一般に、
1つのプロセスから他のプロセスへ転送するためのデー
タが置かれる少くとも第2の部分がチャネルに存在す
る。また、同期オペレーションは一般に対となって起
る。2つのプロセスにおける第1の“sync”オペレ
ーションはプロセスにデータを待機させ、それから準備
が整った時にそのデータを転送させる。第2の“syn
c”命令は確認応答を行わせる。したがって、プロセス
からデータを入力しているプロセスは“sync”す
る。データがレディ状態になっていないとすると、その
データは“待機”する。供給プロセスによりデータがレ
ディ状態にされると、その供給プロセスは受けるプロセ
スをスケジュールし、それから受けるプロセスはデータ
をとる。それから各プロセスによる“sync”命令が
転送の確認応答をする。データを供給するプロセスによ
る最初の“sync”は、データをとる準備が整ってい
ることを示す。
【0103】同じマイクロコンピュータにおけるプロセ
ス間の通信 先に説明したように、このマイクロコンピュータは同じ
マイクロコンピュータにおけるプロセス間、または異な
るマイクロコンピュータにおけるプロセス間の通信を可
能にする。たとえば、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
はリスト上で待機している。このようにして、“han
dshake”オペレーションを行っている両方のプロ
セスにより通信が同期させる。“handshake”
オペレーションにおいては、両方のプロセスがオペレー
ションを同期させるために2つの命令を実行する。それ
ら2つの命令のうちの一方はプロセスをスケジュールか
ら外し、スケジュールから外されない方の通信プロセス
から適切な信号が受信された時に、スケジュールから外
された方のプロセスだけがリストへ戻される。
【0104】次に、第10図を参照して、同じマイクロ
コンピュータ上で2つの通信プロセスを実行するために
必要なプログラムと命令シーケンスの特殊な例について
説明することにする。これは自動車の走行距離と燃料消
費量を測定するための、先に述べた2つの例を示すもの
である。マイクロコンピュータ170はそれのメモリ域
に、変数“rotations”をカウントする第1の
プロセスのための第1の作業域171と、変数“mil
es”をカウントする第2のプロセスのための第2の作
業域172とを有する。作業域171は語場所173を
有し、この語場所には“rotation”と呼ばれる
入力チャネル174のアドレスが含まれる。その入力チ
ャネルは、外部の回転検出器(図示せず)から各車輪回
転数についてのメッセージを受けるように構成されてい
る直列リンクの一部を構成する。作業域171は別の語
場所175も有する。この語場所175にはチャネル
“mile”と呼ばれる2語メモリ・チャネル176の
アドレスが含まれる。この場合には、このメモリ・チャ
ネル176は、車輪の1000回転ごとに1mileの
走行を示す作業域171のプロセスからの出力を受け
る。
【0105】この第1のプロセスに対するOCCAM言
語を用いるプログラムは次の通りである。
【0106】 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が受けられると、変数“rota
tions”が1だけ増加させられる。最後には100
0回転となるから、5行目は偽となる。そうすると6、
7、8行目はスキップされ、9行目で“mile”とい
う名のチャネルへ1つのデータが出力される。
【0107】それらのOCCAM文がコンパイラにより
下記のような機械命令に変換される。
【0108】 命令シーケンス DCCAM言語によるプログラム 機 能 コード データ VAR rotations : WHILE TRUE SEQ 1. L1: 2. 1dl 0 6 0 rotations:=0 3. stw 0 1 0 4. L2: WHILE rotations 1000 SEQ 5. 1dw 0 0 0 6. pfix 14 3 7. pfix 14 14 8. 1dl 1000 6 8 9. opr gt 13 2 10. jnz L3 9 9 11. 1dw 1 0 1 rotation ? ANY 12. opr sync 13 11 13. 1dw 1 0 1 14. opr sync 13 11 15. 1dw 0 0 0 rotations:=rotations+1 16. adl 1 7 1 17. stw 0 1 0 18. opr pause 13 9 19. nfix 15 0 20. j L2 8 0 21. L3: 22. 1dw 2 0 2 mile ! ANY 23. opr sync 13 11 24. 1dw 2 0 2 25. opr sync 13 11 26. opr pause 13 9 27. nfix 2 15 2 28. j L1 8 7 この機械命令の表においても行番号は説明の便宜上つけ
たものである。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進数100
0は2進数では1111101000で表される。これ
には10ビットを必要とするが、標準命令のデータ部は
4ビットであるから、この値をオペランド・レジスタに
ロードするためには3つのステップを必要とする。8行
目は“load literal”機能のためのコード
を含むから、この時には、Aレジスタ71には1000
の2進値が含まれる。これによりAレジスタの内容(0
である)がBレジスタ72へ転送させられる。
【0109】9行目では間接機能、すなわちオペレーシ
ョン“greater than”が呼出される。これ
によりレジスタAとBの内容が比較される。Bレジスタ
の内容がAレジスタの内容より大きくなければ、このオ
ペレーションはFALSE(0)となる。
【0110】10行目は“jump nonzero”
オペレーションである。9行目のオペレーションの結果
が真であるとすると、Aレジスタの内容が非零値にセッ
トされ、10行目から9行だけ前へ飛越しが行われる。
これはコードのデータ部における数字9で示されてい
る。これによりプログラムは21行目まで前へ飛越す。
21行目は出力部である。1000回転がまだカウント
されていないと仮定すると、次に11行目が実行され
る。11行目では、作業域機能からのロードは+1のオ
ペランドを有する。このことは、基準アドレスからのオ
フセットが+1であることを意味する。このメモリ・ア
ドレスにおいてチャネル“rotation”のアドレ
スが見出され、このアドレスは作業域からAレジスタ7
1にロードされる。12行目では同期オペレーションが
行われる。13行目ではチャネル“rotation”
のアドレスが再びロードされ、14行目では再び同期が
行われて入力オペレーションが終了される。この簡単な
例においてはデータは転送されない。15行目では作業
域にある変数、オフセット0、がAレジスタにロードさ
れる。すなわち、“rotations”の現在の値が
Aレジスタへロードされる。16行目においては、デー
タ値1がレジスタの内容へそのまま加え合わされる。1
7行目では、Aレジスタの内容が0に等しいオフセット
で作業域内に格納される。したがって、チャネル“ro
tation”からのデータの受けとりに応じて変数
“rotations”が増加させられたことになる。
18行目は休止オペレーションであって、次のプロセス
を実行させ、この現在のプロセスをリストの末尾に加え
る。このプログラムのこの点においてはAレジスタ71
とBレジスタ72の内容はプロセスには関連していない
ことに注意されたい。19行目と20行目においては負
のプレフィックス機能を用いて後方への飛越しが実行さ
れる。22行目においては、基準場所から2場所だけオ
フセットされている作業域の内容がロードされる。これ
はチャネル“mile”のアドレスであって、それはA
レジスタへロードされる。23行目においては同期オペ
レーションが行われる。25行目で行われる別の“sy
nc”オペレーションにより出力が完了させられる。2
6行目において別の休止が挿入されて、次のプロセスを
スケジュールに加え、このプロセスを結合されているリ
ストの末尾に加える。27行目と28行目においては負
のプレフィクシングを用いて後方への飛越しが行われ
る。変数“miles”に関する第2のプロセスは作業
域172を使用する。この作業域172は“mile”
チャネル176を含む語場所177を有する。“mil
e”チャネル176は作業域172のプロセスへ入力を
与えるために用いられる。別の語場所178が第2の入
力のアドレスを有する。この第2の入力は、この場合に
は、約3.9リットル(1ガロン)の燃料が消費される
たびに外部の燃料計からのメッセージを受けるように構
成された直列リンクの部分を形成する、“fuel”チ
ャネルと呼ばれるチャネル179である。作業域172
は別の語場所180も有する。この語場所180は、燃
料の最後の約3.9リットル(1ガロン)が消費される
間に走行した距離を出力するように構成された直列リン
クの部分を形成する“consumption”チャネ
ルと呼ばれる出力チャネル181のアドレスを有する。
明らかに、走行距離を示すメッセージをチャネル176
を介して得るためには、作業域172内におけるプロセ
スは作業域171におけるプロセスと通信する必要があ
る。作業域172におけるプロセスのための命令シーケ
ンスとプログラムは次の通りである。
【0111】 命令シーケンス OCCAMによるプログラム 機 能 コード データ SEQ L1: 1dl 0 6 0 miles:=0 stw 0 1 0 WHILE TRUE L2: ALT 1dw 1 0 1 mile ? ANY 1dv 0 4 0 opr eqz 13 1 jnz 13 9 9 1dw 1 0 1 opr sync 13 11 1dw 1 0 1 opr sync 13 11 1dw 0 0 0 miles:=miles+1 adl 1 7 1 stw 0 1 0 pfix 14 1 j L4 8 0 命令シーケンス(続き) OCCAMによるプログラム(続き) 機 能 コード データ L3: 1dw 2 0 2 fuel ? ANY 1dv 0 4 0 opr eqz 13 1 jnz L4 9 12 1dw 2 0 2 opr sync 13 11 1dw 2 0 2 opr sync 13 11 SEQ 1dw 3 0 3 consumption ! miles 1dw 0 0 0 stv 1 5 1 opr sync 13 11 1dw 3 0 3 opr sync 13 11 1dl 0 6 0 miles :=0 stw 0 1 0 L4: opr pause 13 9 nfix 15 1 j L2 8 0異なるマイクロコンピュータ上のプロセス間の通信 相互に接続されたマイクロコンピュータのネットワーク
が図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を
参照して説明することにする。
【0112】2台のマイクロコンピュータの間の直列リ
ンクを通じてデータが送られる時は、そのデータは図1
3a、13bに示されているようなパケットの形で直列
に送られる一連のデータ列の形をとる。データパケット
は図13aに示すような形を有し、出力ピン27により
入力ピン26へ送られる。データパケットは値が1であ
る2つの連続するビットで始まり、その後に16個のデ
ータ・ビットが続き、値が0のストップ・ビットで終
る。図13bに示されている確認応答パケットが、デー
タパケットを受けるマイクロコンピュータの出力ピン2
7から、データパケットを送るマイクロコンピュータの
入力ピン26へ送られる。確認応答パケットは値が0の
スタート・ビットと、その後に続く値が0のストップ・
ビットより成る。各直列リンクの出力制御ロジックは、
各出力ピン27がデータパケットまたは確認応答パケッ
トを送らない時に値が0のビットを連続して送るように
出力ピン27を構成するから、入力ピン26がパケット
の1スタート・ビットを受けるまでは入力制御ロジック
は入力ピン26上の全ての信号を無視する。
【0113】入力チャネルまたは出力チャネルのプロセ
ス・レジスタがプロセスの作業域ポインタを保持してい
る時は、CPU12がプロセスの作業域ポインタを実行
を待っているリストに加え合わせることによりそのプロ
セスをスケジュールするように、制御ロジック50は要
求(入力要求または出力要求と呼ばれる)を発生してC
PU12へ与えることができる。同期ロジック10は、
直列リンクからの各要求信号を調べるためにCPU12
により使用されるセレクタを発生する。“wait”手
続の実行によりアクティブ・プロセスがスケジュールか
ら外された時は、直列リンクからの要求があるかどうか
をCPU12は調べる。もしいくつかの外部要求があれ
ば、CPU12はリスト上の次のプロセスを実行する前
に、それらの要求の全てを順次サービスする。その要求
を発生したチャネルのプロセス・レジスタに保持されて
いるプロセスをスケジューリングすることによりCPU
12は要求をサービスし、プロセス・レジスタ47を零
にリセットする。リンク25内の入力チャネルまたは出
力チャネルのプロセス・レジスタ47は、そのチャネル
が通信を実行する用意ができた時に、特殊な値READ
Yを含む。同期オペレーションは手続“run”を行わ
せる。その手続“run”により特殊な値READYを
検出し、あるプロセスをスケジューリングする代りに、
リンク内の制御ロジック50の動作を停止させる。リン
ク内の制御ロジックはチャネル上で同期オペレーション
を実行できる。その同期オペレーションはチャネルのプ
ロセス場所をテストする。値が零であるとすると、それ
はその値を特殊な値READYで置き換え、プロセス・
レジスタ上のプロセスによりひき起される同期オペレー
ションがその値を零にリセットするまで待つ。そうでな
ければ、前記したようにプロセス・レジスタ内のプロセ
スをスケジュールするためにそれはCPU12のための
要求を発生し、それからCPU12はプロセス・レジス
タの値を零にリセットする。その結果、別のプロセスに
同期させるために同期オペレーションが用いられるのと
同じやり方で、プロセスは制御ロジック50に同期させ
るために同期オペレーションを使用できる。
【0114】リンク25内の出力制御ロジック50は、
出力チャネル内のプロセス・レジスタを用いてプロセス
との同期をまずとり、それから出力チャネル内のデータ
・レジスタからのデータパケット中のデータを出力ピン
27(図2、11)を通じて送り、入力ピン26上で確
認応答パケット信号を待ち、それから出力チャネル内の
プロセス・レジスタを再び用いてプロセスに同期させ
る。出力制御ロジックはこのオペレーションをくり返え
し実行する。リンク内の入力制御ロジックは入力ピン2
6からのデータが入力チャネル内のデータ・レジスタに
到達することをまず待ち、それから入力チャネル内のプ
ロセス・レジスタを用いてプロセスに同期させ、次に入
力チャネル内のプロセス・レジスタを用いてプロセスに
再び同期させ、それから確認応答パケット信号を出力ピ
ン27へ送る。入力制御ロジックはこのオペレーション
をくり返えし実行する。
【0115】以下の説明においては、図11に示されて
いるマイクロコンピュータ1により動作させられるプロ
セスxがデータを直列リンクを介して、マイクロコンピ
ュータ2により動作させられるプロセスyへ出力するこ
とを望んでいると仮定する。この出力を行うために、プ
ロセスxは出力すべきデータを出力チャネルのデータ・
レジスタ187に格納し、プロセス・レジスタ188で
同期オペレーションを実行して、ピン27を介してのデ
ータの伝送を直列リンクに開始させる。それからプロセ
スは同じプロセス・レジスタ188について別の同期オ
ペレーションを実行して、マイクロコンピュータ1の入
力ピン26を介して確認応答パケットが受けられるまで
待つ。確認応答パケットは、マイクロコンピュータ2に
より動作させられるプロセスyがデータを入力したこと
を意味する。入力するために、プロセッサyはマイクロ
コンピュータ2の入力チャネルのプロセス・レジスタ1
89について同期オペレーションの実行して、データ・
パケットがマイクロコンピュータ2のピン26から到達
することを待つ。それからプロセスyはデータ・レジス
タ190からデータをとり、別の同期オペレーションを
実行して、マイクロコンピュータ2の出力ピン27から
確認応答信号を送信させる。
【0116】図12は、プロセスxとyが直列リンクを
介して通信する時に起る典型的なオペレーション・シー
ケンス中におけるプロセス・レジスタ188,189の
内容を順次示するものである。参照番号188a〜18
8e,189a〜189eはそれぞれプロセス・レジス
タ188,189の内容の引き続状態を表すものであ
る。最初に、プロセスxはマイクロコンピュータ1の出
力チャネルをアドレスし、出力すべきデータをデータ・
レジスタ187にロードし、出力プロセス・レジスタ1
88について同期オペレーションを行う。直列リンクが
出力を発する用意が整っていることを示す特殊な値RE
ADY 188aをプロセス・レジスタ188が含んで
いると仮定すると、同期オペレーションによりプロセス
・レジスタ188の値が零(NIL)188bにリセッ
トされる。その結果、制御ロジックはデータ・レジスタ
187からのデータを、1本のワイヤ接続185を介し
てマイクロコンピュータ2の入力データ・レジスタ19
0へ送らせる。プロセスyが入力をまだ待っていないと
すると、マイクロコンピュータ2内の制御ロジックがプ
ロセス・レジスタ189の値をNIL 189aからR
EADY 189bへ変えて、データが受けられること
を示す。次に、プロセスyがプロセス・レジスタ189
について同期オペレーションを行う。そうするとプロセ
ス・レジスタ189の値がREAD 189bからNI
L 189cに変えられる。マイクロコンピュータ2が
確認応答信号をマイクロコンピュータ1へ送り用意が整
っていると仮定すると、制御ロジックはプロセス・レジ
スタ189の値をREADY 189dへ戻す。それか
らプロセスyは入力チャネルのデータ・レジスタ190
からのデータをとり、プロセス・レジスタ189につい
て別の同期オペレーションを実行する。そうするとプロ
セス・レジスタ189がNIL 189eにリセットさ
れる。その結果、制御ロジックは確認応答信号を1つの
ワイヤ接続186を介して送る。この確認応答信号は、
プロセスxを動作させるマイクロコンピュータ1の入力
ピン26により受けられる。確認応答信号を受ける前に
プロセスxが第2の同期オペレーションを実行すると仮
定すると、プロセスxは手続“wait”によりスケジ
ュールから外され、それの作業域ポインタがプロセス・
レジスタ188(188c)に格納される。確認応答パ
ケットが受けられると、直列リンクの制御ロジックが、
プロセスxをスケジュールすることをマイクロコンピュ
ータ1のCPUに求める要求を発生し、プロセス・レジ
スタをリセットする。この要求は、現在のプロセスがス
ケジュールから外されるとマイクロコンピュータ1のC
PUにより直ちにサービスされ、CPUはプロセスxを
リストの末尾に加えて、プロセス・レジスタをNIL
(188d)にリセットする。そうすると制御ロジック
はプロセス・レジスタをREADY(188e)にリセ
ットすることにより、リンクが更に出力する用意が整っ
たことを示す。そのために直列リンクは、図12のシー
ケンスに示されているように、通信が行われる前と同様
になって、次の通信を行う用意を整える。
【0117】図14は、図11を参照して先に説明した
プロセスの2つのマイクロコンピュータについての動作
を示す。しかし、この場合には、回転数を数えるための
作業域171がマイクロコンピュータ191にあり、距
離をカウントするための作業域172は別のマイクロコ
ンピュータ192にある。それらのマイクロコンピュー
タ191,192はそれぞれの直列リンク25により相
互に接続される。チャネル“mile”176aがマイ
クロコンピュータの191の直列リンクの出力チャネル
を形成し、チャネル“mile”176bがマイクロコ
ンピュータ192の直列リンクの入力チャネルを形成す
る。
【0118】図14において2つのプロセスを動作させ
るために使用される命令シーケンスとプログラムは、各
プロセスにより使用されるチャネル“mile”のアド
レスが、メモリ内のチャネルではなくて直列リンクのチ
ャネルのアドレスであることを除き、図10を参照して
説明したものに全体として類似する。
【0119】リンク制御ロジックについての説明 次に、図15、16を参照して、直列リンクの入力チャ
ネルと出力チャネル用の制御ロジック50(図2)につ
いて詳しく説明する。図15は出力チャネル46用の制
御ロジックを示し、図16は入力チャネル45用の制御
ロジックを示す。
【0120】出力するために、リンクの制御ロジック5
0(図2)が出力プロセス・レジスタ47を用いてプロ
セスにまず同期してから、出力データ・レジスタ48か
らのデータをピン27へ送り、それからピン26からの
確認応答信号を待ち、次に出力プロセス・レジスタ47
を再び用いてプロセスに同期する。制御ロジック50は
このオペレーションをくり返えし行う。
【0121】入力するために、リンクの制御ロジック5
0(図2)は、入力ピン26からデータが到達すること
をまず待ち、そのデータを入力データ・レジスタ48へ
送り、それから入力プロセス・レジスタ47(図16)
を用いてプロセスと同期し、次に入力プロセス・レジス
タを用いてプロセスと再び同期し、その後で確認応答信
号をピン27へ送る。制御ロジック50はこのオペレー
ションをくり返えし行う。
【0122】出力と入力のプロセス・レジスタ47によ
りとられる値は、プロセスも制御ロジックも同期を待っ
ていないことを示すNILと、制御ロジックが同期を待
っていることを示すREADYのことがあり、あるいは
同期を待っているプロセスの作業域ポインタとすること
もできる。
【0123】リンクにおいては、各プロセス・レジスタ
47と各データ・レジスタ46がアドレス・デコーダ1
93を介してバス16へ接続される。バス16はアドレ
ス・データおよび制御のための信号線を含む。制御には
“write”信号と、“read”信号と、“bus
y”信号とを含む。“busy”信号はCPUとリンク
制御ロジックが、プロセス・レジスタの値を同時に変え
ようとしないようにするために用いられる。
【0124】リンク内の各プロセス・レジスタ47は、
プロセス・レジスタ内の値がREADY,NILまたは
作業域ポインタのいずれであるかを調べるためのロジッ
ク194を含む。
【0125】出力データ・レジスタ48(図15)はア
ンドゲート195とオアゲート196を介して出力ピン
27に接続される。入力データ・レジスタ48(図1
6)が入力ピン26に直結される。
【0126】リンク内の各プロセス・レジスタには要求
ラッチ197が組合わされる。CPUがWAIT手続を
実行する時は、全ての要求ラッチの状態が常にテストさ
れる。ある要求ラッチがセットされたとすると、対応す
るプロセス・レジスタに保持されている作業域ポインタ
を有するプロセスが、それの作業域ポインタをリストの
末尾に加えることによりスケジュールされる。CPUが
プロセス・レジスタに書き込む時には要求ラッチは常に
クリアされる。
【0127】このリンクを介して行われるデータの入力
と出力は4状態マシン282,283,284,285
により制御される。各状態マシンは現在の状態を保持す
るための状態レジスタと、プログラム可能なロジック・
アレイとより成る。このプログラム可能なロジック・ア
レイは状態レジスタの値と、状態マシンへの入力信号と
に応答して出力信号の所定のパターンと、状態レジスタ
のための新しい値を発生する。リンクを通って送られる
ビットをカウントするためにカウンタ286が用いら
れ、リンクを通って受けられるビットをカウントするた
めに別のカウンタ287が用いられる。
【0128】入力および出力のチャネル制御器とデータ
状態マシンは下記のような入力と出力を有する。入力ま
たは出力の名称は信号の目的を示すものである。
【0129】 出力制御状態マシン285 (図15) 参照番号 信 号 名 目 的 入力: 200 Mbusy メモリバス使用中 201 Reset Transputerリセット 202 Pregready プロセス・レジスタ=READY 203 Pregnil プロセス・レジスタ=NIL 204 Pregwptr プロセス・レジスタが作業域ポインタ を保持する 205 Datagone 出力データ・レジスタから送られる データ 264 Ackready 入力状態マシンにより受けられる 確認応答 出力: 210 Setrequest CPU要求セット 211 Datago データ伝送開始 212 SetPregready プロセス・レジスタをREADY にセット 213 SetPregnil プロセス・レジスタをNILにセット 265 Acktaken 確認応答の受信確認 出力データ状態マシン284 (図15) 参照番号 信 号 名 目 的 入 力 201 Reset Transputerリセット 211 Datago データ伝送開始 220 Countzero ビット・カウントが零か否かの判定 261 Ackgo 確認応答伝送開始 出 力 221 Loadcount ビット・カウンタを伝送すべきビットの数に セットする 222 Deccount ビット・カウントを1だけ減少させる 223 Oneout 出力ピンを1にセットする 224 Dataout 出力ピンをシフトレジスタの最下位ビットに セットする 225 Shiftout データ・レジスタを1つの位だけ桁送りする 205 Datagone データ伝送終了 260 Ackgone 確認応答の伝送終了 入力チャネル制御状態マシン283 (図16) 参照番号 信 号 名 目 的 入力: 200 Mbusy メモリバス使用中 201 Reset Transputerリセット 262 DataReady ピンから受けたデータ 242 Pregready プロセス・レジスタ=READY 243 Pregnil プロセス・レジスタ=NIL 244 Pregwptr プロセス・レジスタが作業域ポインタ を保持する 260 Ackgone 確認応答伝送終了 出力: 220 Setrequest cpu要求セット 222 SetPregready プロセス・レジスタをREADY にセット 223 SetPregnil プロセス・レジスタをNILにセット 261 Ackgo 確認応答の伝送開始 263 Datataken データ受信確認 入力データ状態マシン282 (図16) 参照番号 信 号 名 目 的 入力: 201 Reset Transputerリセット 230 Datain ピンからのデータ 231 Countzero ビット・カウントが零か否か判定 出力: 240 Loadcount ビット・カウンタを受けるべきビットの 数にセット 241 Deccount ビット・カウンタを1だけ減少 244 Shiftin データ・レジスタを1つの位だけ桁送り し、ピンから最下位ビットをとる 245 Setdataready データ受信終了 246 Setackready 確認応答受信終了 各状態マシンのシーケンスについて、各マシンの現在の
状態、次の状態、入力、出力について以下に説明する。
【0130】どのような状態においても、「出力」欄に
記載されている出力は1で、他の出力は0である。「入
力」欄に記載されている入力を除き、全ての入力は無視
される。記号\/,/\およびΔはそれぞれブール代数
の演算のand,or,notを示すものである。
【0131】 出力制御状態マシン285 状態 入力 出力 次の状態 any Reset SetPregnil sync1 sync1 Mbusy - sync1 sync1 (ΔMbusy)/\Pregnil SetPregready syncreq1 sync1 (ΔMbusy)/\Pregwptr Setrequest syncreq1 syncreq1 ΔPregnil - syncreq1 syncreq1 Pregnil - send1 send1 ΔDatagone Datago send1 send1 Datagone - send2 send2 Datagone - send2 send2 ΔDatagone - waitack1 waitack1 ΔAckready - waitack1 waitack1 Ackready - waitack2 waitack2 Ackready Acktaken waitack2 waitack2 ΔAckready - sync2 sync2 Mbusy - sync2 sync2 (ΔMbusy)/\Pregnil SetPregready syncreq2 sync2 (ΔMbusy)/\Pregwptr Setrequest syncreq2 syncreq2 ΔPregnil - syncreq2 syncreq2 Pregnil - sync1 出力データ状態マシン284 状態 入力 出力 次の状態 any Reset - idle idle (ΔDatago)/\(ΔAckgo) - idle idle Ackgo Oneout ackflag idle (ΔAckgo)/\Datago Oneout dataflag ackflag - - ackend dataflag - Oneout databits LoadCount databits ΔCountzero DecCount databits Shiftout Dataout databits Countzero - dataend dataend Datago Datagone dataend dataend ΔDatago - idle ackend Ackgo Ackgone ackend ackend ΔAckgo - idle 入力制御状態マシン283 状態 入力 出力 次の状態 any Reset SetPregnil receive1 receive1 ΔDataready - receive1 receive1 Dataready - sync1 sync1 Mbusy - sync1 sync1 (ΔMbusy)/\Pregnil SetPregready syncreq1 sync1 (ΔMbusy)/\Pregwptr Setrequest syncreq1 syncreq1 ΔPregnil - syncreq1 syncreq1 Pregnil - sync2 sync2 Mbusy - sync2 sync2 (ΔMbusy)/\Pregnil SetPregready syncreq2 sync2 (ΔMbusy)/\Pregwptr Setrequest syncreq2 syncreq2 ΔPregnil - syncreq2 syncreq2 Pregnil - receive2 receive2 Dataready Datataken receive2 receive2 ΔDataready - acksend1 acksend1 ΔAckgone Ackgo acksend1 acksend1 Ackgone - acksend2 acksend2 Ackgone - acksend2 acksend2 ΔAckgone - recieve1 入力データ状態マシン282 状態 入力 出力 次の状態 any Reset - idle idle ΔDatain - idle idle Datain - start start ΔDatain SetAckready idle start Datain LoadCount databits databits ΔCountzero Shiftin databits DataCount databits Countzero Shiftin dataend dataend - SetDataready idle 図16に示すように、入力制御ロジックは、入力データ
状態マシン282の出力端子246に接続されるフリッ
プフロップ280を含む。別のフリップフロップ281
が入力データ状態マシン282の出力端子245に接続
される。両方の制御状態マシンはクロック28から与え
られるクロックパルスにより制御される。リンクのある
ものに対して、両方のデータ状態マシンはクロック28
からのクロックパルスによっても制御される。図15、
16に示すリンクに対しては、データ状態マシンは、ク
ロック28に対して位相が関係するクロック22からの
クロックパルスにより制御される。クロック22はこの
リンクを低速で動作させることができる。動作させられ
るマイクロコンピュータ・ネットワークの種類に応じて
効率を最高にするために、2種類のクロック周波数を得
ることができる。マイクロコンピュータが近接して群に
まとめられると、それらのコンピュータの間の通信はよ
り高速で行うことができる。その場合には、より高いク
ロック周波数を使用できる。マイクロコンピュータが遠
く離れて配置され、低速動作を必要とする場合には、満
足できる通信を確保するために低いクロック周波数を使
用できる。
【0132】入力チャネルと出力チャネルにおいて、制
御状態マシンはプロセス・レジスタ47の内容をモニタ
し、適切であればラッチ197をセットすることにより
CPU要求を線199に生ずる。
【0133】出力制御状態マシン285は出力プロセス
・レジスタ47を用いてまずプロセスに同期させる。そ
れらか、マシン285は“datago”信号211を
用いて出力データ状態マシン282に、出力データ・レ
ジスタ48内のデータをピン27を通じて出力させる。
出力データ状態マシン284は図13aを参照して説明
したようにしてデータを送り出し、カウンタ286内の
カウントがなくなるまでレジスタ48内のデータを桁送
りする。カウンタ48内のカウントがなくなると、それ
は“datagone”信号205を出力状態マシンへ
戻して、データの転送が終了したこと、および“dat
ago”信号を除去すべきことを示す。それから、出力
制御状態マシンはラッチ280からの“ackread
y”信号264を待ち、入力データ状態マシン282
が、図13bに示されている確認応答パケットをピン2
6から受けたことを示す。“ackready”信号2
64に応答して、出力制御状態マシンは“acktak
en”信号265を出力する。その信号はラッチ280
をリセットする。そうすると出力制御ロジックは出力プ
ロセス・レジスタ47を用いて出力プロセスに再び同期
させる。
【0134】リンクの他の端にあるマイクロコンピュー
タの入力データ状態マシン282は、入力ピン26に現
われる“atartbit”を待つ。データ・パケット
が検出されると、そのマイクロコンピュータの入力デー
タ状態マシン282が、適切な数のビットが受けられた
ことをカウンタ287が示すまで、データをデータ・シ
フトレジスタ48へ桁送りし、それから「データを受け
る」ラッチ281をセットする。入力制御状態マシン2
83は“dataready”信号262を検出し、そ
れに応答してラッチ281をセットする。それから、そ
れは入力プロセス・レジスタ47を用いて入力プロセス
に同期する。その後で、それはプロセス・レジスタ47
を用いて入力プロセスに再び同期し、プロセスがデータ
・レジスタ48からデータを得たことを確認し、次に
“ackgo”信号261を用いて出力データ状態マシ
ンに確認応答パケットをピン27を介して送らせる。出
力データ状態マシン284をデータを送らない時は、そ
のマシンはスタート・ビットとストップ・ビットを発生
する。それらのビットは確認応答パケット(図13a)
を構成する。マイクロコンピュータのデータ・パケット
を送った入力データ状態マシン282は確認応答パケッ
トを検出し、「確認応答を受けた」ラッチ280をセッ
トする。前記したように、送信マイクロコンピュータの
出力制御状態マシン285はこれを待っており、その信
号を検出するとラッチ280をリセットして第2の同期
オペレーションを行う。出力リンクと入力リンクの両方
におけるリンク・ロジックの状態は、次の送信の用意が
整うように、いまは通信が行われた以前と同じである。
【0135】チップとメモリの形成 先に説明したように、本発明のマイクロコンピュータは
チップ(集積回路装置)上に外部メモリなしでマイクロ
コンピュータを動作させることができる十分なメモリを
RAMの形で有するからとくに有利である。もっとも、
要求があれば外部メモリを使用することもできる。プロ
セッサが形成されているチップ上に適切なメモリを形成
するのに十分なスペースをとることはいろいろと問題が
ある。各メモリセルに必要な面積をできるだけ小さく
し、同じチップ上のプロセッサのような同期しないで動
作している回路からのRAMへのノイズ妨害を減少させ
ると同時に、何枚かのシリコンチップから許容できるマ
イクロコンピュータを、とくに、チップ上に作られる最
大で最高の集積密度の部品であるメモリを満足できる歩
留りで製造することが必要である。
【0136】各メモリの必要とするチップ面積を小さく
するために、本発明のこの実施例では、より一般的なデ
プリーション(depletion )形トランジスタ負荷または
相補プルアップ・トランジスタではなく、高インピーダ
ンス抵抗負荷を用いる静的セル(SRAM)を用いる。
この実施例で用いる製造技術は高抵抗率の多結晶シリコ
ンの膜を用いる。その多結晶シリコン中に抵抗負荷が形
成される。メモリは32KビットのSRAMで構成でき
る。SRAMの各セルは、多結晶シリコン膜内に形成さ
れるゲートを有するトランジスタより成る。トランジス
タのゲートと抵抗負荷は同じ多結晶シリコン膜内に、ま
たは異なる多結晶シリコン膜内に形成できる。
【0137】抵抗負荷SRAMはそれが形成されている
シリコン材料内に入りこむ電気的ノイズから妨害を受け
やすく、また、存在することがある少数キャリヤにより
内蔵データがつぶされることが起り得る。チップ上の他
の回路により発生されるノイズと、チップ上の他の回路
から注入された少数キャリヤとからSRAMを遮へいす
るために、SRAMは図17に示すようにシリコンの電
気的に分離された領域に形成される。nチャネル基板3
00に別々のp形井戸301,302が形成される。R
AMセルが、RAMアレイをp形井戸301の内部に配
置することにより、他の回路および関連する基板ノイズ
から分離される。これによりRAMセルは、井戸と基準
の間の電位障壁により基板中に発生された少数キャリヤ
から分離され、井戸の中で発生された少数キャリヤは基
板中に集められる確率が高い。図17で、RAMアレイ
はp形の井戸301の中に配置されたnチャネル・アレ
イである。周辺回路のnチャネル・トランジスタを別の
p形井戸302の中に入れることにより、それらのnチ
ャネル・トランジスタはRAMアレイから分離される。
【0138】この技術はMOSまたはp形井戸CMOS
製造技術と完全に両立する。ここで説明している例にお
いてはp形井戸のCMOSが用いられ、周辺回路のどの
nチャネル・トランジスタもn形基板の上に置かれて、
井戸と基板の間の電位障壁によりRAMアレイから分離
される。メモリ・アレイを含んでいる各井戸は接地金属
により囲まれる。その接地金属は高濃度にドープされた
p形領域を介して周囲のメモリ・アレイ井戸に接触す
る。メモリ・アレイ内には、各セル対ごとに、井戸を介
して接地されるp形拡散領域が存在する。基板のバイア
スは不要である。
【0139】シリコンチップからの製品の歩留りを高く
するためにメモリに冗長性が与えられる。メモリは行デ
コーダと列デコーダによりそれぞれアクセスできる行と
列に分けられる。正常な行と正常な列に加えて、いくつ
かの冗長行と冗長列が設けられるとともに、それら予備
の行と列のために予備の行デコーダと列デコーダが設け
られる。予備の行デコーダと列デコーダは、試験中に欠
陥のあることがわかった行または列を、たとえばレーザ
で開回路にできるように、ヒューズを含む。レーザによ
りヒューズがとばされて、欠陥であることが判明した列
または行の検出器を動作不能とし、欠陥である列または
行のアドレスで予備の適切な列デコーダまたは行デコー
ダをプログラミングすることにより、予備の列または行
を使用可能な位置に置くことができる。
【0140】n形井戸CMOS製造技術を使用できるよ
うにするために、以下に説明する別の分離技術を採用で
きる。図18を参照して、低抵抗率のp形基板405の
上に高抵抗率のp形エピタキシャル層が形成される。
【0141】セルアレイはこのエピタキシャル層の領域
401の中に形成され、高濃度に拡散されたn形井戸4
02により完全に囲まれる。領域403内の他の回路に
より発生された少数キャリヤはn形井戸402へひき寄
せられ、そこで無害な多数キャリヤになり、または高濃
度にドープされているp形基板405において再結合す
る。pチャネル・トランジスタがn形井戸404の中に
置かれ、そこで壁と基板の間の電位障壁により少数キャ
リヤは分離される。
【0142】付 加 事 項 本発明は以上説明した実施例に限定されるものではな
い。たとえば、図2に示した直列リンクは別々のプロセ
ス・レジスタ47を有するが、レジスタ47により与え
られる機能は、RAM19内のメモリ場所により行うこ
とができる。この場合には、機能している直列リンクを
CPUは識別できなければならず、これは各直列リンク
の各チャネルを図2の同期ロジックへ別々に接続するこ
とにより構成できる。
【0143】1組のデータ・レジスタとバスのセットが
図3に示されており、ある場合には1台のマイクロコン
ピュータにそのようなセットを含ませることが望まし
く、または1台のマイクロコンピュータに2つのCPU
を有することも望ましいことがある。
【0144】オペランドの長さを変えるためにpfix
とnfixの機能を用いる前記原理は任意の語長のマイ
クロコンピュータに応用できる。本発明は、16ビット
語で動作するマシンに限定されるのでもなければ、16
ビット・オペランド・レジスタに限定されるのでもな
く、たとえば、8ビットあるいは8ビットの整数倍の語
長を有するプロセッサはそれらの命令を使用できる。本
発明は32ビット語マイクロコンピュータにとくに応用
できる。
【0145】CPUは、AレジスタとBレジスタに加え
て、CREGまたはDREGのような別のレジスタを評
価スタック内に含むことができる。そうすると、付加レ
ジスタを使用できるようにある機能とオペレーションを
変更できる。たとえば、 Areg:=BregをSEQ Areg:=Breg Breg:=Creg Creg:=Dreg により置き換えることができる。 Breg:=AregをSEQ Dreg:=Creg Creg:=Breg Breg:=Areg で置き換えることができる。
【0146】もちろん、他の機能またはオペレーション
を付加して余分のレジスタを利用できるようにすること
もできる。図3を参照して説明した実施例はAレジスタ
とBレジスタのみを含んでいるが、本発明の好適な実施
例においては、スタック内に3個のレジスタが用いられ
る。
【0147】以上の説明において、機能セットは、間接
機能“operate”の使用により選択できるオペレ
ーションの拡張可能なリストが続く複数の機能を機能セ
ットはリストにまとめる。あらゆる場合に、それらの機
能とオペレーションは、マイクロコンピュータを動作さ
せるために有用な命令のフォームと考えらることができ
る。しかし、図5に示されているような固定フォーマッ
トの「命令」に対して述べた利点を得るために、機能と
オペレーションとのセットを主機能(直接機能と、プレ
フィクシング機能と、間接機能とより成る)セットと、
二次命令(間接機能の使用により選択できるオペレーシ
ョンより成る)のセットと考えることができる。効率を
最高にするために、最も一般的に使用される主命令は、
図5に示されている命令フォーマットの4ビットだけを
必要とし、したがって、オペランド・レジスタ65にロ
ードさせるために使用でき、かつ命令のためのオペラン
ドとして使用される。一般的に用いられる度合の低い第
2の命令に対しては、求められた命令を識別するために
図5に示されている全部で8ビットの命令フォーマット
を必要とする。したがって、図5に示されている固定フ
ォーマット命令によりデータに第2の命令を伴うことは
できず、したがって、第2の命令はオペランド・レジス
タ65以外のレジスタに保持されているデータで動作す
る。
【0148】図4に示す命令フォーマットは半分に分け
られた8ビットを含むが、他のビット長を使用できるこ
と、機能とデータに分けても2つの部分のビット長が必
ずしも等しくなるものではないことがわかるであろう。
【0149】以上説明した本発明は、マイクロコンピュ
ータの効率とスループットを劇的に向上させる組合せを
提供するものである。一定フォーマットの命令を用い、
最もよく用いられる機能は直接利用でき、かつ他の機能
は間接的に利用できるような機能セットを有し、プロセ
スの間の通信とプロセス間の同期のために構成し、マイ
クロコンピュータ間の点−点通信を行えるようにし、各
マイクロコンピュータのチップと同じチップ上にメモリ
を設けることにより、本発明の種々の面によるマイクロ
コンピュータは1秒間に1000万個の命令を処理する
速度を達成できる。わずかに約25.4×50.8cm
(10×20インチ)のボードに納められるアレイが1
00万命令/秒の速度を達成できるのである。OCCA
M(商標)を用いるとTransputer(商標)マ
イクロコンピュータ・アレイは、たとえばPASCAL
を用いるモトローラ(Motorola)68000より2桁も
高速である。OCCAMでプログラムされた1台のTr
ansputerは、PASCALを用いる1台の68
000マイクロコンピュータより約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】図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 ビット・カウンタ

Claims (3)

    (57)【特許請求の範囲】
  1. 【請求項1】複数の相互結合されたチップを有するマイ
    クロコンピュータネットワークにおけるオンチップおよ
    びオフチッププロセス間通信を選択する方法であって、 同一チップ上の二つのプロセス間で同期化された通信を
    行うように構成されかつアドレス可能である第1の形式
    の少なくとも一つのチャネル、および同期化されたオフ
    チップ通信を行う異なるチップ上の第2の形式の他のチ
    ャネルに結合されるように構成されかつアドレス可能な
    少なくとも一つのチャネルを有する単一マイクロプロセ
    ッサ上の複数の同時プロセスを実行し、さらに前記第1
    の形式のチャネルをアドレスする通信命令を含む第1の
    命令シーケンスを実行し、かつ前記第2の形式のチャネ
    ルをアドレスする同一通信命令を含む第2の命令シーケ
    ンスを実行する方法において、 前記第1および第2の命令シーケンスが、同一であっ
    て、各々同一の通信インストラクションを用い、かつオ
    ンチップまたはオフチップ通信を行うか否かによって選
    択されるチャネルアドレスのみが異なることを特徴とす
    る、 オンチップおよびオフチッププロセス間通信を選択する
    方法。
  2. 【請求項2】請求項1記載の方法において、 各プロセッサにより実行される現在のプロセスを指示
    し、 前記第1および第2の形式のチャネルを介してプロセス
    対間のメッセージ伝送を行い、 各プロセッサは、通信インストラクションに応答して現
    在プロセスの実行を停止し、次のプロセスに現在プロセ
    スを指示させ、 前記プロセッサは、複数の同時プロセス間のプロセス時
    間を共有し、かつ同時プロセス間のメッセージ伝送を行
    うようにスケジュールを決め、一対の通信プロセスを同
    期化する方法。
  3. 【請求項3】メモリー、プロセッサ、および前記プロセ
    ッサによる順次実行のための複数の命令に応じて複数の
    同時プロセスを実行するように構成された一つの集積回
    路上の複数の通信チャネルとをそなえ、集積回路装置の
    ネットワークに使用されるマイクロコンピュータであっ
    て、 前記通信チャネルが、 (1)同一集積回路上で二つの前記プロセス間の同期化
    された通信を行うように構成されアドレス可能な第1の
    形式の少なくとも一つのチャネルと、 (2)前記一つおよび前記異なる集積回路上のプロセス
    間の同期化された通信を行うために異なる集積回路装置
    上の前記第2の形式の他のチャネルに結合されるように
    構成されかつアドレス可能な第2の形式の少なくとも一
    つのチャネルとをそなえたマイクロコンピュータにおい
    て、 前記マイクロコンピュータは、 前記第1形式または第2形式のチャネルのアドレスを選
    択的に指示するための共通通信命令を含む命令の組を有
    し、前記命令によって指示されるチャネルアドレスの選
    択のみが異なるオンチップまたはオフチップ通信を行う
    前記通信命令を含む命令の共通シーケンスを行わせるよ
    うにした、 ことを特徴とするマイクロコンピュータ。
JP5225198A 1982-11-26 1993-08-18 マイクロコンピュ―タにおけるオンチップおよびオフチッププロセス間通信を選択する方法ならびにマイクロコンピュ―タ Expired - Lifetime JP2509453B2 (ja)

Applications Claiming Priority (2)

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

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP58221455A Division JP2502960B2 (ja) 1982-11-26 1983-11-26 マイクロコンピュ−タ、ならびにマイクロコンピユ−タおよびマイクロコンピユ−タ・ネットワ−クを動作させる方法

Publications (2)

Publication Number Publication Date
JPH06342378A JPH06342378A (ja) 1994-12-13
JP2509453B2 true JP2509453B2 (ja) 1996-06-19

Family

ID=10534539

Family Applications (7)

Application Number Title Priority Date Filing Date
JP58221452A Granted JPS59133647A (ja) 1982-11-26 1983-11-26 コンピユ−タおよびコンピユ−タ装置を動作させる方法
JP58221454A Expired - Lifetime JPH087739B2 (ja) 1982-11-26 1983-11-26 マイクロコンピュータおよびそのネットワークならびに複数のマイクロコンピュータにおけるプロセス間のデータ通信を行う方法
JP58221455A Expired - Lifetime JP2502960B2 (ja) 1982-11-26 1983-11-26 マイクロコンピュ−タ、ならびにマイクロコンピユ−タおよびマイクロコンピユ−タ・ネットワ−クを動作させる方法
JP58221453A Expired - Lifetime JPH06101042B2 (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 Before (5)

Application Number Title Priority Date Filing Date
JP58221452A Granted JPS59133647A (ja) 1982-11-26 1983-11-26 コンピユ−タおよびコンピユ−タ装置を動作させる方法
JP58221454A Expired - Lifetime JPH087739B2 (ja) 1982-11-26 1983-11-26 マイクロコンピュータおよびそのネットワークならびに複数のマイクロコンピュータにおけるプロセス間のデータ通信を行う方法
JP58221455A Expired - Lifetime JP2502960B2 (ja) 1982-11-26 1983-11-26 マイクロコンピュ−タ、ならびにマイクロコンピユ−タおよびマイクロコンピユ−タ・ネットワ−クを動作させる方法
JP58221453A Expired - Lifetime JPH06101042B2 (ja) 1982-11-26 1983-11-26 マイクロコンピユ−タ
JP58221451A Granted JPS59149543A (ja) 1982-11-26 1983-11-26 コンピユ−タおよびコンピユ−タ装置を動作させる方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP5342376A Expired - Lifetime JP2688320B2 (ja) 1982-11-26 1993-12-14 集積回路チップ

Country Status (4)

Country Link
US (6) US4724517A (ja)
EP (6) EP0110643B1 (ja)
JP (7) JPS59133647A (ja)
DE (6) DE3382708T2 (ja)

Families Citing this family (103)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4724517A (en) * 1982-11-26 1988-02-09 Inmos Limited Microcomputer with prefixing functions
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
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 富士通株式会社 マルチプロセッサシステム
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
US5249273A (en) * 1989-01-17 1993-09-28 Fujitsu Limited Microprocessor having a variable length instruction format
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 並列計算処理装置
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
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
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
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
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
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
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
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
GB2486740B (en) * 2010-12-24 2019-02-13 Qualcomm Technologies Int Ltd Encapsulated instruction set
GB2486737B (en) * 2010-12-24 2018-09-19 Qualcomm Technologies Int Ltd Instruction execution
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
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
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
EP0062431B1 (en) * 1981-03-20 1986-10-01 Fujitsu Limited A 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
JPS59133647A (ja) 1984-08-01
EP0250011A2 (en) 1987-12-23
EP0250011A3 (en) 1988-06-01
DE3375844D1 (en) 1988-04-07
US4704678A (en) 1987-11-03
EP0110642A2 (en) 1984-06-13
EP0250011B1 (en) 1993-08-11
DE3378083D1 (en) 1988-10-27
DE3382708D1 (de) 1993-09-16
DE3373567D1 (en) 1987-10-15
EP0113516B1 (en) 1988-06-01
EP0110643B1 (en) 1988-03-02
DE3382708T2 (de) 1994-02-10
JPH06101042B2 (ja) 1994-12-12
EP0113178A2 (en) 1984-07-11
JPH06260551A (ja) 1994-09-16
JPS59133662A (ja) 1984-08-01
JPH0470652B2 (ja) 1992-11-11
EP0113516A3 (en) 1984-11-07
EP0113178A3 (en) 1984-11-28
JPS59149543A (ja) 1984-08-27
EP0111399B1 (en) 1987-09-16
EP0111399A2 (en) 1984-06-20
JPS59194256A (ja) 1984-11-05
DE3373733D1 (en) 1987-10-22
US4680698A (en) 1987-07-14
JP2502960B2 (ja) 1996-05-29
US4819151A (en) 1989-04-04
US4724517A (en) 1988-02-09
EP0113178B1 (en) 1987-09-09
EP0110643A2 (en) 1984-06-13
EP0113516A2 (en) 1984-07-18
JPH06342378A (ja) 1994-12-13
US4967326A (en) 1990-10-30
EP0110642B1 (en) 1988-09-21
EP0111399A3 (en) 1984-11-07
EP0110642A3 (en) 1984-11-07
US5031092A (en) 1991-07-09
DE3376894D1 (en) 1988-07-07
EP0110643A3 (en) 1984-11-07
JPH087739B2 (ja) 1996-01-29
JP2688320B2 (ja) 1997-12-10
JPH0128967B2 (ja) 1989-06-07
JPS59133650A (ja) 1984-08-01

Similar Documents

Publication Publication Date Title
JP2509453B2 (ja) マイクロコンピュ―タにおけるオンチップおよびオフチッププロセス間通信を選択する方法ならびにマイクロコンピュ―タ
US5243698A (en) Microcomputer
US6414368B1 (en) Microcomputer with high density RAM on single chip
May et al. Occam and the transputer
EP0158320B1 (en) Processing apparatus with hierarchical structure
EP0377976B1 (en) Microcode control apparatus utilizing programmable logic array circuits
EP0020972B1 (en) Program controlled microprocessing apparatus
KR920005330B1 (ko) 마이크로컴퓨터 및 이와 상호 접속된 회로망
KR920005298B1 (ko) 마이크로 컴퓨터
US5768554A (en) Central processing unit
EP0266799A2 (en) Single chip microcomputer having multi-timer function
JPS5926062B2 (ja) デ−タ処理装置